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.
- package/CHANGELOG.md +34 -0
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
- package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
- package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
- package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
- package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
- package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
- package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
- package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
- package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
- package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
- package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
- package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
- package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
- package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
- package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
- package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
- package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
- package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
- package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
- package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
- package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
- package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
- package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
- package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
- package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
- package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
- package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
- package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
- package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
- package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
- package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
- package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
- package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
- package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
- package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
- package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
- package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +507 -507
- package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
- package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
- package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
- package/dist/chunk-DOFB572I.js +58 -0
- package/dist/chunk-EHJI3QYE.js +52 -0
- package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
- package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
- package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
- package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
- package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
- package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
- package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
- package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
- package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
- package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
- package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
- package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
- package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
- package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
- package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
- package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
- package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
- package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
- package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
- package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
- package/docs/api.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
- package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
- package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
- package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
- package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
- package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
- package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
- package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
- package/dist/chunk-EHCMJUMD.js +0 -52
- package/dist/chunk-OMY6NRQD.js +0 -58
- package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
- package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
- package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
- /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
- /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{a as e}from"./chunk-5UVGUSD6.js";import{c as t}from"./chunk-CSFUKSU6.js";var r,n,i=0;function o(e,t){if(!r)return t();let o=n,a=i;n=e,i++;let s=performance.now();try{return t()}finally{let t=performance.now()-s;n=o,i=a,r(Object.freeze({stage:e,ms:t,depth:a,...o?{parent:o}:{}}))}}var a=new WeakMap;function s(e){return Object.freeze({...e,attempts:Object.freeze(e.attempts.map(e=>Object.freeze({...e})))})}function l(e,t){let r=a.get(e)??[],n=s(t);r.some(e=>JSON.stringify(e)===JSON.stringify(n))||a.set(e,Object.freeze([...r,n]))}function d(e){return a.get(e)??Object.freeze([])}function u(e,t){let r=a.get(e);r&&a.set(t,r)}var c=class extends Error{constructor(e){super(`No certified layout after ${e.length} bounded attempts: ${e.map(e=>`${e.strategy}: ${e.violations.join("; ")}`).join(" | ")}`),this.attempts=e,this.name="LayoutCertificationError"}attempts;code="LAYOUT_CERTIFICATION_FAILED"},f=class extends Error{constructor(e,t){super(`${e} has not loaded`),this.dependency=e,this.load=t}dependency;load};function h(e){let t=new Set;for(;e instanceof Error&&!t.has(e);){if(e instanceof f)return e;t.add(e),e=e.cause}}function p(e){let t=new Set(e),r=new Map;return(e,n=e)=>{let i="string"==typeof n?n:[...n];if("string"!=typeof i&&i.some(e=>"number"==typeof e&&!Number.isFinite(e)))throw TypeError("Generated identity key numeric components must be finite");let o=JSON.stringify(i),a=r.get(o);if(void 0!==a)return a;let s=e,l=1;for(;t.has(s);)s=`${e}#${l++}`;return t.add(s),r.set(o,s),s}}var m=48;function g(e,t=m){return t+(e-1)*(t+40)}function y(e){let t=0x811c9dc5;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,0x1000193);return t>>>0}function b(...e){return y(e.join("|")).toString(36)}function x(e){let t=e>>>0;return()=>{t|=0;let e=Math.imul((t=t+0x6d2b79f5|0)^t>>>15,1|t);return(((e=e+Math.imul(e^e>>>7,61|e)^e)^e>>>14)>>>0)/0x100000000}}function k(e,t,r){return y(`${e>>>0}|${t}|${r}`)}var v,w=class extends Error{constructor(e){super(`Agentic graph layout does not support this input: ${e}`),this.reason=e,this.name="GraphLayoutUnsupportedError"}reason;code="GRAPH_LAYOUT_UNSUPPORTED"};function $(e,t){let r=v;v=e;try{return t()}finally{v=r}}function M(e,t,r,n=!1,i){let o=e.graphLayout;if(!o)return r();let a=[],l,d=o.backend,u;if("agentic"===o.backend)try{l=t()}catch(t){let e=t instanceof w;if(!e&&!(n&&t instanceof c)||"elk"!==o.fallback)throw t;u=e?t.reason:"candidate failed mandatory geometry certification",a.push({backend:"agentic",outcome:e?"unsupported":"candidate-rejected",reason:u}),l=r(),d="elk"}else l=r();a.push({backend:d,outcome:"selected"});let f={requested:o.backend,fallback:o.fallback??"none",selected:d,attempts:a,implementation:"agentic"===d?"agentic-layered@28":"elk-layered@1",...u?{reason:u}:{}};return i?.(l,f),v?.(s(f)),l}function j(e){switch(e){case"LR":return"RIGHT";case"RL":return"LEFT";case"BT":return"UP";default:return"DOWN"}}var S="0.5.3",z=Object.freeze(["svg","png","ascii","unicode","html","layout"]),E=/^[a-z][a-z0-9.-]*:[a-z0-9][a-z0-9._/-]*$/,O=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,T=new Set(["required","preferred","optional"]);function C(e){return E.test(e)}function F(e){if("string"!=typeof e)return;let t=e.match(O);if(!t)return;let r=t[4];if(!r?.split(".").some(e=>/^\d+$/.test(e)&&e.length>1&&e.startsWith("0")))return{major:t[1],minor:t[2],patch:t[3],...r?{prerelease:r}:{}}}function W(e,t){return e.length!==t.length?e.length<t.length?-1:1:e===t?0:e<t?-1:1}function N(e){if("string"!=typeof e)return!1;let t=e.trim();if("*"===t||/^(0|[1-9]\d*)\.(?:x|\*)$/i.test(t))return!0;let r=t.match(/^(\^|~|>=)?(.+)$/),n=F(r?.[2]??"");return!!r&&!!n&&(!n.prerelease||void 0===r[1])}function I(e,t){let r=F(e);if(!r||"string"!=typeof t)return!1;let n=t.trim();if("*"===n)return void 0===r.prerelease;let i=n.match(/^(0|[1-9]\d*)\.(?:x|\*)$/i);if(i)return void 0===r.prerelease&&r.major===i[1];let o=n.match(/^(\^|~|>=)?(.+)$/),a=F(o?.[2]??"");if(!o||!a)return!1;let s=W(r.major,a.major)||W(r.minor,a.minor)||W(r.patch,a.patch);if(r.prerelease||a.prerelease)return void 0===o[1]&&0===s&&r.prerelease===a.prerelease;switch(o[1]){case">=":return s>=0;case"~":return s>=0&&r.major===a.major&&r.minor===a.minor;case"^":return!(s<0)&&("0"!==a.major?r.major===a.major:"0"!==a.minor?"0"===r.major&&r.minor===a.minor:"0"===r.major&&"0"===r.minor&&r.patch===a.patch);default:return 0===s}}var A=Object.freeze([{id:"core:render-request",version:"1.0.0"},{id:"core:family-descriptor",version:"1.0.0"}].map(e=>Object.freeze(e)));function L(e,t){var r,n,i;let o;return r=t.offers,n=t.requirements,i=t.outputAvailable,o={id:`output:${e}`,version:"1.0.0"},function(e,t){if(!Array.isArray(e))throw TypeError("Capability offers must be an array");if(!Array.isArray(t))throw TypeError("Capability requirements must be an array");let r=new Map;for(let[t,n]of e.entries()){if(!n||"object"!=typeof n||Array.isArray(n))throw TypeError(`Capability offer at index ${t} must be an object`);if("string"!=typeof n.id)throw Error(`Invalid capability id "${String(n.id)}"`);if(!C(n.id))throw Error(`Invalid capability id "${n.id}"`);if("string"!=typeof n.version)throw Error(`Capability "${n.id}" has invalid semantic version "${String(n.version)}"`);if(!F(n.version))throw Error(`Capability "${n.id}" has invalid semantic version "${n.version}"`);if(r.has(n.id))throw Error(`Duplicate capability offer "${n.id}"`);r.set(n.id,n.version)}let n=new Set,i=t.map((e,t)=>{if(!e||"object"!=typeof e||Array.isArray(e))throw TypeError(`Capability requirement at index ${t} must be an object`);if("string"!=typeof e.id)throw Error(`Invalid capability id "${String(e.id)}"`);if(!C(e.id))throw Error(`Invalid capability id "${e.id}"`);if(!T.has(e.level))throw Error(`Capability "${e.id}" has invalid requirement level "${String(e.level)}"`);if(!N(e.range))throw Error(`Capability "${e.id}" has invalid semantic-version range "${String(e.range)}"`);if(n.has(e.id))throw Error(`Duplicate capability requirement "${e.id}"`);n.add(e.id);let i=r.get(e.id),o=void 0===i?"unsupported":I(i,e.range)?"selected":"incompatible";return Object.freeze({id:e.id,range:e.range,level:e.level,status:o,...void 0!==i?{version:i}:{}})});return Object.freeze({version:1,accepted:i.every(e=>"required"!==e.level||"selected"===e.status),resolutions:Object.freeze(i)})}([...A,...r,...z.includes(e)&&i?[o]:[]],[{id:"core:render-request",range:"^1.0.0",level:"required"},...n,{id:`output:${e}`,range:"^1.0.0",level:"required"}])}var P=Object.freeze({core:S,scene:"2.0.0"}),q=/^[a-z][a-z0-9-]*$/,B=/^[a-z0-9][a-z0-9._/-]*$/,H=new WeakSet,R=new WeakMap;function D(e,t){if(!q.test(e))throw Error(`Invalid extension kind "${e}"`);if(!B.test(t))throw Error(`Invalid ${e} extension local id "${t}"`);return`${e}:${t}`}function G(e){let t=e.indexOf(":");if(t<=0||t===e.length-1||-1!==e.indexOf(":",t+1))return;let r=e.slice(0,t),n=e.slice(t+1);if(!(!q.test(r)||!B.test(n)))return{kind:r,localId:n}}function _(e){let t=e.id,r=e.kind,n=e.version,i=e.compatibility,o=e.provenance,a=Object.freeze({...i??{}}),s=Object.freeze({...o}),l=G(t);if(!l||l.kind!==r)throw Error(`Extension id "${t}" must use the "${r}:" namespace`);if(!F(n))throw Error(`Extension "${t}" requires a semantic version (received "${n}")`);if(0===s.owner.trim().length)throw Error(`Extension "${t}" requires a provenance owner`);if(0===s.source.trim().length)throw Error(`Extension "${t}" requires a provenance source`);let d=Object.freeze({id:t,kind:r,version:n,compatibility:a,provenance:s}),u=function(e){let t=[];for(let[r,n]of Object.entries(e.compatibility)){if(void 0===n)continue;let e=P[r];if(!N(n)){t.push(Object.freeze({contract:r,range:n,status:"invalid",diagnostic:`Compatibility requirement "${r}" has invalid semantic-version range "${n}".`}));continue}if(void 0!==e){let i=I(e,n);t.push(Object.freeze({contract:r,range:n,status:i?"compatible":"incompatible",version:e,...i?{}:{diagnostic:`Compatibility requirement "${r}" range "${n}" does not include host version ${e}.`}}));continue}if(!C(r)){t.push(Object.freeze({contract:r,range:n,status:"invalid",diagnostic:`Unknown compatibility requirement "${r}" must use a namespace.`}));continue}t.push(Object.freeze({contract:r,range:n,status:"deferred"}))}return Object.freeze({accepted:t.every(e=>"compatible"===e.status||"deferred"===e.status),resolutions:Object.freeze(t)})}(d);if(!u.accepted)throw Error(`Extension "${t}" has incompatible requirements: ${u.resolutions.filter(e=>"incompatible"===e.status||"invalid"===e.status).map(e=>e.diagnostic).join("; ")}`);return H.add(d),d}var U=class extends Error{constructor(e,t){super(`Cannot register ${e.kind} "${e.id}" for owner "${e.provenance.owner}": already registered by "${t.provenance.owner}" at version ${t.version}`),this.incoming=e,this.existing=t,this.name="ExtensionCollisionError"}incoming;existing;code="EXTENSION_ID_COLLISION"};function Z(e,t){let r=function(e,t){let r=R.get(e);if(r)throw r.reentrantAttempted=!0,Error(`Extension registry mutation is forbidden while ${r.operation} is in progress`);let n={operation:t,reentrantAttempted:!1};return R.set(e,n),n}(e,"extension registration");try{let n=Object.freeze({identity:t.identity,value:t.value});if(!H.has(n.identity))throw TypeError("Extension registration identity must be created by createExtensionIdentity()");let i=n.identity.id,o=e.get(i);if(o)throw new U(n.identity,o.identity);(function(e){if(e.reentrantAttempted)throw Error(`Extension registry mutation is forbidden after a reentrant attempt during ${e.operation}`)})(r),e.set(i,n)}finally{R.get(e)===r&&R.delete(e)}}var J=Object.freeze({fontFamily:{kind:"font"},fontSize:{kind:"number",minimum:1,maximum:256,expected:"between 1 and 256"},fontWeight:{kind:"number",minimum:1,maximum:1e3,expected:"between 1 and 1000"},letterSpacing:{kind:"number",minimum:-2,maximum:4,expected:"between -2 and 4"},textTransform:{kind:"enum",values:["uppercase","lowercase","capitalize"]},textColor:{kind:"color"},paddingX:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256"},paddingY:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256"},cornerRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256"},lineWidth:{kind:"number",exclusiveMinimum:0,maximum:20,expected:"greater than 0 and at most 20"},bendRadius:{kind:"number",minimum:0,maximum:256,expected:"between 0 and 256"},fillColor:{kind:"color"},borderColor:{kind:"color"},strokeColor:{kind:"color"},headerFillColor:{kind:"color"},cue:{kind:"enum",values:["none","outline","double-line","pattern"]}}),V=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","paddingX","paddingY","cornerRadius","lineWidth","fillColor","borderColor"]),X=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor","lineWidth","bendRadius","strokeColor"]),Y=Object.freeze([...V,"fontFamily","headerFillColor"]),Q=Object.freeze(["fontSize","fontWeight","letterSpacing","textTransform","textColor"]),K=Object.freeze(["fontFamily","fontSize","fontWeight","letterSpacing","textTransform","textColor","fillColor","borderColor","strokeColor","lineWidth","cue"]),ee=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","cue"]),et=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth","textColor"]),er=Object.freeze(["fillColor","borderColor","strokeColor","lineWidth"]),en=Object.freeze(["borderColor","strokeColor","lineWidth"]),ei=Object.freeze([...er,"cue"]);function eo(e,t){return Object.freeze({properties:e,...t?{bindingFamilies:Object.freeze([...t])}:{}})}var ea=Object.freeze({node:eo(V),edge:eo(X),group:eo(Y),"group-header":eo(K,["journey"]),label:eo(Q),actor:eo(V,["sequence"]),relationship:eo(X,["er"]),"pie-slice":eo(ee,["pie","radar"]),legend:eo(et,["radar"]),bar:eo(er,["xychart","sankey","treemap"]),series:eo(en,["xychart"]),point:eo(er,["radar","xychart"]),task:eo(ei,["gantt"]),milestone:eo(ei,["gantt"])}),es=Object.freeze(Object.keys(ea)),el=Object.freeze(es.filter(e=>"bindingFamilies"in ea[e])),ed=Object.freeze([...new Set(el.flatMap(e=>ea[e].properties))]),eu=["shape","connector","text","group","document"],ec=["shape"],ef=["connector"],eh=["text"],ep=["shape","group"],em=["connector","group"],eg=["text","group"];function ey(e,t,r,n={}){let i=ea[e];return Object.freeze({applicableKinds:t,styleFallback:r,styleConsumption:i?"exact":"fallback-only",styleExtras:Object.freeze([]),...i?{styleProperties:i.properties}:{},styleBindingFamilies:Object.freeze([...i?.bindingFamilies??[]]),domIdentity:!1,relation:!1,sketch:"none",textHalo:!1,...n})}var eb=Object.freeze({node:ey("node",ep,"node",{domIdentity:!0,sketch:"shape"}),edge:ey("edge",ef,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),"edge-label":ey("edge-label",eg,"label"),group:ey("group",ep,"group",{domIdentity:!0,sketch:"shape"}),"group-header":ey("group-header",eu,"group",{sketch:"shape",textHalo:!0}),label:ey("label",eh,"label",{textHalo:!0}),actor:ey("actor",ep,"node",{domIdentity:!0,sketch:"shape"}),lifeline:ey("lifeline",em,"edge",{sketch:"connector"}),activation:ey("activation",ep,"node",{domIdentity:!0,sketch:"shape"}),message:ey("message",em,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),block:ey("block",eu,"group",{domIdentity:!0,sketch:"shape"}),note:ey("note",ep,"group",{domIdentity:!0,sketch:"shape"}),"class-box":ey("class-box",ep,"node",{domIdentity:!0,sketch:"shape"}),member:ey("member",eh,"label",{domIdentity:!0,textHalo:!0}),entity:ey("entity",ep,"node",{domIdentity:!0,sketch:"shape"}),attribute:ey("attribute",eg,"label",{domIdentity:!0,textHalo:!0}),relationship:ey("relationship",ef,"edge",{domIdentity:!0,relation:!0,sketch:"connector"}),cardinality:ey("cardinality",["shape","text"],"label",{domIdentity:!0,textHalo:!0}),"pie-slice":ey("pie-slice",ec,"node",{domIdentity:!0,sketch:"shape"}),legend:ey("legend",["shape","text","group"],"group",{textHalo:!0}),bar:ey("bar",ec,"node",{domIdentity:!0,sketch:"shape"}),series:ey("series",ef,"edge",{domIdentity:!0,sketch:"connector"}),point:ey("point",ec,"node",{domIdentity:!0}),axis:ey("axis",eu,"label",{textHalo:!0}),grid:ey("grid",eu,"edge"),plate:ey("plate",ec,"node",{domIdentity:!0,sketch:"shape"}),section:ey("section",eu,"group",{domIdentity:!0,sketch:"shape",textHalo:!0}),task:ey("task",eu,"node",{domIdentity:!0,sketch:"shape"}),milestone:ey("milestone",ec,"node",{domIdentity:!0,sketch:"shape"}),"marker-line":ey("marker-line",eu,"edge"),rail:ey("rail",eu,"edge",{sketch:"connector"}),period:ey("period",ep,"group",{domIdentity:!0,sketch:"shape"}),event:ey("event",ep,"group",{domIdentity:!0,sketch:"shape"}),score:ey("score",eu,"node"),"actor-pill":ey("actor-pill",ec,"node",{sketch:"shape"}),service:ey("service",ep,"node",{domIdentity:!0,sketch:"shape"}),junction:ey("junction",ep,"node",{domIdentity:!0}),icon:ey("icon",["shape","text","group","document"],"node",{textHalo:!0}),title:ey("title",eu,"label",{domIdentity:!0,textHalo:!0}),defs:ey("defs",["document"],"label"),prelude:ey("prelude",["document"],"label"),chrome:ey("chrome",eu,"label")}),ex=Object.freeze({applicableKinds:eu,styleFallback:"label",styleConsumption:"fallback-only",styleExtras:Object.freeze([]),styleBindingFamilies:Object.freeze([]),domIdentity:!0,relation:!1,sketch:"none",textHalo:!1}),ek=Object.freeze(Object.entries(eb).map(([e,t])=>Object.freeze({identity:_({id:`role:${e}`,kind:"role",version:"1.0.0",compatibility:{core:S,scene:"^2.0.0"},provenance:{owner:"agentic-mermaid",source:"built-in",reference:"src/scene/roles.ts"}}),role:e,traits:t,style:Object.freeze({fallbackRole:t.styleFallback,applicableProperties:t.styleProperties??Object.freeze([])})})));function ev(e){let t;return((t=eb[e])?{traits:t,source:"builtin"}:{traits:ex,source:"namespaced-safe"}).traits}function ew(e,t,r={},n={}){let i=ek.find(e=>e.role===t),o=e?.roles,a=!1===n.includeFallback?void 0:i?o?.[i.style.fallbackRole]:void 0,s=o?.[t],l=a||s?{...a,...s}:void 0,d=new Set(i?.style.applicableProperties??[]);for(let n of e?.bindings??[]){if(void 0!==n.role&&n.role!==t||!function(e,t){let r=t[e.channel];return Array.isArray(r)?r.includes(e.value):String(r??"")===e.value}(n,r))continue;let i=e?.semanticSlots?.[n.slot];if(!i)continue;let o=Object.fromEntries(Object.entries(i).filter(([e])=>d.has(e)));l={...l,...o}}return l?Object.freeze(l):void 0}var e$=Object.freeze({id:"agentic-mermaid:inter-estimate",version:"4.0.0"});function eM(e,t){let r=function(e){if(void 0===e)return;if("object"!=typeof e||null===e)throw TypeError("textMeasurement must be an object with id, version, and measure");let{id:t,version:r,measure:n}=e;if("string"!=typeof t||t.length>160||!/^[A-Za-z][A-Za-z0-9._:/-]*$/.test(t))throw TypeError("textMeasurement.id must be a stable name of at most 160 characters");if(t===e$.id)throw TypeError("textMeasurement.id is reserved for the deterministic default");if("string"!=typeof r||r.length>80||!F(r))throw TypeError("textMeasurement.version must be a semantic version");if("function"!=typeof n)throw TypeError("textMeasurement.measure must be a function");return Object.freeze({id:t,version:r,measure:n})}(e);if(!r)return;let n=Object.freeze({id:r.id,version:r.version}),i=new Map;return Object.freeze({identity:n,width(e){let o=e.fontFamily??(e.monospace?"JetBrains Mono":t),a=JSON.stringify([e.text,o,e.fontSize,e.fontWeight,e.fontStyle,e.monospace]),s=i.get(a);if(void 0!==s)return s;let l=ej(void 0,()=>r.measure(Object.freeze({...e,fontFamily:o})));if("number"!=typeof l||!Number.isFinite(l)||l<0||l>1e6)throw RangeError(`Text measurement profile ${n.id}@${n.version} must return a finite width between 0 and 1000000 pixels`);return i.size<2e4&&i.set(a,l),l}})}function ej(e,t){let r=eE;eE=e;try{return t()}finally{eE=r}}function eS(){return void 0!==eE}function ez(e){return eE?.width(e)}var eE,eO,eT=["text-spans","indexed-layout","position-cache"],eC=globalThis,eF=eC.process?.env?.AGENTIC_MERMAID_EXPERIMENTS??eC.AGENTIC_MERMAID_EXPERIMENTS,eW=new Set("string"==typeof eF?eF.split(",").map(e=>e.trim()).filter(Boolean):eT);function eN(e){return(eO??eW).has(e)}var eI=class{#e=new Map;#t=0;#r;#n;#i;constructor(e,t,r){this.#r=e,this.#n=t,this.#i=r}get(e){let t=this.#e.get(e);if(t)return this.#e.delete(e),this.#e.set(e,t),t.value}canFit(e,t){let r=this.#e.get(e);return Number.isFinite(t)&&t>=0&&this.#e.size+ +!r<=this.#r&&this.#t-(r?.weight??0)+t<=this.#n}leastRecentlyUsed(){let e=this.#e.values().next();return e.done?void 0:e.value.value}delete(e){let t=this.#e.get(e);return!!t&&(this.#e.delete(e),this.#t-=t.weight,this.#i?.(e,t.value),!0)}set(e,t,r){if(!(!Number.isFinite(r)||r<0||r>this.#n))for(this.delete(e),this.#e.set(e,{value:t,weight:r}),this.#t+=r;this.#e.size>this.#r||this.#t>this.#n;){let e=this.#e.keys().next().value;this.delete(e)}}clear(){if(this.#i)for(let e of this.#e.keys())this.delete(e);else this.#e.clear(),this.#t=0}},eA="<\\/?(?:b|strong|i|em|u|s|del)\\s*>",eL=/<(\/)?(?:(b|strong)|(i|em)|(u)|(s|del))\s*>/gi,eP=RegExp(eA,"i");function eq(e){let t,r=[],n=!1,i=!1,o=!1,a=!1,s=0;for(eL.lastIndex=0;null!==(t=eL.exec(e));){t.index>s&&r.push({text:e.slice(s,t.index),bold:n,italic:i,underline:o,strikethrough:a}),s=t.index+t[0].length;let l=!!t[1];t[2]?n=!l:t[3]?i=!l:t[4]?o=!l:t[5]&&(a=!l)}return s<e.length&&r.push({text:e.slice(s),bold:n,italic:i,underline:o,strikethrough:a}),r}var eB=new Intl.Segmenter(void 0,{granularity:"grapheme"}),eH=/^[\x20-\x7e]*$/;function eR(e){return eH.test(e)?e.split(""):Array.from(eB.segment(e),e=>e.segment)}function eD(e,t=!1){if(!/[\u0000-\u001f\u007f-\u009f]/.test(e))return e;let r="";for(let n of e){let e=n.codePointAt(0),i=e<=31||e>=127&&e<=159;" "===n?r+=" ":!i||t&&(n===`
|
|
2
|
-
`||"\r"===n)?r+=n:r+="?"}return r}function eG(e){return e.split(`
|
|
3
|
-
`).map(e=>eD(e)).join(`
|
|
4
|
-
`)}var e_=new eI(512,4194304),eU=new WeakSet;function eZ(e){return eU.add(e),e}function eJ(e){return eU.has(e)?e:eZ(Object.freeze({source:e.source,display:e.display,...e.transform?{transform:e.transform}:{},lineStarts:Object.freeze([...e.lineStarts]),lines:Object.freeze(e.lines.map(e=>Object.freeze(e.map(e=>Object.freeze({...e,...e.clusters?{clusters:Object.freeze(e.clusters.map(e=>Object.freeze({...e})))}:{}})))))}))}function eV(e,t){return t?.value===e?t.prepared:e}function eX(e){return e.lines.map(e=>e.map(e=>e.text).join("")).join(`
|
|
5
|
-
`)}function eY(e,t,r){if((e=eJ(e)).transform)throw TypeError("Display tokens must be decoded before text transforms");let n=new RegExp(t.source,t.flags.includes("g")?t.flags:t.flags+"g"),i=e.lines.map(e=>Object.freeze(e.map(e=>{let t=[],i=[];for(let r of e.clusters??[{text:e.text,sourceStart:e.sourceStart,sourceEnd:e.sourceEnd}])for(let e=0;e<r.text.length;e++)t.push(r.sourceStart),i.push(r.sourceEnd);let o=[],a=(r,n,a,s)=>{let l=n;for(let d of eR(r))o.push(Object.freeze({text:eD(d),sourceStart:t[s?n:l]??e.sourceStart,sourceEnd:i[s?a-1:l+d.length-1]??e.sourceEnd})),l+=d.length},s=0;for(let t of e.text.matchAll(n)){if(0===t[0].length)throw TypeError("Display token patterns must not match empty text");a(e.text.slice(s,t.index),s,t.index,!1),a(r(t[0]),t.index,t.index+t[0].length,!0),s=t.index+t[0].length}return a(e.text.slice(s),s,e.text.length,!1),Object.freeze({...e,text:o.map(e=>e.text).join(""),clusters:Object.freeze(o)})})));return eZ(Object.freeze({...e,lines:Object.freeze(i)}))}function eQ(e){let t=[[]],r=[0],n="",i="literal";for(let o of e){let e=eK(o,"literal");if(e.transform)throw TypeError("Display text must be combined before text transforms");"formatted"===e.display&&(i="formatted");let a=n.length;for(let[n,i]of e.lines.entries())for(let o of(n>0&&(t.push([]),r.push(a+e.lineStarts[n])),i))t.at(-1).push(Object.freeze({...o,sourceStart:a+o.sourceStart,sourceEnd:a+o.sourceEnd,...o.clusters?{clusters:Object.freeze(o.clusters.map(e=>Object.freeze({...e,sourceStart:a+e.sourceStart,sourceEnd:a+e.sourceEnd})))}:{}}));n+=e.source}return eZ(Object.freeze({source:n,display:i,lines:Object.freeze(t.map(e=>Object.freeze(e))),lineStarts:Object.freeze(r)}))}function eK(e,t="formatted",r){if("string"!=typeof e){if(e=eJ(e),!r||e.transform===r)return e;if(e.transform)throw TypeError("A prepared display transform cannot be replaced without its original runs");return e0(e,r)}let n=eN("text-spans")&&e.length<=16384?JSON.stringify([e,t,r]):void 0;if(void 0!==n){let e=e_.get(n);if(e)return e}let i=0,o=[],a=Object.freeze([]),s=e.split(`
|
|
6
|
-
`).map(e=>{let r;if(o.push(i),""===e)return i++,a;if("literal"===t)r=[{text:e,bold:!1,italic:!1,underline:!1,strikethrough:!1,sourceStart:i,sourceEnd:i+e.length}];else{let t=RegExp(eA,"gi"),n=[],o=0;for(let r of e.matchAll(t))r.index>o&&n.push({start:o,end:r.index}),o=r.index+r[0].length;o<e.length&&n.push({start:o,end:e.length}),r=eq(e).map((e,t)=>({...e,sourceStart:i+n[t].start,sourceEnd:i+n[t].end}))}return r=r.map(e=>{let t=e.sourceStart,r=eR(e.text).map(e=>{let r=Object.freeze({text:eD(e),sourceStart:t,sourceEnd:t+e.length});return t+=e.length,r});return Object.freeze({...e,text:r.map(e=>e.text).join(""),clusters:Object.freeze(r)})}),i+=e.length+1,Object.freeze(r)}),l=eZ(Object.freeze({source:e,display:t,lines:Object.freeze(s),lineStarts:Object.freeze(o)})),d=r?e0(l,r):l;return void 0!==n&&e_.set(n,d,2*n.length+96*e.length+256),d}function e0(e,t){let r=e.lines.map(e=>{let r=e.map(e=>e.text).join(""),n="uppercase"===t?r.toUpperCase():"lowercase"===t?r.toLowerCase():"capitalize"===t?r.replace(/(?<![\p{L}\p{M}\p{N}\p{Pc}])\p{L}/gu,e=>e.toUpperCase()):r,i="capitalize"===t?new Set([...r.matchAll(/(?<![\p{L}\p{M}\p{N}\p{Pc}])\p{L}/gu)].map(e=>e.index)):void 0,o=0,a=0;return Object.freeze(e.map(e=>{let r=a,s=(e.clusters??[{text:e.text,sourceStart:e.sourceStart,sourceEnd:e.sourceEnd}]).map(e=>{let r="uppercase"===t||i?.has(o)?e.text.toUpperCase().length:"lowercase"===t?e.text.toLowerCase().length:e.text.length,s=n.slice(a,a+r);return o+=e.text.length,a+=r,Object.freeze({...e,text:s})});return Object.freeze({...e,text:n.slice(r,a),clusters:Object.freeze(s)})}))});return eZ(Object.freeze({...e,transform:t,lines:Object.freeze(r)}))}var e1=[[11904,12031],[12032,12255],[12288,12351],[12352,12447],[12448,12543],[12544,12591],[12688,12799],[12800,13311],[13312,19903],[19968,40959],[63744,64255],[131072,196607]],e2=[[4352,4447],[12592,12687],[44032,55215]],e5=[[9001,9002],[65040,65049],[65072,65135],[65280,65376],[65504,65510]],e3=[[127744,129791]],e6=[[768,879],[6832,6911],[7616,7679],[8400,8447],[65056,65071]],e4=new Set([8203,8204,8205,65279]);function e8(e,t){for(let[r,n]of t)if(e>=r&&e<=n)return!0;return!1}var e9=new Set(["i","l","t","f","j","I","1","!","|",".",",",":",";","'"]),e7=new Set(["W","M","w","m","@","%"]),te=new Set(["W","M"]),tt=new Set(["(",")","[","]","{","}","/","\\","-",'"',"`"]);function tr(e){return e8(e,e6)||e4.has(e)||65038===e||65039===e}function tn(e){return e8(e,e1)||e8(e,e2)||e8(e,e5)||e8(e,e3)}var ti=/\p{Emoji_Presentation}|\p{Extended_Pictographic}/u;function to(e){let t=e.codePointAt(0);return void 0===t||tr(t)?0:tn(t)||ti.test(e)?2:" "===e?.3:te.has(e)?1.5:e7.has(e)?1.2:e9.has(e)?.4:tt.has(e)?.5:"r"===e?.8:t>=65&&t<=90?1.2:1}var ta={version:4,unit:"px",fontCalibration:"Inter-compatible proportional estimate",monospaceCalibration:"0.6em-per-cell",wideCodepoints:"src/shared/unicode-ranges.ts",emojiDetection:"Emoji_Presentation-or-Extended_Pictographic",ambiguousWidth:"single-cell",paintedAdvanceProjection:"prepared-positions-or-svg-textLength-spacingAndGlyphs",naturalAdvanceExemptions:"prepared-non-ascii-shaping-runs"};function ts(e){var t;let r=(t=e.fontWeight)>=600?.6:t>=500?.57:.54,n=0,i=0;for(let t of e.text)n+=to(t),i++;let o=.15*e.fontSize;return{contract:ta,width:ez({...e,fontStyle:e.fontStyle??"normal",monospace:!1})??n*e.fontSize*r+o,charWidthUnits:n,codePointCount:i,fontSize:e.fontSize,fontWeight:e.fontWeight,baseRatio:r,minPadding:o}}function tl(e,t,r,n="normal",i){return ts({text:e,fontSize:t,fontWeight:r,fontStyle:n,fontFamily:i}).width}function td(e,t,r,n="normal",i){let o=ts({text:e,fontSize:t,fontWeight:r,fontStyle:n,fontFamily:i});if(eS())return o.width;let a=0;for(let t of e)te.has(t)&&(a+=1.85-1.5);return o.width+a*t*o.baseRatio}function tu(e,t,r=0,n=400,i="normal",o){let a=eR(e),s=Math.max(0,a.length-1)*r,l=ez({text:e,fontSize:t,fontWeight:n,fontStyle:i,fontFamily:o,monospace:!0});if(void 0!==l)return Math.max(0,l+s);let d=0;for(let e of a){let t=0;for(let r of e){let e=r.codePointAt(0);void 0===e||tr(e)||(t=Math.max(t,tn(e)||ti.test(r)?2:1))}d+=t}return Math.max(0,d*t*.6+s)}function tc(e,t,r,n=0,i="normal",o){let a=eP.test(e)?eq(e):[{text:e,bold:!1}],s=a.map(e=>e.text).join(""),l=0===n?0:Math.max(0,eR(s).length-1)*n;return Math.max(0,a.reduce((e,n)=>e+tl(n.text,t,n.bold?Math.max(700,r):r,"italic"in n&&n.italic||"italic"===i?"italic":"normal",o),0)+l)}var tf=1.3;function th(e,t,r,n=0){if("string"!=typeof e){let i=e.lines.map(e=>e.map(e=>e.text).join("")),o=e.lines.reduce((e,o,a)=>{let s=0===n?0:Math.max(0,eR(i[a]).length-1)*n;return Math.max(e,o.reduce((e,n)=>e+tl(n.text,t,n.bold?Math.max(700,r):r),0)+s)},0),a=t*tf;return{width:o,height:i.length*a,lines:i,lineHeight:a}}let i=e.split(`
|
|
7
|
-
`),o=t*tf,a=0;for(let e of i){let i=tc(e,t,r,n);i>a&&(a=i)}return{width:a,height:i.length*o,lines:i,lineHeight:o}}function tp(e,t=!0){return tm(tg(e,t))}function tm(e){return e.replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>")}function tg(e,t=!0){let r=tb(e.startsWith('"')&&e.endsWith('"')?e.slice(1,-1):e);return(t?r.replace(/\\n/g,`
|
|
8
|
-
`):r).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"")}var ty=/<br\s*\/?>/gi;function tb(e){return e.replace(ty,`
|
|
9
|
-
`)}function tx(e,t="formatted"){return eK(e,t).lines.map(e=>e.map(e=>e.text).join("")).join(`
|
|
10
|
-
`)}var tk=/[&<>"']/,tv=/[&<>"'\t\n\r]/;function tw(e){return"string"!=typeof e||tk.test(e)?e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'"):e}function t$(e){return"string"!=typeof e||tv.test(e)?tw(e).replace(/[\t\n\r]/g,e=>" "===e?"	":e===`
|
|
11
|
-
`?" ":" "):e}function tM(e){return t$(eG(e))}function tj(e,t=400){let r=[];e.bold&&r.push(`font-weight="${t>700?t:"bold"}"`),e.italic&&r.push('font-style="italic"');let n=[];return e.underline&&n.push("underline"),e.strikethrough&&n.push("line-through"),n.length&&r.push(`text-decoration="${n.join(" ")}"`),r}function tS(e,t=400){return 0===e.length?"":e.every(e=>!e.bold&&!e.italic&&!e.underline&&!e.strikethrough)?e.map(e=>tw(e.text)).join(""):e.map(e=>{let r=tw(e.text);return e.bold||e.italic||e.underline||e.strikethrough?`<tspan ${tj(e,t).join(" ")}>${r}</tspan>`:r}).join("")}function tz(e,t,r,n,i){let o=e.lineBlocks[t];if(/[^\x20-\x7e]/u.test(o.runs.map(e=>e.text).join(""))){let t="start"===n?r+o.width/2:"end"===n?r-o.width/2:r;return`<tspan x="${tI(t)}"${void 0===i?"":` y="${tI(i)}"`} text-anchor="middle" data-text-fragment="true">${tS(o.runs,e.fontWeight)}</tspan>`}if(0===e.letterSpacing&&!o.fragments)return tS(o.runs,e.fontWeight);if(!o.fragments)throw TypeError("Tracked text requires retained fragment allocations");let a=("middle"===n?r-o.width/2:"end"===n?r-o.width:r)+o.originX;return o.fragments.map(t=>{let r=tj(o.runs[t.runIndex],e.fontWeight),n=/^ | $/.test(t.text)?' xml:space="preserve"':"";return`<tspan x="${tI(a+t.x)}" text-anchor="start" letter-spacing="0" data-text-fragment="true" textLength="${tI(Math.max(0,t.width))}" lengthAdjust="spacingAndGlyphs"${n}${r.length?` ${r.join(" ")}`:""}>${tw(t.text)}</tspan>`}).join("")}function tE(e,t,r,n,i,o=.35,a=!1){let s="string"==typeof e?void 0:e,l=s?s.text:e,d=s?s.lines:l.split(`
|
|
12
|
-
`),u=s?.prepared.display??(a?"literal":"formatted"),c=i.match(/\btext-anchor="([^"]*)"/)?.[1]??"start",f=s&&/[^\x20-\x7e]/u.test(s.lineBlocks.map(e=>e.runs.map(e=>e.text).join("")).join("")),h=s&&(0!==s.letterSpacing||f),p=(e,r)=>s?tz(s,r,t,c):function(e,t="formatted"){return"literal"!==t&&eP.test(e)?tS(eK(e,t).lines[0]):tw(e)}(e,u);"literal"===u&&eP.test(l)&&!i.includes("data-literal-text=")&&(i+=' data-literal-text="true"');let m=s?s.lineBlocks.map(e=>e.runs.map(e=>e.text).join("")).join(`
|
|
13
|
-
`):tx(l,u);/(?:^ | $| {2}|\t)/m.test(m)&&!i.includes("xml:space=")&&(i+=' xml:space="preserve"'),s&&(i+=' data-prepared-text="true"');let g=e=>!s||h||s.lineBlocks[e].fragments?"":` textLength="${tI(s.lineBlocks[e].width)}" lengthAdjust="spacingAndGlyphs" data-font-metrics="deterministic-fit"`;if(1===d.length){let e=n*o;return f?`<text x="${tI(t)}" y="${tI(r)}" ${i}>${tz(s,0,t,c,r+e)}</text>`:`<text x="${tI(t)}" y="${tI(r)}" ${i} dy="${tI(e)}"${g(0)}>${p(l,0)}</text>`}let y=s?.lineHeight??n*tf,b=-((d.length-1)/2)*y+n*o,x=d.map((e,n)=>{let i=f?`y="${tI(r+b+n*y)}"`:`dy="${tI(0===n?b:y)}"`;return`<tspan x="${tI(t)}" ${i}${g(n)}>${p(e,n)}</tspan>`}).join("");return`<text x="${tI(t)}" y="${tI(r)}" ${i}>${x}</text>`}var tO=/[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?/g,tT=/\.\d{12}/,tC=/^[-+]?(?:\d+\.?\d*|\.\d+)(?:[eE][-+]?\d+)?(?:%|px|pt|pc|em|ex|rem|cm|mm|in)?$/,tF=new Set(["x","y","x1","y1","x2","y2","cx","cy","r","rx","ry","dx","dy","width","height","refX","refY","markerWidth","markerHeight","stroke-width","stroke-dashoffset","stroke-miterlimit","pathLength","font-size","font-weight","letter-spacing","textLength","opacity","fill-opacity","stroke-opacity","stop-opacity","offset"]),tW=new Map,tN=new Map;function tI(e){let t=tW.get(e);if(void 0!==t)return t;let r=String(e),n=r.length>=14&&tT.test(r)&&Number.isFinite(e)?String(Number(e.toPrecision(12))):r;return tW.size>=1024&&tW.clear(),tW.set(e,n),n}function tA(e,t){if(t.length<13||!tT.test(t))return t;let r=t.length<=512?`${e}\0${t}`:void 0,n=void 0===r?void 0:tN.get(r);if(void 0!==n)return n;if(!(tF.has(e)&&tC.test(t)||("viewBox"===e||"points"===e||"stroke-dasharray"===e)&&/^[-+\d.eE,\s]+$/.test(t)||"d"===e&&/^[MmZzLlHhVvCcSsQqTtAa\d.eE,+\s-]+$/.test(t)||("transform"===e||"gradientTransform"===e||"patternTransform"===e)&&/^(?:(?:matrix|translate|scale|rotate|skewX|skewY)\s*\([-+\d.eE,\s]+\)\s*)+$/.test(t)))return t;let i=t.replace(tO,(e,r)=>{if(!tT.test(e))return e;let n=Number(e);if(!Number.isFinite(n))return e;let i=tI(n);return e.startsWith(".")&&r>0&&/[\d.]/.test(t[r-1])?` ${i}`:i});return void 0!==r&&(tN.size>=256&&tN.clear(),tN.set(r,i)),i}function tL(e){return!e.includes("->")&&!/[#:"\[\],\u0000-\u001f]/.test(e)}function tP(e,t,r=""){let n=tL(e)&&tL(t)?`${e}->${t}`:`relation:${JSON.stringify([e,t])}`;return r?`${r}:${n}`:n}function tq(e,...t){let r=t.map(String);return tL(e)&&r.every(tL)?[e,...r].join(":"):`part:${JSON.stringify([e,...r])}`}function tB(e,t,...r){let n=r.map(String);return tL(t)&&n.every(tL)?[e,t,...n].join(":"):`${e}:${JSON.stringify([t,...n])}`}function tH(e){return ev(e).domIdentity}function tR(e,t){if(!tH(t.role))return e;let r=e.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0];if(!r||r.startsWith("<style")||r.startsWith("<defs")||r.startsWith("<svg"))return e;let n=(e,t,r)=>{let n=t$(r),i=RegExp(`\\s${t}="[^"]*"`);if(i.test(e))return e.replace(i,` ${t}="${n}"`);let o=e.endsWith("/>")?"/>":">";return`${e.slice(0,-o.length).trimEnd()} ${t}="${n}"${"/>"===o?" /":""}>`},i=n(n(r,"data-id",t.id),"data-role",t.role);return void 0!==t.from&&(i=n(i,"data-from",t.from)),void 0!==t.to&&(i=n(i,"data-to",t.to)),i===r?e:e.replace(r,i)}function tD(e,t,r=0){return Math.abs(e.x-t.x)<=r&&Math.abs(e.y-t.y)<=r}function tG(e,t){let r=t.x-e.x,n=t.y-e.y,i=Math.hypot(r,n);return Number.isFinite(i)&&i>0?{x:r/i,y:n/i}:void 0}function t_(e,t){return{x:(e.x+t.x)/2,y:(e.y+t.y)/2}}function tU(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function tZ(e,t,r){let n=tU(t,r);return 0===n?tU(e,t):Math.abs((r.x-t.x)*(t.y-e.y)-(t.x-e.x)*(r.y-t.y))/n}function tJ(e,t,r,n,i=.5,o=12){if(!Number.isFinite(i)||i<=0)throw TypeError("Cubic flattening tolerance must be positive and finite");if(!Number.isSafeInteger(o)||o<0)throw TypeError("Cubic flattening maxDepth must be a non-negative safe integer");for(let i of[e,t,r,n])if(!Number.isFinite(i.x)||!Number.isFinite(i.y))throw TypeError("Cubic flattening points must be finite");let a=[{...e}],s=(e,t,r,n,l)=>{let d=tU(e,n),u=tU(e,t)+tU(t,r)+tU(r,n)-d;if(Math.max(tZ(t,e,n),tZ(r,e,n))<=i&&u<=i||l>=o)return void a.push({...n});let c=t_(e,t),f=t_(t,r),h=t_(r,n),p=t_(c,f),m=t_(f,h),g=t_(p,m);s(e,c,p,g,l+1),s(g,m,h,n,l+1)};return s(e,t,r,n,0),a}function tV(...e){let t=e[0];if(t)for(let r=1;r<e.length;r++){let n=tG(t,e[r]);if(n)return n}}function tX(e,t,r,n=.5){var i,o,a,s,l,d,u;let c,f;for(let e of[t,...r.flatMap(e=>"line"===e.kind?[e.end]:"quadratic"===e.kind?[e.control,e.end]:[e.control1,e.control2,e.end])])if(!Number.isFinite(e.x)||!Number.isFinite(e.y))throw TypeError("Connector path projection points must be finite");let h=[{...t}],p=[],m=t;for(let e of r){if(p.push(m),"line"===e.kind)h.push({...e.end});else if("quadratic"===e.kind){let[t,r]=(i=m,o=e.control,a=e.end,[{x:i.x+(o.x-i.x)*2/3,y:i.y+(o.y-i.y)*2/3},{x:a.x+(o.x-a.x)*2/3,y:a.y+(o.y-a.y)*2/3}]);h.push(...tJ(m,t,r,e.end,n).slice(1))}else h.push(...tJ(m,e.control1,e.control2,e.end,n).slice(1));m=e.end}for(let e=0;e<r.length&&!c;e++)s=p[e],c="line"===(l=r[e]).kind?tV(s,l.end):"quadratic"===l.kind?tV(s,l.control,l.end):tV(s,l.control1,l.control2,l.end);for(let e=r.length-1;e>=0&&!f;e--)d=p[e],f="line"===(u=r[e]).kind?tV(d,u.end):"quadratic"===u.kind?tV(u.control,u.end)??tV(d,u.end):tV(u.control2,u.end)??tV(u.control1,u.end)??tV(d,u.end);return{geometry:{kind:"path",d:e,points:h},contours:[{start:{...t},end:{...m},closed:!1,...c?{startTangent:c}:{},...f?{endTangent:f}:{}}]}}function tY(e,t,r){return"manhattan"===r?Math.abs(t.x-e.x)+Math.abs(t.y-e.y):tU(e,t)}function tQ(e,t){if(void 0===t)return e;if(!Number.isSafeInteger(t)||t<0)throw TypeError("Rounded connector precision must be a non-negative safe integer");let r=10**t;return Math.round(e*r)/r}function tK(e,t,r,n,i){let o=tY(e,t,n);if(0===o)return{...e};let a=r/o;return{x:tQ(e.x+(t.x-e.x)*a,i),y:tQ(e.y+(t.y-e.y)*a,i)}}function t0(e,t){for(let r=1;r<e.length-1;r++){let n=t?r:e.length-1-r,i=e[n-1],o=e[n],a=e[n+1],s=o.x-i.x,l=o.y-i.y,d=a.x-o.x,u=a.y-o.y;if(s*u!=l*d||s*d+l*u<0)return n}return -1}function t1(e,t,r={}){if(0===e.length)throw RangeError("Rounded connector paths require at least one point");if(!Number.isFinite(t))throw TypeError("Rounded connector radius must be finite");let n=r.metric??"euclidean",i=r.terminalClearance;if(i&&(!Number.isFinite(i.start??0)||(i.start??0)<0||!Number.isFinite(i.end??0)||(i.end??0)<0))throw TypeError("Terminal clearance must be finite and non-negative");let o=e[0],a=[];if(t<=0||e.length<3){for(let t=1;t<e.length;t++)a.push({kind:"line",end:e[t]});return tX(`M${e.map(e=>`${e.x},${e.y}`).join(" L")}`,o,a,r.tolerance)}let s=i?.start?t0(e,!0):-1,l=i?.end?t0(e,!1):-1,d=[`M${o.x},${o.y}`];for(let u=1;u<e.length-1;u++){let c=e[u-1],f=e[u],h=e[u+1],p=Math.max(0,Math.min(t,tY(c,f,n)/2,tY(f,h,n)/2,u===s?tY(o,f,n)-i.start:1/0,u===l?tY(e.at(-1),f,n)-i.end:1/0));if(p<=0){d.push(`L${f.x},${f.y}`),a.push({kind:"line",end:f});continue}let m=tK(f,c,p,n,r.precision),g=tK(f,h,p,n,r.precision);d.push(`L${m.x},${m.y}`),d.push(`Q${f.x},${f.y} ${g.x},${g.y}`),a.push({kind:"line",end:m}),a.push({kind:"quadratic",control:f,end:g})}let u=e.at(-1);return d.push(`L${u.x},${u.y}`),a.push({kind:"line",end:u}),tX(d.join(" "),o,a,r.tolerance)}function t2(e,t=!1){return"line"===e.kind?[{points:[{x:e.x1,y:e.y1},{x:e.x2,y:e.y2}],closed:!1}]:"path"===e.kind&&void 0!==e.subpaths?e.subpaths:[{points:e.points,closed:t}]}function t5(e){return"path"===e.kind&&/[AaCcQqSsTt]/.test(e.d)}function t3(e,t=!1){let r=[];for(let n of t2(e,t)){let t,i=n.points[0],o=n.points.at(-1);if(!i||!o)continue;for(let e=1;e<n.points.length&&!t;e++)t=tG(n.points[e-1],n.points[e]);let a=n.closed&&!tD(i,o);!t&&a&&(t=tG(o,i));let s=a?tG(o,i):void 0;for(let e=n.points.length-1;e>0&&!s;e--)s=tG(n.points[e-1],n.points[e]);r.push({start:"line"===e.kind?i:{...i},end:"line"===e.kind?o:{...n.closed?i:o},closed:n.closed,...t?{startTangent:t}:{},...s?{endTangent:s}:{}})}return r}function t6(e,t=!1){let r=[],n=[];for(let i of t2(e,t)){let e=i.points[0],t=i.closed?e:i.points.at(-1);e&&r.push(e),t&&n.push(t)}return{starts:r,ends:n}}function t4(e,t=!1){let r=[];for(let[n,i]of t2(e,t).entries()){for(let e=1;e<i.points.length;e++)r.push({start:i.points[e-1],end:i.points[e],subpathIndex:n,closing:!1});let e=i.points[0],t=i.points.at(-1);i.closed&&e&&t&&!tD(e,t)&&r.push({start:t,end:e,subpathIndex:n,closing:!0})}return r}function t8(e,t=!1){return"line"===e.kind?[]:"path"===e.kind?e.markerMidpoints??[]:t2(e,t).flatMap(e=>{if(e.points.length<2)return[];let t=e.closed&&tD(e.points[0],e.points.at(-1))?e.points.slice(0,-1):e.points;return e.closed?t.slice(1):t.slice(1,-1)})}var t9=Object.assign(Object.create(null),{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}),t7=/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function re(e){let t=e.replace("#",""),r=3===t.length||4===t.length?t[0]+t[0]+t[1]+t[1]+t[2]+t[2]:t;return[parseInt(r.slice(0,2),16),parseInt(r.slice(2,4),16),parseInt(r.slice(4,6),16)]}function rt(e){return rm(e)?re(e):null}function rr(e,t,r){return"#"+[e,t,r].map(e=>Math.round(Math.max(0,Math.min(255,e))).toString(16).padStart(2,"0")).join("")}function rn(e,t,r){return rr(...ri(re(e),re(t),r))}function ri(e,t,r,n=[0,0,0]){let i=r/100;for(let r=0;r<3;r++)n[r]=Math.round(Math.max(0,Math.min(255,e[r]*i+t[r]*(1-i))));return n}function ro(e){return e<=.04045?e/12.92:((e+.055)/1.055)**2.4}function ra(e){return .2126*ro(e[0]/255)+.7152*ro(e[1]/255)+.0722*ro(e[2]/255)}function rs(e,t){return(Math.max(e,t)+.05)/(Math.min(e,t)+.05)}function rl(e){let t=rb(e);return t?ra(t):null}function rd(e,t){let r=rl(e),n=rl(t);return null===r||null===n?null:rs(r,n)}function ru(e,t,r,n){let i=rd(e,t);if(null===i||i>=r)return e;let o=rd("#000000",t)??0,a=rd("#ffffff",t)??0,s=(n?rd(n,t)??0:0)>=r?n:o>=a?"#000000":"#ffffff";if((rd(s,t)??0)<r)return e;let l=rl(t),d=re(s),u=re(e),c=[0,0,0];for(let e=1;e<=1e3;e++)if(ri(d,u,e/10,c),rs(ra(c),l)>=r)return rr(...c);return s}var rc=4.5,rf=3,rh=3;function rp(e,t,r=rc){return ru(e,t,r)}function rm(e){return t7.test(e)}function rg(e){return/^#[0-9a-fA-F]{6}$/.test(e)}function ry(e,t,r){return(299*e+587*t+114*r)/1e3}function rb(e){let t=e.trim().toLowerCase(),r=Object.hasOwn(t9,t)?t9[t]:void 0;if(r){let e=re(r);return[e[0],e[1],e[2],1]}if("transparent"===t)return[0,0,0,0];let n=rm(t)?t.slice(1):void 0;if(n){let e=n.length<=4?[...n].map(e=>e+e).join(""):n;return[Number.parseInt(e.slice(0,2),16),Number.parseInt(e.slice(2,4),16),Number.parseInt(e.slice(4,6),16),8===e.length?Number.parseInt(e.slice(6,8),16)/255:1]}let i=t.match(/^rgba?\((.*)\)$/);if(i){let e=i[1].trim(),t=e.split("/").map(e=>e.trim());if(t.length>2||2===t.length&&e.includes(","))return null;let r=(e.includes(",")?e.split(","):t[0].split(/\s+/)).map(e=>e.trim()),n=t[1];if(e.includes(",")&&4===r.length&&void 0===n&&(n=r.pop()),3!==r.length||e.includes(",")&&r.some(e=>e.endsWith("%"))&&!r.every(e=>e.endsWith("%")))return null;let o=r.map(e=>{let t=e.endsWith("%"),r=rk(e,t);return null===r?null:Math.max(0,Math.min(255,t?2.55*r:r))});if(o.some(e=>null===e))return null;let a=rx(n);return null===a?null:[o[0],o[1],o[2],a]}let o=t.match(/^hsla?\((.*)\)$/);if(o){let e=o[1].trim(),t=e.split("/").map(e=>e.trim());if(t.length>2||2===t.length&&e.includes(","))return null;let r=(e.includes(",")?e.split(","):t[0].split(/\s+/)).map(e=>e.trim()),n=t[1];if(e.includes(",")&&4===r.length&&void 0===n&&(n=r.pop()),3!==r.length||e.includes(",")&&(!r[1].endsWith("%")||!r[2].endsWith("%")))return null;let i=function(e){let t=e.trim().match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(deg|grad|rad|turn)?$/i);if(!t)return null;let r=Number(t[1]);if(!Number.isFinite(r))return null;let n=r;switch(t[2]?.toLowerCase()){case"grad":n*=.9;break;case"rad":n*=180/Math.PI;break;case"turn":n*=360}return Number.isFinite(n)?n:null}(r[0]),a=rk(r[1],r[1].endsWith("%")),s=rk(r[2],r[2].endsWith("%")),l=rx(n);if(null===i||null===a||null===s||null===l)return null;let d=s/100,u=Math.max(0,a)/100*(1-Math.abs(2*d-1)),c=(i%360+360)%360/60,f=u*(1-Math.abs(c%2-1)),[h,p,m]=c<1?[u,f,0]:c<2?[f,u,0]:c<3?[0,u,f]:c<4?[0,f,u]:c<5?[f,0,u]:[u,0,f],g=d-u/2,y=[(h+g)*255,(p+g)*255,(m+g)*255];return y.some(e=>!Number.isFinite(e))?null:[Math.max(0,Math.min(255,y[0])),Math.max(0,Math.min(255,y[1])),Math.max(0,Math.min(255,y[2])),l]}return null}function rx(e){if(void 0===e)return 1;let t=e.endsWith("%"),r=rk(e,t);return null===r?null:Math.max(0,Math.min(1,t?r/100:r))}function rk(e,t){if(!(t?/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?%$/i:/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?$/i).test(e))return null;let r=Number(t?e.slice(0,-1):e);return Number.isFinite(r)?r:null}function rv(e,t){let r=rb(e);if(!r)return null;if(1===r[3])return[r[0],r[1],r[2]];let n=rb(t);if(!n)return null;let i=n[3],o=r[3]+i*(1-r[3]);return o<=0?null:[0,1,2].map(e=>Math.min(255,Math.max(0,(r[e]*r[3]+n[e]*i*(1-r[3]))/o)))}function rw(e){let t=rt(e);return t?ra(t):null}function r$(e,t){let r=rw(e),n=rw(t);return null===r||null===n?null:rs(r,n)}function rM(e,t,r="#ffffff"){let n=rv(t,r);if(!n)return null;let i=rr(...n),o=rv(e,i);return o?r$(rr(...o),i):null}var rj=[1,0,0,1,0,0];function rS(e){if(!e)return rj;if("matrix"===e.kind)return[e.a,e.b,e.c,e.d,e.e,e.f];let t=e.angle*Math.PI/180,r=Math.cos(t),n=Math.sin(t);return[r,n,-n,r,e.cx-r*e.cx+n*e.cy,e.cy-n*e.cx-r*e.cy]}function rz(e,t){return[e[0]*t[0]+e[2]*t[1],e[1]*t[0]+e[3]*t[1],e[0]*t[2]+e[2]*t[3],e[1]*t[2]+e[3]*t[3],e[0]*t[4]+e[2]*t[5]+e[4],e[1]*t[4]+e[3]*t[5]+e[5]]}function rE(e,t){return{x:t[0]*e.x+t[2]*e.y+t[4],y:t[1]*e.x+t[3]*e.y+t[5]}}function rO(e){let t=e[0]*e[3]-e[1]*e[2];if(!(!Number.isFinite(t)||0===t))return[e[3]/t,-e[1]/t,-e[2]/t,e[0]/t,(e[2]*e[5]-e[3]*e[4])/t,(e[1]*e[4]-e[0]*e[5])/t]}function rT(e){let t=rj,r=0;for(let n of e.matchAll(/([A-Za-z]+)\s*\(([^()]*)\)/g)){let i;if(e.slice(r,n.index).trim())return;r=n.index+n[0].length;let o=n[2].trim();if(!o||/^(?:,)|(?:,)$|,\s*,/.test(o)||!/^[-+\d.eE,\s]+$/.test(o))return;let a=o.split(/[\s,]+/).map(Number);if(!a.every(Number.isFinite))return;if("matrix"===n[1]&&6===a.length)i=a;else if("translate"===n[1]&&(1===a.length||2===a.length))i=[1,0,0,1,a[0],a[1]??0];else if("scale"===n[1]&&(1===a.length||2===a.length))i=[a[0],0,0,a[1]??a[0],0,0];else{if("rotate"!==n[1]||1!==a.length&&3!==a.length)return;i=rS({kind:"rotate",angle:a[0],cx:a[1]??0,cy:a[2]??0})}t=rz(t,i)}return r>0&&!e.slice(r).trim()?t:void 0}function rC(e){return"rotate"===e.kind?`rotate(${e.angle} ${e.cx} ${e.cy})`:`matrix(${e.a} ${e.b} ${e.c} ${e.d} ${e.e} ${e.f})`}var rF=Symbol.for("agentic-mermaid.performance-observer.v1"),rW=globalThis;function rN(e,t){try{e(Object.freeze(t))}catch{}}function rI(e,t,r,n){let i=rW[rF];"function"==typeof i&&rN(i,{version:1,kind:"cache",owner:e,outcome:t,...r?{reason:r}:{},...n?{detail:n}:{}})}function rA(e,t,r){let n=rW[rF];"function"==typeof n&&rN(n,{version:1,kind:"fallback",owner:e,reason:t,...void 0!==r?{attempt:r}:{}})}var rL,rP=0,rq=0;function rB(e){let t;"function"==typeof(t=rW[rF])&&rN(t,{version:1,kind:"scope",owner:"graphical"});let r=rL,n=rP,i=rq;rL=new Map,rP=0,rq=0;try{return e()}finally{rL=r,rP=n,rq=i}}function rH(e,t,r){if(!rL)return rI("svg-inspection","bypass","outside-graphical-scope",e),r();let n=rL.get(e);if(n?.has(t))return rI("svg-inspection","hit",void 0,e),n.get(t);rI("svg-inspection","miss",void 0,e);let i=r();return rq<512&&rP+t.length<=524288?(n||(n=new Map,rL.set(e,n)),n.set(t,i),rP+=t.length,rq++):rI("svg-inspection","store-skipped",rq>=512?"entry-limit":"character-limit",e),i}function rR(e){if(void 0===e)return!1;let t=e.charCodeAt(0),r=32|t;return r>=97&&r<=122||t>=48&&t<=57||95===t||46===t||58===t||45===t}function rD(e){if(void 0===e)return!1;let t=e.charCodeAt(0);return t<128?32===t||t>=9&&t<=13:/\s/.test(e)}function rG(e,t){let r=e.indexOf(">",t);if(r<0)return -1;for(let n=t;n<r;n++){let t=e[n];if('"'!==t&&"'"!==t)continue;let i=e.indexOf(t,n+1);if(i<0||(n=i,i>r&&(r=e.indexOf(">",i+1))<0))return -1}return r+1}function r_(e){return rH("start-tags",e,()=>rU(e))}function rU(e,t,r,n){let i=t||r||n?void 0:[];for(let o=e.indexOf("<");o>=0;o=e.indexOf("<",o+1)){if(e.startsWith("\x3c!--",o)){let t=e.indexOf("--\x3e",o+4);if(t<0)break;o=t+2;continue}let a=e[o+1];if(!a||"/"===a||"!"===a||"?"===a)continue;let s=o+1;for(;rR(e[s]);)s++;if(s===o+1)continue;let l=rG(e,s);if(l<0)break;let d=l-2;for(;d>o&&rD(e[d]);)d--;let u=e.slice(o+1,s);n&&(n.name=u);let c="/"===e[d],f=i?[]:void 0;if(i||t||n){let i=s;for(;i<l-1;){for(;rD(e[i]);)i++;if(">"===e[i]||"/"===e[i]&&">"===e[i+1])break;let o=i;for(;rR(e[i]);)i++;if(i===o)break;let a=e.slice(o,i);for(;rD(e[i]);)i++;if("="!==e[i])break;for(i++;rD(e[i]);)i++;let s=e[i];if('"'!==s&&"'"!==s)break;let d=++i,u=e.indexOf(s,i);if(u<0||u>=l-1)break;if(i=u,f)f.push(Object.freeze({name:a,value:e.slice(d,i),quote:s,nameStart:o,valueStart:d,valueEnd:i}));else if(n&&n.name===n.expectedName)n.attribute(a,e.slice(d,i));else if(t&&rQ.has(a)){let e={start:d,end:i};t.push(e),"style"===a&&r.push(e)}i++}}if(i&&i.push(Object.freeze({name:u,start:o,end:l,attributes:Object.freeze(f),selfClosing:c})),n)return;if(r&&"style"===u&&!c){let n=e.indexOf("</style",l);if(n>=0){let e={start:l,end:n};t?.push(e),r.push(e)}}o=l-1}return i&&Object.freeze(i)}function rZ(e){let t=e.search(/\S/);if(t<0)return;let r=rG(e,t);if(r<0)return;let n=r_(e.slice(0,r))[0];return n?.start===t&&"svg"===n.name?n:void 0}function rJ(e,t){return e.attributes.find(e=>e.name===t)}function rV(t,r){let n=rJ(t,r);return n?e(n.value):void 0}function rX(e,t){if(0===t.length)return e;let r=[...t].sort((e,t)=>t.start-e.start),n=[],i=e.length;for(let t of r){if(t.end>i){let t=e;for(let e of r)t=`${t.slice(0,e.start)}${e.value}${t.slice(e.end)}`;return t}n.push(e.slice(t.end,i),t.value),i=t.start}return n.push(e.slice(0,i)),n.reverse().join("")}function rY(e,t){let r=[];for(let n of r_(e))for(let e of n.attributes){let i=t(e,n);void 0!==i&&i!==e.value&&r.push({start:e.valueStart,end:e.valueEnd,value:i})}return rX(e,r)}var rQ=new Set(["clip-path","color","cursor","fill","filter","flood-color","lighting-color","marker-end","marker-mid","marker-start","mask","stop-color","stroke","style"]);function rK(e){let t=[],r=[];return rU(e,t,r),{source:e,cssRanges:t,styleContexts:r}}function r0(e){let t=[];return rU(e,void 0,t),t}function r1(e,t,r=rK(e)){if(r.source!==e)throw Error("SVG CSS projection does not match its source");return rX(e,r.cssRanges.map(r=>({...r,value:t(e.slice(r.start,r.end))})))}function r2(e,t,r){return`${e.slice(0,t.start)}${r}${e.slice(t.end)}`}function r5(e,t){let r=[...e].map(e=>e.codePointAt(0)),n=[...t].map(e=>e.codePointAt(0)),i=Math.min(r.length,n.length);for(let e=0;e<i;e++){let t=r[e]-n[e];if(0!==t)return t}return r.length-n.length}function r3(e,t,r){let n=r*Math.PI/180,i=Math.cos(n),o=Math.sin(n),a=e.x-t.x,s=e.y-t.y;return{x:t.x+a*i-s*o,y:t.y+a*o+s*i}}function r6(e,t,r){if(r%360==0)return{...e};let n=[r3({x:e.x0,y:e.y0},t,r),r3({x:e.x1,y:e.y0},t,r),r3({x:e.x0,y:e.y1},t,r),r3({x:e.x1,y:e.y1},t,r)];return{x0:Math.min(...n.map(e=>e.x)),y0:Math.min(...n.map(e=>e.y)),x1:Math.max(...n.map(e=>e.x)),y1:Math.max(...n.map(e=>e.y))}}var r4=new eI(256,8388608),r8=new WeakSet;function r9(e){return r8.has(e)}function r7(e,t){r8.has(e)&&r8.add(t)}function ne(e,t){return e.bold===t.bold&&e.italic===t.italic&&e.underline===t.underline&&e.strikethrough===t.strikethrough}function nt(e){let t=[],r;for(let n of e.flatMap(e=>e.fragments??e))r&&ne(r,n)?(r.text+=n.text,r.sourceEnd=n.sourceEnd):(r={...n},t.push(r));return t}function nr(e,t){if(0===e.length)return 0;let r=t.safeFont?td:tl,n=1!==e.length||e[0].fragments?nt(e):e,i=1===n.length?n[0].text:n.map(e=>e.text).join("");if((t.letterSpacing??0)!==0&&!/[^\x20-\x7e]/u.test(i))return ni(n,t).width;let o=t.monospace?eS()?n.reduce((e,r)=>e+tu(r.text,t.fontSize,0,r.bold?Math.max(700,t.fontWeight):t.fontWeight,r.italic?"italic":"normal",t.fontFamily),0):tu(i,t.fontSize):n.reduce((e,n)=>e+r(n.text,t.fontSize,n.bold?Math.max(700,t.fontWeight):t.fontWeight,n.italic?"italic":"normal",t.fontFamily),0);if(!eS()&&/[^\x20-\x7e]/u.test(i))return Math.max(o,n.reduce((e,r)=>e+[...r.text].reduce((e,n)=>e+(0===to(n)?0:/[^\x20-\x7e]/u.test(n)?1.2*t.fontSize:td(n,t.fontSize,r.bold?Math.max(700,t.fontWeight):t.fontWeight)),0),0)+eR(i).filter(e=>/\p{M}/u.test(e)&&[...e].every(e=>0===to(e))).length*t.fontSize*1.2)+Math.max(0,[...i].length-1)*Math.abs(t.letterSpacing??0);if((t.letterSpacing??0)<0)return ni(n,t).width;let a=t.letterSpacing??0;return Math.max(0,o+(0===a?0:Math.max(0,eR(i).length-1)*a))}function nn(e,t,r,n){let i=t.bold?Math.max(700,n.fontWeight):n.fontWeight,o=t.italic?"italic":"normal",a=n.safeFont?td:tl;return n.monospace?tu(e,n.fontSize,0,i,o,n.fontFamily):a(e,n.fontSize,i,o,n.fontFamily)-(r||eS()?0:.15*n.fontSize)}function ni(e,t){let r=0,n=0,i=0;for(let o of e){let e=eR(o.text);for(let[a,s]of e.entries()){let l=nn(s,o,a===e.length-1,t);n=Math.min(n,r),i=Math.max(i,r+l),r+=l+(t.letterSpacing??0)}}return{width:i-n,originX:-n}}function no(e){let{fragments:t,...r}=e.fragments?.at(-1)??e;return{...r,text:"-",clusters:void 0}}function na(e,t){if(eN("text-spans")&&(t={display:t.display,transform:t.transform,fontSize:t.fontSize,fontWeight:t.fontWeight,letterSpacing:t.letterSpacing,maxWidth:t.maxWidth,safeFont:t.safeFont,monospace:t.monospace,fontFamily:t.fontFamily}),!Number.isFinite(t.fontSize)||t.fontSize<=0||!Number.isFinite(t.fontWeight)||!Number.isFinite(t.letterSpacing??0))throw RangeError("Prepared text requires finite typography and a positive font size");let r=eN("text-spans")&&!eS()&&"string"==typeof e&&e.length<=16384?JSON.stringify([e,t]):void 0;if(void 0!==r){let e=r4.get(r);if(e)return e}let n=eK(e,t.display,t.transform),i=t.maxWidth,o=[],a=[];for(let[e,r]of n.lines.entries()){if(e>0&&a.push({kind:"authored",sourceOffset:n.lineStarts[e]-1}),0===r.length){o.push([]);continue}if(!i||!Number.isFinite(i)||i<=0||nr(r,t)<=i){o.push([...r]);continue}let s=function(e){let t=e.flatMap(e=>(e.clusters??eR(e.text).map(t=>({text:t,sourceStart:e.sourceStart,sourceEnd:e.sourceEnd}))).map(t=>({...e,...t,clusters:void 0}))),r=0,n=0;return eR(t.map(e=>e.text).join("")).map(e=>{let i=e.length,o=[];for(;i>0;){let e=t[r],a=Math.min(i,e.text.length-n);o.push({...e,text:e.text.slice(n,n+a)}),i-=a,(n+=a)===e.text.length&&(r++,n=0)}return{...o[0],text:e,sourceEnd:o.at(-1).sourceEnd,...o.length>1?{fragments:o}:{}}})}(r),l=eN("text-spans"),d=l&&!eS()?function(e,t){if(1!==e.length||t.monospace||t.letterSpacing||e[0].bold||e[0].italic||e[0].underline||e[0].strikethrough||/[^\x20-\x7e]/u.test(e[0].text))return;let r=e[0],n=e=>Number.isInteger(e)&&e>=0&&e<=0xffffffff;if(!r.clusters||r.clusters.length!==r.text.length||!n(r.sourceEnd)||r.clusters.some((e,t)=>e.text!==r.text[t]||!n(e.sourceStart)))return;let i=new Float64Array(r.text.length+1),o=new Uint32Array(r.text.length+1),a=t.fontWeight>=600?.6:t.fontWeight>=500?.57:.54;for(let e=0;e<r.text.length;e++){let n=to(r.text[e]);t.safeFont&&("W"===r.text[e]||"M"===r.text[e])&&(n+=.35),i[e+1]=i[e]+n,o[e]=r.clusters[e].sourceStart}return o[r.text.length]=r.sourceEnd,{offsets:o,width:(e,r)=>(i[r]-i[e])*t.fontSize*a+.15*t.fontSize}}(r,t):void 0,u=l?(e,r)=>{let n=d?.width(e,r);return void 0!==n&&Math.abs(n-i)>1e-8*Math.max(1,Math.abs(n),Math.abs(i))?n<i:nr(s.slice(e,r),t)<=i}:void 0,c=0;for(;c<s.length;){let e=c,r=-1;if(u)for(;e<s.length&&u(c,e+1);)/\s/u.test(s[e].text)&&(r=e+1),e++;else for(;e<s.length&&nr(s.slice(c,e+1),t)<=i;)/\s/u.test(s[e].text)&&(r=e+1),e++;if(e===s.length){o.push(nt(s.slice(c)));break}if(e>c&&!/\s/u.test(s[e-1].text)&&/\s/u.test(s[e]?.text??""))for(r=e;r<s.length&&/\s/u.test(s[r].text);)r++;let l=!1,f,h;if(r>c){if(s.slice(c,r).some(e=>!/\s/u.test(e.text)))for(;r<s.length&&/\s/u.test(s[r].text);)r++;for(f=e=r;f>c&&/\s/u.test(s[f-1].text);)f--;f===c?f=e:h=s.slice(f,e).map(e=>e.text).join("")}else{let r;if(r=e=Math.max(c+1,e),/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u.test(s[r-1]?.text??"")&&/\p{L}/u.test(s[r]?.text??"")){for(;e>c+1&&nr([...s.slice(c,e),no(s[e-1])],t)>i;)e--;l=nr([...s.slice(c,e),no(s[e-1])],t)<=i}}let p=nt(s.slice(c,f??e)),m=d?.offsets[e]??s[e]?.sourceStart??n.source.length;l&&p.push({...no(s[e-1]),sourceStart:m,sourceEnd:m}),o.push(p),e<s.length&&a.push({kind:l?"hyphen":"wrap",sourceOffset:m,...h?{replacedText:h}:{}}),c=e}0===s.length&&o.push([])}let s=n.lines.map(e=>e.map(e=>e.text).join("")).join(`
|
|
14
|
-
`),l=/\p{M}/u.test(s.normalize("NFD").replace(/[\uFE0E\uFE0F]/g,""))?eR(s.normalize("NFD")).reduce((e,t)=>Math.max(e,(t.replace(/[\uFE0E\uFE0F]/g,"").match(/\p{M}/gu)??[]).length),0):0,d=t.fontSize*Math.max(tf,2.4*!!/[\p{Script=Arabic}\p{Script=Hebrew}]/u.test(s),l?tf+.6*l:0),u=o.map((e,r)=>{var i;let o,a,s,l,u,c=e.map(e=>{let t;return"literal"===n.display?e.text:(t=e.text,e.strikethrough&&(t=`<s>${t}</s>`),e.underline&&(t=`<u>${t}</u>`),e.italic&&(t=`<i>${t}</i>`),e.bold&&(t=`<b>${t}</b>`),t)}).join("");e.forEach(Object.freeze);let f=!/[^\x20-\x7e]/u.test(c),h=e.some(e=>e.bold||e.italic||e.underline||e.strikethrough),p=f?(t.letterSpacing??0)!==0?(i=t,o=e.flatMap((e,t)=>eR(e.text).map(e=>({runIndex:t,text:e}))),a=0,s=0,l=0,u=o.map((t,r)=>{let n=e[t.runIndex],d=o[r+1],u=!d||!ne(n,e[d.runIndex]),c=nn(t.text,n,u,i),f=Object.freeze({...t,x:a,width:c});return s=Math.min(s,a),l=Math.max(l,a+c),a+=c+(i.letterSpacing??0),f}),{width:l-s,originX:-s,fragments:Object.freeze(u)}):h?function(e,t){let r=[];for(let[t,n]of e.entries()){let i=r.at(-1);i&&ne(e[i.runIndex],n)?i.text+=n.text:r.push({runIndex:t,text:n.text})}let n=0,i=r.map(({runIndex:r,text:i})=>{let o=nr([{...e[r],text:i}],t),a=Object.freeze({runIndex:r,text:i,x:n,width:o});return n+=o,a});return{width:n,originX:0,fragments:Object.freeze(i)}}(e,t):void 0:void 0;return Object.freeze({runs:Object.freeze(e),text:c,width:p?.width??nr(e,t),baseline:r*d+.35*t.fontSize,originX:p?.originX??0,...p?{fragments:p.fragments}:{}})}),c=u.map(e=>e.text);Object.freeze(c),a.forEach(Object.freeze);let f=u.reduce((e,t)=>Math.max(e,t.width),0),h=Object.freeze({unit:"px",prepared:n,text:c.join(`
|
|
15
|
-
`),lines:c,lineBlocks:Object.freeze(u),breaks:Object.freeze(a),width:f,height:c.length*d,lineHeight:d,fontSize:t.fontSize,fontWeight:t.fontWeight,letterSpacing:t.letterSpacing??0,monospace:t.monospace??!1,safeFont:t.safeFont??!1,...t.fontFamily?{fontFamily:t.fontFamily}:{}});return r8.add(h),void 0!==r&&r4.set(r,h,2*r.length+128*h.prepared.source.length+256*h.lines.length+512),h}function ns(e,t){let r=e?.lineBlocks[t];if(!e||!r)return;if(!r9(e))throw TypeError("Pixel line projection requires retained preparation");let n=[r.text];Object.freeze(n);let i=Object.freeze({...e,text:r.text,lines:n,lineBlocks:Object.freeze([Object.freeze({...r,baseline:.35*e.fontSize})]),breaks:Object.freeze([]),width:r.width,height:e.lineHeight});return r8.add(i),i}function nl(e,t){let r=t.top??0,n=0,i=0,o=e.map(e=>{let o=Math.max(t.minRowHeight??0,e.block.height),a={item:e,top:r,height:o,textY:r+("start"===t.align?e.block.height:o)/2};return n=Math.max(n,e.block.width,e.reservedWidth??0),i+=o,r+=o+t.gap,a}),a=Math.max(0,e.length-!t.trailingGap),s=r-(e.length&&!t.trailingGap?t.gap:0);return{width:n,height:i+a*t.gap,bottom:s,rows:o}}function nd(e,t){let r=nl(e,t),n={width:t.leadingWidth+r.width,height:r.height,columns:1,rows:r.rows};if(void 0===t.maxWidth||e.length<4)return n;let i=[0,0];for(let[r,o]of e.entries()){if(1!==o.block.lines.length)return n;let e=r%2;i[e]=Math.max(i[e],t.leadingWidth+o.block.width,t.leadingWidth+(o.reservedWidth??0))}let o=i[0]+t.columnGap+i[1];if(o>t.maxWidth+.01)return n;let a=[],s=t.top??0,l=0;for(let r=0;r<e.length;r+=2){let n=e.slice(r,r+2),o=Math.max(t.minRowHeight??0,...n.map(e=>e.block.height));for(let[e,r]of n.entries())a.push({item:r,x:e?i[0]+t.columnGap:0,top:s,height:o,textY:s+o/2});l+=o,s+=o+t.gap}return(l+=(Math.ceil(e.length/2)-1)*t.gap)<r.height?{width:o,height:l,columns:2,rows:a}:n}function nu(e){if(0!==e.length)return{x0:Math.min(...e.map(e=>e.x)),y0:Math.min(...e.map(e=>e.y)),x1:Math.max(...e.map(e=>e.x)),y1:Math.max(...e.map(e=>e.y))}}function nc(e,t){return e?t?{x0:Math.min(e.x0,t.x0),y0:Math.min(e.y0,t.y0),x1:Math.max(e.x1,t.x1),y1:Math.max(e.y1,t.y1)}:e:t}function nf(e,t){let r=Number.isFinite(t)?Math.max(0,t):0;return{x0:e.x0-r,y0:e.y0-r,x1:e.x1+r,y1:e.y1+r}}function nh(e,t,r){let n=/[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/y,i=0,o=0,a=0,s=0,l=0,d="",u="",c,f,h,p=!1,m=e=>{if(r){for(let t=0;t<e;t++)if(!r())return p=!0,!1}return!0},g=()=>{for(;i<e.length&&/[\s,]/.test(e[i]);){if(!m(1))return;i++}},y=(t=!1)=>{if(g(),p)return;if(t){let t=e[i];return("0"===t||"1"===t)&&m(1)?(i++,Number(t)):void 0}n.lastIndex=i;let r=n.exec(e);if(!r||!m(r[0].length))return;i=n.lastIndex;let o=Number(r[0]);return Number.isFinite(o)?o:void 0},b=(e,r)=>!!Number.isFinite(e)&&!!Number.isFinite(r)&&(f=nc(f,{x0:e,y0:r,x1:e,y1:r}),t&&(h=nc(h,{x0:e,y0:r,x1:e,y1:r})),!0);for(;;){if(g(),p)return;if(i>=e.length)return f;if(/[a-zA-Z]/.test(e[i])){if(!m(1)||(d=e[i++],!/[MmLlHhVvCcSsQqTtAaZz]/.test(d)||!f&&"M"!==d.toUpperCase()))return;if("Z"===d.toUpperCase()){if(t&&!t({bounds:{x0:Math.min(o,s),y0:Math.min(a,l),x1:Math.max(o,s),y1:Math.max(a,l)},line:[{x:o,y:a},{x:s,y:l}]}))return;o=s,a=l,u="Z",c=void 0,d="";continue}}if(!d)return;let r=d.toUpperCase(),n=d!==r;t&&(h={x0:o,y0:a,x1:o,y1:a});let x="A"===r?7:"C"===r?6:"S"===r||"Q"===r?4:"H"===r||"V"===r?1:2,k=[];for(let e=0;e<x;e++){let t=y("A"===r&&(3===e||4===e));if(void 0===t)return;k.push(t)}let v=e=>k[e]+(n?o:0),w=e=>k[e]+(n?a:0),$,M,j;if("H"===r)$=v(0),M=a;else if("V"===r)$=o,M=w(0);else if("C"===r||"S"===r||"Q"===r||"T"===r){let e=c&&("S"===r?"C"===u||"S"===u:"Q"===u||"T"===u)?{x:2*o-c.x,y:2*a-c.y}:{x:o,y:a};if(("S"===r||"T"===r)&&!b(e.x,e.y))return;for(let e=0;e<x-2;e+=2)if(!b(v(e),w(e+1)))return;$=v(x-2),M=w(x-1),j="T"===r?e:{x:v(x-4),y:w(x-3)}}else if("A"===r){$=v(5),M=w(6);let e=Math.abs(k[0]),t=Math.abs(k[1]);if(e>0&&t>0&&($!==o||M!==a)){let r=k[2]%360*Math.PI/180,n=Math.cos(r),i=Math.sin(r),s=(o-$)/2,l=(a-M)/2,d=n*s+i*l,u=-i*s+n*l,c=Math.hypot(d/e,u/t);c>1&&(e*=c,t*=c);let f=(d/e)**2+(u/t)**2,h=(k[3]===k[4]?-1:1)*Math.sqrt(Math.max(0,(1-f)/f)),p=h*e*u/t,m=-h*t*d/e,g=n*p-i*m+(o+$)/2,y=i*p+n*m+(a+M)/2,x=Math.hypot(e*n,t*i),v=Math.hypot(e*i,t*n);if(!b(g-x,y-v)||!b(g+x,y+v))return}}else $=v(0),M=w(1),"M"===r&&(s=$,l=M,d=n?"l":"L");if(!b($,M)||t&&"M"!==r&&!t({bounds:h,...["L","H","V"].includes(r)?{line:[{x:o,y:a},{x:$,y:M}]}:{}}))return;o=$,a=M,c=j,u=r}}function np(e,t,r){return void 0!==nh(e,t,r)}function nm(e){switch(e.kind){case"rect":return{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.height};case"circle":return{x0:e.cx-e.r,y0:e.cy-e.r,x1:e.cx+e.r,y1:e.cy+e.r};case"ellipse":return{x0:e.cx-e.rx,y0:e.cy-e.ry,x1:e.cx+e.rx,y1:e.cy+e.ry};case"line":return{x0:Math.min(e.x1,e.x2),y0:Math.min(e.y1,e.y2),x1:Math.max(e.x1,e.x2),y1:Math.max(e.y1,e.y2)};case"polygon":case"polyline":return nu(e.points);case"compound":{let t;for(let r of e.children){let e=nm(r);if(!e)return;t=nc(t,e)}return t}case"path":return nh(e.d)}}function ng(e,t,r,n=!1,i){if(!e||!t)return;let o=e.geometry?nm(e.geometry):void 0;if(n&&e.geometry&&!o)return;let a=e.bounds??o??(e.viewBox?{x0:e.viewBox.x,y0:e.viewBox.y,x1:e.viewBox.x+e.viewBox.width,y1:e.viewBox.y+e.viewBox.height}:void 0)??(e.size?{x0:0,y0:0,x1:e.size.width,y1:e.size.height}:void 0);if(!a)return;if(n){a=nc(a,o);let t=nS(e.paint??{},!0);if(void 0===t)return;a=nf(a,t)}let s=e.ref?.x??0,l=e.ref?.y??0,d=a;if(e.viewBox&&e.size){let t=Math.min(e.size.width/e.viewBox.width,e.size.height/e.viewBox.height),r=(e.size.width-e.viewBox.width*t)/2,n=(e.size.height-e.viewBox.height*t)/2,i=n=>r+(n-e.viewBox.x)*t,o=r=>n+(r-e.viewBox.y)*t;d={x0:i(a.x0),y0:o(a.y0),x1:i(a.x1),y1:o(a.y1)},s=i(s),l=o(l)}let u=(e.units??"strokeWidth")==="strokeWidth"?r:1,c=Math.max(+!!n,e.scale??1)*u;if(void 0!==i){let e=i*Math.PI/180,r=Math.cos(e),n=Math.sin(e),o=[[d.x0,d.y0],[d.x0,d.y1],[d.x1,d.y0],[d.x1,d.y1]].map(([e,i])=>({x:t.x+((e-s)*r-(i-l)*n)*c,y:t.y+((e-s)*n+(i-l)*r)*c}));return o.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))?nu(o):void 0}let f=Math.max(Math.abs(d.x0-s),Math.abs(d.x1-s)),h=Math.max(Math.abs(d.y0-l),Math.abs(d.y1-l)),p=(n?Math.hypot(f,h):Math.max(f,h))*c;return{x0:t.x-p,y0:t.y-p,x1:t.x+p,y1:t.y+p}}function ny(e,t){let r="number"==typeof e.orient?e.orient:180*("start"===t&&"auto-start-reverse"===e.orient),n=ng(e,{x:0,y:0},1,!0,r);if(!n)throw TypeError(`Unmeasured terminal marker ${e.id}`);return Math.max(0,"start"===t?n.x1:-n.x0)}function nb(e,t){let r=e.route.geometry,n=t6(r,e.route.closed),i=t8(r,e.route.closed),o=nM(t,e.transform),a=[],s=(t,n,i,s)=>{if(!n||!i)return;let l="number"==typeof n.orient?n.orient:s?180*Math.atan2(s.y,s.x)/Math.PI+180*("start"===t&&"auto-start-reverse"===n.orient):void 0,d=nx(e.stroke.width),u=ng(n,i,d,!0,l),c=rS(o),f=JSON.stringify([{...n,orient:n.orient??"auto"},l??["unknown",r],"userSpaceOnUse"===n.units?1:d,c.slice(0,4)]),h,p;if(void 0!==l&&n.geometry?.kind==="polygon"&&n.geometry.points.length<=64){let e=(n.viewBox&&n.size?Math.min(n.size.width/n.viewBox.width,n.size.height/n.viewBox.height):1)*Math.max(1,n.scale??1)*("userSpaceOnUse"===n.units?1:d),t=l*Math.PI/180,r=Math.cos(t),o=Math.sin(t);h=n.geometry.points.map(t=>{let a=(t.x-(n.ref?.x??0))*e,s=(t.y-(n.ref?.y??0))*e;return rE({x:i.x+a*r-s*o,y:i.y+a*o+s*r},c)});let[a,s,u,f]=c,m=(Math.hypot(a+f,s-u)+Math.hypot(a-f,s+u))/2,g=nS(n.paint??{},!0);void 0!==(p=void 0===g?void 0:g*e*m)&&Number.isFinite(p)&&h.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))||(h=void 0)}a.push({position:t,resource:n.id,anchor:rE(i,c),repaint:f,...h?{hull:h,padding:p}:{},...u?{bounds:n$(u,o)}:{}})};if(n.starts.forEach((t,r)=>s("start",e.markers.start,t,e.route.contours[r]?.startTangent)),n.ends.forEach((t,r)=>s("end",e.markers.end,t,e.route.contours[r]?.endTangent)),1===e.markers.mid.length)for(let t of i)s("mid",e.markers.mid[0],t);else e.markers.mid.forEach((e,t)=>s("mid",e,i[t]));return a}function nx(e){let t="number"==typeof e?e:parseFloat(e);return Number.isFinite(t)?Math.max(0,t):1}var nk=new WeakMap;function nv(e){let t=eV(e.text,e.textContent),r="string"==typeof t?t:t.source;if(e.block){let t=e.block;if(t.prepared.source!==r||void 0!==e.fontSize&&e.fontSize!==t.fontSize||void 0!==e.fontWeight&&e.fontWeight!==t.fontWeight||void 0!==e.letterSpacing&&e.letterSpacing!==t.letterSpacing||void 0!==e.display&&e.display!==t.prepared.display)throw TypeError("Connector inline label typography and source must agree with its prepared block");return t}let n=e.fontSize??12,i=e.fontWeight??400,o=e.letterSpacing??0,a=e.display??"literal",s=nk.get(e);if(s&&("string"==typeof t?s.prepared.source===r:s.prepared===t)&&s.fontSize===n&&s.fontWeight===i&&s.letterSpacing===o&&s.prepared.display===a)return s;let l=na(t,{display:a,fontSize:n,fontWeight:i,letterSpacing:o});return nk.set(e,l),l}function nw(e){if(e.visual?.kind!=="inline"||!e.anchor||void 0===e.fontSize||void 0===e.textAnchor)return;let t=nv(e),r=t.width,n="middle"===e.textAnchor?e.anchor.x-r/2:"end"===e.textAnchor?e.anchor.x-r:e.anchor.x,i=e.anchor.y-Math.max(0,e.clearance??0),o=Math.max(0,e.halo?.width??0)/2;return nf({x0:n,y0:i-.35*t.fontSize-t.height/2,x1:n+r,y1:i-.35*t.fontSize+t.height/2},o)}function n$(e,t){if(![e.x0,e.y0,e.x1,e.y1].every(Number.isFinite))return;if(!t)return e;if("rotate"===t.kind)return r6(e,{x:t.cx,y:t.cy},t.angle);let r=rS(t),n=e.x0,i=e.y0,o=e.x0,a=e.y1,s=e.x1,l=e.y0,d=e.x1,u=e.y1;if(1===r[0]&&0===r[1]&&0===r[2]&&1===r[3]&&n===o&&i===l&&s===d&&a===u&&0!==n&&0!==i&&0!==s&&0!==a&&Number.isFinite(n)&&Number.isFinite(i)&&Number.isFinite(s)&&Number.isFinite(a)){let e=rE({x:n,y:i},r),t=rE({x:d,y:u},r);return Number.isFinite(e.x)&&Number.isFinite(e.y)&&Number.isFinite(t.x)&&Number.isFinite(t.y)?{x0:Math.min(e.x,t.x),y0:Math.min(e.y,t.y),x1:Math.max(e.x,t.x),y1:Math.max(e.y,t.y)}:void 0}let c=[[n,i],[o,a],[s,l],[d,u]].map(([e,t])=>rE({x:e,y:t},r));return c.every(e=>Number.isFinite(e.x)&&Number.isFinite(e.y))?nu(c):void 0}function nM(e,t){if(!e)return t;if(!t)return e;let[r,n,i,o,a,s]=rz(rS(e),rS(t));return{kind:"matrix",a:r,b:n,c:i,d:o,e:a,f:s}}function nj(e){return"line"!==e.geometry.kind&&!("polyline"===e.geometry.kind&&2===e.geometry.points.length&&!e.closed)}function nS(e,t){if(void 0===e.stroke||"none"===e.stroke||"transparent"===e.stroke||rb(e.stroke)?.[3]===0)return 0;let r=e.strokeWidth??"1";if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?(?:px)?\s*$/.test(r))return;let n=Number.parseFloat(r)/2;if(!Number.isFinite(n))return;let i=e.strokeLinejoin??"miter",o=Number(e.strokeMiterlimit??4);if(!Number.isFinite(o)||o<1)return;let a=Math.max(t&&("miter"===i||"miter-clip"===i)?n*o:n,"square"===e.strokeLinecap?n*Math.SQRT2:n);return Number.isFinite(a)?a:void 0}function nz(e,t,r,n){if(!r)return n$(nf(e,t),n);let i=n$(e,n);return i?nf(i,t):void 0}function nE(e,t,r,n,i,o){return"line"!==e.kind||i?nz(t,r,i,o):n$(function(e,t,r){let n=nm(e),i=Math.hypot(e.x2-e.x1,e.y2-e.y1);if(void 0!==r&&"butt"!==r||0===i)return nf(n,t);let o=t*Math.abs(e.y2-e.y1)/i,a=t*Math.abs(e.x2-e.x1)/i;return{x0:n.x0-o,y0:n.y0-a,x1:n.x1+o,y1:n.y1+a}}(e,r,n),o)}function nO(e,t,r,n){let i=0;for(let o=0;o<32;o++){let a,s=o/32,l=(o+1)/32,d=e=>Math.min(l,Math.max(s,e)),u=r=>e*(1-r)**2+t*(1+r+r*r),c=6*r*Math.min(s*(1-s),l*(1-l)),f=6*n*r*l/Math.hypot((a=d(e/(e+t)),3*(e*(1-a)**2+t*a*a)),c)-u(d((2*e-t)/(2*(e+t))));f>0&&(i=Math.max(i,(1-s)*f))}return Math.min(n,i)}function nT(e,t){return function e(t,r){let n,i=nM(r,t.transform);if(!i||rO(rS(i))){if("shape"===t.kind){if(!(n=nm(t.geometry)))return;let e=["polygon","polyline","path","compound"].includes(t.geometry.kind),r;for(let o of[t.paint,...t.childPaints??[]]){let a=nS(o,e),s=void 0===a?void 0:nE(t.geometry,n,a,o.strokeLinecap,"non-scaling-stroke"===o.vectorEffect,i);if(!s)return;r=r?nc(r,s):s}if(!t.conditionalPaint)return r;let o=nS(t.conditionalPaint,["polygon","polyline","path","compound"].includes(t.geometry.kind));if(!r||void 0===o)return;let a=nE(t.geometry,n,o,t.conditionalPaint.strokeLinecap,"non-scaling-stroke"===t.conditionalPaint.vectorEffect,i);return a?nc(r,a):void 0}if("connector"===t.kind)return function(e,t){let r=e.route.geometry,n=nm(r),i=nS({stroke:e.stroke.color,strokeWidth:String(e.stroke.width),strokeLinecap:e.stroke.lineCap,strokeLinejoin:e.stroke.lineJoin,strokeMiterlimit:String(e.stroke.miterLimit)},nj(e.route));if(!n||void 0===i)return;let o="path"!==r.kind||"butt"!==e.stroke.lineCap||e.stroke.nonScaling?void 0:function(e,t){if(!/^[\s,0-9eE.+\-MC]+$/.test(e))return;let r=e.match(/[MC]|[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/g);if(!r||10!==r.length||"M"!==r[0]||"C"!==r[3])return;let n=r.filter(e=>"M"!==e&&"C"!==e).map(Number);if(!n.every(Number.isFinite))return;let[i,o,a,s,l,d,u,c]=n;if(a!==l||s!==o||d!==c||!((a-i)*(u-a)>0))return;let f=Math.abs(a-i),h=Math.abs(u-a),p=Math.abs(c-o),m=Math.sign(u-i),g=[i-m*nO(h,f,p,t),u+m*nO(f,h,p,t)];return{x0:Math.min(...g),y0:Math.min(o,c)-t,x1:Math.max(...g),y1:Math.max(o,c)+t}}(r.d,nx(e.stroke.width)/2),a=o?n$(o,t):nz(n,i,e.stroke.nonScaling,t);if(!a)return;let s=nx(e.stroke.width),l=t6(r,e.route.closed),d=t8(r,e.route.closed);for(let{marker:r,anchor:n}of[...l.starts.flatMap(t=>e.markers.start?[{marker:e.markers.start,anchor:t}]:[]),...l.ends.flatMap(t=>e.markers.end?[{marker:e.markers.end,anchor:t}]:[]),...1===e.markers.mid.length?d.map(t=>({marker:e.markers.mid[0],anchor:t})):e.markers.mid.map((e,t)=>({marker:e,anchor:d[t]}))]){let e=ng(r,n,s,!0),i=e&&n$(e,t);if(!i)return;a=nc(a,i)}for(let r of e.labels){let e=nc(r.bounds,nw(r));if(r.visual?.kind==="inline"&&!e)return;if(e){let r=n$(e,t);if(!r)return;a=nc(a,r)}}return a}(t,i);if("text"===t.kind){n=function(e){let t;if("shape"===e.kind)t=nm(e.geometry);else if("connector"===e.kind)t=function(e){let t=e.route.geometry,r="path"===t.kind?nu(t.points):nm(t);if(!r)return;let n=nx(e.stroke.width),i=n/2;r=nf(r,"miter"===e.stroke.lineJoin||"miter-clip"===e.stroke.lineJoin?i*Math.max(1,e.stroke.miterLimit):i);let o=t6(t,e.route.closed);for(let t of o.starts)r=nc(r,ng(e.markers.start,t,n));for(let t of o.ends)r=nc(r,ng(e.markers.end,t,n));let a=t8(t,e.route.closed);if(1===e.markers.mid.length)for(let t of a)r=nc(r,ng(e.markers.mid[0],t,n));else for(let t=0;t<e.markers.mid.length;t++)r=nc(r,ng(e.markers.mid[t],a[t],n));for(let t of e.labels)t.bounds&&(r=nc(r,t.bounds)),r=nc(r,nw(t));return r}(e);else{if("text"!==e.kind)return;let r=e.textLayout??na(e.text,{display:e.display,fontSize:e.fontSize,fontWeight:e.fontWeight??500,letterSpacing:e.letterSpacing}),n=r.width,i="middle"===e.anchor?e.x-n/2:"end"===e.anchor?e.x-n:e.x,o="offsetY"in r?r.offsetY:-(.35*e.fontSize);t={x0:i,y0:e.y+o-r.height/2,x1:i+n,y1:e.y+o+r.height/2}}return t?n$(t,e.transform):void 0}({...t,transform:void 0});let e=nS(t.paint,!1);return n&&void 0!==e?nz(n,e,"non-scaling-stroke"===t.paint.vectorEffect,i):void 0}if("group"!==t.kind)return;for(let r of t.children){if("document"===r.node.kind&&r.node.nonPaint)continue;let t=e(r.node,i);if(!t)return;n=nc(n,t)}return n}}(e,t)}var nC=class{value="";raw(e){this.value+=e}attribute(e,t){this.value+=` ${e}="${"number"==typeof t?tI(t):t$(tA(e,t))}"`}},nF=new Set(["id","role","from","to","relationship","direction","prepared-text","font-metrics","text-fragment","connector-label-for"]),nW=/^[A-Za-z0-9_-]+(?: [A-Za-z0-9_-]+)*$/,nN=/^[a-z][a-z0-9-]*$/;function nI(e,t){if(t){if(t.className&&e.attribute("class",t.className),t.data)for(let r of Object.keys(t.data))e.attribute(`data-${r}`,t.data[r]);t.ariaHidden&&e.attribute("aria-hidden","true"),0===t.tabIndex&&e.attribute("tabindex",0),void 0!==t.ariaLabel&&e.attribute("aria-label",t.ariaLabel)}}function nA(e,t){void 0!==t.fill&&e.attribute("fill",t.fill),void 0!==t.fillOpacity&&e.attribute("fill-opacity",t.fillOpacity),void 0!==t.stroke&&e.attribute("stroke",t.stroke),void 0!==t.strokeOpacity&&e.attribute("stroke-opacity",t.strokeOpacity),void 0!==t.strokeWidth&&e.attribute("stroke-width",t.strokeWidth),void 0!==t.strokeDasharray&&e.attribute("stroke-dasharray",t.strokeDasharray),void 0!==t.strokeDashoffset&&e.attribute("stroke-dashoffset",t.strokeDashoffset),void 0!==t.strokeLinecap&&e.attribute("stroke-linecap",t.strokeLinecap),void 0!==t.strokeLinejoin&&e.attribute("stroke-linejoin",t.strokeLinejoin),void 0!==t.strokeMiterlimit&&e.attribute("stroke-miterlimit",t.strokeMiterlimit),void 0!==t.vectorEffect&&e.attribute("vector-effect",t.vectorEffect),void 0!==t.paintOrder&&e.attribute("paint-order",t.paintOrder),void 0!==t.opacity&&e.attribute("opacity",t.opacity)}function nL(e,t){t&&e.attribute("transform",rC(t))}function nP(e,t,r){t&&tH(t.role)&&(e.attribute("data-id",t.id),e.attribute("data-role",t.role),void 0!==t.from&&e.attribute("data-from",t.from),void 0!==t.to&&e.attribute("data-to",t.to)),r&&(e.attribute("role",r.role),e.attribute("aria-roledescription",r.roleDescription),e.attribute("aria-label",r.label))}function nq(e,t){switch(t.kind){case"rect":e.attribute("x",t.x),e.attribute("y",t.y),e.attribute("width",t.width),e.attribute("height",t.height),void 0!==t.rx&&e.attribute("rx",t.rx),void 0!==t.ry&&e.attribute("ry",t.ry);return;case"circle":e.attribute("cx",t.cx),e.attribute("cy",t.cy),e.attribute("r",t.r);return;case"ellipse":e.attribute("cx",t.cx),e.attribute("cy",t.cy),e.attribute("rx",t.rx),e.attribute("ry",t.ry);return;case"line":e.attribute("x1",t.x1),e.attribute("y1",t.y1),e.attribute("x2",t.x2),e.attribute("y2",t.y2);return;case"polygon":case"polyline":{let r="";for(let e=0;e<t.points.length;e++){let n=t.points[e];r+=`${e?" ":""}${n.x},${n.y}`}e.attribute("points",r);return}case"path":e.attribute("d",t.d)}}function nB(e,t,r,n,i){let o=Math.max(0,Math.min(i,r/2,n));return 0===o?`M${e},${t} H${e+r} V${t+n} H${e} Z`:`M${e+o},${t} H${e+r-o} A${o},${o} 0 0 1 ${e+r},${t+o} V${t+n} H${e} V${t+o} A${o},${o} 0 0 1 ${e+o},${t} Z`}var nH=new WeakMap,nR=new WeakSet,nD=new WeakMap,nG=/<\s*text/i;function n_(e){if(!e.includes("<svg"))return e;let t="",r=0;for(;r<e.length;){let n=e.indexOf("<",r);if(n<0)return t+e.slice(r);if(t+=e.slice(r,n),e.startsWith("\x3c!--",n)){let i=e.indexOf("--\x3e",n+4);if(i<0)return t+e.slice(n);t+=e.slice(n,i+3),r=i+3;continue}let i,o=n+1;for(;o<e.length;o++){let t=e[o];if(i)t===i&&(i=void 0);else if('"'===t||"'"===t)i=t;else if(">"===t)break}if(o>=e.length)return t+e.slice(n);t+=function(e){let t=e.match(/^<([A-Za-z_][A-Za-z0-9_.:-]*)/);if(!t||e.startsWith("</")||e.startsWith("<!")||e.startsWith("<?"))return e;let r=t[1];if("svg"!==r)return e;let n=/\/\s*>$/.test(e),i=n?e.lastIndexOf("/"):e.length-1,o=[],a=t[0].length;for(;a<i;){for(;/\s/.test(e[a]??"");)a++;if(a>=i)break;let t=e.slice(a).match(/^([^\s=<>/]+)/);if(!t)return e;let r=t[1];for(a+=t[0].length;/\s/.test(e[a]??"");)a++;if("="!==e[a])return e;for(a++;/\s/.test(e[a]??"");)a++;let n=e[a];if('"'!==n&&"'"!==n)return e;let s=++a;for(;a<i&&e[a]!==n;)a++;if(e[a]!==n)return e;let l=e.slice(s,a);a++,o.push({name:r,value:'"'===n?l:l.replaceAll('"',"""),index:o.length})}let s=new Map([["xmlns",0],["width",1],["height",2],["viewBox",3],["style",4]]);o.sort((e,t)=>(s.get(e.name)??100)-(s.get(t.name)??100)||r5(e.name,t.name)||e.index-t.index);let l=o.map(e=>`${e.name}="${e.value}"`).join(" ");return`<${r}${l?` ${l}`:""}${n?" /":""}>`}(e.slice(n,o+1)),r=o+1}return t}function nU(e,t){if("document"!==e.kind)throw TypeError(`Scene ${e.kind} "${e.id}" is written from its fields, not stored markup`);return nH.set(e,n_(t)),e}function nZ(e){return nR.add(e),e}function nJ(e){let t=nH.get(e);if(void 0!==t)return t;if(!nR.has(e))throw TypeError(`Scene node "${e.id}" has no admitted SVG serialization`);let r=nD.get(e);if(void 0!==r)return r;let n=function(e){switch(e.kind){case"shape":return function(e){let t=new nC,r="compound"===e.geometry.kind,n="compound"===e.geometry.kind?e.geometry.children:[e.geometry];for(let i=0;i<n.length;i++){let o=n[i];if("compound"===o.kind)throw TypeError(`Shape "${e.id}" nests compound geometry`);i&&t.raw(`
|
|
16
|
-
`),t.raw(`<${o.kind}`),0===i&&nI(t,e.attributes),nq(t,o),nA(t,r?e.childPaints?.[i]??e.paint:e.paint),nL(t,e.transform),0===i&&nP(t,e.identity,e.accessibility),t.raw(" />")}return t.value}(e);case"text":return function(e){let t=new nC;nI(t,e.attributes),t.attribute("text-anchor",e.anchor),e.dominantBaseline&&t.attribute("dominant-baseline",e.dominantBaseline),e.block?.fontFamily&&t.attribute("font-family",e.block.fontFamily),t.attribute("font-size",e.fontSize),t.attribute("font-weight",e.fontWeight??e.block?.fontWeight??400),(e.letterSpacing??0)!==0&&t.attribute("letter-spacing",e.letterSpacing),e.fontStyle&&t.attribute("font-style",e.fontStyle),e.textDecoration&&t.attribute("text-decoration",e.textDecoration),nA(t,e.paint),nL(t,e.transform),nP(t,e.identity,e.accessibility);let r=t.value.slice(1),n="prepared"===e.measurement&&e.block,i=tE(n?e.block:e.text,e.x,e.y,e.fontSize,r,e.baselineShift??.35,"literal"===e.display);if(!e.spans)return i;let o=n?e.block.text:e.text,a=`>${tw(o)}</text>`;if(!i.endsWith(a))throw TypeError(`Text "${e.id}" spans require a one-line label`);let s="";for(let t of e.spans)s+=`<tspan fill="${t$(t.fill)}">${tw(t.text)}</tspan>`;return`${i.slice(0,-a.length)}>${s}</text>`}(e);case"connector":return function(e){let t=new nC,{stroke:r,markers:n}=e,i=r.dash,o=n.mid[0];if("invisible"!==e.lineStyle){let a=e.route.geometry;t.raw(`<${a.kind}`),nI(t,e.attributes),nq(t,a),"line"!==a.kind&&t.attribute("fill","none"),t.attribute("stroke",r.color),void 0!==r.opacity&&t.attribute("stroke-opacity",r.opacity),t.attribute("stroke-width",r.width),i&&t.attribute("stroke-dasharray","string"==typeof i.array?i.array:i.array.join(" ")),i?.offset!==void 0&&t.attribute("stroke-dashoffset",i.offset),"butt"!==r.lineCap&&t.attribute("stroke-linecap",r.lineCap),"miter"!==r.lineJoin&&t.attribute("stroke-linejoin",r.lineJoin),4!==r.miterLimit&&t.attribute("stroke-miterlimit",r.miterLimit),void 0!==r.pathLength&&t.attribute("pathLength",r.pathLength),void 0!==r.paintOrder&&t.attribute("paint-order",r.paintOrder),r.nonScaling&&t.attribute("vector-effect","non-scaling-stroke"),r.mixBlendMode&&t.attribute("style",`mix-blend-mode:${r.mixBlendMode}`),n.start&&t.attribute("marker-start",`url(#${n.start.id})`),o&&t.attribute("marker-mid",`url(#${o.id})`),n.end&&t.attribute("marker-end",`url(#${n.end.id})`),"none"===e.hit.pointerEvents&&t.attribute("pointer-events","none"),nL(t,e.transform),t.attribute("data-relationship",e.relationship.kind),t.attribute("data-direction",e.relationship.direction),nP(t,e.identity,e.accessibility),t.raw(" />")}for(let r=0;r<e.labels.length;r++){let n=function(e,t,r){if(t.visual?.kind!=="inline")return;if(!t.anchor||!t.paint||void 0===t.fontSize||void 0===t.textAnchor)throw TypeError(`Connector "${e.id}" inline label ${r+1} requires anchor, paint, fontSize, and textAnchor`);let n=nv(t),i={...t.paint,...t.halo?{stroke:t.halo.color??"var(--bg)",strokeWidth:String(t.halo.width),paintOrder:"stroke fill"}:{}},o=new nC;return o.attribute("data-id",t.id??`${e.id}-label-${r+1}`),o.attribute("data-role","label"),o.attribute("data-connector-label-for",e.id),o.attribute("font-size",n.fontSize),o.attribute("font-weight",n.fontWeight),n.letterSpacing&&o.attribute("letter-spacing",n.letterSpacing),o.attribute("text-anchor",t.textAnchor),nL(o,e.transform),nA(o,i),tE(n,t.anchor.x,t.anchor.y-Math.max(0,t.clearance??0),n.fontSize,o.value.slice(1),0)}(e,e.labels[r],r);void 0!==n&&(t.value&&t.raw(`
|
|
17
|
-
`),t.raw(n))}return t.value}(e);case"group":return[e.open,...e.children.map(e=>nV(nJ(e.node),e.indent)),e.close].join(e.join);case"document":throw TypeError(`Scene node "${e.id}" has no admitted SVG serialization`)}}(e);return"group"!==e.kind&&Object.isFrozen(e)&&nD.set(e,n),n}function nV(e,t){if(t<=0||""===e)return e;let r=" ".repeat(t);return r+e.replace(/\n/g,`
|
|
18
|
-
${r}`)}function nX(e,t){let r=nH.get(e);void 0!==r&&nH.set(t,r),nR.has(e)&&nR.add(t)}function nY(e){let t=e=>{if("document"===e.kind){let t=nH.get(e);return void 0!==t&&!nG.test(t)}if(!nR.has(e))return!1;switch(e.kind){case"text":return"prepared"===e.measurement&&void 0!==e.block;case"shape":case"connector":return!0;case"group":return!nG.test(e.open)&&!nG.test(e.close)&&e.children.every(e=>t(e.node))}};return e.parts.every(t)}var nQ={};function nK(e,t){if(!ev(e.role).relation||void 0===e.from||void 0===e.to)return;let r={from:e.from,to:e.to,...t?{label:t}:{}};return{label:`${r.from} to ${r.to}${r.label?`: ${r.label}`:""}`,role:"graphics-symbol",roleDescription:"relation",relation:r}}function n0(e,t,r){return!r||Object.hasOwn(e,t)?e[t]:void 0}function n1(e,t){return e?{...e,...n0(e,"geometry",t)?{geometry:n0(e,"geometry",t)}:{},...n0(e,"size",t)?{size:{...n0(e,"size",t)}}:{},...n0(e,"viewBox",t)?{viewBox:{...n0(e,"viewBox",t)}}:{},...n0(e,"ref",t)?{ref:{...n0(e,"ref",t)}}:{},...n0(e,"bounds",t)?{bounds:{...n0(e,"bounds",t)}}:{},...n0(e,"paint",t)?{paint:{...n0(e,"paint",t)}}:{}}:void 0}function n2(e,t){let r=n0(e,"owner",t),n=n0(e,"point",t);return{...e,...r?{owner:{...r}}:{},...n?{point:{...n}}:{}}}function n5(e,t=!1){if(t&&"path"===e.geometry.kind)throw TypeError("Deferred terminal projections require line or polyline geometry");let r=function(e,t,r=!1){let n=["continuous-geometry","stroke-width","stroke-cap","stroke-join"];e.bendRadius>0&&n.push("bend-radius"),void 0!==n0(t,"opacity",r)&&n.push("stroke-opacity"),("miter"===t.lineJoin||"miter-clip"===t.lineJoin)&&n.push("stroke-miter"),n0(t,"dash",r)&&n.push("dash-pattern");let i=n0(t,"dash",r);return i&&void 0!==n0(i,"offset",r)&&n.push("dash-offset"),void 0!==n0(t,"pathLength",r)&&n.push("path-length"),void 0!==n0(t,"paintOrder",r)&&n.push("paint-order"),/^url\(#[A-Za-z_][A-Za-z0-9_.:-]*\)$/.test(t.color)&&n.push("gradient-paint"),void 0!==n0(t,"mixBlendMode",r)&&"normal"!==n0(t,"mixBlendMode",r)&&n.push("mix-blend-mode"),n0(t,"nonScaling",r)&&n.push("non-scaling-stroke"),n}(e.route,e.stroke,t),n=function(e,t=!1){let r=[],n=[];return t2(e,t).forEach((e,t)=>{let i=e.points[0],o=e.closed?i:e.points.at(-1);i&&r.push({point:{...i},contourIndex:t}),o&&n.push({point:{...o},contourIndex:t})}),{starts:r,ends:n}}(e.geometry,e.route.closed),i=function(e,t=!1){if("line"===e.kind)return[];let r=t2(e,t);return"path"===e.kind?(e.markerMidpoints??[]).map(e=>{if(1===r.length)return{point:{...e},contourIndex:0};let t=r.flatMap((t,r)=>t.points.some(t=>tD(t,e))?[r]:[]);if(1!==t.length)throw TypeError("Path marker-mid vertices on multiple subpaths must belong to exactly one typed contour");return{point:{...e},contourIndex:t[0]}}):r.flatMap((e,t)=>{if(e.points.length<2)return[];let r=e.closed&&tD(e.points[0],e.points.at(-1))?e.points.slice(0,-1):e.points;return(e.closed?r.slice(1):r.slice(1,-1)).map(e=>({point:{...e},contourIndex:t}))})}(e.geometry,e.route.closed),o=n0(e.stroke,"dash",t),a={start:n0(e.markers,"start",t)?n.starts.map(r=>({markerId:n0(e.markers,"start",t).id,point:{...r.point},contourIndex:r.contourIndex})):[],mid:0===e.markers.mid.length?[]:i.map((t,r)=>({markerId:(1===e.markers.mid.length?e.markers.mid[0]:e.markers.mid[r]).id,point:{...t.point},contourIndex:t.contourIndex})),end:n0(e.markers,"end",t)?n.ends.map(r=>({markerId:n0(e.markers,"end",t).id,point:{...r.point},contourIndex:r.contourIndex})):[]};return{realization:"invisible"===e.lineStyle?"unsupported":"projected",topology:e.geometry.kind,geometry:e.geometry,direction:e.relationship.direction,relationship:e.relationship.kind,markers:{...n0(e.markers,"start",t)?{start:n1(n0(e.markers,"start",t),t)}:{},mid:e.markers.mid.map(e=>n1(e,t)),...n0(e.markers,"end",t)?{end:n1(n0(e.markers,"end",t),t)}:{}},markerPlacements:a,endpoints:{...e.endpoints,...n0(e.endpoints,"start",t)?{start:n2(n0(e.endpoints,"start",t),t)}:{},...n0(e.endpoints,"end",t)?{end:n2(n0(e.endpoints,"end",t),t)}:{}},route:{ownership:e.route.ownership,closed:e.route.closed,bendRadius:e.route.bendRadius,contours:e.route.contours.map(e=>({...e,start:{...e.start},end:{...e.end},...n0(e,"startTangent",t)?{startTangent:{...n0(e,"startTangent",t)}}:{},...n0(e,"endTangent",t)?{endTangent:{...n0(e,"endTangent",t)}}:{}})),...n0(e.route,"startTangent",t)?{startTangent:{...n0(e.route,"startTangent",t)}}:{},...n0(e.route,"endTangent",t)?{endTangent:{...n0(e.route,"endTangent",t)}}:{},labelAnchors:e.route.labelAnchors.map(e=>({...e}))},stroke:{...e.stroke,...o?{dash:{...o,array:Array.isArray(o.array)?[...o.array]:o.array}}:{}},hit:{...e.hit,geometry:e.hit.geometry},...n0(e,"transform",t)?{transform:{...n0(e,"transform",t)}}:{},labels:e.labels.map(e=>({...e,...n0(e,"anchor",t)?{anchor:{...n0(e,"anchor",t)}}:{},...n0(e,"bounds",t)?{bounds:{...n0(e,"bounds",t)}}:{},...n0(e,"halo",t)?{halo:{...n0(e,"halo",t)}}:{},...n0(e,"paint",t)?{paint:{...n0(e,"paint",t)}}:{},...n0(e,"visual",t)?{visual:{...n0(e,"visual",t)}}:{}})),lineStyle:e.lineStyle,strokeLosses:r,diagnostics:["invisible"===e.lineStyle?"This connector affects layout but is intentionally absent from terminal output.":`The terminal grid preserves connector semantics while projecting continuous stroke fields: ${r.join(", ")}.`,...n0(e,"additionalDiagnostics",t)??[]]}}t(nQ,{connector:()=>ip,definitions:()=>ib,documentClose:()=>ix,documentContent:()=>ig,documentOpen:()=>iv,documentText:()=>iy,drawPathArtwork:()=>i$,group:()=>ik,indentLines:()=>nV,pathArtwork:()=>iw,shape:()=>il,text:()=>im});var n3=new WeakMap,n6=0;function n4(e){n6++;try{return e()}finally{n6--}}var n8={enumerable:!0,configurable:!0,get(){let e=n3.get(this);if(Object.hasOwn(e,"projection"))return e.projection;let t=n5(e,!0);return n3.set(this,{projection:t}),t},set(e){if(Object.isFrozen(this))throw TypeError("Cannot assign to readonly terminalProjection");Object.defineProperty(this,"terminalProjection",{value:e,enumerable:!0,configurable:!0,writable:!0}),n3.delete(this)}};function n9(e,t){n3.set(e,t),Object.defineProperty(e,"terminalProjection",n8)}function n7(e){let t=n3.get(e);return!t||Object.hasOwn(t,"projection")?void 0:Object.getOwnPropertyDescriptor(e,"terminalProjection")?.get===n8.get?t:void 0}function ie(e,t,r){let n=n3.get(e);return"terminalProjection"===t&&n&&r.get===n8.get?n8.get.call(e):void 0}function it(e,t){let r=n7(e);return!!r&&(n9(t,r),!0)}function ir(e,t){if(t){for(let r of Object.keys(t))if("className"!==r&&"data"!==r&&"ariaHidden"!==r&&"tabIndex"!==r&&"ariaLabel"!==r)throw TypeError(`Mark "${e}" has unknown attribute hook "${r}"`);if(void 0!==t.className&&!nW.test(t.className))throw TypeError(`Mark "${e}" class must be space-separated CSS tokens`);for(let[r,n]of Object.entries(t.data??{})){if(!nN.test(r))throw TypeError(`Mark "${e}" has an invalid data attribute key "${r}"`);if(nF.has(r))throw TypeError(`Mark "${e}" data-${r} belongs to its typed fields`);if("string"!=typeof n)throw TypeError(`Mark "${e}" data-${r} must be a string`)}if(void 0!==t.ariaHidden&&!0!==t.ariaHidden)throw TypeError(`Mark "${e}" ariaHidden must be true when present`);if(void 0!==t.tabIndex&&0!==t.tabIndex)throw TypeError(`Mark "${e}" tabIndex must be 0 when present`);if(void 0!==t.ariaLabel&&"string"!=typeof t.ariaLabel)throw TypeError(`Mark "${e}" ariaLabel must be a string`)}}var ii=/^(?:class|data-[a-z][a-z0-9-]*|role|aria-[a-z]+|tabindex|pointer-events|transform|style)$/,io=/^\s*<g\b[^>]*>(?:<title>[^<]*<\/title>)?$/,ia=/^\s*(?:--[A-Za-z0-9_-]+\s*:[^;]*(?:;\s*|$))*$/;function is(e){if(e.identity)return{...e.identity,role:e.role};let t=e.attributes?.className?.split(" ");return{id:e.id,role:e.role,...t?{classNames:t}:{}}}function il(e){if(ir(e.id,e.attributes),e.childPaints&&("compound"!==e.geometry.kind||e.childPaints.length!==e.geometry.children.length))throw TypeError(`Shape "${e.id}" child paints must match its compound geometry`);if(!1===e.identity&&e.owner?.role!==e.role)throw TypeError(`Shape "${e.id}" without DOM identity requires an explicit owner with the same role`);let t=!1===e.identity?void 0:is(e),r=t?nK(t,e.attributes?.data?.label):void 0;if(r&&e.attributes?.ariaLabel!==void 0)throw TypeError(`Shape "${e.id}" takes its aria-label from typed relation accessibility`);return nZ({kind:"shape",id:e.id,role:e.role,...t?{identity:t}:{},...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...r?{accessibility:r}:{},geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.conditionalPaint?{conditionalPaint:e.conditionalPaint}:{},...void 0!==e.surfaceFragment?{surfaceFragment:e.surfaceFragment}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}})}var id={id:!0,role:!0,geometry:!0,lineStyle:!0,paint:!0,identity:!0,owner:!0,visibility:!0,endpoints:!0,relationship:!0,route:!0,stroke:!0,markers:!0,labels:!0,hit:!0,terminalProjection:!0,channels:!0,transform:!0,attributes:!0},iu={start:!0,mid:!0,end:!0};function ic(e,t,r){if(!e||"object"!=typeof e||Array.isArray(e))throw TypeError(`${r} fields must be an object`);for(let n of Reflect.ownKeys(e))if(!Object.hasOwn(t,n))throw TypeError(`unknown ${r} field "${String(n)}"`)}function ih(e,t){return t?{...e,...t,...t.owner?{owner:{...t.owner}}:{},...t.point?{point:{...t.point}}:{}}:e??{}}function ip(e){var t;let r;if(ic(e,id,"connector"),void 0!==e.markers&&ic(e.markers,iu,"marker"),"path"!==e.geometry.kind&&e.route?.closed===!0)throw TypeError(`Connector "${e.id}" closed route topology requires path geometry`);if("path"===e.geometry.kind){let r=e.geometry,n=r.subpaths,i=(t=r.d,t.match(/[Mm](?=\s*[-+.]?\d)/g)?.length??0);if(i>1&&!n)throw TypeError(`Connector "${e.id}" path has multiple SVG subpaths but no typed subpaths`);if(n){if(0===n.length||n.some(e=>e.points.length<2))throw TypeError(`Connector "${e.id}" typed subpaths must each contain at least two points`);if(i!==n.length)throw TypeError(`Connector "${e.id}" typed subpath count disagrees with SVG path moves`);let t=n.flatMap(e=>e.points);if(t.length!==r.points.length||t.some((e,t)=>{let n=r.points[t];return!n||n.x!==e.x||n.y!==e.y}))throw TypeError(`Connector "${e.id}" typed subpaths disagree with the canonical point projection`)}}let n=t2(e.geometry,e.route?.closed??!1),i=1===n.length&&n[0].closed;if("path"===e.geometry.kind&&e.geometry.subpaths&&e.route?.closed!==void 0&&e.route.closed!==i)throw TypeError(`Connector "${e.id}" route.closed disagrees with typed subpath topology`);let o="path"===e.geometry.kind&&e.geometry.subpaths?i:e.route?.closed??!1;if("path"===e.geometry.kind&&(e.geometry.d.match(/[Zz]/g)?.length??0)!==(e.geometry.subpaths?e.geometry.subpaths.filter(e=>e.closed).length:+!!o))throw TypeError(`Connector "${e.id}" SVG close commands disagree with typed closed-contour semantics`);let a=e.markers?.start,s=e.markers?.end,l=e.markers?.mid??[];for(let t of[a,...l,s])if(t?.geometry?.kind==="path"&&!t.bounds&&!t.viewBox&&!t.size)throw TypeError(`Connector "${e.id}" path marker "${t.id}" requires bounds, viewBox, or size`);!function(e,t,r,n){if(0===n.length)return;let i=t8(t,r).length;if(0===i)throw RangeError(`Connector "${e}" has mid markers but no typed interior route points`);if(1!==n.length&&n.length!==i)throw RangeError(`Connector "${e}" mid markers must contain one repeated descriptor or one descriptor per interior route point`);if(1!==new Set(n.map(e=>e.id)).size)throw RangeError(`Connector "${e}" uses distinct mid markers that one SVG marker-mid carrier cannot represent`);n[0].id}(e.id,e.geometry,o,l);let d=function(e,t){if("line"===e.kind)return{start:{point:{x:e.x1,y:e.y1}},end:{point:{x:e.x2,y:e.y2}}};let r=t2(e,t),n=r[0]?.points[0],i=r.at(-1),o=i?.closed?i.points[0]:i?.points.at(-1);return{...n?{start:{point:{...n}}}:{},...o?{end:{point:{...o}}}:{}}}(e.geometry,o);for(let t of["start","end"]){let r=e.endpoints?.[t]?.point,n=d[t]?.point;if(r&&n&&!tD(r,n))throw TypeError(`Connector "${e.id}" endpoints.${t}.point disagrees with typed route geometry`)}let u={...e.endpoints??{},start:ih(d.start,e.endpoints?.start),end:ih(d.end,e.endpoints?.end)},c={kind:e.relationship?.kind??e.role,direction:e.relationship?.direction??(void 0!==u.from&&u.from===u.to?"self":a&&s?"bidirectional":a?"reverse":s?"forward":"undirected")},f=(e.labels??[]).map(e=>{let t=eV(e.text,e.textContent),r=eG(e.text);return{...e,text:r,..."string"!=typeof t?{textContent:{...e.textContent,value:r}}:{}}}),h={id:e.identity?.id??e.id,role:e.role,...e.identity?.classNames?{classNames:e.identity.classNames}:{},...e.identity?.from??u.from?{from:e.identity?.from??u.from}:{},...e.identity?.to??u.to?{to:e.identity?.to??u.to}:{}},p=f[0],m=nK(h,p?.visual?.kind==="inline"?nv(p).lineBlocks.map(e=>e.runs.map(e=>e.text).join("")).join(`
|
|
19
|
-
`):p?tx(eV(p.text,p.textContent),p.display??"literal"):void 0);if(ir(e.id,e.attributes),m&&e.attributes?.ariaLabel!==void 0)throw TypeError(`Connector "${e.id}" takes its aria-label from typed relation accessibility`);for(let[t,r]of f.entries())if(r.visual?.kind==="inline"&&(!r.anchor||!r.paint||void 0===r.fontSize||void 0===r.textAnchor))throw TypeError(`Connector "${e.id}" inline label ${t+1} requires anchor, paint, fontSize, and textAnchor`);let g=e.stroke?.width??e.paint.strokeWidth??"1",y=e.stroke?.dash??(e.paint.strokeDasharray?{array:e.paint.strokeDasharray,...void 0!==e.paint.strokeDashoffset?{offset:e.paint.strokeDashoffset}:{}}:void 0),b=e.stroke?.opacity??e.paint.opacity,x=e.stroke?.paintOrder??e.paint.paintOrder,k=e.stroke?.mixBlendMode,v={color:e.stroke?.color??e.paint.stroke??"var(--_line)",width:g,...void 0!==b?{opacity:b}:{},...y?{dash:y}:{},lineCap:e.stroke?.lineCap??e.paint.strokeLinecap??"butt",lineJoin:e.stroke?.lineJoin??e.paint.strokeLinejoin??"miter",miterLimit:e.stroke?.miterLimit??Number(e.paint.strokeMiterlimit??4),...e.stroke?.pathLength!==void 0?{pathLength:e.stroke.pathLength}:{},...void 0!==x?{paintOrder:x}:{},...void 0!==k?{mixBlendMode:k}:{},nonScaling:e.stroke?.nonScaling??"non-scaling-stroke"===e.paint.vectorEffect,...e.stroke?.encodesValue?{encodesValue:!0}:{}},w=t3(e.geometry,o),$=e.route?.contours;if($&&($.length!==w.length||$.some((e,t)=>{let r=w[t];return!r||e.start.x!==r.start.x||e.start.y!==r.start.y||e.end.x!==r.end.x||e.end.y!==r.end.y||e.closed!==r.closed})))throw TypeError(`Connector "${e.id}" route contours disagree with typed subpath endpoint topology`);if(!t5(e.geometry)&&$)for(let[t,r]of $.entries()){let n=w[t];for(let i of["startTangent","endTangent"]){let o=r[i],a=n[i];if(o&&(!a||!tD(o,a,1e-9)))throw TypeError(`Connector "${e.id}" route.contours[${t}].${i} disagrees with linear route geometry`)}}let M=$?w.map((e,t)=>{let r=$?.[t],n=r?.startTangent??e.startTangent,i=r?.endTangent??e.endTangent;return{start:{...e.start},end:{...e.end},closed:e.closed,...n?{startTangent:n}:{},...i?{endTangent:i}:{}}}):w;for(let t of M)for(let r of[t.startTangent,t.endTangent]){if(!r)continue;let t=Math.hypot(r.x,r.y);if(!Number.isFinite(t)||Math.abs(t-1)>1e-9)throw TypeError(`Connector "${e.id}" contour tangents must be finite unit vectors`)}for(let t of[e.route?.startTangent,e.route?.endTangent]){if(!t)continue;let r=Math.hypot(t.x,t.y);if(!Number.isFinite(r)||Math.abs(r-1)>1e-9)throw TypeError(`Connector "${e.id}" route tangents must be finite unit vectors`)}for(let[t,r,n]of[["startTangent",e.route?.startTangent,M[0]?.startTangent],["endTangent",e.route?.endTangent,M.at(-1)?.endTangent]])if(r&&n&&!tD(r,n,1e-9))throw TypeError(`Connector "${e.id}" route.${t} disagrees with its contour tangent authority`);let j={geometry:e.geometry,ownership:e.route?.ownership??"family",closed:o,bendRadius:e.route?.bendRadius??0,contours:M,...e.route?.startTangent??M[0]?.startTangent?{startTangent:e.route?.startTangent??M[0]?.startTangent}:{},...e.route?.endTangent??M.at(-1)?.endTangent?{endTangent:e.route?.endTangent??M.at(-1)?.endTangent}:{},labelAnchors:e.route?.labelAnchors??f.flatMap(e=>e.anchor?[e.anchor]:[])};if(e.hit?.closed!==void 0&&e.hit.closed!==o)throw TypeError(`Connector "${e.id}" hit.closed must match route.closed topology`);let S={geometry:e.hit?.geometry??e.geometry,closed:e.hit?.closed??o,strokeWidth:e.hit?.strokeWidth??Math.max(6,Number.isFinite(r="number"==typeof g?g:parseFloat(g))?Math.max(0,r):1),pointerEvents:e.hit?.pointerEvents??("invisible"===e.lineStyle?"none":"stroke")},z={geometry:e.geometry,lineStyle:e.lineStyle,endpoints:u,relationship:c,route:j,stroke:v,markers:{...a?{start:a}:{},mid:l,...s?{end:s}:{}},labels:f,hit:S,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection?.diagnostics},E={kind:"connector",id:e.id,role:e.role,lineStyle:e.lineStyle,endpoints:u,relationship:c,route:j,stroke:v,markers:{...a?{start:a}:{},mid:l,...s?{end:s}:{}},labels:f,hit:S,terminalProjection:void 0,identity:h,...e.owner?{owner:e.owner}:{},...e.visibility?{visibility:e.visibility}:{},...m?{accessibility:m}:{},...e.channels?{channels:e.channels}:{},...e.transform?{transform:e.transform}:{},...e.attributes?{attributes:e.attributes}:{}};return function(e,t){if(0===n6||"path"===t.geometry.kind||void 0!==t.additionalDiagnostics&&!t.additionalDiagnostics.every(e=>"string"==typeof e)){e.terminalProjection=n5(t);return}t.additionalDiagnostics&&Object.defineProperty(t,"additionalDiagnostics",{value:Object.freeze([...t.additionalDiagnostics])}),n9(e,Object.freeze(t))}(E,z),nZ(E)}function im(e){let{block:t,...r}=e;if(t){for(let r of["fontSize","fontWeight","letterSpacing"])if(void 0!==e[r]&&e[r]!==t[r])throw TypeError(`Text "${e.id}" ${r} differs from its retained prepared block`)}ir(e.id,e.attributes);let n=e.fontWeight??t?.fontWeight??400,i=e.letterSpacing??t?.letterSpacing??0,o=e.display??t?.prepared.display??"formatted",a=t??na(e.text,{display:o,fontSize:e.fontSize,fontWeight:n,letterSpacing:i});if(e.spans&&(1!==a.lines.length||e.spans.map(e=>e.text).join("")!==a.text))throw TypeError(`Text "${e.id}" spans must spell its one displayed line`);let s=e.baselineShift??.35,l=a.lines.length,d=t?t.lineHeight:e.fontSize*tf,u=(1===l?0:-((l-1)/2)*d)+e.fontSize*s,c="hanging"===e.dominantBaseline?a.lineHeight/2:"middle"===e.dominantBaseline||"central"===e.dominantBaseline?0:-(.35*e.fontSize),f=u+(l-1)*a.lineHeight/2+c,h=is(e),p=nK(h,e.attributes?.data?.label);if(p&&e.attributes?.ariaLabel!==void 0)throw TypeError(`Text "${e.id}" takes its aria-label from typed relation accessibility`);return nZ({kind:"text",...r,identity:h,accessibility:p,block:a,measurement:t?"prepared":"fallback",...t?{prepared:!0,preparedLines:t.lineBlocks.map(e=>e.runs)}:{},fontWeight:n,letterSpacing:i,display:o,textLayout:{width:a.width,height:a.height,lineHeight:a.lineHeight,offsetY:f}})}function ig(e,t){return nU({kind:"document",element:"content",...e},t)}function iy(e){let t="title"===e.element?"title":"desc",r=e.domId?` id="${t$(e.domId)}"`:"";return nU({kind:"document",role:"chrome",...e},`<${t}${r}>${tw(e.text)}</${t}>`)}function ib(e,t){return nU({kind:"document",role:"defs",element:"definitions",...e},t)}function ix(){return nU({kind:"document",id:"svg-close",role:"chrome",element:"close"},"</svg>")}function ik(t){var r;let n,i,o,a,s;!function(t,r,n){let i,o=new Set,a;if((io.test(r)?(rU(r,void 0,void 0,i={attribute:(r,n)=>{if(o.has(r))throw TypeError(`Group "${t}" open has a duplicate "${r}"`);if(o.add(r),!ii.test(r))throw TypeError(`Group "${t}" open sets "${r}"; paint and geometry belong to typed marks`);if("style"===r&&!ia.test(e(n)))throw TypeError(`Group "${t}" open style may only set custom properties; paint belongs to typed marks`);"transform"===r&&(a=n)},expectedName:"g",name:void 0}),i.name):void 0)!=="g")throw TypeError(`Group "${t}" open must be one <g> tag with an optional <title>`);let s=void 0===a?void 0:e(a),l=void 0===s?void 0:rT(s),d=n?rS(n):void 0;if(void 0!==s&&!l)throw TypeError(`Group "${t}" open has an unsupported transform`);if(!!l!=!!d||l&&d&&l.some((e,t)=>Math.abs(e-d[t])>1e-9*Math.max(1,Math.abs(e))))throw TypeError(`Group "${t}" open transform disagrees with its typed transform`)}(t.id,t.open,t.transform);let l=t.join??`
|
|
20
|
-
`,d=(r=t.open,n=r.match(/^\s*<([A-Za-z][\w:-]*)\b[^>]*>/)?.[0]??"",o=((i=t=>{let r=n.match(RegExp(`\\s${t}="([^"]*)"`))?.[1];return void 0===r?void 0:e(r)})("class")??"").split(/\s+/).filter(Boolean),a=i("data-from"),s=i("data-to"),{id:i("data-id")??t.id,role:t.role,...void 0!==a?{from:a}:{},...void 0!==s?{to:s}:{},...o.length>0?{classNames:o}:{}}),u=t.paint&&[...void 0!==t.paint.opacity?[`opacity="${t$(t.paint.opacity)}"`]:[],...void 0!==t.paint.fill?[`fill="${t$(t.paint.fill)}"`]:[]].join(" "),c=u?t.open.replace(/^<g\b/,`<g ${u}`):t.open,f=t.owner??{id:d.id,role:d.role},h=t.children.map(e=>{var t;let r;if(e.node.owner||"document"===e.node.kind||"group"===e.node.kind)return e;if(n7(e.node)){let t={};for(let r of Object.keys(e.node))t[r]="terminalProjection"===r?void 0:e.node[r];t.owner=f,r=t,it(e.node,r)}else r={...e.node,owner:f};return t=e.node,(nH.has(t)||nR.has(t))&&nX(e.node,r),{...e,node:r}}),p=n_(tR(c,d));return nZ({kind:"group",id:t.id,role:t.role,open:p,close:t.close,children:h,join:l,channels:t.channels,identity:d,owner:f,...t.visibility?{visibility:t.visibility}:{},...t.transform?{transform:t.transform}:{},...t.paint?{paint:t.paint}:{}})}function iv(e,t){return nU({kind:"document",element:"open",id:e.id,role:"prelude"},t)}function iw(e){return i$({shape:il,group:ik},e)}function i$(e,t){return e.group({id:t.id,role:"icon",open:t.open,close:"</g>",...t.transform?{transform:t.transform}:{},...t.owner?{owner:t.owner}:{},...t.channels?{channels:t.channels}:{},join:t.join??"",children:t.paths.map((r,n)=>({indent:t.indent??0,node:e.shape({id:tq(t.id,"path",n),role:"icon",geometry:{kind:"path",d:r},paint:t.paint,...t.owner?{owner:t.owner}:{}})}))})}export{eG as a,S as b,L as c,D as d,G as e,_ as f,Z as g,J as h,es as i,el as j,ed as k,eb as l,ek as m,ev as n,ew as o,eA as p,eR as q,eM as r,ej as s,eS as t,tl as u,tu as v,tc as w,tf as x,th as y,eT as z,eN as A,eI as B,eV as C,eX as D,eY as E,eQ as F,eK as G,tp as H,tm as I,tg as J,tb as K,tx as L,tw as M,t$ as N,tM as O,tT as P,tI as Q,tA as R,tP as S,tq as T,tB as U,tH as V,tR as W,r9 as X,r7 as Y,na as Z,ns as _,nl as $,nd as aa,tD as ba,tX as ca,t1 as da,t2 as ea,t5 as fa,t3 as ga,t6 as ha,t4 as ia,t9 as ja,re as ka,rt as la,rr as ma,rn as na,ro as oa,rl as pa,rd as qa,ru as ra,rc as sa,rf as ta,rh as ua,rp as va,rm as wa,rg as xa,ry as ya,rb as za,rv as Aa,r$ as Ba,rM as Ca,r6 as Da,rj as Ea,rS as Fa,rz as Ga,rE as Ha,rO as Ia,rT as Ja,rC as Ka,nc as La,nf as Ma,np as Na,nm as Oa,ny as Pa,nb as Qa,nw as Ra,n$ as Sa,nj as Ta,nS as Ua,nO as Va,nT as Wa,n5 as Xa,n4 as Ya,n7 as Za,ie as _a,it as $a,rI as ab,rA as bb,rB as cb,rH as db,rR as eb,r_ as fb,rZ as gb,rJ as hb,rV as ib,rY as jb,rK as kb,r0 as lb,r1 as mb,r2 as nb,r5 as ob,nF as pb,nW as qb,nN as rb,nB as sb,n_ as tb,nJ as ub,nV as vb,nX as wb,nY as xb,il as yb,ip as zb,im as Ab,ig as Bb,iy as Cb,ib as Db,ix as Eb,ik as Fb,iv as Gb,i$ as Hb,nQ as Ib,l as Jb,d as Kb,u as Lb,o as Mb,c as Nb,f as Ob,h as Pb,p as Qb,m as Rb,g as Sb,b as Tb,x as Ub,k as Vb,w as Wb,$ as Xb,M as Yb,j as Zb};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import{a as e,b as t}from"./chunk-YCEICNM6.js";import{a as i,b as n,d as a}from"./chunk-ICC7HBJX.js";import{C as r,aa as o,xa as l}from"./chunk-4LHYF3BS.js";import"./chunk-CQE4HQEW.js";import"./chunk-LH7HUDKW.js";import"./chunk-5FQ534HP.js";import"./chunk-BY2CPG6B.js";import"./chunk-SZELX2EJ.js";import{d as s}from"./chunk-QA6GJQ4X.js";import{a as d,b as h}from"./chunk-2I4UPL7Q.js";import{c as p,k as y}from"./chunk-2SH76OTH.js";import{d as c}from"./chunk-AMJLVPUB.js";import{t as f,z as g}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{c as x,d as u,e as m}from"./chunk-CN7WTBWB.js";import{C as b,D as w,a as M,b as k,c as v,d as S,e as R,g as $,i as L,o as _}from"./chunk-HLWUNUCM.js";import{A as E,C as W,K as F,S as z,aa as I,c as C,ca as T,ea as B,pa as N,s as P,w as H,y as D}from"./chunk-X2UYKWKM.js";import{i as j,j as O,k as K,q as U}from"./chunk-TYZOZXUJ.js";import{a as A,b as G,c as q,h as X,l as Y,m as Z,n as Q,o as J}from"./chunk-NO7ZIVRU.js";import{C as V,D as ee,E as et,G as ei,H as en,K as ea,La as er,M as eo,Mb as el,N as es,Na as ed,Nb as eh,O as ep,Qb as ey,Tb as ec,Wa as ef,Yb as eg,Z as ex,Zb as eu,a as em,da as eb,o as ew,sb as eM}from"./chunk-Z3FDIVLN.js";import{q as ek,r as ev}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var eS=Object.freeze({id:"er",upstreamId:"er",maturity:"stable",label:"ER",headers:["erDiagram"],aliases:[],config:{section:"er",keys:["layoutDirection","nodeSpacing","rankSpacing","titleTopMargin","diagramPadding","minEntityWidth","minEntityHeight","entityPadding","stroke","fill","fontSize","look","theme"],noopKeys:["diagramPadding","entityPadding","fill","fontSize","look","minEntityHeight","minEntityWidth","stroke","theme","titleTopMargin"]},identity:{id:"family:er",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","title","defs","chrome","group","group-header","entity","attribute","relationship","cardinality","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"entity",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"entity",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"attribute",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"attribute",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"relationship",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"cardinality",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`erDiagram
|
|
2
|
-
CUSTOMER ||--o{ ORDER : places
|
|
3
|
-
ORDER {
|
|
4
|
-
string id
|
|
5
|
-
}`,detect:ek,detectLoose:ev}),eR={layoutDirection:y("TB","TD","BT","LR","RL"),nodeSpacing:p,rankSpacing:p};function e$(e,t,i,n){let a=[],r=e.x-t.x,o=e.y-t.y,l=Math.sqrt(r*r+o*o);if(0===l)return[];let s=r/l,d=o/l,h=-d;if("parent"===i){let t=(t,i)=>({x:e.x-s*t+h*i,y:e.y-d*t+s*i});return[{geometry:{kind:"polygon",points:[t(0,0),t(6,4),t(12,0),t(6,-4)]},paint:{fill:"var(--bg)",...n}}]}let p=e.x-4*s,y=e.y-4*d,c=e.x-16*s,f=e.y-16*d,g="many"===i||"zero-many"===i,x=(e,t)=>{a.push({geometry:{kind:"line",x1:e+6*h,y1:t+6*s,x2:e-6*h,y2:t-6*s},paint:n})};if("one"===i?(x(p,y),x(p-4*s,y-4*d)):"zero-one"===i&&x(p,y),g){let t=p+7*h,r=y+7*s;a.push({geometry:{kind:"line",x1:t,y1:r,x2:c,y2:f},paint:n}),a.push({geometry:{kind:"line",x1:p,y1:y,x2:c,y2:f},paint:n});let o=p-7*h,l=y-7*s;a.push({geometry:{kind:"line",x1:o,y1:l,x2:c,y2:f},paint:n}),"many"===i&&x(e.x-20*s,e.y-20*d)}if("zero-one"===i||"zero-many"===i){let t=g?20:12,i=e.x-s*t,r=e.y-d*t;a.push({geometry:{kind:"circle",cx:i,cy:r,r:4},paint:{fill:"var(--bg)",...n}})}return a}function eL(e,t,i,n){let a=e$(e,t,i,{stroke:"#000",strokeWidth:String(n+.25)}),r=[];for(let e of a){let t=ef({kind:"shape",id:"cardinality",role:"cardinality",geometry:e.geometry,paint:e.paint});if(!t||!Object.values(t).every(Number.isFinite))return;r.push(t)}return r}function e_(e,t){return eL({x:0,y:0},{x:1,y:0},e,t)?.reduce((e,t)=>er(e,t),void 0)}function eE(e,t){let i=e.width+8,n=e.height+6;return{kind:"rect",x:t.x-i/2,y:t.y-n/2,width:i,height:n,rx:2,ry:2}}function eW(e,t){return ef({kind:"shape",id:"label-pill",role:"chrome",geometry:eE(e,t),paint:{fill:"#000",stroke:"#000",strokeWidth:"0.5"}})}var eF=class extends RangeError{code="ER_ROUTE_WORK_LIMIT";constructor(){super("ER_ROUTE_WORK_LIMIT: frame corridor checks exceed 400000; split the diagram or reduce its relationships"),this.name="ErRouteWorkLimitError"}},ez=class extends Error{code="ER_ROUTE_BLOCKED";constructor(e,t){super(`ER_ROUTE_BLOCKED: no clear frame corridor from ${e} to ${t}`),this.name="ErRouteGeometryError"}},eI=class extends RangeError{code="ER_LABEL_WORK_LIMIT";constructor(){super("ER_LABEL_WORK_LIMIT: label-slot search exceeds 400000 operations; split the diagram or reduce its relationships"),this.name="ErLabelWorkLimitError"}},eC={subject:"ER text entity",example:'A["I #9829; ER"]'};function eT(e){return e.replace(/\\(["\\])/g,"$1")}function eB(e,t,i){let n=e.slice(1,-1);return n.includes("\\")?i?.(`${t} ${e} contains a backslash, and \\" reads as "`,'write " as #quot; and \\ as #92;'):n.includes("%")?i?.(`${t} ${e} contains a % and is read as written`,"write % as #37;"):""===n&&i?.(`${t} ${e} is empty and is read as no text`,"give the name some text"),eT(n)}function eN(e){return s(e,eC)}function eP(e){return en(e).replace(/\*\*([\s\S]+?)\*\*/g,"<b>$1</b>").replace(/_([^_\n]+)_/g,"<i>$1</i>").replace(/(?<!\*)\*([^*\n]+)\*(?!\*)/g,"<i>$1</i>")}function eH(e,t,i=!1){if(/#\w+;/.test(e))return{value:t,prepared:et(ei(i?en(e):eP(e),i?"literal":"formatted"),/#\w+;/g,eN),authored:e}}function eD(e,t=!1){let i=t?eN(eP(e)):eN(e),n=eH(e,i);return{label:i,...n?{labelContent:n}:{}}}function ej(e,t){let i=V(e,t);return"string"!=typeof i?ee(i).replace(/\s+/g," ").trim():ea(e).replace(/\s+/g," ").trim()}function eO(e,t,i){let n=ew(i,"relationship",{category:e.identifying?"identifying":"non-identifying"},{includeFallback:!1});return ex(V(e.label,e.labelContent),{transform:n?.textTransform??t.edgeTextTransform,fontSize:n?.fontSize??t.edgeLabelFontSize,fontWeight:n?.fontWeight??t.edgeLabelFontWeight,letterSpacing:n?.letterSpacing??t.edgeLetterSpacing})}function eK(e,t,i,n){let a=[],r=eG(e,t,i,n??{operations:0},!0,a);for(let t of e.relationships){let e=r.get(t);e?t.finalLabelPosition={...e}:delete t.finalLabelPosition}return a}function eU(e){let t=new Map;for(let i of e.relationships){if(!i.label||i.points.length<2)continue;let e=i.finalLabelPosition;if(!e||!Number.isFinite(e.x)||!Number.isFinite(e.y))return;t.set(i,e)}return t}function eA(e,t,i,n={operations:0}){return eG(e,t,i,n,"shaft-aware"===e.labelPlacement)}function eG(e,t,i,n,a,r){let o=new Map,l=(e=1)=>{if(n.operations+=e,n.operations>4e5)throw new eI};if(!e.relationships.some(e=>e.label&&e.points.length>1))return o;let s=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>.5&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>.5,d=[...e.entities.map(e=>{let i=Number.parseFloat(e.inlineStyle?.["stroke-width"]??""),n=(Number.isFinite(i)&&i>0?i:t.nodeLineWidth)/2;return{x0:e.x-n,y0:e.y-n,x1:e.x+e.width+n,y1:e.y+e.height+n}}),...e.groups.flatMap(e=>[{x0:e.x,y0:e.y,x1:e.x+e.width,y1:e.y+e.headerHeight},{x0:e.x-.75,y0:e.y-.75,x1:e.x+.75,y1:e.y+e.height+.75},{x0:e.x+e.width-.75,y0:e.y-.75,x1:e.x+e.width+.75,y1:e.y+e.height+.75},{x0:e.x-.75,y0:e.y-.75,x1:e.x+e.width+.75,y1:e.y+.75},{x0:e.x-.75,y0:e.y+e.height-.75,x1:e.x+e.width+.75,y1:e.y+e.height+.75}])],h=e.relationships.flatMap(e=>{if(0===e.points.length)return[];let i=[e.points[0],e.points[e.points.length-1]],n=i.map(e=>({x0:e.x-18,y0:e.y-18,x1:e.x+18,y1:e.y+18}));if(e.points.length<2)return n;let a=[eL(i[0],e.points[1],e.cardinality1,t.lineWidth),eL(i[1],e.points.at(-2),e.cardinality2,t.lineWidth)];return l(2),[...n,...a.flatMap(e=>e??[])]}),p=[];l(d.length+h.length);let y=a?e.relationships.flatMap(e=>{if(e.points.length<2)return[];let n=ew(i,"relationship",{category:e.identifying?"identifying":"non-identifying"},{includeFallback:!1}),a=n?.bendRadius??t.edgeBendRadius,r=n?.lineWidth??t.lineWidth;if(r<=0)return[];let o=a>0&&e.points.length>2,s=Math.max(.5,r/2)+.5*!!o;if(o){l(e.points.length);let t=eb(e.points,a,{metric:"manhattan"}).geometry,i=[];if(!ed(t.d,t=>(l(),i.push({owner:e,box:{x0:t.bounds.x0-s,y0:t.bounds.y0-s,x1:t.bounds.x1+s,y1:t.bounds.y1+s}}),!0),()=>(l(),!0)))throw new eI;return i}return e.points.slice(1).map((t,i)=>{l();let n=e.points[i];return{owner:e,box:{x0:Math.min(n.x,t.x)-s,y0:Math.min(n.y,t.y)-s,x1:Math.max(n.x,t.x)+s,y1:Math.max(n.y,t.y)+s}}})}):[];for(let n of e.relationships){if(!n.label||n.points.length<2)continue;let c=n.labelBlock??eO(n,t,i),f=c.width+16,g=c.height+16,x=(e,t)=>({x0:e-f/2,y0:t-g/2,x1:e+f/2,y1:t+g/2}),u=[];for(let e of y)l(),e.owner!==n&&u.push(e.box);let m=t=>(l(),t.x0<0||t.y0<0||t.x1>e.width||t.y1>e.height||p.some(e=>(l(),s(t,e)))||d.some(e=>(l(),s(t,e)))||h.some(e=>(l(),s(t,e)))||u.some(e=>(l(),s(t,e)))),b=n.points,w=[],M=0;for(let e=1;e<b.length;e++){l();let t=Math.hypot(b[e].x-b[e-1].x,b[e].y-b[e-1].y);w.push(t),M+=t}let k=e=>{let t=e;for(let e=0;e<w.length;e++){if(l(),t<=w[e]||e===w.length-1){let i=0===w[e]?0:Math.max(0,Math.min(1,t/w[e]));return{x:b[e].x+(b[e+1].x-b[e].x)*i,y:b[e].y+(b[e+1].y-b[e].y)*i}}t-=w[e]}return b[b.length-1]};l(2*b.length);let v=eq(b),S={x:v.x,y:v.y},R=x(v.x,v.y),$=a?n.labelPosition:void 0;$&&Number.isFinite($.x)&&Number.isFinite($.y)&&b.slice(1).some((e,t)=>{l();let i=b[t],n=e.x-i.x,a=e.y-i.y,r=n*n+a*a,o=r?Math.max(0,Math.min(1,(($.x-i.x)*n+($.y-i.y)*a)/r)):0;return .001>=Math.hypot($.x-i.x-o*n,$.y-i.y-o*a)})&&!m(x($.x,$.y))&&(R=x((S={...$}).x,S.y));let L=m(R);if(L)for(let e of[.4,.6,.3,.7,.25,.75,.2,.8,.15,.85]){let t=k(M*e),i=x(t.x,t.y);if(!m(i)){S=t,R=i,L=!1;break}}if(L){l(d.length+h.length+p.length+u.length);let t=[...d,...h,...p,...u],i,n=0;for(let a=1;a<b.length;a++){l();let r=b[a-1],o=b[a],s=w[a-1],d=r.x===o.x,h=r.y===o.y;if(0===s||!d&&!h){n+=s;continue}let p=d?r.x:r.y,y=(d?f:g)/2,c=(d?g:f)/2,x=d?e.width:e.height,u=d?e.height:e.width;if(p-y<0||p+y>x){n+=s;continue}let m=Math.max(Math.min(d?r.y:r.x,d?o.y:o.x),c),k=Math.min(Math.max(d?r.y:r.x,d?o.y:o.x),u-c);if(m>=k){n+=s;continue}let v=[];for(let e of t){l();let t=d?e.x0:e.y0;Math.min(p+y,d?e.x1:e.y1)-Math.max(p-y,t)<=.5||v.push([(d?e.y0:e.x0)-c+.5,(d?e.y1:e.x1)+c-.5])}v.sort((e,t)=>(l(),e[0]-t[0]||e[1]-t[1]));let S=d?r.y:r.x,R=Math.sign((d?o.y:o.x)-S),$=S+R*(M/2-n),L=(e,t)=>{l();let a=Math.max(1e-6,Number.EPSILON*Math.max(1,Math.abs(e),Math.abs(t))*8);if(t-e<=2*a)return;let r=Math.max(e+a,Math.min(t-a,$)),o=Math.abs(n+Math.abs(r-S)-M/2);(!i||o<i.distance)&&(i={point:d?{x:p,y:r}:{x:r,y:p},distance:o})},_=m;for(let[e,t]of v)if(l(),!(t<=_)&&(e>k||(e>_&&L(_,Math.min(k,e)),(_=Math.max(_,t))>=k)))break;_<k&&L(_,k),n+=s}i&&!m(x(i.point.x,i.point.y))&&(R=x((S=i.point).x,S.y),L=!1)}L&&r&&(l(),r.push(n)),p.push(R),o.set(n,S)}return o}function eq(e){if(0===e.length)return{x:0,y:0};if(1===e.length)return e[0];let t=0;for(let i=1;i<e.length;i++){let n=e[i].x-e[i-1].x,a=e[i].y-e[i-1].y;t+=Math.sqrt(n*n+a*a)}if(0===t)return e[0];let i=t/2,n=0;for(let t=1;t<e.length;t++){let a=e[t].x-e[t-1].x,r=e[t].y-e[t-1].y,o=Math.sqrt(a*a+r*r);if(n+o>=i){let l=o>0?(i-n)/o:0;return{x:e[t-1].x+a*l,y:e[t-1].y+r*l}}n+=o}return e[e.length-1]}var eX={nodeLabelFontSize:A.nodeLabel,edgeLabelFontSize:A.edgeLabel,groupHeaderFontSize:A.groupHeader,nodeLabelFontWeight:700,edgeLabelFontWeight:G.edgeLabel,groupHeaderFontWeight:G.groupHeader,nodePaddingX:14,nodePaddingY:8,nodeCornerRadius:0,nodeLineWidth:q.outerBox,edgeLineWidth:q.connector,groupCornerRadius:0,groupPaddingX:14,groupPaddingY:8,groupLineWidth:q.outerBox};function eY(e,t){return ex(e,{transform:t.nodeTextTransform,fontSize:t.nodeLabelFontSize,fontWeight:t.nodeLabelFontWeight,letterSpacing:t.nodeLetterSpacing})}function eZ(e,t){return ex(e,{transform:t.groupTextTransform,fontSize:t.groupHeaderFontSize,fontWeight:t.groupHeaderFontWeight,letterSpacing:t.groupLetterSpacing})}function eQ(e){let t={display:"literal",fontSize:11,fontWeight:400,monospace:!0};return{type:ex(e.type,t),name:ex(e.name,t),keys:ex(e.keys.join(","),{display:"literal",fontSize:9,fontWeight:600}),...e.comment?{comment:ex(ej(e.comment,e.commentContent),{display:"literal",fontSize:11,fontWeight:400})}:{}}}function eJ(){return ex("<i>(no attributes)</i>",{fontSize:11,fontWeight:400})}function eV(e,t,i){for(let i of e.entities)i.labelBlock=eY(V(i.label,i.labelContent),t),i.attributeBlocks=i.attributes.map(eQ),0===i.attributes.length&&(i.emptyAttributeBlock=eJ());for(let i of e.groups)i.labelBlock??=eZ(V(i.label,i.labelContent),t);for(let n of e.relationships)n.labelBlock??=eO(n,t,i);return e}function e0(e,t){let i=new Map(e.groups.map(e=>[e.id,e.parentId])),n=new Map([...e.entities.map(e=>[e.id,e.groupId]),...i]),a=(e,t)=>{for(let a=n.get(t),r=0;void 0!==a&&i.has(a)&&r<F.nesting;a=i.get(a),r++)if(a===e)return!0;return!1},r=new Map,o=new Map,l=new Map;for(let[i,n]of e.relationships.entries()){let e=a(n.entity1,n.entity2)?n.entity1:a(n.entity2,n.entity1)?n.entity2:void 0;if(!e)continue;r.set(e,(r.get(e)??0)+t[i].height+56);let s=e===n.entity1?n.entity2:n.entity1;o.set(s,Math.max(o.get(s)??0,t[i].height+40));let d=l.get(e)??[];d.push(i),l.set(e,d)}let s=new Map;for(let e of l.values())e.forEach((t,i)=>s.set(t,(i+1)/(e.length+1)));return{padding:r,exits:o,lanes:s}}function e1(e,t,i){let n=Math.max(e.x,t.x)+(Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x))*i;return[{x:n,y:e.y+e.height},{x:n,y:t.y+t.height}]}function e2(e,t){return e.flatMap((e,i)=>{if(!e.label||e.points.length<2)return[];let n=e.labelPosition??_(e.points),a=t[i];return[{x0:n.x-a.width/2-8,x1:n.x+a.width/2+8,y0:n.y-a.height/2-8,y1:n.y+a.height/2+8}]})}function e5(e,t=1){if(e.operations+=t,e.operations>4e5)throw new eF}function e4(e,t){for(let i=1;i<e.length;i++){let n=e[i-1],a=e[i],r=n.x===a.x;if(e5(t),![n.x,n.y,a.x,a.y].every(Number.isFinite)||n.x!==a.x&&n.y!==a.y||n.x===a.x&&n.y===a.y)return!1;for(let o=1;o<i;o++){e5(t);let l=e[o-1],s=e[o];if(r===(l.x===s.x)){let e=r?"x":"y",t=r?"y":"x";if(n[e]!==l[e])continue;let d=Math.max(Math.min(n[t],a[t]),Math.min(l[t],s[t])),h=Math.min(Math.max(n[t],a[t]),Math.max(l[t],s[t]));if(o===i-1?d<h:d<=h)return!1}else if(o!==i-1){let e=r?n.x:l.x,t=r?l.y:n.y;if(e>=Math.min(n.x,a.x)&&e<=Math.max(n.x,a.x)&&t>=Math.min(n.y,a.y)&&t<=Math.max(n.y,a.y)&&e>=Math.min(l.x,s.x)&&e<=Math.max(l.x,s.x)&&t>=Math.min(l.y,s.y)&&t<=Math.max(l.y,s.y))return!1}}}return!0}function e7(e,t,i,n){let a=new Map([...e,...t].map(e=>[e.id,e])),r=new Set(t.map(e=>e.id)),o=(e=1)=>e5(n,e),l=new Map([...e.map(e=>[e.id,e.groupId]),...t.map(e=>[e.id,e.parentId])]),s=(e,t)=>{for(let i=l.get(t),n=0;void 0!==i&&n<F.nesting;i=l.get(i),n++)if(o(),i===e)return!0;return!1};for(let e of i)for(let t of[!1,!0]){let i=t?e.entity2:e.entity1,n=t?e.entity1:e.entity2,l=a.get(i),d=t?e.points.at(-1):e.points[0];if(!l||!d)continue;let h=(t?[...e.points].reverse():e.points).find(e=>e.x!==d.x||e.y!==d.y);if(o(e.points.length),h)if(r.has(i)&&s(i,n)){if(h.x!==d.x)throw new ez(e.entity1,e.entity2);d.y=l.y+l.height}else{let e=h.y===d.y&&h.x!==d.x||(d.x===l.x||d.x===l.x+l.width)&&h.x!==d.x,t=h.x===d.x&&h.y!==d.y||(d.y===l.y||d.y===l.y+l.height)&&h.y!==d.y;e?(d.x=h.x>d.x?l.x+l.width:l.x,h.y=d.y):t&&(d.y=h.y>d.y?l.y+l.height:l.y,h.x=d.x)}}}function e6(e,t,i,n,a,s,d={operations:0},h){e7(e,t,i,d);let p=a.lineWidth,y=ey([...e.map(e=>e.id),...t.map(e=>e.id)]),c=new Set(t.map(e=>e.id)),f=new Map,g=new Map,x=[...e.map(e=>{let t=y(`er-entity:${e.id}`,["er","entity",e.id]);f.set(t,e.id);let i=Number.parseFloat(e.inlineStyle?.["stroke-width"]??""),n=(Number.isFinite(i)&&i>0?i:a.nodeLineWidth)/2;return{...e,id:t,x:e.x-n,y:e.y-n,width:e.width+2*n,height:e.height+2*n,shape:"rectangle"}}),...t.map(e=>{let t=y(`er-header:${e.id}`,["er","header",e.id]);return g.set(t,e.id),{...e,id:t,height:e.headerHeight,shape:"rectangle"}})],u=e=>e5(d,e);for(let[e,t]of i.entries()){if(h&&!h.indices.has(e)||t.points.length<2)continue;let[i,m]=[t.points[0],t.points.at(-1)],b=ew(s,"relationship",{category:t.identifying?"identifying":"non-identifying"},{includeFallback:!1}),w=(b?.bendRadius??a.edgeBendRadius)+2*(b?.lineWidth??a.lineWidth),M=x.filter(e=>{let i=f.get(e.id);return void 0===i||c.has(i)||i!==t.entity1&&i!==t.entity2}).map(e=>w&&g.get(e.id)!==t.entity1&&g.get(e.id)!==t.entity2?{...e,x:e.x-w,y:e.y-w,width:e.width+2*w,height:e.height+2*w}:e),k=e=>e.slice(1).some((t,i)=>M.some(n=>(u(1),o(e[i],t,n)))),v=(e,n,r)=>{let o=eL(e,n,r,p);if(u(2+(o?.length??0)),!o?.length)return!1;let l=e.y===n.y,s=Math.sign(l?n.x-e.x:n.y-e.y),d=Math.max(...o.map(t=>s>0?l?t.x1-e.x:t.y1-e.y:l?e.x-t.x0:e.y-t.y0)),h=Math.abs(l?n.x-e.x:n.y-e.y),y=b?.bendRadius??a.edgeBendRadius,c=e===i?t.points[2]:t.points.at(-3),f=c?Math.abs(c.x-n.x)+Math.abs(c.y-n.y):h;return h-(t.points.length>2?Math.min(y,h/2,f/2):0)>=d};if(!k(t.points)&&e4(t.points,d)&&v(i,t.points[1],t.cardinality1)&&v(m,t.points.at(-2),t.cardinality2)&&(!h||h.admit(e,t.points)))continue;delete t.labelPosition;let S=t.points.find(e=>e.x!==i.x||e.y!==i.y),R=[...t.points].reverse().find(e=>e.x!==m.x||e.y!==m.y),$=[],L=p+.25,_=(i,r,o,l)=>{let s={x:Math.sign(r.x-i.x),y:Math.sign(r.y-i.y)},d=eL(i,r,l,p);if(u(2+(d?.length??0)),!d?.length)throw new ez(t.entity1,t.entity2);let h=Math.max(0,...d.map(e=>s.x>0?e.x1-i.x:s.x<0?i.x-e.x0:s.y>0?e.y1-i.y:i.y-e.y0)),c=h+(b?.bendRadius??a.edgeBendRadius)+L,f=n[e],g=(s.x?f.width:f.height)/2+8,x=t.entity1===t.entity2&&t.label?h+g+1+L+a.nodeLineWidth/2:0,m=Math.max(c+1+L,x),w=Math.max(20,m);for(let e of M){if(u(1),!(s.x?i.y>e.y&&i.y<e.y+e.height:i.x>e.x&&i.x<e.x+e.width))continue;let t=s.x>0?e.x-i.x:s.x<0?i.x-e.x-e.width:s.y>0?e.y-i.y:i.y-e.y-e.height;t>=0&&(w=Math.min(w,t-1-L))}if(w<m)throw new ez(t.entity1,t.entity2);let k=Math.max(0,...d.map(e=>s.x?Math.max(i.y-e.y0,e.y1-i.y):Math.max(i.x-e.x0,e.x1-i.x))),v={x:i.x+s.x*c,y:i.y+s.y*c};return u(d.length+2),$.push({id:y(`er-terminal:${e}:${$.length}`,["er","terminal",e,$.length]),label:"",shape:"rectangle",x:s.x?Math.min(i.x,v.x):i.x-k,y:s.y?Math.min(i.y,v.y):i.y-k,width:s.x?c:2*k,height:s.y?c:2*k}),{id:o,label:"",shape:"rectangle",x:i.x+s.x*w,y:i.y+s.y*w,width:0,height:0}},E=_(i,S,t.entity1,t.cardinality1),W=_(m,R,t.entity2,t.cardinality2),F=e=>k(e)||e.slice(1).some((t,i)=>$.some(n=>(u(1),o(e[i],t,n)))),z=n[e],I=z.width/2+8,C=z.height/2+8,T=M.map(e=>({...e,x:e.x-I,y:e.y-C,width:e.width+2*I,height:e.height+2*C})),B=[T];u(M.length);let N={source:E.id,target:W.id,style:"solid",hasArrowStart:!1,hasArrowEnd:!1,points:[{x:E.x,y:E.y},...t.points.slice(1,-1),{x:W.x,y:W.y}]},P=Math.abs(m.x-i.x)>=Math.abs(m.y-i.y)?m.x>=i.x?"LR":"RL":m.y>=i.y?"TB":"BT";if(l([...T,...$,E,W],[N],{direction:P},u),F(N.points)){u(M.length);let e=M.map(e=>"TB"===P||"BT"===P?{...e,x:e.x-I,width:e.width+2*I}:{...e,y:e.y-C,height:e.height+2*C});B.push(e),l([...e,...$,E,W],[N],{direction:P},u)}if(F(N.points)){let e="LR"===P||"RL"===P?m.y>=i.y?"TB":"BT":m.x>=i.x?"LR":"RL";u(M.length);let t=M.map(t=>"TB"===e||"BT"===e?{...t,x:t.x-I,width:t.width+2*I}:{...t,y:t.y-C,height:t.height+2*C});B.push(t),l([...t,...$,E,W],[N],{direction:e},u)}let H=t=>{if(F(t))return!1;let n=r([i,...t,m]);return e4(n,d)&&(!h||h.admit(e,n))};if(!H(N.points)){let e;for(let t of[...B,M]){let i=[E.x,W.x],n=[E.y,W.y];for(let e of[...t,...$])u(4),i.push(e.x-L,e.x+e.width+L),n.push(e.y-L,e.y+e.height+L);for(let a of(i.sort((e,t)=>(u(1),Math.abs(e-(E.x+W.x)/2)-Math.abs(t-(E.x+W.x)/2)||e-t)),n.sort((e,t)=>(u(1),Math.abs(e-(E.y+W.y)/2)-Math.abs(t-(E.y+W.y)/2)||e-t)),u((i.length+n.length+2)*4),[[E,{x:W.x,y:E.y},W],[E,{x:E.x,y:W.y},W],...i.map(e=>[E,{x:e,y:E.y},{x:e,y:W.y},W]),...n.map(e=>[E,{x:E.x,y:e},{x:W.x,y:e},W])])){let i=r(a);if(!i.slice(1).some((e,n)=>t.some(t=>(u(1),o(i[n],e,t))))&&H(i)){e=i;break}}if(e)break}if(!e)throw new ez(t.entity1,t.entity2);N.points=e}if(t.points=r([i,...N.points,m]),k(t.points))throw new ez(t.entity1,t.entity2)}}function e8(e){let t=Math.max(0,...e.map(e=>e.comment?eQ(e).comment.width:0));return t>0?t+12:0}function e3(e,t){let i={x:e.x+e.width/2,y:e.y+e.height/2},n=t.x-i.x,a=t.y-i.y;return Math.abs(n)*e.height>=Math.abs(a)*e.width?{point:{x:n>=0?e.x+e.width:e.x,y:i.y+a/(Math.abs(n)||1)*e.width/2},horizontal:!0}:{point:{x:i.x+n/(Math.abs(a)||1)*e.height/2,y:a>=0?e.y+e.height:e.y},horizontal:!1}}function e9(e,t){let i=e3(e,{x:t.x+t.width/2,y:t.y+t.height/2}),n=e3(t,{x:e.x+e.width/2,y:e.y+e.height/2});return function(e,t,i,n){let a=[e];if(e.x!==t.x&&e.y!==t.y)if(i!==n)a.push(i?{x:t.x,y:e.y}:{x:e.x,y:t.y});else if(i){let i=(e.x+t.x)/2;a.push({x:i,y:e.y},{x:i,y:t.y})}else{let i=(e.y+t.y)/2;a.push({x:e.x,y:i},{x:t.x,y:i})}return a.push(t),a}(i.point,n.point,i.horizontal,n.horizontal)}function te(e,t,i,n){let a=new Map([...e.entities.map(e=>[e.id,e.groupId]),...e.groups.map(e=>[e.id,e.parentId])]),r=new Map;for(let o of(e5(n,a.size),e.relationships)){if(e5(n),o.label){let e=eO(o,t,i).width+16+t.nodeLineWidth+1.5+2*(t.lineWidth+.25);for(let[t,i]of[[o.entity1,o.entity2],[o.entity2,o.entity1]])for(let o=a.get(i),l=0;void 0!==o&&l<F.nesting;o=a.get(o),l++)if(e5(n),o===t){r.set(o,Math.max(r.get(o)??20,e));break}}let e=ew(i,"relationship",{category:o.identifying?"identifying":"non-identifying"},{includeFallback:!1})?.bendRadius??t.edgeBendRadius;for(let[l,s]of[[o.entity1,o.cardinality1],[o.entity2,o.cardinality2]]){let d=a.get(l);if(!d)continue;let h=e_(s,t.lineWidth);if(e5(n),!h)throw new ez(o.entity1,o.entity2);let p=ew(i,"relationship",{category:o.identifying?"identifying":"non-identifying"},{includeFallback:!1})?.lineWidth??t.lineWidth,y=h.x1+2*e+2*p+3*(t.lineWidth+.25)+2+.75;r.set(d,Math.max(r.get(d)??20,y))}}return r}function tt(e,t,i,n,a,r,o,l=20,s,d={operations:0},h=new Map){if(0===i.length)return!1;let p=new Map(i.map(e=>[e.id,e])),y=new Map(e.groups.map(e=>[e.id,e])),c=new Map,f=new Map;for(let e of i){let t=e.parentId&&p.has(e.parentId)?e.parentId:void 0,i=c.get(t)??[];i.push(e),c.set(t,i)}for(let e of t){let t=e.groupId&&p.has(e.groupId)?e.groupId:void 0,i=f.get(t)??[];i.push(e),f.set(t,i)}let g=new Map([...t,...i].map(e=>[e.id,e])),x=t=>{e5(d);let i=e.relationships[t],r=g.get(i.entity1),o=g.get(i.entity2),l=e9(r,o),s=eL(l[0],l[1],i.cardinality1,n.lineWidth),h=eL(l.at(-1),l.at(-2),i.cardinality2,n.lineWidth);if(!s?.length||!h?.length)return!0;let y=(e,t)=>(e5(d),e.x0<t.x1&&e.x1>t.x0&&e.y0<t.y1&&e.y1>t.y0);if(s.some(e=>h.some(t=>y(e,t))))return!0;let c=(e,t)=>({x0:t.x,y0:t.y,x1:t.x+t.width,y1:t.y+(p.has(e)?t.headerHeight:t.height)});if(s.some(e=>y(e,c(i.entity2,o)))||h.some(e=>y(e,c(i.entity1,r))))return!0;if(i.label){let e=eW(a[t],_(l));if(!e||y(e,c(i.entity1,r))||y(e,c(i.entity2,o)))return!0}return!1},u=!1,m=(e,t,i)=>{for(let n of(e.x+=t,e.y+=i,f.get(e.id)??[]))n.x+=t,n.y+=i;for(let n of c.get(e.id)??[])m(n,t,i)},b=e=>new Set([e.id,...(f.get(e.id)??[]).map(e=>e.id),...(c.get(e.id)??[]).flatMap(e=>[...b(e)])]),w=(t,i)=>{let M=c.get(t)??[];for(let e of M)w(e.id,y.get(e.id)?.direction??i);let k=f.get(t)??[],v=new Map(k.map(e=>[e.id,e])),S=new Map(k.map(e=>[e.id,[]]));for(let t of e.relationships)v.has(t.entity1)&&v.has(t.entity2)&&(S.get(t.entity1).push(t.entity2),S.get(t.entity2).push(t.entity1));let R=new Set,$=[];for(let e of k){if(R.has(e.id))continue;let t=[],i=[e.id];for(;i.length;){let e=i.pop();R.has(e)||(R.add(e),t.push(v.get(e)),i.push(...S.get(e)))}let n=Math.min(...t.map(e=>e.x)),a=Math.min(...t.map(e=>e.y)),r={x:n,y:a,width:Math.max(...t.map(e=>e.x+e.width))-n,height:Math.max(...t.map(e=>e.y+e.height))-a};$.push({box:r,ids:new Set(t.map(e=>e.id)),move:(e,i)=>{for(let n of(r.x+=e,r.y+=i,t))n.x+=e,n.y+=i}})}let L=[...$,...M.map(e=>({box:e,ids:b(e),move:(t,i)=>m(e,t,i)}))];if(((t,i)=>{let r="LR"===i||"RL"===i,h=r?"y":"x",y=r?"height":"width",c=r?"x":"y",f=t=>{let i=[];for(let a of e.relationships){if(e5(d),!t.ids.has(a.entity1)&&!t.ids.has(a.entity2))continue;let e=g.get(a.entity1),r=g.get(a.entity2);if(!e||!r)continue;let o=e9(e,r),l=2*(ew(s,"relationship",{category:a.identifying?"identifying":"non-identifying"},{includeFallback:!1})?.bendRadius??n.edgeBendRadius)+2*n.lineWidth+4*(n.lineWidth+.25)+2;for(let[e,r,s,h]of[[a.entity1,o[0],o[1],a.cardinality1],[a.entity2,o.at(-1),o.at(-2),a.cardinality2]]){if(!t.ids.has(e))continue;let o=eL(r,s,h,n.lineWidth);if(e5(d,2+(o?.length??0)),!o)throw new ez(a.entity1,a.entity2);i.push(...o.map(e=>({...e,overhead:l})))}}return i},m=e=>Math.max(0,...[...e.ids].map(e=>{if(e5(d),p.has(e))return .75;let t=g.get(e),i=Number.parseFloat(t?.inlineStyle?.["stroke-width"]??"");return(Number.isFinite(i)&&i>0?i:n.nodeLineWidth)/2})),b=new Map,w=new Map(t.map(e=>[e,Math.max(0,...[...e.ids].map(e=>o.get(e)??0))])),M=new Map;for(let e of t)for(let t of e.ids)b.set(t,e);for(let[t,i]of e.relationships.entries()){e5(d);let e=b.get(i.entity1),o=b.get(i.entity2);if(!e||!o||e===o)continue;let l=e_(i.cardinality1,n.lineWidth),h=e_(i.cardinality2,n.lineWidth);if(!l||!h)throw new ez(i.entity1,i.entity2);let p=ew(s,"relationship",{category:i.identifying?"identifying":"non-identifying"},{includeFallback:!1})?.bendRadius??n.edgeBendRadius,y=e=>Math.max(0,e.x1,-e.x0,e.y1,-e.y0)+p,c=y(l)+y(h)+2*(n.lineWidth+.25),f=i.label?Math.max(a[t][r?"height":"width"]+56,a[t][r?"height":"width"]+20+c):c,g=c+(i.label?a[t][r?"width":"height"]+20:0);for(let[i,n]of[[e,o],[o,e]]){let e=M.get(i)??new Map,a=e.get(n);e.set(n,{cross:Math.max(a?.cross??0,f),main:Math.max(a?.main??0,g),indices:[...a?.indices??[],t]}),M.set(i,e)}}let k=new Map(t.map(e=>[e,new Set]));for(let t of e.relationships){e5(d);let e=b.get(t.entity1),i=b.get(t.entity2);e&&i&&e!==i&&k.get(e).add(i)}let v=(e,t)=>{let i=[e],n=new Set;for(;i.length;){e5(d);let e=i.pop();if(e===t)return!0;if(!n.has(e))for(let t of(n.add(e),k.get(e)))e5(d),i.push(t)}return!1},S=new Map(t.map(e=>[e,[]])),R=new Map(t.map(e=>[e,[]]));for(let[e,t]of k)for(let i of t)e5(d),v(i,e)||(S.get(i).push(e),R.get(e).push(i));let $=new Map(t.map(e=>[e,S.get(e).length])),L=t.filter(e=>0===$.get(e)),_="BT"===i||"RL"===i,E=r?"width":"height";for(let e=0;e<L.length;e++){let t=L[e],i=0;for(let e of S.get(t)){e5(d);let n=Math.max(l,M.get(t)?.get(e)?.main??0);i=_?Math.min(i,e.box[c]-n-t.box[c]-t.box[E]):Math.max(i,e.box[c]+e.box[E]+n-t.box[c])}for(let e of(0!==i&&(t.move(r?i:0,r?0:i),u=!0),R.get(t)))e5(d),$.set(e,$.get(e)-1),0===$.get(e)&&L.push(e)}t.sort((e,t)=>e.box[h]-t.box[h]||e.box[c]-t.box[c]);let W=[];for(let e of t){for(let t=0;t<W.length;t++){let t=0;for(let i of W){e5(d);let n=M.get(e)?.get(i),a=f(e),o=f(i),s=m(e),p=m(i),g=(e,t,i)=>(e5(d),e.x0<t.x+t.width+i&&e.x1>t.x-i&&e.y0<t.y+t.height+i&&e.y1>t.y-i),u=a.some(e=>g(e,i.box,p))||o.some(t=>g(t,e.box,s)),b=(e,t,i,n)=>Math.max(0,...e.map(e=>{e5(d);let a=i?(r?e.y1:e.x1)-t[h]-t[y]:t[h]-(r?e.y0:e.x0);return a>0?a+e.overhead+n:0})),k=u?b(o,i.box,!0,s)+b(a,e.box,!1,p):0,v=Math.max(n?.cross??0,w.get(e),w.get(i),k),S=r?"width":"height",R=Math.min(e.box[c]+e.box[S],i.box[c]+i.box[S])-Math.max(e.box[c],i.box[c]),$=Math.min(e.box[h]+e.box[y],i.box[h]+i.box[y])-Math.max(e.box[h],i.box[h]);(R>.5||u||n&&R>-n.main&&n.indices.some(x))&&$>-Math.max(v,l>20?l:0)+.5&&(t=Math.max(t,i.box[h]+i.box[y]+Math.max(l,v)-e.box[h]))}if(0===t)break;e.move(r?0:t,r?t:0),u=!0}W.push(e)}})(L,i),void 0===t||0===L.length)return;let _=p.get(t),E=h.get(_.id)??20,W=Math.min(...L.map(e=>e.box.x))-E,F=Math.min(...L.map(e=>e.box.y))-E-_.headerHeight,z=Math.max(W+(_.labelBlock?.width??eZ(_.label,n).width)+20,Math.max(...L.map(e=>e.box.x+e.box.width))+E)-W,I=Math.max(...L.map(e=>e.box.y+e.box.height))+Math.max(E,r.get(_.id)??0)-F;(_.x!==W||_.y!==F||_.width!==z||_.height!==I)&&(u=!0),Object.assign(_,{x:W,y:F,width:z,height:I})};return w(void 0,e.direction??"LR"),u}function ti(e,t,i){let n=Y(t,i);if(!n)return e;if(0===e.width&&0===e.height)return{...e,...Z(n,40)};let a=n.height;for(let t of e.entities)t.y+=a;for(let t of e.groups)t.y+=a;for(let t of e.relationships){for(let e of t.points)e.y+=a;t.labelPosition&&(t.labelPosition.y+=a)}let r=Math.max(e.width,n.width+80);return{...e,width:r,height:e.height+a,title:Q(n,r,40)}}function tn(e,t,i,n){let a=e.relationships;if(!a.length)return e;let l=(e=1)=>e5(n,e),s=(e,t)=>(l(),e.x0<t.x1&&e.x1>t.x0&&e.y0<t.y1&&e.y1>t.y0),d=new Map([...e.entities,...e.groups].map(e=>[e.id,e])),h=new Set(e.groups.map(e=>e.id));e7(e.entities,e.groups,a,n);let p=[...e.entities.map(e=>{let i=Number.parseFloat(e.inlineStyle?.["stroke-width"]??""),n=(Number.isFinite(i)&&i>0?i:t.nodeLineWidth)/2;return{id:e.id,box:{x0:e.x-n,y0:e.y-n,x1:e.x+e.width+n,y1:e.y+e.height+n}}}),...e.groups.flatMap(e=>{let t=e.x,i=e.y,n=t+e.width,a=i+e.height;return[{id:e.id,group:!0,box:{x0:t,y0:i,x1:n,y1:i+e.headerHeight}},{id:e.id,group:!0,border:!0,box:{x0:t-.75,y0:i-.75,x1:t+.75,y1:a+.75}},{id:e.id,group:!0,border:!0,box:{x0:n-.75,y0:i-.75,x1:n+.75,y1:a+.75}},{id:e.id,group:!0,border:!0,box:{x0:t-.75,y0:i-.75,x1:n+.75,y1:i+.75}},{id:e.id,group:!0,border:!0,box:{x0:t-.75,y0:a-.75,x1:n+.75,y1:a+.75}}]})];l(p.length+d.size);let y=()=>a.flatMap((e,i)=>{if(l(),e.points.length<2)throw new ez(e.entity1,e.entity2);return[0,1].map(n=>{let a=n?e.points.at(-1):e.points[0],r=n?e.points.at(-2):e.points[1],o=eL(a,r,n?e.cardinality2:e.cardinality1,t.lineWidth);if(l(2+(o?.length??0)),!o?.length)throw new ez(e.entity1,e.entity2);return{index:i,end:n,rel:e,id:n?e.entity2:e.entity1,point:a,toward:r,pieces:o}})}),c=(e,t,i,n)=>Math.max(0,...e.map(e=>(l(),n>0?i?e.x1-t.x:e.y1-t.y:i?t.x-e.x0:t.y-e.y0))),f=()=>a.flatMap((e,n)=>{let a=ew(i,"relationship",{category:e.identifying?"identifying":"non-identifying"},{includeFallback:!1}),r=(a?.lineWidth??t.lineWidth)/2,o=a?.bendRadius??t.edgeBendRadius,s=(e,t,i,n)=>{l(),t.y===i.y?i.x>t.x===n?e.x0=n?t.x:i.x:e.x1=n?t.x:i.x:t.x===i.x&&(i.y>t.y===n?e.y0=n?t.y:i.y:e.y1=n?t.y:i.y)};if(o>0&&e.points.length>2){let t=eb(e.points,o,{metric:"manhattan"}).geometry,i=[],a;if("path"!==t.kind||!ed(t.d,e=>{l();let t={x0:e.bounds.x0-r,y0:e.bounds.y0-r,x1:e.bounds.x1+r,y1:e.bounds.y1+r};return!i.length&&e.line&&s(t,e.line[0],e.line[1],!0),a=e.line,i.push({index:n,box:t,first:!1,last:!1,...e.line?{line:e.line}:{}}),!0},()=>(l(),!0)))throw new ez(e.entity1,e.entity2);return i.length&&(i[0].first=!0,i.at(-1).last=!0,a&&s(i.at(-1).box,a[0],a[1],!1)),i}return e.points.slice(1).map((t,i)=>{l();let a=e.points[i];if(a.x!==t.x&&a.y!==t.y||![a.x,a.y,t.x,t.y,r].every(Number.isFinite))throw new ez(e.entity1,e.entity2);let o={x0:Math.min(a.x,t.x)-r,y0:Math.min(a.y,t.y)-r,x1:Math.max(a.x,t.x)+r,y1:Math.max(a.y,t.y)+r};return 0===i&&s(o,a,t,!0),i===e.points.length-2&&s(o,a,t,!1),{index:n,box:o,first:0===i,last:i===e.points.length-2,line:[a,t]}})}),g=eK(e,t,i,n),x=eU(e)??eA(e,t,i,n),u=!1,m=new Map;for(let e of y()){l();let t=e.point.y===e.toward.y?e.toward.x>e.point.x?"E":"W":e.toward.y>e.point.y?"S":"N",i=m.get(e.id)??new Map,n=i.get(t)??[];n.push(e),i.set(t,n),m.set(e.id,i)}let b=[...m.values()].flatMap(e=>[...e.values()].flatMap(e=>e.sort((e,t)=>(l(),(e.point.y===e.toward.y?e.point.y-t.point.y:e.point.x-t.point.x)||2*e.index+e.end-2*t.index-t.end)))),w=new Map(b.map((e,t)=>[2*e.index+e.end,t]));for(let e of(l(2*b.length),b)){l();let a=d.get(e.id),o=e.end?e.rel.points.at(-1):e.rel.points[0],g=e.end?e.rel.points.at(-2):e.rel.points[1],x=g.y===o.y&&g.x!==o.x,m=g.x===o.x&&g.y!==o.y,b=Math.sign(x?g.x-o.x:g.y-o.y),M=x?o.x===(b>0?a.x+a.width:a.x):o.y===(b>0?a.y+a.height:a.y);if(!x&&!m||!M)continue;let k=x?o.y:o.x,v=h.has(e.id)?6:Math.min(t.cornerRadius??0,a.width/2,a.height/2),S=(x?a.y:a.x)+v,R=(x?a.y+a.height:a.x+a.width)-v,$=y(),L=$.find(t=>t.index===e.index&&t.end===e.end),_=$.filter(t=>(l(),!(t.id!==e.id||w.get(2*t.index+t.end)<=w.get(2*e.index+e.end))&&(x?t.point.x===o.x&&t.toward.y===t.point.y&&Math.sign(t.toward.x-t.point.x)===b:t.point.y===o.y&&t.toward.x===t.point.x&&Math.sign(t.toward.y-t.point.y)===b))),E=new Set(_);l(_.length);let W=[...$.filter(t=>(l(),(t.index!==e.index||t.end!==e.end)&&!E.has(t))).flatMap(e=>e.pieces),...f().filter(t=>t.index!==e.index&&!_.some(e=>(l(),e.index===t.index&&(e.end?t.last:t.first)))).map(e=>e.box)],F=[...p.filter(t=>t.id!==e.id||!!t.group!==h.has(e.id)).map(e=>e.box),...W],z=new Set($.filter(t=>t.index===e.index).flatMap(e=>e.pieces));l(z.size);let I=[...p.filter(t=>(t.id!==e.id||!!t.group!==h.has(e.id))&&!t.border).map(e=>e.box),...W.filter(e=>!z.has(e))],C=ew(i,"relationship",{category:e.rel.identifying?"identifying":"non-identifying"},{includeFallback:!1}),T=(C?.lineWidth??t.lineWidth)/2,B=c(L.pieces,o,x,b)+(C?.bendRadius??t.edgeBendRadius)+T+t.lineWidth+.25,N=Math.min(Math.abs(x?g.x-o.x:g.y-o.y),B),P=x?{x:o.x+b*N,y:o.y}:{x:o.x,y:o.y+b*N},H={x0:Math.min(o.x,P.x)-(x?0:T),x1:Math.max(o.x,P.x)+(x?0:T),y0:Math.min(o.y,P.y)-(x?T:0),y1:Math.max(o.y,P.y)+(x?T:0)},D=[...L.pieces.map(e=>({piece:e,occupied:F})),{piece:H,occupied:I}];if(l(F.length+I.length+D.length),k>=S&&k<=R&&!D.some(({piece:e,occupied:t})=>t.some(t=>s(e,t))))continue;let j=$.find(t=>t.index===e.index&&t.end!==e.end),O=j.point.y===j.toward.y;if(x!==O){let n=Math.sign(O?j.toward.x-j.point.x:j.toward.y-j.point.y),a=ew(i,"relationship",{category:e.rel.identifying?"identifying":"non-identifying"},{includeFallback:!1}),r=c(j.pieces,j.point,O,n)+(a?.lineWidth??t.lineWidth)/2+t.lineWidth+.25,o=r+Math.min(a?.bendRadius??t.edgeBendRadius,r),l=O?j.point.x:j.point.y;n>0?S=Math.max(S,l+o):R=Math.min(R,l-o)}let K=Math.max(S,Math.min(k,R)),U=[];for(let{piece:e,occupied:i}of D)for(let n of i){l();let i=x?e.x0:e.y0,a=x?e.x1:e.y1,r=x?n.x0:n.y0;if(i>=(x?n.x1:n.y1)||a<=r)continue;let o=t.lineWidth+.25;U.push([(x?n.y0:n.x0)-((x?e.y1:e.x1)-k)-o,(x?n.y1:n.x1)-((x?e.y0:e.x0)-k)+o])}for(let[e,t]of(U.sort((e,t)=>(l(),e[0]-t[0]||e[1]-t[1])),U))l(),K>e&&K<t&&(K=t);if(K>R){K=Math.max(S,Math.min(k,R));for(let e=U.length-1;e>=0;e--){l();let[t,i]=U[e];K>t&&K<i&&(K=t)}if(K<S)throw new ez(e.rel.entity1,e.rel.entity2)}if(K===k)continue;if(K>R)throw new ez(e.rel.entity1,e.rel.entity2);let A=e.rel.points.map(e=>({...e})),G=e.end?-1:1,q=e.end?A.length-1:0,X=x?"y":"x",Y=o[X],Z=K-Y,Q=q;for(let e=q;e>=0&&e<A.length&&A[e][X]===Y;e+=G)l(),Q=e;if(Q===(e.end?0:A.length-1)){let n=A[0],a=A.at(-1);A[q][X]=K;let o=$.find(t=>t.index===e.index&&0===t.end),l=$.find(t=>t.index===e.index&&1===t.end),s=ew(i,"relationship",{category:e.rel.identifying?"identifying":"non-identifying"},{includeFallback:!1}),d=e=>{let i=Math.sign(x?e.toward.x-e.point.x:e.toward.y-e.point.y),n=c(e.pieces,e.point,x,i)+(s?.lineWidth??t.lineWidth)/2+t.lineWidth+.25;return n+Math.min(s?.bendRadius??t.edgeBendRadius,n)},h=x?"x":"y",p=Math.sign(a[h]-n[h]),y=n[h]+p*d(o),f=a[h]-p*d(l);if((f-y)*p<0)throw new ez(e.rel.entity1,e.rel.entity2);let g=Math.max(Math.min(y,f),Math.min(Math.max(y,f),(n[h]+a[h])/2));e.rel.points=r(x?[n,{x:g,y:n.y},{x:g,y:a.y},a]:[n,{x:n.x,y:g},{x:a.x,y:g},a])}else{for(let e=q;e!==Q+G;e+=G)l(),A[e][X]+=Z;e.rel.points=r(A)}if(!e4(e.rel.points,n))throw new ez(e.rel.entity1,e.rel.entity2);delete e.rel.finalLabelPosition,u=!0}if(u&&(e6(e.entities,e.groups,a,a.map(e=>e.labelBlock??eO(e,t,i)),t,i,n),g=eK(e,t,i,n),x=eU(e)??eA(e,t,i,n)),g.length){l(a.length+g.length);let r=new Set(g),o=new Set(a.flatMap((e,t)=>r.has(e)?[t]:[]));e6(e.entities,e.groups,a,a.map(e=>e.labelBlock??eO(e,t,i)),t,i,n,{indices:o,admit:(a,r)=>(function(e,t,i,n,a,r){let o=e.relationships[t];if(!o.label)return!0;if(r.operations+=e.relationships.length+2*i.length+2,r.operations>4e5)throw new eI;let l={...o,points:i},s=Math.max(e.width,...i.map(e=>e.x+40)),d=Math.max(e.height,...i.map(e=>e.y+40)),h={...e,width:s,height:d,relationships:e.relationships.map((e,i)=>i===t?l:e)},p=[];return eG(h,n,a,r,!0,p),!p.includes(l)})(e,a,r,t,i,n)}),e.width=Math.max(e.width,...a.flatMap(e=>e.points.map(e=>e.x+40))),e.height=Math.max(e.height,...a.flatMap(e=>e.points.map(e=>e.y+40))),eK(e,t,i,n),x=eU(e)??eA(e,t,i,n)}let M=y(),k=f(),v=a.flatMap((e,n)=>{l();let a=x.get(e);if(!e.label||!a)return[];let r=eW(e.labelBlock??eO(e,t,i),a);if(!r)throw new ez(e.entity1,e.entity2);return[{index:n,box:r}]});for(let e of a)if(!e4(e.points,n))throw new ez(e.entity1,e.entity2);for(let t of a)for(let i=1;i<t.points.length;i++){for(let n of e.entities)if(l(),o(t.points[i-1],t.points[i],{...n,label:"",shape:"rectangle"}))throw new ez(t.entity1,t.entity2);for(let n of e.groups)if(l(),n.headerHeight>0&&o(t.points[i-1],t.points[i],{...n,height:n.headerHeight,label:"",shape:"rectangle"}))throw new ez(t.entity1,t.entity2)}let S=(e,t,i,n,r,o)=>{if(h.has(t)!==o)return!1;let s=a[e.index],d=e.first&&s.entity1===t?0:e.last&&s.entity2===t?1:void 0;if(void 0===d)return!1;let p=d?s.points.at(-1):s.points[0],y=d?s.points.at(-2):s.points[1],c=p.y>=i.y+r&&p.y<=i.y+i.height-r,f=p.x>=i.x+r&&p.x<=i.x+i.width-r;return l(),c&&y.y===p.y&&(p.x===i.x&&y.x<p.x&&e.box.x1<=i.x+n||p.x===i.x+i.width&&y.x>p.x&&e.box.x0>=i.x+i.width-n)||f&&y.x===p.x&&(p.y===i.y&&y.y<p.y&&e.box.y1<=i.y+n||p.y===i.y+i.height&&y.y>p.y&&e.box.y0>=i.y+i.height-n)};for(let i of k){let n=a[i.index];for(let a of e.entities){let e=Number.parseFloat(a.inlineStyle?.["stroke-width"]??""),r=(Number.isFinite(e)&&e>0?e:t.nodeLineWidth)/2,o={x0:a.x-r,y0:a.y-r,x1:a.x+a.width+r,y1:a.y+a.height+r};if(s(i.box,o)&&!S(i,a.id,a,r,Math.min(t.cornerRadius??0,a.width/2,a.height/2),!1))throw new ez(n.entity1,n.entity2)}for(let t of e.groups){let e={x0:t.x,y0:t.y,x1:t.x+t.width,y1:t.y+t.headerHeight};if(t.headerHeight>0&&s(i.box,e)&&!S(i,t.id,t,.75,6,!0))throw new ez(n.entity1,n.entity2)}}let R=new Map(M.map(e=>(l(4*e.pieces.length+1),[e,{x0:Math.min(...e.pieces.map(e=>e.x0)),y0:Math.min(...e.pieces.map(e=>e.y0)),x1:Math.max(...e.pieces.map(e=>e.x1)),y1:Math.max(...e.pieces.map(e=>e.y1))}])));for(let e of M)for(let t of M)if(l(),!(2*t.index+t.end<=2*e.index+e.end||!s(R.get(e),R.get(t)))){for(let i of e.pieces)if(t.pieces.some(e=>s(i,e)))throw new ez(e.rel.entity1,e.rel.entity2)}for(let e of M){let t=e.toward.x-e.point.x,i=e.toward.y-e.point.y,n=0===i&&0!==t,a=0===t&&0!==i,r=Math.sign(n?t:i),o=k.find(t=>(l(),t.index===e.index&&(e.end?t.last:t.first)))?.line,d=o&&(e.end?o[0]:o[1]),y=o&&(e.end?o[1]:o[0]);if(!n&&!a||!d||!y||(n?d.y!==y.y||Math.sign(d.x-y.x)!==r:d.x!==y.x||Math.sign(d.y-y.y)!==r)||r*((n?d.x:d.y)-(n?e.point.x:e.point.y))<c(e.pieces,e.point,n,r))throw new ez(e.rel.entity1,e.rel.entity2);for(let t of e.pieces){for(let i of p)if((i.id!==e.id||!!i.group!==h.has(e.id))&&s(t,i.box))throw new ez(e.rel.entity1,e.rel.entity2);for(let i of k)if((i.index!==e.index||!(e.end?i.last:i.first))&&s(t,i.box))throw new ez(e.rel.entity1,e.rel.entity2)}}for(let e of v){let t=a[e.index];for(let i of p)if(s(e.box,i.box))throw new ez(t.entity1,t.entity2);for(let i of M)if(s(e.box,R.get(i))&&i.pieces.some(t=>s(e.box,t)))throw new ez(t.entity1,t.entity2);for(let i of k)if(i.index!==e.index&&s(e.box,i.box))throw new ez(t.entity1,t.entity2);for(let i of v)if(i.index<e.index&&s(e.box,i.box))throw new ez(t.entity1,t.entity2)}return e}var ta=String.raw`[A-Za-z0-9_][\w.-]*(?![\w.-])`,tr=String.raw`"(?:\\.|[^"\\])*"`,to=RegExp(`^${tr}$`),tl=`(?:${tr}|${ta})`,ts=RegExp(`^${ta}$`),td=String.raw`${tl}(?:\[\s*(?:${tr}|[^\]"\r\n]+)\s*\])?(?::::[\w-]+(?:,[\w-]+)*)?`,th=new RegExp(String.raw`^(${tl})(?:\[\s*(?:(${tr})|([^\]"\r\n]+))\s*\])?(?::::([\w-]+(?:,[\w-]+)*))?$`),tp=String.raw`(?:one or zero|zero or one|one or more|one or many|zero or more|zero or many|only one|many\(0\)|many\(1\)|1\+|0\+|many|one|1|u(?=[.\-|])|[|o}{]+)`,ty=String.raw`(?:\|\||\|o|o\||\}o|o\{|\}\||\|\{|\bu(?=[.\-|]))`,tc=RegExp(`^(${td})(?:[ \\t]+(${tp})|(${ty}))(?:([ \\t]*(?:--|\\.\\.|\\.-|-\\.)[ \\t]*)|([ \\t]+(?:optionally to|to)[ \\t]+))(?:(${tp})[ \\t]+|(${ty}))(${td})(?:[ \\t]*:[ \\t]*(.*))?$`,"i");function tf(e,t){let i=e.trim().match(th);if(!i)return null;let n=i[1].startsWith('"')?eB(i[1],"ER entity name",t):i[1],a=void 0!==i[2]?eB(i[2],"ER entity alias",t):i[3]?.trim();return{id:n,...void 0!==a?{alias:a}:{},...i[4]?{className:i[4].replaceAll(","," ")}:{},...i[1].startsWith('"')?{quoted:!0}:{}}}function tg(e,t,i){let n=e.get(t);if(n)for(let e of i)n.push(e);else e.set(t,[...i])}var tx=RegExp(String.raw`^subgraph\s+(${tr}|\S+?)(?:\s*\[([^\]]+)\])?$`,"i"),tu=/#(\d{2}|\d{5}|\d{7});/g;function tm(e){let t="ER_STYLE_ENTITY_";for(;e.includes(t);)t+="_";let i=[],n=e.replace(tu,(e,n)=>{let a=Number(n);return i.push(a<=1114111?String.fromCodePoint(a):"�"),`${t}${i.length-1}_`}),a=RegExp(`${t}(\\d+)_`,"g"),r=e=>e.replace(a,(e,t)=>i[Number(t)]);return Object.fromEntries(Object.entries(I(n)).map(([e,t])=>[r(e),r(t)]))}function tb(e,i,n){let a=t(e);if(a)return{kind:"direction",direction:a};let r=function(e,t){let i=e.match(tx);if(!i)return null;let n=i[1].startsWith('"')?eB(i[1],"ER subgraph id",t):i[1],a=i[2]?.trim();return a?{id:n,title:to.test(a)?eB(a,"ER subgraph title",t):a}:{id:n}}(e,n);if(r)return{kind:"group-open",...r};if("end"===e&&i)return{kind:"end"};let o=e.match(/^classDef\s+([\w,-]+)\s+(.+)$/is);if(o)return{kind:"class-def",names:o[1].split(",").map(e=>e.trim()).filter(Boolean),props:tm(o[2])};let l=function(e,t){let i=/^class[ \t]+/i.exec(e);if(!i)return null;let n=e.slice(i[0].length).trimEnd(),a=n.length,r=[],o=e=>/[A-Za-z0-9_-]/.test(e);for(;a>0;){let e=a;for(;a>0&&o(n[a-1]);)a--;if(a===e)break;r.push(n.slice(a,e));let i=a;for(;a>0&&(" "===n[a-1]||" "===n[a-1]);)a--;if(","===n[a-1]){for(a--;a>0&&(" "===n[a-1]||" "===n[a-1]);)a--;continue}if(a===i||0===a)break;let l=n.slice(0,a).split(",").map(e=>tf(e.trim(),t));return 0===l.length||l.some(e=>null===e)?null:{ids:l.map(e=>e.id),classNames:r.reverse()}}return null}(e,n);if(l)return{kind:"class",...l};if(/^class(?:[ \t]|$)/i.test(e))throw Error(`Invalid ER class assignment: ${e}`);let s=e.match(/^style\s+(.+?)\s+(.+)$/is);if(s){let t=s[1].split(",").map(e=>tf(e.trim(),n));if(t.some(e=>null===e))throw Error(`Invalid ER style assignment: ${e}`);return{kind:"style",ids:t.map(e=>e.id),props:tm(s[2])}}let d=function(e,t){let i=e.match(tc);if(!i)return null;let n=i[2]??i[3];if("1"===n&&/^[ \t]/.test(i[4]??""))return null;let a=tf(i[1],t),r=tf(i[8],t);if(!a||!r)return null;let o=(i[4]??i[5]).trim().replace(/[ \t]+/g," ").toLowerCase();return{entity1:a,entity2:r,leftToken:n,rightToken:i[6]??i[7],identifying:"--"===o||"to"===o,label:function(e,t){let i=e.trim();if(!i.startsWith('"'))return i;if(/^"[^"]*"$/.test(i))return i.slice(1,-1);if(/^"(?:\\.|[^"\\])*"$/.test(i))return t?.(`ER relation label ${i} contains \\", which reads as "`,'write " as #quot;'),eT(i.slice(1,-1));throw P({what:`ER relation label ${i} is not one quoted string`,expectedForm:'one pair of quotes, with " written as #quot;',example:'A ||--o{ B : "says #quot;hi#quot;"'})}(i[9]??"",t),...!function(e){let t=e.replace(/#\w+;/g,"§");if(t.startsWith('"')||/direction\s+(?:TB|BT|LR|RL)/i.test(t))return!1;let i=/^(?:\P{ASCII}|[\w*.-])*/u.exec(t)[0],n=t.slice(i.length);return""===i||/^\d/.test(i)||tv.test(t)||tk.test(t)||/^[^\s"]/.test(n)||(n.match(/"/g)?.length??0)%2==1}(i[9]?.trim()??"")?/^[^"\s][^\s"]*(?:\s+\S|")/.test(i[9]?.trim()??"")?{unquotedWords:!0}:{}:{unreadLabel:!0}}}(e,n);if(d)return{kind:"relation",relation:d};let h=e.match(tw),p=h?tf(h[1],n):null;if(p)return{kind:"block-open",reference:p};let y=tf(e,n);return y?{kind:"entity",reference:y}:null}var tw=RegExp(`^(${td})\\s*\\{`),tM=RegExp(`^${td}`),tk=RegExp(String.raw`^(?:\|\||\|o|o\||\}o|o\{|\}\||\|\{|--|\.\.|\.-|-\.|u(?=[.|-])|1\+|0\+|1(?=\s+[\w"']|--|\.\.|\.-|-\.)|(?:one or zero|zero or one|one or more|one or many|zero or more|zero or many|only one|many\(0\)|many\(1\)|many|one|optionally to|to)(?!\w))`,"i"),tv=/^(?:(?:subgraph|end|style|classDef|class|erDiagram)(?!\w)|direction\s+(?:TB|BT|LR|RL))/i;function tS(e){let t=!1;for(let i=0;i<e.length;i++){let n=e[i];if(t)'"'===n&&(t=!1);else if('"'===n)t=!0;else if("`"===n&&(0===i||/\s/.test(e[i-1]))){let t=e.indexOf("`",i+1);t>i+1&&!/\s/.test(e.slice(i+1,t))&&(i=t)}else if("}"===n)return i}return -1}var tR=/[\w*\u00C0-\uFFFF]/,t$=/^[*A-Za-z_\u00C0-\uFFFF][\w\-[\]().,\u00C0-\uFFFF*]*$/,tL=/^`[^`]+`$/,t_=(e,t=e.text)=>"word"===e.kind&&((t.match(/~/g)?.length??0)>=2||t$.test(t)||tL.test(t))&&!/^(?:PK|FK|UK)\b/i.test(t),tE=e=>"word"===e.kind&&e.text.split(",").every(e=>!e||/^(?:PK|FK|UK)$/i.test(e));function tW(e,t,i,n){let a=e=>e.replace(/^`([^`]+)`(\?)?$/,(e,t,i)=>t+(i??"")),r=void 0===n?void 0:eN(en(n)),o=void 0===n?void 0:eH(n,r,!0);return{type:a(e),name:a(t),keys:i,comment:r,...o?{commentContent:o}:{}}}function tF(e,t,i){let n=(t,i)=>({syntax:t,start:i,end:"block-open"===t.kind?i+tw.exec(e.slice(i))[0].length:e.length}),a=tI(e,t,i);if(a)return a;let r=tb(e,t,i);if(r)return[n(r,0)];let o=[],l=[],s=[{syntax:{kind:"unknown"},start:0,end:e.length}];for(let i=0;i<e.length;){let a=e.slice(i);if(tk.test(a))return s;if(i>0){let e=[],r=tI(a,t,(t,i)=>e.push([t,i]));if(r){o.push(...r.map(e=>({...e,start:e.start+i,end:e.end+i}))),l.push(...e);break}let s=tb(a,t,(t,i)=>e.push([t,i]));if(s){o.push(n(s,i)),l.push(...e);break}}if(tv.test(a))return s;let r=tM.exec(a),d=r&&tf(r[0],(e,t)=>l.push([e,t]));if(!d)return s;o.push({syntax:{kind:"entity",reference:d},start:i,end:i+r[0].length}),i+=r[0].length,i+=e.slice(i).length-e.slice(i).trimStart().length}if(i)for(let[e,t]of l)i(e,t);return o}var tz=/^(?:[^":]|"[^"]*")*?:\s*"[^"]*"/;function tI(e,t,i){let n=tz.exec(e)?.[0].length??-1;if(n<0||!e.slice(n).trim())return null;let a=[],r=(e,t)=>{a.push([e,t])},o,l,s=e.length-e.slice(n).trimStart().length;try{if(o=tb(e.slice(0,n),t,r),o?.kind!=="relation")return null;l=tF(e.slice(s),t,r)}catch{return null}if(l.some(e=>"unknown"===e.syntax.kind))return null;if(i)for(let[e,t]of a)i(e,t);return[{syntax:o,start:0,end:n},...l.map(e=>({...e,syntax:e.syntax,start:e.start+s,end:e.end+s}))]}function tC(e,t){let i=e.get(t);return i||(i={id:t,label:t,attributes:[]},e.set(t,i),R("er")&&L("er","createEntity",i)),i}function tT(e){switch(e.toLowerCase()){case"u":return"parent";case"||":case"only one":case"1":case"one":return"one";case"|o":case"o|":case"one or zero":case"zero or one":return"zero-one";case"}|":case"|{":case"one or more":case"one or many":case"many(1)":case"1+":return"many";case"}o":case"o{":case"zero or more":case"zero or many":case"many(0)":case"0+":case"many":return"zero-many";default:return null}}function tB(e,t,i,n,a,r){let o={stroke:a.edgeStrokeColor??"var(--_line)",strokeWidth:String(a.lineWidth+.25)},l=e$(t,i,n,o);return e.shape({id:r,role:"cardinality",geometry:{kind:"compound",children:l.map(e=>e.geometry)},paint:o,...l.some(e=>e.paint!==o)?{childPaints:l.map(e=>e.paint)}:{},channels:{category:n}})}var tN=C(function(e,t){let{positioned:i,colors:n,resolved:a}=t,r=a.renderOptions,o=n.font??"Inter",l=r.transparent??!1,s=[],d=X(r,eX,a.styleFace),h=`er-${ec(i.width,i.height,i.entities.length,i.relationships.length)}`,p=`${h}-title`,y=`${h}-desc`,c=U(i.accessibilityTitle,i.accessibilityDescription,p,y);s.push(e.documentOpen({id:"prelude",width:i.width,height:i.height,colors:n,transparent:l,font:o,hasMonoFont:!0},K(i.width,i.height,n,l,c)+`
|
|
6
|
-
`+O(o,!0,n.shadow,n.embedFontImport)));let f=[];f.push("<defs>");let g=j(n);for(let t of(g&&f.push(g),f.push("</defs>"),s.push(e.definitions({id:"defs"},f.join(`
|
|
7
|
-
`))),i.accessibilityTitle&&s.push(e.documentContent({id:"acc-title",role:"chrome",nonPaint:"accessibility"},`<title id="${p}">${eo(i.accessibilityTitle)}</title>`)),i.accessibilityDescription&&s.push(e.documentContent({id:"acc-desc",role:"chrome",nonPaint:"accessibility"},`<desc id="${y}">${eo(i.accessibilityDescription)}</desc>`)),i.title&&s.push(e.text(J(i.title,d))),i.groups))s.push(function(e,t,i){let n=i.groupBorderColor??"var(--_node-stroke)",a=i.groupFillColor??"var(--_group-fill)",r=i.groupHeaderFillColor??"var(--_group-hdr)",o=i.groupTextColor??"var(--_text)",l=t.labelBlock??eZ(V(t.label,t.labelContent),i);return e.group({id:`er-group:${t.id}`,role:"group",open:`<g class="er-subgraph" data-id="${es(t.id)}" data-label="${ep(t.label)}"${t.parentId?` data-parent-id="${es(t.parentId)}"`:""}>`,close:"</g>",children:[{node:e.shape({id:`er-group:${t.id}:box`,role:"group",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:6,ry:6},paint:{fill:a,stroke:n,strokeWidth:"1.5"}}),indent:2},{node:e.shape({id:`er-group:${t.id}:header`,role:"group-header",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.headerHeight,rx:6,ry:6},paint:{fill:r,stroke:"none"}}),indent:2},{node:e.text({id:`er-group:${t.id}:label`,role:"label",text:l.text,block:l,x:t.x+10,y:t.y+t.headerHeight/2,fontSize:l.fontSize,anchor:"start",paint:{fill:o}}),indent:2}]})}(e,t,d));let x=new Map,u=new Set(i.groups.map(e=>e.id)),m=e=>({id:e,role:u.has(e)?"group":"entity"});for(let t of i.relationships){let i=`${t.entity1}-${t.entity2}`,n=x.get(i)??0;x.set(i,n+1),s.push(function(e,t,i,n,a,r){let o=t.identifying?"solid":"dashed",l={category:t.identifying?"identifying":"non-identifying"},s=ew(n,"relationship",l,{includeFallback:!1}),d=s?.bendRadius??i.edgeBendRadius,h={endpoints:{from:t.entity1,to:t.entity2,start:{owner:r(t.entity1)},end:{owner:r(t.entity2)}},relationship:{kind:t.identifying?"identifying":"non-identifying"},route:{ownership:"layout",bendRadius:d},labels:t.label?[{text:t.label,textContent:{value:t.label,prepared:ei(V(t.label,t.labelContent))}}]:[]};if(t.points.length<2)return e.connector({id:a,role:"relationship",geometry:{kind:"polyline",points:t.points},lineStyle:"invisible",paint:{},channels:l,...h});let p={className:"er-relationship",data:{cardinality1:t.cardinality1,cardinality2:t.cardinality2,identifying:String(t.identifying),...t.label?{label:em(t.label)}:{}}},y={stroke:s?.strokeColor??i.edgeStrokeColor??"var(--_line)",strokeWidth:String(s?.lineWidth??i.lineWidth),...t.identifying?{}:{strokeDasharray:"6 4"}};if(d>0&&t.points.length>2){let i=eb(t.points,d,{metric:"manhattan"});return e.connector({id:a,role:"relationship",geometry:i.geometry,lineStyle:o,paint:y,channels:l,...h,route:{...h.route,contours:i.contours},attributes:p})}return e.connector({id:a,role:"relationship",geometry:{kind:"polyline",points:t.points},lineStyle:o,paint:y,channels:l,...h,attributes:p})}(e,t,d,a.styleFace,`rel:${i}#${n}`,m))}for(let t of i.entities)s.push(function(e,t,i,n){let{id:a,x:r,y:o,width:l,height:s,headerHeight:d,rowHeight:h,label:p,attributes:y}=t,c=[],f=t.className?` ${es(t.className)}`:"",g=t.className?` data-class="${es(t.className)}"`:"",x=`<g class="entity${f}" data-id="${es(a)}" data-label="${ep(p)}"${g}>`,u=t.inlineStyle??{},m=void 0!==i.nodeTextColor,b=N(t.inlineStyle,n,m?void 0:i.groupHeaderFillColor??"var(--_group-hdr)"),w=N(t.inlineStyle,n,m?void 0:i.nodeFillColor??"var(--_node-fill)"),M=u.fill??i.nodeFillColor??"var(--_node-fill)",k=u.stroke??i.nodeBorderColor??"var(--_node-stroke)",v=Number.parseFloat(u["stroke-width"]??""),S=Number.isFinite(v)&&v>0?v:i.nodeLineWidth,R=u["stroke-dasharray"],$=void 0===R?{}:{strokeDasharray:R};c.push({indent:2,node:e.shape({id:`entity-rect:${a}`,role:"entity",geometry:{kind:"rect",x:r,y:o,width:l,height:s,rx:i.cornerRadius??0,ry:i.cornerRadius??0},paint:{fill:M,stroke:k,strokeWidth:String(S),...$}})});let L=u.fill??i.groupHeaderFillColor??"var(--_group-hdr)",_=eM(r,o,l,d,i.cornerRadius??0);c.push({indent:2,node:e.shape({id:`entity-header:${a}`,role:"group-header",geometry:{kind:"path",d:_},paint:{fill:L,stroke:k,strokeWidth:String(S),...$}})});let E=b(i.nodeTextColor??"var(--_text)"),W=t.labelBlock??eY(V(p,t.labelContent),i),F=W.text;c.push({indent:2,node:e.text({id:`entity-name:${a}`,role:"label",text:F,block:W,x:r+l/2,y:o+d/2,fontSize:i.nodeLabelFontSize,anchor:"middle",paint:{fill:E}})});let z=o+d,I=Math.min(i.nodeLineWidth,q.innerBox);c.push({indent:2,node:e.shape({id:`entity-divider:${a}`,role:"chrome",geometry:{kind:"line",x1:r,y1:z,x2:r+l,y2:z},paint:{stroke:k,strokeWidth:String(I),...$}})});let C=e8(y);for(let n=0;n<y.length;n++)for(let o of function(e,t,i,n,a,r,o,l,s,d){let h=[],p=`attr:${i}:${t.name}`,y=d??eQ(t),c=o.nodeTextColor??"var(--_text-sec)",f=l(c),g=l(o.nodeTextColor??"var(--_text-muted)"),x=0;if(t.keys.length>0){let i=t.keys.join(",");x=y.keys.width+8;let r=n+Math.max(6,o.nodePaddingX/2);h.push(e.shape({id:`${p}:key-badge`,role:"chrome",geometry:{kind:"rect",x:r,y:a-7,width:x,height:14,rx:2,ry:2},paint:{fill:"var(--_key-badge)"}})),h.push(e.text({id:`${p}:key-text`,role:"attribute",text:i,block:y.keys,x:r+x/2,y:a,fontSize:9,anchor:"middle",paint:{fill:c}}))}let u=n+Math.max(8,o.nodePaddingX/2)+(x>0?x+6:0);h.push(e.text({id:`${p}:type`,role:"attribute",text:t.type,block:y.type,x:u,y:a,fontSize:11,anchor:"start",paint:{fill:g},attributes:{className:"mono"}}));let m=n+r-Math.max(8,o.nodePaddingX/2);if(h.push(e.text({id:p,role:"attribute",text:t.name,block:y.name,x:m-s,y:a,fontSize:11,anchor:"end",paint:{fill:f},attributes:{className:"mono"}})),t.comment){let i=ej(t.comment,t.commentContent);h.push(e.text({id:`${p}:comment`,role:"attribute",text:i,block:y.comment,x:m,y:a,fontSize:11,anchor:"end",paint:{fill:g}}))}if(t.comment&&t.comment.length>0){let i=ea(t.comment);return[e.group({id:`${p}:row`,role:"attribute",open:`<g><title>${eo(i)}</title>`,close:"</g>",children:h.map(e=>({node:e,indent:0}))})]}return h}(e,y[n],a,r,z+n*h+h/2,l,i,w,C,t.attributeBlocks?.[n]))c.push({indent:2,node:o});if(0===y.length){let n=w(i.nodeTextColor??"var(--_text-muted)"),o=t.emptyAttributeBlock??eJ();c.push({indent:2,node:e.text({id:`entity-empty:${a}`,role:"attribute",text:o.text,block:o,x:r+l/2,y:z+h/2,fontSize:11,anchor:"middle",paint:{fill:n}})})}return e.group({id:`entity:${a}`,role:"entity",open:x,close:"</g>",children:c})}(e,t,d,n));let b=new Map;for(let t of i.relationships){let i=`${t.entity1}-${t.entity2}`,n=b.get(i)??0;b.set(i,n+1),s.push(...function(e,t,i,n){if(t.points.length<2)return[e.shape({id:n,role:"cardinality",geometry:{kind:"compound",children:[]},paint:{}})];let a=t.points[0],r=t.points[1],o=t.points[t.points.length-1],l=t.points[t.points.length-2];return[tB(e,a,r,t.cardinality1,i,`${n}:1`),tB(e,o,l,t.cardinality2,i,`${n}:2`)]}(e,t,d,`card:${i}#${n}`))}let w=eU(i)??eA(i,d,a.styleFace),M=new Map;for(let t of i.relationships){let i=`${t.entity1}-${t.entity2}`,n=M.get(i)??0;M.set(i,n+1),s.push(...function(e,t,i,n,a,r){if(!t.label||t.points.length<2)return[];let o={category:t.identifying?"identifying":"non-identifying"},l=ew(n,"relationship",o,{includeFallback:!1}),s=l?.fontSize??i.edgeLabelFontSize,d=r??eq(t.points),h=t.labelBlock??eO(t,i,n),p=h.text,y=e.shape({id:`${a}:bg`,role:"chrome",geometry:eE(h,d),paint:{fill:"var(--bg)",stroke:"var(--_inner-stroke)",strokeWidth:"0.5"},channels:o}),c=l?.textColor??i.edgeTextColor??"var(--_text-muted)";return[y,e.text({id:a,role:"label",text:p,block:h,x:d.x,y:d.y,fontSize:s,anchor:"middle",paint:{fill:c},channels:o})]}(e,t,d,a.styleFace,`rel-label:${i}#${n}`,w.get(t)))}return s.push(e.documentClose()),{family:"er",width:i.width,height:i.height,colors:n,transparent:l,parts:s}}),tP=S(eS,{configDiagnostics:e=>c("er",e,eR),normalizeRequest:t=>({renderOptions:function(t,i){if(!t)return i;let n=e(t,"er","nodeSpacing"),a=e(t,"er","rankSpacing");return void 0===n&&void 0===a?i:{...i,nodeSpacing:i.nodeSpacing??n,layerSpacing:i.layerSpacing??a}}(t.source.frontmatter,t.renderOptions)}),layout:e=>{let t=f(function(e,t){if(!t)return e;let i=g(t,["er","layoutDirection"]),n="string"==typeof i&&/^(TB|TD|BT|LR|RL)$/i.test(i)?i.toUpperCase():void 0;return void 0===e.direction&&void 0!==n?{...e,direction:n}:e}(W(function(e){let t=D(e);E(t),e=t.familyLines;let i={entities:[],classDefs:new Map,relationships:[],groups:[],...void 0!==t.accessibility.title?{accessibilityTitle:en(t.accessibility.title)}:{},...void 0!==t.accessibility.descr?{accessibilityDescription:en(t.accessibility.descr)}:{}};R("er")&&($("er","header",e[0]??"",{line:1,unit:"normalized"}),L("er","initialize",i));let n=function(e,t){let i,n,a,r,o,l,s,p,y,c,f=new Map,g=function(e,t,i){let n=[],a=0,r,o=e.findLastIndex(e=>e.includes('"')),l=t=>{let i=t.tokens[0],a=t.tokens.at(-1);n.push({syntax:"type"===t.last?{kind:"unknown"}:{kind:"attribute",attribute:function({tokens:e}){let t=+(e[1]?.text==="?"),i=e.slice(2+t).filter(e=>"word"===e.kind).flatMap(e=>e.text.split(",")).filter(Boolean).map(e=>e.toUpperCase()),n=e.find(e=>"comment"===e.kind);return tW(e[0].text+(t?"?":""),e[1+t].text,i,n?.text.slice(1,-1))}(t),text:function(e,{tokens:t}){return t.map((i,n)=>{let a=t[n-1];return a?((a.endLine??a.line)===i.line?e[i.line].slice(a.end,i.start):" ")+i.text:i.text}).join("")}(e,t),...!function({tokens:e}){let t=+(e[1]?.text==="?"),i=e.slice(2+t).filter(e=>"word"===e.kind).map(e=>e.text).join(" ");return""===i||/^(?:PK|FK|UK)(?:\s*,\s*(?:PK|FK|UK))*$/i.test(i)}(t)?{generous:!0}:{}},line:i.line,start:i.start,endLine:a.endLine??a.line,end:a.end})};for(let s=0;s<e.length;s++){let p=e[s],y=p.trim(),c=[],f=0,g=r?.comment;if(g&&y&&!y.startsWith("%%")){let e=p.indexOf('"');if(g.parts.push((e<0?p:p.slice(0,e)).trim()),i?.set(s,e<0?p.length:e+1),e<0)continue;c.push({kind:"comment",text:`"${g.parts.join(`
|
|
8
|
-
`)}"`,line:g.line,start:g.start,endLine:s,end:e+1}),r.comment=void 0,f=e+1}else if(!y||y.startsWith("%%")){n.push({syntax:{kind:y?"comment":"blank"},line:s,start:0,endLine:s,end:p.length});continue}let x=p.slice(f),u=f+x.length-x.trimStart().length+h(x.trim()).length,m=e=>{for(;e<u&&/\s/.test(p[e]);)e++;return e};for(let e=m(f);e<u||c.length>0;)if(r){let t=tS(p.slice(e,u)),i=t<0?u:e+t,a=[...c.splice(0),...function(e,t,i,n){let a=e.slice(i,n),r=new Map,o=[];for(let e=0,t=!1;e<a.length;e++)if('"'===a[e])t=!t;else{if("~"!==a[e]||t)continue;tR.test(a[e+1]??"")?o.push(e):o.length>0&&r.set(o.pop(),e)}let l=e=>{let t=e;for(;t<a.length&&!/[\s"]/.test(a[t]);)t++;return t},s=[],d=(e,n,r)=>{s.push({kind:e,text:a.slice(n,r),line:t,start:i+n,end:i+r})};for(let e=0;e<a.length;)if(/\s/.test(a[e]))e++;else if('"'===a[e]){let t=a.indexOf('"',e+1);d(t<0?"stray":"comment",e,t<0?e+1:t+1),e=t<0?e+1:t+1}else{let t=l(e),i=a.slice(e,t).indexOf("~"),n=i<0?void 0:r.get(e+i);void 0!==n&&n>=t&&(t=l(n+1)),d("word",e,t),e=t}return s}(p,s,e,i)],h=s<o?a.findIndex(e=>"stray"===e.kind):-1;h>=0&&(r.comment={line:s,start:a[h].start,parts:[p.slice(a[h].start+1,u).trimEnd()]},a=a.slice(0,h));let y=function(e,t){let i=[],n=e&&{tokens:[...e.tokens],last:e.last};for(let e of t)if(n?.last==="type")if("?"!==e.text||1!==n.tokens.length||n.tokens[0].text.endsWith("?"))if(!t_(e))return null;else n={tokens:[...n.tokens,e],last:"name"};else n.tokens.push(e);else if(n?.last==="name"&&tE(e))n.tokens.push(e);else if(n?.last==="name"&&"comment"===e.kind)n={tokens:[...n.tokens,e],last:"comment"};else{if(!t_(e,e.text.replace(/\?$/,"")))return null;n&&i.push(n),n={tokens:[e],last:"type"}}return{done:i,...n?{open:n}:{}}}(r.open,a);if(y){for(let e of y.done)l(e);r.open=y.open}else{r.open&&l(r.open),r.open=void 0,r.comment=void 0;let t=p.slice(e,i).trimEnd(),a=function(e){let t=e.match(/^(\S+)\s+(\S+)(?:\s+(.+))?$/);if(!t||/^(?:"|(?:PK|FK|UK)\b)/i.test(t[1])||!t.slice(1,3).every(e=>/[^\W_]|[\u00C0-\uFFFF]/.test(e))||d(e)>=0||tS(e)>=0)return null;let i=t[1],n=t[2],a=t[3]?.trim()??"",r=a.match(/"([^"]*)"/),o=[];for(let e of a.replace(/"[^"]*"/,"").trim().split(/[\s,]+/)){let t=e.toUpperCase();if("PK"===t||"FK"===t||"UK"===t)o.push(t);else if(e)return null}return tW(i,n,o,r?.[1])}(t);n.push({syntax:a?{kind:"attribute",attribute:a,text:t,generous:!0}:{kind:"unknown"},line:s,start:e,endLine:s,end:e+t.length})}if(t<0)break;r.open&&l(r.open),n.push({syntax:{kind:"block-close"},line:s,start:i,endLine:s,end:i+1}),r=void 0,e=m(i+1)}else{let i=tF(p.slice(e,u),a>0,t?(e,i)=>t(e,i,s):void 0);for(let{syntax:t,start:o,end:l}of i)n.push({syntax:t,line:s,start:e+o,endLine:s,end:e+l}),"group-open"===t.kind?a++:"end"===t.kind?a--:"block-open"===t.kind&&(r={});e=m(e+i.at(-1).end)}}return n.sort((e,t)=>e.line-t.line||e.start-t.start)}(e,void 0,f),x=[],u=new Set;for(let e=g.length-1;e>=0;e--)x[e]=u.has(g[e].endLine),u.add(g[e].line);let m=new Map,b=[],w=(i=[],n=new Set,a=new Map,r=[],o=new Set,l=[],s=new Map,p=H(),y=e=>{n.has(e)||(n.add(e),i.push(e))},{open(e){if(o.has(e))throw Error(`Duplicate ER subgraph id '${e}'`);o.add(e),r.push(e),l.push({id:e,names:[]})},close(){let e=l.pop();if(!e)throw Error("ER `end` closes no subgraph");s.set(e.id,p.close(e.id,e.names)),l.at(-1)?.names.push(e.id)},get innermost(){return l.at(-1)?.id},declare:c=(e,t)=>{y(e),void 0===t||a.has(e)||a.set(e,t),l.at(-1)?.names.push(e)},relationEnd:(e,t)=>!o.has(e)&&(c(e,t),!0),style:y,created:e=>n.has(e),finish(){let e=l.at(-1);if(e)throw P({what:`ER subgraph '${e.id}' is never closed`,expectedForm:"each subgraph closed by an end line",example:`subgraph G
|
|
9
|
-
A
|
|
10
|
-
end`});let t=new Map;for(let e of[...i,...r]){let i=p.ownerOf(e);void 0!==i&&t.set(e,i)}return{order:i,alias:a,owner:t,groups:r.map(e=>({id:e,...t.has(e)?{parentId:t.get(e)}:{},entityIds:s.get(e).filter(e=>n.has(e))}))}}}),M;for(let[t,{syntax:i,line:n,endLine:a,end:r}]of g.entries()){let o=m.get(n)??0,l=x[t]?r:e[a].length;m.set(a,l);let s=n===a?e[n].slice(o,l):[e[n].slice(o),...e.slice(n+1,a),e[a].slice(0,l)].join(`
|
|
11
|
-
`),d={line:n,column:o,endLine:a,endColumn:l,...void 0!==w.innermost?{groupId:w.innermost}:{},...void 0!==M?{entityId:M}:{}},h={raw:s,...d,syntax:i};switch(b.push(h),R("er")&&$("er",i.kind,h.raw,{line:n+2,unit:"normalized"}),i.kind){case"group-open":w.open(i.id),R("er")&&L("er","openGroup",{id:i.id,enclosingGroupId:d.groupId},{line:n+2,unit:"normalized"});break;case"end":w.close(),R("er")&&L("er","closeGroup",{id:d.groupId,enclosingGroupId:w.innermost},{line:n+2,unit:"normalized"});break;case"block-open":M=i.reference.id,w.declare(M,i.reference.alias),R("er")&&L("er","declareEntity",{...i.reference,groupId:d.groupId},{line:n+2,unit:"normalized"});break;case"block-close":M=void 0;break;case"entity":w.declare(i.reference.id,i.reference.alias),R("er")&&L("er","declareEntity",{...i.reference,groupId:d.groupId},{line:n+2,unit:"normalized"});break;case"relation":h.relationEntityIds=[i.relation.entity1,i.relation.entity2].filter(e=>{let t=w.relationEnd(e.id,e.alias);return R("er")&&L("er","nameRelationshipEndpoint",{...e,isEntity:t,groupId:d.groupId},{line:n+2,unit:"normalized"}),t}).map(e=>e.id);break;case"style":for(let e of i.ids)w.style(e),R("er")&&L("er","ensureStyledEntity",{id:e},{line:n+2,unit:"normalized"})}}if(void 0!==M)throw Error(`ER_UNCLOSED_ENTITY: entity '${M}' needs a closing }`);let k=w.finish();return R("er")&&L("er","resolvePlacement",k),{statements:b,placement:k,continuedComments:f}}(e.slice(1)),a=new Map,r=new Map,o=(e,t)=>{let i=tC(a,e);return t&&(tg(r,e,t.split(" ")),R("er")&&L("er","appendEntityClasses",{id:e,classNames:r.get(e)})),i},l=e=>o(e.id,e.className),s=new Map;for(let e of n.statements){let t=e.syntax;switch(t.kind){case"unknown":throw Error(`ER_UNSUPPORTED_STATEMENT: line ${e.line+2}: ${e.raw.trim()}`);case"attribute":a.get(e.entityId).attributes.push(t.attribute),R("er")&&L("er","addAttribute",{entityId:e.entityId,attribute:t.attribute},{line:e.line+2,unit:"normalized"});break;case"direction":{let n=void 0!==e.groupId?s.get(e.groupId):void 0;n?n.direction=t.direction:i.direction=t.direction,R("er")&&L("er","setDirection",{direction:t.direction,groupId:n?.id},{line:e.line+2,unit:"normalized"});break}case"group-open":s.set(t.id,{id:t.id,...eD(t.title??t.id,!0)}),R("er")&&L("er","upsertGroup",s.get(t.id),{line:e.line+2,unit:"normalized"});break;case"end":break;case"class-def":for(let n of t.names)i.classDefs.set(n,{...t.props}),R("er")&&L("er","setClassDefinition",{name:n,props:i.classDefs.get(n)},{line:e.line+2,unit:"normalized"});break;case"class":for(let i of t.ids)a.has(i)&&(tg(r,i,t.classNames),R("er")&&L("er","appendEntityClasses",{id:i,classNames:r.get(i)},{line:e.line+2,unit:"normalized"}));break;case"style":for(let i of t.ids){let n=tC(a,i);n.inlineStyle={...n.inlineStyle,...t.props},R("er")&&L("er","setEntityStyle",{id:i,props:n.inlineStyle},{line:e.line+2,unit:"normalized"})}break;case"block-open":case"entity":l(t.reference);break;case"relation":for(let n of(i.relationships.push(function(e,t){let i=tT(e.leftToken),n=tT(e.rightToken);if(!i||!n)throw Error(`Invalid ER cardinality "${e.leftToken}${e.identifying?"--":".."}${e.rightToken}" in "${t}" (valid tokens include ||, |o, o|, }o, o{, }|, |{ and Mermaid's word/numeric aliases)`);return{entity1:e.entity1.id,entity2:e.entity2.id,cardinality1:i,cardinality2:n,...eD(e.label,!0),identifying:e.identifying}}(t.relation,e.raw)),R("er")&&L("er","addRelationship",i.relationships.at(-1),{line:e.line+2,unit:"normalized"}),[t.relation.entity1,t.relation.entity2]))e.relationEntityIds.includes(n.id)&&o(n.id,n.className)}}let p=n.placement;for(let[e,t]of r)a.get(e).className=t.join(" "),R("er")&&L("er","resolveEntityClasses",{id:e,className:a.get(e).className});return i.entities=p.order.map(e=>{var t;let i=a.get(e);Object.assign(i,void 0!==(t=p.alias.get(e))?eD(t,!0):ts.test(e)?{label:e}:eD(e,!0));let n=p.owner.get(e);return R("er")&&L("er","resolveEntity",{...i,groupId:n}),void 0!==n?{...i,groupId:n}:i}),i.groups=p.groups.map(e=>{let t={...s.get(e.id),...void 0!==e.parentId?{parentId:e.parentId}:{},entityIds:e.entityIds};return R("er")&&L("er","resolveGroup",t),t}),z(i),i}(e.source.familyLines),e.source.accessibility),e.source.frontmatter),e.source.frontmatter);return B(t.classDefs,t.entities),v(function(e,t={},r){z(e);let o=X(t,eX,r),l={operations:0},s=e=>{try{return e()}catch(i){if(t.graphLayout?.backend!=="agentic"||"elk"!==t.graphLayout.fallback||!(i instanceof ez||i instanceof eF||i instanceof eI))throw i;let e=new eh([{strategy:"er-final-geometry",violations:[i.message]}]);throw e.cause=i,e}};if(0===e.entities.length){let i=()=>e.groups.length?tn(ti(eV(function(e,t,i,n={operations:0}){let a=e.relationships.map(e=>eO(e,t,i)),r=e0(e,a),o=te(e,t,i,n),l=(e.direction??"LR")==="LR"||(e.direction??"LR")==="RL",s="RL"===e.direction||"BT"===e.direction,d=e.groups.filter(e=>!e.parentId),h=s?[...d].reverse():d,p=[],y=(i,n,a)=>{let s=eZ(V(i.label,i.labelContent),t),d=t.groupHeaderFontSize+16+s.height-s.lineHeight,h={id:i.id,label:i.label,...i.labelContent?{labelContent:i.labelContent}:{},labelBlock:s,...i.parentId?{parentId:i.parentId}:{},x:n,y:a,width:Math.max(160,s.width+20),height:Math.max(100,d+20),headerHeight:d};p.push(h);let c=o.get(i.id)??20,f=n+c,g=a+d+c;for(let t of e.groups.filter(e=>e.parentId===i.id)){let e=y(t,f,g);h.width=Math.max(h.width,e.x+e.width-n+c),h.height=Math.max(h.height,e.y+e.height-a+Math.max(c,r.padding.get(i.id)??0)),l?f+=e.width+20:g+=e.height+Math.max(20,r.exits.get(t.id)??0)}return h},c=40,f=40;for(let e of h){let t=y(e,c,f);l?c+=t.width+40:f+=t.height+30}tt(e,[],p,t,a,r.padding,r.exits,20,i,n,o);let g=new Map(p.map(e=>[e.id,e])),x=e.relationships.map((e,t)=>{let i=g.get(e.entity1),n=g.get(e.entity2),a=[];return i&&n&&r.lanes.has(t)?a.push(...e1(i,n,r.lanes.get(t))):i&&n&&a.push(...e9(i,n)),{entity1:e.entity1,entity2:e.entity2,cardinality1:e.cardinality1,cardinality2:e.cardinality2,label:e.label,...e.labelContent?{labelContent:e.labelContent}:{},identifying:e.identifying,points:a}});e6([],p,x,a,t,i,n);let u=x.flatMap(e=>e.points),m=e2(x,a),b=Math.max(0,40-Math.min(...p.map(e=>e.x),...u.map(e=>e.x)),...m.map(e=>-e.x0)),w=Math.max(0,40-Math.min(...p.map(e=>e.y),...u.map(e=>e.y)),...m.map(e=>-e.y0));for(let e of p)e.x+=b,e.y+=w;for(let e of u)e.x+=b,e.y+=w;return{width:Math.max(...p.map(e=>e.x+e.width+40),...u.map(e=>e.x+40),...m.map(e=>e.x1+b),0),height:Math.max(...p.map(e=>e.y+e.height+40),...u.map(e=>e.y+40),...m.map(e=>e.y1+w),0),accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,entities:[],relationships:x,groups:p}}(e,o,r,l),o,r),e.title,o),o,r,l):ti({width:0,height:0,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,entities:[],relationships:[],groups:[]},e.title,o);return eg(t,()=>s(i),()=>(e5(l,0),i()),!0)}let d=function(e,t){let i=new Map;for(let n of e.entities){let e=eY(V(n.label,n.labelContent),t),a=e.width,r=0===n.attributes.length?eJ().width:0,o=e8(n.attributes);for(let e of n.attributes){let t=eQ(e),i=e.keys.length?t.keys.width+14:0,n=t.type.width+t.name.width+i+12+o;n>r&&(r=n)}let l=Math.max(140,a+2*t.nodePaddingX,r+2*Math.max(8,t.nodePaddingX)),s=Math.max(34,e.height+2*t.nodePaddingY),d=s+22*Math.max(n.attributes.length,1);i.set(n.id,{width:l,height:d,headerHeight:s})}return i}(e,o),h=t=>tn(ti(eV(function(e,t,i,n,a,r={operations:0}){let o=new Map;for(let e of t.entities)o.set(e.id,e);let l=[],s=T(t.classDefs.get("default"),"classDef default");for(let n of e.entities){let e=o.get(n.id);if(e){let a={...s};for(let i of e.className?.split(/[ \t]+/)??[])Object.assign(a,T(t.classDefs.get(i),`classDef ${i}`));l.push({id:e.id,label:e.label,...e.labelContent?{labelContent:e.labelContent}:{},attributes:e.attributes,x:n.x??0,y:n.y??0,width:n.width??i.get(e.id).width,height:n.height??i.get(e.id).height,headerHeight:i.get(e.id).headerHeight,rowHeight:22,...e.className?{className:e.className}:{},...Object.keys(a).length>0||e.inlineStyle?{inlineStyle:{...a,...T(e.inlineStyle,`style ${e.id}`)}}:{},...e.groupId?{groupId:e.groupId}:{}})}}let d=new Map(l.map(e=>[e.id,{x:e.x,y:e.y,width:e.width,height:e.height}])),h=t.relationships.map(e=>eO(e,n,a)),p=e0(t,h),y=te(t,n,a,r);!function(e,t,i,n,a,r){let o=new Set;for(let l of e.groups){if(!l.direction)continue;let s=l.entityIds.map(e=>t.find(t=>t.id===e)).filter(e=>!!e);if(s.length<2)continue;for(let e of s)o.add(e.id);let d="LR"===l.direction||"RL"===l.direction,h="RL"===l.direction||"BT"===l.direction?[...s].reverse():s,p=new Set(s.map(e=>e.id)),y=Math.max(48,...e.relationships.flatMap((e,t)=>{if(e5(r),!p.has(e.entity1)||!p.has(e.entity2))return[];let o=e_(e.cardinality1,n.lineWidth),l=e_(e.cardinality2,n.lineWidth);if(e5(r,2),!o||!l)throw new ez(e.entity1,e.entity2);let s=ew(a,"relationship",{category:e.identifying?"identifying":"non-identifying"},{includeFallback:!1})?.bendRadius??n.edgeBendRadius,h=Math.max(18,o.x1)+Math.max(18,l.x1)+2*s+2*(n.lineWidth+.25);return[Math.max(e.label?i[t][d?"width":"height"]+56:0,h+(e.label?i[t][d?"width":"height"]+20:0))]})),c=Math.min(...s.map(e=>e.x)),f=Math.min(...s.map(e=>e.y)),g=d?c:f;for(let e of h)d?(e.x=g,e.y=f,g+=e.width+y):(e.x=c,e.y=g,g+=e.height+y)}}(t,l,h,n,a,r);let c=function(e,t,i,n,a){let r=[];for(let o of[...e.groups].reverse()){let e=[...t.filter(e=>e.groupId===o.id),...r.filter(e=>e.parentId===o.id)],l=a.get(o.id)??20,s=eZ(V(o.label,o.labelContent),i),d=i.groupHeaderFontSize+16+s.height-s.lineHeight,h=e.length?Math.min(...e.map(e=>e.x))-l:40,p=e.length?Math.min(...e.map(e=>e.y))-l-d:40,y=Math.max(h+s.width+20,e.length?Math.max(...e.map(e=>e.x+e.width))+l:h+140),c=e.length?Math.max(...e.map(e=>e.y+e.height))+Math.max(l,n.get(o.id)??0):p+90;r.unshift({id:o.id,label:o.label,...o.labelContent?{labelContent:o.labelContent}:{},labelBlock:s,...o.parentId?{parentId:o.parentId}:{},x:h,y:p,width:y-h,height:c-p,headerHeight:d})}return r}(t,l,n,p.padding,y),f=e.preserveTerminalNormals?20+2*Math.max(n.edgeBendRadius,...t.relationships.map(e=>ew(a,"relationship",{category:e.identifying?"identifying":"non-identifying"},{includeFallback:!1})?.bendRadius??n.edgeBendRadius)):20;tt(t,l,c,n,h,p.padding,p.exits,f,a,r,y);let g=new Map;l.forEach(e=>g.set(e.id,e)),c.forEach(e=>g.set(e.id,e));let x=e.routes,u=[];for(let i=0;i<t.relationships.length;i++){let n=t.relationships[i],a=g.get(n.entity1),r=g.get(n.entity2),o=d.get(n.entity1),l=d.get(n.entity2),s=a&&o?a.x-o.x:void 0,y=a&&o?a.y-o.y:void 0,c=void 0!==s&&void 0!==y&&r&&l&&.001>Math.abs(r.x-l.x-s)&&.001>Math.abs(r.y-l.y-y)&&a.width===o.width&&a.height===o.height&&r.width===l.width&&r.height===l.height?x.get(i):void 0,f=[],m;if(a&&r&&p.lanes.has(i))f.push(...e1(a,r,p.lanes.get(i)));else if(c?.length){f.push(...c.map(e=>({x:e.x+s,y:e.y+y})));let t=e.labelPositions?.get(i);t&&(m={x:t.x+s,y:t.y+y})}else a&&r&&f.push(...e9(a,r));u.push({entity1:n.entity1,entity2:n.entity2,cardinality1:n.cardinality1,cardinality2:n.cardinality2,label:n.label,...n.labelContent?{labelContent:n.labelContent}:{},labelBlock:h[i],identifying:n.identifying,points:f,...m?{labelPosition:m}:{}})}e6(l,c,u,h,n,a,r);let m=[...l.flatMap(e=>[e.x,e.x+e.width]),...c.flatMap(e=>[e.x,e.x+e.width]),...u.flatMap(e=>e.points.map(e=>e.x))],b=[...l.flatMap(e=>[e.y,e.y+e.height]),...c.flatMap(e=>[e.y,e.y+e.height]),...u.flatMap(e=>e.points.map(e=>e.y))],w=e2(u,h),M=Math.max(0,m.length?40-Math.min(...m):0,...w.map(e=>-e.x0)),k=Math.max(0,b.length?40-Math.min(...b):0,...w.map(e=>-e.y0));if(0!==M||0!==k){for(let e of l)e.x+=M,e.y+=k;for(let e of c)e.x+=M,e.y+=k;for(let e of u){for(let t of e.points)t.x+=M,t.y+=k;e.labelPosition&&(e.labelPosition.x+=M,e.labelPosition.y+=k)}}return{width:Math.max((e.width??600)+M,...l.map(e=>e.x+e.width+40),...c.map(e=>e.x+e.width+40),...u.flatMap(e=>e.points.map(e=>e.x+40)),...w.map(e=>e.x1+M)),height:Math.max((e.height??400)+k,...l.map(e=>e.y+e.height+40),...c.map(e=>e.y+e.height+40),...u.flatMap(e=>e.points.map(e=>e.y+40)),...w.map(e=>e.y1+k)),accessibilityTitle:t.accessibilityTitle,accessibilityDescription:t.accessibilityDescription,entities:l,relationships:u,groups:c,...e.labelPlacement?{labelPlacement:e.labelPlacement}:{}}}(t,e,d,o,r,l),o,r),e.title,o),o,r,l);return eg(t,()=>s(()=>h((()=>{let i=new Map(e.entities.map((e,t)=>[e.id,t])),n=new Set(e.groups.map(e=>e.id)),s=new Set([...i.keys(),...n]),h=new Map,p=t.layerSpacing??90,y=0;for(let t of e.relationships){let e=ew(r,"relationship",{category:t.identifying?"identifying":"non-identifying"},{includeFallback:!1});for(let[i,a]of[[t.entity1,t.cardinality1],[t.entity2,t.cardinality2]]){let r=e_(a,o.lineWidth);if(e5(l),!r)throw new ez(t.entity1,t.entity2);let s=r.x1+(e?.lineWidth??o.lineWidth)/2+o.lineWidth+.25,d=s+Math.min(e?.bendRadius??o.edgeBendRadius,s);y=Math.max(y,d),p=Math.max(p,4*d),n.has(i)||h.set(i,(h.get(i)??0)+r.y1-r.y0+o.lineWidth+.25)}}let c=new Map(e.entities.map(e=>{let t=d.get(e.id),i=(h.get(e.id)??0)+2*Math.max(8,o.cornerRadius??0);return[e.id,{...t,width:Math.max(t.width,i),height:Math.max(t.height,i)}]})),f=e.relationships.flatMap((e,t)=>{let a=n.has(e.entity1)?void 0:i.get(e.entity1),l=n.has(e.entity2)?void 0:i.get(e.entity2);if(!s.has(e.entity1)||!s.has(e.entity2))throw Error("ER relationship references an undeclared entity or frame");if(void 0===a||void 0===l)return[];let d=eO(e,o,r);return[{relationshipIndex:t,source:a,target:l,minSpan:1,...e.label?{label:{width:d.width+16,height:d.height+16}}:{}}]}),g=el("agentic",()=>a({nodes:e.entities.map(e=>({id:e.id,...c.get(e.id)})),edges:f,direction:e.direction??"LR",padding:40,nodeSpacing:t.nodeSpacing??70,layerSpacing:p,...y>0?{minimumTerminalLead:y}:{},edgeSpacing:Math.max(6,o.lineWidth+4)}));return{width:g.width,height:g.height,preserveTerminalNormals:!0,labelPlacement:"shaft-aware",entities:g.nodes.map((t,i)=>({id:e.entities[i].id,...t,...c.get(e.entities[i].id)})),routes:new Map(g.edges.map((e,t)=>[f[t].relationshipIndex,e.points])),labelPositions:new Map(g.edges.flatMap((e,t)=>e.labelPosition?[[f[t].relationshipIndex,{...e.labelPosition}]]:[]))}})())),()=>h((()=>{e5(l,0);let{elkGraph:a}=function(e,t,i,n,a={operations:0}){let r=X(t,eX,n),o=0,l=new Map;for(let t of e.relationships){let e=ew(n,"relationship",{category:t.identifying?"identifying":"non-identifying"},{includeFallback:!1});for(let[n,s]of[[t.entity1,t.cardinality1],[t.entity2,t.cardinality2]]){e5(a,12);let d=e_(s,r.lineWidth);if(!d)throw new ez(t.entity1,t.entity2);o=Math.max(o,d.x1+(e?.bendRadius??r.edgeBendRadius)+(e?.lineWidth??r.lineWidth)/2),i.has(n)&&l.set(n,(l.get(n)??0)+d.y1-d.y0+r.lineWidth+.25)}}let s={id:"root",layoutOptions:{"elk.algorithm":"layered","elk.direction":eu(e.direction??"LR"),"elk.spacing.nodeNode":String(t.nodeSpacing??70),"elk.layered.spacing.nodeNodeBetweenLayers":String(t.layerSpacing??90),"elk.padding":"[top=40,left=40,bottom=40,right=40]","elk.edgeRouting":"ORTHOGONAL",...o>10?{"elk.layered.spacing.edgeNodeBetweenLayers":String(o)}:{},"elk.edgeLabels.placement":"CENTER"},children:[],edges:[]};for(let t of e.entities){let e=i.get(t.id),n=(l.get(t.id)??0)+2*Math.max(8,r.cornerRadius??0);e5(a),s.children.push({id:t.id,width:Math.max(e.width,n),height:Math.max(e.height,n)})}let d=new Set(e.entities.map(e=>e.id));for(let t=0;t<e.relationships.length;t++){let i=e.relationships[t];if(!d.has(i.entity1)||!d.has(i.entity2))continue;let a={id:`e${t}`,sources:[i.entity1],targets:[i.entity2]};if(i.label){let e=eO(i,r,n);a.labels=[{text:e.text,width:e.width+8,height:e.height+6}]}s.edges.push(a)}return{elkGraph:s,entitySizes:i}}(e,t,d,r,l),o=i(a);return{width:o.width,height:o.height,entities:o.children??[],routes:new Map((o.edges??[]).map(e=>{let t=e.sections?.[0];return[Number(e.id.slice(1)),t?n([t.startPoint,...t.bendPoints??[],t.endPoint]):[]]}))}})()),!0)}(t,e.renderOptions,e.styleFace))},projectPositioned:M(function({positioned:e,options:t}){let i=e.entities.map(e=>({id:e.id,x:x(e.x),y:x(e.y),w:u(e.x,e.width),h:u(e.y,e.height),shape:"rectangle",label:e.label,...w(e.labelBlock,e.x+e.width/2,e.y+e.headerHeight/2,{...e,height:e.headerHeight})})),n=new Map(e.entities.map(e=>[e.id,{x:e.x,y:e.y,width:e.width,height:e.height}])),a=eU(e);if("shaft-aware"===e.labelPlacement&&!a)throw Error("ER_LABEL_LAYOUT_MISSING: project the complete native family layout artifact");let r=a??eA(e,X({},eX));return{version:1,nodes:i,edges:e.relationships.map((e,i)=>{let a=r.get(e);return{id:`rel#${i}:${e.entity1}->${e.entity2}`,from:e.entity1,to:e.entity2,path:e.points.map(e=>[x(e.x),x(e.y)]),label:e.label&&a?{x:x(a.x),y:x(a.y),text:e.label,bounds:b(e.labelBlock,a.x,a.y)}:void 0,route:t.debug?m("er",i,e.points,n.get(e.entity1),n.get(e.entity2)):void 0}}),groups:e.groups.map(t=>({id:t.id,x:x(t.x),y:x(t.y),w:u(t.x,t.width),h:u(t.y,t.height),members:[...e.entities.filter(e=>e.groupId===t.id).map(e=>e.id),...e.groups.filter(e=>e.parentId===t.id).map(e=>e.id)],label:t.label,parentId:t.parentId})),bounds:{w:x(e.width),h:x(e.height)}}}),lowerScene:k(tN)});export{tP as default};
|