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
@@ -1,2 +1,2 @@
1
- import{$ as si,A as hr,Aa as Gi,B as kr,C as Sr,Cb as Ki,D as Rr,E as Er,F as _r,Fa as Ui,Fb as Et,G as Mr,Ga as kt,H as $r,Ha as Hi,Hb as Xi,I as zt,J as Or,K as st,L as Cr,M as Br,N as jr,O as qr,P as Wr,Q as Gr,R as Ur,S as Hr,U as Qt,V as Qr,W as Zr,X as ti,Y as ri,Z as ii,_ as oi,a as Q,aa as ct,b as Gt,ba as lt,ca as di,da as ut,e as rt,ea as ci,fa as li,g as Pe,ga as mi,ha as fi,ia as gi,k as Ut,ka as Pi,la as wi,ma as Li,n as er,na as Ti,o as O,oa as F,pa as Ni,ra as v,sa as qi,ta as Oe,u as fr,ua as Ve,v as Ee,w as pr,x as gr,y as yr,z as Z}from"./chunk-JZOJ4YGS.js";import{$a as Jn,$b as sr,$d as Ir,$i as Wi,Ah as Si,Bd as vr,Bh as Ne,Ca as Gn,Cb as tr,Da as Un,Dg as ai,Dh as ae,Ea as Hn,Fa as Yn,Fc as mr,Fh as ht,Ga as Wt,Gc as Te,Ge as Lr,Gh as Me,Hb as Le,Hh as Ri,Ih as Ei,Ii as Fi,Jc as xe,Jh as _i,Ji as Bi,Kh as Mi,Ki as ji,Lh as $i,Me as Tr,Nc as ot,Pb as nr,Pc as br,Qa as ie,Qe as Nr,Ra as zn,Re as Vr,Ub as rr,Uc as xr,Ve as le,Vg as ui,Wb as ar,We as _e,Wh as Oi,Xb as or,Xh as Ci,Zd as Kt,Zi as bt,_a as Xn,_d as Ar,a as Qe,ae as Xt,af as dt,ai as Di,aj as xt,b as he,bc as it,bh as U,bi as vi,c as ce,ca as Nn,cg as Yr,ci as Ai,d as Tn,da as Vn,dg as zr,dj as Yi,ea as Ze,ec as dr,ej as St,fa as jt,fh as ft,fj as zi,gf as Fr,gg as Kr,gh as pt,gj as Rt,ha as et,hc as at,he as Pr,hh as yi,hi as Ii,ib as nt,ig as Jt,ih as hi,jh as bi,ji as Vi,ka as Fn,ke as wr,kh as en,lg as Xr,lh as xi,mg as Jr,mi as $e,ni as nn,oc as be,og as ei,pa as Bn,pb as Zn,pd as Dr,qa as tt,qh as ki,sa as Wn,tc as cr,tg as ni,ub as we,wa as qt,wc as lr,xh as gt,yc as ur,yh as tn,zh as yt}from"./chunk-EHCMJUMD.js";import{Ec as Qn,Pa as X,T as An,_c as pi,d as Dn,da as In,fa as L,g as Ft,h as vn,hc as jn,kb as J,mc as qn,qb as Pn,rb as wn,s as me,sc as Kn,td as Zt,v as Xe,wb as Je,ya as Bt,zb as Ln,zd as mt}from"./chunk-OMY6NRQD.js";import{A as fe,C as Yt,a as q,b as E,z as Y}from"./chunk-O7H2UX5K.js";import{b as Ht,g as ir}from"./chunk-3LGLPG33.js";import{decodeXML as Ji}from"entities";function Qi(e){return{kind:e.kind,feedbackEdges:ao(e),actions:Ce(e),...e.body.kind==="gantt"?oo(e):{}}}function io(e){const t=v(e);return t.ok?q(Qi(t.value)):E(t.error)}function ao(e){let t=null;if(e.body.kind==="flowchart")t=e.body.graph;else if(e.body.kind==="state")t=ut(e.body);else if(e.kind==="flowchart"&&e.body.kind==="opaque"){try{t=Kr(e.canonicalSource)}catch{t=null}}if(!t)return[];const n=Ri(t);return t.edges.flatMap((i,r)=>n[r]==="feedback"?[{edgeIndex:r,from:i.source,to:i.target,label:i.label,routeClass:"feedback"}]:[])}function oo(e){if(e.body.kind!=="gantt")return{};try{const t=ie(e.canonicalSource);const n=_e(le(t.lines),t.frontmatter);const i=$e(n);return i.analysis?{gantt:{criticalPathTaskIds:[...i.analysis.criticalPathTaskIds],slackByTaskId:{...i.analysis.slackByTaskId},projectStart:i.analysis.projectStart,projectEnd:i.analysis.projectEnd,entryTaskIds:[...i.analysis.entryTaskIds],sinkTaskIds:[...i.analysis.sinkTaskIds]}}:{}}catch{return{}}}function Ce(e){const t=e.body.kind==="opaque"||e.body.kind==="extension"||e.body.kind==="preserved"?e.body.source:e.canonicalSource;const n=[];if(e.kind==="flowchart")n.push(...co(t));if(e.kind==="class")n.push(...so(t));if(e.kind==="sequence")n.push(...lo(t));if(e.body.kind==="gantt")n.push(...mo(e));if(e.body.kind==="kanban"){const r=Xn(e.meta.frontmatter);for(const a of e.body.columns)for(const o of a.tasks){const s=o.metadata.ticket;const d=typeof s==="string"?Jn(r.ticketBaseUrl,s):void 0;if(d)n.push(H("kanban",o.id,"href",d,e.source.nodes.get(o.id)?.line,d))}}if(e.body.kind==="c4"){const r=e.body;for(const[a,o,s]of[[r.elements,e.source.nodes,"node"],[r.boundaries,e.source.groups,"group"],[r.relationships,e.source.edges,"edge"]])for(const d of a){const m=d.effectiveLink??d.link;if(m!==void 0)n.push({...H("c4",d.id,"href",m,o.get(d.id)?.line,m),regionId:`${s}:${d.id}`})}}const i=new Map;return n.map(r=>{const a=`${r.family}:${r.target}`;const o=i.get(a)??0;i.set(a,o+1);return{id:`action:${r.family}:${r.target}:${o}`,regionId:`node:${r.target}`,...r}})}function so(e){const t=[];const n=new Map;let i=false;const r=e.split(/\r?\n/);const a=r.flatMap((o,s)=>Ar(o).map(d=>({text:d,line:s+1})));for(const o of rn(Ji(e))){const s=a[o.line-1];const d=s?.line??o.line;const m=Kt(o.text);const u=Kt(s?.text.trim()??"");for(const[y,p]of m.entries()){if(i){if(p.trim()==="}")i=false;continue}const b=Ir(p);if(b?.opensBody){i=true;continue}const S=u.length===m.length&&Ji(u[y])===p?u[y]:void 0;const _=S===void 0?null:wr(S);if(_){if(_.tooltip!==void 0)n.set(_.id,_.tooltip);const D=n.get(_.id);t.push({...H("class",_.id,"href",_.href,d,_.href),...D!==void 0?{tooltip:D}:{}});continue}if(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/.test(p))continue;const P=p.match(/^(callback)\s+(`[^`]+`(?:~[^~]+~)?|[\w$]+(?:~[^~]+~)?)\s+(.+)$/i);if(P){const D=Xt(P[2]);if(D)t.push(H("class",D.id,"callback",P[3],d));continue}const G=p.match(/^(click|link)\s+(`[^`]+`(?:~[^~]+~)?|[\w$]+(?:~[^~]+~)?)\s+(.+)$/i);if(!G)continue;if((p.match(/"/g)?.length??0)%2!==0)continue;const M=Xt(G[2]);if(!M)continue;const w=G[3].trim();const k=w.match(/^(href|call|callback)\s+(.+)$/i);const C=k?.[1]?.toLowerCase();if(C==="call"||C==="callback"){t.push(H("class",M.id,C,k[2],d))}else{const D=C==="href"?k[2]:w;t.push(H("class",M.id,G[1].toLowerCase()==="link"||ta(D)?"href":"callback",D,d))}}}return t}function co(e){const t=[];const n=rn(e,true);for(const i of ur(n.map(r=>r.text))){const r={text:i.text,line:n[i.line].line};for(const a of Jt(r.text)){if(!a||a.startsWith("%%"))continue;let o=a.match(/^href\s+(\S+)\s+(.+)$/i);if(o){t.push(H("flowchart",o[1],"href",o[2],r.line));continue}o=a.match(/^click\s+(\S+)\s+(.+)$/i);if(!o)continue;const s=o[1];const d=o[2].trim();const m=d.match(/^(href|call)\s+(.+)$/i);const u=d.match(/^callback(?:\s+(.+))?$/i);if(m?.[1]?.toLowerCase()==="href")t.push(H("flowchart",s,"href",m[2],r.line));else if(m?.[1]?.toLowerCase()==="call")t.push(H("flowchart",s,"call",m[2],r.line));else if(u)t.push(H("flowchart",s,"callback",u[1]??"",r.line));else t.push(H("flowchart",s,ta(d)?"href":"callback",d,r.line))}}return t}function rn(e,t=false){const n=e.split(/\r?\n/);const i=[];for(let a=0;a<n.length;a++){const o=tt(n,a);if(o===void 0)break;if(o===null)i.push({text:n[a].trim(),line:a+1});else{if(o.suffixLine)i.push({text:o.suffixLine.trim(),line:o.endIndex+1});a=o.endIndex}}if(!t)return i;let r=false;for(const a of i){const o=!r&&Jt(a.text).some(d=>/^(?:click|href)\s+/i.test(d.trim()));if(o)continue;const s=uo(a.text,r);r=s.open;a.text=s.text.trim()}return i}function lo(e){return rn(e).flatMap(t=>{const n=rr(t.text);return n?Object.values(n.links).map(i=>H("sequence",n.actorId,"href",i,t.line)):[]})}function uo(e,t){const n=t?'"`':"";const i=`${n}${e}`;const r=cr(i);const a=i.split("");for(const o of r.regions){if(o.kind==="markdown")a.fill(" ",o.start,o.end)}return{text:a.join("").slice(n.length),open:r.openAtEnd.includes("markdown")}}function mo(e){if(e.body.kind!=="gantt")return[];try{const t=le(et(e.canonicalSource));return t.clicks.map(n=>H("gantt",n.taskId,n.action,n.rest,n.line))}catch{return[]}}function H(e,t,n,i,r,a){const o=n==="href"?a??Zi(i):void 0;const s=o!==void 0&&!ea(o);return{family:e,target:t,action:n,raw:i,line:r,href:o,executable:false,security:n==="href"?s?"unsafe":"safe":"source-only",message:n==="href"?s?"Unsafe href is source-only and must be stripped by strict renderers.":"Href is an action record; non-SVG renderers keep it as source-only metadata.":"Callbacks/calls are recorded for analysis but are never executed."}}function Zi(e){const t=e.trim();const n=t[0];if(n==='"'||n==="'"){let i="";for(let r=1;r<t.length;r++){const a=t[r];if(a===n)return i;if(a==="\\"&&r+1<t.length){const o=t[r+1];if(o===n||o==="\\"){i+=o;r++;continue}}i+=a}return i}return t.split(/\s+/)[0]??""}function ea(e){return Kn(e)}function ta(e){const t=e.trim();const n=Zi(e);const i=t[0]==='"'||t[0]==="'";return i||ea(n)&&/^(?:https?:|mailto:|#|\/|\.\/|\.\.)/i.test(n)}var an={version:1,routeIntent:"shared-route-classes",svgSource:"route-contract classifyRoutes() + certificates",asciiSource:"family terminal geometry with owned cells, route classes, markers and intentional bundles",degradationWarnings:["ASCII_RENDER_FAILED","ASCII_EDGE_REGION_UNMAPPED","TERMINAL_OWNERSHIP_UNAVAILABLE"]};function fo(e,t={}){const n=Oe(e);try{const{rendered:i,model:r}=Hi(n,t);const a=gi(i);const o=i.terminalStyle.diagnostics.map(u=>({code:u.code,severity:"degraded",message:u.message,...u.cell?{cell:u.cell}:{}}));if(!a)o.push({code:"TERMINAL_OWNERSHIP_UNAVAILABLE",severity:"degraded",message:"This family returns terminal text without owned geometry; element regions cannot be established from its string output."});const s=r.parsed();const d=a?.regions()??[];if(s.ok)for(const u of d){const y=u.kind==="node"?s.value.source.nodes.get(u.id):s.value.source.groups.get(u.id);if(u.sourceLine===void 0&&y)u.sourceLine=y.line}const m=s.ok?Ce(s.value).map(po):[];return{ascii:i.text,regions:d,actions:m,warnings:o,routeParity:an}}catch(i){if(i instanceof gt)throw i;return{ascii:"",regions:[],actions:[],warnings:[{code:"ASCII_RENDER_FAILED",severity:"degraded",message:"ASCII/Unicode renderer failed; no route parity evidence is available."}],routeParity:an}}}function po(e){const t=n=>n===void 0?void 0:In(n);return{...e,raw:t(e.raw),href:t(e.href),tooltip:t(e.tooltip),message:t(e.message)}}var go=new Set(["\u250C","\u256D"]);var yo=new Set(["\u2510","\u256E"]);var ho=new Set(["\u25BA","\u25B6",">"]);var bo=new Set(["\u25C4","\u25C0","<"]);var xo=new Set(["\u25BC","v"]);var ko=new Set(["\u25B2","^"]);function So(e){const t=[];let n=0;for(let i=0;i<e.length;i++){const r=e[i];for(let a=0;a<r.length;a++){const o=r[a];const s=go.has(o)||o==="+"&&Ro(e,a,i);if(!s)continue;const d=Eo(e,a,i);if(d){d.id=`N${n++}`;t.push(d)}}}return t}function Ro(e,t,n){const i=e[n]?.[t+1];const r=e[n+1]?.[t];return i==="-"&&r==="|"}function Eo(e,t,n){const i=e[n];let r=-1;for(let s=t+1;s<i.length;s++){const d=i[s];if(yo.has(d)||d==="+"){r=s;break}if(d!=="\u2500"&&d!=="-")break}if(r<0)return null;let a=-1;for(let s=n+1;s<e.length;s++){const d=e[s]?.[t];if(d==="\u2514"||d==="\u2570"||d==="+"){a=s;break}if(d!=="\u2502"&&d!=="|")break}if(a<0)return null;const o=[];for(let s=n+1;s<a;s++){const d=(e[s]??"").slice(t+1,r).replace(/[│|]/g," ").trim();if(d)o.push(d)}return{id:"",label:o.join(" ").trim(),top:n,left:t,bottom:a,right:r}}function B(e,t,n,i=1){for(const r of e){if(t>=r.left-i&&t<=r.right+i&&n>=r.top-i&&n<=r.bottom+i)return r}return null}function _o(e,t){const n=[];const i=new Set;for(let r=0;r<e.length;r++){const a=e[r];for(let o=0;o<a.length;o++){const s=a[o];let d=null;let m=null;if(ho.has(s)){d=B(t,o+1,r);m=Mo(e,t,o,r)}else if(bo.has(s)){d=B(t,o-1,r);m=$o(e,t,o,r)}else if(xo.has(s)){d=B(t,o,r+1);m=Oo(e,t,o,r)}else if(ko.has(s)){d=B(t,o,r-1);m=Co(e,t,o,r)}if(m&&d&&m.id!==d.id){const u=`${m.id}->${d.id}`;if(!i.has(u)){i.add(u);n.push([m.id,d.id])}}}}return n}var Mt=new Set(["\u2500","-","\u252C","\u2534","\u253C","\u251C","\u2524","+"]);var _t=new Set(["\u2502","|","\u252C","\u2534","\u253C","\u251C","\u2524","+"]);function Mo(e,t,n,i){for(let r=n-1;r>=0;r--){const a=B(t,r,i);if(a)return a;if(!Mt.has(e[i]?.[r]??"")){const o=B(t,r,i-1),s=B(t,r,i+1);return o??s??null}}return null}function $o(e,t,n,i){for(let r=n+1;r<(e[i]?.length??0);r++){const a=B(t,r,i);if(a)return a;if(!Mt.has(e[i]?.[r]??""))break}return null}function Oo(e,t,n,i){let r=n;for(let a=i-1;a>=0;a--){const o=B(t,r,a);if(o)return o;const s=e[a]?.[r]??"";const d="\u252C\u2534\u253C\u251C\u2524\u2510\u250C\u256E\u256D".includes(s);if(d&&!_t.has(e[a-1]?.[r]??"")){const y=na(e,r,a);if(y===null){const p=B(t,r-1,a),b=B(t,r+1,a);return p??b??null}r=y;continue}if(_t.has(s))continue;if(Mt.has(s)){const y=na(e,r,a);if(y!==null){r=y;continue}const p=B(t,r-1,a),b=B(t,r+1,a);return p??b??null}const m=B(t,r-1,a),u=B(t,r+1,a);return m??u??null}return null}function na(e,t,n){const i=r=>e[n-1]?.[r]??"";for(let r=0;r<200;r++){for(const a of[t-r,t+r]){const o=e[n]?.[a]??"";if(!Mt.has(o)&&!"\u2510\u250C\u256E\u256D".includes(o))continue;if(_t.has(i(a)))return a}}return null}function Co(e,t,n,i){for(let r=i+1;r<e.length;r++){const a=B(t,n,r);if(a)return a;if(!_t.has(e[r]?.[n]??""))break}return null}function Do(e){return/["[\]{}()]/.test(e)?`["${e.replace(/"/g,"&quot;")}"]`:`[${e}]`}function vo(e,t={}){if(!e.trim())return E([{code:"EMPTY",message:"empty ASCII input"}]);const n=e.replace(/\[[0-9;]*m/g,"").split(/\r?\n/);const i=So(n);if(i.length===0)return E([{code:"NO_BOXES",message:"no boxes detected in ASCII; not a recognized flowchart render"}]);const r=_o(n,i);const a=t.direction??"LR";const o=[`flowchart ${a}`];for(const s of i)o.push(` ${s.id}${Do(s.label||s.id)}`);for(const[s,d]of r)o.push(` ${s} --> ${d}`);return q(o.join("\n"))}var Fe;function Ao(){if(Fe!==void 0)return Fe;Fe=null;try{const e=globalThis.process;const t=e?.getBuiltinModule?.("node:fs");if(typeof t?.appendFileSync==="function")Fe=t.appendFileSync}catch{}return Fe}function oe(e,t){const n=globalThis.process?.env?.AM_TRACE_LOG;if(!n)return;const i=t===void 0?{verb:e}:{verb:e,ok:t};try{Ao()?.(n,JSON.stringify(i)+"\n")}catch{}}var ue=(e=true)=>({type:"string",required:e});var on=()=>({type:"number",required:false});var sn=()=>({type:"object-or-null",required:true});var ra={upsert_participant:{fields:{participant:sn(),index:on()}},remove_participant:{fields:{id:ue()}},rename_participant:{fields:{id:ue(),newId:ue()}},insert_statement:{fields:{statement:sn(),parentId:ue(false),branchIndex:on(),index:on()}},remove_statement:{fields:{id:ue()}},set_statement:{fields:{id:ue(),statement:sn()}},set_title:{fields:{title:ue(false)}},set_accessibility_title:{fields:{title:ue(false)}},set_accessibility_description:{fields:{description:ue(false)}}};var ke=(e=true)=>({type:"string",required:e});var ia=(e=true)=>({type:"number",required:e});var dn=()=>({type:"object-or-null",required:true});var aa={insert_frame:{fields:{frame:dn(),index:ia(false)}},remove_frame:{fields:{id:ke()}},move_frame:{fields:{id:ke(),index:ia()}},set_frame:{fields:{id:ke(),frame:dn()}},set_entities:{fields:{entities:{type:"string-array",required:true}}},set_notes:{fields:{notes:{type:"object-array",required:true}}},set_specifications:{fields:{specifications:{type:"object-array",required:true}}},set_data:{fields:{id:ke(),data:dn()}},set_title:{fields:{title:ke(false)}},set_accessibility_title:{fields:{title:ke(false)}},set_accessibility_description:{fields:{description:ke(false)}}};var I=(e=true)=>({type:"string",required:e});var $t=(e=true)=>({type:"number",required:e});var cn={add_column:{fields:{id:I(),label:I(),index:$t(false)}},remove_column:{fields:{id:I(),removeTasks:{type:"boolean",required:false}}},set_column_label:{fields:{id:I(),label:I()}},move_column:{fields:{id:I(),index:$t()}},add_task:{fields:{column:I(),id:I(),label:I(),metadata:{type:"object-or-null",required:false},index:$t(false)}},remove_task:{fields:{id:I()}},set_task_label:{fields:{id:I(),label:I()}},set_task_metadata:{fields:{id:I(),metadata:{type:"object-or-null",required:true}}},move_task:{fields:{id:I(),column:I(),index:$t(false)}},set_icon:{fields:{id:I(),icon:I(false)}},set_class:{fields:{id:I(),className:I(false)}},set_accessibility_title:{fields:{title:I(false)}},set_accessibility_description:{fields:{description:I(false)}}};var cl=Object.keys(cn);var Be=(e=true)=>({type:"string",required:e});var pe=(e=true)=>({type:"number",required:e});var ln={set_title:{fields:{title:Be(false)}},set_accessibility_title:{fields:{title:Be(false)}},set_accessibility_description:{fields:{description:Be(false)}},add_field:{fields:{label:Be(),bits:pe(),index:pe(false)}},remove_field:{fields:{index:pe()}},set_field_label:{fields:{index:pe(),label:Be()}},set_field_bits:{fields:{index:pe(),bits:pe()}},move_field:{fields:{from:pe(),to:pe()}}};var ul=Object.keys(ln);var oa=["rectangle","service","rounded","diamond","stadium","circle","ellipse","subroutine","doublecircle","hexagon","cylinder","asymmetric","trapezoid","trapezoid-alt","lean-r","lean-l","state-start","state-end"];var Io=["solid","dotted","thick","invisible"];var sa=["sync","reply","async","async-dashed","lost","lost-dashed"];var Po=["participant","actor"];var wo=["alt","opt","loop","par","par_over"];var un=["inheritance","composition","aggregation","association","dependency","realization","link-solid","link-dashed","lollipop"];var da=["one-only","zero-or-one","zero-or-many","one-or-many","parent"];var Ot=["L","R","T","B"];var Ct=["item","group"];var Lo=["bar","line"];var To=["x","y"];var No=["active","done","crit"];var ca=["default","rect","rounded","circle","cloud","bang","hexagon"];var mn=["NORMAL","REVERSE","HIGHLIGHT"];var Vo=["circle","polygon"];var l=(e=true)=>({type:"string",required:e});var g=(e=true)=>({type:"number",required:e});var V=(e=true)=>({type:"boolean",required:e});var fn=(e=true)=>({type:"number-or-null",required:e});var pn=(e=true)=>({type:"boolean-or-null",required:e});var x=(e=true)=>({type:"string-or-null",required:e});var z=(e=true)=>({type:"string-array",required:e});var Dt=(e=true)=>({type:"number-array",required:e});var ge=(e=true)=>({type:"object-or-null",required:e});var la=(e=true)=>({type:"object-array",required:e});var R=(e,t=true,n=false)=>({type:"enum",values:e,nullable:n,required:t});var h=(e,t)=>({...e,note:t});var ua=[...oa,...zr().filter(e=>!oa.includes(e))];var Fo=["TD","TB","LR","BT","RL"];var Bo={add_node:{fields:{id:l(),label:l(),shape:h(R(ua,false),"default: rectangle; also accepts Mermaid v11 @{ shape } names/aliases (e.g. manual-input)"),parent:l(false)}},remove_node:{fields:{id:l()}},rename_node:{fields:{from:l(),to:l()}},set_label:{fields:{target:h(l(),'a node id, an authored edge ID (e1), or "from->to"/"from->to#k"; an id a node and an edge share names the node'),label:l()}},add_edge:{fields:{from:l(),to:l(),label:l(false),style:h(R(Io,false),"default: solid")}},remove_edge:{fields:{id:h(l(),'an authored edge ID (e1), or "from->to"/"from->to#k" for the k-th parallel edge')}},set_shape:{fields:{id:l(),shape:h(R(ua),"a geometry name or a Mermaid v11 @{ shape } name/alias; v11 names render with the documented geometry mapping and serialize with the authored spelling")}},set_direction:{fields:{direction:R(Fo),subgraph:h(l(false),"omit to set the diagram direction; a subgraph id sets that subgraph's direction override")}},add_subgraph:{fields:{id:l(),label:l(false),parent:h(l(false),"nest inside this subgraph"),members:h(z(false),"existing node ids MOVED into the new subgraph")}},remove_subgraph:{fields:{id:l(),removeMembers:h(V(false),"default false: dissolve \u2014 members move to the parent scope; true also removes member nodes and their edges")}},move_node:{fields:{id:l(),subgraph:h(x(),"target subgraph id; null moves the node to the top level")}},define_class:{fields:{name:l(),style:h(l(),'CSS-like pairs, e.g. "fill:#f96,stroke:#333,stroke-width:2px"')}},set_node_class:{fields:{id:l(),className:h(x(),"assigns a classDef name (define_class or source classDef); null removes the assignment")}},set_node_style:{fields:{id:l(),style:h(x(),'inline style pairs, e.g. "fill:#bbf"; null clears')}}};var ma=["TD","TB","LR","BT","RL"];var jo=["left","right"];var qo={add_state:{fields:{id:l(),label:x(false),parent:x(false),region:g(false)}},remove_state:{fields:{id:l(),recursive:h(V(false),"default false: refuse a non-empty composite; true removes the whole subtree (transitions + notes cascade)")}},rename_state:{fields:{from:l(),to:l()}},set_state_label:{fields:{id:l(),label:x()}},add_transition:{fields:{from:h(l(),'a state id, "[*]", or a history ref like "X[H]"'),to:h(l(),'a state id, "[*]", or a history ref like "X[H]"'),label:x(false),parent:x(false),region:g(false)}},remove_transition:{fields:{index:g(false),from:l(false),to:l(false),parent:x(false),region:g(false)},requireOneOf:["index","from","to"]},set_transition_label:{fields:{index:g(false),from:l(false),to:l(false),label:x(),parent:x(false),region:g(false)},requireOneOf:["index","from","to"]},make_composite:{fields:{id:l(),members:z(),label:x(false)}},set_direction:{fields:{direction:R(ma),state:h(x(false),"omit to set the diagram direction; a composite id sets that composite's direction override")}},move_state:{fields:{id:l(),parent:h(x(),"target composite id; null moves the state to the top level"),region:g(false)}},dissolve_composite:{fields:{id:h(l(),"children and inner transitions hoist into the parent scope; rejects while transitions/notes still reference the composite")}},add_note:{fields:{target:l(),side:h(R(jo,false),"default: right"),text:h(l(),"multi-line text serializes as a block note")}},remove_note:{fields:{index:g()}},set_note_text:{fields:{index:g(),text:l()}},add_floating_note:{fields:{id:l(),text:l(),parent:x(false),region:g(false)}},remove_floating_note:{fields:{id:l()}},set_floating_note_text:{fields:{id:l(),text:l()}},define_class:{fields:{name:l(),style:h(l(),'CSS-like pairs, e.g. "fill:#f96,stroke:#333"')}},set_state_class:{fields:{id:l(),className:x()}},set_state_style:{fields:{id:l(),style:h(x(),"inline style pairs; null clears")}},set_transition_style:{fields:{index:g(false),default:V(false),style:x(),parent:x(false),region:g(false)},requireOneOf:["index","default"]}};var Wo={add_participant:{fields:{id:l(),label:l(false),participantKind:R(Po,false)}},remove_participant:{fields:{id:l()}},add_message:{fields:{from:l(),to:l(),text:l(),wrap:V(false),style:h(R(sa,false),"default: sync"),index:h(g(false),"top-level insert position; default: append")}},remove_message:{fields:{index:g()}},set_message_text:{fields:{index:g(),text:l()}},set_message_wrap:{fields:{index:g(),wrap:h(pn(),"null inherits the diagram configuration")}},move_message:{fields:{from:h(g(),"top-level message index"),to:h(g(),"top-level target position")}},set_participant_label:{fields:{id:l(),label:l()}},add_fragment:{fields:{fragmentKind:R(wo),label:l(false),index:h(g(false),"fragment insert position; default: append")}},remove_fragment:{fields:{index:g()}},set_fragment_label:{fields:{index:g(),label:x()}},add_fragment_branch:{fields:{fragmentIndex:g(),label:l(false)}},set_fragment_branch_label:{fields:{fragmentIndex:g(),branchIndex:g(),label:x()}},add_fragment_message:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),from:l(),to:l(),text:l(),wrap:V(false),style:h(R(sa,false),"default: sync"),index:h(g(false),"message insert position; default: append")}},remove_fragment_message:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),index:g()}},set_fragment_message_text:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),index:g(),text:l()}},set_fragment_message_wrap:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),index:g(),wrap:h(pn(),"null inherits the diagram configuration")}}};var Go={set_title:{fields:{title:x()}},add_section:{fields:{label:l(),index:h(g(false),"insert position; omit to append")}},remove_section:{fields:{index:g()}},set_section_label:{fields:{index:g(),label:l()}},add_period:{fields:{sectionIndex:g(),label:l(),events:z(false),index:h(g(false),"insert position; omit to append")}},remove_period:{fields:{sectionIndex:g(),periodIndex:g()}},set_period_label:{fields:{sectionIndex:g(),periodIndex:g(),label:l()}},add_event:{fields:{sectionIndex:g(),periodIndex:g(),text:l(),index:h(g(false),"insert position; omit to append")}},remove_event:{fields:{sectionIndex:g(),periodIndex:g(),eventIndex:g()}},set_event_text:{fields:{sectionIndex:g(),periodIndex:g(),eventIndex:g(),text:l()}},move_period:{fields:{fromSection:g(),fromIndex:g(),toSection:g(),toIndex:h(g(),"insert position in the target section, applied after removal")}},move_event:{fields:{fromSection:g(),fromPeriod:g(),fromIndex:g(),toSection:g(),toPeriod:g(),toIndex:h(g(),"insert position in the target period, applied after removal")}},move_section:{fields:{from:g(),to:g()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var Uo={set_title:{fields:{title:x()}},add_class:{fields:{id:l(),label:l(false),generic:h(l(false),"Mermaid generic parameter text without surrounding ~ delimiters"),members:z(false),namespace:h(l(false),'dot path, e.g. "Platform.Auth"; declared on demand')}},remove_class:{fields:{id:l()}},rename_class:{fields:{from:l(),to:l()}},set_class_generic:{fields:{class:l(),generic:h(x(),"parameter text without ~ delimiters; null removes it")}},add_member:{fields:{class:l(),text:l()}},remove_member:{fields:{class:l(),index:g()}},add_interface:{fields:{class:h(l(),"existing ordinary class; the interface is a new distinct occurrence"),label:h(l(),"non-empty portable interface endpoint name; repeated labels remain independent"),side:h(R(["from","to"],false),"default: to \u2014 Class --() Interface; from writes Interface ()-- Class"),relationLabel:h(l(false),"optional connector label, separate from the interface name"),lineStyle:h(R(["solid","dashed"],false),"default: solid")}},add_relation:{fields:{from:l(),to:l(),relKind:h(R(un),"class endpoint relationship; use add_interface for a lone lollipop, which creates a distinct interface occurrence"),label:l(false),markerAt:h(R(["from","to","both","none"],false),"marker endpoints; omit for the relation kind default"),fromKind:R(un,false),toKind:R(un,false),lineStyle:h(R(["solid","dashed"],false),"independent shaft style; must agree with style-specific endpoint kinds")}},remove_relation:{fields:{index:g()}},add_note:{fields:{text:l(),for:l(false)}},remove_note:{fields:{index:g()}},set_class_namespace:{fields:{class:l(),namespace:h(x(),"dot path moves the class into that namespace (declared on demand); null moves it to the top level")}},define_class:{fields:{name:l(),style:h(l(),'CSS-like pairs, e.g. "fill:#f96,stroke:#333"')}},set_css_class:{fields:{class:l(),className:x()}},set_class_style:{fields:{class:l(),style:x()}}};var Ho={add_entity:{fields:{id:l(),label:l(false),attributes:z(false)}},remove_entity:{fields:{id:l()}},rename_entity:{fields:{from:l(),to:l()}},set_entity_label:{fields:{entity:l(),label:x()}},add_attribute:{fields:{entity:l(),text:l()}},remove_attribute:{fields:{entity:l(),index:g()}},add_relation:{fields:{from:l(),to:l(),leftCard:R(da),rightCard:R(da.filter(e=>e!=="parent")),dashed:V(false),label:l(false)}},remove_relation:{fields:{index:g()}},set_direction:{fields:{direction:R(ma)}},define_class:{fields:{name:l(),style:l()}},set_entity_class:{fields:{entity:l(),className:x()}},set_entity_style:{fields:{entity:l(),style:x()}}};var Yo={set_title:{fields:{title:x()}},add_section:{fields:{label:l(),index:h(g(false),"insert position; omit to append")}},remove_section:{fields:{index:g()}},set_section_label:{fields:{index:g(),label:l()}},add_task:{fields:{sectionIndex:g(),text:l(),score:h(g(),"finite number 1..5"),actors:z(false),index:h(g(false),"insert position; omit to append")}},remove_task:{fields:{sectionIndex:g(),taskIndex:g()}},set_task_text:{fields:{sectionIndex:g(),taskIndex:g(),text:l()}},set_task_score:{fields:{sectionIndex:g(),taskIndex:g(),score:h(g(),"finite number 1..5")}},set_task_actors:{fields:{sectionIndex:g(),taskIndex:g(),actors:z()}},rename_actor:{fields:{from:l(),to:l()}},move_task:{fields:{fromSection:g(),fromIndex:g(),toSection:g(),toIndex:h(g(),"insert position in the target section, applied after removal")}},move_section:{fields:{from:g(),to:g()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var zo={set_title:{fields:{title:x()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}},add_service:{fields:{id:l(),label:l(false),icon:x(false),iconText:x(false),group:x(false)}},remove_service:{fields:{id:l()}},rename_service:{fields:{from:l(),to:l()}},set_service_label:{fields:{id:l(),label:l()}},set_service_icon:{fields:{id:l(),icon:x()}},set_service_icon_text:{fields:{id:l(),text:x()}},move_service:{fields:{id:l(),group:x()}},add_junction:{fields:{id:l(),group:x(false)}},remove_junction:{fields:{id:l()}},rename_junction:{fields:{from:l(),to:l()}},move_junction:{fields:{id:l(),group:x()}},add_group:{fields:{id:l(),label:l(false),icon:x(false),parent:x(false)}},set_group_label:{fields:{id:l(),label:l()}},remove_group:{fields:{id:l()}},add_edge:{fields:{from:l(),to:l(),fromSide:R(Ot),toSide:R(Ot),fromBoundary:R(Ct,false),toBoundary:R(Ct,false),label:x(false),hasArrowStart:V(false),hasArrowEnd:V(false)}},update_edge:{fields:{index:g(),from:l(false),to:l(false),fromSide:R(Ot,false),toSide:R(Ot,false),fromBoundary:R(Ct,false),toBoundary:R(Ct,false),label:x(false),hasArrowStart:V(false),hasArrowEnd:V(false)}},remove_edge:{fields:{index:g(false),id:l(false)},requireOneOf:["index","id"]}};var Ko={set_title:{fields:{title:x()}},set_x_axis:{fields:{axis:ge()}},set_y_axis:{fields:{axis:ge()}},add_series:{fields:{kind2:h(R(Lo),"series type \u2014 the field is named kind2, not kind"),name:x(false),values:Dt()}},remove_series:{fields:{index:g()}},set_series_values:{fields:{index:g(),values:Dt()}},set_series_name:{fields:{index:g(),name:x()}},reorder_series:{fields:{from:g(),to:g()}},set_orientation:{fields:{horizontal:h(V(),"true = horizontal, false = vertical (the default)")}},set_data_point:{fields:{seriesIndex:g(),index:h(g(),"0-based position within the series values"),value:h(g(),"finite")}}};var Xo={set_title:{fields:{title:x()}},set_show_data:{fields:{showData:V()}},add_slice:{fields:{label:l(),value:h(g(),"> 0, finite")}},remove_slice:{fields:{label:l()}},rename_slice:{fields:{from:l(),to:l()}},set_slice_value:{fields:{label:l(),value:h(g(),"> 0, finite")}},reorder_slice:{fields:{from:g(),to:g()}}};var Jo={set_title:{fields:{title:x()}},set_axis_labels:{fields:{axis:R(To),near:x(),far:x(false)}},set_quadrant_label:{fields:{quadrant:g(),label:x()}},add_point:{fields:{label:l(),x:h(g(),"0..1"),y:h(g(),"0..1")}},remove_point:{fields:{label:l()}},move_point:{fields:{label:l(),x:h(g(),"0..1"),y:h(g(),"0..1")}},rename_point:{fields:{from:l(),to:l()}}};var Qo={set_title:{fields:{title:x()}},add_section:{fields:{label:l()}},rename_section:{fields:{index:g(),label:l()}},remove_section:{fields:{index:g()}},add_task:{fields:{sectionIndex:g(),label:l(),taskId:l(false),tags:z(false),start:h(l(false),'date, or "after <taskId>"'),end:h(l(),'date, a duration like "3d", or "until <taskId>"'),index:h(g(false),"insert position; omit to append \u2014 inserting into an implicit-start chain re-chains the follower onto the new task")}},remove_task:{fields:{sectionIndex:g(),taskIndex:g()}},rename_task:{fields:{sectionIndex:g(),taskIndex:g(),label:l()}},set_task_status:{fields:{sectionIndex:g(),taskIndex:g(),status:R(No,true,true)}},set_task_dates:{fields:{sectionIndex:g(),taskIndex:g(),start:x(false),end:l(false)}},set_task_flags:{fields:{sectionIndex:g(),taskIndex:g(),milestone:V(false),vert:V(false)}},set_task_id:{fields:{sectionIndex:g(),taskIndex:g(),taskId:h(x(),"renames rewrite after/until references; null clears (rejected while referenced)")}},move_task:{fields:{fromSection:g(),fromIndex:g(),toSection:g(),toIndex:h(g(),"insert position in the target section, applied after removal \u2014 rejected if the move would change an implicit-start task's predecessor")}},move_section:{fields:{from:g(),to:g()}}};var Zo={add_node:{fields:{id:l(),label:l(),parent:l(),shape:R(ca,false),index:g(false)}},remove_node:{fields:{id:l(),recursive:V(false)}},rename_node:{fields:{from:l(),to:l()}},set_label:{fields:{id:l(),label:l()}},move_node:{fields:{id:l(),parent:l(),index:g(false)}},set_shape:{fields:{id:l(),shape:R(ca)}},set_icon:{fields:{id:l(),icon:x()}},set_node_class:{fields:{id:l(),className:x()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var es={append_commit:{fields:{id:l(false),message:l(false),type:R(mn,false),tags:z(false)}},create_branch:{fields:{name:l(),order:g(false)}},checkout_branch:{fields:{name:l()}},merge_branch:{fields:{name:l(),id:l(false),type:R(mn,false),tags:z(false)}},cherry_pick:{fields:{id:l(),parent:l(false),tags:z(false)}},set_commit_message:{fields:{id:l(),message:x()}},set_commit_type:{fields:{id:l(),type:R(mn)}},set_commit_tags:{fields:{id:l(),tags:z()}},rename_branch:{fields:{from:l(),to:l()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var ts={set_title:{fields:{title:x()}},add_axis:{fields:{id:l(),label:x(false),index:h(g(false),"insert position; omit to append"),fill:h(g(false),"value written to every existing curve for the new axis; default: min")}},remove_axis:{fields:{id:l()}},rename_axis:{fields:{from:l(),to:l()}},set_axis_label:{fields:{id:l(),label:x()}},reorder_axis:{fields:{from:g(),to:h(g(),"permutes every curve's value vector identically")}},add_curve:{fields:{id:l(),label:x(false),values:h(Dt(),"one value per axis, in axis order"),index:g(false)}},remove_curve:{fields:{id:l()}},set_curve_values:{fields:{id:l(),values:h(Dt(),"length must equal the axis count")}},set_curve_value:{fields:{curve:l(),axis:l(),value:h(g(),"non-negative, finite")}},set_curve_label:{fields:{id:l(),label:x()}},rename_curve:{fields:{from:l(),to:l()}},reorder_curve:{fields:{from:g(),to:g()}},set_config:{fields:{max:h(fn(false),"> min; null resets auto-max"),min:h(fn(false),"null resets 0"),ticks:h(fn(false),`integer 1..${ai}; null resets 5`),graticule:R(Vo,false,true),showLegend:h(pn(false),"null resets true")}}};var ns={add_link:{fields:{source:l(),target:l(),value:h(g(),"non-negative, finite"),index:h(g(false),"insert position; omit to append")}},remove_link:{fields:{source:l(),target:l(),occurrence:h(g(false),"disambiguates parallel duplicate rows; default 0")}},set_link_value:{fields:{source:l(),target:l(),value:h(g(),"non-negative, finite"),occurrence:g(false)}},rename_node:{fields:{from:l(),to:h(l(),"rejects an existing label \u2014 renaming must not merge nodes")}}};var rs={add_element:{fields:{element:h(ge(),"required record: id, label; optional macro, kind (person/system/container/component), shape (person/rectangle/database/queue), external, technology, description, parentId, tags, link, sprite; null is refused")}},update_element:{fields:{id:l(),changes:h(ge(),"element fields to change; use rename_element/reparent_element for identity or containment")}},rename_element:{fields:{from:l(),to:l()}},reparent_element:{fields:{id:l(),parentId:x()}},remove_element:{fields:{id:l(),cascade:h(V(false),"default false: refuse referenced elements; true also removes referencing relationships")}},add_boundary:{fields:{boundary:h(ge(),"required record: id, label; optional macro, kind (boundary/enterprise/system/container/deployment), type, description, parentId, tags, link, sprite; null is refused")}},update_boundary:{fields:{id:l(),changes:ge()}},rename_boundary:{fields:{from:l(),to:l()}},reparent_boundary:{fields:{id:l(),parentId:x()}},remove_boundary:{fields:{id:l(),cascade:h(V(false),"default false: refuse nonempty/referenced boundaries; true removes subtree and referencing relationships")}},add_relationship:{fields:{relationship:h(ge(),"required record: from, to, label; optional macro (Rel/BiRel/Rel_Back/Rel_U/Rel_D/Rel_L/Rel_R/RelIndex), technology, description, index, tags, link, sprite; parallel relationships remain distinct")}},update_relationship:{fields:{id:l(),changes:h(ge(),"relationship fields to change, addressed by the unique interaction id, not an endpoint pair")}},remove_relationship:{fields:{id:l()}},set_title:{fields:{title:x()}},set_variant:{fields:{variant:R(["C4Context","C4Container","C4Component","C4Dynamic","C4Deployment"])}},add_directive:{fields:{name:h(l(),"portable Mermaid UpdateElementStyle, UpdateRelStyle or UpdateLayoutConfig"),args:h(la(),"ordered records {value:string,name?:string}; named arguments omit the $ prefix")}},update_directive:{fields:{id:l(),args:la()}},remove_directive:{fields:{id:l()}}};var ye={zenuml:ra,eventmodeling:aa,flowchart:Bo,state:qo,sequence:Wo,timeline:Go,class:Uo,er:Ho,journey:Yo,architecture:zo,xychart:Ko,pie:Xo,quadrant:Jo,gantt:Qo,mindmap:Zo,gitgraph:es,radar:ts,sankey:ns,c4:rs,packet:ln,kanban:cn,requirement:_r,treemap:$r,ishikawa:Rr,block:kr};function ee(e){return Object.hasOwn(ye,e)}function is(e,t){const n=e.length,i=t.length;const r=Array.from({length:n+1},(a,o)=>[o,...Array(i).fill(0)]);for(let a=0;a<=i;a++)r[0][a]=a;for(let a=1;a<=n;a++)for(let o=1;o<=i;o++)r[a][o]=Math.min(r[a-1][o]+1,r[a][o-1]+1,r[a-1][o-1]+(e[a-1]===t[o-1]?0:1));return r[n][i]}function fa(e,t){let n;let i=Infinity;for(const r of t){const a=is(e.toLowerCase(),r.toLowerCase());if(a<i){i=a;n=r}}return n!==void 0&&i<=Math.max(2,Math.ceil(n.length*.4))?n:void 0}function gn(e){switch(e.type){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"number-or-null":return"number | null";case"boolean-or-null":return"boolean | null";case"string-or-null":return"string | null";case"string-array":return"string[]";case"number-array":return"number[]";case"object-array":return"object[]";case"object-or-null":return"object | null";case"enum":return`one of ${e.values.map(t=>JSON.stringify(t)).join(", ")}${e.nullable?" | null":""}`}}function as(e,t){switch(e.type){case"string":return typeof t==="string";case"number":return typeof t==="number"&&Number.isFinite(t);case"boolean":return typeof t==="boolean";case"number-or-null":return t===null||typeof t==="number"&&Number.isFinite(t);case"boolean-or-null":return t===null||typeof t==="boolean";case"string-or-null":return t===null||typeof t==="string";case"string-array":return Array.isArray(t)&&t.every(n=>typeof n==="string");case"number-array":return Array.isArray(t)&&t.every(n=>typeof n==="number"&&Number.isFinite(n));case"object-array":return Array.isArray(t)&&t.every(n=>n!==null&&typeof n==="object"&&!Array.isArray(n));case"object-or-null":return t===null||typeof t==="object"&&!Array.isArray(t);case"enum":return e.nullable===true&&t===null||typeof t==="string"&&e.values.includes(t)}}function vt(e){const t=new Set;const n=i=>{if(i===null||i===void 0||typeof i==="string"||typeof i==="boolean"||typeof i==="number")return i;if(typeof i!=="object")throw new TypeError("operation values must be plain JSON data");if(t.has(i))throw new TypeError("operation data must not contain cycles");t.add(i);try{if(Array.isArray(i)){const s=Object.getPrototypeOf(i);if(s!==Array.prototype)throw new TypeError("operation arrays must use the standard array prototype");const d=Object.getOwnPropertyDescriptors(i);const m=d.length?.value;if(!Number.isSafeInteger(m)||m<0)throw new TypeError("operation arrays must have a readable length");const u=Reflect.ownKeys(i);if(u.some(p=>typeof p==="symbol"||p!=="length"&&!/^(0|[1-9]\d*)$/.test(p))){throw new TypeError("operation arrays must not carry symbols or named properties")}const y=[];for(let p=0;p<m;p++){const b=d[String(p)];if(!b||!("value"in b)||b.enumerable!==true){throw new TypeError("operation arrays must be dense own-data arrays")}y.push(n(b.value))}return y}const r=Object.getPrototypeOf(i);if(r!==Object.prototype&&r!==null){throw new TypeError("operation records must be plain objects")}const a=Object.getOwnPropertyDescriptors(i);const o=Object.create(null);for(const s of Reflect.ownKeys(i)){if(typeof s==="symbol")throw new TypeError("operation records must not carry symbol keys");const d=a[s];if(!d||!("value"in d)||d.enumerable!==true){throw new TypeError("operation records must contain enumerable own data fields")}o[s]=n(d.value)}return o}finally{t.delete(i)}};try{return{ok:true,value:n(e)}}catch{return{ok:false,message:"operation must be a plain own-data JSON object"}}}function pa(e,t){return{code:"INVALID_OP",reason:"unreadable_op",family:e,message:t,validFields:Object.keys(ye[e])}}function os(e,t){const n=ye[e];if(Array.isArray(t)){return{code:"INVALID_OP",reason:"expected_single_op",family:e,message:at(e,t),validFields:Object.keys(n)}}if(!t||typeof t!=="object"){return{code:"INVALID_OP",reason:"unknown_kind",family:e,message:at(e,t),validFields:Object.keys(n)}}const i=t;const r=i.kind;if(typeof r!=="string"||!Object.hasOwn(n,r)){const s=Object.keys(n);const d=typeof r==="string"?fa(r,s):void 0;return{code:"INVALID_OP",reason:"unknown_kind",family:e,opKind:typeof r==="string"?r:void 0,message:`${at(e,t)}${d?` Did you mean "${d}"?`:""}`,validFields:s,didYouMean:d}}const a=n[r];const o=Object.keys(a.fields);for(const s of Object.keys(i)){if(s==="kind")continue;if(!Object.hasOwn(a.fields,s)){const d=fa(s,o);return{code:"INVALID_OP",reason:"unknown_field",family:e,opKind:r,field:s,message:`Unknown field "${s}" for ${e} op "${r}".${d?` Did you mean "${d}"?`:""} Valid fields: ${o.join(", ")}.`,validFields:o,didYouMean:d}}}for(const[s,d]of Object.entries(a.fields)){if(!d.required)continue;if(i[s]===void 0){return{code:"INVALID_OP",reason:"missing_field",family:e,opKind:r,field:s,message:`Missing required field "${s}" (${gn(d)}) for ${e} op "${r}". Fields: ${o.join(", ")}.`,validFields:o}}}if(a.requireOneOf&&!a.requireOneOf.some(s=>i[s]!==void 0)){return{code:"INVALID_OP",reason:"require_one_of",family:e,opKind:r,message:`${e} op "${r}" requires at least one of: ${a.requireOneOf.join(", ")}.`,validFields:o}}for(const[s,d]of Object.entries(a.fields)){if(i[s]===void 0)continue;if(!as(d,i[s])){return{code:"INVALID_OP",reason:"wrong_type",family:e,opKind:r,field:s,message:`Field "${s}" of ${e} op "${r}" must be ${gn(d)}, got ${JSON.stringify(i[s])}.`,validFields:o}}}return null}function At(e,t){const n=vt(t);if(!n.ok)return pa(e,n.message);try{return os(e,n.value)}catch{return pa(e,"operation could not be validated as plain JSON data")}}function ga(e){if(!ee(e)){throw new RangeError(`family must be one of: ${Object.keys(ye).join(", ")}`)}const t={};for(const[n,i]of Object.entries(ye[e])){t[n]=Object.entries(i.fields).map(([r,a])=>a.required?r:`${r}?`)}return t}function ss(e){if(!ee(e)){throw new RangeError(`family must be one of: ${Object.keys(ye).join(", ")}`)}const t={};for(const[n,i]of Object.entries(ye[e])){t[n]=Object.entries(i.fields).map(([r,a])=>({name:r,required:a.required,type:gn(a),...a.note!==void 0?{note:a.note}:{}}))}return t}function ds(e){const t=ga(e);return Object.entries(t).map(([n,i])=>`${n}(${i.join(", ")})`)}function ls(e,t){const n=yn(e,t);oe("mutate",n.ok);return n}function yn(e,t,n=false,i){if(e.body.kind==="preserved"){return E({code:e.body.diagnostic.code==="UNKNOWN_HEADER"?"UNKNOWN_HEADER":"UNSUPPORTED_FAMILY",message:`${e.body.diagnostic.message}; the exact source remains preserved and cannot accept structured mutation`})}if(e.body.kind==="extension"){return E({code:"INVALID_OP",message:`Registered external family "${e.kind}" has no typed mutation contract in FamilyDescriptor v2`})}const r=O(e.kind);if(r?.mutate&&r.serialize){if(i&&(i.mutator!==r.mutate||i.body!==e.body)){i.mutator=r.mutate;i.body=e.body;i.apply=fi(r.mutate,e.body)}const a=i?.apply?Pi(e):e;const o=i?.apply?i.apply(t):r.mutate(e.body,t);if(!o.ok)return o;try{o.value=sr(o.value)}catch(s){if(!(s instanceof ar))throw s;return E({code:"INVALID_OP",message:s.message})}if(i)i.body=o.value;e=wi(a,o.value,t);return n?q({...e,body:o.value}):ya(e,o.value)}return E({code:"INVALID_OP",message:`Unsupported mutable diagram kind: ${e.kind}`})}function ya(e,t){if(t.kind==="preserved"||t.kind==="extension")return E({code:"INVALID_OP",message:"This source has no typed mutation contract"});const n=O(e.kind);const i=dr(t);const r=i===void 0?e.meta:{...e.meta,accessibility:i};let a=r;try{if(t.kind==="eventmodeling")a=yr(t,r);if(t.kind==="zenuml")a=gr(t.title,r,e.body.kind==="zenuml"&&t.title===e.body.title)}catch(p){return E({code:"INVALID_OP",message:p instanceof Error?p.message:String(p)})}const o=Li(it(n.serialize(t,a),a.accessibility),e.kind,t,a);const s=Ni(a,"verbatim",o,e.kind)+o;const d=v(s);if(!d.ok){return E({code:"INVALID_OP",message:`Mutation produced source that could not be reparsed: ${d.error.map(p=>p.message).join("; ")}`})}const m=d.value.kind===e.kind;const u=d.value.body.kind===t.kind;const y=!u&&d.value.body.kind==="opaque"&&n.verify?.(t,{}).some(p=>p.code==="EMPTY_DIAGRAM")===true;if(!m||!u&&!y){return E({code:"INVALID_OP",message:`Mutation changed semantic family while reparsing: expected ${e.kind}/${t.kind}, got ${d.value.kind}/${d.value.body.kind}`})}if(i&&(i.title!==d.value.meta.accessibility.title||i.descr!==d.value.meta.accessibility.descr)){return E({code:"INVALID_OP",message:"Accessibility text cannot be serialized by this family without changing its value; remove directive openers or description block delimiters"})}return q({...e,body:t,meta:{...d.value.meta,...e.meta.droppedComments?{droppedComments:e.meta.droppedComments}:{}},canonicalSource:s,source:d.value.source})}function je(e,t){let n=e;const i={};for(let a=0;a<t.length;a++){const o=ha(n,t[a],true,i);if(!o.ok)return E({...o.error,opIndex:a});n=o.value}if(!t.length)return q(e);const r=ya(n,n.body);return r.ok?r:E({...r.error,opIndex:t.length-1})}function us(e,t){return ha(e,t,false)}function hn(e,t){const n=ms(e,t);oe("mutate",n.ok);return n}function ms(e,t){if(e.body.kind!=="opaque"||e.body.family!==e.kind)return E({code:"INVALID_OP",message:"Source-preserving mutation requires an opaque body of its parsed family; use mutate for structured bodies"});const n=O(e.kind);if(!n?.mutateSource||!ee(e.kind))return E({code:"UNSUPPORTED_FAMILY",message:`${e.kind} has no source-preserving mutation contract`});const i=vt(t);const r=At(e.kind,i.ok?i.value:t);if(r)return E(r);const a=(e.meta.wrapperSource??"")+e.body.source;try{const o=n.mutateSource(a,i.ok?i.value:t);if(!o.ok)return o;const s=jr(a,o.value);if(s===a)return q({source:a,diagram:e});const d=v(s);if(!d.ok)return E({code:"INVALID_OP",message:`Source-preserving mutation could not be reparsed: ${d.error.map(u=>u.message).join("; ")}`});if(d.value.kind!==e.kind||d.value.body.kind!=="opaque")return E({code:"INVALID_OP",message:"Source-preserving mutation changed family or source-preserved representation"});const m=u=>({...u,comments:u.comments.map(y=>y.text)});if(!qr(m(e.meta),m(d.value.meta)))return E({code:"INVALID_OP",message:"Source-preserving mutation changed configuration, accessibility or comment metadata"});return q({source:s,diagram:d.value})}catch(o){return E({code:"INVALID_OP",message:o instanceof Error?o.message:String(o)})}}function ha(e,t,n,i){if(ee(e.kind)){const a=vt(t);const o=a.ok?a.value:t;const s=At(e.kind,o);if(s){oe("mutate",false);return E(s)}const d=yn(e,o,n,i);oe("mutate",d.ok);return d}const r=yn(e,t,n,i);oe("mutate",r.ok);return r}function fs(e,t){switch(e){case"flowchart":return{kind:"flowchart",graph:{direction:t.direction??"TD",nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map}};case"state":return{kind:"state",states:[],transitions:[],direction:t.direction};case"sequence":return{kind:"sequence",participants:[],messages:[],statements:[]};case"timeline":return{kind:"timeline",sections:[]};case"class":return{kind:"class",classes:[],relations:[],notes:[]};case"er":return{kind:"er",entities:[],relations:[]};case"journey":return{kind:"journey",sections:[]};case"architecture":return{kind:"architecture",groups:[],services:[],junctions:[],edges:[]};case"xychart":return{kind:"xychart",series:[]};case"pie":return{kind:"pie",showData:false,slices:[]};case"quadrant":return{kind:"quadrant",quadrants:[void 0,void 0,void 0,void 0],points:[]};case"gantt":return{kind:"gantt",sections:[],statements:[]};case"mindmap":return{kind:"mindmap",root:{id:"root",label:"root",shape:"default",children:[]}};case"gitgraph":return{kind:"gitgraph",direction:"LR",mainBranchName:"main",commits:[],branches:[{name:"main",order:0,sequence:0}],statements:[]};case"radar":return{kind:"radar",axes:[],curves:[],min:0,ticks:5,graticule:"circle",showLegend:true};case"sankey":return{kind:"sankey",links:[]};case"c4":return Dr(t.c4Variant);case"packet":return{kind:"packet",fields:[]};case"kanban":return{kind:"kanban",columns:[]};case"requirement":return{kind:"requirement",direction:"TB",requirements:[],elements:[],relations:[],classDefs:[]};case"treemap":return{kind:"treemap",nodes:[],classDefs:Object.create(null)};case"zenuml":return{kind:"zenuml",participants:[],statements:[]};case"eventmodeling":return{kind:"eventmodeling",frames:[],entities:[],data:Object.create(null),notes:[],specifications:[]};case"ishikawa":return{kind:"ishikawa",nodes:[]};case"block":return{kind:"block",root:{id:"root",type:"composite",children:[]},edges:[],classDefs:[]}}}function It(e,t={}){oe("build");const n=fs(e,t);if(!n)throw new Error(`createMermaid: unknown diagram kind "${String(e)}"`);const i={kind:e,body:n,meta:{initDirectives:[],comments:[],accessibility:{}},source:{nodes:new Map,edges:new Map,groups:new Map,labels:new Map},canonicalSource:""};return{...i,canonicalSource:F(i)}}function ps(e,t,n={}){const i=It(e,n);return je(i,t)}function gs(e,t,n){const i=me(e);const r=me(t);if(!i||!r||i[3]!==1||r[3]!==1)return void 0;const a=n/100;return Dn(i[0]*a+r[0]*(1-a),i[1]*a+r[1]*(1-a),i[2]*a+r[2]*(1-a))}function De(e,t){if(!e)return void 0;const n=t.appearance.colors;const i=m=>gs(n.fg,n.bg,m);const r=wn(n)?Pn(n):void 0;const a=r?{text:r.text,textSec:r.textSec,textMuted:r.textMuted,textFaint:r.textFaint,line:r.line,arrow:r.arrow,nodeFill:r.nodeFill,nodeStroke:r.nodeStroke,groupHdr:r.groupHdr,innerStroke:r.innerStroke,keyBadge:r.keyBadge}:{text:n.fg,textSec:n.muted??i(J.textSec),textMuted:n.muted??i(J.textMuted),textFaint:i(J.textFaint),line:n.line??i(J.line),arrow:n.accent??i(J.arrow),nodeFill:n.surface??i(J.nodeFill),nodeStroke:n.border??i(J.nodeStroke),groupHdr:i(J.groupHeader),innerStroke:i(J.innerStroke),keyBadge:i(J.keyBadge)};const o={"--bg":n.bg,"--fg":n.fg,"--_text":a.text,"--_text-sec":a.textSec,"--_text-muted":a.textMuted,"--_text-faint":a.textFaint,"--_line":a.line,"--_arrow":a.arrow,"--_node-fill":a.nodeFill,"--_node-stroke":a.nodeStroke,"--_group-fill":n.bg,"--_group-hdr":a.groupHdr,"--_inner-stroke":a.innerStroke,"--_key-badge":a.keyBadge};const s={"--line":n.line,"--accent":n.accent,"--muted":n.muted,"--surface":n.surface,"--border":n.border,...o};const d=e.match(/^var\(\s*(--[a-z0-9_-]+)(?:\s*,[\s\S]*)?\)$/i)?.[1];return d&&Object.hasOwn(s,d)?s[d]:e}function K(e,t){return{code:ir[e.action].code,constraint:e.kind,...t,message:`${t.message} Recovery: ${Ht[e.kind].recovery}`}}function ba(e,t){const n=e.channels??{};const i=t.channels??{};const r=a=>Object.entries(a).sort(([o],[s])=>Je(o,s));return JSON.stringify(r(n))===JSON.stringify(r(i))}function xa(e){const t=[];for(const n of e){if(n.kind==="text")t.push(n);else if(n.kind==="group")t.push(...xa(n.children.map(i=>i.node)))}return t}function ys(e,t){const n=Bt(e.geometry);if(!n)return false;const i=xa([t]);return i.length>0&&i.every(r=>r.x>=n.x0&&r.x<=n.x1&&r.y>=n.y0&&r.y<=n.y1)}function hs(e,t,n){const i=r=>r[r.length-1];return i(e.filter(r=>r.role===t.role&&ba(r,t)))??(n?i(e.filter(r=>r.role===n.role&&ba(r,n))):void 0)??i(e.filter(r=>ys(r,t)))}function ka(e,t,n,i,r){const a=[];for(const o of e){if(o.kind==="shape"){if(o.paint.fill!==void 0&&o.paint.fill!=="none"&&o.paint.fill!=="transparent")a.push(o);continue}const s=hs(a,o,r);const d=s?.paint.fill??t;if(o.kind==="text"){if(!i||o.role===i)n.push({node:o,background:d});continue}if(o.kind==="group"){ka(o.children.map(m=>m.node),d,n,i,o)}}}function bs(e,t,n){const i=e.minimum??4.5;if(n.renderOptions.transparent){return K(e,{measurement:"unmeasurable",minimum:i,message:"Final contrast is unmeasurable for transparent output because the host backdrop is unknown; no ratio was fabricated."})}const r=De(n.appearance.colors.bg,n);const a=[];ka(t.parts,r,a,e.role);if(a.length===0){return K(e,{measurement:"not-applicable",minimum:i,...e.role?{role:e.role}:{},message:`Contrast constraint has no applicable text mark${e.role?` for role ${e.role}`:""}.`})}const o=a.map(u=>{const y=De(u.node.paint.fill,n);const p=De(u.background,n);const b=y&&p?Xe(y,p,r):null;return{...u,foreground:y,background:p,ratio:b}});const s=o.filter(u=>u.ratio!==null).sort((u,y)=>u.ratio-y.ratio)[0];if(s&&s.ratio<i){const u=Math.round(s.ratio*100)/100;return K(e,{measurement:"measurable",minimum:i,ratio:u,role:s.node.role,mark:s.node.id,foreground:s.foreground,background:s.background,message:`Final ${s.node.role} contrast is ${u}:1; expected at least ${i}:1. Paint remains unchanged.`})}const d=o.find(u=>u.ratio===null);if(d){return K(e,{measurement:"unmeasurable",minimum:i,role:d.node.role,mark:d.node.id,...d.foreground?{foreground:d.foreground}:{},...d.background?{background:d.background}:{},message:"Final contrast is unmeasurable because an effective paint pair is unresolved; no ratio was fabricated."})}const m=Math.round(s.ratio*100)/100;return K(e,{measurement:"measurable",minimum:i,ratio:m,role:s.node.role,mark:s.node.id,foreground:s.foreground,background:s.background,message:`Final ${s.node.role} contrast is ${m}:1 and meets ${i}:1.`})}function xs(e,t){const n=me(e);const i=me(t);if(!n||!i)return e.trim().toLowerCase()===t.trim().toLowerCase();return n.every((r,a)=>Math.abs(r-i[a])<1e-6)}function ks(e,t,n){const i=De(n.appearance.colors.accent,n);if(!i)return K(e,{measurement:"unmeasurable",maximum:e.maxFraction,message:"Accent-area constraint is unmeasurable because no concrete accent paint is resolved."});let r=0;let a=0;Ve(t.parts,s=>{if(s.kind!=="shape"||s.role==="chrome")return;const d=De(s.paint.fill,n);if(!d||d==="none"||d==="transparent")return;const m=Bt(s.geometry);if(!m)return;const u=Math.max(0,m.x1-m.x0)*Math.max(0,m.y1-m.y0);r+=u;if(xs(d,i))a+=u});if(r===0)return K(e,{measurement:"not-applicable",maximum:e.maxFraction,message:"Accent-area constraint has no applicable filled shape area."});const o=Math.round(a/r*1e4)/1e4;return K(e,{measurement:"measurable",actual:o,maximum:e.maxFraction,message:o>e.maxFraction?`Accent fill covers ${(o*100).toFixed(2)}% of applicable shape area; maximum is ${(e.maxFraction*100).toFixed(2)}%. Paint remains unchanged.`:`Accent fill area is within the configured maximum.`})}function Ss(e,t,n){const i=[];Ve(t.parts,r=>{if(r.role!==e.role)return;const a=r.kind==="connector"?[r.stroke.color]:r.kind==="shape"||r.kind==="text"?[r.paint.fill,r.paint.stroke]:[];for(const o of a){const s=De(o,n);if(s&&s!=="none")i.push({mark:r.id,value:s})}});if(i.length===0)return K(e,{measurement:"not-applicable",role:e.role,message:`Mono-role constraint has no applicable paint for role ${e.role}.`});for(const r of i){const a=me(r.value);if(!a)return K(e,{measurement:"unmeasurable",role:e.role,mark:r.mark,message:`Mono-role paint ${r.value} is unresolved; no monochrome verdict was fabricated.`});if(Math.abs(a[0]-a[1])>1||Math.abs(a[1]-a[2])>1){return K(e,{measurement:"measurable",role:e.role,mark:r.mark,foreground:r.value,message:`Role ${e.role} uses chromatic paint ${r.value}; the mono-role constraint does not repaint it.`})}}return K(e,{measurement:"measurable",role:e.role,message:`Role ${e.role} uses only measurable monochrome paint.`})}var Rs={contrast:bs,"accent-area":ks,"mono-role":Ss};function Es(e,t,n){const i=Rs[e.kind];return i(e,t,n)}function Sa(e,t){const n=t.appearance.style?.constraints??[];const i=n.map(r=>Es(r,e,t)).filter(r=>{if(r.measurement!=="measurable")return true;if(r.constraint==="contrast")return(r.ratio??Infinity)<(r.minimum??4.5);if(r.constraint==="accent-area")return(r.actual??0)>(r.maximum??1);return r.foreground!==void 0});return i}var _s=[[Vi,"engine"],[Bi,"engine"],[Pe,"engine"],[tr,"engine"],[gt,"engine"],[ft,"config"],[pt,"config"],[yi,"config"],[qn,"config"],[yt,"config"],[xi,"config"],[tn,"config"],[pi,"config"],[Gn,"source"],[Tr,"source"],[ni,"source"],[ei,"source"],[nt,"source"],[Fr,"source"],[Te,"source"],[we,"source"],[Fi,"source"],[ji,"source"],[Ii,"source"],[ce,"source"]];var Ms=[TypeError,RangeError,ReferenceError];var $s=new Set(["SCENE_FIDELITY","SCENE_PRIMITIVE_CLAIM","SCENE_CHANNEL_CLAIM"]);function Ra(e){const t=new Set;let n=e;let i=e;while(i instanceof Error&&!t.has(i)){const r=i;t.add(r);if(r instanceof Nn){return r.attempts.length>0&&r.attempts.every(o=>o.violations.some(s=>s.endsWith(": duplicate identity")))?"source":"engine"}if(r instanceof Zt){return r.diagnostics.length>0&&r.diagnostics.every(o=>$s.has(o.code))?"engine":"source"}const a=_s.find(([o])=>r instanceof o);if(a)return a[1];n=r;i=r.cause}return n instanceof Error&&Ms.some(r=>Object.getPrototypeOf(n)===r.prototype)?"engine":"source"}var Se=class extends Error{family;operation;constructor(t,n,i){const r=i instanceof Error?i.message:String(i);super(`Mermaid family "${t}" ${n} hook failed: ${r}`,{cause:i});this.name="FamilyLayoutError";this.family=t;this.operation=n}};function Pt(e,t,n={}){const i=Si(t);const r=i.family;if(r.id!==e.kind){throw new Error(`Resolved request planned family ${r.id}, not ${e.kind}`)}if(!r.layout||!r.projectPositioned)return null;if(t.renderOptions.layoutSafety==="strict"&&(!r.lowerScene||e.kind.startsWith("family:")))throw new Se(e.kind,"projectPositioned",new yt("Strict layout safety requires native Scene evidence"));let a;try{a=xt(e.kind,t,t.source,n)}catch(d){throw new Se(e.kind,"layout",d)}let o;try{o=Wi(a)??An(i.textMeasurement,()=>r.projectPositioned({positioned:a.positioned,options:n}))}catch(d){throw new Se(e.kind,"projectPositioned",d)}const s=Cs(e.kind,o);if(r.lowerScene&&!e.kind.startsWith("family:")){const d=Yi(t,a);if(t.renderOptions.layoutSafety==="strict"&&d.status!=="passed")throw new ce(d);Qe(s,d);if(n.debug)s.paintCertification=d}return{request:t,layoutResult:a,positioned:a.positioned,rendered:s}}function Os(e){switch(e.body.kind){case"xychart":return e.body.series.length>0;case"pie":return e.body.slices.length>0;case"gantt":return e.body.sections.some(t=>t.tasks.length>0);default:return false}}function Cs(e,t){const n={version:t.version,kind:e,nodes:t.nodes,edges:t.edges,groups:t.groups,bounds:t.bounds};if(t.certificates!==void 0)n.certificates=t.certificates;if(t.labels!==void 0)n.labels=t.labels;return n}function Ds(e,t,n={}){const i=O(e);if(!i?.projectPositioned)return null;return i.projectPositioned({positioned:t,options:n})}function vs(e){return qi(e)}function wt(e,t={}){const n=O(e.kind);if(!n?.layout||!n.projectPositioned)return null;const i={debug:t.debug};const r=vs(e);const a=Os(e);const o=m=>{const u=t.output??"layout";const y=ht(m,t.renderOptions??{},u,u==="layout"?i:void 0);if(t.assertScenes)mt(y);return Pt(e,y,i)};let s;try{s=o(r)}catch(m){if(!a)throw m;const u=F(e);if(u===r)throw m;return o(u)}if(!a||s.rendered.nodes.length>0)return s;const d=F(e);return d===r?s:o(d)}function _a(e,t,n={}){return Pt(e,t,n)?.rendered??null}function Ma(e){try{const t=ie(e.canonicalSource);const n=_e(le(t.lines),t.frontmatter);$e(n);return null}catch(t){const n=t instanceof Error?t.message:String(t);if(n.startsWith("GANTT_EMPTY"))return{code:"EMPTY_DIAGRAM"};return t instanceof nt?{code:"RENDER_FAILED",reason:n,origin:"source"}:{code:"UNRESOLVABLE_SCHEDULE",reason:n}}}function qe(e,t={}){const n=[];const i=.5;for(const r of e.nodes){if(r.x<-i||r.x+r.w>e.bounds.w+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"x"});if(r.y<-i||r.y+r.h>e.bounds.h+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"y"})}for(const r of e.edges){for(const[a,o]of r.path){if(a<-i||a>e.bounds.w+i){n.push({code:"OFF_CANVAS",target:r.id,axis:"x"});break}}for(const[a,o]of r.path){if(o<-i||o>e.bounds.h+i){n.push({code:"OFF_CANVAS",target:r.id,axis:"y"});break}}}for(const r of e.labels??[]){if(r.visibility==="hidden"||r.visibility==="semantic"||!r.bounds)continue;const{x:a,y:o,w:s,h:d}=r.bounds;if(a<-i||a+s>e.bounds.w+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"x"});if(o<-i||o+d>e.bounds.h+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"y"})}if(t.nodeOverlaps){for(let r=0;r<e.nodes.length;r++){for(let a=r+1;a<e.nodes.length;a++){const o=e.nodes[r],s=e.nodes[a];const d=Math.max(0,Math.min(o.x+o.w,s.x+s.w)-Math.max(o.x,s.x));const m=Math.max(0,Math.min(o.y+o.h,s.y+s.h)-Math.max(o.y,s.y));const u=d*m;if(u>i)n.push({code:"NODE_OVERLAP",a:o.id,b:s.id,areaPx:Math.round(u)})}}}if(t.groupContainment){const r=new Map(e.nodes.map(a=>[a.id,a]));for(const a of e.groups){for(const o of a.members){const s=r.get(o);if(!s)continue;const d=t.groupContainment==="center"?s.x+s.w/2>=a.x-i&&s.y+s.h/2>=a.y-i&&s.x+s.w/2<=a.x+a.w+i&&s.y+s.h/2<=a.y+a.h+i:s.x>=a.x-i&&s.y>=a.y-i&&s.x+s.w<=a.x+a.w+i&&s.y+s.h<=a.y+a.h+i;if(!d)n.push({code:"GROUP_BREACH",group:a.id,member:o})}}}if(t.edgeAnchors){const r=new Map(e.nodes.map(a=>[a.id,a]));for(const a of e.edges){const o=a.path[0];const s=a.path[a.path.length-1];const d=r.get(a.from);const m=r.get(a.to);if(o&&d&&!Ea(o[0],o[1],d,i))n.push({code:"ROUTE_SHAPE_MISANCHOR",edge:a.id,node:d.id});if(s&&m&&!Ea(s[0],s[1],m,i))n.push({code:"ROUTE_SHAPE_MISANCHOR",edge:a.id,node:m.id})}}return n}function Ea(e,t,n,i){const r=(Math.abs(e-n.x)<=i||Math.abs(e-(n.x+n.w))<=i)&&t>=n.y-i&&t<=n.y+n.h+i;const a=(Math.abs(t-n.y)<=i||Math.abs(t-(n.y+n.h))<=i)&&e>=n.x-i&&e<=n.x+n.w+i;return r||a}function $a(e){const t=[];const n=.5;for(const r of e.nodes){if(r.x<-n||r.x+r.w>e.bounds.w+n)t.push({code:"OFF_CANVAS",target:r.id,axis:"x"});if(r.y<-n||r.y+r.h>e.bounds.h+n)t.push({code:"OFF_CANVAS",target:r.id,axis:"y"})}const i=new Map(e.nodes.map(r=>[r.id,r]));for(const r of e.groups){for(const a of r.members){const o=i.get(a);if(!o)continue;const s=o.x>=r.x-n&&o.y>=r.y-n&&o.x+o.w<=r.x+r.w+n&&o.y+o.h<=r.y+r.h+n;if(!s)t.push({code:"GROUP_BREACH",group:r.id,member:a})}}return t}var Ca=new Set(["flowchart","state","class","er","block","requirement"]);var As=new Set([...Ca,"quadrant","treemap"]);function Da(e,t,n,i){const r=new Set;let a=0,o=0;for(let s=0;s<t.types.length;s++){if(t.types[s]!==n&&t.types[s]!==i)continue;const d=t.starts[s];while(a+1<e.length&&o+e[a].length<d)o+=e[a++].length+1;if(!e[a].slice(0,d-o).trim())r.add(a+1)}return r}function Is(e,t){const n=[...e];const i=n.findIndex(r=>r.trim()&&!r.trimStart().startsWith("%%"));if(i>=0){let r=0;for(let s=0;s<i;s++){const d=Un(t.originalText,r);r=d+(t.originalText[d]==="\r"&&t.originalText[d+1]==="\n"?2:1)}const a=Yn(t,r);const o=/^[^\S\r\n]*requirement(?:Diagram)?(?=$|[\s;%])/i.exec(t.text.slice(a));if(o){const s=Hn(t,a+o[0].length,"end");n[i]="requirementDiagram"+n[i].slice(s-r)}}return Da(n,xr(n.join("\n")),46,47)}function va(e,t){const n=v(e);if(!n.ok||n.value.body.kind==="opaque"||n.value.body.kind==="preserved")return void 0;const{comments:i,wrapperSource:r,...a}=n.value.meta;return JSON.stringify([a,n.value.body],(o,s)=>s instanceof Map?[...s]:s instanceof Set?[...s]:t&&typeof s==="string"&&s.includes("<")?Wt(s).upstreamText:s)}function Oa(e,t,n,i){const r=i&&t.some(s=>s.reason==="html-attribute-quotes");const a=n(r);if(a===void 0)return true;let o=e;for(const s of[...t].sort((d,m)=>m.originalStart-d.originalStart)){const d=s.reason==="style-semicolon"?" ".repeat(s.originalEnd-s.originalStart):"'";o=o.slice(0,s.originalStart)+d+o.slice(s.originalEnd)}return va(o,r)!==a}function We(e){const t=typeof e==="string"?e:e.originalText;if(!t.includes("<")&&!t.includes("style")&&!t.includes("classDef"))return[];const n=typeof e==="string"?Wt(t):e;if(!n.changes.some(k=>k.reason==="html-attribute-quotes"||k.reason==="style-semicolon"))return[];const i=Bn(Fn(n.text),"loose");const r=Ze(t)?.source.length??0;const a=[...t.matchAll(new RegExp(jt.source,"gm"))];const o=t.split(/\r\n?|\n/);let s;let d;let m;const u=k=>{if(!s){s=new Set;const C=t.slice(0,r).match(/\r\n?|\n/g)?.length??0;const D=t.replace(new RegExp(jt.source,"gm"),A=>A.replace(/[^\r\n]/g," ")).split(/\r\n?|\n/).map((A,N)=>N<C?"":A);d=D.slice();const ne=i?.statementEnds?.(D);for(let A=0;A<D.length;A++){const N=tt(D,A);const re=N===void 0?D.length-1:N?N.endIndex:Wn(ne,A,D.length);for(let j=A+1;j<=re;j++)s.add(j+1);if(N!==null)for(let j=A;j<=re;j++)d[j]="";A=re}}return s.has(k)};const y=k=>{if(i?.id==="flowchart")return lr(o[k-1]??"").length===1;if(i?.id!=="class"&&i?.id!=="er"&&i?.id!=="block"&&i?.id!=="requirement")return true;if(!m){try{if(i.id==="class")m=Pr(d);else if(i.id==="er")m=Lr(d);else if(i.id==="block")m=Da(d,br(d.join("\n")),18,11);else m=Is(d,n)}catch{m=new Set}}return m.has(k)};const p=new Map;for(const k of n.changes){if(k.reason!=="html-attribute-quotes"&&k.reason!=="style-semicolon")continue;if(k.reason==="style-semicolon"){if(k.originalStart<r)continue;if(/^\s*%%/.test(o[k.line-1]??""))continue;const C=/^\s*(style|classDef)\s/.exec(o[k.line-1]??"")?.[1];const D=C==="classDef"?As:Ca;const ne=o[k.line-1].slice(k.col-1+k.originalEnd-k.originalStart);if(C&&i&&D.has(i.id)&&!ne.trim()&&!u(k.line)&&y(k.line))continue;let A=0,N=a.length;while(A<N){const j=A+Math.floor((N-A)/2);if(a[j].index<=k.originalStart)A=j+1;else N=j}const re=a[A-1];if(re&&k.originalStart<re.index+re[0].length)continue}p.set(k.line,[...p.get(k.line)??[],k])}if(p.size===0)return[];let b=false;if(i?.id==="flowchart"){try{const{config:k}=ie(t);b=String(k.htmlLabels??k.flowchart?.htmlLabels??true)!=="false"}catch{b=false}}const S=new Map;const _=k=>{if(!S.has(k))S.set(k,va(t,k));return S.get(k)};const P=[...p.values()].flat();const G=[...new Set(P.map(k=>k.reason))];let M=G.filter(k=>Oa(t,P.filter(C=>C.reason===k),_,b));if(M.length===0&&G.length>1&&Oa(t,P,_,b))M=G;const w=new Map;for(const[k,C]of p){const D=M.filter(ne=>C.some(A=>A.reason===ne));if(D.length>0)w.set(k,D.map(ne=>ne==="html-attribute-quotes"?"rewrites double-quoted HTML-like attributes to single quotes":"removes a style/classDef semicolon"))}return[...w].sort(([k],[C])=>k-C).map(([k,C])=>({code:"UNSUPPORTED_SYNTAX",syntax:"mermaid_cleanup",line:k,message:`Mermaid's cleanup changed this line: it ${[...C].join(" and ")} before parsing. Agentic Mermaid retains the authored text; use entity codes for literal punctuation when exporting to Mermaid.`}))}function bn(e){let t=0,n=0;for(const i of e){t++;if(i.regions){for(const r of i.regions){const a=bn(r.states);t+=a.nodes;n+=a.edges+r.transitions.length}}else{if(i.states&&i.states.length){const r=bn(i.states);t+=r.nodes;n+=r.edges}if(i.transitions)n+=i.transitions.length}}return{nodes:t,edges:n}}function Aa(e){let t=0;for(const n of e){t++;t+=Aa(n.children)}return t}function xn(e){const t=e.body;switch(t.kind){case"flowchart":{const n=t.graph;return{nodes:n.nodes.size,edges:n.edges.length,groups:Aa(n.subgraphs)}}case"sequence":return{nodes:t.participants.length,edges:lt(t).length,groups:0};case"state":{const n=bn(t.states);return{nodes:n.nodes,edges:n.edges+t.transitions.length,groups:0}}case"class":return{nodes:t.classes.length,edges:t.relations.length,groups:(t.namespaces??[]).length};case"er":return{nodes:t.entities.length,edges:t.relations.length,groups:(t.groups??[]).length};case"timeline":{let n=0;for(const i of t.sections)for(const r of i.periods)n+=1+r.events.length;return{nodes:n,edges:0,groups:t.sections.length}}case"journey":{let n=0;for(const i of t.sections)n+=i.tasks.length;return{nodes:n,edges:0,groups:t.sections.length}}case"architecture":return{nodes:t.services.length+t.junctions.length,edges:t.edges.length,groups:t.groups.length};case"xychart":return{nodes:t.series.length,edges:0,groups:0};case"pie":return{nodes:t.slices.length,edges:0,groups:0};case"quadrant":return{nodes:t.points.length,edges:0,groups:0};case"gantt":{let n=0;for(const i of t.sections)n+=i.tasks.length;return{nodes:n,edges:0,groups:t.sections.length}}case"mindmap":{let n=0,i=0;const r=a=>{n++;i+=a.children.length;a.children.forEach(r)};r(t.root);return{nodes:n,edges:i,groups:0}}case"gitgraph":return{nodes:t.commits.length,edges:t.commits.reduce((n,i)=>n+i.parents.length,0),groups:t.branches.length};case"radar":return{nodes:t.curves.reduce((n,i)=>n+i.values.length,0),edges:0,groups:t.axes.length};case"c4":return{nodes:t.elements.length,edges:t.relationships.length,groups:t.boundaries.length};case"sankey":{const n=new Set;for(const i of t.links){n.add(i.source);n.add(i.target)}return{nodes:n.size,edges:t.links.length,groups:0}}case"zenuml":{const n=be(t);return{nodes:n.actors.filter(i=>!i.external).length,edges:n.messages.length,groups:n.blocks.length}}case"eventmodeling":return{nodes:t.frames.length,edges:xe(t).length,groups:ot(t).length};case"packet":case"kanban":case"requirement":case"block":case"treemap":case"ishikawa":return st(t);case"opaque":case"extension":case"preserved":return null;default:{const n=t;void n;return null}}}function Ps(e,t){return e.nodes===t.nodes&&e.edges===t.edges&&e.groups===t.groups}function kn(e,t){if(!e)return[];if(!t)return[{code:"CONTENT_DROPPED_ON_ROUNDTRIP",before:e,after:{nodes:0,edges:0,groups:0}}];if(!Ps(e,t))return[{code:"CONTENT_DROPPED_ON_ROUNDTRIP",before:e,after:t}];return[]}function ws(e){const t=[e.meta.frontmatter,...e.meta.initDirectives.map(r=>r.parsed)];const n=O(e.kind);const i=en(e.kind,t,n?.config,n?.configDiagnostics);try{Ti(e.meta,e.kind)}catch(r){i.push({code:"UNSUPPORTED_SYNTAX",syntax:"mermaid_wrapper_config",message:r instanceof Error?r.message:String(r)})}return i}var Ls=new Set(["rectangle","service","rounded","diamond","stadium","circle","ellipse","subroutine","doublecircle","hexagon","cylinder","asymmetric","trapezoid","trapezoid-alt","lean-r","lean-l","state-start","state-end","state-fork","state-join","state-choice","state-history"]);function Ts(e){if(e.meta.accessibility.title!==void 0||e.meta.accessibility.descr!==void 0)return false;if(e.body.kind==="opaque"){const n=e.kind==="timeline"?ie(e.body.source).familyText:e.body.source;return Ia(e.kind,n)}const t=O(e.kind)?.serialize;if(!t)return false;try{return Ia(e.kind,it(t(e.body),e.meta.accessibility))}catch{return false}}function Ia(e,t){const n=t.split(/[;\n]/).map(a=>a.trim()).filter(a=>a&&!a.startsWith("%%"));if(n.length===0)return true;if(n.length>1)return false;const i=n[0].toLowerCase();const r=(Ut(e)?.headers??[e]).map(a=>a.toLowerCase());return r.some(a=>i===a||i.startsWith(`${a} `))}function Ns(e){try{const t=xn(e);if(!t)return[];const n=v(F(e));if(!n.ok)return kn(t,null);const i=xn(n.value);if(!i)return[];return kn(t,i)}catch{return[]}}function Ae(e,t={}){return Vs(e,t)}function Vs(e,t,n){oe("verify");let i;try{i=typeof e==="string"?v(e):{ok:true,value:e}}catch(u){if(!(u instanceof we))throw u;const y=T([Nt(u,()=>"fails")],U(typeof e==="string"?"flowchart":e.kind),t,false);return{...y,ok:false,checks:{...y.checks,renderability:"failed"}}}const r=i.ok?[...id(i.value),...Ns(i.value)]:[];const a=Fs(e,t,i,n);const o=new Set(t.suppress??[]);const s=$(a.warnings,r.filter(u=>!o.has(u.code)));const d=(t.suppress??[]).some(u=>fe[u]==="error");const m=s.some(u=>u.code==="RENDER_FAILED"||u.code==="INTERNAL_ERROR");return{...a,warnings:s,checks:{renderability:m?"failed":a.ok&&!d?"passed":"not-checked",sourceLoss:r.length>0||a.checks?.sourceLoss==="detected"?"detected":"not-detected",taskCorrectness:"not-checked"}}}function Fs(e,t,n,i){if(!n.ok){const a=n.error[0]?.code;const o=typeof e==="string"&&a!=="INVALID_FRONTMATTER"&&a!=="CONFIG_REJECTED"&&Tn(ie(e).firstLine);const s=[...o?Qt(e):[],...typeof e==="string"&&a!=="INVALID_FRONTMATTER"&&a!=="CONFIG_REJECTED"?We(e):[]];return{...T([js(n.error),...s],U("flowchart"),t),ok:false}}if(n.value.body.kind==="preserved"){const{diagnostic:a}=n.value.body;return T([{code:"RENDER_FAILED",reason:`${a.code}: ${a.message}`,origin:"source"}],U(n.value.kind),t,false)}const r=Ws(n.value,t,typeof e==="string"?e:void 0,i);try{const a=typeof e==="string"?e:F(n.value);const o=zn(a,t.renderOptions?.mermaidConfig??{});if(n.value.kind==="architecture")ht(a,t.renderOptions??{},"svg");else bi(o.config.themeVariables,n.value.kind,t.renderOptions);hi(o.frontmatter,n.value.kind)}catch(a){return T([r.failure(a)],U(n.value.kind),t,false)}try{const a=ad(n.value,t,r,typeof e==="string"?e:void 0);return Gs(qs(a,t,r),t,r,i)}catch(a){if(!(a instanceof ce||a instanceof Se||a instanceof pt||a instanceof ft||a instanceof we))throw a;const o=a instanceof ce?{layoutCertification:a.certification}:{};return{...T([r.failure(a)],U(n.value.kind),t,false),...o}}}function Nt(e,t,n=""){const i=Vn(e);if(i)throw i;const r=`${n}${e instanceof Error?e.message:String(e)}`;const a=Ra(e);return a==="engine"?{code:"INTERNAL_ERROR",reason:r,defaultRender:t()}:{code:"RENDER_FAILED",reason:r,origin:a}}function Bs(e,t,n){try{const{onConfigDiagnostic:i,...r}=t.renderOptions??{};const a=Oe(n??e);Rt(a.source,r,"svg",void 0,{expectedFamilyId:a.expectedFamilyId});return"succeeds-unchecked"}catch{return"fails"}}function js(e){if(e.every(t=>t.code==="EMPTY"))return{code:"EMPTY_DIAGRAM"};return{code:"RENDER_FAILED",reason:e.map(t=>t.message).join("; "),origin:e.some(t=>t.code==="CONFIG_REJECTED"||t.code==="FAMILY_DESCRIPTOR_CONTRACT")?"config":"source"}}function qs(e,t,n){if(!e.ok)return e;try{const i=n();const r=i?.request.appearance.style?.constraints;if(!i||!r||r.length===0)return e;const a=St(i.request,i.layoutResult);const o=new Set(t.suppress??[]);const s=Sa(a,i.request).filter(d=>!o.has(d.code));return{...e,ok:e.ok&&!s.some(d=>fe[d.code]==="error"),warnings:[...e.warnings,...s]}}catch{return e}}function Ws(e,t,n,i){let r=false;let a=null;let o;let s;const d=(m,u)=>Nt(m,()=>s??=Bs(e,t,n),u);return Object.assign(()=>{if(r){if(o!==void 0)throw o;return a}r=true;try{if(i){const m=Me(i.source,t.renderOptions??{},"svg",void 0,{expectedFamilyId:e.kind});bt(m);mt(m);a=Pt(e,m);if(a)i.artifact=a}else{a=wt(e,{renderOptions:t.renderOptions,output:"svg",assertScenes:true})}return a}catch(m){o=m;throw m}},{failure:d})}function Gs(e,t,n,i){if(!e.ok||(t.suppress??[]).some(r=>r==="RENDER_FAILED"||fe[r]==="error"))return e;try{const r=n();if(!r)throw new Error(`Mermaid family "${e.layout.kind}" has no positioned graphical artifact`);const a=zi(r.request,r.layoutResult,i?.diagnostics??[]);if(i)i.rendered=a;return{...e,...a.layoutCertification?{layoutCertification:a.layoutCertification}:{}}}catch(r){return{...e,ok:false,...r instanceof ce?{layoutCertification:r.certification}:{},warnings:[...e.warnings,n.failure(r)]}}}function Us(e){try{const t=ie(e.canonicalSource);const n=_e(le(t.lines),t.frontmatter);const i=n.todayMarker?.style;if(i===void 0)return[];return[...Vr(i).ignored].sort().map(r=>({code:"INEFFECTIVE_CONFIG",field:`todayMarker.${r}`,message:`Gantt todayMarker style property "${r}" is accepted for Mermaid compatibility but is not applied to the today line (wired, sanitized properties: ${Nr.join(", ")}).`}))}catch{return[]}}function Hs(e){if(e.kind!=="flowchart"||e.body.kind!=="flowchart")return[];const t=[];for(const n of e.body.graph.nodes.values()){if(!n.semanticShape)continue;const i=Yr(n.semanticShape);if(!i||i.exact)continue;t.push({code:"UNSUPPORTED_SYNTAX",syntax:"flowchart_shape_substitution",node:n.id,message:`Mermaid v11 shape "${n.authoredShape??n.semanticShape}" (${i.description}) has no dedicated renderer yet; node "${n.id}" renders with the nearest geometry "${i.geometry}".`})}return t}function Ys(e){if(e.body.kind!=="quadrant")return[];const t=new Set;const n=i=>{for(const r of i?.extra??[])t.add(r.slice(0,r.indexOf(":")).trim())};for(const i of e.body.points)n(i.style);for(const i of Object.values(e.body.classDefs??{}))n(i);return[...t].sort().map(i=>({code:"UNSUPPORTED_SYNTAX",syntax:"quadrant_style_property",message:`Quadrant style property "${i}" is preserved in source for upstream compatibility but has no effect on rendered points (rendered properties: radius, color, stroke-color, stroke-width).`}))}function zs(e){if(e.body.kind!=="treemap")return[];return e.canonicalSource.split(/\r?\n/).flatMap((t,n)=>/["']\s*[:,]\s*[\d.,]*_/.test(t)?[{code:"UNSUPPORTED_SYNTAX",syntax:"treemap_numeric_separator",line:Ee(e.source,n+1),message:"Underscores in Treemap quantities are read as digit separators; Mermaid 12.2.0 does not preserve that quantity. Canonical edits write the full numeric value without underscores."}]:[])}var Ks={eventmodeling:hr,architecture:Br,block:Sr,ishikawa:Er,requirement:Mr,class:Ur,er:Hr,flowchart:Qr,gantt:Zr,journey:ti,mindmap:ri,quadrant:ii,radar:oi,sankey:si,sequence:di,state:ci,timeline:li,xychart:mi};function Xs(e,t){const n=Ks[e.kind];if(!n)return[];const i=t?.split(/\r\n?|\n/);const r=i?a=>i[Ee(e.source,a)-1]:a=>pr(e.source,a);return Sn(n(e.canonicalSource,r),a=>Ee(e.source,a))}function Sn(e,t){return e.map(n=>n.code==="UNSUPPORTED_SYNTAX"&&n.line!==void 0?{...n,line:t(n.line)}:n)}function Js(e,t){const n=e.body.kind==="opaque"?or(e.body.source,O(e.kind)?.statementEnds):void 0;const i=e.meta.wrapperSource??"";const r=Ze(i);const a=r&&r.yaml===""?[{code:"UNSUPPORTED_SYNTAX",syntax:"empty_frontmatter",line:i.slice(0,i.indexOf("---")).split(/\r\n?|\n/).length,message:"Frontmatter without a content line is read as no configuration. Pinned Mermaid rejects adjacent delimiters; serialization omits them."}]:[];if(n)a.push({code:"UNSUPPORTED_SYNTAX",syntax:"accessibility_directive_text",message:n});for(const s of e.meta.initDirectives)if(/\}\s+%%\s*$/.test(s.raw))a.push({code:"UNSUPPORTED_SYNTAX",syntax:"separated_directive_close",message:"Directive closing delimiters must be contiguous in pinned Mermaid. Native reading repairs the separated close; canonical serialization emits }%%."});const o=fr(e.source);if(o)return[...a,...We(o)];if(t!==void 0)return[...a,...We(t)];return[...a,...We(e.canonicalSource).map(s=>s.code==="UNSUPPORTED_SYNTAX"&&s.line!==void 0?{...s,line:Ee(e.source,s.line)}:s)]}function Qs(e){try{const t=e();if(t?.request.renderOptions.transparent)return[];const n=t?.request.familyConfig?.visual;const i=n?.axisColor;if(typeof i!=="string")return[];const r=t.request.appearance.colors.bg;const a=Xe(i,r);if(a===null||a>=4.5)return[];const o=Math.round(a*100)/100;return[{code:"LOW_CONTRAST",field:"themeVariables.radar.axisColor",foreground:i,background:r,ratio:o,minimum:4.5,message:`Authored Radar axis label color ${i} has contrast ${o}:1 against ${r}; expected at least 4.5:1. The color is preserved as authored.`}]}catch{return[]}}function Zs(e){try{const t=e()?.layoutResult.positioned;if(t?.body.kind!=="c4")return[];return t.diagnostics.map(n=>{const i=t.body.statements.find(r=>r.id===n.statementId);if(n.code==="C4_LABEL_COLLISION"||n.code==="C4_ARROW_OCCLUDED"){return{code:"CONTENT_OCCLUDED",target:i?.entityId??"C4 layout",feature:n.code==="C4_ARROW_OCCLUDED"?"marker":"label",line:i?.span.line,message:`${n.code}: ${n.message}`}}if(n.code==="C4_WIDTH_EXCEEDED")return{code:"LAYOUT_LIMIT_EXCEEDED",constraint:"c4.maxWidth",message:`${n.code}: ${n.message}`};return{code:"UNSUPPORTED_SYNTAX",line:i?.span.line,syntax:n.code.toLowerCase(),message:`${n.code}: ${vr(t.body,n)}`}})}catch{return[]}}function ed(e,t){try{const n=t()?.positioned;const i=n?.widthFit;return i?.status==="exceeded"?[{code:"LAYOUT_LIMIT_EXCEEDED",constraint:`${e}.maxWidth`,message:`The requested ${e} width ${i.maxWidth}px cannot contain the ${i.width}px artifact within the bounded fitting policy; legend text, selected typography and existing scale annotations are retained.`}]:[]}catch{return[]}}function td(e){try{const t=e()?.positioned;if(!t?.hiddenLabels.length)return[];return[{code:"LABELS_HIDDEN",target:"data-labels",labels:t.hiddenLabels,message:"Treemap labels do not fit their value-proportional cells; enlarge the canvas or reduce the hierarchy."}]}catch{return[]}}function nd(e){try{const t=e()?.positioned;if(!t)return[];const n=[];if(t.hiddenTitle){n.push({code:"LABELS_HIDDEN",target:"title",labels:[t.hiddenTitle],message:`XY chart does not draw its title because it does not fit: ${t.hiddenTitle}. Enlarge the chart, shorten the title, or lower xyChart.plotReservedSpacePercent.`})}const i=t.hiddenCategoryLabels??[];const r=t.hiddenLegendLabels??[];if(r.length>0){n.push({code:"LABELS_HIDDEN",target:"legend",labels:r,message:`XY chart does not draw ${r.length} legend ${r.length===1?"entry":"entries"} because the legend does not fit: ${r.join(", ")}. Enlarge the chart, shorten the series names, or lower xyChart.plotReservedSpacePercent.`})}if(i.length>0){const o=t.horizontal?"Shorten the category names, widen the chart, or lower xyChart.plotReservedSpacePercent.":"Shorten the category names, or call set_orientation {horizontal: true} to list categories down the side.";n.push({code:"LABELS_HIDDEN",target:"x-axis",labels:i,message:`XY chart does not draw ${i.length} x-axis category ${i.length===1?"name":"names"} because ${i.length===1?"it does":"they do"} not fit: ${i.join(", ")}. ${o}`})}const a=t.unlabeledBars??[];if(a.length>0){const o=a.map(s=>`${s.label??""} = ${ui(s.value)}`.trim());n.push({code:"LABELS_HIDDEN",target:"data-labels",labels:o,message:`XY chart does not draw ${a.length} bar value ${a.length===1?"label":"labels"} because neither the bar nor the plot beyond it has room: ${o.join(", ")}. Widen the value range or enlarge the chart.`})}return n}catch{return[]}}function rd(e){try{const t=e()?.positioned;const n=(t?.points??[]).filter(i=>i.labelHidden).map(i=>i.label);if(n.length===0)return[];return[{code:"LABELS_HIDDEN",target:"point-labels",labels:n,message:`Quadrant chart does not draw ${n.length} point ${n.length===1?"label":"labels"} because ${n.length===1?"it collides":"they collide"} with labels placed first: ${n.join(", ")}. Spread the points, shorten the names, or enlarge the chart.`}]}catch{return[]}}function Ta(e){if(e.body.kind==="preserved")return[];if(e.body.kind==="extension"){const i=O(e.kind);return i?.configDiagnostics?en(e.kind,[e.meta.frontmatter,...e.meta.initDirectives.map(r=>r.parsed)],i.config,i.configDiagnostics):[]}const t=e;const n=t.kind==="gantt"?Us(t):[];return $(n,ws(t))}function Uf(e){const t=v(e);return t.ok?Ta(t.value):[]}function id(e){return e.meta.droppedComments?.length?[{code:"COMMENT_DROPPED",count:e.meta.droppedComments.length,lines:e.meta.droppedComments.map(t=>t.line)}]:[]}function ad(e,t,n,i){const r=t.labelCharCap??Yt;const a=Js(e,i);const o=cd(e,t,n);const s=Ta(e);if(e.body.kind==="extension"){return od(e,r,t,$($(a,o),s),n)}const d=e;const m=d.kind==="flowchart"?$(Sn(Qt(d.canonicalSource),M=>Ee(d.source,M)),Hs(d)):d.kind==="quadrant"?Ys(d):d.kind==="treemap"?zs(d):[];const u=$(m,Xs(d,i));if(["block","sankey","mindmap","ishikawa"].includes(d.kind)&&(d.meta.accessibility.title!==void 0||d.meta.accessibility.descr!==void 0)&&!u.some(M=>M.code==="UNSUPPORTED_SYNTAX"&&M.syntax===`${d.kind}_accessibility`)){u.push({code:"UNSUPPORTED_SYNTAX",syntax:`${d.kind}_accessibility`,message:`${d.kind} accessibility metadata is carried in native comments on export. External Mermaid ignores this metadata; diagram topology is preserved.`})}const y=Ts(d);const p=d.meta.wrapperSource?.match(/\n/g)?.length??0;const b=Sn(o,M=>M+p);let S=$($($($(a,b),u),s),y?[{code:"EMPTY_DIAGRAM"}]:[]);if(d.body.kind==="class"&&(d.meta.accessibility.title!==void 0||d.meta.accessibility.descr!==void 0)){S=S.filter(M=>M.code!=="EMPTY_DIAGRAM")}if(d.body.kind==="sequence")return wa(md(d,r,t,n),S,t);if(d.body.kind==="timeline")return wa(ud(d,r,t,n),S,t);if(d.body.kind==="gantt"){const M=Ma(d);if(M){return T($(S,[M]),U(d.kind),t,false)}const w=ve(d,n);const k=w.layout;const C=$($a(k),w.warnings);return T($(S,C),k,t)}if(d.body.kind==="class"||d.body.kind==="er"||d.body.kind==="journey"||d.body.kind==="architecture"||d.body.kind==="xychart"||d.body.kind==="pie"||d.body.kind==="quadrant"||d.body.kind==="mindmap"||d.body.kind==="gitgraph"||d.body.kind==="radar"||d.body.kind==="sankey"||d.body.kind==="c4"||d.body.kind==="packet"||d.body.kind==="kanban"||d.body.kind==="requirement"||d.body.kind==="block"||d.body.kind==="treemap"||d.body.kind==="zenuml"||d.body.kind==="eventmodeling"||d.body.kind==="ishikawa"){const M=ve(d,n);const w=M.layout;const k=d.body.kind==="class"||d.body.kind==="er"?qe(w,{edgeAnchors:true,nodeOverlaps:true,groupContainment:d.body.kind==="class"}):qe(w,{nodeOverlaps:d.body.kind==="journey"||d.body.kind==="c4",groupContainment:d.body.kind==="xychart"||d.body.kind==="quadrant"?"center":d.body.kind==="journey"||d.body.kind==="c4"});const C=d.body.kind==="radar"?Qs(n):d.body.kind==="xychart"?nd(n):d.body.kind==="quadrant"?rd(n):d.body.kind==="c4"?Zs(n):d.body.kind==="treemap"?td(n):[];const D=d.body.kind==="pie"||d.body.kind==="radar"?ed(d.body.kind,n):[];return T($($($($(S,k),M.warnings),C),D),w,t)}if(d.body.kind==="state"){const M=ut(d.body);if(M.nodes.size===0)return T($([{code:"EMPTY_DIAGRAM"}],S),U(d.kind),t);const{warnings:w,layout:k}=Pa(M,d,r,n);return T($(w,S),k,t)}if(d.body.kind==="opaque"){const M=y;const w=O(d.kind);const k=(w?.extractLabels??Q)(d.body.source);const C=M?[{code:"EMPTY_DIAGRAM"}]:[];if(!M&&!S.some(N=>N.code==="UNSUPPORTED_SYNTAX")){C.push({code:"UNSUPPORTED_SYNTAX",syntax:`${d.kind}_opaque`,message:`This ${d.kind} diagram uses syntax the structured parser does not model; it is preserved verbatim as source. Typed mutation (the ${d.kind} \`as*\` narrower) is unavailable \u2014 edit the source directly, or verify/render it as-is.`})}const D=new Set;for(const N of k){const re=Z(N.target,N.text,r);if(!re)continue;const j=`${N.target}:${N.text}`;if(D.has(j))continue;D.add(j);C.push(re)}const ne=ve(d,n);const A=ne.layout;return T($($(C,S),ne.warnings),A,t,false)}const _=d.body.graph;if(_.nodes.size===0)return T([{code:"EMPTY_DIAGRAM"}],U(d.kind),t);const{warnings:P,layout:G}=Pa(_,d,r,n);return T($(P,S),G,t)}function od(e,t,n,i,r){const a=[...i];const o=O(e.kind);const s=(o?.extractLabels??Q)(e.body.source);const d=new Set;for(const u of s){const y=Z(u.target,u.text,t);if(!y)continue;const p=`${u.target}:${u.text}`;if(d.has(p))continue;d.add(p);a.push(y)}const m=ve(e,r);return T([...a,...m.warnings],m.layout,n,false)}function ve(e,t){try{const n=t();return n?{layout:n.rendered,warnings:[]}:{layout:U(e.kind),warnings:[{code:"RENDER_FAILED",reason:`Mermaid family "${e.kind}" has no public layout projection registered`,origin:"config"}]}}catch(n){return{layout:U(e.kind),warnings:[t.failure(n)]}}}function Pa(e,t,n,i){const r=sd(e,n);const a=ld(e);let o;try{o=i()}catch(u){return{warnings:[i.failure(u),...r,...a],layout:U(t.kind)}}if(!o||!fd(o.positioned)){return{warnings:[{code:"UNSUPPORTED_SYNTAX",syntax:"positioned_artifact",message:`The ${t.kind} family did not produce its declared positioned-graph artifact.`},...r,...a],layout:U(t.kind)}}const s=o.positioned;const d=o.rendered;const m=[...r];m.push(...dd(s,e));for(const u of Mi(s,e)){m.push({code:"ROUTE_HITCH",edge:u.edge,deviationPx:u.deviationPx})}m.push(...$i(s,e));m.push(...a);return{warnings:m,layout:d}}function sd(e,t){const n=[];for(const i of e.edges){const r=e.nodes.has(i.source)||Boolean(Tt(e.subgraphs,i.source));const a=e.nodes.has(i.target)||Boolean(Tt(e.subgraphs,i.target));if(!r||!a){n.push({code:"EDGE_MISANCHORED",edge:`${i.source}->${i.target}`,from:r?i.source:void 0,to:a?i.target:void 0})}}for(const[i,r]of e.nodes){if(!Ls.has(r.shape))n.push({code:"UNKNOWN_SHAPE",node:i,shape:String(r.shape)});const a=Z(i,L(r.label,r.labelContent),t,"plain");if(a)n.push(a)}for(const i of e.edges){const r=i.label?Z(`${i.source}->${i.target}`,L(i.label,i.labelContent),t,"plain"):null;if(r)n.push(r)}return n}function dd(e,t){const n=[];for(const i of e.nodes){if(i.x<0||i.x+i.width>e.width+1)n.push({code:"OFF_CANVAS",target:i.id,axis:"x"});if(i.y<0||i.y+i.height>e.height+1)n.push({code:"OFF_CANVAS",target:i.id,axis:"y"})}for(const i of e.groups){const r=a=>{const o=Tt(t.subgraphs,a.id);if(o)for(const s of e.nodes){if(!o.nodeIds.includes(s.id))continue;const d=s.x>=a.x&&s.y>=a.y&&s.x+s.width<=a.x+a.width+.5&&s.y+s.height<=a.y+a.height+.5;if(!d)n.push({code:"GROUP_BREACH",group:a.id,member:s.id})}for(const s of a.children)r(s)};r(i)}for(let i=0;i<e.nodes.length;i++){for(let r=i+1;r<e.nodes.length;r++){const a=e.nodes[i],o=e.nodes[r];const s=pd(a,o);if(s>0)n.push({code:"NODE_OVERLAP",a:a.id,b:o.id,areaPx:Math.round(s)})}}for(const i of e.edges){const r=gd(i.points);if(r>0)n.push({code:"ROUTE_SELF_CROSS",edge:`${i.source}->${i.target}`,count:r})}return n}function $(e,t){if(t.length===0)return e;const n=new Set(e.map(La));const i=t.filter(r=>!n.has(La(r)));return i.length===0?e:[...e,...i]}function cd(e,t,n){const i=O(e.kind);if(!i?.verify)return e.body.kind==="extension"?[{code:"RENDER_FAILED",reason:`Mermaid family "${e.kind}" has no verify hook registered`,origin:"config"}]:[];try{let r=e.body;if(e.body.kind==="extension"){const a=e;if(!Ln(a.descriptorIdentity,i.identity)){const o=v(F(e));if(!o.ok||o.value.kind!==e.kind||o.value.body.kind!=="extension"){return[{code:"RENDER_FAILED",reason:`Mermaid family "${e.kind}" could not reparse source under its current descriptor before verification`,origin:"source"}]}r=o.value.body}}return i.verify(r,t)}catch(r){return[n.failure(r,`Mermaid family "${e.kind}" verify hook failed: `)]}}function wa(e,t,n){if(t.length===0)return e;const i=$(e.warnings,t);if(i===e.warnings)return e;const r=T(i,e.layout,n,false);return e.checks?.sourceLoss==="detected"?{...r,checks:{...r.checks,sourceLoss:"detected"}}:r}function La(e){if(e.code==="UNSUPPORTED_SYNTAX")return`${e.code}:${e.syntax}:${e.line??""}:${e.node??""}`;if(e.code==="RENDER_FAILED"||e.code==="INTERNAL_ERROR")return`${e.code}:${e.reason}`;if("target"in e)return`${e.code}:${e.target}`;if("edge"in e)return`${e.code}:${e.edge}`;if("node"in e)return`${e.code}:${e.node}`;if("group"in e)return`${e.code}:${e.group}`;if("a"in e&&"b"in e)return`${e.code}:${e.a}|${e.b}`;return e.code}function ld(e){const t=[];const n=Jr(e.edges);const i=Xr(e.edges).map((p,b)=>{const S=e.edges[b].id;return S&&n.get(S)===b?S:p});const r=new Map;e.edges.forEach((p,b)=>{const S=JSON.stringify({source:p.source,target:p.target,label:p.label??"",style:p.style,hasArrowStart:p.hasArrowStart,hasArrowEnd:p.hasArrowEnd,startMarker:p.startMarker??"arrow",endMarker:p.endMarker??"arrow"});const _=i[b];const P=r.get(S);if(P){t.push({code:"DUPLICATE_EDGE",edge:_,duplicateOf:P.edge,from:p.source,to:p.target,label:p.label})}else{r.set(S,{edge:_,from:p.source,to:p.target,label:p.label})}});const a=new Map;e.edges.forEach((p,b)=>{const S=e.nodes.get(p.source);if(!S||S.shape!=="diamond"||p.source===p.target)return;const _=a.get(p.source)??{labeled:0,unlabeled:[]};if(p.label&&p.label.trim().length>0)_.labeled++;else _.unlabeled.push(i[b]);a.set(p.source,_)});for(const[p,b]of a){if(b.labeled+b.unlabeled.length<2)continue;for(const S of b.unlabeled){t.push({code:"DECISION_BRANCH_UNLABELED",node:p,edge:S})}}const o=Array.from(e.nodes.keys());if(o.length===0||e.edges.length===0)return t;const s=new Map(o.map(p=>[p,0]));const d=new Map(o.map(p=>[p,[]]));for(const p of e.edges){if(!e.nodes.has(p.source)||!e.nodes.has(p.target))continue;s.set(p.target,(s.get(p.target)??0)+1);d.get(p.source).push(p.target)}const m=o.filter(p=>(s.get(p)??0)===0);if(m.length===0)return t;const u=new Set(m);const y=[...m];for(let p=0;p<y.length;p++){for(const b of d.get(y[p])??[]){if(u.has(b))continue;u.add(b);y.push(b)}}for(const p of o){if(!u.has(p))t.push({code:"UNREACHABLE_NODE",node:p})}return t}function ud(e,t,n,i){const r=e.body;const a=ve(e,i);const o=a.layout;const s=[];const d=r.sections.length>0||r.title!==void 0||r.accessibilityTitle!==void 0||r.accessibilityDescription!==void 0;if(!d)return T([{code:"EMPTY_DIAGRAM"}],o,n);const m=(u,y)=>{const p=y!==void 0?Z(u,y,t,"literal"):null;if(p)s.push(p)};m("title",r.title);for(const u of r.sections){m(u.id,u.label);for(const y of u.periods){m(y.id,y.label);for(const p of y.events)m(p.id,p.text)}}return T($($(s,qe(o,{nodeOverlaps:true,groupContainment:true})),a.warnings),o,n)}function md(e,t,n,i){const r=e.body;const a=ve(e,i);const o=a.layout;const s=[];const d=r.statements.some(b=>b.kind==="opaque-block"&&b.lines.some(S=>S.trim().length>0&&!qt(S)));const m=lt(r);if(r.participants.length===0&&m.length===0&&!d){return T([{code:"EMPTY_DIAGRAM"}],o,n,false)}const u=new Set(r.participants.map(b=>b.id));m.forEach((b,S)=>{if(!u.has(b.from)||!u.has(b.to)){s.push({code:"EDGE_MISANCHORED",edge:`msg#${S}:${b.from}->${b.to}`,from:u.has(b.from)?b.from:void 0,to:u.has(b.to)?b.to:void 0})}const _=Z(`msg#${S}:${b.from}->${b.to}`,L(b.text,b.textContent),t);if(_)s.push(_)});for(const b of r.participants){const S=Z(b.id,L(b.label,b.labelContent),t);if(S)s.push(S)}for(const b of r.statements)if(b.kind==="fragment"){if(b.fragment.label){const S=Z(`fragment:${b.fragment.fragmentKind}`,L(b.fragment.label,b.fragment.labelContent),t);if(S)s.push(S)}for(const[S,_]of b.fragment.branches.entries())if(_.label){const P=Z(`fragment:${b.fragment.fragmentKind}:branch#${S}`,L(_.label,_.labelContent),t);if(P)s.push(P)}}const y=r.statements.filter(b=>b.kind==="opaque-block").flatMap(b=>b.lines).filter(b=>!qt(b));if(y.length>0){s.push({code:"UNSUPPORTED_SYNTAX",syntax:"sequence_opaque_segment",message:"This sequence contains source-preserved constructs that are not represented in describe/facts or typed fragment operations. Inspect the source directly before relying on semantic read-back."});const b=O(e.kind);const S=(b?.extractLabels??Q)(y.join("\n"));const _=new Set;for(const P of S){const G=Le(P.text);const M=Z(P.target,L(G.value,G.content),t);if(!M)continue;const w=`${P.target}:${P.text}`;if(_.has(w))continue;_.add(w);s.push(M)}}const p=r.participants.length===0&&m.length===0;return T($($(s,qe(o,{nodeOverlaps:true})),a.warnings),o,n,p)}function fd(e){const t=e;return Array.isArray(t.nodes)&&Array.isArray(t.edges)&&Array.isArray(t.groups)}function T(e,t,n,i=true){const r={renderability:"not-checked",sourceLoss:e.some(d=>d.code==="COMMENT_DROPPED"||d.code==="CONTENT_DROPPED_ON_ROUNDTRIP")?"detected":"not-detected",taskCorrectness:"not-checked"};const a=new Set(n.suppress??[]);const o=e.filter(d=>!a.has(d.code));const s=!o.some(d=>fe[d.code]==="error");if(i&&!a.has("UNSUPPORTED_SYNTAX")&&!o.some(d=>d.code==="RENDER_FAILED"||d.code==="INTERNAL_ERROR")&&t.nodes.length===0&&t.edges.length===0&&t.groups.length===0&&t.bounds.w===0&&t.bounds.h===0&&!o.some(d=>d.code==="EMPTY_DIAGRAM")&&!o.some(d=>d.code==="UNSUPPORTED_SYNTAX"&&d.syntax==="empty_layout")){return{ok:s,checks:r,warnings:[...o,{code:"UNSUPPORTED_SYNTAX",syntax:"empty_layout",message:"The source carries content, but the local layout renders nothing (0x0 canvas with no nodes, edges, or groups)."}],layout:t}}return{ok:s,warnings:o,layout:t,checks:r}}function pd(e,t){const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x));const i=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return n*i}function gd(e){if(e.length<4)return 0;let t=0;for(let n=0;n<e.length-1;n++)for(let i=n+2;i<e.length-1;i++){if(n===0&&i===e.length-2)continue;if(yd(e[n],e[n+1],e[i],e[i+1]))t++}return t}function yd(e,t,n,i){const r=Lt(i.x-n.x,i.y-n.y,e.x-n.x,e.y-n.y);const a=Lt(i.x-n.x,i.y-n.y,t.x-n.x,t.y-n.y);const o=Lt(t.x-e.x,t.y-e.y,n.x-e.x,n.y-e.y);const s=Lt(t.x-e.x,t.y-e.y,i.x-e.x,i.y-e.y);return(r>0&&a<0||r<0&&a>0)&&(o>0&&s<0||o<0&&s>0)}function Lt(e,t,n,i){return e*i-n*t}function Tt(e,t){for(const n of e){if(n.id===t)return n;const i=Tt(n.children,t);if(i)return i}return null}function Na(e){return JSON.parse(JSON.stringify({ok:e.ok,warnings:e.warnings,checks:e.checks}))}function Va(e){try{if(!Array.isArray(e)||Object.getPrototypeOf(e)!==Array.prototype)return{ok:false};const t=Object.getOwnPropertyDescriptors(e);const n=t.length?.value;if(!Number.isSafeInteger(n)||n<0)return{ok:false};const i=Reflect.ownKeys(e);if(i.some(a=>typeof a==="symbol"||a!=="length"&&!/^(0|[1-9]\d*)$/.test(a)))return{ok:false};const r=[];for(let a=0;a<n;a++){const o=t[String(a)];if(!o||!("value"in o)||o.enumerable!==true)return{ok:false};r.push(o.value)}return{ok:true,value:r}}catch{return{ok:false}}}function Fa(e,t,n){const i=Va(t);if(!i.ok){return E({code:"INVALID_OP",message:"`ops` must be an array of op objects",opIndex:-1})}const r=i.value;let a;try{a=It(e,n)}catch(o){return E({code:"INVALID_OP",message:o instanceof Error?o.message:String(o),opIndex:-1})}return je(a,r)}function hd(e){let t;let n;let i;let r;try{if(!jn(e)){return{ok:false,family:null,error:{code:"INVALID_OP",message:"applyOps input must be a plain object"}}};({source:t,family:n,ops:i,mode:r}=e)}catch{return{ok:false,family:null,error:{code:"INVALID_OP",message:"applyOps input must be a readable plain object"}}}const a=Va(i);if(!a.ok){return{ok:false,family:typeof n==="string"&&ee(n)?n:null,error:{code:"INVALID_OP",message:"`ops` must be an array of op objects"}}}const o=a.value;if(r!==void 0&&r!=="structured"&&r!=="source-preserving")return{ok:false,family:null,error:{code:"INVALID_OP",message:"`mode` must be structured or source-preserving"}};if(r==="source-preserving"&&typeof t!=="string")return{ok:false,family:null,error:{code:"INVALID_OP",message:"Source-preserving mode requires existing source, not a blank-slate build"}};if(t!==void 0&&typeof t!=="string"){return{ok:false,family:null,error:{code:"INVALID_OP",message:"`source` must be a string when provided"}}}if(n!==void 0&&typeof n!=="string"){return{ok:false,family:null,error:{code:"INVALID_OP",message:"`family` must be a string when provided"}}}if(typeof t==="string"&&typeof n==="string"){return{ok:false,family:ee(n)?n:null,error:{code:"INVALID_OP",message:"applyOps accepts either `source` or `family`, not both"}}}let s;let d;if(typeof t==="string"&&t.trim().length>0){const u=v(t);if(!u.ok){const y=u.error[0];return{ok:false,family:null,error:{code:y?.code??"PARSE_ERROR",message:u.error.map(p=>p.message).join("; ")||"could not parse source"}}}s=u.value;d=s;if(!ee(s.kind)){return{ok:false,family:s.kind,error:{code:"INVALID_OP",message:`family "${s.kind}" has no structured ops; edit it as source text`}}}if(o.length===0){return{ok:false,family:s.kind,error:{code:"INVALID_OP",message:"`ops` must contain at least one op object"}}}}else if(typeof n==="string"){if(!ee(n)){return{ok:false,family:null,error:{code:"INVALID_OP",message:`unknown family "${n}"`}}}if(o.length===0){return{ok:false,family:n,error:{code:"INVALID_OP",message:"`ops` must contain at least one op object"}}}const u=Fa(n,o);if(!u.ok){const{opIndex:y,...p}=u.error;return{ok:false,family:n,opIndex:y>=0?y:void 0,error:p}}return Rn(u.value)}else{return{ok:false,family:null,error:{code:"INVALID_OP",message:"applyOps requires either `source` (to edit) or `family` (to build)"}}}if(r==="source-preserving"){let u=d,y=t;for(let p=0;p<o.length;p++){const b=hn(u,o[p]);if(!b.ok)return{ok:false,family:s.kind,opIndex:p,error:b.error};u=b.value.diagram;y=b.value.source}return Rn(u,d,y)}const m=je(s,o);if(!m.ok){const{opIndex:u,...y}=m.error;return{ok:false,family:s.kind,opIndex:u,error:y}}s=m.value;return Rn(s,d)}function bd(e,t){const n=Ae(e);if(n.checks?.sourceLoss==="detected")return{accepted:false,verification:n};if(n.ok)return{accepted:true,verification:n};const i=n.warnings.filter(r=>fe[r.code]==="error");if(t&&i.length>0&&i.every(r=>r.code==="INTERNAL_ERROR")){const r=o=>o.code==="INTERNAL_ERROR"?`${o.defaultRender}\0${o.reason}`:void 0;const a=new Set(Ae(t).warnings.map(r).filter(o=>o!==void 0));if(i.every(o=>a.has(r(o))))return{accepted:true,verification:n}}if(e.body.kind==="opaque"||e.body.kind==="preserved"||e.body.kind==="extension"||!O(e.kind)?.mutate||i.length===0||i.some(r=>r.code!=="EMPTY_DIAGRAM")){return{accepted:false,verification:n}}try{Et(F(e));return{accepted:true,verification:n}}catch(r){return{accepted:false,verification:{...n,warnings:[...n.warnings,Nt(r,()=>"fails")]}}}}function Rn(e,t,n){const{accepted:i,verification:r}=bd(e,t);const a=Na(r);if(!i){return{ok:false,family:e.kind,error:{code:"VERIFY_FAILED",message:"mutated diagram failed verify; source was not emitted",details:a.warnings}}}return{ok:true,family:e.kind,source:n??F(e),...n!==void 0?{mode:"source-preserving"}:{},verify:a}}function xd(e){if("elementId"in e)return $d(e);return kd(e)}function kd(e){if("family"in e)return Rd(e);return Sd(e)}function Sd(e){switch(e.invariant){case"straight":case"explained-detour":case"bundle":case"outer-feedback":case"feedback-detour":case"self-loop":case"container-attach":case"unverified-shape":return"edge-route";default:return Re(e)}}function Rd(e){switch(e.family){case"class":case"er":return Ed(e.invariant);case"architecture":return _d(e.invariant);case"zenuml":case"sequence":return Md(e.invariant);default:return Re(e)}}function Ed(e){switch(e){case"orthogonal-box":case"unverified-family-route":return"edge-route";default:return Re(e)}}function _d(e){switch(e){case"side-anchored":case"unverified-family-route":return"edge-route";default:return Re(e)}}function Md(e){switch(e){case"lifeline-message":case"self-message":case"unverified-family-route":return"edge-route";default:return Re(e)}}function $d(e){switch(e.family){case"timeline":case"xychart":case"pie":case"quadrant":case"gantt":return Od(e.invariant);default:return Re(e.family)}}function Od(e){switch(e){case"timeline-interval":case"plot-contained":case"legend-contained":case"section-contained":case"unverified-family-layout":return"region-containment";default:return Re(e)}}function Re(e){throw new Error(`Unhandled layout certificate variant: ${JSON.stringify(e)}`)}function Ge(e){const t=[];f(t,`family ${e.kind}`);if(e.meta.accessibility.title)f(t,`accessibility title ${c(e.meta.accessibility.title)}`);if(e.meta.accessibility.descr)f(t,`accessibility descr ${c(e.meta.accessibility.descr)}`);switch(e.body.kind){case"flowchart":{const n=e.body.graph;f(t,`direction ${n.direction}`);for(const r of n.nodes.values()){f(t,`node ${c(r.id)} : ${c(r.label||r.id)}`);f(t,`node ${c(r.id)} shape ${c(r.shape)}`)}const i=(r,a)=>{for(const o of r){f(t,`group ${c(o.id)} : ${c(o.label||o.id)}`);if(a)f(t,`group ${c(o.id)} parent ${c(a)}`);if(o.direction)f(t,`group ${c(o.id)} direction ${o.direction}`);for(const s of o.nodeIds)f(t,`group ${c(o.id)} contains ${c(s)}`);i(o.children,o.id)}};i(n.subgraphs);n.edges.forEach((r,a)=>{const o=`edge ${c(r.source)} -> ${c(r.target)}`;f(t,r.label?`${o} : ${c(r.label)}`:o);f(t,`edge#${a} ${c(r.source)} -> ${c(r.target)}${r.label?` : ${c(r.label)}`:""}`);if(r.style!=="solid")f(t,`${o} style ${r.style}`)});break}case"state":vd(t,e.body);break;case"sequence":Ad(t,e.body);break;case"timeline":Id(t,e.body);break;case"class":Pd(t,e.body);break;case"er":wd(t,e.body);break;case"journey":Ld(t,e.body);break;case"architecture":Td(t,e.body);break;case"xychart":Nd(t,e.body);break;case"pie":Vd(t,e.body);break;case"quadrant":Fd(t,e.body);break;case"gantt":Bd(t,e.body);break;case"mindmap":jd(t,e.body);break;case"gitgraph":qd(t,e.body);break;case"radar":{if(e.body.title!==void 0)f(t,`title ${c(e.body.title)}`);e.body.axes.forEach((n,i)=>f(t,`axis#${i} ${c(n.id)} : ${c(n.label)}`));e.body.curves.forEach((n,i)=>f(t,`curve#${i} ${c(n.id)} : ${c(n.label)} {${n.values.join(",")}}`));f(t,`scale ${e.body.min}..${e.body.max??"auto"} ticks ${e.body.ticks} graticule ${e.body.graticule}`);break}case"c4":{const n=e.body;const i=r=>/^[A-Za-z_][A-Za-z_0-9-]*$/.test(r)?r:JSON.stringify(r);f(t,`variant ${n.variant}`);if(n.title!==void 0)f(t,`title ${c(n.title)}`);for(const r of n.boundaries){f(t,`boundary ${i(r.id)} ${r.kind} : ${c(r.label)}`);if(r.parentId!==void 0)f(t,`boundary ${i(r.id)} parent ${i(r.parentId)}`);if(r.type!==void 0)f(t,`boundary ${i(r.id)} type ${c(r.type)}`);if(r.description!==void 0)f(t,`boundary ${i(r.id)} description ${c(r.description)}`)}for(const r of n.elements){f(t,`element ${i(r.id)} ${r.kind} ${r.external?"external":"internal"} ${r.shape} : ${c(r.label)}`);if(r.parentId!==void 0)f(t,`element ${i(r.id)} parent ${i(r.parentId)}`);if(r.technology!==void 0)f(t,`element ${i(r.id)} technology ${c(r.technology)}`);if(r.description!==void 0)f(t,`element ${i(r.id)} description ${c(r.description)}`)}for(const r of n.relationships){f(t,`interaction#${r.order} ${i(r.id)} ${i(r.source)} ${r.bidirectional?"<->":"->"} ${i(r.target)} : ${c(r.label)}`);f(t,`interaction#${r.order} macro ${r.macro} authored ${i(r.from)} -> ${i(r.to)}`);if(r.index!==void 0)f(t,`interaction#${r.order} index ${c(r.index)}`);if(r.technology!==void 0)f(t,`interaction#${r.order} technology ${c(r.technology)}`);if(r.description!==void 0)f(t,`interaction#${r.order} description ${c(r.description)}`);if(r.direction!==void 0)f(t,`interaction#${r.order} direction ${r.direction}`)}for(const r of[...n.elements,...n.boundaries,...n.relationships]){if(r.tags.length)f(t,`c4 ${i(r.id)} tags ${r.tags.map(i).join(",")}`);if(r.link!==void 0)f(t,`c4 ${i(r.id)} link ${JSON.stringify(r.link)}`);if(r.effectiveLink!==void 0)f(t,`c4 ${i(r.id)} effective link ${JSON.stringify(r.effectiveLink)}`);if(r.sprite!==void 0)f(t,`c4 ${i(r.id)} sprite ${JSON.stringify(r.sprite)}`);for(const a of Object.keys(r.style).sort())f(t,`c4 ${i(r.id)} style ${a} ${JSON.stringify(r.style[a])}`)}break}case"sankey":{e.body.links.forEach((n,i)=>f(t,`link#${i} ${c(n.source)} -> ${c(n.target)} : ${n.value}`));break}case"zenuml":{if(e.body.title!==void 0)f(t,`title ${JSON.stringify(e.body.title)}`);const n=be(e.body,{message:({message:i,kind:r,callAncestors:a,scopes:o})=>{f(t,`message#${c(i.id)} kind ${r}`);if(a.length)f(t,`message#${c(i.id)} call-parent ${c(a.at(-1))}`);for(const s of o)f(t,`message#${c(i.id)} fragment#${c(s.fragmentId)} branch#${s.branchIndex}`)},note:({note:i,callAncestors:r,scopes:a})=>{f(t,`note#${c(i.id)} ${i.position} ${i.actorIds.map(o=>JSON.stringify(o)).join(",")} after-index ${i.afterIndex} : ${c(X(L(i.text,i.textContent)))}`);if(r.length)f(t,`note#${c(i.id)} call-parent ${c(r.at(-1))}`);for(const o of a)f(t,`note#${c(i.id)} fragment#${c(o.fragmentId)} branch#${o.branchIndex}`)},fragment:({fragment:i,branches:r,callAncestors:a,scopes:o})=>{f(t,`fragment#${c(i.id)} kind ${i.type}`);if(a.length)f(t,`fragment#${c(i.id)} call-parent ${c(a.at(-1))}`);const s=o.at(-1);if(s)f(t,`fragment#${c(i.id)} parent ${c(s.fragmentId)} branch#${s.branchIndex}`);r.forEach((d,m)=>{const u=m===0?i.condition:d.condition;f(t,`fragment#${c(i.id)} branch#${m} ${d.kind}${u===void 0?"":` : ${c(u)}`}`)})}});for(const i of n.actors)if(!i.external){f(t,`participant ${c(i.id)} : ${c(i.label)}`);f(t,`participant ${c(i.id)} type ${i.type}`)}for(const i of n.actors)if(i.external)f(t,`external-endpoint ${c(i.id)}`);for(const i of n.messages){f(t,`message ${c(i.from)} -> ${c(i.to)} : ${c(i.label)}`);f(t,`message#${c(i.id)} ${c(i.from)} -> ${c(i.to)} : ${c(i.label)}${i.lineStyle==="dashed"?" reply":""}`);if(i.parentId)f(t,`message#${c(i.id)} parent ${c(i.parentId)}`)}for(const i of n.blocks)f(t,`fragment ${c(i.id)} ${i.type} : ${c(i.label)}`);break}case"eventmodeling":if(e.body.title!==void 0)f(t,`title ${JSON.stringify(e.body.title)}`);e.body.frames.forEach((n,i)=>f(t,`frame#${i} ${JSON.stringify(n)}`));xe(e.body).forEach(n=>f(t,`relation ${n.from} -> ${n.to} ${n.explicit?"explicit":"inferred"}`));Object.entries(e.body.data).forEach(([n,i])=>f(t,`data ${n} ${JSON.stringify(i)}`));e.body.notes.forEach(n=>f(t,`note ${JSON.stringify(n)}`));e.body.specifications.forEach(n=>f(t,`specification ${JSON.stringify(n)}`));break;case"packet":case"kanban":case"requirement":case"block":case"treemap":case"ishikawa":t.push(...Cr(e.body));break;case"opaque":{f(t,`opaque ${e.body.family}`);const n=O(e.kind);const i=(n?.extractLabels??Q)(e.body.source);i.forEach((r,a)=>f(t,`label#${a} ${c(r.target||"")} : ${c(r.text)}`));break}case"extension":{const n=O(e.kind);const i=(n?.extractLabels??Q)(e.body.source);i.forEach((r,a)=>f(t,`label#${a} ${c(r.target||"")} : ${c(r.text)}`));break}case"preserved":f(t,`preserved ${e.body.preservation.upstreamFamilyId??e.body.preservation.header}`);break;default:{const n=e.body;void n}}return Array.from(new Set(t)).sort()}function Cd(e){const t=v(e);return t.ok?q(Ge(t.value)):E(t.error)}function ja(e,t){const n=Ge(e);const i=new Set(n);const r=Wd(t);const a=Gd(t);const o=r.filter(d=>!i.has(d));let s=a.filter(d=>i.has(d));if(_n(t)&&t.exact){const d=new Set(r);s=[...s,...n.filter(m=>!d.has(m))]}s=Array.from(new Set(s)).sort();return{ok:o.length===0&&s.length===0,missing:o,unexpected:s,facts:n}}function Dd(e,t){const n=v(e);return n.ok?q(ja(n.value,t)):E(n.error)}function vd(e,t){if(t.direction)f(e,`direction ${t.direction}`);const n=(i,r,a)=>{for(const o of i){f(e,`state ${c(o.id)}`);if(o.label)f(e,`state ${c(o.id)} : ${c(o.label)}`);if(o.stereotype)f(e,`state ${c(o.id)} stereotype ${c(o.stereotype)}`);if(a)f(e,`state ${c(o.id)} parent ${c(a)}`);if(o.states!==void 0||o.regions!==void 0){f(e,`composite ${c(o.id)}`);if(o.direction)f(e,`state ${c(o.id)} direction ${o.direction}`);if(o.regions)o.regions.forEach((s,d)=>{f(e,`state ${c(o.id)} region ${d}`);n(s.states,s.transitions,o.id)});else n(o.states??[],o.transitions??[],o.id)}if(o.className)f(e,`state ${c(o.id)} class ${c(o.className)}`);if(o.style)f(e,`state ${c(o.id)} styled`)}for(const o of r)f(e,En(o.from,o.to,o.label))};n(t.states,t.transitions);for(const[i,r]of(t.notes??[]).entries()){f(e,`note#${i} ${r.side} of ${c(r.target)} : ${c(r.text)}`)}for(const i of t.floatingNotes??[]){f(e,`floating note ${c(i.id)}${i.scope?` in ${c(i.scope.parent)}${i.scope.region!==void 0?` region ${i.scope.region}`:""}`:""} : ${c(i.text)}`)}}function Ad(e,t){t.participants.forEach((i,r)=>{f(e,`${i.kind} ${c(i.id)} : ${c(i.label||i.id)}`);f(e,`participant#${r} ${c(i.id)} : ${c(i.label||i.id)}`);if(i.wrap!==void 0)f(e,`participant#${r} wrap ${i.wrap}`)});ct(t).forEach((i,r)=>{const a=i.message;f(e,`message ${c(a.from)} -> ${c(a.to)} : ${c(a.text)}`);f(e,`message#${r} ${i.scope==="top-level"?"top-level":`fragment#${i.fragmentIndex} branch#${i.branchIndex}`} ${c(a.from)} -> ${c(a.to)} : ${c(a.text)}`);if(a.style!=="sync")f(e,`message#${r} style ${a.style}`);if(a.wrap!==void 0)f(e,`message#${r} wrap ${a.wrap}`)});t.statements.forEach((i,r)=>{if(i.kind!=="opaque-block")return;nr(i.lines).statements.forEach((a,o)=>{const s=a.syntax;if(s?.kind==="message"){const d=s.message;const m=c(Le(d.label).value);f(e,`message ${c(d.from)} -> ${c(d.to)} : ${m}`);f(e,`preserved-message#${r}.${o} ${c(d.from)} -> ${c(d.to)} : ${m}`)}else if(s?.kind==="title")f(e,`title ${c(Le(s.text).value)}`)})});const n=t.statements.filter(i=>i.kind==="fragment");n.forEach((i,r)=>{if(i.kind!=="fragment")return;f(e,`fragment#${r} ${i.fragment.fragmentKind}`);if(i.fragment.wrap!==void 0)f(e,`fragment#${r} wrap ${i.fragment.wrap}`);i.fragment.branches.forEach((a,o)=>{const s=a.label??(o===0?i.fragment.label:void 0);f(e,`fragment#${r} branch#${o}${s?` : ${c(s)}`:""}`);if(a.wrap!==void 0)f(e,`fragment#${r} branch#${o} wrap ${a.wrap}`)})})}function Id(e,t){if(t.title)f(e,`title ${c(t.title)}`);t.sections.forEach((n,i)=>{if(n.label)f(e,`section ${c(n.label)}`);n.periods.forEach((r,a)=>{f(e,`period ${c(r.label)}`);if(n.label)f(e,`period ${c(r.label)} section ${c(n.label)}`);r.events.forEach((o,s)=>{f(e,`event ${c(r.label)} : ${c(o.text)}`);f(e,`event#${i}.${a}.${s} ${c(r.label)} : ${c(o.text)}`)})})})}function Pd(e,t){if(t.title)f(e,`title ${c(t.title)}`);for(const n of t.namespaces??[]){f(e,`namespace ${c(n.name)}${n.label?` : ${c(n.label)}`:""}`)}for(const n of t.classes){if(n.isInterface){f(e,`interface ${c(n.id)} : ${c(n.label??n.id)}`);continue}f(e,`class ${c(n.id)}`);if(n.generic)f(e,`class ${c(n.id)} generic ${c(n.generic)}`);if(n.label)f(e,`class ${c(n.id)} : ${c(n.label)}`);if(n.namespace)f(e,`class ${c(n.id)} in namespace ${c(n.namespace)}`);for(const i of n.members)f(e,`member ${c(n.id)} ${c(i)}`)}t.relations.forEach((n,i)=>{const r=`${n.fromCardinality?` ${c(n.fromCardinality)}`:""}${n.toCardinality?` ${c(n.toCardinality)}`:""}`;f(e,`relation ${c(n.from)} ${n.kind} ${c(n.to)}${n.label?` : ${c(n.label)}`:""}`);f(e,`relation#${i} ${c(n.from)} ${n.kind} ${c(n.to)}${r}${n.label?` : ${c(n.label)}`:""}`);const a=Wr(n);f(e,`relation#${i} ${c(n.from)} ${n.kind} ${c(n.to)} marker ${a.at}`);f(e,`relation#${i} ${c(n.from)} ${n.kind} ${c(n.to)} line ${Gr(n)}`);if(a.at==="both"){f(e,`relation#${i} from marker ${a.from}`);f(e,`relation#${i} to marker ${a.to}`)}});t.notes.forEach((n,i)=>f(e,`note#${i}${n.for?` ${c(n.for)}`:""} : ${c(n.text)}`))}function wd(e,t){if(t.direction)f(e,`direction ${t.direction}`);for(const n of t.groups??[])f(e,`er group ${c(n.id)} label ${c(n.label)}${n.parentId?` parent ${c(n.parentId)}`:""}${n.direction?` direction ${n.direction}`:""}`);for(const n of t.entities){f(e,`entity ${c(n.id)}${n.label?` label ${c(n.label)}`:""}${n.groupId?` group ${c(n.groupId)}`:""}`);if(n.className)f(e,`entity ${c(n.id)} class ${c(n.className)}`);if(n.style)f(e,`entity ${c(n.id)} styled`);for(const i of n.attributes)f(e,`attribute ${c(n.id)} ${c(i.text)}`)}t.relations.forEach((n,i)=>{const r=`relation ${c(n.from)} ${n.leftCard} ${n.dashed?"..":"--"} ${n.rightCard} ${c(n.to)}${n.label?` : ${c(n.label)}`:""}`;f(e,r);f(e,`relation#${i} ${r.slice("relation ".length)}`)})}function Ld(e,t){const n=(a,o)=>c(X(L(a,o)));if(t.title)f(e,`title ${n(t.title,t.titleContent)}`);t.sections.forEach((a,o)=>{if(a.label)f(e,`section ${n(a.label,a.labelContent)}`);a.tasks.forEach((s,d)=>{const m=s.actors.length?` actors ${s.actors.map((u,y)=>n(u,s.actorContents?.[y])).join(", ")}`:"";f(e,`journey task ${n(s.text,s.textContent)} score ${String(s.score)}${m}`);f(e,`journey task#${o}.${d} ${n(s.text,s.textContent)} score ${String(s.score)}${m}`);if(a.label)f(e,`journey task ${n(s.text,s.textContent)} section ${n(a.label,a.labelContent)}`)})});const i=t.sections.flatMap(a=>a.tasks);f(e,`journey sections ${t.sections.length}`);f(e,`journey tasks ${i.length}`);const r=new Map;for(const a of i)for(const[o,s]of a.actors.entries()){const d=dt(s,a.actorContents?.[o]);r.set(d,{actor:n(s,a.actorContents?.[o]),count:(r.get(d)?.count??0)+1})}f(e,`journey actors ${r.size}`);if(i.length>0){const a=i.map(m=>m.score);const o=Math.min(...a);const s=Math.max(...a);const d=Math.round(a.reduce((m,u)=>m+u,0)/a.length*100)/100;f(e,`journey score range ${o}..${s}`);f(e,`journey average score ${te(d)}`);for(const m of i){if(m.score===o)f(e,`journey lowest task ${n(m.text,m.textContent)} score ${String(m.score)}`);if(m.score===s)f(e,`journey highest task ${n(m.text,m.textContent)} score ${String(m.score)}`)}}for(const{actor:a,count:o}of r.values())f(e,`journey actor ${a} tasks ${o}`)}function Td(e,t){if(t.title)f(e,`title ${c(t.title)}`);if(t.accessibilityTitle)f(e,`accessibility title ${c(t.accessibilityTitle)}`);if(t.accessibilityDescription)f(e,`accessibility description ${c(t.accessibilityDescription)}`);for(const n of t.groups){f(e,`group ${c(n.id)} : ${c(n.label||n.id)}`);if(n.icon)f(e,`group ${c(n.id)} icon ${c(n.icon)}`);if(n.parentId)f(e,`group ${c(n.id)} parent ${c(n.parentId)}`)}for(const n of t.services){f(e,`service ${c(n.id)} : ${c(n.label||n.id)}`);if(n.icon)f(e,`service ${c(n.id)} icon ${c(n.icon)}`);if(n.parentId)f(e,`service ${c(n.id)} parent ${c(n.parentId)}`)}for(const n of t.junctions){f(e,`junction ${c(n.id)}`);if(n.parentId)f(e,`junction ${c(n.id)} parent ${c(n.parentId)}`)}t.edges.forEach((n,i)=>{const r=`${c(n.source.id)}${n.source.boundary==="group"?"{group}":""}:${n.source.side}`;const a=`${c(n.target.id)}${n.target.boundary==="group"?"{group}":""}:${n.target.side}`;const o=`edge ${r} -> ${a}`;f(e,n.label?`${o} : ${c(n.label)}`:o);f(e,`edge#${i} ${r} -> ${a}${n.label?` : ${c(n.label)}`:""}`)})}function Nd(e,t){if(t.title)f(e,`title ${c(de(t.title))}`);if(t.horizontal)f(e,"orientation horizontal");Ba(e,"x-axis",t.xAxis);Ba(e,"y-axis",t.yAxis);t.series.forEach((n,i)=>{const r=n.name?c(de(n.name)):`series#${i}`;f(e,`series ${r} ${n.kind} [${n.values.map(te).join(",")}]`);f(e,`series#${i} ${n.kind} ${r} [${n.values.map(te).join(",")}]`);n.pointLabels?.forEach((a,o)=>{if(a!==void 0)f(e,`series#${i} point#${o} : ${c(a)}`)})})}function Vd(e,t){if(t.title)f(e,`title ${c(de(t.title))}`);if(t.showData)f(e,"showData true");t.slices.forEach((n,i)=>{f(e,`slice ${c(de(n.label))} = ${te(n.value)}`);f(e,`slice#${i} ${c(de(n.label))} = ${te(n.value)}`)})}function Fd(e,t){if(t.title)f(e,`title ${c(de(t.title))}`);if(t.xAxis)f(e,`x-axis ${c(t.xAxis.near)}${t.xAxis.far?` -> ${c(t.xAxis.far)}`:""}`);if(t.yAxis)f(e,`y-axis ${c(t.yAxis.near)}${t.yAxis.far?` -> ${c(t.yAxis.far)}`:""}`);t.quadrants.forEach((n,i)=>{if(n)f(e,`quadrant ${i+1} : ${c(n)}`)});t.points.forEach((n,i)=>{f(e,`point ${c(de(n.label))} @ ${te(n.x)},${te(n.y)}`);f(e,`point#${i} ${c(de(n.label))} @ ${te(n.x)},${te(n.y)}`)})}function Bd(e,t){if(t.title)f(e,`title ${c(t.title)}`);t.sections.forEach((n,i)=>{if(n.label)f(e,`section ${c(n.label)}`);n.tasks.forEach((r,a)=>{f(e,`task ${c(r.label)}`);f(e,`task#${i}.${a} ${c(r.label)}`);if(r.taskId)f(e,`task ${c(r.label)} id ${c(r.taskId)}`);if(n.label)f(e,`task ${c(r.label)} section ${c(n.label)}`);for(const o of r.tags)f(e,`task ${c(r.label)} tag ${o}`);if(r.start)f(e,`task ${c(r.label)} start ${c(r.start)}`);f(e,`task ${c(r.label)} end ${c(r.end)}`)})})}function jd(e,t){const n=(i,r)=>{f(e,`node ${c(i.id)} : ${c(i.label)}`);f(e,`node ${c(i.id)} shape ${i.shape}`);if(r)f(e,En(r,i.id));if(i.icon)f(e,`node ${c(i.id)} icon ${c(i.icon)}`);if(i.className)f(e,`node ${c(i.id)} class ${c(i.className)}`);i.children.forEach(a=>n(a,i.id))};n(t.root)}function qd(e,t){f(e,`direction ${t.direction}`);for(const n of t.branches){f(e,`branch ${c(n.name)} order ${n.order}`);if(n.head)f(e,`branch ${c(n.name)} head ${c(n.head)}`)}for(const n of t.commits){f(e,`commit ${c(n.id)} branch ${c(n.branch)}`);f(e,`commit ${c(n.id)} type ${n.type}`);if(n.sourceId)f(e,`commit ${c(n.id)} source-id ${c(n.sourceId)}`);if(n.message)f(e,`commit ${c(n.id)} message ${c(n.message)}`);n.tags.forEach(i=>f(e,`commit ${c(n.id)} tag ${c(i)}`));n.parents.forEach(i=>f(e,En(i,n.id,n.source==="commit"?void 0:n.source)))}}function Ba(e,t,n){if(!n)return;if(n.name)f(e,`${t} name ${c(de(n.name))}`);if(n.categories)f(e,`${t} categories ${n.categories.map(i=>c(de(i))).join(", ")}`);if(n.range)f(e,`${t} range ${te(n.range.min)} -> ${te(n.range.max)}`)}function En(e,t,n){return`edge ${c(e)} -> ${c(t)}${n?` : ${c(n)}`:""}`}function f(e,t){e.push(t.replace(/\s+$/g,""))}function c(e){return String(e??"").trim().replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/\n/g,"\\n").replace(/\t/g,"\\t")}function de(e){return e.replace(/^"(.*)"$/,"$1")}function te(e){return Number.isInteger(e)?String(e):String(Number(e.toPrecision(12)))}function se(e){if(!Array.isArray(e))return[];return e.map(t=>typeof t==="string"?t:String(t))}function Wd(e){if(Array.isArray(e))return se(e);if(!_n(e))return[];return qa([...se(e.include),...se(e.expected),...se(e.require),...se(e.required)])}function Gd(e){if(!_n(e))return[];return qa([...se(e.exclude),...se(e.absent),...se(e.forbid),...se(e.forbidden),...se(e.unexpected)])}function _n(e){return e!==null&&typeof e==="object"&&!Array.isArray(e)}function qa(e){return Array.from(new Set(e))}var Ud=["text","json","facts"];function Tp(e){return Ud.includes(e)}function Hd(e,t={}){const n=v(e);if(!n.ok){const i=Array.isArray(n.error)?n.error[0]:void 0;if(t.format==="json"){return JSON.stringify({error:i?.message??"parse error",nodes:[],edges:[]})}if(t.format==="facts")return`error parse ${i?.message??"parse error"}`;return`Unparseable Mermaid source: ${i?.message??"parse error"}.`}return Ga(n.value,t)}function Ga(e,t={}){if(t.format==="json")return JSON.stringify(Ua(e));if(t.format==="facts")return Ge(e).join("\n");if(e.body.kind==="flowchart")return Kd(e);if(e.body.kind==="state")return Xd(e.body);if(e.body.kind==="sequence")return Jd(e);if(e.body.kind==="timeline")return Qd(e);if(e.body.kind==="class")return ic(e);if(e.body.kind==="er")return ac(e);if(e.body.kind==="journey")return Zd(e.body);if(e.body.kind==="architecture")return ec(e.body);if(e.body.kind==="xychart")return tc(e.body);if(e.body.kind==="gantt")return oc(e);if(e.body.kind==="pie")return nc(e.body);if(e.body.kind==="quadrant")return rc(e.body);if(e.body.kind==="mindmap")return Yd(e.body);if(e.body.kind==="gitgraph")return zd(e.body);if(e.body.kind==="radar"){const i=e.body.axes.map(o=>o.label).join(", ");const r=e.body.curves.map(o=>o.label).join(", ");const a=e.body.title?`"${e.body.title}" `:"";return`A radar chart ${a}comparing ${e.body.curves.length} curve(s)${r?` (${r})`:""} across ${e.body.axes.length} axis/axes${i?` (${i})`:""}.`}if(e.body.kind==="c4")return`A ${e.body.variant} architecture diagram${e.body.title?` "${e.body.title}"`:""} with ${e.body.elements.length} element(s), ${e.body.boundaries.length} boundary/boundaries and ${e.body.relationships.length} interaction(s).`;if(e.body.kind==="sankey"){const i=new Set;for(const a of e.body.links){i.add(a.source);i.add(a.target)}const r=e.body.links.reduce((a,o)=>a+o.value,0);return`A sankey diagram flowing ${r} across ${e.body.links.length} link(s) between ${i.size} node(s).`}if(e.body.kind==="zenuml"){const i=be(e.body);return`A ZenUML interaction${i.title===void 0?"":` titled ${JSON.stringify(i.title)}`} with ${i.actors.filter(r=>!r.external).length} participants, ${i.messages.length} messages and ${i.blocks.length} control scopes.`}if(e.body.kind==="eventmodeling")return`An Event Modeling diagram with ${e.body.frames.length} frames and ${xe(e.body).length} relations.`;if(zt(e.body)){const i=st(e.body);return`A ${e.kind} diagram with ${i.nodes} item(s), ${i.groups} group(s) and ${i.edges} relationship(s).`}if(e.body.kind==="opaque")return Wa(e.kind,e.body.source);if(e.body.kind==="extension")return Wa(e.kind,e.body.source);if(e.body.kind==="preserved")return`An unregistered ${e.body.preservation.upstreamFamilyId??e.body.preservation.header} diagram preserved as source. ${e.body.diagnostic.message}`;const n=e.body;void n;return`A ${e.kind} diagram.`}function Ua(e){const t={kind:e.kind,nodes:[],edges:[],entryPoints:[],sinks:[]};if(e.body.kind==="flowchart"){const r=e.body.graph;for(const a of r.nodes.values())t.nodes.push({id:a.id,label:a.label||a.id});for(const a of r.edges)t.edges.push({from:a.source,to:a.target,label:a.label||void 0})}else if(e.body.kind==="state"){const r=(a,o)=>{for(const s of a){t.nodes.push({id:s.id,label:s.label||s.id});if(s.regions)for(const d of s.regions)r(d.states,d.transitions);else if(s.states!==void 0)r(s.states,s.transitions??[])}for(const s of o)t.edges.push({from:s.from,to:s.to,label:s.label||void 0})};r(e.body.states,e.body.transitions)}else if(e.body.kind==="sequence"){for(const r of e.body.participants)t.nodes.push({id:r.id,label:r.label||r.id});ct(e.body).forEach(r=>{const a=r.message;t.edges.push({from:a.from,to:a.to,label:a.text||void 0,...r.scope==="fragment"?{sequence:{fragmentIndex:r.fragmentIndex,branchIndex:r.branchIndex,fragmentKind:r.fragmentKind,...r.branchLabel??(r.branchIndex===0?r.fragmentLabel:void 0)?{branchLabel:r.branchLabel??r.fragmentLabel}:{}}}:{}})})}else if(e.body.kind==="class"){for(const r of e.body.classes)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.relations)t.edges.push({from:r.from,to:r.to,label:r.label||r.kind})}else if(e.body.kind==="er"){for(const r of e.body.entities)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.relations)t.edges.push({from:r.from,to:r.to,label:r.label||void 0})}else if(e.body.kind==="timeline"){for(const r of e.body.sections)for(const a of r.periods){t.nodes.push({id:a.id,label:a.label})}}else if(e.body.kind==="journey"){for(const r of e.body.sections)for(const a of r.tasks){const o=a.actors.length?`; ${a.actors.map((s,d)=>X(L(s,a.actorContents?.[d]))).join(", ")}`:"";t.nodes.push({id:a.id,label:`${X(L(a.text,a.textContent))} (score ${a.score}${o})`})}}else if(e.body.kind==="architecture"){for(const r of e.body.groups)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.services)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.junctions)t.nodes.push({id:r.id,label:r.id});for(const r of e.body.edges)t.edges.push({from:r.source.id,to:r.target.id,label:r.label||void 0})}else if(e.body.kind==="xychart"){for(const r of e.body.series)t.nodes.push({id:r.id,label:r.name||`${r.kind} series`})}else if(e.body.kind==="gantt"){for(const a of e.body.sections)for(const o of a.tasks){t.nodes.push({id:o.taskId??o.id,label:o.label})}const r=new Map;for(const a of e.body.sections)for(const o of a.tasks)if(o.taskId)r.set(o.taskId,o.taskId);for(const a of e.body.sections)for(const o of a.tasks){for(const[s,d]of[[o.start,"after"],[o.end,"until"]]){const m=s?.match(/^(?:after|until)\s+(.+)$/);if(!m||!s.startsWith(d))continue;for(const u of m[1].split(/\s+/).filter(Boolean)){if(r.has(u))t.edges.push({from:u,to:o.taskId??o.id,label:d})}}}}else if(e.body.kind==="pie"){for(const r of e.body.slices)t.nodes.push({id:r.id,label:`${r.label} (${r.value})`})}else if(e.body.kind==="quadrant"){e.body.points.forEach((r,a)=>t.nodes.push({id:`point-${a}`,label:`${r.label} [${r.x}, ${r.y}]`}))}else if(e.body.kind==="mindmap"){const r=(a,o)=>{t.nodes.push({id:a.id,label:a.label});if(o)t.edges.push({from:o,to:a.id});a.children.forEach(s=>r(s,a.id))};r(e.body.root)}else if(e.body.kind==="gitgraph"){for(const r of e.body.commits){t.nodes.push({id:r.id,label:r.message||r.sourceId||r.id});r.parents.forEach(a=>t.edges.push({from:a,to:r.id,label:r.source==="commit"?void 0:r.source}))}}else if(e.body.kind==="radar"){e.body.axes.forEach((r,a)=>t.nodes.push({id:`axis-${a}`,label:r.label}));e.body.curves.forEach((r,a)=>t.nodes.push({id:`curve-${a}`,label:r.label}))}else if(e.body.kind==="c4"){for(const r of e.body.boundaries)t.nodes.push({id:r.id,label:vi(r),c4:{category:"boundary",kind:r.kind,...r.parentId===void 0?{}:{parentId:r.parentId}}});for(const r of e.body.elements)t.nodes.push({id:r.id,label:Di(r),c4:{category:"element",kind:r.kind,external:r.external,shape:r.shape,effectiveShape:Zn(r),...r.parentId===void 0?{}:{parentId:r.parentId}}});for(const r of e.body.relationships){const{id:a,order:o,index:s,macro:d,direction:m,bidirectional:u,reversed:y}=r;t.edges.push({from:r.source,to:r.target,label:Ai(e.body,r),c4:{id:a,order:o,macro:d,bidirectional:u,reversed:y,authoredFrom:r.from,authoredTo:r.to,...s===void 0?{}:{index:s},...m===void 0?{}:{direction:m}}})}}else if(e.body.kind==="sankey"){const r=new Set;for(const a of e.body.links){for(const o of[a.source,a.target]){if(r.has(o))continue;r.add(o);t.nodes.push({id:o,label:o})}t.edges.push({from:a.source,to:a.target,label:String(a.value)})}}else if(e.body.kind==="zenuml"){const r=[];const a=be(e.body,{message:({message:o,kind:s,sourceId:d,callAncestors:m,scopes:u})=>{t.edges.push({from:o.from,to:o.to,label:o.label,zenuml:{id:o.id,kind:s,sourceId:d,callAncestors:m,scopes:u}})},note:({note:o,sourceId:s,callAncestors:d,scopes:m})=>{r.push({id:o.id,label:X(L(o.text,o.textContent)),...o.parentId?{parentId:o.parentId}:{},zenuml:{kind:"note",sourceId:s,actorIds:o.actorIds,position:o.position,afterIndex:o.afterIndex,callAncestors:d,scopes:m}})}});if(a.title!==void 0)t.title=a.title;t.nodes.push(...a.actors.map(o=>({id:o.id,label:o.external?"External caller":o.label,...o.external?{external:true}:{zenuml:{kind:"participant",type:o.type}}})),...r)}else if(e.body.kind==="eventmodeling"){const r=ot(e.body);t.nodes.push(...r.map(a=>({id:a.id,label:a.label})));t.nodes.push(...e.body.frames.map(a=>({id:a.id,label:a.entity,parentId:r.find(o=>o.members.includes(a.id)).id})));t.edges.push(...xe(e.body))}else if(zt(e.body)){const r=Or(e.body);t.nodes.push(...r.nodes);t.edges.push(...r.edges)}else if(e.body.kind==="opaque"){const r=O(e.kind);const a=(r?.extractLabels??Q)(e.body.source);a.forEach((o,s)=>t.nodes.push({id:o.target||`label-${s}`,label:o.text}))}else if(e.body.kind==="extension"){const r=O(e.kind);const a=(r?.extractLabels??Q)(e.body.source);a.forEach((o,s)=>t.nodes.push({id:o.target||`label-${s}`,label:o.text}))}else if(e.body.kind==="preserved"){}else{const r=e.body;void r}const n=new Set(t.edges.map(r=>r.to));const i=new Set(t.edges.map(r=>r.from));for(const r of t.edges)if(r.c4?.bidirectional){n.add(r.from);i.add(r.to)}for(const r of t.nodes){if(!n.has(r.id)&&i.has(r.id))t.entryPoints.push(r.id);if(!i.has(r.id)&&n.has(r.id))t.sinks.push(r.id)}return t}function Yd(e){let t=0;let n=0;const i=e.root.children.map(a=>a.label);const r=a=>{t++;if(a.children.length===0)n++;a.children.forEach(r)};r(e.root);return`A ${t}-node mindmap rooted at ${e.root.label}, with ${n} leaves.${i.length?` Main branches: ${i.join(", ")}.`:""}`}function zd(e){const t=e.commits.filter(i=>i.source==="merge").length;const n=e.commits.filter(i=>i.source==="cherry-pick").length;return`A GitGraph with ${e.commits.length} commits across ${e.branches.length} branches, including ${t} merges and ${n} cherry-picks. Branches: ${e.branches.map(i=>i.name).join(", ")}.`}function Kd(e){const t=e.body.graph;const n=Array.from(t.nodes.values());const i=n.map(p=>p.id);const r=t.edges;const a=n.map(p=>p.label||p.id);const o=new Map;const s=new Map;for(const p of i){o.set(p,0);s.set(p,0)}for(const p of r){s.set(p.source,(s.get(p.source)??0)+1);o.set(p.target,(o.get(p.target)??0)+1)}const d=i.filter(p=>(o.get(p)??0)===0&&(s.get(p)??0)>0);const m=i.filter(p=>(s.get(p)??0)===0&&(o.get(p)??0)>0);const u=r.map(p=>{const b=p.label?` (${p.label})`:"";return`${p.source} -> ${p.target}${b}`});let y=`A ${n.length}-node flowchart with ${r.length} edges. Nodes: ${a.join(", ")}.`;if(u.length>0)y+=` Edges: ${u.join("; ")}.`;if(d.length>0)y+=` Entry points: ${d.join(", ")}.`;if(m.length>0)y+=` Sinks: ${m.join(", ")}.`;return y}function Xd(e){const t=[];const n=[];const i=(u,y)=>{for(const p of u){t.push(p);if(p.regions)for(const b of p.regions)i(b.states,b.transitions);else if(p.states!==void 0)i(p.states,p.transitions??[])}n.push(...y)};i(e.states,e.transitions);const r=t.filter(u=>u.states!==void 0||u.regions!==void 0);const a=t.map(u=>u.label||u.id);const o=n.map(u=>{const y=u.label?` (${u.label})`:"";return`${u.from} -> ${u.to}${y}`});const s=e.transitions.filter(u=>u.from==="[*]").map(u=>u.to);let d=`A state diagram with ${t.length} states and ${n.length} transitions.`;if(r.length>0)d+=` Composite states: ${r.map(u=>u.label||u.id).join(", ")}.`;if(a.length>0)d+=` States: ${a.join(", ")}.`;const m=t.filter(u=>u.stereotype).map(u=>`${u.label||u.id} (${u.stereotype})`);if(m.length>0)d+=` Pseudostates: ${m.join(", ")}.`;if((e.notes??[]).length>0){d+=` Notes: ${e.notes.map(u=>`${u.side} of ${u.target}: ${u.text}`).join("; ")}.`}if(e.floatingNotes?.length)d+=` Floating notes: ${e.floatingNotes.map(u=>`${u.id}${u.scope?` in ${u.scope.parent}${u.scope.region!==void 0?` region ${u.scope.region}`:""}`:""}: ${u.text}`).join("; ")}.`;if(o.length>0)d+=` Transitions: ${o.join("; ")}.`;if(s.length>0)d+=` Initial: ${s.join(", ")}.`;return d}function Jd(e){const t=e.body.participants;const n=t.map(o=>o.label||o.id).join(", ");let i=`A sequence diagram between ${n||"(no participants)"}.`;const r=[];let a=0;for(const o of e.body.statements){if(o.kind==="message"){const d=e.body.messages[o.ref];if(d)r.push(`message ${d.from} -> ${d.to}: ${d.text}`);continue}if(o.kind!=="fragment")continue;const s=o.fragment.branches.map((d,m)=>{const u=d.label??(m===0?o.fragment.label:void 0);const y=d.messages.map(p=>`${p.from} -> ${p.to}: ${p.text}`).join("; ")||"no messages";return`branch ${m}${u?` (${u})`:""}: ${y}`});r.push(`fragment ${a} (${o.fragment.fragmentKind}): ${s.join(" | ")}`);a++}if(r.length>0)i+=` Interactions in source order: ${r.join("; ")}.`;return i}function Qd(e){const t=e.body.sections;const n=t.map(a=>a.label||a.id);const i=[];for(const a of t)for(const o of a.periods)i.push(o.label);let r=`A timeline with ${t.length} sections.`;if(n.length>0)r+=` Sections: ${n.join(", ")}.`;if(i.length>0)r+=` Periods: ${i.join(", ")}.`;return r}function Zd(e){const t=e.sections;const n=t.reduce((s,d)=>s+d.tasks.length,0);const i=new Map(t.flatMap(s=>s.tasks.flatMap(d=>d.actors.map((m,u)=>[dt(m,d.actorContents?.[u]),X(L(m,d.actorContents?.[u]))]))));let r=`A user journey${e.title?` titled "${X(L(e.title,e.titleContent))}"`:""} with ${t.length} sections and ${n} tasks.`;const a=t.flatMap(s=>s.label===void 0?[]:[X(L(s.label,s.labelContent))]);if(a.length>0)r+=` Sections: ${a.join(", ")}.`;const o=t.flatMap(s=>s.tasks.map(d=>`${X(L(d.text,d.textContent))} (${d.score})`));if(o.length>0)r+=` Tasks: ${o.join(", ")}.`;if(i.size>0)r+=` Actors: ${[...i.values()].join(", ")}.`;return r}function ec(e){const t=e.groups;const n=e.services;const i=e.junctions;const r=e.edges;let a=`An architecture diagram${e.title?` titled "${e.title}"`:""} with ${t.length} groups, ${n.length} services, and ${r.length} connections.`;if(e.accessibilityTitle)a+=` Accessible title: ${e.accessibilityTitle}.`;if(e.accessibilityDescription)a+=` Accessible description: ${e.accessibilityDescription.replace(/\n/g," ")}.`;if(t.length>0)a+=` Groups: ${t.map(s=>s.label||s.id).join(", ")}.`;if(n.length>0)a+=` Services: ${n.map(s=>s.label||s.id).join(", ")}.`;if(i.length>0)a+=` Junctions: ${i.map(s=>s.id).join(", ")}.`;const o=r.map(s=>`${s.source.id} -> ${s.target.id}${s.label?` (${s.label})`:""}`);if(o.length>0)a+=` Connections: ${o.join("; ")}.`;return a}function tc(e){const t=e.series;const n=e.horizontal?"horizontal ":"";let i=`An ${n}XY chart${e.title?` titled "${e.title}"`:""} with ${t.length} series.`;const r=(s,d)=>{if(!d)return void 0;const m=[];if(d.name!==void 0)m.push(`"${d.name}"`);if(d.categories)m.push(`categories ${d.categories.join(", ")}`);if(d.range)m.push(`range ${d.range.min}\u2013${d.range.max}`);return m.length>0?`${s}: ${m.join(", ")}`:void 0};const a=[r("x-axis",e.xAxis),r("y-axis",e.yAxis)].filter(s=>s!==void 0);if(a.length>0)i+=` Axes \u2014 ${a.join("; ")}.`;const o=t.map(s=>`${s.kind}${s.name?` ${s.name}`:""} [${s.values.join(", ")}]`);if(o.length>0)i+=` Series: ${o.join("; ")}.`;return i}function nc(e){let t=`A pie chart${e.title?` titled "${e.title}"`:""} with ${e.slices.length} slices.`;const n=e.slices.map(i=>`${i.label} (${i.value})`);if(n.length>0)t+=` Slices: ${n.join(", ")}.`;return t}function rc(e){let t=`A quadrant chart${e.title?` titled "${e.title}"`:""} with ${e.points.length} points.`;const n=e.quadrants.filter(r=>Boolean(r));if(n.length>0)t+=` Quadrants: ${n.join(", ")}.`;const i=e.points.map(r=>`${r.label} [${r.x}, ${r.y}]`);if(i.length>0)t+=` Points: ${i.join(", ")}.`;return t}function ic(e){const t=e.body.classes.filter(d=>!d.isInterface);const n=e.body.classes.filter(d=>d.isInterface);const i=e.body.relations;const r=t.map(d=>d.generic?`${d.id}<${d.generic}>`:d.id);const a=i.map(d=>`${d.from} ${d.kind} ${d.to}`);let o=`A class diagram with ${t.length} classes.`;if(r.length>0)o+=` Classes: ${r.join(", ")}.`;if(n.length>0)o+=` Interfaces: ${n.map(d=>d.label??d.id).join(", ")}.`;const s=e.body.namespaces??[];if(s.length>0){const d=s.map(m=>{const u=t.filter(y=>y.namespace===m.name).map(y=>y.id);return`${m.name} [${u.join(", ")}]`});o+=` Namespaces: ${d.join("; ")}.`}if(a.length>0)o+=` Relations: ${a.join("; ")}.`;return o}function ac(e){const t=e.body.entities;const n=e.body.relations;const i=t.map(o=>o.label?`${o.id} ("${o.label}")`:o.id);const r=n.map(o=>{const s=o.label?` (${o.label})`:"";return`${o.from} ${o.leftCard}-${o.rightCard} ${o.to}${s}`});let a=`An ER diagram with ${t.length} entities.`;if(i.length>0)a+=` Entities: ${i.join(", ")}.`;if(r.length>0)a+=` Relations: ${r.join("; ")}.`;return a}function oc(e){const t=e.body;const n=t.sections.flatMap(o=>o.tasks);let i=`A Gantt chart${t.title?` titled "${t.title}"`:""} with ${t.sections.filter(o=>o.label!==void 0).length} sections and ${n.length} tasks.`;try{const o=$e(le(et(e.canonicalSource)));if(o.tasks.length>0){const s=o.dateOnly?"%Y-%m-%d":"%Y-%m-%d %H:%M";i+=` Schedule: ${nn(o.timeMin,s)} to ${nn(o.timeMax,s)}.`}else i+=" No tasks scheduled.";if(o.analysis&&o.analysis.criticalPathTaskIds.length>0){i+=` Critical path: ${o.analysis.criticalPathTaskIds.join(" -> ")}.`}}catch{}const r=t.sections.map(o=>o.label).filter(o=>o!==void 0);if(r.length>0)i+=` Sections: ${r.join(", ")}.`;const a=n.map(o=>{const s=[];const d=o.tags.find(m=>m==="done"||m==="active"||m==="crit");if(d)s.push(d);if(o.tags.includes("milestone"))s.push("milestone");if(o.tags.includes("vert"))s.push("vert marker");if(o.start)s.push(o.start);s.push(o.end);return`${o.label} (${s.join(", ")})`});if(a.length>0)i+=` Tasks: ${a.join("; ")}.`;return i}function Wa(e,t){const n=O(e);const i=(n?.extractLabels??Q)(t).map(s=>s.text);const r=Array.from(new Set(i)).filter(Boolean);const a=e==="xychart"?"XY chart":e;let o=`A ${a} diagram with a source-level body (structured editing not exposed).`;if(r.length>0)o+=` Labels: ${r.join(", ")}.`;return o}var Ie=Object.freeze({security:"strict",embedFontImport:false});function za(e){return e instanceof Error?e.message:String(e)}function Ue(e){const t=v(e.example);if(!t.ok){throw new Error(t.error.map(n=>`${n.code}: ${n.message}`).join("; "))}if(t.value.kind!==e.id){throw new Error(`canonical example routed to "${t.value.kind}" instead of "${e.id}"`)}return t.value}function dc(e){const t=Ue(e);return{kind:t.kind,..."descriptorIdentity"in t?{descriptorIdentity:t.descriptorIdentity}:{},meta:t.meta,body:t.body,canonicalSource:t.canonicalSource}}function Ha(e){const t=F(Ue(e));const n=v(t);if(!n.ok){throw new Error(`serialized canonical example did not reparse: ${n.error.map(r=>r.message).join("; ")}`)}if(n.value.kind!==e.id){throw new Error(`serializer changed family identity to "${n.value.kind}"`)}const i=F(n.value);if(i!==t){throw new Error("serializer is not byte-stable after parse \u2192 serialize \u2192 reparse")}return{serialized:t,reparsedKind:n.value.kind,canonicalSource:n.value.canonicalSource}}function cc(e){const t=Ue(e);const n=wt(t,{output:"layout",renderOptions:Ie});if(!n)throw new Error(`canonical example has no public positioned-layout projection`);const i=[n.positioned.width,n.positioned.height];const r=[n.rendered.bounds.w,n.rendered.bounds.h];if([...i,...r].some(a=>!Number.isFinite(a)||a<=0)){throw new Error("canonical example layout and projected bounds must be finite and positive")}if(n.rendered.nodes.length+n.rendered.edges.length+n.rendered.groups.length===0){throw new Error("canonical example layout must expose at least one semantic node, edge, or group")}return{layout:n.rendered,receiptDigest:ae(Ne(n.request))}}function lc(e){const t=Me(e.example,Ie,"svg");const n=xt(e.id,t);const i=St(t,n);const r=new Set;Ve(i.parts,o=>{for(const s of Qn(o))r.add(`${o.role}\0${s}`)});const a=e.scenePrimitiveEvidence.filter(o=>o.applicability==="applicable").filter(o=>!r.has(`${o.role}\0${o.primitive}`)).map(o=>`${o.role}/${o.primitive}`);if(a.length>0){throw new Error(`canonical example did not witness declared positive Scene cells: ${a.join(", ")}`)}return{sceneDigest:ae(i),cells:[...r].sort(),receiptDigest:ae(Ne(t))}}function uc(e){const t=Rt(e.example,Ie,"svg");const n=Ki(e.example,Ie);return{svg:t.svg,svgReceiptDigest:ae(t.receipt),pngSvg:n.svg,pngReceiptDigest:ae(n.receipt),rasterBackground:n.rasterBackground,rasterDimensions:n.rasterDimensions}}function mc(e){const t=[];for(const n of[true,false]){for(const i of Gi){const r=n?"ascii":"unicode";let a;try{a=kt(e.example,{...Ie,useAscii:n,colorMode:i})}catch(o){throw new Error(`${r}/${i} terminal witness failed: ${za(o)}`)}t.push({encoding:r,colorMode:i,textDigest:ae(a.text),receiptDigest:ae(a.receipt)})}}return{outputs:t}}function fc(e){const t=Ae(e.example,{renderOptions:Ie});if(!t.ok){const n=t.warnings.map(i=>i.code==="RENDER_FAILED"||i.code==="INTERNAL_ERROR"?`${i.code}: ${i.reason}`:i.code);throw new Error(`canonical example failed verification: ${n.join(", ")}`)}return t}function Ya(e,t){switch(t){case"detection":{const n=Ue(e);return{family:n.kind,canonicalSource:n.canonicalSource}}case"source-preservation":{const n=Ue(e);return{family:n.kind,canonicalSource:n.canonicalSource,roundtrip:Ha(e)}}case"parse":return dc(e);case"serialize":return Ha(e);case"mutation":throw new Error("external structured mutation is not an executable native capability");case"verify":return fc(e);case"layout":return cc(e);case"scene":return lc(e);case"svg":return uc(e);case"terminal":return mc(e)}}function pc(e,t){const n=e.capabilityEvidence.find(r=>r.capability===t).state;if(n!=="native"){return Object.freeze({capability:t,declaredState:n,status:"unverified-extension",diagnostic:`Descriptor declares "${n}"; no executable native claim was made.`})}const i=`family-example@${rt}/${e.id}/${t}`;try{const r=ae(Ya(e,t));const a=ae(Ya(e,t));if(r!==a){throw new Error(`canonical example was nondeterministic (${r} != ${a})`)}return Object.freeze({capability:t,declaredState:n,status:"passed",witnessId:i})}catch(r){return Object.freeze({capability:t,declaredState:n,status:"failed",diagnostic:za(r)})}}function gc(e){const t=Object.freeze(Gt.map(n=>pc(e,n)));return Object.freeze({version:rt,familyId:e.id,example:e.example,passed:t.every(n=>n.declaredState!=="native"||n.status==="passed"),capabilities:t})}function yc(e){const t=er(e,ki);try{const n=gc(t.descriptor);if(!n.passed)throw new Pe(n);return t.commit(n)}catch(n){t.rollback();throw n}}var Za={maxCrossingsRatio:.05,minLabelLegibility:.85,whitespaceBand:[.05,.55],minLabelEdgeProximity:4,minNodeSpacing:8,elementDensityBand:[.02,6],minTextContrast:4.5,aspectBand:[.2,5]};var eo={paintCertification:{basis:"derived",severity:"primary",note:"Final native paint evidence reports visibility and bounded inspection separately from label fit."},edgeCrossings:{basis:"evidence",severity:"primary",note:"Crossings are the single aesthetic with the strongest human-subject evidence (Purchase 1997/2002). Weight this violation highest."},labelLegibility:{basis:"derived",severity:"secondary",note:"Prepared text must fit its retained available region. Labels without retained geometry are reported as unmeasured."},labelEdgeProximity:{basis:"chosen",severity:"secondary",note:"Edge-labels overlapping nodes hurt readability, but the 4px floor is chosen, not validated against perception."},minimumNodeSpacing:{basis:"chosen",severity:"secondary",note:"Box clearance catches cramped layouts, but the 8px floor is a conservative implementation threshold rather than a perceptual constant."},elementDensity:{basis:"chosen",severity:"secondary",note:"Elements per canvas area distinguishes crowded marks from large boxes; the default band is a regression guard, not a universal aesthetic optimum."},minimumTextContrast:{basis:"standard",severity:"secondary",note:"The 4.5:1 floor follows WCAG AA normal-text contrast. Callers should supply resolved surface colors when a style uses non-default fills."},whitespaceBalance:{basis:"chosen",severity:"secondary",note:'A node/canvas fill band is a rough proxy for "too sparse / too dense"; the literature gives weak support and the band is hand-set.'},aspectRatio:{basis:"sanity",severity:"sanity",note:"Aspect ratio is a guardrail against absurd canvases, not an aesthetic; Purchase did not find it drives comprehension."}};var W=1e-9;function to(e,t={}){const n=Oi(e);const i=e.edges.map(o=>({source:o.from,target:o.to,style:o.visibility==="hidden"?"invisible":"solid",points:o.path.map(([s,d])=>({x:s,y:d}))}));let r=0,a=0;for(const o of e.edges){if(o.visibility==="hidden")continue;let s;for(let d=1;d<o.path.length;d++){const m=o.path[d-1],u=o.path[d];const y=u[0]-m[0],p=u[1]-m[1],b=Math.hypot(y,p);if(b<=W)continue;const S=[y/b,p/b];if(s&&(Math.abs(s[0]*S[1]-s[1]*S[0])>W||s[0]*S[0]+s[1]*S[1]<0))r++;s=S;a+=b}}return{...he(e)?{paintCertification:he(e)}:{},edgeCrossings:Ec(e.edges),labelLegibility:_c(e),labelMeasurement:{measuredNodes:e.nodes.filter(o=>o.label&&o.labelVisibility!=="hidden"&&o.labelVisibility!=="semantic"&&o.labelBounds).length,unmeasuredNodes:e.nodes.filter(o=>o.label&&o.labelVisibility!=="hidden"&&o.labelVisibility!=="semantic"&&!o.labelBounds).length,hiddenNodes:e.nodes.filter(o=>o.label&&o.labelVisibility==="hidden").length,semanticNodes:e.nodes.filter(o=>o.label&&o.labelVisibility==="semantic").length,measuredEdges:e.edges.filter(o=>o.label?.bounds).length,unmeasuredEdges:e.edges.filter(o=>o.label&&!o.label.bounds).length,measuredLabels:(e.labels??[]).filter(o=>o.text&&o.visibility!=="hidden"&&o.visibility!=="semantic"&&o.bounds).length,unmeasuredLabels:(e.labels??[]).filter(o=>o.text&&o.visibility!=="hidden"&&o.visibility!=="semantic"&&!o.bounds).length,hiddenLabels:(e.labels??[]).filter(o=>o.text&&o.visibility==="hidden").length,semanticLabels:(e.labels??[]).filter(o=>o.text&&o.visibility==="semantic").length},whitespaceBalance:Mc(e),labelEdgeProximity:Dc(e),...n?{labelConflicts:n}:{},routeOverlaps:{parallel:Ci(i),opposing:_i(i)},routeGeometry:{bends:r,length:a,area:e.bounds.w*e.bounds.h},minimumNodeSpacing:xc(e),elementDensity:kc(e),minimumTextContrast:Rc(t),aspectRatio:e.bounds.h>0?e.bounds.w/e.bounds.h:Infinity,nodeCount:e.nodes.length,edgeCount:e.edges.length}}function hc(e,t={},n={}){const i={...Za,...t};const r=to(e,n);const a=[];const o=(y,p)=>a.push({metric:y,severity:eo[y].severity,message:p});if(r.paintCertification&&r.paintCertification.status!=="passed")o("paintCertification",`paint layout ${r.paintCertification.status}: ${r.paintCertification.issues.map(y=>y.message).join("; ")}`);const s=e.edges.reduce((y,p)=>y+(p.visibility==="hidden"?0:1),0);const d=Math.max(1,s*(s-1)/2);if(r.edgeCrossings/d>i.maxCrossingsRatio){o("edgeCrossings",`edge crossings ${r.edgeCrossings}/${d} (${(r.edgeCrossings/d*100).toFixed(1)}%) > cap ${(i.maxCrossingsRatio*100).toFixed(1)}%`)}if(r.labelLegibility<i.minLabelLegibility){o("labelLegibility",`label legibility ${(r.labelLegibility*100).toFixed(0)}% < min ${(i.minLabelLegibility*100).toFixed(0)}%`)}if(r.labelMeasurement.unmeasuredNodes>0){o("labelLegibility",`label fit unmeasured for ${r.labelMeasurement.unmeasuredNodes} visible labels`)}if(r.labelMeasurement.unmeasuredEdges>0){o("labelEdgeProximity",`edge-label clearance unmeasured for ${r.labelMeasurement.unmeasuredEdges} labels`)}if(r.labelMeasurement.unmeasuredLabels>0){o("labelLegibility",`label fit unmeasured for ${r.labelMeasurement.unmeasuredLabels} painted labels`)}const m=e.kind==="quadrant"||e.kind==="xychart"||e.kind==="radar";if((!m||t.whitespaceBand!==void 0)&&(r.whitespaceBalance<i.whitespaceBand[0]||r.whitespaceBalance>i.whitespaceBand[1])){o("whitespaceBalance",`whitespace balance ${(r.whitespaceBalance*100).toFixed(1)}% outside band [${i.whitespaceBand[0]*100}\u2013${i.whitespaceBand[1]*100}]%`)}if(r.labelEdgeProximity<i.minLabelEdgeProximity){o("labelEdgeProximity",`edge-label clearance ${r.labelEdgeProximity}px < min ${i.minLabelEdgeProximity}px`)}if(r.nodeCount>=2&&r.minimumNodeSpacing<i.minNodeSpacing){o("minimumNodeSpacing",`minimum node spacing ${r.minimumNodeSpacing}px < min ${i.minNodeSpacing}px`)}if(r.nodeCount>0&&(r.elementDensity<i.elementDensityBand[0]||r.elementDensity>i.elementDensityBand[1])){o("elementDensity",`element density ${r.elementDensity.toFixed(2)} outside band [${i.elementDensityBand[0]}\u2013${i.elementDensityBand[1]}] per 10,000px\xB2`)}if(r.minimumTextContrast===null){o("minimumTextContrast","minimum text contrast is unmeasurable because one or more requested paints could not be resolved")}else if(r.minimumTextContrast<i.minTextContrast){o("minimumTextContrast",`minimum text contrast ${r.minimumTextContrast.toFixed(2)}:1 < min ${i.minTextContrast}:1`)}if(r.aspectRatio<i.aspectBand[0]||r.aspectRatio>i.aspectBand[1]){o("aspectRatio",`aspect ratio ${r.aspectRatio.toFixed(2)} outside band [${i.aspectBand[0]}\u2013${i.aspectBand[1]}]`)}const u={primary:0,secondary:1,sanity:2};a.sort((y,p)=>u[y.severity]-u[p.severity]);return{ok:a.length===0,metrics:r,ranked:a}}function bc(e){let t=Infinity;let n=Infinity;let i=-Infinity;let r=-Infinity;for(const a of e){t=Math.min(t,a.box.x);n=Math.min(n,a.box.y);i=Math.max(i,a.box.x+a.box.w);r=Math.max(r,a.box.y+a.box.h)}return{x:t,y:n,w:i-t,h:r-n}}function Mn(e){const t=bc(e);if(e.length<=8)return{box:t,items:e};const n=t.w>=t.h?"x":"y";const i=[...e].sort((a,o)=>(n==="x"?a.box.x+a.box.w/2-o.box.x-o.box.w/2:a.box.y+a.box.h/2-o.box.y-o.box.h/2)||Je(a.node.id,o.node.id));const r=Math.floor(i.length/2);return{box:t,left:Mn(i.slice(0,r)),right:Mn(i.slice(r))}}function Ka(e){const t=e.id.match(/^(bar|line)#(\d+):pt#(\d+)$/);if(!t)return void 0;return{type:t[1],series:Number(t[2]),point:Number(t[3])}}function Xa(e){const t=e.id.match(/^dot:(.+):(\d+)$/);if(!t)return void 0;return{curve:t[1],vertex:Number(t[2])}}function no(e,t,n){if(e==="quadrant"&&t.dataPosition&&n.dataPosition&&t.dataPosition.x===n.dataPosition.x&&t.dataPosition.y===n.dataPosition.y)return false;if(e==="xychart"){const i=Ka(t);const r=Ka(n);if(!i||!r)return true;if(i.type!==r.type)return i.point!==r.point;return i.series===r.series||i.point!==r.point}if(e==="radar"){const i=Xa(t);const r=Xa(n);if(!i||!r)return true;const a=t.x===n.x&&t.y===n.y&&t.w===n.w&&t.h===n.h;return i.curve===r.curve||i.vertex!==r.vertex||!a}return true}function He(e,t,n,i){if(Ke(e.box,t.box)>=i)return i;if(e.items&&t.items){for(const a of e.items)for(const o of t.items){if(!no(n,a.node,o.node))continue;i=Math.min(i,Ke(a.box,o.box));if(i===0)return 0}return i}const r=!t.items&&e.items?false:!e.items&&(t.items||e.box.w*e.box.h>=t.box.w*t.box.h);if(r){i=He(e.left,t,n,i);return He(e.right,t,n,i)}i=He(e,t.left,n,i);return He(e,t.right,n,i)}function $n(e,t,n=Infinity){if(e.items){for(let i=0;i<e.items.length;i++)for(let r=i+1;r<e.items.length;r++){const a=e.items[i],o=e.items[r];if(!no(t,a.node,o.node))continue;n=Math.min(n,Ke(a.box,o.box));if(n===0)return 0}return n}n=$n(e.left,t,n);if(n===0)return 0;n=$n(e.right,t,n);if(n===0)return 0;return He(e.left,e.right,t,n)}function xc(e){if(e.nodes.length<2)return Infinity;const t=e.nodes.map(n=>({node:n,box:Cn(n)}));return $n(Mn(t),e.kind)}function kc(e){const t=e.bounds.w*e.bounds.h;if(t<=0)return Infinity;return(e.nodes.length+e.edges.length)/(t/1e4)}function ze(e){return me(e)??void 0}function On(e,t){return vn(Ft(e),Ft(t))}function Ye(e,t){const n=e[3];return[0,1,2].map(i=>e[i]*n+t[i]*(1-n))}function ro(e){const t=ze(e);return t&&t[3]===1?[t[0],t[1],t[2]]:void 0}function Sc(e,t,n){const i=ze(e);const r=ze(t);const a=ro(n);if(!i||!r||!a)return void 0;const o=Ye(r,a);return On(Ye(i,o),o)}function Rc(e){if(e.textPairs!==void 0){if(e.textPairs.length===0)return null;const o=e.background??"#FFFFFF";let s=Infinity;for(const d of e.textPairs){const m=Sc(d.foreground,d.background,o);if(m===void 0)return null;s=Math.min(s,m)}return s}const t=ze(e.foreground??"#27272A");const n=ro(e.background??"#FFFFFF");if(!t||!n)return null;const i=e.surfaces??[];const r=i.map(ze);if(r.some(o=>o===void 0))return null;let a=On(Ye(t,n),n);for(const o of r){const s=Ye(o,n);a=Math.min(a,On(Ye(t,s),s))}return a}function Ec(e){return Ei(e.map(t=>({points:t.path.map(([n,i])=>({x:n,y:i})),visible:t.visibility!=="hidden"})))}function _c(e){const t={x:0,y:0,w:e.bounds.w,h:e.bounds.h};const n=[...e.nodes.map(a=>({text:a.label,bounds:a.labelBounds,container:a.labelContainer??Cn(a),visibility:a.labelVisibility})),...(e.labels??[]).map(a=>({...a,container:a.container??t}))];const i=n.filter(a=>a.text&&a.visibility!=="hidden"&&a.visibility!=="semantic"&&a.bounds);if(i.length===0)return 1;let r=0;for(const a of i){const o=a.bounds;const s=a.container;if(o.x>=s.x-W&&o.y>=s.y-W&&o.x+o.w<=s.x+s.w+W&&o.y+o.h<=s.y+s.h+W)r++}return r/i.length}function Mc(e){const t=e.bounds.w*e.bounds.h;if(t<=0)return 0;let n=0;for(const i of e.nodes)n+=i.w*i.h;return Math.min(1,n/t)}function Cn(e){return{x:e.x,y:e.y,w:e.w,h:e.h}}function Ke(e,t){const n=Math.max(0,Math.max(e.x-(t.x+t.w),t.x-(e.x+e.w)));const i=Math.max(0,Math.max(e.y-(t.y+t.h),t.y-(e.y+e.h)));return Math.hypot(n,i)}function Ja(e,t){return e[0]>=t.x&&e[0]<=t.x+t.w&&e[1]>=t.y&&e[1]<=t.y+t.h}function Qa(e,t){const n=Math.max(0,Math.max(t.x-e[0],e[0]-(t.x+t.w)));const i=Math.max(0,Math.max(t.y-e[1],e[1]-(t.y+t.h)));return Math.hypot(n,i)}function $c(e,t,n){const i=n[0]-t[0];const r=n[1]-t[1];const a=i*i+r*r;if(a===0)return Math.hypot(e[0]-t[0],e[1]-t[1]);const o=Math.max(0,Math.min(1,((e[0]-t[0])*i+(e[1]-t[1])*r)/a));const s=t[0]+o*i;const d=t[1]+o*r;return Math.hypot(e[0]-s,e[1]-d)}function Vt(e,t,n,i){const r=(u,y,p)=>(y[0]-u[0])*(p[1]-u[1])-(y[1]-u[1])*(p[0]-u[0]);const a=(u,y,p)=>y[0]>=Math.min(u[0],p[0])-W&&y[0]<=Math.max(u[0],p[0])+W&&y[1]>=Math.min(u[1],p[1])-W&&y[1]<=Math.max(u[1],p[1])+W;const o=r(e,t,n);const s=r(e,t,i);const d=r(n,i,e);const m=r(n,i,t);if(Math.abs(o)<=W&&a(e,n,t))return true;if(Math.abs(s)<=W&&a(e,i,t))return true;if(Math.abs(d)<=W&&a(n,e,i))return true;if(Math.abs(m)<=W&&a(n,t,i))return true;return o>0!==s>0&&d>0!==m>0}function Oc(e,t,n){if(Ja(e,n)||Ja(t,n))return true;const i=[n.x,n.y];const r=[n.x+n.w,n.y];const a=[n.x+n.w,n.y+n.h];const o=[n.x,n.y+n.h];return Vt(e,t,i,r)||Vt(e,t,r,a)||Vt(e,t,a,o)||Vt(e,t,o,i)}function Cc(e,t,n){if(Oc(t,n,e))return 0;const i=[[e.x,e.y],[e.x+e.w,e.y],[e.x+e.w,e.y+e.h],[e.x,e.y+e.h]];return Math.min(Qa(t,e),Qa(n,e),...i.map(r=>$c(r,t,n)))}function Dc(e){let t=Infinity;const n=e.edges.filter(i=>i.label?.bounds!==void 0).map(i=>({edge:i,box:i.label.bounds}));for(const{edge:i,box:r}of n){for(const a of e.nodes){if(a.id===i.from||a.id===i.to)continue;const o=Ke(r,Cn(a));if(o<t)t=o}}for(let i=0;i<n.length;i++){for(let r=i+1;r<n.length;r++){const a=Ke(n[i].box,n[r].box);if(a<t)t=a}}for(const{edge:i,box:r}of n){for(const a of e.edges){if(a===i||a.visibility==="hidden")continue;for(let o=0;o<a.path.length-1;o++){const s=Cc(r,a.path[o],a.path[o+1]);if(s<t)t=s}}}return t}function rb(e,t={}){return Et(e,t)}function ib(e,t={}){return Xi(e,t)}function ab(e,t={}){return Ui(e,t)}function ob(e,t={}){return kt(e,t)}function vc(e,t={}){const{debug:n,regions:i,actions:r,...a}=t;const o={debug:n,regions:i,actions:r};const s=Oe(e);const d=s.source;const m=Me(d,a,"layout",o,{expectedFamilyId:s.expectedFamilyId});bt(m);let u;if(typeof e==="string"){const p=v(d);if(!p.ok)throw new Error(p.error.map(b=>b.message).join("; "));u=p.value}else{u=e}const y=_a(u,m,{debug:n});if(!y)throw new Error(`No public layout projection registered for Mermaid family "${u.kind}"`);return{layout:Ac(u,y,o),receipt:{...Ne(m),...he(y)?{layoutCertification:he(y)}:{}}}}function sb(e,t={}){if(e.body.kind==="preserved"){throw new Te(mr(e.body))}return vc(e,t).layout}function Ac(e,t,n){const i=n.debug||n.regions;const r=n.debug||n.actions;if(!i&&!r)return t;const a={...t};if(i)a.regions=Ic(e,t);if(r){const s=new Set([...t.nodes,...t.groups,...t.edges].map(d=>d.id));a.actions=(e.body.kind==="extension"||e.body.kind==="preserved"?[]:Ce(e)).filter(d=>s.has(d.target)).map(d=>({...d,regionId:d.regionId??`node:${d.target}`}))}const o=he(t);if(o)Qe(a,o);return a}function Ic(e,t){const n=[{id:"canvas",kind:"canvas",bounds:{x:Y(0),y:Y(0),w:t.bounds.w,h:t.bounds.h}}];const i=new Map;for(const a of t.groups)for(const o of a.members)i.set(o,a.id);const r=wc(e);for(const a of t.groups){n.push({id:`group:${a.id}`,kind:a.regionKind??Pc(t.kind),elementId:a.id,parentId:a.parentId?`group:${a.parentId}`:"canvas",bounds:{x:a.x,y:a.y,w:a.w,h:a.h},sourceLine:e.source.groups.get(a.id)?.line??r.groups.get(a.id)})}for(const a of t.nodes){n.push({id:`node:${a.id}`,kind:"node",elementId:a.id,parentId:a.parentId!==void 0?`group:${a.parentId}`:i.has(a.id)?`group:${i.get(a.id)}`:"canvas",bounds:{x:a.x,y:a.y,w:a.w,h:a.h},sourceLine:e.source.nodes.get(a.id)?.line??r.nodes.get(a.id)})}for(const a of t.edges){const o=a.path.map(d=>d[0]);const s=a.path.map(d=>d[1]);if(o.length>0&&s.length>0){const d=Math.min(...o),m=Math.max(...o),u=Math.min(...s),y=Math.max(...s);n.push({id:`edge:${a.id}`,kind:"edge",elementId:a.id,parentId:"canvas",bounds:{x:Y(d),y:Y(u),w:Y(Math.max(1,m-d)),h:Y(Math.max(1,y-u))}})}if(a.label){const d=Math.max(1,a.label.text.length*7);const m=14;const u=e.kind==="sequence"&&a.from===a.to?a.label.x:a.label.x-d/2;n.push({id:`label:${a.id}`,kind:"label",elementId:a.id,parentId:`edge:${a.id}`,bounds:{x:Y(u),y:Y(a.label.y-m/2),w:Y(d),h:Y(m)}})}}return n}function Pc(e){switch(e){case"flowchart":case"state":case"class":case"er":case"architecture":return"cluster";case"gitgraph":return"lane";case"timeline":case"journey":case"gantt":return"band";case"sequence":case"quadrant":return"compartment";case"xychart":return"plot";case"radar":return"ring";default:return"group"}}function wc(e){const t=new Map;const n=new Map;const i=e.body.kind==="opaque"||e.body.kind==="extension"?e.body.source:e.canonicalSource;const r=i.split(/\r?\n/);for(let a=0;a<r.length;a++){const o=r[a];const s=o.match(/^\s*subgraph\s+([A-Za-z0-9_:-]+)/);if(s?.[1]&&!n.has(s[1]))n.set(s[1],a+1);for(const d of o.matchAll(/(?:^|[\s&;])([A-Za-z][A-Za-z0-9_:-]*)(?=\s*(?:\[|\(|\{|--|==|-.|$))/g)){const m=d[1];if(m==="subgraph"||m==="end"||m===e.kind)continue;if(!t.has(m))t.set(m,a+1)}}return{nodes:t,groups:n}}export{Qi as a,io as b,Ce as c,an as d,fo as e,vo as f,oe as g,ee as h,At as i,ga as j,ss as k,ds as l,ls as m,je as n,us as o,hn as p,It as q,ps as r,Ds as s,Ae as t,Uf as u,Na as v,Fa as w,hd as x,bd as y,xd as z,Ge as A,Cd as B,ja as C,Dd as D,Ud as E,Tp as F,Hd as G,Ga as H,Ua as I,yc as J,Za as K,eo as L,to as M,hc as N,rb as O,ib as P,ab as Q,ob as R,vc as S,sb as T};
2
- //# sourceMappingURL=chunk-7CRDX2QR.js.map
1
+ import{$ as si,A as hr,Aa as Gi,B as kr,C as Sr,Cb as Ki,D as Rr,E as Er,F as _r,Fa as Ui,Fb as Et,G as Mr,Ga as kt,H as $r,Ha as Hi,Hb as Xi,I as zt,J as Or,K as st,L as Cr,M as Br,N as jr,O as qr,P as Wr,Q as Gr,R as Ur,S as Hr,U as Qt,V as Qr,W as Zr,X as ti,Y as ri,Z as ii,_ as oi,a as Q,aa as ct,b as Gt,ba as lt,ca as di,da as ut,e as rt,ea as ci,fa as li,g as Pe,ga as mi,ha as fi,ia as gi,k as Ut,ka as Pi,la as wi,ma as Li,n as er,na as Ti,o as O,oa as F,pa as Ni,ra as v,sa as qi,ta as Oe,u as fr,ua as Ve,v as Ee,w as pr,x as gr,y as yr,z as Z}from"./chunk-KXMANAST.js";import{$a as Jn,$b as sr,$d as Ir,$i as Wi,Ah as yt,Bd as vr,Bh as Ri,Ca as Gn,Cb as tr,Ch as Ne,Da as Un,Dg as ai,Ea as Hn,Eh as ae,Fa as Yn,Fc as mr,Ga as Wt,Gc as Te,Ge as Lr,Gh as ht,Hb as Le,Hh as Me,Ih as Ei,Ii as Fi,Jc as xe,Jh as _i,Ji as Bi,Kh as Mi,Ki as ji,Lh as $i,Me as Tr,Nc as ot,Pb as nr,Pc as br,Qa as ie,Qe as Nr,Ra as zn,Re as Vr,Ub as rr,Uc as xr,Ve as le,Vg as ui,Wb as ar,We as _e,Wh as Oi,Xb as or,Xh as Ci,Zd as Kt,Zi as bt,_a as Xn,_d as Ar,a as Qe,ae as Xt,af as dt,ai as Di,aj as xt,b as he,bc as it,bh as U,bi as vi,c as ce,ca as Nn,cg as Yr,ci as Ai,d as Tn,da as Vn,dg as zr,dj as Yi,ea as Ze,ec as dr,eh as yi,ej as St,fa as jt,fj as zi,gf as Fr,gg as Kr,gh as ft,gj as Rt,ha as et,hc as at,he as Pr,hh as pt,hi as Ii,ib as nt,ig as Jt,ih as hi,jh as bi,ji as Vi,ka as Fn,ke as wr,kh as xi,lg as Xr,lh as en,mg as Jr,mh as ki,mi as $e,ni as nn,oc as be,og as ei,pa as Bn,pb as Zn,pd as Dr,qa as tt,rh as Si,sa as Wn,tc as cr,tg as ni,ub as we,wa as qt,wc as lr,yc as ur,yh as gt,zh as tn}from"./chunk-EHJI3QYE.js";import{Ab as Ln,Ac as qn,Cd as mt,Gc as Kn,Qa as X,Sc as Qn,T as An,bd as pi,d as Dn,da as In,fa as L,g as Ft,h as vn,lb as J,rb as Pn,s as me,sb as wn,v as Xe,vc as jn,wd as Zt,xb as Je,za as Bt}from"./chunk-DOFB572I.js";import{A as fe,C as Yt,a as q,b as E,z as Y}from"./chunk-O7H2UX5K.js";import{b as Ht,g as ir}from"./chunk-3LGLPG33.js";import{decodeXML as Ji}from"entities";function Qi(e){return{kind:e.kind,feedbackEdges:ao(e),actions:Ce(e),...e.body.kind==="gantt"?oo(e):{}}}function io(e){const t=v(e);return t.ok?q(Qi(t.value)):E(t.error)}function ao(e){let t=null;if(e.body.kind==="flowchart")t=e.body.graph;else if(e.body.kind==="state")t=ut(e.body);else if(e.kind==="flowchart"&&e.body.kind==="opaque"){try{t=Kr(e.canonicalSource)}catch{t=null}}if(!t)return[];const n=Ei(t);return t.edges.flatMap((i,r)=>n[r]==="feedback"?[{edgeIndex:r,from:i.source,to:i.target,label:i.label,routeClass:"feedback"}]:[])}function oo(e){if(e.body.kind!=="gantt")return{};try{const t=ie(e.canonicalSource);const n=_e(le(t.lines),t.frontmatter);const i=$e(n);return i.analysis?{gantt:{criticalPathTaskIds:[...i.analysis.criticalPathTaskIds],slackByTaskId:{...i.analysis.slackByTaskId},projectStart:i.analysis.projectStart,projectEnd:i.analysis.projectEnd,entryTaskIds:[...i.analysis.entryTaskIds],sinkTaskIds:[...i.analysis.sinkTaskIds]}}:{}}catch{return{}}}function Ce(e){const t=e.body.kind==="opaque"||e.body.kind==="extension"||e.body.kind==="preserved"?e.body.source:e.canonicalSource;const n=[];if(e.kind==="flowchart")n.push(...co(t));if(e.kind==="class")n.push(...so(t));if(e.kind==="sequence")n.push(...lo(t));if(e.body.kind==="gantt")n.push(...mo(e));if(e.body.kind==="kanban"){const r=Xn(e.meta.frontmatter);for(const a of e.body.columns)for(const o of a.tasks){const s=o.metadata.ticket;const d=typeof s==="string"?Jn(r.ticketBaseUrl,s):void 0;if(d)n.push(H("kanban",o.id,"href",d,e.source.nodes.get(o.id)?.line,d))}}if(e.body.kind==="c4"){const r=e.body;for(const[a,o,s]of[[r.elements,e.source.nodes,"node"],[r.boundaries,e.source.groups,"group"],[r.relationships,e.source.edges,"edge"]])for(const d of a){const m=d.effectiveLink??d.link;if(m!==void 0)n.push({...H("c4",d.id,"href",m,o.get(d.id)?.line,m),regionId:`${s}:${d.id}`})}}const i=new Map;return n.map(r=>{const a=`${r.family}:${r.target}`;const o=i.get(a)??0;i.set(a,o+1);return{id:`action:${r.family}:${r.target}:${o}`,regionId:`node:${r.target}`,...r}})}function so(e){const t=[];const n=new Map;let i=false;const r=e.split(/\r?\n/);const a=r.flatMap((o,s)=>Ar(o).map(d=>({text:d,line:s+1})));for(const o of rn(Ji(e))){const s=a[o.line-1];const d=s?.line??o.line;const m=Kt(o.text);const u=Kt(s?.text.trim()??"");for(const[y,p]of m.entries()){if(i){if(p.trim()==="}")i=false;continue}const b=Ir(p);if(b?.opensBody){i=true;continue}const S=u.length===m.length&&Ji(u[y])===p?u[y]:void 0;const _=S===void 0?null:wr(S);if(_){if(_.tooltip!==void 0)n.set(_.id,_.tooltip);const D=n.get(_.id);t.push({...H("class",_.id,"href",_.href,d,_.href),...D!==void 0?{tooltip:D}:{}});continue}if(/[\u0000-\u0008\u000b-\u001f\u007f-\u009f]/.test(p))continue;const P=p.match(/^(callback)\s+(`[^`]+`(?:~[^~]+~)?|[\w$]+(?:~[^~]+~)?)\s+(.+)$/i);if(P){const D=Xt(P[2]);if(D)t.push(H("class",D.id,"callback",P[3],d));continue}const G=p.match(/^(click|link)\s+(`[^`]+`(?:~[^~]+~)?|[\w$]+(?:~[^~]+~)?)\s+(.+)$/i);if(!G)continue;if((p.match(/"/g)?.length??0)%2!==0)continue;const M=Xt(G[2]);if(!M)continue;const w=G[3].trim();const k=w.match(/^(href|call|callback)\s+(.+)$/i);const C=k?.[1]?.toLowerCase();if(C==="call"||C==="callback"){t.push(H("class",M.id,C,k[2],d))}else{const D=C==="href"?k[2]:w;t.push(H("class",M.id,G[1].toLowerCase()==="link"||ta(D)?"href":"callback",D,d))}}}return t}function co(e){const t=[];const n=rn(e,true);for(const i of ur(n.map(r=>r.text))){const r={text:i.text,line:n[i.line].line};for(const a of Jt(r.text)){if(!a||a.startsWith("%%"))continue;let o=a.match(/^href\s+(\S+)\s+(.+)$/i);if(o){t.push(H("flowchart",o[1],"href",o[2],r.line));continue}o=a.match(/^click\s+(\S+)\s+(.+)$/i);if(!o)continue;const s=o[1];const d=o[2].trim();const m=d.match(/^(href|call)\s+(.+)$/i);const u=d.match(/^callback(?:\s+(.+))?$/i);if(m?.[1]?.toLowerCase()==="href")t.push(H("flowchart",s,"href",m[2],r.line));else if(m?.[1]?.toLowerCase()==="call")t.push(H("flowchart",s,"call",m[2],r.line));else if(u)t.push(H("flowchart",s,"callback",u[1]??"",r.line));else t.push(H("flowchart",s,ta(d)?"href":"callback",d,r.line))}}return t}function rn(e,t=false){const n=e.split(/\r?\n/);const i=[];for(let a=0;a<n.length;a++){const o=tt(n,a);if(o===void 0)break;if(o===null)i.push({text:n[a].trim(),line:a+1});else{if(o.suffixLine)i.push({text:o.suffixLine.trim(),line:o.endIndex+1});a=o.endIndex}}if(!t)return i;let r=false;for(const a of i){const o=!r&&Jt(a.text).some(d=>/^(?:click|href)\s+/i.test(d.trim()));if(o)continue;const s=uo(a.text,r);r=s.open;a.text=s.text.trim()}return i}function lo(e){return rn(e).flatMap(t=>{const n=rr(t.text);return n?Object.values(n.links).map(i=>H("sequence",n.actorId,"href",i,t.line)):[]})}function uo(e,t){const n=t?'"`':"";const i=`${n}${e}`;const r=cr(i);const a=i.split("");for(const o of r.regions){if(o.kind==="markdown")a.fill(" ",o.start,o.end)}return{text:a.join("").slice(n.length),open:r.openAtEnd.includes("markdown")}}function mo(e){if(e.body.kind!=="gantt")return[];try{const t=le(et(e.canonicalSource));return t.clicks.map(n=>H("gantt",n.taskId,n.action,n.rest,n.line))}catch{return[]}}function H(e,t,n,i,r,a){const o=n==="href"?a??Zi(i):void 0;const s=o!==void 0&&!ea(o);return{family:e,target:t,action:n,raw:i,line:r,href:o,executable:false,security:n==="href"?s?"unsafe":"safe":"source-only",message:n==="href"?s?"Unsafe href is source-only and must be stripped by strict renderers.":"Href is an action record; non-SVG renderers keep it as source-only metadata.":"Callbacks/calls are recorded for analysis but are never executed."}}function Zi(e){const t=e.trim();const n=t[0];if(n==='"'||n==="'"){let i="";for(let r=1;r<t.length;r++){const a=t[r];if(a===n)return i;if(a==="\\"&&r+1<t.length){const o=t[r+1];if(o===n||o==="\\"){i+=o;r++;continue}}i+=a}return i}return t.split(/\s+/)[0]??""}function ea(e){return Kn(e)}function ta(e){const t=e.trim();const n=Zi(e);const i=t[0]==='"'||t[0]==="'";return i||ea(n)&&/^(?:https?:|mailto:|#|\/|\.\/|\.\.)/i.test(n)}var an={version:1,routeIntent:"shared-route-classes",svgSource:"route-contract classifyRoutes() + certificates",asciiSource:"family terminal geometry with owned cells, route classes, markers and intentional bundles",degradationWarnings:["ASCII_RENDER_FAILED","ASCII_EDGE_REGION_UNMAPPED","TERMINAL_OWNERSHIP_UNAVAILABLE"]};function fo(e,t={}){const n=Oe(e);try{const{rendered:i,model:r}=Hi(n,t);const a=gi(i);const o=i.terminalStyle.diagnostics.map(u=>({code:u.code,severity:"degraded",message:u.message,...u.cell?{cell:u.cell}:{}}));if(!a)o.push({code:"TERMINAL_OWNERSHIP_UNAVAILABLE",severity:"degraded",message:"This family returns terminal text without owned geometry; element regions cannot be established from its string output."});const s=r.parsed();const d=a?.regions()??[];if(s.ok)for(const u of d){const y=u.kind==="node"?s.value.source.nodes.get(u.id):s.value.source.groups.get(u.id);if(u.sourceLine===void 0&&y)u.sourceLine=y.line}const m=s.ok?Ce(s.value).map(po):[];return{ascii:i.text,regions:d,actions:m,warnings:o,routeParity:an}}catch(i){if(i instanceof gt)throw i;return{ascii:"",regions:[],actions:[],warnings:[{code:"ASCII_RENDER_FAILED",severity:"degraded",message:"ASCII/Unicode renderer failed; no route parity evidence is available."}],routeParity:an}}}function po(e){const t=n=>n===void 0?void 0:In(n);return{...e,raw:t(e.raw),href:t(e.href),tooltip:t(e.tooltip),message:t(e.message)}}var go=new Set(["\u250C","\u256D"]);var yo=new Set(["\u2510","\u256E"]);var ho=new Set(["\u25BA","\u25B6",">"]);var bo=new Set(["\u25C4","\u25C0","<"]);var xo=new Set(["\u25BC","v"]);var ko=new Set(["\u25B2","^"]);function So(e){const t=[];let n=0;for(let i=0;i<e.length;i++){const r=e[i];for(let a=0;a<r.length;a++){const o=r[a];const s=go.has(o)||o==="+"&&Ro(e,a,i);if(!s)continue;const d=Eo(e,a,i);if(d){d.id=`N${n++}`;t.push(d)}}}return t}function Ro(e,t,n){const i=e[n]?.[t+1];const r=e[n+1]?.[t];return i==="-"&&r==="|"}function Eo(e,t,n){const i=e[n];let r=-1;for(let s=t+1;s<i.length;s++){const d=i[s];if(yo.has(d)||d==="+"){r=s;break}if(d!=="\u2500"&&d!=="-")break}if(r<0)return null;let a=-1;for(let s=n+1;s<e.length;s++){const d=e[s]?.[t];if(d==="\u2514"||d==="\u2570"||d==="+"){a=s;break}if(d!=="\u2502"&&d!=="|")break}if(a<0)return null;const o=[];for(let s=n+1;s<a;s++){const d=(e[s]??"").slice(t+1,r).replace(/[│|]/g," ").trim();if(d)o.push(d)}return{id:"",label:o.join(" ").trim(),top:n,left:t,bottom:a,right:r}}function B(e,t,n,i=1){for(const r of e){if(t>=r.left-i&&t<=r.right+i&&n>=r.top-i&&n<=r.bottom+i)return r}return null}function _o(e,t){const n=[];const i=new Set;for(let r=0;r<e.length;r++){const a=e[r];for(let o=0;o<a.length;o++){const s=a[o];let d=null;let m=null;if(ho.has(s)){d=B(t,o+1,r);m=Mo(e,t,o,r)}else if(bo.has(s)){d=B(t,o-1,r);m=$o(e,t,o,r)}else if(xo.has(s)){d=B(t,o,r+1);m=Oo(e,t,o,r)}else if(ko.has(s)){d=B(t,o,r-1);m=Co(e,t,o,r)}if(m&&d&&m.id!==d.id){const u=`${m.id}->${d.id}`;if(!i.has(u)){i.add(u);n.push([m.id,d.id])}}}}return n}var Mt=new Set(["\u2500","-","\u252C","\u2534","\u253C","\u251C","\u2524","+"]);var _t=new Set(["\u2502","|","\u252C","\u2534","\u253C","\u251C","\u2524","+"]);function Mo(e,t,n,i){for(let r=n-1;r>=0;r--){const a=B(t,r,i);if(a)return a;if(!Mt.has(e[i]?.[r]??"")){const o=B(t,r,i-1),s=B(t,r,i+1);return o??s??null}}return null}function $o(e,t,n,i){for(let r=n+1;r<(e[i]?.length??0);r++){const a=B(t,r,i);if(a)return a;if(!Mt.has(e[i]?.[r]??""))break}return null}function Oo(e,t,n,i){let r=n;for(let a=i-1;a>=0;a--){const o=B(t,r,a);if(o)return o;const s=e[a]?.[r]??"";const d="\u252C\u2534\u253C\u251C\u2524\u2510\u250C\u256E\u256D".includes(s);if(d&&!_t.has(e[a-1]?.[r]??"")){const y=na(e,r,a);if(y===null){const p=B(t,r-1,a),b=B(t,r+1,a);return p??b??null}r=y;continue}if(_t.has(s))continue;if(Mt.has(s)){const y=na(e,r,a);if(y!==null){r=y;continue}const p=B(t,r-1,a),b=B(t,r+1,a);return p??b??null}const m=B(t,r-1,a),u=B(t,r+1,a);return m??u??null}return null}function na(e,t,n){const i=r=>e[n-1]?.[r]??"";for(let r=0;r<200;r++){for(const a of[t-r,t+r]){const o=e[n]?.[a]??"";if(!Mt.has(o)&&!"\u2510\u250C\u256E\u256D".includes(o))continue;if(_t.has(i(a)))return a}}return null}function Co(e,t,n,i){for(let r=i+1;r<e.length;r++){const a=B(t,n,r);if(a)return a;if(!_t.has(e[r]?.[n]??""))break}return null}function Do(e){return/["[\]{}()]/.test(e)?`["${e.replace(/"/g,"&quot;")}"]`:`[${e}]`}function vo(e,t={}){if(!e.trim())return E([{code:"EMPTY",message:"empty ASCII input"}]);const n=e.replace(/\[[0-9;]*m/g,"").split(/\r?\n/);const i=So(n);if(i.length===0)return E([{code:"NO_BOXES",message:"no boxes detected in ASCII; not a recognized flowchart render"}]);const r=_o(n,i);const a=t.direction??"LR";const o=[`flowchart ${a}`];for(const s of i)o.push(` ${s.id}${Do(s.label||s.id)}`);for(const[s,d]of r)o.push(` ${s} --> ${d}`);return q(o.join("\n"))}var Fe;function Ao(){if(Fe!==void 0)return Fe;Fe=null;try{const e=globalThis.process;const t=e?.getBuiltinModule?.("node:fs");if(typeof t?.appendFileSync==="function")Fe=t.appendFileSync}catch{}return Fe}function oe(e,t){const n=globalThis.process?.env?.AM_TRACE_LOG;if(!n)return;const i=t===void 0?{verb:e}:{verb:e,ok:t};try{Ao()?.(n,JSON.stringify(i)+"\n")}catch{}}var ue=(e=true)=>({type:"string",required:e});var on=()=>({type:"number",required:false});var sn=()=>({type:"object-or-null",required:true});var ra={upsert_participant:{fields:{participant:sn(),index:on()}},remove_participant:{fields:{id:ue()}},rename_participant:{fields:{id:ue(),newId:ue()}},insert_statement:{fields:{statement:sn(),parentId:ue(false),branchIndex:on(),index:on()}},remove_statement:{fields:{id:ue()}},set_statement:{fields:{id:ue(),statement:sn()}},set_title:{fields:{title:ue(false)}},set_accessibility_title:{fields:{title:ue(false)}},set_accessibility_description:{fields:{description:ue(false)}}};var ke=(e=true)=>({type:"string",required:e});var ia=(e=true)=>({type:"number",required:e});var dn=()=>({type:"object-or-null",required:true});var aa={insert_frame:{fields:{frame:dn(),index:ia(false)}},remove_frame:{fields:{id:ke()}},move_frame:{fields:{id:ke(),index:ia()}},set_frame:{fields:{id:ke(),frame:dn()}},set_entities:{fields:{entities:{type:"string-array",required:true}}},set_notes:{fields:{notes:{type:"object-array",required:true}}},set_specifications:{fields:{specifications:{type:"object-array",required:true}}},set_data:{fields:{id:ke(),data:dn()}},set_title:{fields:{title:ke(false)}},set_accessibility_title:{fields:{title:ke(false)}},set_accessibility_description:{fields:{description:ke(false)}}};var I=(e=true)=>({type:"string",required:e});var $t=(e=true)=>({type:"number",required:e});var cn={add_column:{fields:{id:I(),label:I(),index:$t(false)}},remove_column:{fields:{id:I(),removeTasks:{type:"boolean",required:false}}},set_column_label:{fields:{id:I(),label:I()}},move_column:{fields:{id:I(),index:$t()}},add_task:{fields:{column:I(),id:I(),label:I(),metadata:{type:"object-or-null",required:false},index:$t(false)}},remove_task:{fields:{id:I()}},set_task_label:{fields:{id:I(),label:I()}},set_task_metadata:{fields:{id:I(),metadata:{type:"object-or-null",required:true}}},move_task:{fields:{id:I(),column:I(),index:$t(false)}},set_icon:{fields:{id:I(),icon:I(false)}},set_class:{fields:{id:I(),className:I(false)}},set_accessibility_title:{fields:{title:I(false)}},set_accessibility_description:{fields:{description:I(false)}}};var cl=Object.keys(cn);var Be=(e=true)=>({type:"string",required:e});var pe=(e=true)=>({type:"number",required:e});var ln={set_title:{fields:{title:Be(false)}},set_accessibility_title:{fields:{title:Be(false)}},set_accessibility_description:{fields:{description:Be(false)}},add_field:{fields:{label:Be(),bits:pe(),index:pe(false)}},remove_field:{fields:{index:pe()}},set_field_label:{fields:{index:pe(),label:Be()}},set_field_bits:{fields:{index:pe(),bits:pe()}},move_field:{fields:{from:pe(),to:pe()}}};var ul=Object.keys(ln);var oa=["rectangle","service","rounded","diamond","stadium","circle","ellipse","subroutine","doublecircle","hexagon","cylinder","asymmetric","trapezoid","trapezoid-alt","lean-r","lean-l","state-start","state-end"];var Io=["solid","dotted","thick","invisible"];var sa=["sync","reply","async","async-dashed","lost","lost-dashed"];var Po=["participant","actor"];var wo=["alt","opt","loop","par","par_over"];var un=["inheritance","composition","aggregation","association","dependency","realization","link-solid","link-dashed","lollipop"];var da=["one-only","zero-or-one","zero-or-many","one-or-many","parent"];var Ot=["L","R","T","B"];var Ct=["item","group"];var Lo=["bar","line"];var To=["x","y"];var No=["active","done","crit"];var ca=["default","rect","rounded","circle","cloud","bang","hexagon"];var mn=["NORMAL","REVERSE","HIGHLIGHT"];var Vo=["circle","polygon"];var l=(e=true)=>({type:"string",required:e});var g=(e=true)=>({type:"number",required:e});var V=(e=true)=>({type:"boolean",required:e});var fn=(e=true)=>({type:"number-or-null",required:e});var pn=(e=true)=>({type:"boolean-or-null",required:e});var x=(e=true)=>({type:"string-or-null",required:e});var z=(e=true)=>({type:"string-array",required:e});var Dt=(e=true)=>({type:"number-array",required:e});var ge=(e=true)=>({type:"object-or-null",required:e});var la=(e=true)=>({type:"object-array",required:e});var R=(e,t=true,n=false)=>({type:"enum",values:e,nullable:n,required:t});var h=(e,t)=>({...e,note:t});var ua=[...oa,...zr().filter(e=>!oa.includes(e))];var Fo=["TD","TB","LR","BT","RL"];var Bo={add_node:{fields:{id:l(),label:l(),shape:h(R(ua,false),"default: rectangle; also accepts Mermaid v11 @{ shape } names/aliases (e.g. manual-input)"),parent:l(false)}},remove_node:{fields:{id:l()}},rename_node:{fields:{from:l(),to:l()}},set_label:{fields:{target:h(l(),'a node id, an authored edge ID (e1), or "from->to"/"from->to#k"; an id a node and an edge share names the node'),label:l()}},add_edge:{fields:{from:l(),to:l(),label:l(false),style:h(R(Io,false),"default: solid")}},remove_edge:{fields:{id:h(l(),'an authored edge ID (e1), or "from->to"/"from->to#k" for the k-th parallel edge')}},set_shape:{fields:{id:l(),shape:h(R(ua),"a geometry name or a Mermaid v11 @{ shape } name/alias; v11 names render with the documented geometry mapping and serialize with the authored spelling")}},set_direction:{fields:{direction:R(Fo),subgraph:h(l(false),"omit to set the diagram direction; a subgraph id sets that subgraph's direction override")}},add_subgraph:{fields:{id:l(),label:l(false),parent:h(l(false),"nest inside this subgraph"),members:h(z(false),"existing node ids MOVED into the new subgraph")}},remove_subgraph:{fields:{id:l(),removeMembers:h(V(false),"default false: dissolve \u2014 members move to the parent scope; true also removes member nodes and their edges")}},move_node:{fields:{id:l(),subgraph:h(x(),"target subgraph id; null moves the node to the top level")}},define_class:{fields:{name:l(),style:h(l(),'CSS-like pairs, e.g. "fill:#f96,stroke:#333,stroke-width:2px"')}},set_node_class:{fields:{id:l(),className:h(x(),"assigns a classDef name (define_class or source classDef); null removes the assignment")}},set_node_style:{fields:{id:l(),style:h(x(),'inline style pairs, e.g. "fill:#bbf"; null clears')}}};var ma=["TD","TB","LR","BT","RL"];var jo=["left","right"];var qo={add_state:{fields:{id:l(),label:x(false),parent:x(false),region:g(false)}},remove_state:{fields:{id:l(),recursive:h(V(false),"default false: refuse a non-empty composite; true removes the whole subtree (transitions + notes cascade)")}},rename_state:{fields:{from:l(),to:l()}},set_state_label:{fields:{id:l(),label:x()}},add_transition:{fields:{from:h(l(),'a state id, "[*]", or a history ref like "X[H]"'),to:h(l(),'a state id, "[*]", or a history ref like "X[H]"'),label:x(false),parent:x(false),region:g(false)}},remove_transition:{fields:{index:g(false),from:l(false),to:l(false),parent:x(false),region:g(false)},requireOneOf:["index","from","to"]},set_transition_label:{fields:{index:g(false),from:l(false),to:l(false),label:x(),parent:x(false),region:g(false)},requireOneOf:["index","from","to"]},make_composite:{fields:{id:l(),members:z(),label:x(false)}},set_direction:{fields:{direction:R(ma),state:h(x(false),"omit to set the diagram direction; a composite id sets that composite's direction override")}},move_state:{fields:{id:l(),parent:h(x(),"target composite id; null moves the state to the top level"),region:g(false)}},dissolve_composite:{fields:{id:h(l(),"children and inner transitions hoist into the parent scope; rejects while transitions/notes still reference the composite")}},add_note:{fields:{target:l(),side:h(R(jo,false),"default: right"),text:h(l(),"multi-line text serializes as a block note")}},remove_note:{fields:{index:g()}},set_note_text:{fields:{index:g(),text:l()}},add_floating_note:{fields:{id:l(),text:l(),parent:x(false),region:g(false)}},remove_floating_note:{fields:{id:l()}},set_floating_note_text:{fields:{id:l(),text:l()}},define_class:{fields:{name:l(),style:h(l(),'CSS-like pairs, e.g. "fill:#f96,stroke:#333"')}},set_state_class:{fields:{id:l(),className:x()}},set_state_style:{fields:{id:l(),style:h(x(),"inline style pairs; null clears")}},set_transition_style:{fields:{index:g(false),default:V(false),style:x(),parent:x(false),region:g(false)},requireOneOf:["index","default"]}};var Wo={add_participant:{fields:{id:l(),label:l(false),participantKind:R(Po,false)}},remove_participant:{fields:{id:l()}},add_message:{fields:{from:l(),to:l(),text:l(),wrap:V(false),style:h(R(sa,false),"default: sync"),index:h(g(false),"top-level insert position; default: append")}},remove_message:{fields:{index:g()}},set_message_text:{fields:{index:g(),text:l()}},set_message_wrap:{fields:{index:g(),wrap:h(pn(),"null inherits the diagram configuration")}},move_message:{fields:{from:h(g(),"top-level message index"),to:h(g(),"top-level target position")}},set_participant_label:{fields:{id:l(),label:l()}},add_fragment:{fields:{fragmentKind:R(wo),label:l(false),index:h(g(false),"fragment insert position; default: append")}},remove_fragment:{fields:{index:g()}},set_fragment_label:{fields:{index:g(),label:x()}},add_fragment_branch:{fields:{fragmentIndex:g(),label:l(false)}},set_fragment_branch_label:{fields:{fragmentIndex:g(),branchIndex:g(),label:x()}},add_fragment_message:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),from:l(),to:l(),text:l(),wrap:V(false),style:h(R(sa,false),"default: sync"),index:h(g(false),"message insert position; default: append")}},remove_fragment_message:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),index:g()}},set_fragment_message_text:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),index:g(),text:l()}},set_fragment_message_wrap:{fields:{fragmentIndex:g(),branchIndex:h(g(false),"default: 0"),index:g(),wrap:h(pn(),"null inherits the diagram configuration")}}};var Go={set_title:{fields:{title:x()}},add_section:{fields:{label:l(),index:h(g(false),"insert position; omit to append")}},remove_section:{fields:{index:g()}},set_section_label:{fields:{index:g(),label:l()}},add_period:{fields:{sectionIndex:g(),label:l(),events:z(false),index:h(g(false),"insert position; omit to append")}},remove_period:{fields:{sectionIndex:g(),periodIndex:g()}},set_period_label:{fields:{sectionIndex:g(),periodIndex:g(),label:l()}},add_event:{fields:{sectionIndex:g(),periodIndex:g(),text:l(),index:h(g(false),"insert position; omit to append")}},remove_event:{fields:{sectionIndex:g(),periodIndex:g(),eventIndex:g()}},set_event_text:{fields:{sectionIndex:g(),periodIndex:g(),eventIndex:g(),text:l()}},move_period:{fields:{fromSection:g(),fromIndex:g(),toSection:g(),toIndex:h(g(),"insert position in the target section, applied after removal")}},move_event:{fields:{fromSection:g(),fromPeriod:g(),fromIndex:g(),toSection:g(),toPeriod:g(),toIndex:h(g(),"insert position in the target period, applied after removal")}},move_section:{fields:{from:g(),to:g()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var Uo={set_title:{fields:{title:x()}},add_class:{fields:{id:l(),label:l(false),generic:h(l(false),"Mermaid generic parameter text without surrounding ~ delimiters"),members:z(false),namespace:h(l(false),'dot path, e.g. "Platform.Auth"; declared on demand')}},remove_class:{fields:{id:l()}},rename_class:{fields:{from:l(),to:l()}},set_class_generic:{fields:{class:l(),generic:h(x(),"parameter text without ~ delimiters; null removes it")}},add_member:{fields:{class:l(),text:l()}},remove_member:{fields:{class:l(),index:g()}},add_interface:{fields:{class:h(l(),"existing ordinary class; the interface is a new distinct occurrence"),label:h(l(),"non-empty portable interface endpoint name; repeated labels remain independent"),side:h(R(["from","to"],false),"default: to \u2014 Class --() Interface; from writes Interface ()-- Class"),relationLabel:h(l(false),"optional connector label, separate from the interface name"),lineStyle:h(R(["solid","dashed"],false),"default: solid")}},add_relation:{fields:{from:l(),to:l(),relKind:h(R(un),"class endpoint relationship; use add_interface for a lone lollipop, which creates a distinct interface occurrence"),label:l(false),markerAt:h(R(["from","to","both","none"],false),"marker endpoints; omit for the relation kind default"),fromKind:R(un,false),toKind:R(un,false),lineStyle:h(R(["solid","dashed"],false),"independent shaft style; must agree with style-specific endpoint kinds")}},remove_relation:{fields:{index:g()}},add_note:{fields:{text:l(),for:l(false)}},remove_note:{fields:{index:g()}},set_class_namespace:{fields:{class:l(),namespace:h(x(),"dot path moves the class into that namespace (declared on demand); null moves it to the top level")}},define_class:{fields:{name:l(),style:h(l(),'CSS-like pairs, e.g. "fill:#f96,stroke:#333"')}},set_css_class:{fields:{class:l(),className:x()}},set_class_style:{fields:{class:l(),style:x()}}};var Ho={add_entity:{fields:{id:l(),label:l(false),attributes:z(false)}},remove_entity:{fields:{id:l()}},rename_entity:{fields:{from:l(),to:l()}},set_entity_label:{fields:{entity:l(),label:x()}},add_attribute:{fields:{entity:l(),text:l()}},remove_attribute:{fields:{entity:l(),index:g()}},add_relation:{fields:{from:l(),to:l(),leftCard:R(da),rightCard:R(da.filter(e=>e!=="parent")),dashed:V(false),label:l(false)}},remove_relation:{fields:{index:g()}},set_direction:{fields:{direction:R(ma)}},define_class:{fields:{name:l(),style:l()}},set_entity_class:{fields:{entity:l(),className:x()}},set_entity_style:{fields:{entity:l(),style:x()}}};var Yo={set_title:{fields:{title:x()}},add_section:{fields:{label:l(),index:h(g(false),"insert position; omit to append")}},remove_section:{fields:{index:g()}},set_section_label:{fields:{index:g(),label:l()}},add_task:{fields:{sectionIndex:g(),text:l(),score:h(g(),"finite number 1..5"),actors:z(false),index:h(g(false),"insert position; omit to append")}},remove_task:{fields:{sectionIndex:g(),taskIndex:g()}},set_task_text:{fields:{sectionIndex:g(),taskIndex:g(),text:l()}},set_task_score:{fields:{sectionIndex:g(),taskIndex:g(),score:h(g(),"finite number 1..5")}},set_task_actors:{fields:{sectionIndex:g(),taskIndex:g(),actors:z()}},rename_actor:{fields:{from:l(),to:l()}},move_task:{fields:{fromSection:g(),fromIndex:g(),toSection:g(),toIndex:h(g(),"insert position in the target section, applied after removal")}},move_section:{fields:{from:g(),to:g()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var zo={set_title:{fields:{title:x()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}},add_service:{fields:{id:l(),label:l(false),icon:x(false),iconText:x(false),group:x(false)}},remove_service:{fields:{id:l()}},rename_service:{fields:{from:l(),to:l()}},set_service_label:{fields:{id:l(),label:l()}},set_service_icon:{fields:{id:l(),icon:x()}},set_service_icon_text:{fields:{id:l(),text:x()}},move_service:{fields:{id:l(),group:x()}},add_junction:{fields:{id:l(),group:x(false)}},remove_junction:{fields:{id:l()}},rename_junction:{fields:{from:l(),to:l()}},move_junction:{fields:{id:l(),group:x()}},add_group:{fields:{id:l(),label:l(false),icon:x(false),parent:x(false)}},set_group_label:{fields:{id:l(),label:l()}},remove_group:{fields:{id:l()}},add_edge:{fields:{from:l(),to:l(),fromSide:R(Ot),toSide:R(Ot),fromBoundary:R(Ct,false),toBoundary:R(Ct,false),label:x(false),hasArrowStart:V(false),hasArrowEnd:V(false)}},update_edge:{fields:{index:g(),from:l(false),to:l(false),fromSide:R(Ot,false),toSide:R(Ot,false),fromBoundary:R(Ct,false),toBoundary:R(Ct,false),label:x(false),hasArrowStart:V(false),hasArrowEnd:V(false)}},remove_edge:{fields:{index:g(false),id:l(false)},requireOneOf:["index","id"]}};var Ko={set_title:{fields:{title:x()}},set_x_axis:{fields:{axis:ge()}},set_y_axis:{fields:{axis:ge()}},add_series:{fields:{kind2:h(R(Lo),"series type \u2014 the field is named kind2, not kind"),name:x(false),values:Dt()}},remove_series:{fields:{index:g()}},set_series_values:{fields:{index:g(),values:Dt()}},set_series_name:{fields:{index:g(),name:x()}},reorder_series:{fields:{from:g(),to:g()}},set_orientation:{fields:{horizontal:h(V(),"true = horizontal, false = vertical (the default)")}},set_data_point:{fields:{seriesIndex:g(),index:h(g(),"0-based position within the series values"),value:h(g(),"finite")}}};var Xo={set_title:{fields:{title:x()}},set_show_data:{fields:{showData:V()}},add_slice:{fields:{label:l(),value:h(g(),"> 0, finite")}},remove_slice:{fields:{label:l()}},rename_slice:{fields:{from:l(),to:l()}},set_slice_value:{fields:{label:l(),value:h(g(),"> 0, finite")}},reorder_slice:{fields:{from:g(),to:g()}}};var Jo={set_title:{fields:{title:x()}},set_axis_labels:{fields:{axis:R(To),near:x(),far:x(false)}},set_quadrant_label:{fields:{quadrant:g(),label:x()}},add_point:{fields:{label:l(),x:h(g(),"0..1"),y:h(g(),"0..1")}},remove_point:{fields:{label:l()}},move_point:{fields:{label:l(),x:h(g(),"0..1"),y:h(g(),"0..1")}},rename_point:{fields:{from:l(),to:l()}}};var Qo={set_title:{fields:{title:x()}},add_section:{fields:{label:l()}},rename_section:{fields:{index:g(),label:l()}},remove_section:{fields:{index:g()}},add_task:{fields:{sectionIndex:g(),label:l(),taskId:l(false),tags:z(false),start:h(l(false),'date, or "after <taskId>"'),end:h(l(),'date, a duration like "3d", or "until <taskId>"'),index:h(g(false),"insert position; omit to append \u2014 inserting into an implicit-start chain re-chains the follower onto the new task")}},remove_task:{fields:{sectionIndex:g(),taskIndex:g()}},rename_task:{fields:{sectionIndex:g(),taskIndex:g(),label:l()}},set_task_status:{fields:{sectionIndex:g(),taskIndex:g(),status:R(No,true,true)}},set_task_dates:{fields:{sectionIndex:g(),taskIndex:g(),start:x(false),end:l(false)}},set_task_flags:{fields:{sectionIndex:g(),taskIndex:g(),milestone:V(false),vert:V(false)}},set_task_id:{fields:{sectionIndex:g(),taskIndex:g(),taskId:h(x(),"renames rewrite after/until references; null clears (rejected while referenced)")}},move_task:{fields:{fromSection:g(),fromIndex:g(),toSection:g(),toIndex:h(g(),"insert position in the target section, applied after removal \u2014 rejected if the move would change an implicit-start task's predecessor")}},move_section:{fields:{from:g(),to:g()}}};var Zo={add_node:{fields:{id:l(),label:l(),parent:l(),shape:R(ca,false),index:g(false)}},remove_node:{fields:{id:l(),recursive:V(false)}},rename_node:{fields:{from:l(),to:l()}},set_label:{fields:{id:l(),label:l()}},move_node:{fields:{id:l(),parent:l(),index:g(false)}},set_shape:{fields:{id:l(),shape:R(ca)}},set_icon:{fields:{id:l(),icon:x()}},set_node_class:{fields:{id:l(),className:x()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var es={append_commit:{fields:{id:l(false),message:l(false),type:R(mn,false),tags:z(false)}},create_branch:{fields:{name:l(),order:g(false)}},checkout_branch:{fields:{name:l()}},merge_branch:{fields:{name:l(),id:l(false),type:R(mn,false),tags:z(false)}},cherry_pick:{fields:{id:l(),parent:l(false),tags:z(false)}},set_commit_message:{fields:{id:l(),message:x()}},set_commit_type:{fields:{id:l(),type:R(mn)}},set_commit_tags:{fields:{id:l(),tags:z()}},rename_branch:{fields:{from:l(),to:l()}},set_accessibility_title:{fields:{title:x()}},set_accessibility_description:{fields:{description:x()}}};var ts={set_title:{fields:{title:x()}},add_axis:{fields:{id:l(),label:x(false),index:h(g(false),"insert position; omit to append"),fill:h(g(false),"value written to every existing curve for the new axis; default: min")}},remove_axis:{fields:{id:l()}},rename_axis:{fields:{from:l(),to:l()}},set_axis_label:{fields:{id:l(),label:x()}},reorder_axis:{fields:{from:g(),to:h(g(),"permutes every curve's value vector identically")}},add_curve:{fields:{id:l(),label:x(false),values:h(Dt(),"one value per axis, in axis order"),index:g(false)}},remove_curve:{fields:{id:l()}},set_curve_values:{fields:{id:l(),values:h(Dt(),"length must equal the axis count")}},set_curve_value:{fields:{curve:l(),axis:l(),value:h(g(),"non-negative, finite")}},set_curve_label:{fields:{id:l(),label:x()}},rename_curve:{fields:{from:l(),to:l()}},reorder_curve:{fields:{from:g(),to:g()}},set_config:{fields:{max:h(fn(false),"> min; null resets auto-max"),min:h(fn(false),"null resets 0"),ticks:h(fn(false),`integer 1..${ai}; null resets 5`),graticule:R(Vo,false,true),showLegend:h(pn(false),"null resets true")}}};var ns={add_link:{fields:{source:l(),target:l(),value:h(g(),"non-negative, finite"),index:h(g(false),"insert position; omit to append")}},remove_link:{fields:{source:l(),target:l(),occurrence:h(g(false),"disambiguates parallel duplicate rows; default 0")}},set_link_value:{fields:{source:l(),target:l(),value:h(g(),"non-negative, finite"),occurrence:g(false)}},rename_node:{fields:{from:l(),to:h(l(),"rejects an existing label \u2014 renaming must not merge nodes")}}};var rs={add_element:{fields:{element:h(ge(),"required record: id, label; optional macro, kind (person/system/container/component), shape (person/rectangle/database/queue), external, technology, description, parentId, tags, link, sprite; null is refused")}},update_element:{fields:{id:l(),changes:h(ge(),"element fields to change; use rename_element/reparent_element for identity or containment")}},rename_element:{fields:{from:l(),to:l()}},reparent_element:{fields:{id:l(),parentId:x()}},remove_element:{fields:{id:l(),cascade:h(V(false),"default false: refuse referenced elements; true also removes referencing relationships")}},add_boundary:{fields:{boundary:h(ge(),"required record: id, label; optional macro, kind (boundary/enterprise/system/container/deployment), type, description, parentId, tags, link, sprite; null is refused")}},update_boundary:{fields:{id:l(),changes:ge()}},rename_boundary:{fields:{from:l(),to:l()}},reparent_boundary:{fields:{id:l(),parentId:x()}},remove_boundary:{fields:{id:l(),cascade:h(V(false),"default false: refuse nonempty/referenced boundaries; true removes subtree and referencing relationships")}},add_relationship:{fields:{relationship:h(ge(),"required record: from, to, label; optional macro (Rel/BiRel/Rel_Back/Rel_U/Rel_D/Rel_L/Rel_R/RelIndex), technology, description, index, tags, link, sprite; parallel relationships remain distinct")}},update_relationship:{fields:{id:l(),changes:h(ge(),"relationship fields to change, addressed by the unique interaction id, not an endpoint pair")}},remove_relationship:{fields:{id:l()}},set_title:{fields:{title:x()}},set_variant:{fields:{variant:R(["C4Context","C4Container","C4Component","C4Dynamic","C4Deployment"])}},add_directive:{fields:{name:h(l(),"portable Mermaid UpdateElementStyle, UpdateRelStyle or UpdateLayoutConfig"),args:h(la(),"ordered records {value:string,name?:string}; named arguments omit the $ prefix")}},update_directive:{fields:{id:l(),args:la()}},remove_directive:{fields:{id:l()}}};var ye={zenuml:ra,eventmodeling:aa,flowchart:Bo,state:qo,sequence:Wo,timeline:Go,class:Uo,er:Ho,journey:Yo,architecture:zo,xychart:Ko,pie:Xo,quadrant:Jo,gantt:Qo,mindmap:Zo,gitgraph:es,radar:ts,sankey:ns,c4:rs,packet:ln,kanban:cn,requirement:_r,treemap:$r,ishikawa:Rr,block:kr};function ee(e){return Object.hasOwn(ye,e)}function is(e,t){const n=e.length,i=t.length;const r=Array.from({length:n+1},(a,o)=>[o,...Array(i).fill(0)]);for(let a=0;a<=i;a++)r[0][a]=a;for(let a=1;a<=n;a++)for(let o=1;o<=i;o++)r[a][o]=Math.min(r[a-1][o]+1,r[a][o-1]+1,r[a-1][o-1]+(e[a-1]===t[o-1]?0:1));return r[n][i]}function fa(e,t){let n;let i=Infinity;for(const r of t){const a=is(e.toLowerCase(),r.toLowerCase());if(a<i){i=a;n=r}}return n!==void 0&&i<=Math.max(2,Math.ceil(n.length*.4))?n:void 0}function gn(e){switch(e.type){case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"number-or-null":return"number | null";case"boolean-or-null":return"boolean | null";case"string-or-null":return"string | null";case"string-array":return"string[]";case"number-array":return"number[]";case"object-array":return"object[]";case"object-or-null":return"object | null";case"enum":return`one of ${e.values.map(t=>JSON.stringify(t)).join(", ")}${e.nullable?" | null":""}`}}function as(e,t){switch(e.type){case"string":return typeof t==="string";case"number":return typeof t==="number"&&Number.isFinite(t);case"boolean":return typeof t==="boolean";case"number-or-null":return t===null||typeof t==="number"&&Number.isFinite(t);case"boolean-or-null":return t===null||typeof t==="boolean";case"string-or-null":return t===null||typeof t==="string";case"string-array":return Array.isArray(t)&&t.every(n=>typeof n==="string");case"number-array":return Array.isArray(t)&&t.every(n=>typeof n==="number"&&Number.isFinite(n));case"object-array":return Array.isArray(t)&&t.every(n=>n!==null&&typeof n==="object"&&!Array.isArray(n));case"object-or-null":return t===null||typeof t==="object"&&!Array.isArray(t);case"enum":return e.nullable===true&&t===null||typeof t==="string"&&e.values.includes(t)}}function vt(e){const t=new Set;const n=i=>{if(i===null||i===void 0||typeof i==="string"||typeof i==="boolean"||typeof i==="number")return i;if(typeof i!=="object")throw new TypeError("operation values must be plain JSON data");if(t.has(i))throw new TypeError("operation data must not contain cycles");t.add(i);try{if(Array.isArray(i)){const s=Object.getPrototypeOf(i);if(s!==Array.prototype)throw new TypeError("operation arrays must use the standard array prototype");const d=Object.getOwnPropertyDescriptors(i);const m=d.length?.value;if(!Number.isSafeInteger(m)||m<0)throw new TypeError("operation arrays must have a readable length");const u=Reflect.ownKeys(i);if(u.some(p=>typeof p==="symbol"||p!=="length"&&!/^(0|[1-9]\d*)$/.test(p))){throw new TypeError("operation arrays must not carry symbols or named properties")}const y=[];for(let p=0;p<m;p++){const b=d[String(p)];if(!b||!("value"in b)||b.enumerable!==true){throw new TypeError("operation arrays must be dense own-data arrays")}y.push(n(b.value))}return y}const r=Object.getPrototypeOf(i);if(r!==Object.prototype&&r!==null){throw new TypeError("operation records must be plain objects")}const a=Object.getOwnPropertyDescriptors(i);const o=Object.create(null);for(const s of Reflect.ownKeys(i)){if(typeof s==="symbol")throw new TypeError("operation records must not carry symbol keys");const d=a[s];if(!d||!("value"in d)||d.enumerable!==true){throw new TypeError("operation records must contain enumerable own data fields")}o[s]=n(d.value)}return o}finally{t.delete(i)}};try{return{ok:true,value:n(e)}}catch{return{ok:false,message:"operation must be a plain own-data JSON object"}}}function pa(e,t){return{code:"INVALID_OP",reason:"unreadable_op",family:e,message:t,validFields:Object.keys(ye[e])}}function os(e,t){const n=ye[e];if(Array.isArray(t)){return{code:"INVALID_OP",reason:"expected_single_op",family:e,message:at(e,t),validFields:Object.keys(n)}}if(!t||typeof t!=="object"){return{code:"INVALID_OP",reason:"unknown_kind",family:e,message:at(e,t),validFields:Object.keys(n)}}const i=t;const r=i.kind;if(typeof r!=="string"||!Object.hasOwn(n,r)){const s=Object.keys(n);const d=typeof r==="string"?fa(r,s):void 0;return{code:"INVALID_OP",reason:"unknown_kind",family:e,opKind:typeof r==="string"?r:void 0,message:`${at(e,t)}${d?` Did you mean "${d}"?`:""}`,validFields:s,didYouMean:d}}const a=n[r];const o=Object.keys(a.fields);for(const s of Object.keys(i)){if(s==="kind")continue;if(!Object.hasOwn(a.fields,s)){const d=fa(s,o);return{code:"INVALID_OP",reason:"unknown_field",family:e,opKind:r,field:s,message:`Unknown field "${s}" for ${e} op "${r}".${d?` Did you mean "${d}"?`:""} Valid fields: ${o.join(", ")}.`,validFields:o,didYouMean:d}}}for(const[s,d]of Object.entries(a.fields)){if(!d.required)continue;if(i[s]===void 0){return{code:"INVALID_OP",reason:"missing_field",family:e,opKind:r,field:s,message:`Missing required field "${s}" (${gn(d)}) for ${e} op "${r}". Fields: ${o.join(", ")}.`,validFields:o}}}if(a.requireOneOf&&!a.requireOneOf.some(s=>i[s]!==void 0)){return{code:"INVALID_OP",reason:"require_one_of",family:e,opKind:r,message:`${e} op "${r}" requires at least one of: ${a.requireOneOf.join(", ")}.`,validFields:o}}for(const[s,d]of Object.entries(a.fields)){if(i[s]===void 0)continue;if(!as(d,i[s])){return{code:"INVALID_OP",reason:"wrong_type",family:e,opKind:r,field:s,message:`Field "${s}" of ${e} op "${r}" must be ${gn(d)}, got ${JSON.stringify(i[s])}.`,validFields:o}}}return null}function At(e,t){const n=vt(t);if(!n.ok)return pa(e,n.message);try{return os(e,n.value)}catch{return pa(e,"operation could not be validated as plain JSON data")}}function ga(e){if(!ee(e)){throw new RangeError(`family must be one of: ${Object.keys(ye).join(", ")}`)}const t={};for(const[n,i]of Object.entries(ye[e])){t[n]=Object.entries(i.fields).map(([r,a])=>a.required?r:`${r}?`)}return t}function ss(e){if(!ee(e)){throw new RangeError(`family must be one of: ${Object.keys(ye).join(", ")}`)}const t={};for(const[n,i]of Object.entries(ye[e])){t[n]=Object.entries(i.fields).map(([r,a])=>({name:r,required:a.required,type:gn(a),...a.note!==void 0?{note:a.note}:{}}))}return t}function ds(e){const t=ga(e);return Object.entries(t).map(([n,i])=>`${n}(${i.join(", ")})`)}function ls(e,t){const n=yn(e,t);oe("mutate",n.ok);return n}function yn(e,t,n=false,i){if(e.body.kind==="preserved"){return E({code:e.body.diagnostic.code==="UNKNOWN_HEADER"?"UNKNOWN_HEADER":"UNSUPPORTED_FAMILY",message:`${e.body.diagnostic.message}; the exact source remains preserved and cannot accept structured mutation`})}if(e.body.kind==="extension"){return E({code:"INVALID_OP",message:`Registered external family "${e.kind}" has no typed mutation contract in FamilyDescriptor v2`})}const r=O(e.kind);if(r?.mutate&&r.serialize){if(i&&(i.mutator!==r.mutate||i.body!==e.body)){i.mutator=r.mutate;i.body=e.body;i.apply=fi(r.mutate,e.body)}const a=i?.apply?Pi(e):e;const o=i?.apply?i.apply(t):r.mutate(e.body,t);if(!o.ok)return o;try{o.value=sr(o.value)}catch(s){if(!(s instanceof ar))throw s;return E({code:"INVALID_OP",message:s.message})}if(i)i.body=o.value;e=wi(a,o.value,t);return n?q({...e,body:o.value}):ya(e,o.value)}return E({code:"INVALID_OP",message:`Unsupported mutable diagram kind: ${e.kind}`})}function ya(e,t){if(t.kind==="preserved"||t.kind==="extension")return E({code:"INVALID_OP",message:"This source has no typed mutation contract"});const n=O(e.kind);const i=dr(t);const r=i===void 0?e.meta:{...e.meta,accessibility:i};let a=r;try{if(t.kind==="eventmodeling")a=yr(t,r);if(t.kind==="zenuml")a=gr(t.title,r,e.body.kind==="zenuml"&&t.title===e.body.title)}catch(p){return E({code:"INVALID_OP",message:p instanceof Error?p.message:String(p)})}const o=Li(it(n.serialize(t,a),a.accessibility),e.kind,t,a);const s=Ni(a,"verbatim",o,e.kind)+o;const d=v(s);if(!d.ok){return E({code:"INVALID_OP",message:`Mutation produced source that could not be reparsed: ${d.error.map(p=>p.message).join("; ")}`})}const m=d.value.kind===e.kind;const u=d.value.body.kind===t.kind;const y=!u&&d.value.body.kind==="opaque"&&n.verify?.(t,{}).some(p=>p.code==="EMPTY_DIAGRAM")===true;if(!m||!u&&!y){return E({code:"INVALID_OP",message:`Mutation changed semantic family while reparsing: expected ${e.kind}/${t.kind}, got ${d.value.kind}/${d.value.body.kind}`})}if(i&&(i.title!==d.value.meta.accessibility.title||i.descr!==d.value.meta.accessibility.descr)){return E({code:"INVALID_OP",message:"Accessibility text cannot be serialized by this family without changing its value; remove directive openers or description block delimiters"})}return q({...e,body:t,meta:{...d.value.meta,...e.meta.droppedComments?{droppedComments:e.meta.droppedComments}:{}},canonicalSource:s,source:d.value.source})}function je(e,t){let n=e;const i={};for(let a=0;a<t.length;a++){const o=ha(n,t[a],true,i);if(!o.ok)return E({...o.error,opIndex:a});n=o.value}if(!t.length)return q(e);const r=ya(n,n.body);return r.ok?r:E({...r.error,opIndex:t.length-1})}function us(e,t){return ha(e,t,false)}function hn(e,t){const n=ms(e,t);oe("mutate",n.ok);return n}function ms(e,t){if(e.body.kind!=="opaque"||e.body.family!==e.kind)return E({code:"INVALID_OP",message:"Source-preserving mutation requires an opaque body of its parsed family; use mutate for structured bodies"});const n=O(e.kind);if(!n?.mutateSource||!ee(e.kind))return E({code:"UNSUPPORTED_FAMILY",message:`${e.kind} has no source-preserving mutation contract`});const i=vt(t);const r=At(e.kind,i.ok?i.value:t);if(r)return E(r);const a=(e.meta.wrapperSource??"")+e.body.source;try{const o=n.mutateSource(a,i.ok?i.value:t);if(!o.ok)return o;const s=jr(a,o.value);if(s===a)return q({source:a,diagram:e});const d=v(s);if(!d.ok)return E({code:"INVALID_OP",message:`Source-preserving mutation could not be reparsed: ${d.error.map(u=>u.message).join("; ")}`});if(d.value.kind!==e.kind||d.value.body.kind!=="opaque")return E({code:"INVALID_OP",message:"Source-preserving mutation changed family or source-preserved representation"});const m=u=>({...u,comments:u.comments.map(y=>y.text)});if(!qr(m(e.meta),m(d.value.meta)))return E({code:"INVALID_OP",message:"Source-preserving mutation changed configuration, accessibility or comment metadata"});return q({source:s,diagram:d.value})}catch(o){return E({code:"INVALID_OP",message:o instanceof Error?o.message:String(o)})}}function ha(e,t,n,i){if(ee(e.kind)){const a=vt(t);const o=a.ok?a.value:t;const s=At(e.kind,o);if(s){oe("mutate",false);return E(s)}const d=yn(e,o,n,i);oe("mutate",d.ok);return d}const r=yn(e,t,n,i);oe("mutate",r.ok);return r}function fs(e,t){switch(e){case"flowchart":return{kind:"flowchart",graph:{direction:t.direction??"TD",nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map}};case"state":return{kind:"state",states:[],transitions:[],direction:t.direction};case"sequence":return{kind:"sequence",participants:[],messages:[],statements:[]};case"timeline":return{kind:"timeline",sections:[]};case"class":return{kind:"class",classes:[],relations:[],notes:[]};case"er":return{kind:"er",entities:[],relations:[]};case"journey":return{kind:"journey",sections:[]};case"architecture":return{kind:"architecture",groups:[],services:[],junctions:[],edges:[]};case"xychart":return{kind:"xychart",series:[]};case"pie":return{kind:"pie",showData:false,slices:[]};case"quadrant":return{kind:"quadrant",quadrants:[void 0,void 0,void 0,void 0],points:[]};case"gantt":return{kind:"gantt",sections:[],statements:[]};case"mindmap":return{kind:"mindmap",root:{id:"root",label:"root",shape:"default",children:[]}};case"gitgraph":return{kind:"gitgraph",direction:"LR",mainBranchName:"main",commits:[],branches:[{name:"main",order:0,sequence:0}],statements:[]};case"radar":return{kind:"radar",axes:[],curves:[],min:0,ticks:5,graticule:"circle",showLegend:true};case"sankey":return{kind:"sankey",links:[]};case"c4":return Dr(t.c4Variant);case"packet":return{kind:"packet",fields:[]};case"kanban":return{kind:"kanban",columns:[]};case"requirement":return{kind:"requirement",direction:"TB",requirements:[],elements:[],relations:[],classDefs:[]};case"treemap":return{kind:"treemap",nodes:[],classDefs:Object.create(null)};case"zenuml":return{kind:"zenuml",participants:[],statements:[]};case"eventmodeling":return{kind:"eventmodeling",frames:[],entities:[],data:Object.create(null),notes:[],specifications:[]};case"ishikawa":return{kind:"ishikawa",nodes:[]};case"block":return{kind:"block",root:{id:"root",type:"composite",children:[]},edges:[],classDefs:[]}}}function It(e,t={}){oe("build");const n=fs(e,t);if(!n)throw new Error(`createMermaid: unknown diagram kind "${String(e)}"`);const i={kind:e,body:n,meta:{initDirectives:[],comments:[],accessibility:{}},source:{nodes:new Map,edges:new Map,groups:new Map,labels:new Map},canonicalSource:""};return{...i,canonicalSource:F(i)}}function ps(e,t,n={}){const i=It(e,n);return je(i,t)}function gs(e,t,n){const i=me(e);const r=me(t);if(!i||!r||i[3]!==1||r[3]!==1)return void 0;const a=n/100;return Dn(i[0]*a+r[0]*(1-a),i[1]*a+r[1]*(1-a),i[2]*a+r[2]*(1-a))}function De(e,t){if(!e)return void 0;const n=t.appearance.colors;const i=m=>gs(n.fg,n.bg,m);const r=wn(n)?Pn(n):void 0;const a=r?{text:r.text,textSec:r.textSec,textMuted:r.textMuted,textFaint:r.textFaint,line:r.line,arrow:r.arrow,nodeFill:r.nodeFill,nodeStroke:r.nodeStroke,groupHdr:r.groupHdr,innerStroke:r.innerStroke,keyBadge:r.keyBadge}:{text:n.fg,textSec:n.muted??i(J.textSec),textMuted:n.muted??i(J.textMuted),textFaint:i(J.textFaint),line:n.line??i(J.line),arrow:n.accent??i(J.arrow),nodeFill:n.surface??i(J.nodeFill),nodeStroke:n.border??i(J.nodeStroke),groupHdr:i(J.groupHeader),innerStroke:i(J.innerStroke),keyBadge:i(J.keyBadge)};const o={"--bg":n.bg,"--fg":n.fg,"--_text":a.text,"--_text-sec":a.textSec,"--_text-muted":a.textMuted,"--_text-faint":a.textFaint,"--_line":a.line,"--_arrow":a.arrow,"--_node-fill":a.nodeFill,"--_node-stroke":a.nodeStroke,"--_group-fill":n.bg,"--_group-hdr":a.groupHdr,"--_inner-stroke":a.innerStroke,"--_key-badge":a.keyBadge};const s={"--line":n.line,"--accent":n.accent,"--muted":n.muted,"--surface":n.surface,"--border":n.border,...o};const d=e.match(/^var\(\s*(--[a-z0-9_-]+)(?:\s*,[\s\S]*)?\)$/i)?.[1];return d&&Object.hasOwn(s,d)?s[d]:e}function K(e,t){return{code:ir[e.action].code,constraint:e.kind,...t,message:`${t.message} Recovery: ${Ht[e.kind].recovery}`}}function ba(e,t){const n=e.channels??{};const i=t.channels??{};const r=a=>Object.entries(a).sort(([o],[s])=>Je(o,s));return JSON.stringify(r(n))===JSON.stringify(r(i))}function xa(e){const t=[];for(const n of e){if(n.kind==="text")t.push(n);else if(n.kind==="group")t.push(...xa(n.children.map(i=>i.node)))}return t}function ys(e,t){const n=Bt(e.geometry);if(!n)return false;const i=xa([t]);return i.length>0&&i.every(r=>r.x>=n.x0&&r.x<=n.x1&&r.y>=n.y0&&r.y<=n.y1)}function hs(e,t,n){const i=r=>r[r.length-1];return i(e.filter(r=>r.role===t.role&&ba(r,t)))??(n?i(e.filter(r=>r.role===n.role&&ba(r,n))):void 0)??i(e.filter(r=>ys(r,t)))}function ka(e,t,n,i,r){const a=[];for(const o of e){if(o.kind==="shape"){if(o.paint.fill!==void 0&&o.paint.fill!=="none"&&o.paint.fill!=="transparent")a.push(o);continue}const s=hs(a,o,r);const d=s?.paint.fill??t;if(o.kind==="text"){if(!i||o.role===i)n.push({node:o,background:d});continue}if(o.kind==="group"){ka(o.children.map(m=>m.node),d,n,i,o)}}}function bs(e,t,n){const i=e.minimum??4.5;if(n.renderOptions.transparent){return K(e,{measurement:"unmeasurable",minimum:i,message:"Final contrast is unmeasurable for transparent output because the host backdrop is unknown; no ratio was fabricated."})}const r=De(n.appearance.colors.bg,n);const a=[];ka(t.parts,r,a,e.role);if(a.length===0){return K(e,{measurement:"not-applicable",minimum:i,...e.role?{role:e.role}:{},message:`Contrast constraint has no applicable text mark${e.role?` for role ${e.role}`:""}.`})}const o=a.map(u=>{const y=De(u.node.paint.fill,n);const p=De(u.background,n);const b=y&&p?Xe(y,p,r):null;return{...u,foreground:y,background:p,ratio:b}});const s=o.filter(u=>u.ratio!==null).sort((u,y)=>u.ratio-y.ratio)[0];if(s&&s.ratio<i){const u=Math.round(s.ratio*100)/100;return K(e,{measurement:"measurable",minimum:i,ratio:u,role:s.node.role,mark:s.node.id,foreground:s.foreground,background:s.background,message:`Final ${s.node.role} contrast is ${u}:1; expected at least ${i}:1. Paint remains unchanged.`})}const d=o.find(u=>u.ratio===null);if(d){return K(e,{measurement:"unmeasurable",minimum:i,role:d.node.role,mark:d.node.id,...d.foreground?{foreground:d.foreground}:{},...d.background?{background:d.background}:{},message:"Final contrast is unmeasurable because an effective paint pair is unresolved; no ratio was fabricated."})}const m=Math.round(s.ratio*100)/100;return K(e,{measurement:"measurable",minimum:i,ratio:m,role:s.node.role,mark:s.node.id,foreground:s.foreground,background:s.background,message:`Final ${s.node.role} contrast is ${m}:1 and meets ${i}:1.`})}function xs(e,t){const n=me(e);const i=me(t);if(!n||!i)return e.trim().toLowerCase()===t.trim().toLowerCase();return n.every((r,a)=>Math.abs(r-i[a])<1e-6)}function ks(e,t,n){const i=De(n.appearance.colors.accent,n);if(!i)return K(e,{measurement:"unmeasurable",maximum:e.maxFraction,message:"Accent-area constraint is unmeasurable because no concrete accent paint is resolved."});let r=0;let a=0;Ve(t.parts,s=>{if(s.kind!=="shape"||s.role==="chrome")return;const d=De(s.paint.fill,n);if(!d||d==="none"||d==="transparent")return;const m=Bt(s.geometry);if(!m)return;const u=Math.max(0,m.x1-m.x0)*Math.max(0,m.y1-m.y0);r+=u;if(xs(d,i))a+=u});if(r===0)return K(e,{measurement:"not-applicable",maximum:e.maxFraction,message:"Accent-area constraint has no applicable filled shape area."});const o=Math.round(a/r*1e4)/1e4;return K(e,{measurement:"measurable",actual:o,maximum:e.maxFraction,message:o>e.maxFraction?`Accent fill covers ${(o*100).toFixed(2)}% of applicable shape area; maximum is ${(e.maxFraction*100).toFixed(2)}%. Paint remains unchanged.`:`Accent fill area is within the configured maximum.`})}function Ss(e,t,n){const i=[];Ve(t.parts,r=>{if(r.role!==e.role)return;const a=r.kind==="connector"?[r.stroke.color]:r.kind==="shape"||r.kind==="text"?[r.paint.fill,r.paint.stroke]:[];for(const o of a){const s=De(o,n);if(s&&s!=="none")i.push({mark:r.id,value:s})}});if(i.length===0)return K(e,{measurement:"not-applicable",role:e.role,message:`Mono-role constraint has no applicable paint for role ${e.role}.`});for(const r of i){const a=me(r.value);if(!a)return K(e,{measurement:"unmeasurable",role:e.role,mark:r.mark,message:`Mono-role paint ${r.value} is unresolved; no monochrome verdict was fabricated.`});if(Math.abs(a[0]-a[1])>1||Math.abs(a[1]-a[2])>1){return K(e,{measurement:"measurable",role:e.role,mark:r.mark,foreground:r.value,message:`Role ${e.role} uses chromatic paint ${r.value}; the mono-role constraint does not repaint it.`})}}return K(e,{measurement:"measurable",role:e.role,message:`Role ${e.role} uses only measurable monochrome paint.`})}var Rs={contrast:bs,"accent-area":ks,"mono-role":Ss};function Es(e,t,n){const i=Rs[e.kind];return i(e,t,n)}function Sa(e,t){const n=t.appearance.style?.constraints??[];const i=n.map(r=>Es(r,e,t)).filter(r=>{if(r.measurement!=="measurable")return true;if(r.constraint==="contrast")return(r.ratio??Infinity)<(r.minimum??4.5);if(r.constraint==="accent-area")return(r.actual??0)>(r.maximum??1);return r.foreground!==void 0});return i}var _s=[[Vi,"engine"],[Bi,"engine"],[Pe,"engine"],[tr,"engine"],[gt,"engine"],[ft,"config"],[pt,"config"],[hi,"config"],[qn,"config"],[yt,"config"],[ki,"config"],[tn,"config"],[pi,"config"],[Gn,"source"],[Tr,"source"],[ni,"source"],[ei,"source"],[nt,"source"],[Fr,"source"],[Te,"source"],[we,"source"],[Fi,"source"],[ji,"source"],[Ii,"source"],[ce,"source"]];var Ms=[TypeError,RangeError,ReferenceError];var $s=new Set(["SCENE_FIDELITY","SCENE_PRIMITIVE_CLAIM","SCENE_CHANNEL_CLAIM"]);function Ra(e){const t=new Set;let n=e;let i=e;while(i instanceof Error&&!t.has(i)){const r=i;t.add(r);if(r instanceof Nn){return r.attempts.length>0&&r.attempts.every(o=>o.violations.some(s=>s.endsWith(": duplicate identity")))?"source":"engine"}if(r instanceof Zt){return r.diagnostics.length>0&&r.diagnostics.every(o=>$s.has(o.code))?"engine":"source"}const a=_s.find(([o])=>r instanceof o);if(a)return a[1];n=r;i=r.cause}return n instanceof Error&&Ms.some(r=>Object.getPrototypeOf(n)===r.prototype)?"engine":"source"}var Se=class extends Error{family;operation;constructor(t,n,i){const r=i instanceof Error?i.message:String(i);super(`Mermaid family "${t}" ${n} hook failed: ${r}`,{cause:i});this.name="FamilyLayoutError";this.family=t;this.operation=n}};function Pt(e,t,n={}){const i=Ri(t);const r=i.family;if(r.id!==e.kind){throw new Error(`Resolved request planned family ${r.id}, not ${e.kind}`)}if(!r.layout||!r.projectPositioned)return null;if(t.renderOptions.layoutSafety==="strict"&&(!r.lowerScene||e.kind.startsWith("family:")))throw new Se(e.kind,"projectPositioned",new yt("Strict layout safety requires native Scene evidence"));let a;try{a=xt(e.kind,t,t.source,n)}catch(d){throw new Se(e.kind,"layout",d)}let o;try{o=Wi(a)??An(i.textMeasurement,()=>r.projectPositioned({positioned:a.positioned,options:n}))}catch(d){throw new Se(e.kind,"projectPositioned",d)}const s=Cs(e.kind,o);if(r.lowerScene&&!e.kind.startsWith("family:")){const d=Yi(t,a);if(t.renderOptions.layoutSafety==="strict"&&d.status!=="passed")throw new ce(d);Qe(s,d);if(n.debug)s.paintCertification=d}return{request:t,layoutResult:a,positioned:a.positioned,rendered:s}}function Os(e){switch(e.body.kind){case"xychart":return e.body.series.length>0;case"pie":return e.body.slices.length>0;case"gantt":return e.body.sections.some(t=>t.tasks.length>0);default:return false}}function Cs(e,t){const n={version:t.version,kind:e,nodes:t.nodes,edges:t.edges,groups:t.groups,bounds:t.bounds};if(t.certificates!==void 0)n.certificates=t.certificates;if(t.labels!==void 0)n.labels=t.labels;return n}function Ds(e,t,n={}){const i=O(e);if(!i?.projectPositioned)return null;return i.projectPositioned({positioned:t,options:n})}function vs(e){return qi(e)}function wt(e,t={}){const n=O(e.kind);if(!n?.layout||!n.projectPositioned)return null;const i={debug:t.debug};const r=vs(e);const a=Os(e);const o=m=>{const u=t.output??"layout";const y=ht(m,t.renderOptions??{},u,u==="layout"?i:void 0);if(t.assertScenes)mt(y);return Pt(e,y,i)};let s;try{s=o(r)}catch(m){if(!a)throw m;const u=F(e);if(u===r)throw m;return o(u)}if(!a||s.rendered.nodes.length>0)return s;const d=F(e);return d===r?s:o(d)}function _a(e,t,n={}){return Pt(e,t,n)?.rendered??null}function Ma(e){try{const t=ie(e.canonicalSource);const n=_e(le(t.lines),t.frontmatter);$e(n);return null}catch(t){const n=t instanceof Error?t.message:String(t);if(n.startsWith("GANTT_EMPTY"))return{code:"EMPTY_DIAGRAM"};return t instanceof nt?{code:"RENDER_FAILED",reason:n,origin:"source"}:{code:"UNRESOLVABLE_SCHEDULE",reason:n}}}function qe(e,t={}){const n=[];const i=.5;for(const r of e.nodes){if(r.x<-i||r.x+r.w>e.bounds.w+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"x"});if(r.y<-i||r.y+r.h>e.bounds.h+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"y"})}for(const r of e.edges){for(const[a,o]of r.path){if(a<-i||a>e.bounds.w+i){n.push({code:"OFF_CANVAS",target:r.id,axis:"x"});break}}for(const[a,o]of r.path){if(o<-i||o>e.bounds.h+i){n.push({code:"OFF_CANVAS",target:r.id,axis:"y"});break}}}for(const r of e.labels??[]){if(r.visibility==="hidden"||r.visibility==="semantic"||!r.bounds)continue;const{x:a,y:o,w:s,h:d}=r.bounds;if(a<-i||a+s>e.bounds.w+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"x"});if(o<-i||o+d>e.bounds.h+i)n.push({code:"OFF_CANVAS",target:r.id,axis:"y"})}if(t.nodeOverlaps){for(let r=0;r<e.nodes.length;r++){for(let a=r+1;a<e.nodes.length;a++){const o=e.nodes[r],s=e.nodes[a];const d=Math.max(0,Math.min(o.x+o.w,s.x+s.w)-Math.max(o.x,s.x));const m=Math.max(0,Math.min(o.y+o.h,s.y+s.h)-Math.max(o.y,s.y));const u=d*m;if(u>i)n.push({code:"NODE_OVERLAP",a:o.id,b:s.id,areaPx:Math.round(u)})}}}if(t.groupContainment){const r=new Map(e.nodes.map(a=>[a.id,a]));for(const a of e.groups){for(const o of a.members){const s=r.get(o);if(!s)continue;const d=t.groupContainment==="center"?s.x+s.w/2>=a.x-i&&s.y+s.h/2>=a.y-i&&s.x+s.w/2<=a.x+a.w+i&&s.y+s.h/2<=a.y+a.h+i:s.x>=a.x-i&&s.y>=a.y-i&&s.x+s.w<=a.x+a.w+i&&s.y+s.h<=a.y+a.h+i;if(!d)n.push({code:"GROUP_BREACH",group:a.id,member:o})}}}if(t.edgeAnchors){const r=new Map(e.nodes.map(a=>[a.id,a]));for(const a of e.edges){const o=a.path[0];const s=a.path[a.path.length-1];const d=r.get(a.from);const m=r.get(a.to);if(o&&d&&!Ea(o[0],o[1],d,i))n.push({code:"ROUTE_SHAPE_MISANCHOR",edge:a.id,node:d.id});if(s&&m&&!Ea(s[0],s[1],m,i))n.push({code:"ROUTE_SHAPE_MISANCHOR",edge:a.id,node:m.id})}}return n}function Ea(e,t,n,i){const r=(Math.abs(e-n.x)<=i||Math.abs(e-(n.x+n.w))<=i)&&t>=n.y-i&&t<=n.y+n.h+i;const a=(Math.abs(t-n.y)<=i||Math.abs(t-(n.y+n.h))<=i)&&e>=n.x-i&&e<=n.x+n.w+i;return r||a}function $a(e){const t=[];const n=.5;for(const r of e.nodes){if(r.x<-n||r.x+r.w>e.bounds.w+n)t.push({code:"OFF_CANVAS",target:r.id,axis:"x"});if(r.y<-n||r.y+r.h>e.bounds.h+n)t.push({code:"OFF_CANVAS",target:r.id,axis:"y"})}const i=new Map(e.nodes.map(r=>[r.id,r]));for(const r of e.groups){for(const a of r.members){const o=i.get(a);if(!o)continue;const s=o.x>=r.x-n&&o.y>=r.y-n&&o.x+o.w<=r.x+r.w+n&&o.y+o.h<=r.y+r.h+n;if(!s)t.push({code:"GROUP_BREACH",group:r.id,member:a})}}return t}var Ca=new Set(["flowchart","state","class","er","block","requirement"]);var As=new Set([...Ca,"quadrant","treemap"]);function Da(e,t,n,i){const r=new Set;let a=0,o=0;for(let s=0;s<t.types.length;s++){if(t.types[s]!==n&&t.types[s]!==i)continue;const d=t.starts[s];while(a+1<e.length&&o+e[a].length<d)o+=e[a++].length+1;if(!e[a].slice(0,d-o).trim())r.add(a+1)}return r}function Is(e,t){const n=[...e];const i=n.findIndex(r=>r.trim()&&!r.trimStart().startsWith("%%"));if(i>=0){let r=0;for(let s=0;s<i;s++){const d=Un(t.originalText,r);r=d+(t.originalText[d]==="\r"&&t.originalText[d+1]==="\n"?2:1)}const a=Yn(t,r);const o=/^[^\S\r\n]*requirement(?:Diagram)?(?=$|[\s;%])/i.exec(t.text.slice(a));if(o){const s=Hn(t,a+o[0].length,"end");n[i]="requirementDiagram"+n[i].slice(s-r)}}return Da(n,xr(n.join("\n")),46,47)}function va(e,t){const n=v(e);if(!n.ok||n.value.body.kind==="opaque"||n.value.body.kind==="preserved")return void 0;const{comments:i,wrapperSource:r,...a}=n.value.meta;return JSON.stringify([a,n.value.body],(o,s)=>s instanceof Map?[...s]:s instanceof Set?[...s]:t&&typeof s==="string"&&s.includes("<")?Wt(s).upstreamText:s)}function Oa(e,t,n,i){const r=i&&t.some(s=>s.reason==="html-attribute-quotes");const a=n(r);if(a===void 0)return true;let o=e;for(const s of[...t].sort((d,m)=>m.originalStart-d.originalStart)){const d=s.reason==="style-semicolon"?" ".repeat(s.originalEnd-s.originalStart):"'";o=o.slice(0,s.originalStart)+d+o.slice(s.originalEnd)}return va(o,r)!==a}function We(e){const t=typeof e==="string"?e:e.originalText;if(!t.includes("<")&&!t.includes("style")&&!t.includes("classDef"))return[];const n=typeof e==="string"?Wt(t):e;if(!n.changes.some(k=>k.reason==="html-attribute-quotes"||k.reason==="style-semicolon"))return[];const i=Bn(Fn(n.text),"loose");const r=Ze(t)?.source.length??0;const a=[...t.matchAll(new RegExp(jt.source,"gm"))];const o=t.split(/\r\n?|\n/);let s;let d;let m;const u=k=>{if(!s){s=new Set;const C=t.slice(0,r).match(/\r\n?|\n/g)?.length??0;const D=t.replace(new RegExp(jt.source,"gm"),A=>A.replace(/[^\r\n]/g," ")).split(/\r\n?|\n/).map((A,N)=>N<C?"":A);d=D.slice();const ne=i?.statementEnds?.(D);for(let A=0;A<D.length;A++){const N=tt(D,A);const re=N===void 0?D.length-1:N?N.endIndex:Wn(ne,A,D.length);for(let j=A+1;j<=re;j++)s.add(j+1);if(N!==null)for(let j=A;j<=re;j++)d[j]="";A=re}}return s.has(k)};const y=k=>{if(i?.id==="flowchart")return lr(o[k-1]??"").length===1;if(i?.id!=="class"&&i?.id!=="er"&&i?.id!=="block"&&i?.id!=="requirement")return true;if(!m){try{if(i.id==="class")m=Pr(d);else if(i.id==="er")m=Lr(d);else if(i.id==="block")m=Da(d,br(d.join("\n")),18,11);else m=Is(d,n)}catch{m=new Set}}return m.has(k)};const p=new Map;for(const k of n.changes){if(k.reason!=="html-attribute-quotes"&&k.reason!=="style-semicolon")continue;if(k.reason==="style-semicolon"){if(k.originalStart<r)continue;if(/^\s*%%/.test(o[k.line-1]??""))continue;const C=/^\s*(style|classDef)\s/.exec(o[k.line-1]??"")?.[1];const D=C==="classDef"?As:Ca;const ne=o[k.line-1].slice(k.col-1+k.originalEnd-k.originalStart);if(C&&i&&D.has(i.id)&&!ne.trim()&&!u(k.line)&&y(k.line))continue;let A=0,N=a.length;while(A<N){const j=A+Math.floor((N-A)/2);if(a[j].index<=k.originalStart)A=j+1;else N=j}const re=a[A-1];if(re&&k.originalStart<re.index+re[0].length)continue}p.set(k.line,[...p.get(k.line)??[],k])}if(p.size===0)return[];let b=false;if(i?.id==="flowchart"){try{const{config:k}=ie(t);b=String(k.htmlLabels??k.flowchart?.htmlLabels??true)!=="false"}catch{b=false}}const S=new Map;const _=k=>{if(!S.has(k))S.set(k,va(t,k));return S.get(k)};const P=[...p.values()].flat();const G=[...new Set(P.map(k=>k.reason))];let M=G.filter(k=>Oa(t,P.filter(C=>C.reason===k),_,b));if(M.length===0&&G.length>1&&Oa(t,P,_,b))M=G;const w=new Map;for(const[k,C]of p){const D=M.filter(ne=>C.some(A=>A.reason===ne));if(D.length>0)w.set(k,D.map(ne=>ne==="html-attribute-quotes"?"rewrites double-quoted HTML-like attributes to single quotes":"removes a style/classDef semicolon"))}return[...w].sort(([k],[C])=>k-C).map(([k,C])=>({code:"UNSUPPORTED_SYNTAX",syntax:"mermaid_cleanup",line:k,message:`Mermaid's cleanup changed this line: it ${[...C].join(" and ")} before parsing. Agentic Mermaid retains the authored text; use entity codes for literal punctuation when exporting to Mermaid.`}))}function bn(e){let t=0,n=0;for(const i of e){t++;if(i.regions){for(const r of i.regions){const a=bn(r.states);t+=a.nodes;n+=a.edges+r.transitions.length}}else{if(i.states&&i.states.length){const r=bn(i.states);t+=r.nodes;n+=r.edges}if(i.transitions)n+=i.transitions.length}}return{nodes:t,edges:n}}function Aa(e){let t=0;for(const n of e){t++;t+=Aa(n.children)}return t}function xn(e){const t=e.body;switch(t.kind){case"flowchart":{const n=t.graph;return{nodes:n.nodes.size,edges:n.edges.length,groups:Aa(n.subgraphs)}}case"sequence":return{nodes:t.participants.length,edges:lt(t).length,groups:0};case"state":{const n=bn(t.states);return{nodes:n.nodes,edges:n.edges+t.transitions.length,groups:0}}case"class":return{nodes:t.classes.length,edges:t.relations.length,groups:(t.namespaces??[]).length};case"er":return{nodes:t.entities.length,edges:t.relations.length,groups:(t.groups??[]).length};case"timeline":{let n=0;for(const i of t.sections)for(const r of i.periods)n+=1+r.events.length;return{nodes:n,edges:0,groups:t.sections.length}}case"journey":{let n=0;for(const i of t.sections)n+=i.tasks.length;return{nodes:n,edges:0,groups:t.sections.length}}case"architecture":return{nodes:t.services.length+t.junctions.length,edges:t.edges.length,groups:t.groups.length};case"xychart":return{nodes:t.series.length,edges:0,groups:0};case"pie":return{nodes:t.slices.length,edges:0,groups:0};case"quadrant":return{nodes:t.points.length,edges:0,groups:0};case"gantt":{let n=0;for(const i of t.sections)n+=i.tasks.length;return{nodes:n,edges:0,groups:t.sections.length}}case"mindmap":{let n=0,i=0;const r=a=>{n++;i+=a.children.length;a.children.forEach(r)};r(t.root);return{nodes:n,edges:i,groups:0}}case"gitgraph":return{nodes:t.commits.length,edges:t.commits.reduce((n,i)=>n+i.parents.length,0),groups:t.branches.length};case"radar":return{nodes:t.curves.reduce((n,i)=>n+i.values.length,0),edges:0,groups:t.axes.length};case"c4":return{nodes:t.elements.length,edges:t.relationships.length,groups:t.boundaries.length};case"sankey":{const n=new Set;for(const i of t.links){n.add(i.source);n.add(i.target)}return{nodes:n.size,edges:t.links.length,groups:0}}case"zenuml":{const n=be(t);return{nodes:n.actors.filter(i=>!i.external).length,edges:n.messages.length,groups:n.blocks.length}}case"eventmodeling":return{nodes:t.frames.length,edges:xe(t).length,groups:ot(t).length};case"packet":case"kanban":case"requirement":case"block":case"treemap":case"ishikawa":return st(t);case"opaque":case"extension":case"preserved":return null;default:{const n=t;void n;return null}}}function Ps(e,t){return e.nodes===t.nodes&&e.edges===t.edges&&e.groups===t.groups}function kn(e,t){if(!e)return[];if(!t)return[{code:"CONTENT_DROPPED_ON_ROUNDTRIP",before:e,after:{nodes:0,edges:0,groups:0}}];if(!Ps(e,t))return[{code:"CONTENT_DROPPED_ON_ROUNDTRIP",before:e,after:t}];return[]}function ws(e){const t=[e.meta.frontmatter,...e.meta.initDirectives.map(r=>r.parsed)];const n=O(e.kind);const i=en(e.kind,t,n?.config,n?.configDiagnostics);try{Ti(e.meta,e.kind)}catch(r){i.push({code:"UNSUPPORTED_SYNTAX",syntax:"mermaid_wrapper_config",message:r instanceof Error?r.message:String(r)})}return i}var Ls=new Set(["rectangle","service","rounded","diamond","stadium","circle","ellipse","subroutine","doublecircle","hexagon","cylinder","asymmetric","trapezoid","trapezoid-alt","lean-r","lean-l","state-start","state-end","state-fork","state-join","state-choice","state-history"]);function Ts(e){if(e.meta.accessibility.title!==void 0||e.meta.accessibility.descr!==void 0)return false;if(e.body.kind==="opaque"){const n=e.kind==="timeline"?ie(e.body.source).familyText:e.body.source;return Ia(e.kind,n)}const t=O(e.kind)?.serialize;if(!t)return false;try{return Ia(e.kind,it(t(e.body),e.meta.accessibility))}catch{return false}}function Ia(e,t){const n=t.split(/[;\n]/).map(a=>a.trim()).filter(a=>a&&!a.startsWith("%%"));if(n.length===0)return true;if(n.length>1)return false;const i=n[0].toLowerCase();const r=(Ut(e)?.headers??[e]).map(a=>a.toLowerCase());return r.some(a=>i===a||i.startsWith(`${a} `))}function Ns(e){try{const t=xn(e);if(!t)return[];const n=v(F(e));if(!n.ok)return kn(t,null);const i=xn(n.value);if(!i)return[];return kn(t,i)}catch{return[]}}function Ae(e,t={}){return Vs(e,t)}function Vs(e,t,n){oe("verify");let i;try{i=typeof e==="string"?v(e):{ok:true,value:e}}catch(u){if(!(u instanceof we))throw u;const y=T([Nt(u,()=>"fails")],U(typeof e==="string"?"flowchart":e.kind),t,false);return{...y,ok:false,checks:{...y.checks,renderability:"failed"}}}const r=i.ok?[...id(i.value),...Ns(i.value)]:[];const a=Fs(e,t,i,n);const o=new Set(t.suppress??[]);const s=$(a.warnings,r.filter(u=>!o.has(u.code)));const d=(t.suppress??[]).some(u=>fe[u]==="error");const m=s.some(u=>u.code==="RENDER_FAILED"||u.code==="INTERNAL_ERROR");return{...a,warnings:s,checks:{renderability:m?"failed":a.ok&&!d?"passed":"not-checked",sourceLoss:r.length>0||a.checks?.sourceLoss==="detected"?"detected":"not-detected",taskCorrectness:"not-checked"}}}function Fs(e,t,n,i){if(!n.ok){const a=n.error[0]?.code;const o=typeof e==="string"&&a!=="INVALID_FRONTMATTER"&&a!=="CONFIG_REJECTED"&&Tn(ie(e).firstLine);const s=[...o?Qt(e):[],...typeof e==="string"&&a!=="INVALID_FRONTMATTER"&&a!=="CONFIG_REJECTED"?We(e):[]];return{...T([js(n.error),...s],U("flowchart"),t),ok:false}}if(n.value.body.kind==="preserved"){const{diagnostic:a}=n.value.body;return T([{code:"RENDER_FAILED",reason:`${a.code}: ${a.message}`,origin:"source"}],U(n.value.kind),t,false)}const r=Ws(n.value,t,typeof e==="string"?e:void 0,i);try{const a=typeof e==="string"?e:F(n.value);const o=zn(a,t.renderOptions?.mermaidConfig??{});if(n.value.kind==="architecture")ht(a,t.renderOptions??{},"svg");else xi(o.config.themeVariables,n.value.kind,t.renderOptions);bi(o.frontmatter,n.value.kind)}catch(a){return T([r.failure(a)],U(n.value.kind),t,false)}try{const a=ad(n.value,t,r,typeof e==="string"?e:void 0);return Gs(qs(a,t,r),t,r,i)}catch(a){if(!(a instanceof ce||a instanceof Se||a instanceof pt||a instanceof ft||a instanceof we))throw a;const o=a instanceof ce?{layoutCertification:a.certification}:{};return{...T([r.failure(a)],U(n.value.kind),t,false),...o}}}function Nt(e,t,n=""){const i=Vn(e);if(i)throw i;const r=`${n}${e instanceof Error?e.message:String(e)}`;const a=Ra(e);return a==="engine"?{code:"INTERNAL_ERROR",reason:r,defaultRender:t()}:{code:"RENDER_FAILED",reason:r,origin:a}}function Bs(e,t,n){try{const{onConfigDiagnostic:i,...r}=t.renderOptions??{};const a=Oe(n??e);Rt(a.source,r,"svg",void 0,{expectedFamilyId:a.expectedFamilyId});return"succeeds-unchecked"}catch{return"fails"}}function js(e){if(e.every(t=>t.code==="EMPTY"))return{code:"EMPTY_DIAGRAM"};return{code:"RENDER_FAILED",reason:e.map(t=>t.message).join("; "),origin:e.some(t=>t.code==="CONFIG_REJECTED"||t.code==="FAMILY_DESCRIPTOR_CONTRACT")?"config":"source"}}function qs(e,t,n){if(!e.ok)return e;try{const i=n();const r=i?.request.appearance.style?.constraints;if(!i||!r||r.length===0)return e;const a=St(i.request,i.layoutResult);const o=new Set(t.suppress??[]);const s=Sa(a,i.request).filter(d=>!o.has(d.code));return{...e,ok:e.ok&&!s.some(d=>fe[d.code]==="error"),warnings:[...e.warnings,...s]}}catch{return e}}function Ws(e,t,n,i){let r=false;let a=null;let o;let s;const d=(m,u)=>Nt(m,()=>s??=Bs(e,t,n),u);return Object.assign(()=>{if(r){if(o!==void 0)throw o;return a}r=true;try{if(i){const m=Me(i.source,t.renderOptions??{},"svg",void 0,{expectedFamilyId:e.kind});bt(m);mt(m);a=Pt(e,m);if(a)i.artifact=a}else{a=wt(e,{renderOptions:t.renderOptions,output:"svg",assertScenes:true})}return a}catch(m){o=m;throw m}},{failure:d})}function Gs(e,t,n,i){if(!e.ok||(t.suppress??[]).some(r=>r==="RENDER_FAILED"||fe[r]==="error"))return e;try{const r=n();if(!r)throw new Error(`Mermaid family "${e.layout.kind}" has no positioned graphical artifact`);const a=zi(r.request,r.layoutResult,i?.diagnostics??[]);if(i)i.rendered=a;return{...e,...a.layoutCertification?{layoutCertification:a.layoutCertification}:{}}}catch(r){return{...e,ok:false,...r instanceof ce?{layoutCertification:r.certification}:{},warnings:[...e.warnings,n.failure(r)]}}}function Us(e){try{const t=ie(e.canonicalSource);const n=_e(le(t.lines),t.frontmatter);const i=n.todayMarker?.style;if(i===void 0)return[];return[...Vr(i).ignored].sort().map(r=>({code:"INEFFECTIVE_CONFIG",field:`todayMarker.${r}`,message:`Gantt todayMarker style property "${r}" is accepted for Mermaid compatibility but is not applied to the today line (wired, sanitized properties: ${Nr.join(", ")}).`}))}catch{return[]}}function Hs(e){if(e.kind!=="flowchart"||e.body.kind!=="flowchart")return[];const t=[];for(const n of e.body.graph.nodes.values()){if(!n.semanticShape)continue;const i=Yr(n.semanticShape);if(!i||i.exact)continue;t.push({code:"UNSUPPORTED_SYNTAX",syntax:"flowchart_shape_substitution",node:n.id,message:`Mermaid v11 shape "${n.authoredShape??n.semanticShape}" (${i.description}) has no dedicated renderer yet; node "${n.id}" renders with the nearest geometry "${i.geometry}".`})}return t}function Ys(e){if(e.body.kind!=="quadrant")return[];const t=new Set;const n=i=>{for(const r of i?.extra??[])t.add(r.slice(0,r.indexOf(":")).trim())};for(const i of e.body.points)n(i.style);for(const i of Object.values(e.body.classDefs??{}))n(i);return[...t].sort().map(i=>({code:"UNSUPPORTED_SYNTAX",syntax:"quadrant_style_property",message:`Quadrant style property "${i}" is preserved in source for upstream compatibility but has no effect on rendered points (rendered properties: radius, color, stroke-color, stroke-width).`}))}function zs(e){if(e.body.kind!=="treemap")return[];return e.canonicalSource.split(/\r?\n/).flatMap((t,n)=>/["']\s*[:,]\s*[\d.,]*_/.test(t)?[{code:"UNSUPPORTED_SYNTAX",syntax:"treemap_numeric_separator",line:Ee(e.source,n+1),message:"Underscores in Treemap quantities are read as digit separators; Mermaid 12.2.0 does not preserve that quantity. Canonical edits write the full numeric value without underscores."}]:[])}var Ks={eventmodeling:hr,architecture:Br,block:Sr,ishikawa:Er,requirement:Mr,class:Ur,er:Hr,flowchart:Qr,gantt:Zr,journey:ti,mindmap:ri,quadrant:ii,radar:oi,sankey:si,sequence:di,state:ci,timeline:li,xychart:mi};function Xs(e,t){const n=Ks[e.kind];if(!n)return[];const i=t?.split(/\r\n?|\n/);const r=i?a=>i[Ee(e.source,a)-1]:a=>pr(e.source,a);return Sn(n(e.canonicalSource,r),a=>Ee(e.source,a))}function Sn(e,t){return e.map(n=>n.code==="UNSUPPORTED_SYNTAX"&&n.line!==void 0?{...n,line:t(n.line)}:n)}function Js(e,t){const n=e.body.kind==="opaque"?or(e.body.source,O(e.kind)?.statementEnds):void 0;const i=e.meta.wrapperSource??"";const r=Ze(i);const a=r&&r.yaml===""?[{code:"UNSUPPORTED_SYNTAX",syntax:"empty_frontmatter",line:i.slice(0,i.indexOf("---")).split(/\r\n?|\n/).length,message:"Frontmatter without a content line is read as no configuration. Pinned Mermaid rejects adjacent delimiters; serialization omits them."}]:[];if(n)a.push({code:"UNSUPPORTED_SYNTAX",syntax:"accessibility_directive_text",message:n});for(const s of e.meta.initDirectives)if(/\}\s+%%\s*$/.test(s.raw))a.push({code:"UNSUPPORTED_SYNTAX",syntax:"separated_directive_close",message:"Directive closing delimiters must be contiguous in pinned Mermaid. Native reading repairs the separated close; canonical serialization emits }%%."});const o=fr(e.source);if(o)return[...a,...We(o)];if(t!==void 0)return[...a,...We(t)];return[...a,...We(e.canonicalSource).map(s=>s.code==="UNSUPPORTED_SYNTAX"&&s.line!==void 0?{...s,line:Ee(e.source,s.line)}:s)]}function Qs(e){try{const t=e();if(t?.request.renderOptions.transparent)return[];const n=t?.request.familyConfig?.visual;const i=n?.axisColor;if(typeof i!=="string")return[];const r=t.request.appearance.colors.bg;const a=Xe(i,r);if(a===null||a>=4.5)return[];const o=Math.round(a*100)/100;return[{code:"LOW_CONTRAST",field:"themeVariables.radar.axisColor",foreground:i,background:r,ratio:o,minimum:4.5,message:`Authored Radar axis label color ${i} has contrast ${o}:1 against ${r}; expected at least 4.5:1. The color is preserved as authored.`}]}catch{return[]}}function Zs(e){try{const t=e()?.layoutResult.positioned;if(t?.body.kind!=="c4")return[];return t.diagnostics.map(n=>{const i=t.body.statements.find(r=>r.id===n.statementId);if(n.code==="C4_LABEL_COLLISION"||n.code==="C4_ARROW_OCCLUDED"){return{code:"CONTENT_OCCLUDED",target:i?.entityId??"C4 layout",feature:n.code==="C4_ARROW_OCCLUDED"?"marker":"label",line:i?.span.line,message:`${n.code}: ${n.message}`}}if(n.code==="C4_WIDTH_EXCEEDED")return{code:"LAYOUT_LIMIT_EXCEEDED",constraint:"c4.maxWidth",message:`${n.code}: ${n.message}`};return{code:"UNSUPPORTED_SYNTAX",line:i?.span.line,syntax:n.code.toLowerCase(),message:`${n.code}: ${vr(t.body,n)}`}})}catch{return[]}}function ed(e,t){try{const n=t()?.positioned;const i=n?.widthFit;return i?.status==="exceeded"?[{code:"LAYOUT_LIMIT_EXCEEDED",constraint:`${e}.maxWidth`,message:`The requested ${e} width ${i.maxWidth}px cannot contain the ${i.width}px artifact within the bounded fitting policy; legend text, selected typography and existing scale annotations are retained.`}]:[]}catch{return[]}}function td(e){try{const t=e()?.positioned;if(!t?.hiddenLabels.length)return[];return[{code:"LABELS_HIDDEN",target:"data-labels",labels:t.hiddenLabels,message:"Treemap labels do not fit their value-proportional cells; enlarge the canvas or reduce the hierarchy."}]}catch{return[]}}function nd(e){try{const t=e()?.positioned;if(!t)return[];const n=[];if(t.hiddenTitle){n.push({code:"LABELS_HIDDEN",target:"title",labels:[t.hiddenTitle],message:`XY chart does not draw its title because it does not fit: ${t.hiddenTitle}. Enlarge the chart, shorten the title, or lower xyChart.plotReservedSpacePercent.`})}const i=t.hiddenCategoryLabels??[];const r=t.hiddenLegendLabels??[];if(r.length>0){n.push({code:"LABELS_HIDDEN",target:"legend",labels:r,message:`XY chart does not draw ${r.length} legend ${r.length===1?"entry":"entries"} because the legend does not fit: ${r.join(", ")}. Enlarge the chart, shorten the series names, or lower xyChart.plotReservedSpacePercent.`})}if(i.length>0){const o=t.horizontal?"Shorten the category names, widen the chart, or lower xyChart.plotReservedSpacePercent.":"Shorten the category names, or call set_orientation {horizontal: true} to list categories down the side.";n.push({code:"LABELS_HIDDEN",target:"x-axis",labels:i,message:`XY chart does not draw ${i.length} x-axis category ${i.length===1?"name":"names"} because ${i.length===1?"it does":"they do"} not fit: ${i.join(", ")}. ${o}`})}const a=t.unlabeledBars??[];if(a.length>0){const o=a.map(s=>`${s.label??""} = ${ui(s.value)}`.trim());n.push({code:"LABELS_HIDDEN",target:"data-labels",labels:o,message:`XY chart does not draw ${a.length} bar value ${a.length===1?"label":"labels"} because neither the bar nor the plot beyond it has room: ${o.join(", ")}. Widen the value range or enlarge the chart.`})}return n}catch{return[]}}function rd(e){try{const t=e()?.positioned;const n=(t?.points??[]).filter(i=>i.labelHidden).map(i=>i.label);if(n.length===0)return[];return[{code:"LABELS_HIDDEN",target:"point-labels",labels:n,message:`Quadrant chart does not draw ${n.length} point ${n.length===1?"label":"labels"} because ${n.length===1?"it collides":"they collide"} with labels placed first: ${n.join(", ")}. Spread the points, shorten the names, or enlarge the chart.`}]}catch{return[]}}function Ta(e){if(e.body.kind==="preserved")return[];if(e.body.kind==="extension"){const i=O(e.kind);return i?.configDiagnostics?en(e.kind,[e.meta.frontmatter,...e.meta.initDirectives.map(r=>r.parsed)],i.config,i.configDiagnostics):[]}const t=e;const n=t.kind==="gantt"?Us(t):[];return $(n,ws(t))}function Uf(e){const t=v(e);return t.ok?Ta(t.value):[]}function id(e){return e.meta.droppedComments?.length?[{code:"COMMENT_DROPPED",count:e.meta.droppedComments.length,lines:e.meta.droppedComments.map(t=>t.line)}]:[]}function ad(e,t,n,i){const r=t.labelCharCap??Yt;const a=Js(e,i);const o=cd(e,t,n);const s=Ta(e);if(e.body.kind==="extension"){return od(e,r,t,$($(a,o),s),n)}const d=e;const m=d.kind==="flowchart"?$(Sn(Qt(d.canonicalSource),M=>Ee(d.source,M)),Hs(d)):d.kind==="quadrant"?Ys(d):d.kind==="treemap"?zs(d):[];const u=$(m,Xs(d,i));if(["block","sankey","mindmap","ishikawa"].includes(d.kind)&&(d.meta.accessibility.title!==void 0||d.meta.accessibility.descr!==void 0)&&!u.some(M=>M.code==="UNSUPPORTED_SYNTAX"&&M.syntax===`${d.kind}_accessibility`)){u.push({code:"UNSUPPORTED_SYNTAX",syntax:`${d.kind}_accessibility`,message:`${d.kind} accessibility metadata is carried in native comments on export. External Mermaid ignores this metadata; diagram topology is preserved.`})}const y=Ts(d);const p=d.meta.wrapperSource?.match(/\n/g)?.length??0;const b=Sn(o,M=>M+p);let S=$($($($(a,b),u),s),y?[{code:"EMPTY_DIAGRAM"}]:[]);if(d.body.kind==="class"&&(d.meta.accessibility.title!==void 0||d.meta.accessibility.descr!==void 0)){S=S.filter(M=>M.code!=="EMPTY_DIAGRAM")}if(d.body.kind==="sequence")return wa(md(d,r,t,n),S,t);if(d.body.kind==="timeline")return wa(ud(d,r,t,n),S,t);if(d.body.kind==="gantt"){const M=Ma(d);if(M){return T($(S,[M]),U(d.kind),t,false)}const w=ve(d,n);const k=w.layout;const C=$($a(k),w.warnings);return T($(S,C),k,t)}if(d.body.kind==="class"||d.body.kind==="er"||d.body.kind==="journey"||d.body.kind==="architecture"||d.body.kind==="xychart"||d.body.kind==="pie"||d.body.kind==="quadrant"||d.body.kind==="mindmap"||d.body.kind==="gitgraph"||d.body.kind==="radar"||d.body.kind==="sankey"||d.body.kind==="c4"||d.body.kind==="packet"||d.body.kind==="kanban"||d.body.kind==="requirement"||d.body.kind==="block"||d.body.kind==="treemap"||d.body.kind==="zenuml"||d.body.kind==="eventmodeling"||d.body.kind==="ishikawa"){const M=ve(d,n);const w=M.layout;const k=d.body.kind==="class"||d.body.kind==="er"?qe(w,{edgeAnchors:true,nodeOverlaps:true,groupContainment:d.body.kind==="class"}):qe(w,{nodeOverlaps:d.body.kind==="journey"||d.body.kind==="c4",groupContainment:d.body.kind==="xychart"||d.body.kind==="quadrant"?"center":d.body.kind==="journey"||d.body.kind==="c4"});const C=d.body.kind==="radar"?Qs(n):d.body.kind==="xychart"?nd(n):d.body.kind==="quadrant"?rd(n):d.body.kind==="c4"?Zs(n):d.body.kind==="treemap"?td(n):[];const D=d.body.kind==="pie"||d.body.kind==="radar"?ed(d.body.kind,n):[];return T($($($($(S,k),M.warnings),C),D),w,t)}if(d.body.kind==="state"){const M=ut(d.body);if(M.nodes.size===0)return T($([{code:"EMPTY_DIAGRAM"}],S),U(d.kind),t);const{warnings:w,layout:k}=Pa(M,d,r,n);return T($(w,S),k,t)}if(d.body.kind==="opaque"){const M=y;const w=O(d.kind);const k=(w?.extractLabels??Q)(d.body.source);const C=M?[{code:"EMPTY_DIAGRAM"}]:[];if(!M&&!S.some(N=>N.code==="UNSUPPORTED_SYNTAX")){C.push({code:"UNSUPPORTED_SYNTAX",syntax:`${d.kind}_opaque`,message:`This ${d.kind} diagram uses syntax the structured parser does not model; it is preserved verbatim as source. Typed mutation (the ${d.kind} \`as*\` narrower) is unavailable \u2014 edit the source directly, or verify/render it as-is.`})}const D=new Set;for(const N of k){const re=Z(N.target,N.text,r);if(!re)continue;const j=`${N.target}:${N.text}`;if(D.has(j))continue;D.add(j);C.push(re)}const ne=ve(d,n);const A=ne.layout;return T($($(C,S),ne.warnings),A,t,false)}const _=d.body.graph;if(_.nodes.size===0)return T([{code:"EMPTY_DIAGRAM"}],U(d.kind),t);const{warnings:P,layout:G}=Pa(_,d,r,n);return T($(P,S),G,t)}function od(e,t,n,i,r){const a=[...i];const o=O(e.kind);const s=(o?.extractLabels??Q)(e.body.source);const d=new Set;for(const u of s){const y=Z(u.target,u.text,t);if(!y)continue;const p=`${u.target}:${u.text}`;if(d.has(p))continue;d.add(p);a.push(y)}const m=ve(e,r);return T([...a,...m.warnings],m.layout,n,false)}function ve(e,t){try{const n=t();return n?{layout:n.rendered,warnings:[]}:{layout:U(e.kind),warnings:[{code:"RENDER_FAILED",reason:`Mermaid family "${e.kind}" has no public layout projection registered`,origin:"config"}]}}catch(n){return{layout:U(e.kind),warnings:[t.failure(n)]}}}function Pa(e,t,n,i){const r=sd(e,n);const a=ld(e);let o;try{o=i()}catch(u){return{warnings:[i.failure(u),...r,...a],layout:U(t.kind)}}if(!o||!fd(o.positioned)){return{warnings:[{code:"UNSUPPORTED_SYNTAX",syntax:"positioned_artifact",message:`The ${t.kind} family did not produce its declared positioned-graph artifact.`},...r,...a],layout:U(t.kind)}}const s=o.positioned;const d=o.rendered;const m=[...r];m.push(...dd(s,e));for(const u of Mi(s,e)){m.push({code:"ROUTE_HITCH",edge:u.edge,deviationPx:u.deviationPx})}m.push(...$i(s,e));m.push(...a);return{warnings:m,layout:d}}function sd(e,t){const n=[];for(const i of e.edges){const r=e.nodes.has(i.source)||Boolean(Tt(e.subgraphs,i.source));const a=e.nodes.has(i.target)||Boolean(Tt(e.subgraphs,i.target));if(!r||!a){n.push({code:"EDGE_MISANCHORED",edge:`${i.source}->${i.target}`,from:r?i.source:void 0,to:a?i.target:void 0})}}for(const[i,r]of e.nodes){if(!Ls.has(r.shape))n.push({code:"UNKNOWN_SHAPE",node:i,shape:String(r.shape)});const a=Z(i,L(r.label,r.labelContent),t,"plain");if(a)n.push(a)}for(const i of e.edges){const r=i.label?Z(`${i.source}->${i.target}`,L(i.label,i.labelContent),t,"plain"):null;if(r)n.push(r)}return n}function dd(e,t){const n=[];for(const i of e.nodes){if(i.x<0||i.x+i.width>e.width+1)n.push({code:"OFF_CANVAS",target:i.id,axis:"x"});if(i.y<0||i.y+i.height>e.height+1)n.push({code:"OFF_CANVAS",target:i.id,axis:"y"})}for(const i of e.groups){const r=a=>{const o=Tt(t.subgraphs,a.id);if(o)for(const s of e.nodes){if(!o.nodeIds.includes(s.id))continue;const d=s.x>=a.x&&s.y>=a.y&&s.x+s.width<=a.x+a.width+.5&&s.y+s.height<=a.y+a.height+.5;if(!d)n.push({code:"GROUP_BREACH",group:a.id,member:s.id})}for(const s of a.children)r(s)};r(i)}for(let i=0;i<e.nodes.length;i++){for(let r=i+1;r<e.nodes.length;r++){const a=e.nodes[i],o=e.nodes[r];const s=pd(a,o);if(s>0)n.push({code:"NODE_OVERLAP",a:a.id,b:o.id,areaPx:Math.round(s)})}}for(const i of e.edges){const r=gd(i.points);if(r>0)n.push({code:"ROUTE_SELF_CROSS",edge:`${i.source}->${i.target}`,count:r})}return n}function $(e,t){if(t.length===0)return e;const n=new Set(e.map(La));const i=t.filter(r=>!n.has(La(r)));return i.length===0?e:[...e,...i]}function cd(e,t,n){const i=O(e.kind);if(!i?.verify)return e.body.kind==="extension"?[{code:"RENDER_FAILED",reason:`Mermaid family "${e.kind}" has no verify hook registered`,origin:"config"}]:[];try{let r=e.body;if(e.body.kind==="extension"){const a=e;if(!Ln(a.descriptorIdentity,i.identity)){const o=v(F(e));if(!o.ok||o.value.kind!==e.kind||o.value.body.kind!=="extension"){return[{code:"RENDER_FAILED",reason:`Mermaid family "${e.kind}" could not reparse source under its current descriptor before verification`,origin:"source"}]}r=o.value.body}}return i.verify(r,t)}catch(r){return[n.failure(r,`Mermaid family "${e.kind}" verify hook failed: `)]}}function wa(e,t,n){if(t.length===0)return e;const i=$(e.warnings,t);if(i===e.warnings)return e;const r=T(i,e.layout,n,false);return e.checks?.sourceLoss==="detected"?{...r,checks:{...r.checks,sourceLoss:"detected"}}:r}function La(e){if(e.code==="UNSUPPORTED_SYNTAX")return`${e.code}:${e.syntax}:${e.line??""}:${e.node??""}`;if(e.code==="RENDER_FAILED"||e.code==="INTERNAL_ERROR")return`${e.code}:${e.reason}`;if("target"in e)return`${e.code}:${e.target}`;if("edge"in e)return`${e.code}:${e.edge}`;if("node"in e)return`${e.code}:${e.node}`;if("group"in e)return`${e.code}:${e.group}`;if("a"in e&&"b"in e)return`${e.code}:${e.a}|${e.b}`;return e.code}function ld(e){const t=[];const n=Jr(e.edges);const i=Xr(e.edges).map((p,b)=>{const S=e.edges[b].id;return S&&n.get(S)===b?S:p});const r=new Map;e.edges.forEach((p,b)=>{const S=JSON.stringify({source:p.source,target:p.target,label:p.label??"",style:p.style,hasArrowStart:p.hasArrowStart,hasArrowEnd:p.hasArrowEnd,startMarker:p.startMarker??"arrow",endMarker:p.endMarker??"arrow"});const _=i[b];const P=r.get(S);if(P){t.push({code:"DUPLICATE_EDGE",edge:_,duplicateOf:P.edge,from:p.source,to:p.target,label:p.label})}else{r.set(S,{edge:_,from:p.source,to:p.target,label:p.label})}});const a=new Map;e.edges.forEach((p,b)=>{const S=e.nodes.get(p.source);if(!S||S.shape!=="diamond"||p.source===p.target)return;const _=a.get(p.source)??{labeled:0,unlabeled:[]};if(p.label&&p.label.trim().length>0)_.labeled++;else _.unlabeled.push(i[b]);a.set(p.source,_)});for(const[p,b]of a){if(b.labeled+b.unlabeled.length<2)continue;for(const S of b.unlabeled){t.push({code:"DECISION_BRANCH_UNLABELED",node:p,edge:S})}}const o=Array.from(e.nodes.keys());if(o.length===0||e.edges.length===0)return t;const s=new Map(o.map(p=>[p,0]));const d=new Map(o.map(p=>[p,[]]));for(const p of e.edges){if(!e.nodes.has(p.source)||!e.nodes.has(p.target))continue;s.set(p.target,(s.get(p.target)??0)+1);d.get(p.source).push(p.target)}const m=o.filter(p=>(s.get(p)??0)===0);if(m.length===0)return t;const u=new Set(m);const y=[...m];for(let p=0;p<y.length;p++){for(const b of d.get(y[p])??[]){if(u.has(b))continue;u.add(b);y.push(b)}}for(const p of o){if(!u.has(p))t.push({code:"UNREACHABLE_NODE",node:p})}return t}function ud(e,t,n,i){const r=e.body;const a=ve(e,i);const o=a.layout;const s=[];const d=r.sections.length>0||r.title!==void 0||r.accessibilityTitle!==void 0||r.accessibilityDescription!==void 0;if(!d)return T([{code:"EMPTY_DIAGRAM"}],o,n);const m=(u,y)=>{const p=y!==void 0?Z(u,y,t,"literal"):null;if(p)s.push(p)};m("title",r.title);for(const u of r.sections){m(u.id,u.label);for(const y of u.periods){m(y.id,y.label);for(const p of y.events)m(p.id,p.text)}}return T($($(s,qe(o,{nodeOverlaps:true,groupContainment:true})),a.warnings),o,n)}function md(e,t,n,i){const r=e.body;const a=ve(e,i);const o=a.layout;const s=[];const d=r.statements.some(b=>b.kind==="opaque-block"&&b.lines.some(S=>S.trim().length>0&&!qt(S)));const m=lt(r);if(r.participants.length===0&&m.length===0&&!d){return T([{code:"EMPTY_DIAGRAM"}],o,n,false)}const u=new Set(r.participants.map(b=>b.id));m.forEach((b,S)=>{if(!u.has(b.from)||!u.has(b.to)){s.push({code:"EDGE_MISANCHORED",edge:`msg#${S}:${b.from}->${b.to}`,from:u.has(b.from)?b.from:void 0,to:u.has(b.to)?b.to:void 0})}const _=Z(`msg#${S}:${b.from}->${b.to}`,L(b.text,b.textContent),t);if(_)s.push(_)});for(const b of r.participants){const S=Z(b.id,L(b.label,b.labelContent),t);if(S)s.push(S)}for(const b of r.statements)if(b.kind==="fragment"){if(b.fragment.label){const S=Z(`fragment:${b.fragment.fragmentKind}`,L(b.fragment.label,b.fragment.labelContent),t);if(S)s.push(S)}for(const[S,_]of b.fragment.branches.entries())if(_.label){const P=Z(`fragment:${b.fragment.fragmentKind}:branch#${S}`,L(_.label,_.labelContent),t);if(P)s.push(P)}}const y=r.statements.filter(b=>b.kind==="opaque-block").flatMap(b=>b.lines).filter(b=>!qt(b));if(y.length>0){s.push({code:"UNSUPPORTED_SYNTAX",syntax:"sequence_opaque_segment",message:"This sequence contains source-preserved constructs that are not represented in describe/facts or typed fragment operations. Inspect the source directly before relying on semantic read-back."});const b=O(e.kind);const S=(b?.extractLabels??Q)(y.join("\n"));const _=new Set;for(const P of S){const G=Le(P.text);const M=Z(P.target,L(G.value,G.content),t);if(!M)continue;const w=`${P.target}:${P.text}`;if(_.has(w))continue;_.add(w);s.push(M)}}const p=r.participants.length===0&&m.length===0;return T($($(s,qe(o,{nodeOverlaps:true})),a.warnings),o,n,p)}function fd(e){const t=e;return Array.isArray(t.nodes)&&Array.isArray(t.edges)&&Array.isArray(t.groups)}function T(e,t,n,i=true){const r={renderability:"not-checked",sourceLoss:e.some(d=>d.code==="COMMENT_DROPPED"||d.code==="CONTENT_DROPPED_ON_ROUNDTRIP")?"detected":"not-detected",taskCorrectness:"not-checked"};const a=new Set(n.suppress??[]);const o=e.filter(d=>!a.has(d.code));const s=!o.some(d=>fe[d.code]==="error");if(i&&!a.has("UNSUPPORTED_SYNTAX")&&!o.some(d=>d.code==="RENDER_FAILED"||d.code==="INTERNAL_ERROR")&&t.nodes.length===0&&t.edges.length===0&&t.groups.length===0&&t.bounds.w===0&&t.bounds.h===0&&!o.some(d=>d.code==="EMPTY_DIAGRAM")&&!o.some(d=>d.code==="UNSUPPORTED_SYNTAX"&&d.syntax==="empty_layout")){return{ok:s,checks:r,warnings:[...o,{code:"UNSUPPORTED_SYNTAX",syntax:"empty_layout",message:"The source carries content, but the local layout renders nothing (0x0 canvas with no nodes, edges, or groups)."}],layout:t}}return{ok:s,warnings:o,layout:t,checks:r}}function pd(e,t){const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x));const i=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return n*i}function gd(e){if(e.length<4)return 0;let t=0;for(let n=0;n<e.length-1;n++)for(let i=n+2;i<e.length-1;i++){if(n===0&&i===e.length-2)continue;if(yd(e[n],e[n+1],e[i],e[i+1]))t++}return t}function yd(e,t,n,i){const r=Lt(i.x-n.x,i.y-n.y,e.x-n.x,e.y-n.y);const a=Lt(i.x-n.x,i.y-n.y,t.x-n.x,t.y-n.y);const o=Lt(t.x-e.x,t.y-e.y,n.x-e.x,n.y-e.y);const s=Lt(t.x-e.x,t.y-e.y,i.x-e.x,i.y-e.y);return(r>0&&a<0||r<0&&a>0)&&(o>0&&s<0||o<0&&s>0)}function Lt(e,t,n,i){return e*i-n*t}function Tt(e,t){for(const n of e){if(n.id===t)return n;const i=Tt(n.children,t);if(i)return i}return null}function Na(e){return JSON.parse(JSON.stringify({ok:e.ok,warnings:e.warnings,checks:e.checks}))}function Va(e){try{if(!Array.isArray(e)||Object.getPrototypeOf(e)!==Array.prototype)return{ok:false};const t=Object.getOwnPropertyDescriptors(e);const n=t.length?.value;if(!Number.isSafeInteger(n)||n<0)return{ok:false};const i=Reflect.ownKeys(e);if(i.some(a=>typeof a==="symbol"||a!=="length"&&!/^(0|[1-9]\d*)$/.test(a)))return{ok:false};const r=[];for(let a=0;a<n;a++){const o=t[String(a)];if(!o||!("value"in o)||o.enumerable!==true)return{ok:false};r.push(o.value)}return{ok:true,value:r}}catch{return{ok:false}}}function Fa(e,t,n){const i=Va(t);if(!i.ok){return E({code:"INVALID_OP",message:"`ops` must be an array of op objects",opIndex:-1})}const r=i.value;let a;try{a=It(e,n)}catch(o){return E({code:"INVALID_OP",message:o instanceof Error?o.message:String(o),opIndex:-1})}return je(a,r)}function hd(e){let t;let n;let i;let r;try{if(!jn(e)){return{ok:false,family:null,error:{code:"INVALID_OP",message:"applyOps input must be a plain object"}}};({source:t,family:n,ops:i,mode:r}=e)}catch{return{ok:false,family:null,error:{code:"INVALID_OP",message:"applyOps input must be a readable plain object"}}}const a=Va(i);if(!a.ok){return{ok:false,family:typeof n==="string"&&ee(n)?n:null,error:{code:"INVALID_OP",message:"`ops` must be an array of op objects"}}}const o=a.value;if(r!==void 0&&r!=="structured"&&r!=="source-preserving")return{ok:false,family:null,error:{code:"INVALID_OP",message:"`mode` must be structured or source-preserving"}};if(r==="source-preserving"&&typeof t!=="string")return{ok:false,family:null,error:{code:"INVALID_OP",message:"Source-preserving mode requires existing source, not a blank-slate build"}};if(t!==void 0&&typeof t!=="string"){return{ok:false,family:null,error:{code:"INVALID_OP",message:"`source` must be a string when provided"}}}if(n!==void 0&&typeof n!=="string"){return{ok:false,family:null,error:{code:"INVALID_OP",message:"`family` must be a string when provided"}}}if(typeof t==="string"&&typeof n==="string"){return{ok:false,family:ee(n)?n:null,error:{code:"INVALID_OP",message:"applyOps accepts either `source` or `family`, not both"}}}let s;let d;if(typeof t==="string"&&t.trim().length>0){const u=v(t);if(!u.ok){const y=u.error[0];return{ok:false,family:null,error:{code:y?.code??"PARSE_ERROR",message:u.error.map(p=>p.message).join("; ")||"could not parse source"}}}s=u.value;d=s;if(!ee(s.kind)){return{ok:false,family:s.kind,error:{code:"INVALID_OP",message:`family "${s.kind}" has no structured ops; edit it as source text`}}}if(o.length===0){return{ok:false,family:s.kind,error:{code:"INVALID_OP",message:"`ops` must contain at least one op object"}}}}else if(typeof n==="string"){if(!ee(n)){return{ok:false,family:null,error:{code:"INVALID_OP",message:`unknown family "${n}"`}}}if(o.length===0){return{ok:false,family:n,error:{code:"INVALID_OP",message:"`ops` must contain at least one op object"}}}const u=Fa(n,o);if(!u.ok){const{opIndex:y,...p}=u.error;return{ok:false,family:n,opIndex:y>=0?y:void 0,error:p}}return Rn(u.value)}else{return{ok:false,family:null,error:{code:"INVALID_OP",message:"applyOps requires either `source` (to edit) or `family` (to build)"}}}if(r==="source-preserving"){let u=d,y=t;for(let p=0;p<o.length;p++){const b=hn(u,o[p]);if(!b.ok)return{ok:false,family:s.kind,opIndex:p,error:b.error};u=b.value.diagram;y=b.value.source}return Rn(u,d,y)}const m=je(s,o);if(!m.ok){const{opIndex:u,...y}=m.error;return{ok:false,family:s.kind,opIndex:u,error:y}}s=m.value;return Rn(s,d)}function bd(e,t){const n=Ae(e);if(n.checks?.sourceLoss==="detected")return{accepted:false,verification:n};if(n.ok)return{accepted:true,verification:n};const i=n.warnings.filter(r=>fe[r.code]==="error");if(t&&i.length>0&&i.every(r=>r.code==="INTERNAL_ERROR")){const r=o=>o.code==="INTERNAL_ERROR"?`${o.defaultRender}\0${o.reason}`:void 0;const a=new Set(Ae(t).warnings.map(r).filter(o=>o!==void 0));if(i.every(o=>a.has(r(o))))return{accepted:true,verification:n}}if(e.body.kind==="opaque"||e.body.kind==="preserved"||e.body.kind==="extension"||!O(e.kind)?.mutate||i.length===0||i.some(r=>r.code!=="EMPTY_DIAGRAM")){return{accepted:false,verification:n}}try{Et(F(e));return{accepted:true,verification:n}}catch(r){return{accepted:false,verification:{...n,warnings:[...n.warnings,Nt(r,()=>"fails")]}}}}function Rn(e,t,n){const{accepted:i,verification:r}=bd(e,t);const a=Na(r);if(!i){return{ok:false,family:e.kind,error:{code:"VERIFY_FAILED",message:"mutated diagram failed verify; source was not emitted",details:a.warnings}}}return{ok:true,family:e.kind,source:n??F(e),...n!==void 0?{mode:"source-preserving"}:{},verify:a}}function xd(e){if("elementId"in e)return $d(e);return kd(e)}function kd(e){if("family"in e)return Rd(e);return Sd(e)}function Sd(e){switch(e.invariant){case"straight":case"explained-detour":case"bundle":case"outer-feedback":case"feedback-detour":case"self-loop":case"container-attach":case"unverified-shape":return"edge-route";default:return Re(e)}}function Rd(e){switch(e.family){case"class":case"er":return Ed(e.invariant);case"architecture":return _d(e.invariant);case"zenuml":case"sequence":return Md(e.invariant);default:return Re(e)}}function Ed(e){switch(e){case"orthogonal-box":case"unverified-family-route":return"edge-route";default:return Re(e)}}function _d(e){switch(e){case"side-anchored":case"unverified-family-route":return"edge-route";default:return Re(e)}}function Md(e){switch(e){case"lifeline-message":case"self-message":case"unverified-family-route":return"edge-route";default:return Re(e)}}function $d(e){switch(e.family){case"timeline":case"xychart":case"pie":case"quadrant":case"gantt":return Od(e.invariant);default:return Re(e.family)}}function Od(e){switch(e){case"timeline-interval":case"plot-contained":case"legend-contained":case"section-contained":case"unverified-family-layout":return"region-containment";default:return Re(e)}}function Re(e){throw new Error(`Unhandled layout certificate variant: ${JSON.stringify(e)}`)}function Ge(e){const t=[];f(t,`family ${e.kind}`);if(e.meta.accessibility.title)f(t,`accessibility title ${c(e.meta.accessibility.title)}`);if(e.meta.accessibility.descr)f(t,`accessibility descr ${c(e.meta.accessibility.descr)}`);switch(e.body.kind){case"flowchart":{const n=e.body.graph;f(t,`direction ${n.direction}`);for(const r of n.nodes.values()){f(t,`node ${c(r.id)} : ${c(r.label||r.id)}`);f(t,`node ${c(r.id)} shape ${c(r.shape)}`)}const i=(r,a)=>{for(const o of r){f(t,`group ${c(o.id)} : ${c(o.label||o.id)}`);if(a)f(t,`group ${c(o.id)} parent ${c(a)}`);if(o.direction)f(t,`group ${c(o.id)} direction ${o.direction}`);for(const s of o.nodeIds)f(t,`group ${c(o.id)} contains ${c(s)}`);i(o.children,o.id)}};i(n.subgraphs);n.edges.forEach((r,a)=>{const o=`edge ${c(r.source)} -> ${c(r.target)}`;f(t,r.label?`${o} : ${c(r.label)}`:o);f(t,`edge#${a} ${c(r.source)} -> ${c(r.target)}${r.label?` : ${c(r.label)}`:""}`);if(r.style!=="solid")f(t,`${o} style ${r.style}`)});break}case"state":vd(t,e.body);break;case"sequence":Ad(t,e.body);break;case"timeline":Id(t,e.body);break;case"class":Pd(t,e.body);break;case"er":wd(t,e.body);break;case"journey":Ld(t,e.body);break;case"architecture":Td(t,e.body);break;case"xychart":Nd(t,e.body);break;case"pie":Vd(t,e.body);break;case"quadrant":Fd(t,e.body);break;case"gantt":Bd(t,e.body);break;case"mindmap":jd(t,e.body);break;case"gitgraph":qd(t,e.body);break;case"radar":{if(e.body.title!==void 0)f(t,`title ${c(e.body.title)}`);e.body.axes.forEach((n,i)=>f(t,`axis#${i} ${c(n.id)} : ${c(n.label)}`));e.body.curves.forEach((n,i)=>f(t,`curve#${i} ${c(n.id)} : ${c(n.label)} {${n.values.join(",")}}`));f(t,`scale ${e.body.min}..${e.body.max??"auto"} ticks ${e.body.ticks} graticule ${e.body.graticule}`);break}case"c4":{const n=e.body;const i=r=>/^[A-Za-z_][A-Za-z_0-9-]*$/.test(r)?r:JSON.stringify(r);f(t,`variant ${n.variant}`);if(n.title!==void 0)f(t,`title ${c(n.title)}`);for(const r of n.boundaries){f(t,`boundary ${i(r.id)} ${r.kind} : ${c(r.label)}`);if(r.parentId!==void 0)f(t,`boundary ${i(r.id)} parent ${i(r.parentId)}`);if(r.type!==void 0)f(t,`boundary ${i(r.id)} type ${c(r.type)}`);if(r.description!==void 0)f(t,`boundary ${i(r.id)} description ${c(r.description)}`)}for(const r of n.elements){f(t,`element ${i(r.id)} ${r.kind} ${r.external?"external":"internal"} ${r.shape} : ${c(r.label)}`);if(r.parentId!==void 0)f(t,`element ${i(r.id)} parent ${i(r.parentId)}`);if(r.technology!==void 0)f(t,`element ${i(r.id)} technology ${c(r.technology)}`);if(r.description!==void 0)f(t,`element ${i(r.id)} description ${c(r.description)}`)}for(const r of n.relationships){f(t,`interaction#${r.order} ${i(r.id)} ${i(r.source)} ${r.bidirectional?"<->":"->"} ${i(r.target)} : ${c(r.label)}`);f(t,`interaction#${r.order} macro ${r.macro} authored ${i(r.from)} -> ${i(r.to)}`);if(r.index!==void 0)f(t,`interaction#${r.order} index ${c(r.index)}`);if(r.technology!==void 0)f(t,`interaction#${r.order} technology ${c(r.technology)}`);if(r.description!==void 0)f(t,`interaction#${r.order} description ${c(r.description)}`);if(r.direction!==void 0)f(t,`interaction#${r.order} direction ${r.direction}`)}for(const r of[...n.elements,...n.boundaries,...n.relationships]){if(r.tags.length)f(t,`c4 ${i(r.id)} tags ${r.tags.map(i).join(",")}`);if(r.link!==void 0)f(t,`c4 ${i(r.id)} link ${JSON.stringify(r.link)}`);if(r.effectiveLink!==void 0)f(t,`c4 ${i(r.id)} effective link ${JSON.stringify(r.effectiveLink)}`);if(r.sprite!==void 0)f(t,`c4 ${i(r.id)} sprite ${JSON.stringify(r.sprite)}`);for(const a of Object.keys(r.style).sort())f(t,`c4 ${i(r.id)} style ${a} ${JSON.stringify(r.style[a])}`)}break}case"sankey":{e.body.links.forEach((n,i)=>f(t,`link#${i} ${c(n.source)} -> ${c(n.target)} : ${n.value}`));break}case"zenuml":{if(e.body.title!==void 0)f(t,`title ${JSON.stringify(e.body.title)}`);const n=be(e.body,{message:({message:i,kind:r,callAncestors:a,scopes:o})=>{f(t,`message#${c(i.id)} kind ${r}`);if(a.length)f(t,`message#${c(i.id)} call-parent ${c(a.at(-1))}`);for(const s of o)f(t,`message#${c(i.id)} fragment#${c(s.fragmentId)} branch#${s.branchIndex}`)},note:({note:i,callAncestors:r,scopes:a})=>{f(t,`note#${c(i.id)} ${i.position} ${i.actorIds.map(o=>JSON.stringify(o)).join(",")} after-index ${i.afterIndex} : ${c(X(L(i.text,i.textContent)))}`);if(r.length)f(t,`note#${c(i.id)} call-parent ${c(r.at(-1))}`);for(const o of a)f(t,`note#${c(i.id)} fragment#${c(o.fragmentId)} branch#${o.branchIndex}`)},fragment:({fragment:i,branches:r,callAncestors:a,scopes:o})=>{f(t,`fragment#${c(i.id)} kind ${i.type}`);if(a.length)f(t,`fragment#${c(i.id)} call-parent ${c(a.at(-1))}`);const s=o.at(-1);if(s)f(t,`fragment#${c(i.id)} parent ${c(s.fragmentId)} branch#${s.branchIndex}`);r.forEach((d,m)=>{const u=m===0?i.condition:d.condition;f(t,`fragment#${c(i.id)} branch#${m} ${d.kind}${u===void 0?"":` : ${c(u)}`}`)})}});for(const i of n.actors)if(!i.external){f(t,`participant ${c(i.id)} : ${c(i.label)}`);f(t,`participant ${c(i.id)} type ${i.type}`)}for(const i of n.actors)if(i.external)f(t,`external-endpoint ${c(i.id)}`);for(const i of n.messages){f(t,`message ${c(i.from)} -> ${c(i.to)} : ${c(i.label)}`);f(t,`message#${c(i.id)} ${c(i.from)} -> ${c(i.to)} : ${c(i.label)}${i.lineStyle==="dashed"?" reply":""}`);if(i.parentId)f(t,`message#${c(i.id)} parent ${c(i.parentId)}`)}for(const i of n.blocks)f(t,`fragment ${c(i.id)} ${i.type} : ${c(i.label)}`);break}case"eventmodeling":if(e.body.title!==void 0)f(t,`title ${JSON.stringify(e.body.title)}`);e.body.frames.forEach((n,i)=>f(t,`frame#${i} ${JSON.stringify(n)}`));xe(e.body).forEach(n=>f(t,`relation ${n.from} -> ${n.to} ${n.explicit?"explicit":"inferred"}`));Object.entries(e.body.data).forEach(([n,i])=>f(t,`data ${n} ${JSON.stringify(i)}`));e.body.notes.forEach(n=>f(t,`note ${JSON.stringify(n)}`));e.body.specifications.forEach(n=>f(t,`specification ${JSON.stringify(n)}`));break;case"packet":case"kanban":case"requirement":case"block":case"treemap":case"ishikawa":t.push(...Cr(e.body));break;case"opaque":{f(t,`opaque ${e.body.family}`);const n=O(e.kind);const i=(n?.extractLabels??Q)(e.body.source);i.forEach((r,a)=>f(t,`label#${a} ${c(r.target||"")} : ${c(r.text)}`));break}case"extension":{const n=O(e.kind);const i=(n?.extractLabels??Q)(e.body.source);i.forEach((r,a)=>f(t,`label#${a} ${c(r.target||"")} : ${c(r.text)}`));break}case"preserved":f(t,`preserved ${e.body.preservation.upstreamFamilyId??e.body.preservation.header}`);break;default:{const n=e.body;void n}}return Array.from(new Set(t)).sort()}function Cd(e){const t=v(e);return t.ok?q(Ge(t.value)):E(t.error)}function ja(e,t){const n=Ge(e);const i=new Set(n);const r=Wd(t);const a=Gd(t);const o=r.filter(d=>!i.has(d));let s=a.filter(d=>i.has(d));if(_n(t)&&t.exact){const d=new Set(r);s=[...s,...n.filter(m=>!d.has(m))]}s=Array.from(new Set(s)).sort();return{ok:o.length===0&&s.length===0,missing:o,unexpected:s,facts:n}}function Dd(e,t){const n=v(e);return n.ok?q(ja(n.value,t)):E(n.error)}function vd(e,t){if(t.direction)f(e,`direction ${t.direction}`);const n=(i,r,a)=>{for(const o of i){f(e,`state ${c(o.id)}`);if(o.label)f(e,`state ${c(o.id)} : ${c(o.label)}`);if(o.stereotype)f(e,`state ${c(o.id)} stereotype ${c(o.stereotype)}`);if(a)f(e,`state ${c(o.id)} parent ${c(a)}`);if(o.states!==void 0||o.regions!==void 0){f(e,`composite ${c(o.id)}`);if(o.direction)f(e,`state ${c(o.id)} direction ${o.direction}`);if(o.regions)o.regions.forEach((s,d)=>{f(e,`state ${c(o.id)} region ${d}`);n(s.states,s.transitions,o.id)});else n(o.states??[],o.transitions??[],o.id)}if(o.className)f(e,`state ${c(o.id)} class ${c(o.className)}`);if(o.style)f(e,`state ${c(o.id)} styled`)}for(const o of r)f(e,En(o.from,o.to,o.label))};n(t.states,t.transitions);for(const[i,r]of(t.notes??[]).entries()){f(e,`note#${i} ${r.side} of ${c(r.target)} : ${c(r.text)}`)}for(const i of t.floatingNotes??[]){f(e,`floating note ${c(i.id)}${i.scope?` in ${c(i.scope.parent)}${i.scope.region!==void 0?` region ${i.scope.region}`:""}`:""} : ${c(i.text)}`)}}function Ad(e,t){t.participants.forEach((i,r)=>{f(e,`${i.kind} ${c(i.id)} : ${c(i.label||i.id)}`);f(e,`participant#${r} ${c(i.id)} : ${c(i.label||i.id)}`);if(i.wrap!==void 0)f(e,`participant#${r} wrap ${i.wrap}`)});ct(t).forEach((i,r)=>{const a=i.message;f(e,`message ${c(a.from)} -> ${c(a.to)} : ${c(a.text)}`);f(e,`message#${r} ${i.scope==="top-level"?"top-level":`fragment#${i.fragmentIndex} branch#${i.branchIndex}`} ${c(a.from)} -> ${c(a.to)} : ${c(a.text)}`);if(a.style!=="sync")f(e,`message#${r} style ${a.style}`);if(a.wrap!==void 0)f(e,`message#${r} wrap ${a.wrap}`)});t.statements.forEach((i,r)=>{if(i.kind!=="opaque-block")return;nr(i.lines).statements.forEach((a,o)=>{const s=a.syntax;if(s?.kind==="message"){const d=s.message;const m=c(Le(d.label).value);f(e,`message ${c(d.from)} -> ${c(d.to)} : ${m}`);f(e,`preserved-message#${r}.${o} ${c(d.from)} -> ${c(d.to)} : ${m}`)}else if(s?.kind==="title")f(e,`title ${c(Le(s.text).value)}`)})});const n=t.statements.filter(i=>i.kind==="fragment");n.forEach((i,r)=>{if(i.kind!=="fragment")return;f(e,`fragment#${r} ${i.fragment.fragmentKind}`);if(i.fragment.wrap!==void 0)f(e,`fragment#${r} wrap ${i.fragment.wrap}`);i.fragment.branches.forEach((a,o)=>{const s=a.label??(o===0?i.fragment.label:void 0);f(e,`fragment#${r} branch#${o}${s?` : ${c(s)}`:""}`);if(a.wrap!==void 0)f(e,`fragment#${r} branch#${o} wrap ${a.wrap}`)})})}function Id(e,t){if(t.title)f(e,`title ${c(t.title)}`);t.sections.forEach((n,i)=>{if(n.label)f(e,`section ${c(n.label)}`);n.periods.forEach((r,a)=>{f(e,`period ${c(r.label)}`);if(n.label)f(e,`period ${c(r.label)} section ${c(n.label)}`);r.events.forEach((o,s)=>{f(e,`event ${c(r.label)} : ${c(o.text)}`);f(e,`event#${i}.${a}.${s} ${c(r.label)} : ${c(o.text)}`)})})})}function Pd(e,t){if(t.title)f(e,`title ${c(t.title)}`);for(const n of t.namespaces??[]){f(e,`namespace ${c(n.name)}${n.label?` : ${c(n.label)}`:""}`)}for(const n of t.classes){if(n.isInterface){f(e,`interface ${c(n.id)} : ${c(n.label??n.id)}`);continue}f(e,`class ${c(n.id)}`);if(n.generic)f(e,`class ${c(n.id)} generic ${c(n.generic)}`);if(n.label)f(e,`class ${c(n.id)} : ${c(n.label)}`);if(n.namespace)f(e,`class ${c(n.id)} in namespace ${c(n.namespace)}`);for(const i of n.members)f(e,`member ${c(n.id)} ${c(i)}`)}t.relations.forEach((n,i)=>{const r=`${n.fromCardinality?` ${c(n.fromCardinality)}`:""}${n.toCardinality?` ${c(n.toCardinality)}`:""}`;f(e,`relation ${c(n.from)} ${n.kind} ${c(n.to)}${n.label?` : ${c(n.label)}`:""}`);f(e,`relation#${i} ${c(n.from)} ${n.kind} ${c(n.to)}${r}${n.label?` : ${c(n.label)}`:""}`);const a=Wr(n);f(e,`relation#${i} ${c(n.from)} ${n.kind} ${c(n.to)} marker ${a.at}`);f(e,`relation#${i} ${c(n.from)} ${n.kind} ${c(n.to)} line ${Gr(n)}`);if(a.at==="both"){f(e,`relation#${i} from marker ${a.from}`);f(e,`relation#${i} to marker ${a.to}`)}});t.notes.forEach((n,i)=>f(e,`note#${i}${n.for?` ${c(n.for)}`:""} : ${c(n.text)}`))}function wd(e,t){if(t.direction)f(e,`direction ${t.direction}`);for(const n of t.groups??[])f(e,`er group ${c(n.id)} label ${c(n.label)}${n.parentId?` parent ${c(n.parentId)}`:""}${n.direction?` direction ${n.direction}`:""}`);for(const n of t.entities){f(e,`entity ${c(n.id)}${n.label?` label ${c(n.label)}`:""}${n.groupId?` group ${c(n.groupId)}`:""}`);if(n.className)f(e,`entity ${c(n.id)} class ${c(n.className)}`);if(n.style)f(e,`entity ${c(n.id)} styled`);for(const i of n.attributes)f(e,`attribute ${c(n.id)} ${c(i.text)}`)}t.relations.forEach((n,i)=>{const r=`relation ${c(n.from)} ${n.leftCard} ${n.dashed?"..":"--"} ${n.rightCard} ${c(n.to)}${n.label?` : ${c(n.label)}`:""}`;f(e,r);f(e,`relation#${i} ${r.slice("relation ".length)}`)})}function Ld(e,t){const n=(a,o)=>c(X(L(a,o)));if(t.title)f(e,`title ${n(t.title,t.titleContent)}`);t.sections.forEach((a,o)=>{if(a.label)f(e,`section ${n(a.label,a.labelContent)}`);a.tasks.forEach((s,d)=>{const m=s.actors.length?` actors ${s.actors.map((u,y)=>n(u,s.actorContents?.[y])).join(", ")}`:"";f(e,`journey task ${n(s.text,s.textContent)} score ${String(s.score)}${m}`);f(e,`journey task#${o}.${d} ${n(s.text,s.textContent)} score ${String(s.score)}${m}`);if(a.label)f(e,`journey task ${n(s.text,s.textContent)} section ${n(a.label,a.labelContent)}`)})});const i=t.sections.flatMap(a=>a.tasks);f(e,`journey sections ${t.sections.length}`);f(e,`journey tasks ${i.length}`);const r=new Map;for(const a of i)for(const[o,s]of a.actors.entries()){const d=dt(s,a.actorContents?.[o]);r.set(d,{actor:n(s,a.actorContents?.[o]),count:(r.get(d)?.count??0)+1})}f(e,`journey actors ${r.size}`);if(i.length>0){const a=i.map(m=>m.score);const o=Math.min(...a);const s=Math.max(...a);const d=Math.round(a.reduce((m,u)=>m+u,0)/a.length*100)/100;f(e,`journey score range ${o}..${s}`);f(e,`journey average score ${te(d)}`);for(const m of i){if(m.score===o)f(e,`journey lowest task ${n(m.text,m.textContent)} score ${String(m.score)}`);if(m.score===s)f(e,`journey highest task ${n(m.text,m.textContent)} score ${String(m.score)}`)}}for(const{actor:a,count:o}of r.values())f(e,`journey actor ${a} tasks ${o}`)}function Td(e,t){if(t.title)f(e,`title ${c(t.title)}`);if(t.accessibilityTitle)f(e,`accessibility title ${c(t.accessibilityTitle)}`);if(t.accessibilityDescription)f(e,`accessibility description ${c(t.accessibilityDescription)}`);for(const n of t.groups){f(e,`group ${c(n.id)} : ${c(n.label||n.id)}`);if(n.icon)f(e,`group ${c(n.id)} icon ${c(n.icon)}`);if(n.parentId)f(e,`group ${c(n.id)} parent ${c(n.parentId)}`)}for(const n of t.services){f(e,`service ${c(n.id)} : ${c(n.label||n.id)}`);if(n.icon)f(e,`service ${c(n.id)} icon ${c(n.icon)}`);if(n.parentId)f(e,`service ${c(n.id)} parent ${c(n.parentId)}`)}for(const n of t.junctions){f(e,`junction ${c(n.id)}`);if(n.parentId)f(e,`junction ${c(n.id)} parent ${c(n.parentId)}`)}t.edges.forEach((n,i)=>{const r=`${c(n.source.id)}${n.source.boundary==="group"?"{group}":""}:${n.source.side}`;const a=`${c(n.target.id)}${n.target.boundary==="group"?"{group}":""}:${n.target.side}`;const o=`edge ${r} -> ${a}`;f(e,n.label?`${o} : ${c(n.label)}`:o);f(e,`edge#${i} ${r} -> ${a}${n.label?` : ${c(n.label)}`:""}`)})}function Nd(e,t){if(t.title)f(e,`title ${c(de(t.title))}`);if(t.horizontal)f(e,"orientation horizontal");Ba(e,"x-axis",t.xAxis);Ba(e,"y-axis",t.yAxis);t.series.forEach((n,i)=>{const r=n.name?c(de(n.name)):`series#${i}`;f(e,`series ${r} ${n.kind} [${n.values.map(te).join(",")}]`);f(e,`series#${i} ${n.kind} ${r} [${n.values.map(te).join(",")}]`);n.pointLabels?.forEach((a,o)=>{if(a!==void 0)f(e,`series#${i} point#${o} : ${c(a)}`)})})}function Vd(e,t){if(t.title)f(e,`title ${c(de(t.title))}`);if(t.showData)f(e,"showData true");t.slices.forEach((n,i)=>{f(e,`slice ${c(de(n.label))} = ${te(n.value)}`);f(e,`slice#${i} ${c(de(n.label))} = ${te(n.value)}`)})}function Fd(e,t){if(t.title)f(e,`title ${c(de(t.title))}`);if(t.xAxis)f(e,`x-axis ${c(t.xAxis.near)}${t.xAxis.far?` -> ${c(t.xAxis.far)}`:""}`);if(t.yAxis)f(e,`y-axis ${c(t.yAxis.near)}${t.yAxis.far?` -> ${c(t.yAxis.far)}`:""}`);t.quadrants.forEach((n,i)=>{if(n)f(e,`quadrant ${i+1} : ${c(n)}`)});t.points.forEach((n,i)=>{f(e,`point ${c(de(n.label))} @ ${te(n.x)},${te(n.y)}`);f(e,`point#${i} ${c(de(n.label))} @ ${te(n.x)},${te(n.y)}`)})}function Bd(e,t){if(t.title)f(e,`title ${c(t.title)}`);t.sections.forEach((n,i)=>{if(n.label)f(e,`section ${c(n.label)}`);n.tasks.forEach((r,a)=>{f(e,`task ${c(r.label)}`);f(e,`task#${i}.${a} ${c(r.label)}`);if(r.taskId)f(e,`task ${c(r.label)} id ${c(r.taskId)}`);if(n.label)f(e,`task ${c(r.label)} section ${c(n.label)}`);for(const o of r.tags)f(e,`task ${c(r.label)} tag ${o}`);if(r.start)f(e,`task ${c(r.label)} start ${c(r.start)}`);f(e,`task ${c(r.label)} end ${c(r.end)}`)})})}function jd(e,t){const n=(i,r)=>{f(e,`node ${c(i.id)} : ${c(i.label)}`);f(e,`node ${c(i.id)} shape ${i.shape}`);if(r)f(e,En(r,i.id));if(i.icon)f(e,`node ${c(i.id)} icon ${c(i.icon)}`);if(i.className)f(e,`node ${c(i.id)} class ${c(i.className)}`);i.children.forEach(a=>n(a,i.id))};n(t.root)}function qd(e,t){f(e,`direction ${t.direction}`);for(const n of t.branches){f(e,`branch ${c(n.name)} order ${n.order}`);if(n.head)f(e,`branch ${c(n.name)} head ${c(n.head)}`)}for(const n of t.commits){f(e,`commit ${c(n.id)} branch ${c(n.branch)}`);f(e,`commit ${c(n.id)} type ${n.type}`);if(n.sourceId)f(e,`commit ${c(n.id)} source-id ${c(n.sourceId)}`);if(n.message)f(e,`commit ${c(n.id)} message ${c(n.message)}`);n.tags.forEach(i=>f(e,`commit ${c(n.id)} tag ${c(i)}`));n.parents.forEach(i=>f(e,En(i,n.id,n.source==="commit"?void 0:n.source)))}}function Ba(e,t,n){if(!n)return;if(n.name)f(e,`${t} name ${c(de(n.name))}`);if(n.categories)f(e,`${t} categories ${n.categories.map(i=>c(de(i))).join(", ")}`);if(n.range)f(e,`${t} range ${te(n.range.min)} -> ${te(n.range.max)}`)}function En(e,t,n){return`edge ${c(e)} -> ${c(t)}${n?` : ${c(n)}`:""}`}function f(e,t){e.push(t.replace(/\s+$/g,""))}function c(e){return String(e??"").trim().replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/\n/g,"\\n").replace(/\t/g,"\\t")}function de(e){return e.replace(/^"(.*)"$/,"$1")}function te(e){return Number.isInteger(e)?String(e):String(Number(e.toPrecision(12)))}function se(e){if(!Array.isArray(e))return[];return e.map(t=>typeof t==="string"?t:String(t))}function Wd(e){if(Array.isArray(e))return se(e);if(!_n(e))return[];return qa([...se(e.include),...se(e.expected),...se(e.require),...se(e.required)])}function Gd(e){if(!_n(e))return[];return qa([...se(e.exclude),...se(e.absent),...se(e.forbid),...se(e.forbidden),...se(e.unexpected)])}function _n(e){return e!==null&&typeof e==="object"&&!Array.isArray(e)}function qa(e){return Array.from(new Set(e))}var Ud=["text","json","facts"];function Tp(e){return Ud.includes(e)}function Hd(e,t={}){const n=v(e);if(!n.ok){const i=Array.isArray(n.error)?n.error[0]:void 0;if(t.format==="json"){return JSON.stringify({error:i?.message??"parse error",nodes:[],edges:[]})}if(t.format==="facts")return`error parse ${i?.message??"parse error"}`;return`Unparseable Mermaid source: ${i?.message??"parse error"}.`}return Ga(n.value,t)}function Ga(e,t={}){if(t.format==="json")return JSON.stringify(Ua(e));if(t.format==="facts")return Ge(e).join("\n");if(e.body.kind==="flowchart")return Kd(e);if(e.body.kind==="state")return Xd(e.body);if(e.body.kind==="sequence")return Jd(e);if(e.body.kind==="timeline")return Qd(e);if(e.body.kind==="class")return ic(e);if(e.body.kind==="er")return ac(e);if(e.body.kind==="journey")return Zd(e.body);if(e.body.kind==="architecture")return ec(e.body);if(e.body.kind==="xychart")return tc(e.body);if(e.body.kind==="gantt")return oc(e);if(e.body.kind==="pie")return nc(e.body);if(e.body.kind==="quadrant")return rc(e.body);if(e.body.kind==="mindmap")return Yd(e.body);if(e.body.kind==="gitgraph")return zd(e.body);if(e.body.kind==="radar"){const i=e.body.axes.map(o=>o.label).join(", ");const r=e.body.curves.map(o=>o.label).join(", ");const a=e.body.title?`"${e.body.title}" `:"";return`A radar chart ${a}comparing ${e.body.curves.length} curve(s)${r?` (${r})`:""} across ${e.body.axes.length} axis/axes${i?` (${i})`:""}.`}if(e.body.kind==="c4")return`A ${e.body.variant} architecture diagram${e.body.title?` "${e.body.title}"`:""} with ${e.body.elements.length} element(s), ${e.body.boundaries.length} boundary/boundaries and ${e.body.relationships.length} interaction(s).`;if(e.body.kind==="sankey"){const i=new Set;for(const a of e.body.links){i.add(a.source);i.add(a.target)}const r=e.body.links.reduce((a,o)=>a+o.value,0);return`A sankey diagram flowing ${r} across ${e.body.links.length} link(s) between ${i.size} node(s).`}if(e.body.kind==="zenuml"){const i=be(e.body);return`A ZenUML interaction${i.title===void 0?"":` titled ${JSON.stringify(i.title)}`} with ${i.actors.filter(r=>!r.external).length} participants, ${i.messages.length} messages and ${i.blocks.length} control scopes.`}if(e.body.kind==="eventmodeling")return`An Event Modeling diagram with ${e.body.frames.length} frames and ${xe(e.body).length} relations.`;if(zt(e.body)){const i=st(e.body);return`A ${e.kind} diagram with ${i.nodes} item(s), ${i.groups} group(s) and ${i.edges} relationship(s).`}if(e.body.kind==="opaque")return Wa(e.kind,e.body.source);if(e.body.kind==="extension")return Wa(e.kind,e.body.source);if(e.body.kind==="preserved")return`An unregistered ${e.body.preservation.upstreamFamilyId??e.body.preservation.header} diagram preserved as source. ${e.body.diagnostic.message}`;const n=e.body;void n;return`A ${e.kind} diagram.`}function Ua(e){const t={kind:e.kind,nodes:[],edges:[],entryPoints:[],sinks:[]};if(e.body.kind==="flowchart"){const r=e.body.graph;for(const a of r.nodes.values())t.nodes.push({id:a.id,label:a.label||a.id});for(const a of r.edges)t.edges.push({from:a.source,to:a.target,label:a.label||void 0})}else if(e.body.kind==="state"){const r=(a,o)=>{for(const s of a){t.nodes.push({id:s.id,label:s.label||s.id});if(s.regions)for(const d of s.regions)r(d.states,d.transitions);else if(s.states!==void 0)r(s.states,s.transitions??[])}for(const s of o)t.edges.push({from:s.from,to:s.to,label:s.label||void 0})};r(e.body.states,e.body.transitions)}else if(e.body.kind==="sequence"){for(const r of e.body.participants)t.nodes.push({id:r.id,label:r.label||r.id});ct(e.body).forEach(r=>{const a=r.message;t.edges.push({from:a.from,to:a.to,label:a.text||void 0,...r.scope==="fragment"?{sequence:{fragmentIndex:r.fragmentIndex,branchIndex:r.branchIndex,fragmentKind:r.fragmentKind,...r.branchLabel??(r.branchIndex===0?r.fragmentLabel:void 0)?{branchLabel:r.branchLabel??r.fragmentLabel}:{}}}:{}})})}else if(e.body.kind==="class"){for(const r of e.body.classes)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.relations)t.edges.push({from:r.from,to:r.to,label:r.label||r.kind})}else if(e.body.kind==="er"){for(const r of e.body.entities)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.relations)t.edges.push({from:r.from,to:r.to,label:r.label||void 0})}else if(e.body.kind==="timeline"){for(const r of e.body.sections)for(const a of r.periods){t.nodes.push({id:a.id,label:a.label})}}else if(e.body.kind==="journey"){for(const r of e.body.sections)for(const a of r.tasks){const o=a.actors.length?`; ${a.actors.map((s,d)=>X(L(s,a.actorContents?.[d]))).join(", ")}`:"";t.nodes.push({id:a.id,label:`${X(L(a.text,a.textContent))} (score ${a.score}${o})`})}}else if(e.body.kind==="architecture"){for(const r of e.body.groups)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.services)t.nodes.push({id:r.id,label:r.label||r.id});for(const r of e.body.junctions)t.nodes.push({id:r.id,label:r.id});for(const r of e.body.edges)t.edges.push({from:r.source.id,to:r.target.id,label:r.label||void 0})}else if(e.body.kind==="xychart"){for(const r of e.body.series)t.nodes.push({id:r.id,label:r.name||`${r.kind} series`})}else if(e.body.kind==="gantt"){for(const a of e.body.sections)for(const o of a.tasks){t.nodes.push({id:o.taskId??o.id,label:o.label})}const r=new Map;for(const a of e.body.sections)for(const o of a.tasks)if(o.taskId)r.set(o.taskId,o.taskId);for(const a of e.body.sections)for(const o of a.tasks){for(const[s,d]of[[o.start,"after"],[o.end,"until"]]){const m=s?.match(/^(?:after|until)\s+(.+)$/);if(!m||!s.startsWith(d))continue;for(const u of m[1].split(/\s+/).filter(Boolean)){if(r.has(u))t.edges.push({from:u,to:o.taskId??o.id,label:d})}}}}else if(e.body.kind==="pie"){for(const r of e.body.slices)t.nodes.push({id:r.id,label:`${r.label} (${r.value})`})}else if(e.body.kind==="quadrant"){e.body.points.forEach((r,a)=>t.nodes.push({id:`point-${a}`,label:`${r.label} [${r.x}, ${r.y}]`}))}else if(e.body.kind==="mindmap"){const r=(a,o)=>{t.nodes.push({id:a.id,label:a.label});if(o)t.edges.push({from:o,to:a.id});a.children.forEach(s=>r(s,a.id))};r(e.body.root)}else if(e.body.kind==="gitgraph"){for(const r of e.body.commits){t.nodes.push({id:r.id,label:r.message||r.sourceId||r.id});r.parents.forEach(a=>t.edges.push({from:a,to:r.id,label:r.source==="commit"?void 0:r.source}))}}else if(e.body.kind==="radar"){e.body.axes.forEach((r,a)=>t.nodes.push({id:`axis-${a}`,label:r.label}));e.body.curves.forEach((r,a)=>t.nodes.push({id:`curve-${a}`,label:r.label}))}else if(e.body.kind==="c4"){for(const r of e.body.boundaries)t.nodes.push({id:r.id,label:vi(r),c4:{category:"boundary",kind:r.kind,...r.parentId===void 0?{}:{parentId:r.parentId}}});for(const r of e.body.elements)t.nodes.push({id:r.id,label:Di(r),c4:{category:"element",kind:r.kind,external:r.external,shape:r.shape,effectiveShape:Zn(r),...r.parentId===void 0?{}:{parentId:r.parentId}}});for(const r of e.body.relationships){const{id:a,order:o,index:s,macro:d,direction:m,bidirectional:u,reversed:y}=r;t.edges.push({from:r.source,to:r.target,label:Ai(e.body,r),c4:{id:a,order:o,macro:d,bidirectional:u,reversed:y,authoredFrom:r.from,authoredTo:r.to,...s===void 0?{}:{index:s},...m===void 0?{}:{direction:m}}})}}else if(e.body.kind==="sankey"){const r=new Set;for(const a of e.body.links){for(const o of[a.source,a.target]){if(r.has(o))continue;r.add(o);t.nodes.push({id:o,label:o})}t.edges.push({from:a.source,to:a.target,label:String(a.value)})}}else if(e.body.kind==="zenuml"){const r=[];const a=be(e.body,{message:({message:o,kind:s,sourceId:d,callAncestors:m,scopes:u})=>{t.edges.push({from:o.from,to:o.to,label:o.label,zenuml:{id:o.id,kind:s,sourceId:d,callAncestors:m,scopes:u}})},note:({note:o,sourceId:s,callAncestors:d,scopes:m})=>{r.push({id:o.id,label:X(L(o.text,o.textContent)),...o.parentId?{parentId:o.parentId}:{},zenuml:{kind:"note",sourceId:s,actorIds:o.actorIds,position:o.position,afterIndex:o.afterIndex,callAncestors:d,scopes:m}})}});if(a.title!==void 0)t.title=a.title;t.nodes.push(...a.actors.map(o=>({id:o.id,label:o.external?"External caller":o.label,...o.external?{external:true}:{zenuml:{kind:"participant",type:o.type}}})),...r)}else if(e.body.kind==="eventmodeling"){const r=ot(e.body);t.nodes.push(...r.map(a=>({id:a.id,label:a.label})));t.nodes.push(...e.body.frames.map(a=>({id:a.id,label:a.entity,parentId:r.find(o=>o.members.includes(a.id)).id})));t.edges.push(...xe(e.body))}else if(zt(e.body)){const r=Or(e.body);t.nodes.push(...r.nodes);t.edges.push(...r.edges)}else if(e.body.kind==="opaque"){const r=O(e.kind);const a=(r?.extractLabels??Q)(e.body.source);a.forEach((o,s)=>t.nodes.push({id:o.target||`label-${s}`,label:o.text}))}else if(e.body.kind==="extension"){const r=O(e.kind);const a=(r?.extractLabels??Q)(e.body.source);a.forEach((o,s)=>t.nodes.push({id:o.target||`label-${s}`,label:o.text}))}else if(e.body.kind==="preserved"){}else{const r=e.body;void r}const n=new Set(t.edges.map(r=>r.to));const i=new Set(t.edges.map(r=>r.from));for(const r of t.edges)if(r.c4?.bidirectional){n.add(r.from);i.add(r.to)}for(const r of t.nodes){if(!n.has(r.id)&&i.has(r.id))t.entryPoints.push(r.id);if(!i.has(r.id)&&n.has(r.id))t.sinks.push(r.id)}return t}function Yd(e){let t=0;let n=0;const i=e.root.children.map(a=>a.label);const r=a=>{t++;if(a.children.length===0)n++;a.children.forEach(r)};r(e.root);return`A ${t}-node mindmap rooted at ${e.root.label}, with ${n} leaves.${i.length?` Main branches: ${i.join(", ")}.`:""}`}function zd(e){const t=e.commits.filter(i=>i.source==="merge").length;const n=e.commits.filter(i=>i.source==="cherry-pick").length;return`A GitGraph with ${e.commits.length} commits across ${e.branches.length} branches, including ${t} merges and ${n} cherry-picks. Branches: ${e.branches.map(i=>i.name).join(", ")}.`}function Kd(e){const t=e.body.graph;const n=Array.from(t.nodes.values());const i=n.map(p=>p.id);const r=t.edges;const a=n.map(p=>p.label||p.id);const o=new Map;const s=new Map;for(const p of i){o.set(p,0);s.set(p,0)}for(const p of r){s.set(p.source,(s.get(p.source)??0)+1);o.set(p.target,(o.get(p.target)??0)+1)}const d=i.filter(p=>(o.get(p)??0)===0&&(s.get(p)??0)>0);const m=i.filter(p=>(s.get(p)??0)===0&&(o.get(p)??0)>0);const u=r.map(p=>{const b=p.label?` (${p.label})`:"";return`${p.source} -> ${p.target}${b}`});let y=`A ${n.length}-node flowchart with ${r.length} edges. Nodes: ${a.join(", ")}.`;if(u.length>0)y+=` Edges: ${u.join("; ")}.`;if(d.length>0)y+=` Entry points: ${d.join(", ")}.`;if(m.length>0)y+=` Sinks: ${m.join(", ")}.`;return y}function Xd(e){const t=[];const n=[];const i=(u,y)=>{for(const p of u){t.push(p);if(p.regions)for(const b of p.regions)i(b.states,b.transitions);else if(p.states!==void 0)i(p.states,p.transitions??[])}n.push(...y)};i(e.states,e.transitions);const r=t.filter(u=>u.states!==void 0||u.regions!==void 0);const a=t.map(u=>u.label||u.id);const o=n.map(u=>{const y=u.label?` (${u.label})`:"";return`${u.from} -> ${u.to}${y}`});const s=e.transitions.filter(u=>u.from==="[*]").map(u=>u.to);let d=`A state diagram with ${t.length} states and ${n.length} transitions.`;if(r.length>0)d+=` Composite states: ${r.map(u=>u.label||u.id).join(", ")}.`;if(a.length>0)d+=` States: ${a.join(", ")}.`;const m=t.filter(u=>u.stereotype).map(u=>`${u.label||u.id} (${u.stereotype})`);if(m.length>0)d+=` Pseudostates: ${m.join(", ")}.`;if((e.notes??[]).length>0){d+=` Notes: ${e.notes.map(u=>`${u.side} of ${u.target}: ${u.text}`).join("; ")}.`}if(e.floatingNotes?.length)d+=` Floating notes: ${e.floatingNotes.map(u=>`${u.id}${u.scope?` in ${u.scope.parent}${u.scope.region!==void 0?` region ${u.scope.region}`:""}`:""}: ${u.text}`).join("; ")}.`;if(o.length>0)d+=` Transitions: ${o.join("; ")}.`;if(s.length>0)d+=` Initial: ${s.join(", ")}.`;return d}function Jd(e){const t=e.body.participants;const n=t.map(o=>o.label||o.id).join(", ");let i=`A sequence diagram between ${n||"(no participants)"}.`;const r=[];let a=0;for(const o of e.body.statements){if(o.kind==="message"){const d=e.body.messages[o.ref];if(d)r.push(`message ${d.from} -> ${d.to}: ${d.text}`);continue}if(o.kind!=="fragment")continue;const s=o.fragment.branches.map((d,m)=>{const u=d.label??(m===0?o.fragment.label:void 0);const y=d.messages.map(p=>`${p.from} -> ${p.to}: ${p.text}`).join("; ")||"no messages";return`branch ${m}${u?` (${u})`:""}: ${y}`});r.push(`fragment ${a} (${o.fragment.fragmentKind}): ${s.join(" | ")}`);a++}if(r.length>0)i+=` Interactions in source order: ${r.join("; ")}.`;return i}function Qd(e){const t=e.body.sections;const n=t.map(a=>a.label||a.id);const i=[];for(const a of t)for(const o of a.periods)i.push(o.label);let r=`A timeline with ${t.length} sections.`;if(n.length>0)r+=` Sections: ${n.join(", ")}.`;if(i.length>0)r+=` Periods: ${i.join(", ")}.`;return r}function Zd(e){const t=e.sections;const n=t.reduce((s,d)=>s+d.tasks.length,0);const i=new Map(t.flatMap(s=>s.tasks.flatMap(d=>d.actors.map((m,u)=>[dt(m,d.actorContents?.[u]),X(L(m,d.actorContents?.[u]))]))));let r=`A user journey${e.title?` titled "${X(L(e.title,e.titleContent))}"`:""} with ${t.length} sections and ${n} tasks.`;const a=t.flatMap(s=>s.label===void 0?[]:[X(L(s.label,s.labelContent))]);if(a.length>0)r+=` Sections: ${a.join(", ")}.`;const o=t.flatMap(s=>s.tasks.map(d=>`${X(L(d.text,d.textContent))} (${d.score})`));if(o.length>0)r+=` Tasks: ${o.join(", ")}.`;if(i.size>0)r+=` Actors: ${[...i.values()].join(", ")}.`;return r}function ec(e){const t=e.groups;const n=e.services;const i=e.junctions;const r=e.edges;let a=`An architecture diagram${e.title?` titled "${e.title}"`:""} with ${t.length} groups, ${n.length} services, and ${r.length} connections.`;if(e.accessibilityTitle)a+=` Accessible title: ${e.accessibilityTitle}.`;if(e.accessibilityDescription)a+=` Accessible description: ${e.accessibilityDescription.replace(/\n/g," ")}.`;if(t.length>0)a+=` Groups: ${t.map(s=>s.label||s.id).join(", ")}.`;if(n.length>0)a+=` Services: ${n.map(s=>s.label||s.id).join(", ")}.`;if(i.length>0)a+=` Junctions: ${i.map(s=>s.id).join(", ")}.`;const o=r.map(s=>`${s.source.id} -> ${s.target.id}${s.label?` (${s.label})`:""}`);if(o.length>0)a+=` Connections: ${o.join("; ")}.`;return a}function tc(e){const t=e.series;const n=e.horizontal?"horizontal ":"";let i=`An ${n}XY chart${e.title?` titled "${e.title}"`:""} with ${t.length} series.`;const r=(s,d)=>{if(!d)return void 0;const m=[];if(d.name!==void 0)m.push(`"${d.name}"`);if(d.categories)m.push(`categories ${d.categories.join(", ")}`);if(d.range)m.push(`range ${d.range.min}\u2013${d.range.max}`);return m.length>0?`${s}: ${m.join(", ")}`:void 0};const a=[r("x-axis",e.xAxis),r("y-axis",e.yAxis)].filter(s=>s!==void 0);if(a.length>0)i+=` Axes \u2014 ${a.join("; ")}.`;const o=t.map(s=>`${s.kind}${s.name?` ${s.name}`:""} [${s.values.join(", ")}]`);if(o.length>0)i+=` Series: ${o.join("; ")}.`;return i}function nc(e){let t=`A pie chart${e.title?` titled "${e.title}"`:""} with ${e.slices.length} slices.`;const n=e.slices.map(i=>`${i.label} (${i.value})`);if(n.length>0)t+=` Slices: ${n.join(", ")}.`;return t}function rc(e){let t=`A quadrant chart${e.title?` titled "${e.title}"`:""} with ${e.points.length} points.`;const n=e.quadrants.filter(r=>Boolean(r));if(n.length>0)t+=` Quadrants: ${n.join(", ")}.`;const i=e.points.map(r=>`${r.label} [${r.x}, ${r.y}]`);if(i.length>0)t+=` Points: ${i.join(", ")}.`;return t}function ic(e){const t=e.body.classes.filter(d=>!d.isInterface);const n=e.body.classes.filter(d=>d.isInterface);const i=e.body.relations;const r=t.map(d=>d.generic?`${d.id}<${d.generic}>`:d.id);const a=i.map(d=>`${d.from} ${d.kind} ${d.to}`);let o=`A class diagram with ${t.length} classes.`;if(r.length>0)o+=` Classes: ${r.join(", ")}.`;if(n.length>0)o+=` Interfaces: ${n.map(d=>d.label??d.id).join(", ")}.`;const s=e.body.namespaces??[];if(s.length>0){const d=s.map(m=>{const u=t.filter(y=>y.namespace===m.name).map(y=>y.id);return`${m.name} [${u.join(", ")}]`});o+=` Namespaces: ${d.join("; ")}.`}if(a.length>0)o+=` Relations: ${a.join("; ")}.`;return o}function ac(e){const t=e.body.entities;const n=e.body.relations;const i=t.map(o=>o.label?`${o.id} ("${o.label}")`:o.id);const r=n.map(o=>{const s=o.label?` (${o.label})`:"";return`${o.from} ${o.leftCard}-${o.rightCard} ${o.to}${s}`});let a=`An ER diagram with ${t.length} entities.`;if(i.length>0)a+=` Entities: ${i.join(", ")}.`;if(r.length>0)a+=` Relations: ${r.join("; ")}.`;return a}function oc(e){const t=e.body;const n=t.sections.flatMap(o=>o.tasks);let i=`A Gantt chart${t.title?` titled "${t.title}"`:""} with ${t.sections.filter(o=>o.label!==void 0).length} sections and ${n.length} tasks.`;try{const o=$e(le(et(e.canonicalSource)));if(o.tasks.length>0){const s=o.dateOnly?"%Y-%m-%d":"%Y-%m-%d %H:%M";i+=` Schedule: ${nn(o.timeMin,s)} to ${nn(o.timeMax,s)}.`}else i+=" No tasks scheduled.";if(o.analysis&&o.analysis.criticalPathTaskIds.length>0){i+=` Critical path: ${o.analysis.criticalPathTaskIds.join(" -> ")}.`}}catch{}const r=t.sections.map(o=>o.label).filter(o=>o!==void 0);if(r.length>0)i+=` Sections: ${r.join(", ")}.`;const a=n.map(o=>{const s=[];const d=o.tags.find(m=>m==="done"||m==="active"||m==="crit");if(d)s.push(d);if(o.tags.includes("milestone"))s.push("milestone");if(o.tags.includes("vert"))s.push("vert marker");if(o.start)s.push(o.start);s.push(o.end);return`${o.label} (${s.join(", ")})`});if(a.length>0)i+=` Tasks: ${a.join("; ")}.`;return i}function Wa(e,t){const n=O(e);const i=(n?.extractLabels??Q)(t).map(s=>s.text);const r=Array.from(new Set(i)).filter(Boolean);const a=e==="xychart"?"XY chart":e;let o=`A ${a} diagram with a source-level body (structured editing not exposed).`;if(r.length>0)o+=` Labels: ${r.join(", ")}.`;return o}var Ie=Object.freeze({security:"strict",embedFontImport:false});function za(e){return e instanceof Error?e.message:String(e)}function Ue(e){const t=v(e.example);if(!t.ok){throw new Error(t.error.map(n=>`${n.code}: ${n.message}`).join("; "))}if(t.value.kind!==e.id){throw new Error(`canonical example routed to "${t.value.kind}" instead of "${e.id}"`)}return t.value}function dc(e){const t=Ue(e);return{kind:t.kind,..."descriptorIdentity"in t?{descriptorIdentity:t.descriptorIdentity}:{},meta:t.meta,body:t.body,canonicalSource:t.canonicalSource}}function Ha(e){const t=F(Ue(e));const n=v(t);if(!n.ok){throw new Error(`serialized canonical example did not reparse: ${n.error.map(r=>r.message).join("; ")}`)}if(n.value.kind!==e.id){throw new Error(`serializer changed family identity to "${n.value.kind}"`)}const i=F(n.value);if(i!==t){throw new Error("serializer is not byte-stable after parse \u2192 serialize \u2192 reparse")}return{serialized:t,reparsedKind:n.value.kind,canonicalSource:n.value.canonicalSource}}function cc(e){const t=Ue(e);const n=wt(t,{output:"layout",renderOptions:Ie});if(!n)throw new Error(`canonical example has no public positioned-layout projection`);const i=[n.positioned.width,n.positioned.height];const r=[n.rendered.bounds.w,n.rendered.bounds.h];if([...i,...r].some(a=>!Number.isFinite(a)||a<=0)){throw new Error("canonical example layout and projected bounds must be finite and positive")}if(n.rendered.nodes.length+n.rendered.edges.length+n.rendered.groups.length===0){throw new Error("canonical example layout must expose at least one semantic node, edge, or group")}return{layout:n.rendered,receiptDigest:ae(Ne(n.request))}}function lc(e){const t=Me(e.example,Ie,"svg");const n=xt(e.id,t);const i=St(t,n);const r=new Set;Ve(i.parts,o=>{for(const s of Qn(o))r.add(`${o.role}\0${s}`)});const a=e.scenePrimitiveEvidence.filter(o=>o.applicability==="applicable").filter(o=>!r.has(`${o.role}\0${o.primitive}`)).map(o=>`${o.role}/${o.primitive}`);if(a.length>0){throw new Error(`canonical example did not witness declared positive Scene cells: ${a.join(", ")}`)}return{sceneDigest:ae(i),cells:[...r].sort(),receiptDigest:ae(Ne(t))}}function uc(e){const t=Rt(e.example,Ie,"svg");const n=Ki(e.example,Ie);return{svg:t.svg,svgReceiptDigest:ae(t.receipt),pngSvg:n.svg,pngReceiptDigest:ae(n.receipt),rasterBackground:n.rasterBackground,rasterDimensions:n.rasterDimensions}}function mc(e){const t=[];for(const n of[true,false]){for(const i of Gi){const r=n?"ascii":"unicode";let a;try{a=kt(e.example,{...Ie,useAscii:n,colorMode:i})}catch(o){throw new Error(`${r}/${i} terminal witness failed: ${za(o)}`)}t.push({encoding:r,colorMode:i,textDigest:ae(a.text),receiptDigest:ae(a.receipt)})}}return{outputs:t}}function fc(e){const t=Ae(e.example,{renderOptions:Ie});if(!t.ok){const n=t.warnings.map(i=>i.code==="RENDER_FAILED"||i.code==="INTERNAL_ERROR"?`${i.code}: ${i.reason}`:i.code);throw new Error(`canonical example failed verification: ${n.join(", ")}`)}return t}function Ya(e,t){switch(t){case"detection":{const n=Ue(e);return{family:n.kind,canonicalSource:n.canonicalSource}}case"source-preservation":{const n=Ue(e);return{family:n.kind,canonicalSource:n.canonicalSource,roundtrip:Ha(e)}}case"parse":return dc(e);case"serialize":return Ha(e);case"mutation":throw new Error("external structured mutation is not an executable native capability");case"verify":return fc(e);case"layout":return cc(e);case"scene":return lc(e);case"svg":return uc(e);case"terminal":return mc(e)}}function pc(e,t){const n=e.capabilityEvidence.find(r=>r.capability===t).state;if(n!=="native"){return Object.freeze({capability:t,declaredState:n,status:"unverified-extension",diagnostic:`Descriptor declares "${n}"; no executable native claim was made.`})}const i=`family-example@${rt}/${e.id}/${t}`;try{const r=ae(Ya(e,t));const a=ae(Ya(e,t));if(r!==a){throw new Error(`canonical example was nondeterministic (${r} != ${a})`)}return Object.freeze({capability:t,declaredState:n,status:"passed",witnessId:i})}catch(r){return Object.freeze({capability:t,declaredState:n,status:"failed",diagnostic:za(r)})}}function gc(e){const t=Object.freeze(Gt.map(n=>pc(e,n)));return Object.freeze({version:rt,familyId:e.id,example:e.example,passed:t.every(n=>n.declaredState!=="native"||n.status==="passed"),capabilities:t})}function yc(e){const t=er(e,Si);try{const n=gc(t.descriptor);if(!n.passed)throw new Pe(n);return t.commit(n)}catch(n){t.rollback();throw n}}var Za={maxCrossingsRatio:.05,minLabelLegibility:.85,whitespaceBand:[.05,.55],minLabelEdgeProximity:4,minNodeSpacing:8,elementDensityBand:[.02,6],minTextContrast:4.5,aspectBand:[.2,5]};var eo={paintCertification:{basis:"derived",severity:"primary",note:"Final native paint evidence reports visibility and bounded inspection separately from label fit."},edgeCrossings:{basis:"evidence",severity:"primary",note:"Crossings are the single aesthetic with the strongest human-subject evidence (Purchase 1997/2002). Weight this violation highest."},labelLegibility:{basis:"derived",severity:"secondary",note:"Prepared text must fit its retained available region. Labels without retained geometry are reported as unmeasured."},labelEdgeProximity:{basis:"chosen",severity:"secondary",note:"Edge-labels overlapping nodes hurt readability, but the 4px floor is chosen, not validated against perception."},minimumNodeSpacing:{basis:"chosen",severity:"secondary",note:"Box clearance catches cramped layouts, but the 8px floor is a conservative implementation threshold rather than a perceptual constant."},elementDensity:{basis:"chosen",severity:"secondary",note:"Elements per canvas area distinguishes crowded marks from large boxes; the default band is a regression guard, not a universal aesthetic optimum."},minimumTextContrast:{basis:"standard",severity:"secondary",note:"The 4.5:1 floor follows WCAG AA normal-text contrast. Callers should supply resolved surface colors when a style uses non-default fills."},whitespaceBalance:{basis:"chosen",severity:"secondary",note:'A node/canvas fill band is a rough proxy for "too sparse / too dense"; the literature gives weak support and the band is hand-set.'},aspectRatio:{basis:"sanity",severity:"sanity",note:"Aspect ratio is a guardrail against absurd canvases, not an aesthetic; Purchase did not find it drives comprehension."}};var W=1e-9;function to(e,t={}){const n=Oi(e);const i=e.edges.map(o=>({source:o.from,target:o.to,style:o.visibility==="hidden"?"invisible":"solid",points:o.path.map(([s,d])=>({x:s,y:d}))}));let r=0,a=0;for(const o of e.edges){if(o.visibility==="hidden")continue;let s;for(let d=1;d<o.path.length;d++){const m=o.path[d-1],u=o.path[d];const y=u[0]-m[0],p=u[1]-m[1],b=Math.hypot(y,p);if(b<=W)continue;const S=[y/b,p/b];if(s&&(Math.abs(s[0]*S[1]-s[1]*S[0])>W||s[0]*S[0]+s[1]*S[1]<0))r++;s=S;a+=b}}return{...he(e)?{paintCertification:he(e)}:{},edgeCrossings:Ec(e.edges),labelLegibility:_c(e),labelMeasurement:{measuredNodes:e.nodes.filter(o=>o.label&&o.labelVisibility!=="hidden"&&o.labelVisibility!=="semantic"&&o.labelBounds).length,unmeasuredNodes:e.nodes.filter(o=>o.label&&o.labelVisibility!=="hidden"&&o.labelVisibility!=="semantic"&&!o.labelBounds).length,hiddenNodes:e.nodes.filter(o=>o.label&&o.labelVisibility==="hidden").length,semanticNodes:e.nodes.filter(o=>o.label&&o.labelVisibility==="semantic").length,measuredEdges:e.edges.filter(o=>o.label?.bounds).length,unmeasuredEdges:e.edges.filter(o=>o.label&&!o.label.bounds).length,measuredLabels:(e.labels??[]).filter(o=>o.text&&o.visibility!=="hidden"&&o.visibility!=="semantic"&&o.bounds).length,unmeasuredLabels:(e.labels??[]).filter(o=>o.text&&o.visibility!=="hidden"&&o.visibility!=="semantic"&&!o.bounds).length,hiddenLabels:(e.labels??[]).filter(o=>o.text&&o.visibility==="hidden").length,semanticLabels:(e.labels??[]).filter(o=>o.text&&o.visibility==="semantic").length},whitespaceBalance:Mc(e),labelEdgeProximity:Dc(e),...n?{labelConflicts:n}:{},routeOverlaps:{parallel:Ci(i),opposing:_i(i)},routeGeometry:{bends:r,length:a,area:e.bounds.w*e.bounds.h},minimumNodeSpacing:xc(e),elementDensity:kc(e),minimumTextContrast:Rc(t),aspectRatio:e.bounds.h>0?e.bounds.w/e.bounds.h:Infinity,nodeCount:e.nodes.length,edgeCount:e.edges.length}}function hc(e,t={},n={}){const i={...Za,...t};const r=to(e,n);const a=[];const o=(y,p)=>a.push({metric:y,severity:eo[y].severity,message:p});if(r.paintCertification&&r.paintCertification.status!=="passed")o("paintCertification",`paint layout ${r.paintCertification.status}: ${r.paintCertification.issues.map(y=>y.message).join("; ")}`);const s=e.edges.reduce((y,p)=>y+(p.visibility==="hidden"?0:1),0);const d=Math.max(1,s*(s-1)/2);if(r.edgeCrossings/d>i.maxCrossingsRatio){o("edgeCrossings",`edge crossings ${r.edgeCrossings}/${d} (${(r.edgeCrossings/d*100).toFixed(1)}%) > cap ${(i.maxCrossingsRatio*100).toFixed(1)}%`)}if(r.labelLegibility<i.minLabelLegibility){o("labelLegibility",`label legibility ${(r.labelLegibility*100).toFixed(0)}% < min ${(i.minLabelLegibility*100).toFixed(0)}%`)}if(r.labelMeasurement.unmeasuredNodes>0){o("labelLegibility",`label fit unmeasured for ${r.labelMeasurement.unmeasuredNodes} visible labels`)}if(r.labelMeasurement.unmeasuredEdges>0){o("labelEdgeProximity",`edge-label clearance unmeasured for ${r.labelMeasurement.unmeasuredEdges} labels`)}if(r.labelMeasurement.unmeasuredLabels>0){o("labelLegibility",`label fit unmeasured for ${r.labelMeasurement.unmeasuredLabels} painted labels`)}const m=e.kind==="quadrant"||e.kind==="xychart"||e.kind==="radar";if((!m||t.whitespaceBand!==void 0)&&(r.whitespaceBalance<i.whitespaceBand[0]||r.whitespaceBalance>i.whitespaceBand[1])){o("whitespaceBalance",`whitespace balance ${(r.whitespaceBalance*100).toFixed(1)}% outside band [${i.whitespaceBand[0]*100}\u2013${i.whitespaceBand[1]*100}]%`)}if(r.labelEdgeProximity<i.minLabelEdgeProximity){o("labelEdgeProximity",`edge-label clearance ${r.labelEdgeProximity}px < min ${i.minLabelEdgeProximity}px`)}if(r.nodeCount>=2&&r.minimumNodeSpacing<i.minNodeSpacing){o("minimumNodeSpacing",`minimum node spacing ${r.minimumNodeSpacing}px < min ${i.minNodeSpacing}px`)}if(r.nodeCount>0&&(r.elementDensity<i.elementDensityBand[0]||r.elementDensity>i.elementDensityBand[1])){o("elementDensity",`element density ${r.elementDensity.toFixed(2)} outside band [${i.elementDensityBand[0]}\u2013${i.elementDensityBand[1]}] per 10,000px\xB2`)}if(r.minimumTextContrast===null){o("minimumTextContrast","minimum text contrast is unmeasurable because one or more requested paints could not be resolved")}else if(r.minimumTextContrast<i.minTextContrast){o("minimumTextContrast",`minimum text contrast ${r.minimumTextContrast.toFixed(2)}:1 < min ${i.minTextContrast}:1`)}if(r.aspectRatio<i.aspectBand[0]||r.aspectRatio>i.aspectBand[1]){o("aspectRatio",`aspect ratio ${r.aspectRatio.toFixed(2)} outside band [${i.aspectBand[0]}\u2013${i.aspectBand[1]}]`)}const u={primary:0,secondary:1,sanity:2};a.sort((y,p)=>u[y.severity]-u[p.severity]);return{ok:a.length===0,metrics:r,ranked:a}}function bc(e){let t=Infinity;let n=Infinity;let i=-Infinity;let r=-Infinity;for(const a of e){t=Math.min(t,a.box.x);n=Math.min(n,a.box.y);i=Math.max(i,a.box.x+a.box.w);r=Math.max(r,a.box.y+a.box.h)}return{x:t,y:n,w:i-t,h:r-n}}function Mn(e){const t=bc(e);if(e.length<=8)return{box:t,items:e};const n=t.w>=t.h?"x":"y";const i=[...e].sort((a,o)=>(n==="x"?a.box.x+a.box.w/2-o.box.x-o.box.w/2:a.box.y+a.box.h/2-o.box.y-o.box.h/2)||Je(a.node.id,o.node.id));const r=Math.floor(i.length/2);return{box:t,left:Mn(i.slice(0,r)),right:Mn(i.slice(r))}}function Ka(e){const t=e.id.match(/^(bar|line)#(\d+):pt#(\d+)$/);if(!t)return void 0;return{type:t[1],series:Number(t[2]),point:Number(t[3])}}function Xa(e){const t=e.id.match(/^dot:(.+):(\d+)$/);if(!t)return void 0;return{curve:t[1],vertex:Number(t[2])}}function no(e,t,n){if(e==="quadrant"&&t.dataPosition&&n.dataPosition&&t.dataPosition.x===n.dataPosition.x&&t.dataPosition.y===n.dataPosition.y)return false;if(e==="xychart"){const i=Ka(t);const r=Ka(n);if(!i||!r)return true;if(i.type!==r.type)return i.point!==r.point;return i.series===r.series||i.point!==r.point}if(e==="radar"){const i=Xa(t);const r=Xa(n);if(!i||!r)return true;const a=t.x===n.x&&t.y===n.y&&t.w===n.w&&t.h===n.h;return i.curve===r.curve||i.vertex!==r.vertex||!a}return true}function He(e,t,n,i){if(Ke(e.box,t.box)>=i)return i;if(e.items&&t.items){for(const a of e.items)for(const o of t.items){if(!no(n,a.node,o.node))continue;i=Math.min(i,Ke(a.box,o.box));if(i===0)return 0}return i}const r=!t.items&&e.items?false:!e.items&&(t.items||e.box.w*e.box.h>=t.box.w*t.box.h);if(r){i=He(e.left,t,n,i);return He(e.right,t,n,i)}i=He(e,t.left,n,i);return He(e,t.right,n,i)}function $n(e,t,n=Infinity){if(e.items){for(let i=0;i<e.items.length;i++)for(let r=i+1;r<e.items.length;r++){const a=e.items[i],o=e.items[r];if(!no(t,a.node,o.node))continue;n=Math.min(n,Ke(a.box,o.box));if(n===0)return 0}return n}n=$n(e.left,t,n);if(n===0)return 0;n=$n(e.right,t,n);if(n===0)return 0;return He(e.left,e.right,t,n)}function xc(e){if(e.nodes.length<2)return Infinity;const t=e.nodes.map(n=>({node:n,box:Cn(n)}));return $n(Mn(t),e.kind)}function kc(e){const t=e.bounds.w*e.bounds.h;if(t<=0)return Infinity;return(e.nodes.length+e.edges.length)/(t/1e4)}function ze(e){return me(e)??void 0}function On(e,t){return vn(Ft(e),Ft(t))}function Ye(e,t){const n=e[3];return[0,1,2].map(i=>e[i]*n+t[i]*(1-n))}function ro(e){const t=ze(e);return t&&t[3]===1?[t[0],t[1],t[2]]:void 0}function Sc(e,t,n){const i=ze(e);const r=ze(t);const a=ro(n);if(!i||!r||!a)return void 0;const o=Ye(r,a);return On(Ye(i,o),o)}function Rc(e){if(e.textPairs!==void 0){if(e.textPairs.length===0)return null;const o=e.background??"#FFFFFF";let s=Infinity;for(const d of e.textPairs){const m=Sc(d.foreground,d.background,o);if(m===void 0)return null;s=Math.min(s,m)}return s}const t=ze(e.foreground??"#27272A");const n=ro(e.background??"#FFFFFF");if(!t||!n)return null;const i=e.surfaces??[];const r=i.map(ze);if(r.some(o=>o===void 0))return null;let a=On(Ye(t,n),n);for(const o of r){const s=Ye(o,n);a=Math.min(a,On(Ye(t,s),s))}return a}function Ec(e){return yi(e.map(t=>({points:t.path.map(([n,i])=>({x:n,y:i})),visible:t.visibility!=="hidden"})))}function _c(e){const t={x:0,y:0,w:e.bounds.w,h:e.bounds.h};const n=[...e.nodes.map(a=>({text:a.label,bounds:a.labelBounds,container:a.labelContainer??Cn(a),visibility:a.labelVisibility})),...(e.labels??[]).map(a=>({...a,container:a.container??t}))];const i=n.filter(a=>a.text&&a.visibility!=="hidden"&&a.visibility!=="semantic"&&a.bounds);if(i.length===0)return 1;let r=0;for(const a of i){const o=a.bounds;const s=a.container;if(o.x>=s.x-W&&o.y>=s.y-W&&o.x+o.w<=s.x+s.w+W&&o.y+o.h<=s.y+s.h+W)r++}return r/i.length}function Mc(e){const t=e.bounds.w*e.bounds.h;if(t<=0)return 0;let n=0;for(const i of e.nodes)n+=i.w*i.h;return Math.min(1,n/t)}function Cn(e){return{x:e.x,y:e.y,w:e.w,h:e.h}}function Ke(e,t){const n=Math.max(0,Math.max(e.x-(t.x+t.w),t.x-(e.x+e.w)));const i=Math.max(0,Math.max(e.y-(t.y+t.h),t.y-(e.y+e.h)));return Math.hypot(n,i)}function Ja(e,t){return e[0]>=t.x&&e[0]<=t.x+t.w&&e[1]>=t.y&&e[1]<=t.y+t.h}function Qa(e,t){const n=Math.max(0,Math.max(t.x-e[0],e[0]-(t.x+t.w)));const i=Math.max(0,Math.max(t.y-e[1],e[1]-(t.y+t.h)));return Math.hypot(n,i)}function $c(e,t,n){const i=n[0]-t[0];const r=n[1]-t[1];const a=i*i+r*r;if(a===0)return Math.hypot(e[0]-t[0],e[1]-t[1]);const o=Math.max(0,Math.min(1,((e[0]-t[0])*i+(e[1]-t[1])*r)/a));const s=t[0]+o*i;const d=t[1]+o*r;return Math.hypot(e[0]-s,e[1]-d)}function Vt(e,t,n,i){const r=(u,y,p)=>(y[0]-u[0])*(p[1]-u[1])-(y[1]-u[1])*(p[0]-u[0]);const a=(u,y,p)=>y[0]>=Math.min(u[0],p[0])-W&&y[0]<=Math.max(u[0],p[0])+W&&y[1]>=Math.min(u[1],p[1])-W&&y[1]<=Math.max(u[1],p[1])+W;const o=r(e,t,n);const s=r(e,t,i);const d=r(n,i,e);const m=r(n,i,t);if(Math.abs(o)<=W&&a(e,n,t))return true;if(Math.abs(s)<=W&&a(e,i,t))return true;if(Math.abs(d)<=W&&a(n,e,i))return true;if(Math.abs(m)<=W&&a(n,t,i))return true;return o>0!==s>0&&d>0!==m>0}function Oc(e,t,n){if(Ja(e,n)||Ja(t,n))return true;const i=[n.x,n.y];const r=[n.x+n.w,n.y];const a=[n.x+n.w,n.y+n.h];const o=[n.x,n.y+n.h];return Vt(e,t,i,r)||Vt(e,t,r,a)||Vt(e,t,a,o)||Vt(e,t,o,i)}function Cc(e,t,n){if(Oc(t,n,e))return 0;const i=[[e.x,e.y],[e.x+e.w,e.y],[e.x+e.w,e.y+e.h],[e.x,e.y+e.h]];return Math.min(Qa(t,e),Qa(n,e),...i.map(r=>$c(r,t,n)))}function Dc(e){let t=Infinity;const n=e.edges.filter(i=>i.label?.bounds!==void 0).map(i=>({edge:i,box:i.label.bounds}));for(const{edge:i,box:r}of n){for(const a of e.nodes){if(a.id===i.from||a.id===i.to)continue;const o=Ke(r,Cn(a));if(o<t)t=o}}for(let i=0;i<n.length;i++){for(let r=i+1;r<n.length;r++){const a=Ke(n[i].box,n[r].box);if(a<t)t=a}}for(const{edge:i,box:r}of n){for(const a of e.edges){if(a===i||a.visibility==="hidden")continue;for(let o=0;o<a.path.length-1;o++){const s=Cc(r,a.path[o],a.path[o+1]);if(s<t)t=s}}}return t}function rb(e,t={}){return Et(e,t)}function ib(e,t={}){return Xi(e,t)}function ab(e,t={}){return Ui(e,t)}function ob(e,t={}){return kt(e,t)}function vc(e,t={}){const{debug:n,regions:i,actions:r,...a}=t;const o={debug:n,regions:i,actions:r};const s=Oe(e);const d=s.source;const m=Me(d,a,"layout",o,{expectedFamilyId:s.expectedFamilyId});bt(m);let u;if(typeof e==="string"){const p=v(d);if(!p.ok)throw new Error(p.error.map(b=>b.message).join("; "));u=p.value}else{u=e}const y=_a(u,m,{debug:n});if(!y)throw new Error(`No public layout projection registered for Mermaid family "${u.kind}"`);return{layout:Ac(u,y,o),receipt:{...Ne(m),...he(y)?{layoutCertification:he(y)}:{}}}}function sb(e,t={}){if(e.body.kind==="preserved"){throw new Te(mr(e.body))}return vc(e,t).layout}function Ac(e,t,n){const i=n.debug||n.regions;const r=n.debug||n.actions;if(!i&&!r)return t;const a={...t};if(i)a.regions=Ic(e,t);if(r){const s=new Set([...t.nodes,...t.groups,...t.edges].map(d=>d.id));a.actions=(e.body.kind==="extension"||e.body.kind==="preserved"?[]:Ce(e)).filter(d=>s.has(d.target)).map(d=>({...d,regionId:d.regionId??`node:${d.target}`}))}const o=he(t);if(o)Qe(a,o);return a}function Ic(e,t){const n=[{id:"canvas",kind:"canvas",bounds:{x:Y(0),y:Y(0),w:t.bounds.w,h:t.bounds.h}}];const i=new Map;for(const a of t.groups)for(const o of a.members)i.set(o,a.id);const r=wc(e);for(const a of t.groups){n.push({id:`group:${a.id}`,kind:a.regionKind??Pc(t.kind),elementId:a.id,parentId:a.parentId?`group:${a.parentId}`:"canvas",bounds:{x:a.x,y:a.y,w:a.w,h:a.h},sourceLine:e.source.groups.get(a.id)?.line??r.groups.get(a.id)})}for(const a of t.nodes){n.push({id:`node:${a.id}`,kind:"node",elementId:a.id,parentId:a.parentId!==void 0?`group:${a.parentId}`:i.has(a.id)?`group:${i.get(a.id)}`:"canvas",bounds:{x:a.x,y:a.y,w:a.w,h:a.h},sourceLine:e.source.nodes.get(a.id)?.line??r.nodes.get(a.id)})}for(const a of t.edges){const o=a.path.map(d=>d[0]);const s=a.path.map(d=>d[1]);if(o.length>0&&s.length>0){const d=Math.min(...o),m=Math.max(...o),u=Math.min(...s),y=Math.max(...s);n.push({id:`edge:${a.id}`,kind:"edge",elementId:a.id,parentId:"canvas",bounds:{x:Y(d),y:Y(u),w:Y(Math.max(1,m-d)),h:Y(Math.max(1,y-u))}})}if(a.label){const d=Math.max(1,a.label.text.length*7);const m=14;const u=e.kind==="sequence"&&a.from===a.to?a.label.x:a.label.x-d/2;n.push({id:`label:${a.id}`,kind:"label",elementId:a.id,parentId:`edge:${a.id}`,bounds:{x:Y(u),y:Y(a.label.y-m/2),w:Y(d),h:Y(m)}})}}return n}function Pc(e){switch(e){case"flowchart":case"state":case"class":case"er":case"architecture":return"cluster";case"gitgraph":return"lane";case"timeline":case"journey":case"gantt":return"band";case"sequence":case"quadrant":return"compartment";case"xychart":return"plot";case"radar":return"ring";default:return"group"}}function wc(e){const t=new Map;const n=new Map;const i=e.body.kind==="opaque"||e.body.kind==="extension"?e.body.source:e.canonicalSource;const r=i.split(/\r?\n/);for(let a=0;a<r.length;a++){const o=r[a];const s=o.match(/^\s*subgraph\s+([A-Za-z0-9_:-]+)/);if(s?.[1]&&!n.has(s[1]))n.set(s[1],a+1);for(const d of o.matchAll(/(?:^|[\s&;])([A-Za-z][A-Za-z0-9_:-]*)(?=\s*(?:\[|\(|\{|--|==|-.|$))/g)){const m=d[1];if(m==="subgraph"||m==="end"||m===e.kind)continue;if(!t.has(m))t.set(m,a+1)}}return{nodes:t,groups:n}}export{Qi as a,io as b,Ce as c,an as d,fo as e,vo as f,oe as g,ee as h,At as i,ga as j,ss as k,ds as l,ls as m,je as n,us as o,hn as p,It as q,ps as r,Ds as s,Ae as t,Uf as u,Na as v,Fa as w,hd as x,bd as y,xd as z,Ge as A,Cd as B,ja as C,Dd as D,Ud as E,Tp as F,Hd as G,Ga as H,Ua as I,yc as J,Za as K,eo as L,to as M,hc as N,rb as O,ib as P,ab as Q,ob as R,vc as S,sb as T};
2
+ //# sourceMappingURL=chunk-U4MT3RRE.js.map