zombie-mermaid 2.2.2 → 2.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +4 -4
  2. package/dist/ascii.cjs +8 -8
  3. package/dist/ascii.cjs.map +1 -1
  4. package/dist/ascii.js +1137 -1070
  5. package/dist/ascii.js.map +1 -1
  6. package/dist/cli.js +3380 -3295
  7. package/dist/index.cjs +59 -52
  8. package/dist/index.cjs.map +1 -1
  9. package/dist/index.js +1780 -1712
  10. package/dist/index.js.map +1 -1
  11. package/dist/mcp.cjs +246 -52
  12. package/dist/mcp.cjs.map +1 -1
  13. package/dist/mcp.js +246 -52
  14. package/dist/mcp.js.map +1 -1
  15. package/package.json +25 -21
  16. package/packages/ascii-renderer/src/canvas.ts +7 -4
  17. package/packages/ascii-renderer/src/class-diagram.ts +192 -12
  18. package/packages/ascii-renderer/src/draw-arrows.ts +79 -35
  19. package/packages/ascii-renderer/src/sequence.ts +42 -8
  20. package/packages/ascii-renderer/src/shapes/hexagon.ts +7 -3
  21. package/packages/ascii-renderer/src/shapes/special.ts +12 -4
  22. package/packages/core/src/generated/mono-font-subset.ts +32 -0
  23. package/packages/core/src/text-metrics.ts +22 -0
  24. package/packages/core/src/theme.ts +29 -13
  25. package/packages/mermaid-parser/src/xychart/parser.ts +44 -1
  26. package/src/__tests__/ascii-arrowhead-direction-1083.test.ts +51 -0
  27. package/src/__tests__/ascii-class-box-occupancy.test.ts +82 -43
  28. package/src/__tests__/ascii-class-detour-label-routing-487.test.ts +8 -8
  29. package/src/__tests__/ascii-class-parent-alignment-971.test.ts +139 -0
  30. package/src/__tests__/ascii-class-parent-alignment-972.test.ts +208 -0
  31. package/src/__tests__/ascii-draw-arrows-coverage.test.ts +56 -0
  32. package/src/__tests__/ascii-edge-ending-glyphs.test.ts +3 -3
  33. package/src/__tests__/ascii-sequence-form-invariants.test.ts +51 -0
  34. package/src/__tests__/text-metrics.test.ts +13 -0
  35. package/src/__tests__/theme.test.ts +30 -0
  36. package/src/__tests__/workspace-package-boundaries.test.ts +2 -2
  37. package/src/__tests__/xychart-parser-categories.test.ts +78 -0
  38. package/src/cli/html-viewer.ts +5 -0
package/dist/ascii.cjs CHANGED
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e,t){let n=e.match(/^click\s+([\w\p{L}-]+)\s+(.*)$/iu);if(!n)return;let r=n[1],i=n[2].trim(),a={...t.get(r)},o=i.match(/^(?:call|callback)\s+(.+?)\s*$/i);if(o){let e=o[1].match(/^(.*?\))\s+"([^"]*)"\s*$/);e?(a.callback=e[1].trim(),a.tooltip=e[2]):a.callback=o[1].trim(),t.set(r,a);return}i=i.replace(/^href\s+/i,``);let s=[...i.matchAll(/"([^"]*)"/g)].map(e=>e[1]);s.length>0&&(a.href=s[0]),s.length>1&&(a.tooltip=s[1]);let c=i.match(/(_blank|_self|_parent|_top)\s*$/i);c&&(a.target=c[1].toLowerCase()),(a.href!==void 0||a.tooltip!==void 0)&&t.set(r,a)}function t(e){if(!e||/[\x00-\x1F\x7F]/.test(e))return;let t=e.trim();if(/^[./#?]/.test(t))return t;let n=t.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):/)?.[1];return n===void 0||/^(https?|mailto)$/i.test(n)?t:void 0}var n=/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/,r=/^rgba?\(\s*([\d.]+%?)\s*[, ]\s*([\d.]+%?)\s*[, ]\s*([\d.]+%?)\s*(?:[,/]\s*([\d.]+%?)\s*)?\)$/i;function i(e){let t=n.exec(e.trim());if(!t)return null;let r=t[1];if(r===void 0)return null;let i=r;return(i.length===3||i.length===4)&&(i=i.split(``).map(e=>e+e).join(``)),{r:parseInt(i.slice(0,2),16),g:parseInt(i.slice(2,4),16),b:parseInt(i.slice(4,6),16),a:i.length===8?parseInt(i.slice(6,8),16)/255:1}}function a(e){return e.endsWith(`%`)?Number(e.slice(0,-1))/100*255:Number(e)}function o(e){return e===void 0?1:e.endsWith(`%`)?Number(e.slice(0,-1))/100:Number(e)}function s(e){let t=e.trim();if(t.toLowerCase()===`transparent`)return{r:0,g:0,b:0,a:0};let n=i(t);if(n)return n;let s=r.exec(t);if(s){let[,e,t,n,r]=s;if(e===void 0||t===void 0||n===void 0)return null;let i={r:a(e),g:a(t),b:a(n),a:o(r)};return[i.r,i.g,i.b,i.a].some(e=>Number.isNaN(e))?null:i}return null}function c(e,t,n,r){let i,a;n===void 0&&r===void 0?(i=50,a=50):n===void 0?(a=r??50,i=100-a):r===void 0?(i=n,a=100-i):(i=n,a=r);let o=i+a;if(o===0)return null;let s=o<100?o/100:1;i/=o,a/=o;let c=e.a*i+t.a*a,l=(n,r)=>c===0?0:(n*e.a*i+r*t.a*a)/c;return{r:l(e.r,t.r),g:l(e.g,t.g),b:l(e.b,t.b),a:c*s}}function l(e,t,n){let r=s(e),i=s(t);if(!r||!i)return e;let a=c(r,i,n,100-n);return a?d(a):e}var u=e=>Math.min(255,Math.max(0,Math.round(e)));function d(e){let t=u(e.r),n=u(e.g),r=u(e.b),i=Math.min(1,Math.max(0,e.a));return i>=1?`#`+[t,n,r].map(e=>e.toString(16).padStart(2,`0`)).join(``):`rgba(${t}, ${n}, ${r}, ${Number(i.toFixed(3))})`}var f=/^[&#](?:#?[0-9]+|#?[xX][0-9a-fA-F]+|[a-zA-Z][a-zA-Z0-9]*);/,p=new Set([`&`,`#`]);function m(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];if(t!==null){r===t&&(t=null);continue}if(r===`"`||r===`'`){t=r;continue}if(p.has(r)){let t=f.exec(e.slice(n));if(t){n+=t[0].length-1;continue}}if(r===`%`&&e[n+1]===`%`)return n}return-1}function h(e){let t=[],n=``,r=null;for(let i=0;i<e.length;i++){let a=e[i];if(r!==null){n+=a,a===r&&(r=null);continue}if(a===`"`||a===`'`){r=a,n+=a;continue}if(p.has(a)){let t=f.exec(e.slice(i));if(t){n+=t[0],i+=t[0].length-1;continue}}if(a===`;`){t.push(n),n=``;continue}n+=a}return t.push(n),t}function g(e){let t=[],n=e.split(`
2
- `);for(let e=0;e<n.length;e++){let r=n[e].trim(),i=e+1,a=m(r);if(a!==-1&&(r=r.slice(0,a).trim()),r.length===0)continue;let o=[];for(let e of h(r)){let t=e.trim();t.length!==0&&o.push({text:t,line:i})}o.length>0&&t.push(o)}return t}function _(e){return g(e).flat()}function v(e){let t=_(e)[0]?.text.toLowerCase()??``;return/^xychart(?:-beta)?(?:\s|$)/.test(t)?`xychart`:/^sequencediagram\s*$/.test(t)?`sequence`:/^classdiagram\s*$/.test(t)?`class`:/^erdiagram\s*$/.test(t)?`er`:`flowchart`}function y(e){return e===`TD`||e===`TB`||e===`LR`||e===`BT`||e===`RL`}function b(e){let t=e?.toUpperCase();if(t===void 0||!y(t))throw Error(`Invalid direction: "${e}"`);return t}function x(e,t){return t===void 0||!y(t)?e:{...e,direction:t}}var S=new Set([`linear`,`basis`,`natural`,`step`,`stepBefore`,`stepAfter`]),C={theme:"colors come from the caller's bg/fg render options, which are usually CSS variables so a diagram inherits the host page's light/dark. A diagram-supplied theme would hard-code colors that fight it. Mermaid's theme names (default/dark/forest/neutral) also have no equivalent in this renderer's palettes — pass `bg`/`fg`, or a THEMES entry, instead",securitylevel:`this renderer emits static SVG and never executes diagram-supplied script, so there is no sandbox to configure`,defaultrenderer:`ELK is the only layout engine; dagre/elk selection has no effect`,fontfamily:"use the `font` render option instead",htmllabels:`labels are always rendered as SVG text; there is no HTML label mode`,maxtextsize:`no text-size limit is enforced`,startonload:`not a browser auto-render integration`},w=/^\s*%%\{\s*(?:init|initialize)\s*:\s*([\s\S]*?)\}%%/i;function T(e){let t=``,n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n!==null){if(i===`\\`&&r+1<e.length){let n=e[r+1];t+=n===`'`?`'`:`\\${n}`,r++}else i===n?(n=null,t+=`"`):t+=i===`"`?`\\"`:i;continue}if(i===`"`||i===`'`){n=i,t+=`"`;continue}if(/[A-Za-z_$]/.test(i)){let n=r;for(;n<e.length&&/[\w$-]/.test(e[n]);)n++;let i=e.slice(r,n),a=n;for(;a<e.length&&/\s/.test(e[a]);)a++;if(e[a]===`:`){t+=`"${i}"`,r=n-1;continue}t+=/^(true|false|null)$/i.test(i)?i.toLowerCase():`"${i}"`,r=n-1;continue}t+=i}return t}function E(e){let t=e.match(w);if(!t)return;let n;try{n=JSON.parse(T(t[1]))}catch{return}if(typeof n!=`object`||!n)return;let r={ignored:[]},i={...n};for(let[e,t]of Object.entries(i)){let n=e.toLowerCase();if(n===`theme`&&typeof t==`string`){r.theme=t,r.ignored.push(e);continue}if(n===`flowchart`&&typeof t==`object`&&t){let e={...t};for(let[t,n]of Object.entries(e)){if(t.toLowerCase()===`curve`&&typeof n==`string`){S.has(n)&&(r.curve=n);continue}t.toLowerCase()in C&&r.ignored.push(t)}continue}n in C&&r.ignored.push(e)}return r}function D(e){let t={ignored:[]};for(let n of e){let e=E(n);e&&(e.theme!==void 0&&(t.theme=e.theme),e.curve!==void 0&&(t.curve=e.curve),t.ignored.push(...e.ignored))}return t}function O(e){return e>=4352&&e<=4447||e>=11904&&e<=12031||e>=12032&&e<=12255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=12544&&e<=12591||e>=12592&&e<=12687||e>=12688&&e<=12799||e>=12800&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=44032&&e<=55215||e>=63744&&e<=64255||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072}var ee=/\p{Emoji_Presentation}/u,k=/\p{Extended_Pictographic}/u;function A(e){return e>=9632&&e<=9727}function te(e){if(ee.test(e))return!0;let t=e.codePointAt(0);return t!==void 0&&A(t)?!1:k.test(e)}function j(e){let t=e.codePointAt(0);return t===void 0?!1:O(t)||te(e)}function M(e){let t=e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1):e;return(t.length>=2&&t.startsWith("`")&&t.endsWith("`")?t.slice(1,-1):t).replace(/<br\s*\/?>/gi,`
2
+ `);for(let e=0;e<n.length;e++){let r=n[e].trim(),i=e+1,a=m(r);if(a!==-1&&(r=r.slice(0,a).trim()),r.length===0)continue;let o=[];for(let e of h(r)){let t=e.trim();t.length!==0&&o.push({text:t,line:i})}o.length>0&&t.push(o)}return t}function _(e){return g(e).flat()}function v(e){let t=_(e)[0]?.text.toLowerCase()??``;return/^xychart(?:-beta)?(?:\s|$)/.test(t)?`xychart`:/^sequencediagram\s*$/.test(t)?`sequence`:/^classdiagram\s*$/.test(t)?`class`:/^erdiagram\s*$/.test(t)?`er`:`flowchart`}function y(e){return e===`TD`||e===`TB`||e===`LR`||e===`BT`||e===`RL`}function b(e){let t=e?.toUpperCase();if(t===void 0||!y(t))throw Error(`Invalid direction: "${e}"`);return t}function x(e,t){return t===void 0||!y(t)?e:{...e,direction:t}}var S=new Set([`linear`,`basis`,`natural`,`step`,`stepBefore`,`stepAfter`]),C={theme:"colors come from the caller's bg/fg render options, which are usually CSS variables so a diagram inherits the host page's light/dark. A diagram-supplied theme would hard-code colors that fight it. Mermaid's theme names (default/dark/forest/neutral) also have no equivalent in this renderer's palettes — pass `bg`/`fg`, or a THEMES entry, instead",securitylevel:`this renderer emits static SVG and never executes diagram-supplied script, so there is no sandbox to configure`,defaultrenderer:`ELK is the only layout engine; dagre/elk selection has no effect`,fontfamily:"use the `font` render option instead",htmllabels:`labels are always rendered as SVG text; there is no HTML label mode`,maxtextsize:`no text-size limit is enforced`,startonload:`not a browser auto-render integration`},w=/^\s*%%\{\s*(?:init|initialize)\s*:\s*([\s\S]*?)\}%%/i;function T(e){let t=``,n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n!==null){if(i===`\\`&&r+1<e.length){let n=e[r+1];t+=n===`'`?`'`:`\\${n}`,r++}else i===n?(n=null,t+=`"`):t+=i===`"`?`\\"`:i;continue}if(i===`"`||i===`'`){n=i,t+=`"`;continue}if(/[A-Za-z_$]/.test(i)){let n=r;for(;n<e.length&&/[\w$-]/.test(e[n]);)n++;let i=e.slice(r,n),a=n;for(;a<e.length&&/\s/.test(e[a]);)a++;if(e[a]===`:`){t+=`"${i}"`,r=n-1;continue}t+=/^(true|false|null)$/i.test(i)?i.toLowerCase():`"${i}"`,r=n-1;continue}t+=i}return t}function E(e){let t=e.match(w);if(!t)return;let n;try{n=JSON.parse(T(t[1]))}catch{return}if(typeof n!=`object`||!n)return;let r={ignored:[]},i={...n};for(let[e,t]of Object.entries(i)){let n=e.toLowerCase();if(n===`theme`&&typeof t==`string`){r.theme=t,r.ignored.push(e);continue}if(n===`flowchart`&&typeof t==`object`&&t){let e={...t};for(let[t,n]of Object.entries(e)){if(t.toLowerCase()===`curve`&&typeof n==`string`){S.has(n)&&(r.curve=n);continue}t.toLowerCase()in C&&r.ignored.push(t)}continue}n in C&&r.ignored.push(e)}return r}function D(e){let t={ignored:[]};for(let n of e){let e=E(n);e&&(e.theme!==void 0&&(t.theme=e.theme),e.curve!==void 0&&(t.curve=e.curve),t.ignored.push(...e.ignored))}return t}function O(e){return e>=4352&&e<=4447||e>=11904&&e<=12031||e>=12032&&e<=12255||e>=12288&&e<=12351||e>=12352&&e<=12447||e>=12448&&e<=12543||e>=12544&&e<=12591||e>=12592&&e<=12687||e>=12688&&e<=12799||e>=12800&&e<=13311||e>=13312&&e<=19903||e>=19968&&e<=40959||e>=44032&&e<=55215||e>=63744&&e<=64255||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072}var ee=/\p{Emoji_Presentation}/u,te=/\p{Extended_Pictographic}/u;function k(e){return e>=9632&&e<=9727}function ne(e){return e>=8596&&e<=8601||e===8617||e===8618}function A(e){if(ee.test(e))return!0;let t=e.codePointAt(0);return t!==void 0&&k(t)||t!==void 0&&ne(t)?!1:te.test(e)}function j(e){let t=e.codePointAt(0);return t===void 0?!1:O(t)||A(e)}function M(e){let t=e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1):e;return(t.length>=2&&t.startsWith("`")&&t.endsWith("`")?t.slice(1,-1):t).replace(/<br\s*\/?>/gi,`
3
3
  `).replace(/\\n/g,`
4
- `).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,``).replace(/\*\*(.+?)\*\*/g,`<b>$1</b>`).replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,`<i>$1</i>`).replace(/~~(.+?)~~/g,`<s>$1</s>`)}function ne(e){return e.replace(/<\/?(?:b|strong|i|em|u|s|del)\s*>/gi,``)}function N(e){let t=e.replace(/;\s*$/,``),n={};for(let e of t.split(`,`)){let t=e.indexOf(`:`);if(t>0){let r=e.slice(0,t).trim(),i=e.slice(t+1).trim();r&&i&&(n[r]=i)}}return n}function P(e,t){let n=e.match(/^classDef\s+([\w,-]+)\s+(.+)$/);if(!n)return!1;let r=N(n[2]);for(let e of n[1].split(`,`)){let n=e.trim();n&&t.classDefs.set(n,r)}return!0}function re(e,t){let n=e.match(/^class\s+([\w,-]+)\s+([\w-]+)\s*;?\s*$/);if(!n)return!1;let r=n[2];for(let e of n[1].split(`,`))t.classAssignments.set(e.trim(),r);return!0}function ie(e,t){let n=e.match(/^cssClass\s+"([^"]*)"\s+([\w-]+)\s*;?\s*$/);if(!n)return!1;let r=n[2];for(let e of n[1].split(`,`)){let n=e.trim();n&&t.classAssignments.set(n,r)}return!0}function F(e,t){let n=e.match(/^style\s+([\w,-]+)\s+(.+)$/);if(!n)return!1;let r=N(n[2]);for(let e of n[1].split(`,`).map(e=>e.trim()))t.nodeStyles.set(e,{...t.nodeStyles.get(e),...r});return!0}function I(e){let t=e.match(/^(.+?):::([\w][\w-]*)$/);return t?{id:t[1],className:t[2]}:{id:e}}var ae={text:100,textSec:60,textMuted:40,textFaint:25,line:50,arrow:85,nodeFill:3,nodeStroke:20,groupHeader:5,innerStroke:12,keyBadge:10},oe=`<\\|--|<\\|\\.\\.|\\*--|o--|-->|--\\*|--o|--\\|>|\\.\\.>|\\.\\.\\|>|<--|<\\.\\.?|--`,L=new RegExp(oe);function se(t){let n={classes:[],relationships:[],namespaces:[],interactions:new Map,classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,notes:[]},r=new Map,i=null,a=null,o=0,s;for(let l=1;l<t.length;l++){let u=t[l],d=u.text;if(a&&o>0){if(d===`}`){o--,o===0&&(a=null,s=void 0);continue}let e=d.match(/^<<(\w+)>>$/);if(e){a.annotation=e[1];continue}if(d.startsWith(`<<`))throw Error(`Line ${u.line}: Malformed class annotation "${d}" — expected "<<name>>" (e.g. "<<interface>>").`);R(a,d,u.line);continue}if(/^click\s+/i.test(d)){e(d,n.interactions);continue}let f=d.match(/^note\s+(?:for\s+(\S+)\s+)?"([^"]*)"\s*$/);if(f){let e=f[1];n.notes.push({text:M(f[2]),...e?{forClass:e}:{}});continue}if(P(d,n)||F(d,n)||ie(d,n)||re(d,n))continue;let p=d.match(/^namespace\s+(\S+)\s*\{$/);if(p){i={name:p[1],classIds:[]};continue}if(d===`}`&&i){n.namespaces.push(i),i=null;continue}let m=d.match(/^class\s+(\S+?)(?:\s*~(\w+)~)?\s*\{$/);if(m){let e=c(m[1],m[2]);a=r.get(e)??null,o=1,s=u.line;continue}let h=d.match(/^class\s+(\S+?)(?:\s*~(\w+)~)?\s*$/);if(h){c(h[1],h[2]);continue}let g=d.match(/^class\s+(\S+?)\s*\{\s*(.*?)\s*\}$/);if(g){let e=c(g[1],void 0),t=r.get(e),n=g[2],i=n.match(/^<<(\w+)>>$/);if(t&&i)t.annotation=i[1];else if(t&&n.startsWith(`<<`))throw Error(`Line ${u.line}: Malformed class annotation "${n}" — expected "<<name>>" (e.g. "<<interface>>").`);else t&&n&&R(t,n,u.line);continue}let _=d.match(/^(\S+?)\s*:\s*(.+)$/);if(_){let e=_[2];if(!e.match(/<\|--|--|\*--|o--|-->|\.\.>|\.\.\|>/)){R(ce(r,_[1]),e,u.line);continue}}let v=pe(d);if(v){v.from=c(v.from,void 0,!1),v.to=c(v.to,void 0,!1),n.relationships.push(v);continue}if(L.test(d))throw Error(`Line ${u.line}: Malformed class-diagram relationship "${d}". Expected "FROM ARROW TO" (optionally with cardinalities and a ": label"), e.g. "Animal <|-- Dog" or 'A "1" --> "*" B : label'. ARROW must be one of <|--, <|.., *--, o--, -->, --*, --o, --|>, ..>, ..|>, <--, <.., or --.`)}if(a!==null)throw Error(`Line ${s}: Unclosed class body for "${a.id}" — expected a closing "}" before the diagram ends.`);return n.classes=[...r.values()],n;function c(e,t,a=!0){let{id:o,className:s}=I(e),c=o,l=t;if(!l){let e=o.match(/^(.+?)~(\w+)~$/);e&&(c=e[1],l=e[2])}let u=ce(r,c);return l&&(u.label=`${c}<${l}>`),s&&n.classAssignments.set(c,s),a&&i&&i.classIds.push(c),c}}function R(e,t,n){let r=fe(t,n);r&&(r.isMethod?e.methods.push(r.member):e.attributes.push(r.member))}function ce(e,t){let n=e.get(t);return n||(n={id:t,label:t,attributes:[],methods:[]},e.set(t,n)),n}function le(e,t){return Math.max(0,e.split(t).length-1)}function ue(e){let t=le(e,`~`);if(t<=1)return e;let n=e,r=!1;t%2!=0&&n.startsWith(`~`)&&(n=n.slice(1),r=!0);let i=[...n],a=i.indexOf(`~`),o=i.lastIndexOf(`~`);for(;a!==-1&&o!==-1&&a!==o;)i[a]=`<`,i[o]=`>`,a=i.indexOf(`~`),o=i.lastIndexOf(`~`);return r&&i.unshift(`~`),i.join(``)}function de(e){let t=e.split(/(,)/),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r===`,`&&e>0&&e+1<t.length){let i=t[e-1],a=t[e+1];le(i,`~`)===1&&le(a,`~`)===1&&(r=`${i},${a}`,e++,n.pop())}n.push(ue(r))}return n.join(``)}function fe(e,t){let n=e.trim().replace(/;$/,``);if(!n)return null;let r=``,i=n,a=i[0];if((a===`+`||a===`-`||a===`#`||a===`~`)&&(r=a,i=i.slice(1).trim()),i.includes(`(`)&&!i.includes(`)`))throw Error(`Line ${t}: Malformed class member "${n}" — unclosed "(" in a method signature. Expected e.g. "+eat() void" or "+eat(Food f) void".`);let o=i.match(/^(.+?)\(([^)]*)\)(?:\s*(.+))?$/);if(o){let e=de(o[1].trim()),t=o[2]?.trim(),n=t?de(t):void 0,a=o[3]?.trim(),s=a?de(a):void 0,c=e.endsWith(`$`)||i.includes(`$`),l=e.endsWith(`*`)||i.includes(`*`);return{member:{visibility:r,name:e.replace(/[$*]$/,``),type:s||void 0,isStatic:c,isAbstract:l,isMethod:!0,params:n},isMethod:!0}}let s=de(i).split(/\s+/),c,l;s.length>=2?(l=s[0],c=s.slice(1).join(` `)):c=s[0]??i;let u=c.endsWith(`$`),d=c.endsWith(`*`);return{member:{visibility:r,name:c.replace(/[$*]$/,``),type:l||void 0,isStatic:u,isAbstract:d,isMethod:!1},isMethod:!1}}function pe(e){let t=e.match(RegExp(`^(\\S+?)\\s+(?:"([^"]*?)"\\s+)?(${oe})\\s+(?:"([^"]*?)"\\s+)?(\\S+?)(?::::([\\w][\\w-]*))?(?:\\s*:\\s*(.+))?$`));if(!t)return null;let n=t[1],r=t[2],i=r?M(r):void 0,a=t[3].trim(),o=t[4],s=o?M(o):void 0,c=t[6]?`${t[5]}:::${t[6]}`:t[5],l=t[7]?.trim(),u=l?M(l):void 0,d=me(a);return d?{from:n,to:c,type:d.type,markerAt:d.markerAt,label:u,fromCardinality:i,toCardinality:s}:null}function me(e){switch(e.trim()){case`<|--`:return{type:`inheritance`,markerAt:`from`};case`--|>`:return{type:`inheritance`,markerAt:`to`};case`<|..`:return{type:`realization`,markerAt:`from`};case`..|>`:return{type:`realization`,markerAt:`to`};case`*--`:return{type:`composition`,markerAt:`from`};case`--*`:return{type:`composition`,markerAt:`to`};case`o--`:return{type:`aggregation`,markerAt:`from`};case`--o`:return{type:`aggregation`,markerAt:`to`};case`-->`:return{type:`association`,markerAt:`to`};case`<--`:return{type:`association`,markerAt:`from`};case`..>`:return{type:`dependency`,markerAt:`to`};case`<..`:return{type:`dependency`,markerAt:`from`};case`--`:return{type:`association`,markerAt:`to`};default:return null}}function he(e){return`${e.visibility?`${e.visibility} `:``}${e.isMethod?`${e.name}(${e.params||``})`:e.name}${e.type?`: ${e.type}`:``}`}function z(e){let t={entities:[],relationships:[]},n=new Map,r=null;for(let i=1;i<e.length;i++){let a=e[i],o=a.text;if(r){if(o===`}`){r=null;continue}let e=_e(o);e&&r.attributes.push(e);continue}let s=o.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(s){t.direction=b(s[1]);continue}let c=o.match(/^(\S+?)(?:\[(.+)\])?\s*\{(.*)$/);if(c){let e=c[1],t=c[2],i=ge(n,e,t===void 0?void 0:M(t.trim().replace(/^["']|["']$/g,``))),a=c[3].trim(),o=a.endsWith(`}`),s=o?a.slice(0,-1).trim():a;for(let e of s.split(`;`).map(e=>e.trim()).filter(Boolean)){let t=_e(e);t&&i.attributes.push(t)}o||(r=i);continue}let l=ve(o,a.line);if(l){ge(n,l.entity1),ge(n,l.entity2),t.relationships.push(l);continue}}return t.entities=[...n.values()],t}function ge(e,t,n){let r=e.get(t);return r?n!==void 0&&(r.label=n):(r={id:t,label:n??t,attributes:[]},e.set(t,r)),r}function _e(e){let t=e.match(/^(\S+)\s+(\S+)(?:\s+(.+))?$/);if(!t)return null;let n=t[1],r=t[2],i=t[3]?.trim()??``,a=[],o,s=i.match(/"([^"]*)"/);s&&(o=M(s[1]));let c=i.replace(/"[^"]*"/,``).trim();for(let e of c.split(/\s+/)){let t=e.toUpperCase();(t===`PK`||t===`FK`||t===`UK`)&&a.push(t)}return{type:n,name:r,keys:a,comment:o}}function ve(e,t){let n=e.match(/^(\S+)\s+(\S*(?:--|\.\.)\S*)\s+(\S+)\s*(?::\s*(.*))?$/);if(!n)return null;let r=n[1],i=n[2],a=n[3],o=n[4]!==void 0,s=n[4]?.trim()??``,c=i.match(/^([|o}{]*)(--|\.\.?)([|o}{]*)$/),l=c?ye(c[1]):null,u=c?be(c[3]):null;if(!l||!u)throw Error(`Line ${t}: Invalid ER relationship cardinality "${i}" in "${e}". Left side must be one of ||, |o, }|, }o; right side must be one of ||, o|, |{, o{ (e.g. "||--o{").`);if(!o||s.length===0)throw Error(`Line ${t}: ER relationship "${r} ${i} ${a}" is missing a ": label" — expected e.g. "${r} ${i} ${a} : label".`);return{entity1:r,entity2:a,cardinality1:l,cardinality2:u,label:M(s.replace(/^["']|["']$/g,``)),identifying:c[2]===`--`}}function ye(e){return e===`||`?`one`:e===`|o`?`zero-one`:e===`}|`?`many`:e===`}o`?`zero-many`:null}function be(e){return e===`||`?`one`:e===`o|`?`zero-one`:e===`|{`?`many`:e===`o{`?`zero-many`:null}var xe=new Set(`aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen`.split(` `)),Se=/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Ce=/^(?:rgba?|hsla?)\(\s*[\d.%]+(?:[\s,/]+[\d.%]+){2,3}\s*\)$/i;function B(e){return xe.has(e.toLowerCase())||Se.test(e)||Ce.test(e)}function we(e){let t=e.trim(),n=t.match(/^((?:rgba?|hsla?)\s*\([^)]*\)|#[0-9a-fA-F]+|\S+)?(.*)$/),r=n?.[1]??``,i=n?.[2]?.trim()??``;return r.toLowerCase()===`transparent`?{label:i}:r!==``&&B(r)?{color:r,label:i}:{label:t}}function Te(e){return e===`loop`||e===`alt`||e===`opt`||e===`par`||e===`critical`||e===`break`||e===`rect`}function Ee(e){if(!Te(e))throw Error(`Invalid block type: "${e}"`);return e}var De=/^(.+?)\s*(<<->>|<<-->>|--?>?>)\s*([+-]?)(.+?)\s*:\s*(.+)$/,Oe=/^(.+?)\s*(<<->>|<<-->>|--?>?>|--?[)x]|--?>>|--?>)\s*([+-]?)(.+?)\s*:\s*(.+)$/;function ke(e){let t={actors:[],messages:[],blocks:[],notes:[],activations:[],boxes:[]},n={open:void 0,membership:new Map},r=0,i,a=new Set,o=[],s={enabled:!1,next:1,step:1},c,l;for(let u=1;u<e.length;u++){let d=e[u],f=d.text,p=f.match(/^box(?:\s+(.*))?$/);if(p){if(n.open!==void 0)throw Error(`Line ${d.line}: Sequence diagram: a box cannot be nested inside another box — close the open box with "end" first`);let{color:e,label:a}=we(p[1]??``),s={label:M(a),actorIds:[]};e!==void 0&&(s.color=e),t.boxes.push(s),n.open=t.boxes.length-1,r=o.length,i=d.line;continue}let m=f.match(/^create\s+(participant|actor)\s+(\S+?)(?:\s+as\s+(.+))?$/);if(m){let e=m[1]===`actor`?`actor`:`participant`,r=m[2];if(a.has(r))throw Error(`Line ${d.line}: It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior`);a.add(r),t.actors.push({id:r,label:M(m[3]?.trim()??r),type:e}),Me(t,n,r,d.line),c=r;continue}let h=f.match(/^destroy\s+(.+)$/);if(h){let e=h[1].trim();je(t,a,n,e,d.line),l=e;continue}let g=f.match(/^autonumber(?:\s+(off|\d+(?:\.\d{1,2})?)(?:\s+(\d+(?:\.\d{1,2})?))?)?$/);if(g){let e=g[1],t=g[2];e===`off`?s.enabled=!1:(s.enabled=!0,s.next=e===void 0?1:Number(e),s.step=t===void 0?1:Number(t));continue}let _=f.match(/^(participant|actor)\s+(\S+?)(?:\s+as\s+(.+))?$/);if(_){let e=_[1]===`actor`?`actor`:`participant`,r=_[2],i=M(_[3]?.trim()??r);a.has(r)||(a.add(r),t.actors.push({id:r,label:i,type:e})),Me(t,n,r,d.line);continue}let v=f.match(/^Note\s+(left of|right of|over)\s+([^:]+):\s*(.+)$/i);if(v){let e=v[1].toLowerCase(),r=v[2].trim(),i=M(v[3].trim()),o=r.split(`,`).map(e=>e.trim());for(let e of o)je(t,a,n,e,d.line);let s=`over`;e===`left of`?s=`left`:e===`right of`&&(s=`right`),t.notes.push({actorIds:o,text:i,position:s,afterIndex:t.messages.length-1});continue}let y=f.match(/^(loop|alt|opt|par|critical|break|rect)\s*(.*)$/);if(y){let e=Ee(y[1]),n=M(y[2]?.trim()??``);o.push({type:e,label:n,startIndex:t.messages.length,dividers:[],line:d.line});continue}let b=f.match(/^(else|and)\s*(.*)$/);if(b&&o.length>0){let e=M(b[2]?.trim()??``);o[o.length-1].dividers.push({index:t.messages.length,label:e});continue}if(f===`end`&&n.open!==void 0&&o.length===r){n.open=void 0,i=void 0;continue}if(f===`end`&&o.length>0){let e=o.pop();t.blocks.push({type:e.type,label:e.label,startIndex:e.startIndex,endIndex:Math.max(t.messages.length-1,e.startIndex),dividers:e.dividers});continue}if(f===`end`)throw Error(`Line ${d.line}: Sequence diagram: "end" does not match any open block ("loop"/"alt"/"opt"/"par"/"critical"/"break"/"rect") or "box" — nothing is currently open to close.`);let x=f.match(/^(activate|deactivate)\s+(.+)$/);if(x){let e=x[2].trim();je(t,a,n,e,d.line),t.activations.push({actorId:e,kind:x[1]===`activate`?`start`:`end`,afterIndex:t.messages.length-1});continue}let S=f.match(De)??f.match(Oe);if(S){let e=S[2],r=S[4][0];if(r===`>`||r===`)`)throw Error(`Line ${d.line}: Malformed sequence-diagram arrow in "${f}" — "${e}${r}" is not a recognized arrow. Expected one of: ->, -->, ->>, -->>, -x, --x, -), --), <<->>, <<-->>.`);Ne(t,a,n,s,S[1],S[2],S[3],S[4],S[5],d.line);let i=t.messages.length-1,o=t.messages[i];if(c!==void 0){if(o.to!==c)throw Error(`Line ${d.line}: The created participant ${c} does not have an associated creating message after its declaration. Please check the sequence diagram.`);Ae(t,c).createdAt=i,c=void 0}if(l!==void 0){if(o.from!==l&&o.to!==l)throw Error(`Line ${d.line}: The destroyed participant ${l} does not have an associated destroying message after its declaration. Please check the sequence diagram.`);Ae(t,l).destroyedAt=i,l=void 0}continue}}if(o.length>0){let e=o[o.length-1];throw Error(`Line ${e.line}: Sequence diagram: unclosed "${e.type}" block — expected a matching "end" before the diagram ends.`)}if(n.open!==void 0){let e=t.boxes[n.open];throw Error(`Line ${i}: Sequence diagram: unclosed "box${e.label?` ${e.label}`:``}" — expected a matching "end" before the diagram ends.`)}return t}function Ae(e,t){let n=e.actors.find(e=>e.id===t);if(n===void 0)throw Error(`Sequence diagram: unknown actor "${t}"`);return n}function je(e,t,n,r,i){t.has(r)||(t.add(r),e.actors.push({id:r,label:r,type:`participant`})),Me(e,n,r,i)}function Me(e,t,n,r){let i=t.open;if(i===void 0)return;let a=t.membership.get(n);if(a!==i){if(a!==void 0){let t=e.boxes[a].label,o=e.boxes[i].label;throw Error(`Line ${r}: A same participant should only be defined in one Box: ${n} can't be in '${t}' and in '${o}' at the same time.`)}t.membership.set(n,i),e.boxes[i].actorIds.push(n)}}function Ne(e,t,n,r,i,a,o,s,c,l){je(e,t,n,i,l),je(e,t,n,s,l);let u=a===`<<->>`||a===`<<-->>`,d=u?a===`<<-->>`?`dashed`:`solid`:a.startsWith(`--`)?`dashed`:`solid`,f=a.includes(`>>`)||a.includes(`x`)?`filled`:`open`,p=a.includes(`x`),m={from:i,to:s,label:M(c.trim()),lineStyle:d,arrowHead:f};p&&(m.isLost=!0),u&&(m.bidirectional=!0),o===`+`&&(m.activate=!0),o===`-`&&(m.deactivate=!0),r.enabled&&(m.seqNumber=r.next,r.next=Math.round((r.next+r.step)*100)/100),e.messages.push(m)}function Pe(e){let t={},n={},r=[],i,a=!1;for(let o of e){let e=o.text;if(/^xychart(-beta)?\b/i.test(e)){/\bhorizontal\b/i.test(e)&&(a=!0);continue}let s=e.match(/^title\s+"([^"]+)"/);if(s){i=s[1];continue}let c=e.match(/^x-axis\s+(?:"([^"]*)"\s*)?\[([^\]]+)\]/);if(c){c[1]&&(t.title=c[1]),t.categories=c[2].split(`,`).map(e=>e.trim());continue}let l=e.match(/^x-axis\s+(?:"([^"]*)"\s+)?(-?\d+(?:\.\d+)?)\s*-->\s*(-?\d+(?:\.\d+)?)/);if(l){l[1]&&(t.title=l[1]),t.range={min:parseFloat(l[2]),max:parseFloat(l[3])};continue}let u=e.match(/^y-axis\s+(?:"([^"]*)"\s+)?(-?\d+(?:\.\d+)?)\s*-->\s*(-?\d+(?:\.\d+)?)/);if(u){u[1]&&(n.title=u[1]),n.range={min:parseFloat(u[2]),max:parseFloat(u[3])};continue}let d=e.match(/^y-axis\s+"([^"]+)"\s*$/);if(d){n.title=d[1];continue}let f=e.match(/^bar\s+\[([^\]]+)\]/);if(f){r.push({type:`bar`,data:Fe(f[1],`bar`,e,o.line)});continue}let p=e.match(/^line\s+\[([^\]]+)\]/);if(p){r.push({type:`line`,data:Fe(p[1],`line`,e,o.line)});continue}let m=e.match(/^(x-axis|y-axis|bar|line|title)\b/i);if(m)throw Le(m[1].toLowerCase(),e,o.line)}if(!n.range&&r.length>0){let e=r.flatMap(e=>e.data),t=Math.min(...e),i=Math.max(...e),a=i-t||1;t-=a*.1,i+=a*.1,t>0&&t<a*.5&&(t=0),n.range={min:t,max:i}}return n.range||={min:0,max:100},{title:i,horizontal:a,xAxis:t,yAxis:n,series:r}}function Fe(e,t,n,r){return e.split(`,`).map((e,i)=>{let a=e.trim(),o=parseFloat(a);if(a.length===0||Number.isNaN(o))throw Error(`Line ${r}: Invalid numeric value ${JSON.stringify(a)} at position ${i+1} in "${n}". Every value in a ${t} [...] list must be a number.`);return o})}var Ie={"x-axis":`x-axis [A, B, C] (categories) or x-axis 0 --> 100 (numeric range), either optionally preceded by a quoted title`,"y-axis":`y-axis 0 --> 100 (numeric range) or y-axis "Title" (title only), optionally preceded by a quoted title before a range`,bar:`bar [10, 20, 30] — a comma-separated numeric array in square brackets`,line:`line [10, 20, 30] — a comma-separated numeric array in square brackets`,title:`title "Chart Title" — a double-quoted string`};function Le(e,t,n){let r=Ie[e]??e;return Error(`Line ${n}: Malformed xychart-beta "${e}" directive: "${t}". Expected: ${r}.`)}var Re=`#3b82f6`;function ze(e){let t=e.replace(`#`,``),n=parseInt(t.substring(0,2),16)/255,r=parseInt(t.substring(2,4),16)/255,i=parseInt(t.substring(4,6),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if(a===o)return[0,0,s*100];let c=a-o,l=s>.5?c/(2-a-o):c/(a+o),u;return u=a===n?((r-i)/c+(r<i?6:0))/6:a===r?((i-n)/c+2)/6:((n-r)/c+4)/6,[u*360,l*100,s*100]}function Be(e,t,n){let r=t/100,i=n/100,a=(1-Math.abs(2*i-1))*r,o=a*(1-Math.abs(e/60%2-1)),s=i-a/2,c,l,u;e<60?(c=a,l=o,u=0):e<120?(c=o,l=a,u=0):e<180?(c=0,l=a,u=o):e<240?(c=0,l=o,u=a):e<300?(c=o,l=0,u=a):(c=a,l=0,u=o);let d=e=>Math.round((e+s)*255).toString(16).padStart(2,`0`);return`#${d(c)}${d(l)}${d(u)}`}function Ve(e){return/^#[0-9a-fA-F]{6}$/.test(e)}function He(e){return ze(e)[2]<50}function Ue(e,t,n){if(e===0)return t;let r=Ve(t)?t:Re,i=n&&Ve(n)?n:void 0,[a,o]=ze(r),s=Math.max(55,Math.min(85,o)),c=Math.ceil(e/2),l=e%2==1,u=i&&He(i)?!l:l,d=u?Math.max(25,48-c*13):Math.min(78,55+c*11);return Be(((a+(u?-8:12)*c)%360+360)%360,s,d)}var We={rect:`rectangle`,rectangle:`rectangle`,proc:`rectangle`,process:`rectangle`,"normal-rect":`rectangle`,rounded:`rounded`,event:`rounded`,"rounded-rect":`rounded`,stadium:`stadium`,pill:`stadium`,terminal:`stadium`,subproc:`subroutine`,subprocess:`subroutine`,subroutine:`subroutine`,"framed-rectangle":`subroutine`,"fr-rect":`subroutine`,cyl:`cylinder`,cylinder:`cylinder`,db:`cylinder`,database:`cylinder`,"h-cyl":`cylinder`,das:`cylinder`,"horizontal-cylinder":`cylinder`,"lin-cyl":`cylinder`,"lined-cylinder":`cylinder`,disk:`cylinder`,circ:`circle`,circle:`circle`,start:`circle`,"dbl-circ":`doublecircle`,"double-circle":`doublecircle`,stop:`doublecircle`,"f-circ":`filled-circle`,"filled-circle":`filled-circle`,junction:`filled-circle`,"cross-circ":`crossed-circle`,"crossed-circle":`crossed-circle`,summary:`crossed-circle`,diam:`diamond`,diamond:`diamond`,decision:`diamond`,question:`diamond`,hex:`hexagon`,hexagon:`hexagon`,prepare:`hexagon`,odd:`asymmetric`,"rect-left-inv-arrow":`asymmetric`,"lean-r":`parallelogram`,"lean-right":`parallelogram`,"in-out":`parallelogram`,"lean-l":`parallelogram-alt`,"lean-left":`parallelogram-alt`,"out-in":`parallelogram-alt`,"trap-b":`trapezoid`,"trapezoid-bottom":`trapezoid`,priority:`trapezoid`,"trap-t":`trapezoid-alt`,"trapezoid-top":`trapezoid-alt`,manual:`trapezoid-alt`,"curv-trap":`trapezoid-alt`,"curved-trapezoid":`trapezoid-alt`,display:`trapezoid-alt`,doc:`document`,document:`document`,"lin-doc":`document`,"lined-document":`document`,"tag-doc":`document`,"tagged-document":`document`,docs:`stacked-document`,documents:`stacked-document`,"st-doc":`stacked-document`,"stacked-document":`stacked-document`,"notch-rect":`card`,card:`card`,"notched-rectangle":`card`,"lin-rect":`lined-process`,"lined-rectangle":`lined-process`,"lin-proc":`lined-process`,"shaded-process":`lined-process`,"div-rect":`divided-process`,"divided-rectangle":`divided-process`,"div-proc":`divided-process`,"tag-rect":`rectangle`,"tagged-rectangle":`rectangle`,"tag-proc":`rectangle`,procs:`stacked-process`,processes:`stacked-process`,"st-rect":`stacked-process`,"stacked-rectangle":`stacked-process`,tri:`triangle`,triangle:`triangle`,extract:`triangle`,"flip-tri":`flipped-triangle`,"flipped-triangle":`flipped-triangle`,"manual-file":`flipped-triangle`,"win-pane":`window-pane`,"window-pane":`window-pane`,"internal-storage":`window-pane`,fork:`fork-join`,join:`fork-join`,"long-rect":`fork-join`,"notch-pent":`notched-pentagon`,"loop-limit":`notched-pentagon`,"notched-pentagon":`notched-pentagon`,"sl-rect":`sloped-rectangle`,"sloped-rectangle":`sloped-rectangle`,"manual-input":`sloped-rectangle`,flag:`flag`,"paper-tape":`flag`,"bow-rect":`bow-tie-rectangle`,"bow-tie-rectangle":`bow-tie-rectangle`,"stored-data":`bow-tie-rectangle`,delay:`half-rounded-rectangle`,"half-rounded-rectangle":`half-rounded-rectangle`,brace:`brace`,"brace-l":`brace`,comment:`brace`,"brace-r":`brace-right`,braces:`braces`,bolt:`bolt`,"com-link":`bolt`,"lightning-bolt":`bolt`,text:`text`,anchor:`anchor`};function Ge(e){return We[e.trim().toLowerCase()]}function Ke(e){let t={};for(let n of qe(e,`,`)){let e=n.trim();if(e.length===0)continue;let r=Je(e,`:`);if(r===-1){t.shape??=Ye(e);continue}let i=e.slice(0,r).trim().toLowerCase(),a=Ye(e.slice(r+1).trim());i.length>0&&(t[i]=a)}return t}function qe(e,t){let n=[],r=``,i=null;for(let a of e){if(i!==null){r+=a,a===i&&(i=null);continue}if(a===`"`||a===`'`){i=a,r+=a;continue}if(a===t){n.push(r),r=``;continue}r+=a}return n.push(r),n}function Je(e,t){let n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n!==null){i===n&&(n=null);continue}if(i===`"`||i===`'`){n=i;continue}if(i===t)return r}return-1}function Ye(e){return e.length>=2&&(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))?e.slice(1,-1):e}function Xe(e){if(!e.startsWith(`@{`))return;let t=0,n=null;for(let r=1;r<e.length;r++){let i=e[r];if(n!==null){i===n&&(n=null);continue}if(i===`"`||i===`'`){n=i;continue}if(i===`{`){t++;continue}if(i===`}`&&(t--,t===0))return{body:e.slice(2,r),length:r+1}}}function Ze(e){return[e.length-1,(e[0]?.length??1)-1]}var Qe=`\x1B]8;;\x1B\\`;function $e(e){return`\x1b]8;;${e.replace(/[^\x21-\x7e]/gu,e=>encodeURIComponent(e))}\x1b\\`}var et=/\x1b\]8;[^\x07\x1b]*(?:\x1b\\|\x07)/g;function tt(e){return e.replace(et,``)}function nt(e,t){let n=[];for(let r=0;r<=e;r++){let e=[];for(let n=0;n<=t;n++)e.push(null);n.push(e)}return n}function rt(e,t,n,r){let i=e[t];i===void 0||n<0||n>=i.length||(i[n]=r)}function it(e){for(let t of e)t.reverse();return e}function at(e,t,n,r,i){let[a,o]=Ze(t),s=Math.max(1,i?.from??1),c=Math.min(o-1,i?.to??o-1);for(let i=s;i<=c;i++){let o=-1,s=-1;for(let e=1;e<=a-1;e++)t[e]?.[i]!==` `&&(o===-1&&(o=e),s=e);if(o!==-1)for(let t=o;t<=s;t++)rt(e,t+n.x,i+n.y,r)}}function ot(e,n){let[r,i]=Ze(e.canvas),a=nt(r,i);for(let r of e.nodes){if(!r.drawing||!r.drawingCoord)continue;let e=t(n.get(r.name)?.href);e!==void 0&&at(a,r.drawing,r.drawingCoord,e)}return a}var st=class{current=null;advance(e){if(e===this.current)return``;let t=this.current===null?``:Qe;return e!==null&&(t+=$e(e)),this.current=e,t}finish(){let e=this.current===null?``:Qe;return this.current=null,e}};function ct(e,t){let n=new st,r=``;for(let[i,a]of e.entries())r+=n.advance(t[i]??null)+a;return r+n.finish()}var lt={fg:`#27272a`,border:`#a1a1aa`,line:`#71717a`,arrow:`#52525b`,corner:`#71717a`,junction:`#a1a1aa`};function ut(e){let t=e.line??l(e.fg,e.bg,ae.line),n=e.border??l(e.fg,e.bg,ae.nodeStroke);return{fg:e.fg,border:n,line:t,arrow:e.accent??l(e.fg,e.bg,ae.arrow),accent:e.accent,bg:e.bg,corner:t,junction:n}}function dt(){let e=globalThis.process;if(e){if(!e.stdout?.isTTY)return`none`;let t=e.env?.COLORTERM?.toLowerCase()??``,n=e.env?.TERM?.toLowerCase()??``;return t===`truecolor`||t===`24bit`?`truecolor`:n.includes(`256color`)||n.includes(`256`)?`ansi256`:n&&n!==`dumb`?`ansi16`:`none`}return typeof document<`u`?`html`:`none`}function ft(e){return i(e.startsWith(`#`)?e:`#${e}`)??{r:0,g:0,b:0}}var pt=`\x1B[`,mt=`${pt}0m`;function ht(e){let{r:t,g:n,b:r}=ft(e);return`${pt}38;2;${t};${n};${r}m`}function gt(e,t,n){let r=(e+t+n)/3;if(Math.max(Math.abs(e-r),Math.abs(t-r),Math.abs(n-r))<10){let e=Math.round(r/255*23);return 232+Math.min(23,Math.max(0,e))}let i=e=>e<48?0:e<115?1:Math.min(5,Math.floor((e-35)/40)),a=i(e),o=i(t),s=i(n);return 16+36*a+6*o+s}function _t(e){let{r:t,g:n,b:r}=ft(e);return`${pt}38;5;${gt(t,n,r)}m`}function vt(e){let{r:t,g:n,b:r}=ft(e),i=.299*t+.587*n+.114*r,a=i>100?0:60,o;return o=t>180&&n<100&&r<100?31:n>180&&t<100&&r<100?32:t>150&&n>150&&r<100?33:r>180&&t<100&&n<100?34:t>150&&r>150&&n<100?35:n>150&&r>150&&t<100?36:i>200?37:i<50?30:37,`${pt}${o+a}m`}function yt(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function bt(e,t){return`<span style="color:${e}">${yt(t)}</span>`}function xt(e,t){switch(e){case`text`:return t.fg;case`border`:return t.border;case`line`:return t.line;case`arrow`:return t.arrow;case`corner`:return t.corner??t.line;case`junction`:return t.junction??t.border;default:return t.fg}}function St(e,t,n){if(n===`none`)return``;let r=xt(e,t);switch(n){case`truecolor`:return ht(r);case`ansi256`:return _t(r);case`ansi16`:return vt(r);default:return``}}function Ct(e,t,n,r,i){if(r===`none`)return i?ct(e,i):e.join(``);if(r===`html`)return wt(e,t,n);let a=new st,o=``,s=null,c=``;for(let[l,u]of e.entries()){let e=t[l]??null,d=i?a.advance(i[l]??null):``;if(u===` `){c.length>0&&(o+=s===null?c:St(s,n,r)+c+mt,c=``,s=null),o+=d+u;continue}if(e===s){c+=d+u;continue}c.length>0&&(o+=s===null?c:St(s,n,r)+c+mt),c=d+u,s=e}return c.length>0&&s!==null?o+=St(s,n,r)+c+mt:c.length>0&&(o+=c),o+a.finish()}function wt(e,t,n){let r=``,i=null,a=``,o=()=>{a.length!==0&&(r+=i===null?yt(a):bt(xt(i,n),a),a=``,i=null)};for(let[n,s]of e.entries()){let e=t[n]??null;if(s===` `){o(),r+=` `;continue}if(e===i){a+=s;continue}o(),a=s,i=e}return o(),r}function Tt(e,t,n){if(n===`none`||e.length===0)return e;if(n===`html`)return bt(t,e);let r;switch(n){case`truecolor`:r=ht(t);break;case`ansi256`:r=_t(t);break;case`ansi16`:r=vt(t);break;default:return e}return`${r}${e}${mt}`}var Et=/\p{Mn}|\p{Me}/u;function Dt(e){return Et.test(e)}var Ot=new Intl.Segmenter(void 0,{granularity:`grapheme`}),kt=`️`;function At(e){let t=[];for(let{segment:n}of Ot.segment(e))t.push(n);return t}function jt(e){if(e.includes(kt))return 2;let t=!1,n=!1;for(let r of e)j(r)&&(t=!0),Dt(r)||(n=!0);return t?2:+!!n}function V(e){let t=0;for(let n of At(e))t+=jt(n);return t}function Mt(e){let t=[];for(let n of At(e)){let e=jt(n);e!==0&&(t.push(n),e===2&&t.push(``))}return t}function H(e,t){let n=[];for(let r=0;r<=e;r++){let e=[];for(let n=0;n<=t;n++)e.push(` `);n.push(e)}return n}function U(e){let[t,n]=It(e);return H(t,n)}function Nt(e,t){let n=[];for(let r=0;r<=e;r++){let e=[];for(let n=0;n<=t;n++)e.push(null);n.push(e)}return n}function Pt(e,t,n){let r=e.length-1,i=(e[0]?.length??1)-1,a=Nt(Math.max(t,r),Math.max(n,i));for(let t=0;t<a.length;t++)for(let n=0;n<(a[0]?.length??0);n++)t<e.length&&n<(e[0]?.length??0)&&(a[t][n]=e[t][n]);return e.length=0,e.push(...a),e}function Ft(e,t,n,r){(t>=e.length||n>=(e[0]?.length??0))&&Pt(e,t,n),e[t][n]=r}function It(e){return[e.length-1,(e[0]?.length??1)-1]}function Lt(e,t,n){let[r,i]=It(e),a=H(Math.max(t,r),Math.max(n,i));for(let t=0;t<a.length;t++)for(let n=0;n<(a[0]?.length??0);n++)t<e.length&&n<(e[0]?.length??0)&&(a[t][n]=e[t][n]);return e.length=0,e.push(...a),e}function W(e,t,n,r,i){let[a,o]=It(e);t<0||t>a||n<0||n>o||(e[t][n]=r,i&&Ft(i.roleCanvas,t,n,i.role))}var Rt=new Set([`─`,`│`,`┌`,`┐`,`└`,`┘`,`├`,`┤`,`┬`,`┴`,`┼`,`╴`,`╵`,`╶`,`╷`]);function zt(e){return Rt.has(e)}function Bt(e){return/^[a-zA-Z0-9]$/.test(e)}var Vt={"─":{"│":`┼`,"┌":`┬`,"┐":`┬`,"└":`┴`,"┘":`┴`,"├":`┼`,"┤":`┼`,"┬":`┬`,"┴":`┴`},"│":{"─":`┼`,"┌":`├`,"┐":`┤`,"└":`├`,"┘":`┤`,"├":`├`,"┤":`┤`,"┬":`┼`,"┴":`┼`},"┌":{"─":`┬`,"│":`├`,"┐":`┬`,"└":`├`,"┘":`┼`,"├":`├`,"┤":`┼`,"┬":`┬`,"┴":`┼`},"┐":{"─":`┬`,"│":`┤`,"┌":`┬`,"└":`┼`,"┘":`┤`,"├":`┼`,"┤":`┤`,"┬":`┬`,"┴":`┼`},"└":{"─":`┴`,"│":`├`,"┌":`├`,"┐":`┼`,"┘":`┴`,"├":`├`,"┤":`┼`,"┬":`┼`,"┴":`┴`},"┘":{"─":`┴`,"│":`┤`,"┌":`┼`,"┐":`┤`,"└":`┴`,"├":`┼`,"┤":`┤`,"┬":`┼`,"┴":`┴`},"├":{"─":`┼`,"│":`├`,"┌":`├`,"┐":`┼`,"└":`├`,"┘":`┼`,"┤":`┼`,"┬":`┼`,"┴":`┼`},"┤":{"─":`┼`,"│":`┤`,"┌":`┼`,"┐":`┤`,"└":`┼`,"┘":`┤`,"├":`┼`,"┬":`┼`,"┴":`┼`},"┬":{"─":`┬`,"│":`┼`,"┌":`┬`,"┐":`┬`,"└":`┼`,"┘":`┼`,"├":`┼`,"┤":`┼`,"┴":`┼`},"┴":{"─":`┴`,"│":`┼`,"┌":`┼`,"┐":`┼`,"└":`┴`,"┘":`┴`,"├":`┼`,"┤":`┼`,"┬":`┼`}};function Ht(e,t){return Vt[e]?.[t]??e}function Ut(e,t,n,...r){let[i,a]=It(e);for(let e of r){let[n,r]=It(e);i=Math.max(i,n+t.x),a=Math.max(a,r+t.y)}let o=H(i,a);for(let t=0;t<=i;t++)for(let n=0;n<=a;n++)t<e.length&&n<(e[0]?.length??0)&&(o[t][n]=e[t][n]);for(let e of r)for(let r=0;r<e.length;r++)for(let i=0;i<(e[0]?.length??0);i++){let a=e[r][i];if(a!==` `){let e=r+t.x,s=i+t.y,c=o[e][s];!n&&zt(a)&&zt(c)?o[e][s]=Ht(c,a):Bt(c)&&Bt(a)||(o[e][s]=a)}}return o}function Wt(e,t){let[n,r]=It(e),i=[],a=t?.roleCanvas,o=t?.colorMode??`none`,s=t?.theme??lt,c=o===`html`?void 0:t?.linkCanvas;for(let t=0;t<=r;t++)if(o===`none`||!a){let r=[];for(let i=0;i<=n;i++)r.push(e[i][t]);if(c){let e=r.map((e,n)=>c[n]?.[t]??null);i.push(ct(r,e))}else i.push(r.join(``))}else{let r=[],l=[],u=[];for(let i=0;i<=n;i++)r.push(e[i][t]),l.push(a[i]?.[t]??null),u.push(c?.[i]?.[t]??null);i.push(Ct(r,l,s,o,c?u:void 0))}return i.join(`
5
- `)}var Gt={"▲":`▼`,"▼":`▲`,"◤":`◣`,"◣":`◤`,"◥":`◢`,"◢":`◥`,"^":`v`,v:`^`,"┌":`└`,"└":`┌`,"┐":`┘`,"┘":`┐`,"┬":`┴`,"┴":`┬`,"╵":`╷`,"╷":`╵`};function Kt(e){for(let t of e)t.reverse();for(let t of e)for(let[e,n]of t.entries()){let r=Gt[n];r&&(t[e]=r)}return e}function qt(e){for(let t of e)t.reverse();return e}function Jt(e,t,n,r=!1){let i=Mt(n);Lt(e,t.x+i.length,t.y);for(let[n,a]of i.entries()){let i=t.x+n,o=e[i][t.y];(r||o===` `)&&(e[i][t.y]=a)}}function Yt(e,t,n){let r=0,i=0;for(let e of t.values())r+=e;for(let e of n.values())i+=e;Lt(e,r-1,i-1)}function Xt(e,t,n){let r=0,i=0;for(let e of t.values())r+=e;for(let e of n.values())i+=e;Pt(e,r-1,i-1)}var Zt=60,Qt=20,$t={hLine:`─`,vLine:`│`,origin:`┼`,yTick:`┤`,xTick:`┬`,bar:`█`,grid:`·`,cornerTL:`╭`,cornerTR:`╮`,cornerBL:`╰`,cornerBR:`╯`},en={hLine:`-`,vLine:`|`,origin:`+`,yTick:`+`,xTick:`+`,bar:`#`,grid:`.`,cornerTL:`+`,cornerTR:`+`,cornerBL:`+`,cornerBR:`+`};function tn(e,t){let n=t.accent??`#3b82f6`;return e<=1?[n]:Array.from({length:e},(e,r)=>Ue(r,n,t.bg))}function nn(e,t){switch(e){case`text`:return t.fg;case`border`:return t.border;case`line`:return t.line;case`arrow`:return t.arrow;case`corner`:return t.corner??t.line;case`junction`:return t.junction??t.border;default:return t.fg}}function rn(e,t,n,r){let i=Pe(_(e)),a=t.useAscii?en:$t;return i.horizontal?on(i,a,n,r):an(i,a,n,r)}function an(e,t,n,r){let i=_n(e);if(i===0)return``;let a=e.yAxis.range;if(!a)throw Error(`XY chart: y-axis range was not set by the parser`);let o=yn(a.min,a.max),s=o.map(e=>bn(e)),c=Math.max(...s.map(e=>e.length))+1,l=Math.max(Zt,i*6),u=Qt,d=Math.floor(l/i),f=vn(e,i),p=!!e.title,m=!!e.xAxis.title,h=!!e.yAxis.title,g=e.series.length>1,_=p?0:-1,v=(p?2:0)+ +!!g,y=h?2:0,b=y+c+1,x=b+d*i+2,S=v+u,C=S+1,w=m?C+1:-1,T=C+1+ +!!m+0,E=un(x,T),D=dn(x,T),O=fn(x,T),ee=tn(e.series.length,r),k=e=>{let t=(e-a.min)/(a.max-a.min||1);return Math.round(t*19)},A=e=>b+Math.floor(d*(e+.5));e.title&&_>=0&&mn(E,D,_,Math.floor(x/2-e.title.length/2),e.title,`text`),g&&ln(E,D,O,e,+!!p,x,t,ee);for(let e=0;e<u;e++)G(E,D,v+(19-e),b-1,t.vLine,`border`);G(E,D,S,b-1,t.origin,`border`);for(let e of o){let n=k(e);if(n<0||n>=u)continue;let r=v+(19-n),i=bn(e);G(E,D,r,b-1,n===0?t.origin:t.yTick,`border`);let a=y+c-i.length;mn(E,D,r,Math.max(0,a),i,`text`)}for(let e=b;e<b+d*i;e++)G(E,D,S,e,t.hLine,`border`);for(let e=0;e<i;e++){let n=A(e);G(E,D,S,n,t.xTick,`border`);let r=f[e],i=n-Math.floor(r.length/2);mn(E,D,C,Math.max(0,i),r,`text`)}if(e.xAxis.title&&w>=0){let t=e.xAxis.title;mn(E,D,w,Math.floor(x/2-t.length/2),t,`text`)}if(e.yAxis.title){let t=e.yAxis.title,n=v+Math.max(0,Math.floor((u-t.length)/2));for(let e=0;e<t.length;e++){let r=n+e;if(r>=v+u)break;G(E,D,r,0,t[e],`text`)}}for(let e of o){let n=k(e);if(n<0||n>=u)continue;let r=v+(19-n);for(let e=b;e<b+d*i;e++)pn(E,r,e)===` `&&G(E,D,r,e,t.grid,`line`)}let te=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`bar`&&te.push({data:e.series[t].data,globalIdx:t});if(te.length>0){let e=Math.max(1,d-2),n=Math.max(1,Math.min(e,8)),r=k(Math.max(0,a.min));for(let e=0;e<te.length;e++){let i=te[e],a=ee[i.globalIdx];for(let e=0;e<i.data.length;e++){let o=A(e)-Math.floor(n/2),s=k(i.data[e]),c=Math.min(r,s),l=Math.max(r,s);for(let e=c;e<=l;e++){let r=v+(19-e);for(let e=o;e<o+n;e++)G(E,D,r,e,t.bar,`arrow`,O,a)}}}}let j=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`line`&&j.push({data:e.series[t].data,globalIdx:t});for(let e of j){if(e.data.length===0)continue;let n=ee[e.globalIdx];sn(E,D,e.data,A,k,v,u,b,d*i,t,O,n)}return hn(E,D,O,n,r)}function on(e,t,n,r){let i=_n(e);if(i===0)return``;let a=e.yAxis.range;if(!a)throw Error(`XY chart: y-axis range was not set by the parser`);let o=yn(a.min,a.max),s=vn(e,i),c=Math.max(...s.map(e=>e.length))+1,l=Math.max(Zt,40),u=Math.max(2,Math.floor(Qt/i)),d=u*i,f=!!e.title,p=!!e.yAxis.title,m=e.series.length>1,h=(f?2:0)+ +!!m,g=c+1,_=g+l+2,v=h+d+2+ +!!p,y=h+d,b=un(_,v),x=dn(_,v),S=fn(_,v),C=tn(e.series.length,r),w=e=>{let t=(e-a.min)/(a.max-a.min||1);return g+Math.round(t*59)},T=e=>h+Math.floor(u*(e+.5));e.title&&mn(b,x,0,Math.floor(_/2-e.title.length/2),e.title,`text`),m&&ln(b,x,S,e,+!!f,_,t,C);for(let e=h;e<h+d;e++)G(b,x,e,g-1,t.vLine,`border`);G(b,x,y,g-1,t.origin,`border`);for(let e=0;e<i;e++){let t=T(e),n=s[e],r=c-n.length;mn(b,x,t,Math.max(0,r),n,`text`)}for(let e=g;e<g+l;e++)G(b,x,y,e,t.hLine,`border`);for(let e of o){let n=w(e);if(n<g||n>=g+l)continue;G(b,x,y,n,t.xTick,`border`);let r=bn(e);mn(b,x,y+1,n-Math.floor(r.length/2),r,`text`)}if(e.yAxis.title){let t=e.yAxis.title;mn(b,x,v-1,Math.floor(_/2-t.length/2),t,`text`)}for(let e of o){let n=w(e);if(!(n<g||n>=g+l))for(let e=h;e<h+d;e++)pn(b,e,n)===` `&&G(b,x,e,n,t.grid,`line`)}let E=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`bar`&&E.push({data:e.series[t].data,globalIdx:t});if(E.length>0){let e=w(Math.max(0,a.min));for(let n=0;n<E.length;n++){let r=E[n],i=C[r.globalIdx];for(let n=0;n<r.data.length;n++){let a=T(n),o=w(r.data[n]),s=Math.min(e,o),c=Math.max(e,o);for(let e=a;e<a+1;e++)for(let n=s;n<=c;n++)G(b,x,e,n,t.bar,`arrow`,S,i)}}}let D=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`line`&&D.push({data:e.series[t].data,globalIdx:t});for(let e of D){if(e.data.length===0)continue;let n=C[e.globalIdx];cn(b,x,e.data,T,w,h,d,g,l,t,S,n)}return hn(b,x,S,n,r)}function sn(e,t,n,r,i,a,o,s,c,l,u,d){if(n.length===0)return;let f=n.map((e,t)=>({col:r(t),row:i(e)})),p=(n,r,i)=>{let l=a+(o-1-r);l>=0&&n>=s&&n<s+c&&G(e,t,l,n,i,`arrow`,u,d)};if(f.length===1){p(f[0].col,f[0].row,l.hLine);return}for(let e=0;e<f.length-1;e++){let t=f[e],n=f[e+1];if(t.row===n.row){for(let e=t.col;e<=n.col;e++)p(e,t.row,l.hLine);continue}let r=Math.round((t.col+n.col)/2),i=n.row>t.row;for(let e=t.col;e<r;e++)p(e,t.row,l.hLine);i?p(r,t.row,l.cornerBR):p(r,t.row,l.cornerTR);let a=Math.min(t.row,n.row),o=Math.max(t.row,n.row);for(let e=a+1;e<o;e++)p(r,e,l.vLine);i?p(r,n.row,l.cornerTL):p(r,n.row,l.cornerBL);for(let e=r+1;e<=n.col;e++)p(e,n.row,l.hLine);if(e===0){let e=Math.max(s,t.col-Math.floor((n.col-t.col)/4));for(let n=e;n<t.col;n++)p(n,t.row,l.hLine)}if(e===f.length-2){let e=Math.min(s+c-1,n.col+Math.floor((n.col-t.col)/4));for(let t=n.col+1;t<=e;t++)p(t,n.row,l.hLine)}}}function cn(e,t,n,r,i,a,o,s,c,l,u,d){if(n.length===0)return;let f=n.map((e,t)=>({row:r(t),col:i(e)})),p=(n,r,i)=>{n>=a&&n<a+o&&r>=s&&r<s+c&&G(e,t,n,r,i,`arrow`,u,d)};if(f.length===1){p(f[0].row,f[0].col,l.vLine);return}for(let e=0;e<f.length-1;e++){let t=f[e],n=f[e+1];if(t.col===n.col){for(let e=t.row;e<=n.row;e++)p(e,t.col,l.vLine);continue}let r=Math.round((t.row+n.row)/2),i=n.col>t.col;for(let e=t.row;e<r;e++)p(e,t.col,l.vLine);i?p(r,t.col,l.cornerBL):p(r,t.col,l.cornerBR);let a=Math.min(t.col,n.col),o=Math.max(t.col,n.col);for(let e=a+1;e<o;e++)p(r,e,l.hLine);i?p(r,n.col,l.cornerTR):p(r,n.col,l.cornerTL);for(let e=r+1;e<=n.row;e++)p(e,n.col,l.vLine)}}function ln(e,t,n,r,i,a,o,s){let c=[],l=0,u=0;for(let e=0;e<r.series.length;e++)r.series[e].type===`bar`?(c.push({symbol:o.bar,label:`Bar ${l+1}`,globalIdx:e}),l++):(c.push({symbol:o.hLine,label:`Line ${u+1}`,globalIdx:e}),u++);let d=0;for(let e=0;e<c.length;e++)e>0&&(d+=2),d+=2+c[e].label.length;let f=Math.max(0,Math.floor(a/2-d/2));for(let r=0;r<c.length;r++){r>0&&(f+=2);let a=c[r];G(e,t,i,f,a.symbol,`arrow`,n,s[a.globalIdx]),f+=1,f+=1,mn(e,t,i,f,a.label,`text`),f+=a.label.length}}function un(e,t){return H(e-1,t-1)}function dn(e,t){return Nt(e-1,t-1)}function fn(e,t){return Array.from({length:e},()=>Array.from({length:t}).fill(null))}function G(e,t,n,r,i,a,o,s){r>=0&&r<e.length&&n>=0&&n<(e[0]?.length??0)&&(W(e,r,n,i,{role:a,roleCanvas:t}),o&&s&&(o[r][n]=s))}function pn(e,t,n){return n>=0&&n<e.length&&t>=0&&t<e[0].length?e[n][t]:` `}function mn(e,t,n,r,i,a){for(let o=0;o<i.length;o++)G(e,t,n,r+o,i[o],a)}function hn(e,t,n,r,i){if(e.length===0)return``;let a=e[0].length,o=e.length,s=[];for(let c=0;c<a;c++){let a=[],l=[],u=[];for(let r=0;r<o;r++)a.push(e[r][c]),l.push(t[r][c]),u.push(n[r][c]);let d=a.length-1;for(;d>=0&&a[d]===` `;)d--;d<0?s.push(``):s.push(gn(a.slice(0,d+1),l.slice(0,d+1),u.slice(0,d+1),i,r))}for(;s.length>0&&s[s.length-1]===``;)s.pop();return s.join(`
6
- `)}function gn(e,t,n,r,i){if(i===`none`)return e.join(``);let a=``,o=null,s=``;for(let c=0;c<e.length;c++){let l=e[c];if(l===` `){s.length>0&&(a+=o?Tt(s,o,i):s,s=``,o=null),a+=` `;continue}let u=n[c]??null,d=t[c]??null,f=u??(d?nn(d,r):null);f===o?s+=l:(s.length>0&&(a+=o?Tt(s,o,i):s),s=l,o=f)}return s.length>0&&(a+=o?Tt(s,o,i):s),a}function _n(e){if(e.xAxis.categories)return e.xAxis.categories.length;for(let t of e.series)if(t.data.length>0)return t.data.length;return 0}function vn(e,t){if(e.xAxis.categories)return e.xAxis.categories;if(e.xAxis.range){let{min:n,max:r}=e.xAxis.range,i=t>1?(r-n)/(t-1):0;return Array.from({length:t},(e,t)=>bn(n+i*t))}return Array.from({length:t},(e,t)=>String(t+1))}function yn(e,t){let n=t-e;if(n<=0)return[e];let r=n/6,i=10**Math.floor(Math.log10(r)),a=r/i,o;o=a<=1.5?i:a<=3?2*i:a<=7?5*i:10*i;let s=Math.ceil(e/o)*o,c=[];for(let e=s;e<=t+o*.001;e+=o)c.push(Math.round(e*1e10)/1e10);return c}function bn(e){return Number.isInteger(e)?String(e):e.toFixed(+(Math.abs(e)<10))}var K={x:1,y:0},q={x:1,y:2},J={x:0,y:1},Y={x:2,y:1},xn={x:2,y:0},Sn={x:0,y:0},Cn={x:2,y:2},wn={x:0,y:2},Tn={x:1,y:1};function X(e,t){return e.x===t.x&&e.y===t.y}function En(e){return X(e,K)||X(e,q)||X(e,J)||X(e,Y)}function Dn(e){if(!En(e))throw Error(`Expected a cardinal direction (Up/Down/Left/Right); got {x:${e.x}, y:${e.y}}`);return e}function On(e,t,n,r){return Math.max(r,n+(e-t))}function kn(e,t){return e.x===t.x&&e.y===t.y}function An(e,t){return e.x===t.x&&e.y===t.y}function jn(e,t){return{x:e.x+t.x,y:e.y+t.y}}function Mn(e){return`${e.x},${e.y}`}function Z(e){let t=e.gridCoord;if(t===null)throw Error(`Node "${e.name}" has no gridCoord; grid layout must run before it is read`);return t}var Nn={name:``,styles:{}},Pn=class{#e=new Set;has(e){return this.#e.has(e)}add(e){this.#e.add(e)}delete(e){this.#e.delete(e)}keys(){return this.#e.keys()}};function Fn(){return new Pn}function In(e){let t=Fn();for(let n of e.keys())t.add(n);return t}function Ln(e,t){return e.has(Mn(t))}function Rn(e,t){return t.x<0||t.y<0?!1:!Ln(e,t)}function zn(e,t,n=3){for(let r=0;r<n;r++)for(let i=0;i<n;i++)if(Ln(e,{x:t.x+r,y:t.y+i}))return!1;return!0}function Bn(e,t,n=3){if(!zn(e,t,n))throw Error(`Grid block at (${t.x},${t.y}) is already occupied`);for(let r=0;r<n;r++)for(let i=0;i<n;i++){let n={x:t.x+r,y:t.y+i};e.add(Mn(n))}}var Vn=1e5;function Hn(e){if(e.length===0)return[];let t=[e[0]];for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n],a=r.x,o=r.y,s=Math.abs(i.x-r.x),c=Math.abs(i.y-r.y),l=r.x<i.x?1:-1,u=r.y<i.y?1:-1,d=s-c,f=0;for(;a!==i.x||o!==i.y;){if(f>=Vn)throw Error(`pathCells: segment from (${r.x},${r.y}) to (${i.x},${i.y}) did not reach its endpoint within ${Vn} steps`);let e=2*d;e>-c&&(d-=c,a+=l),e<s&&(d+=s,o+=u),t.push({x:a,y:o}),f++}}return t}var Un=class{items=[];get length(){return this.items.length}push(e){this.items.push(e),this.bubbleUp(this.items.length-1)}pop(){if(this.items.length===0)return;let e=this.items[0],t=this.items.pop();return this.items.length>0&&(this.items[0]=t,this.sinkDown(0)),e}bubbleUp(e){let t=e;for(;t>0;){let e=t-1>>1;if(this.items[t].priority<this.items[e].priority)[this.items[t],this.items[e]]=[this.items[e],this.items[t]],t=e;else break}}sinkDown(e){let t=this.items.length,n=e;for(;;){let e=n,r=2*n+1,i=2*n+2;if(r<t&&this.items[r].priority<this.items[e].priority&&(e=r),i<t&&this.items[i].priority<this.items[e].priority&&(e=i),e!==n)[this.items[n],this.items[e]]=[this.items[e],this.items[n]],n=e;else break}}};function Wn(e,t){let n=Math.abs(e.x-t.x),r=Math.abs(e.y-t.y);return n===0||r===0?n+r:n+r+1}var Gn=[{x:1,y:0},{x:-1,y:0},{x:0,y:1},{x:0,y:-1}],Kn=5e4,qn=2e5;function Jn(e=qn){return{remaining:e}}function Yn(e,t,n,r){if(r&&r.remaining<=0)return null;let i=new Un;i.push({coord:t,priority:0});let a=new Map;a.set(Mn(t),0);let o=new Map;o.set(Mn(t),null);let s=0;for(;i.length>0;){if(++s>Kn)return null;if(r){if(r.remaining<=0)return null;r.remaining--}let t=i.pop().coord;if(kn(t,n)){let e=[],n=t;for(;n!==null;)e.unshift(n),n=o.get(Mn(n))??null;return e}let c=a.get(Mn(t));if(c===void 0)throw Error(`A* pathfinding: missing cost for visited cell ${Mn(t)}`);for(let r of Gn){let s={x:t.x+r.x,y:t.y+r.y};if(!Rn(e,s)&&!kn(s,n))continue;let l=c+1,u=Mn(s),d=a.get(u);if(d===void 0||l<d){a.set(u,l);let e=l+Wn(s,n);i.push({coord:s,priority:e}),o.set(u,t)}}}return null}function Xn(e){if(e.length<=2)return e;let t=new Set,n=e[0],r=e[1];for(let i=2;i<e.length;i++){let a=e[i],o=r.x-n.x,s=r.y-n.y,c=a.x-r.x,l=a.y-r.y;o===c&&s===l&&t.add(i-1),n=r,r=a}return e.filter((e,n)=>!t.has(n))}function Zn(e,t,n,r){if(t.x===n.x&&t.y===n.y)return!0;let i=t.x===n.x;if(!i&&t.y!==n.y)return!1;let a=i?n.y>t.y?1:-1:n.x>t.x?1:-1,o=i?t.y:t.x,s=i?n.y:n.x;for(o+=a;;o+=a){let n=o===s,a=i?{x:t.x,y:o}:{x:o,y:t.y};if(!(n&&!r)&&!Rn(e,a))return!1;if(n)break}return!0}function Qn(e,t,n,r){let i=r?{x:n.x,y:t.y}:{x:t.x,y:n.y};return!Zn(e,t,i,!0)||!Zn(e,i,n,!1)?null:[t,i,n]}function $n(e,t,n,r){if(t.x===n.x||t.y===n.y)return null;let i=X(r,J)||X(r,Y);return Qn(e.grid,t,n,i)??Qn(e.grid,t,n,!i)}function er(e,t,n,r){if(!e.pathBudget)throw Error(`routeEdge requires graph.pathBudget to be set; call createPathBudget() (see grid.ts createMapping) before routing edges`);let i=$n(e,t,n,r)??Yn(e.grid,t,n,e.pathBudget);return i?Xn(i):null}function tr(e){if(e.config.graphDirection!==`TD`)return[];let t=[],n=new Set,r=new Map;for(let t of e.edges){if(t.from===t.to)continue;let e=r.get(t.to)??[];e.push(t),r.set(t.to,e)}for(let[i,a]of r){if(a.length<2||!nr(a,e)||a.some(e=>n.has(e)))continue;let r={type:`fan-in`,edges:[...a],sharedNode:i,otherNodes:a.map(e=>e.from),junctionPoint:null,sharedPath:[],junctionDir:Tn,sharedNodeDir:Tn};for(let e of a)e.bundle=r,n.add(e);t.push(r)}let i=new Map;for(let t of e.edges){if(t.from===t.to||n.has(t))continue;let e=i.get(t.from)??[];e.push(t),i.set(t.from,e)}for(let[r,a]of i){if(a.length<2||!nr(a,e))continue;let i={type:`fan-out`,edges:[...a],sharedNode:r,otherNodes:a.map(e=>e.to),junctionPoint:null,sharedPath:[],junctionDir:Tn,sharedNodeDir:Tn};for(let e of a)e.bundle=i,n.add(e);t.push(i)}return t}function nr(e,t){if(e.length<2)return!1;let n=e[0].style,r=kr(t,e[0].from),i=kr(t,e[0].to);for(let a of e){if(a.style!==n||a.text.length>0)return!1;let e=kr(t,a.from),o=kr(t,a.to);if(e!==r||o!==i||e!==o)return!1}let a=e.every(t=>t.to===e[0].to),o=a?e.map(e=>e.from):e.map(e=>e.to);if(new Set(o).size!==o.length||e.some(e=>e.parallelLane))return!1;let s=t.config.graphDirection===`LR`?`x`:`y`,c=(a?e[0].to:e[0].from).gridCoord;if(!c)return!1;for(let t of e){let e=(a?t.from:t.to).gridCoord;if(!e)return!1;if(a){if(e[s]>=c[s])return!1}else if(e[s]<=c[s])return!1}return!0}function rr(e,t){let n=e.config.graphDirection,r=Z(t.sharedNode);if(t.type===`fan-in`){if(n===`TD`){let e=r.y-1;return{x:r.x+1,y:e}}return{x:r.x-1,y:r.y+1}}if(n===`TD`){let e=r.y+3;return{x:r.x+1,y:e}}return{x:r.x+3,y:r.y+1}}function ir(e,t){let n=e.config.graphDirection;t.junctionPoint=rr(e,t);let r=t.junctionPoint;if(t.type===`fan-in`){t.junctionDir=n===`TD`?K:J,t.sharedNodeDir=n===`TD`?q:Y;let i=Z(t.sharedNode),a=Dn(n===`TD`?K:J),o=jn(i,a);t.sharedPath=er(e,r,o,a)??[r,o];for(let i of t.edges){let o=Z(i.from),s=Dn(n===`TD`?q:Y),c=jn(o,s);i.pathToJunction=er(e,c,r,s)??[c,r],i.startDir=s,i.endDir=a,i.path=[...i.pathToJunction,...t.sharedPath.slice(1)]}}else{t.junctionDir=n===`TD`?q:Y,t.sharedNodeDir=n===`TD`?K:J;let i=Z(t.sharedNode),a=Dn(n===`TD`?q:Y),o=jn(i,a);t.sharedPath=er(e,o,r,a)??[o,r];for(let i of t.edges){let o=Z(i.to),s=Dn(n===`TD`?K:J),c=jn(o,s);i.pathToJunction=er(e,r,c,s)??[r,c],i.startDir=a,i.endDir=s,i.path=[...t.sharedPath,...i.pathToJunction.slice(1)]}}}function ar(e){for(let t of e.bundles)ir(e,t)}function or(){return new Map}function sr(e,t,n,r){for(let i of Hn(n)){if(Ln(e,i))continue;let n=t.get(Mn(i));if(n!==void 0&&n!==r)return i}return null}function cr(e,t,n,r){for(let i of Hn(n)){if(Ln(e,i))continue;let n=Mn(i);t.has(n)||t.set(n,r)}}function Q(e){return e.split(`
7
- `)}function lr(e){let t=Q(e);return Math.max(...t.map(e=>V(e)),0)}function ur(e){return Q(e).length}var dr={rectangle:{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},rounded:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`.`,tr:`.`,bl:`'`,br:`'`}},circle:{unicode:{tl:`◯`,tr:`◯`,bl:`◯`,br:`◯`},ascii:{tl:`o`,tr:`o`,bl:`o`,br:`o`}},doublecircle:{unicode:{tl:`◎`,tr:`◎`,bl:`◎`,br:`◎`},ascii:{tl:`@`,tr:`@`,bl:`@`,br:`@`}},diamond:{unicode:{tl:`◇`,tr:`◇`,bl:`◇`,br:`◇`},ascii:{tl:`<`,tr:`>`,bl:`<`,br:`>`}},hexagon:{unicode:{tl:`⌜`,tr:`⌝`,bl:`⌞`,br:`⌟`},ascii:{tl:`*`,tr:`*`,bl:`*`,br:`*`}},stadium:{unicode:{tl:`(`,tr:`)`,bl:`(`,br:`)`},ascii:{tl:`(`,tr:`)`,bl:`(`,br:`)`}},subroutine:{unicode:{tl:`╟`,tr:`╢`,bl:`╟`,br:`╢`},ascii:{tl:`|`,tr:`|`,bl:`|`,br:`|`}},cylinder:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`.`,tr:`.`,bl:`'`,br:`'`}},asymmetric:{unicode:{tl:`▷`,tr:`┐`,bl:`▷`,br:`┘`},ascii:{tl:`>`,tr:`+`,bl:`>`,br:`+`}},trapezoid:{unicode:{tl:`/`,tr:`\\`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`\\`,bl:`+`,br:`+`}},"trapezoid-alt":{unicode:{tl:`┌`,tr:`┐`,bl:`\\`,br:`/`},ascii:{tl:`+`,tr:`+`,bl:`\\`,br:`/`}},parallelogram:{unicode:{tl:`/`,tr:`/`,bl:`/`,br:`/`},ascii:{tl:`/`,tr:`/`,bl:`/`,br:`/`}},"parallelogram-alt":{unicode:{tl:`\\`,tr:`\\`,bl:`\\`,br:`\\`},ascii:{tl:`\\`,tr:`\\`,bl:`\\`,br:`\\`}},"state-start":{unicode:{tl:`●`,tr:`●`,bl:`●`,br:`●`},ascii:{tl:`*`,tr:`*`,bl:`*`,br:`*`}},"state-end":{unicode:{tl:`◉`,tr:`◉`,bl:`◉`,br:`◉`},ascii:{tl:`@`,tr:`@`,bl:`@`,br:`@`}},document:{unicode:{tl:`┌`,tr:`┐`,bl:`╰`,br:`╮`},ascii:{tl:`+`,tr:`+`,bl:`'`,br:`~`}},"stacked-document":{unicode:{tl:`┌`,tr:`╗`,bl:`╰`,br:`╮`},ascii:{tl:`+`,tr:`#`,bl:`'`,br:`~`}},"stacked-process":{unicode:{tl:`┌`,tr:`╗`,bl:`└`,br:`╝`},ascii:{tl:`+`,tr:`#`,bl:`+`,br:`#`}},card:{unicode:{tl:`╱`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`+`,bl:`+`,br:`+`}},"lined-process":{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},"divided-process":{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},"window-pane":{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},triangle:{unicode:{tl:`╱`,tr:`╲`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`\\`,bl:`+`,br:`+`}},"flipped-triangle":{unicode:{tl:`┌`,tr:`┐`,bl:`╲`,br:`╱`},ascii:{tl:`+`,tr:`+`,bl:`\\`,br:`/`}},"filled-circle":{unicode:{tl:`●`,tr:`●`,bl:`●`,br:`●`},ascii:{tl:`*`,tr:`*`,bl:`*`,br:`*`}},"crossed-circle":{unicode:{tl:`╳`,tr:`╳`,bl:`╳`,br:`╳`},ascii:{tl:`X`,tr:`X`,bl:`X`,br:`X`}},"fork-join":{unicode:{tl:`━`,tr:`━`,bl:`━`,br:`━`},ascii:{tl:`=`,tr:`=`,bl:`=`,br:`=`}},"notched-pentagon":{unicode:{tl:`╱`,tr:`╲`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`\\`,bl:`+`,br:`+`}},"sloped-rectangle":{unicode:{tl:`╱`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`+`,bl:`+`,br:`+`}},flag:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`~`,tr:`~`,bl:`~`,br:`~`}},"bow-tie-rectangle":{unicode:{tl:`╲`,tr:`╱`,bl:`╱`,br:`╲`},ascii:{tl:`\\`,tr:`/`,bl:`/`,br:`\\`}},"half-rounded-rectangle":{unicode:{tl:`┌`,tr:`╮`,bl:`└`,br:`╯`},ascii:{tl:`+`,tr:`.`,bl:`+`,br:`'`}},brace:{unicode:{tl:`╭`,tr:`┐`,bl:`╰`,br:`┘`},ascii:{tl:`{`,tr:`+`,bl:`{`,br:`+`}},"brace-right":{unicode:{tl:`┌`,tr:`╮`,bl:`└`,br:`╯`},ascii:{tl:`+`,tr:`}`,bl:`+`,br:`}`}},braces:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`{`,tr:`}`,bl:`{`,br:`}`}},bolt:{unicode:{tl:`╱`,tr:`╲`,bl:`╲`,br:`╱`},ascii:{tl:`/`,tr:`\\`,bl:`\\`,br:`/`}},text:{unicode:{tl:` `,tr:` `,bl:` `,br:` `},ascii:{tl:` `,tr:` `,bl:` `,br:` `}},anchor:{unicode:{tl:` `,tr:` `,bl:` `,br:` `},ascii:{tl:` `,tr:` `,bl:` `,br:` `}}};function fr(e,t){let n=dr[e]??dr.rectangle;return t?n.ascii:n.unicode}function pr(e,t){let n=Q(e),r=Math.max(...n.map(e=>V(e)),0),i=n.length,a=2*t.padding+r,o=a+2,s=i+2*t.padding,c=s%2==0?s+1:s;return{width:o,height:c+2,labelArea:{x:1+t.padding,y:1+t.padding,width:r,height:i},gridColumns:[1,a,1],gridRows:[1,c,1]}}function mr(e,t,n,r){let{width:i,height:a}=t,o=H(i-1,a-1),s={x:0,y:0},c={x:i-1,y:a-1},l=r?`-`:`─`,u=r?`|`:`│`;for(let e=s.x+1;e<c.x;e++)o[e][s.y]=l,o[e][c.y]=l;for(let e=s.y+1;e<c.y;e++)o[s.x][e]=u,o[c.x][e]=u;o[s.x][s.y]=n.tl,o[c.x][s.y]=n.tr,o[s.x][c.y]=n.bl,o[c.x][c.y]=n.br;let d=Q(e),f=i-1,p=a-1,m=Math.floor(p/2)-Math.floor((d.length-1)/2);for(let e=0;e<d.length;e++){let t=d[e],n=Math.floor(f/2)-Math.ceil(V(t)/2)+1,r=Mt(t);for(let t=0;t<r.length;t++){let i=n+t,a=m+e;i>=0&&i<o.length&&a>=0&&a<o[0].length&&(o[i][a]=r[t])}}return o}function hr(e,t,n){let{width:r,height:i}=t,a=n.x+Math.floor(r/2),o=n.y+Math.floor(i/2);return X(e,K)?{x:a,y:n.y}:X(e,q)?{x:a,y:n.y+i-1}:X(e,J)?{x:n.x,y:o}:X(e,Y)?{x:n.x+r-1,y:o}:X(e,Sn)?{x:n.x,y:n.y}:X(e,xn)?{x:n.x+r-1,y:n.y}:X(e,wn)?{x:n.x,y:n.y+i-1}:X(e,Cn)?{x:n.x+r-1,y:n.y+i-1}:{x:a,y:o}}var gr={getDimensions:pr,render(e,t,n){return mr(e,t,fr(`rectangle`,n.useAscii),n.useAscii)},getAttachmentPoint:hr},_r=new Map([[`rectangle`,gr],[`rounded`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`rounded`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`diamond`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`diamond`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`stadium`,{getDimensions(e,t){let n=Q(e),r=Math.max(...n.map(e=>V(e)),0),i=n.length,a=2*t.padding+r,o=a+4,s=i+2*t.padding;return{width:o,height:Math.max(s+2,3),labelArea:{x:2+t.padding,y:1+t.padding,width:r,height:i},gridColumns:[2,a,2],gridRows:[1,s,1]}},render(e,t,n){let{width:r,height:i}=t,a=H(r-1,i-1),o=Math.floor(i/2),s=n.useAscii?`-`:`─`;if(i===3)a[0][o]=`(`,a[r-1][o]=`)`;else if(n.useAscii){for(let e=0;e<i;e++)a[0][e]=`(`,a[r-1][e]=`)`;for(let e=1;e<r-1;e++)a[e][0]=s,a[e][i-1]=s}else{a[0][0]=`╭`;for(let e=1;e<r-1;e++)a[e][0]=s;a[r-1][0]=`╮`;for(let e=1;e<i-1;e++)a[0][e]=`│`,a[r-1][e]=`│`;a[0][i-1]=`╰`;for(let e=1;e<r-1;e++)a[e][i-1]=s;a[r-1][i-1]=`╯`}let c=Q(e),l=o-Math.floor((c.length-1)/2);for(let e=0;e<c.length;e++){let t=c[e],n=Math.floor(r/2)-Math.floor(V(t)/2),o=Mt(t);for(let t=0;t<o.length;t++){let s=n+t,c=l+e;s>0&&s<r-1&&c>=0&&c<i&&(a[s][c]=o[t])}}return a},getAttachmentPoint:hr}],[`circle`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`circle`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`subroutine`,{getDimensions(e,t){let n=Q(e),r=Math.max(...n.map(e=>V(e)),0),i=n.length,a=2*t.padding+r,o=a+4,s=i+2*t.padding;return{width:o,height:s+2,labelArea:{x:2+t.padding,y:1+t.padding,width:r,height:i},gridColumns:[2,a,2],gridRows:[1,s,1]}},render(e,t,n){let{width:r,height:i}=t,a=H(r-1,i-1),o=n.useAscii?`-`:`─`,s=n.useAscii?`|`:`│`;a[0][0]=n.useAscii?`+`:`┌`,a[1][0]=n.useAscii?`+`:`┬`;for(let e=2;e<r-2;e++)a[e][0]=o;a[r-2][0]=n.useAscii?`+`:`┬`,a[r-1][0]=n.useAscii?`+`:`┐`;for(let e=1;e<i-1;e++)a[0][e]=s,a[1][e]=s,a[r-2][e]=s,a[r-1][e]=s;a[0][i-1]=n.useAscii?`+`:`└`,a[1][i-1]=n.useAscii?`+`:`┴`;for(let e=2;e<r-2;e++)a[e][i-1]=o;a[r-2][i-1]=n.useAscii?`+`:`┴`,a[r-1][i-1]=n.useAscii?`+`:`┘`;let c=Q(e),l=Math.floor(i/2)-Math.floor((c.length-1)/2);for(let e=0;e<c.length;e++){let t=c[e],n=Math.floor(r/2)-Math.floor(V(t)/2),o=Mt(t);for(let t=0;t<o.length;t++){let s=n+t,c=l+e;s>1&&s<r-2&&c>0&&c<i-1&&(a[s][c]=o[t])}}return a},getAttachmentPoint:hr}],[`doublecircle`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`doublecircle`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`hexagon`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`hexagon`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`cylinder`,{getDimensions(e,t){let n=Q(e),r=Math.max(...n.map(e=>V(e)),0),i=n.length,a=2*t.padding+r,o=a+2,s=i+2*t.padding+2;return{width:o,height:s+2,labelArea:{x:1+t.padding,y:2+t.padding,width:r,height:i},gridColumns:[1,a,1],gridRows:[2,s-2,2]}},render(e,t,n){let{width:r,height:i}=t,a=H(r-1,i-1),o=n.useAscii?`-`:`─`,s=n.useAscii?`|`:`│`;a[0][0]=n.useAscii?`.`:`╭`;for(let e=1;e<r-1;e++)a[e][0]=o;a[r-1][0]=n.useAscii?`.`:`╮`,a[0][1]=s;for(let e=1;e<r-1;e++)a[e][1]=o;a[r-1][1]=s;for(let e=2;e<i-2;e++)a[0][e]=s,a[r-1][e]=s;a[0][i-2]=s;for(let e=1;e<r-1;e++)a[e][i-2]=o;a[r-1][i-2]=s,a[0][i-1]=n.useAscii?`'`:`╰`;for(let e=1;e<r-1;e++)a[e][i-1]=o;a[r-1][i-1]=n.useAscii?`'`:`╯`;let c=Q(e),l=Math.floor(i/2)-Math.floor((c.length-1)/2);for(let e=0;e<c.length;e++){let t=c[e],n=Math.floor(r/2)-Math.floor(V(t)/2),o=Mt(t);for(let t=0;t<o.length;t++){let s=n+t,c=l+e;s>0&&s<r-1&&c>1&&c<i-2&&(a[s][c]=o[t])}}return a},getAttachmentPoint:hr}],[`asymmetric`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`asymmetric`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`trapezoid`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`trapezoid`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`trapezoid-alt`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`trapezoid-alt`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`parallelogram`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`parallelogram`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`parallelogram-alt`,{getDimensions:pr,render(e,t,n){return mr(e,t,fr(`parallelogram-alt`,n.useAscii),n.useAscii)},getAttachmentPoint:hr}],[`state-start`,{getDimensions(e,t){return{width:5,height:3,labelArea:{x:2,y:1,width:1,height:1},gridColumns:[1,3,1],gridRows:[1,1,1]}},render(e,t,n){let{width:r,height:i}=t,a=H(r-1,i-1),o=Math.floor(r/2);return n.useAscii?(a[0][0]=`.`,a[1][0]=`-`,a[2][0]=`-`,a[3][0]=`-`,a[4][0]=`.`,a[0][1]=`|`,a[o][1]=`*`,a[4][1]=`|`,a[0][2]=`'`,a[1][2]=`-`,a[2][2]=`-`,a[3][2]=`-`,a[4][2]=`'`):(a[0][0]=`╭`,a[1][0]=`─`,a[2][0]=`─`,a[3][0]=`─`,a[4][0]=`╮`,a[0][1]=`│`,a[o][1]=`●`,a[4][1]=`│`,a[0][2]=`╰`,a[1][2]=`─`,a[2][2]=`─`,a[3][2]=`─`,a[4][2]=`╯`),a},getAttachmentPoint(e,t,n){let{width:r,height:i}=t,a=n.x+Math.floor(r/2),o=n.y+Math.floor(i/2);return X(e,K)?{x:a,y:n.y}:X(e,q)?{x:a,y:n.y+i-1}:X(e,J)?{x:n.x,y:o}:X(e,Y)?{x:n.x+r-1,y:o}:{x:a,y:o}}}],[`state-end`,{getDimensions(e,t){return{width:5,height:3,labelArea:{x:2,y:1,width:1,height:1},gridColumns:[1,3,1],gridRows:[1,1,1]}},render(e,t,n){let{width:r,height:i}=t,a=H(r-1,i-1),o=Math.floor(r/2);return n.useAscii?(a[0][0]=`#`,a[1][0]=`=`,a[2][0]=`=`,a[3][0]=`=`,a[4][0]=`#`,a[0][1]=`#`,a[o][1]=`*`,a[4][1]=`#`,a[0][2]=`#`,a[1][2]=`=`,a[2][2]=`=`,a[3][2]=`=`,a[4][2]=`#`):(a[0][0]=`╔`,a[1][0]=`═`,a[2][0]=`═`,a[3][0]=`═`,a[4][0]=`╗`,a[0][1]=`║`,a[o][1]=`◎`,a[4][1]=`║`,a[0][2]=`╚`,a[1][2]=`═`,a[2][2]=`═`,a[3][2]=`═`,a[4][2]=`╝`),a},getAttachmentPoint(e,t,n){let{width:r,height:i}=t,a=n.x+Math.floor(r/2),o=n.y+Math.floor(i/2);return X(e,K)?{x:a,y:n.y}:X(e,q)?{x:a,y:n.y+i-1}:X(e,J)?{x:n.x,y:o}:X(e,Y)?{x:n.x+r-1,y:o}:{x:a,y:o}}}]]);function vr(e){return _r.get(e)??gr}function yr(e,t,n){return vr(e).getDimensions(t,n)}function br(e,t,n,r){return vr(e).getAttachmentPoint(t,n,r)}function xr(e,t,n){let r=n?{x:t.x+n.x,y:t.y+n.y}:t,i=0;for(let t=0;t<r.x;t++)i+=e.columnWidth.get(t)??0;let a=0;for(let t=0;t<r.y;t++)a+=e.rowHeight.get(t)??0;let o=e.columnWidth.get(r.x)??0,s=e.rowHeight.get(r.y)??0;return{x:i+Math.floor(o/2)+e.offsetX,y:a+Math.floor(s/2)+e.offsetY}}function Sr(e,t){return t.map(t=>xr(e,t))}function Cr(e,t,n,r){let i=r??Pr(e,t);return zn(e.grid,n,3)?(Bn(e.grid,n,3),t.gridCoord=n,n):i===`LR`?Cr(e,t,{x:n.x,y:n.y+4},i):Cr(e,t,{x:n.x+4,y:n.y},i)}function wr(e,t){let n=Z(t),r=e.config.boxBorderPadding,i=yr(t.shape,t.displayLabel,{useAscii:e.config.useAscii,padding:r}),a=i.gridColumns,o=i.gridRows;for(let t=0;t<a.length;t++){let r=n.x+t,i=e.columnWidth.get(r)??0;e.columnWidth.set(r,Math.max(i,a[t]))}for(let t=0;t<o.length;t++){let r=n.y+t,i=e.rowHeight.get(r)??0;e.rowHeight.set(r,Math.max(i,o[t]))}if(n.x>0){let t=e.columnWidth.get(n.x-1)??0;e.columnWidth.set(n.x-1,Math.max(t,e.config.paddingX))}if(n.y>0){let r=e.config.paddingY;Fr(e,t)&&(r+=4);let i=e.rowHeight.get(n.y-1)??0;e.rowHeight.set(n.y-1,Math.max(i,r))}}function Tr(e,t){for(let n of t)e.columnWidth.has(n.x)||e.columnWidth.set(n.x,Math.floor(e.config.paddingX/2)),e.rowHeight.has(n.y)||e.rowHeight.set(n.y,Math.floor(e.config.paddingY/2))}var Er=8;function Dr(e,t,n,r){let i=[];try{for(let a=0;a<Er;a++){let a=sr(r,n,t.path,t.style);if(!a)return;e.grid.add(Mn(a)),i.push(a),ci(e,t)}}finally{for(let t of i)e.grid.delete(Mn(t))}}function Or(e,t){return e.subgraphs.some(e=>e.nodes.includes(t))}function kr(e,t){let n=null;for(let r of e.subgraphs)r.nodes.includes(t)&&(!n||Ar(n,r))&&(n=r);return n}function Ar(e,t){let n=t;for(;n!==null;){if(n===e)return!0;n=n.parent}return!1}function jr(e,t){let n=kr(e,t);if(!n)return null;let r=n;for(;r.parent;)r=r.parent;return r}function Mr(e){let t=[...e.nodes];for(let n of e.children)t.push(...Mr(n));return t}function Nr(e,t,n){if(t===n)return!0;let r=new Set([t]),i=[t];for(;i.length>0;){let t=i.shift();for(let a of Xr(e,t)){if(a===n)return!0;r.has(a)||(r.add(a),i.push(a))}}return!1}function Pr(e,t){let n=kr(e,t);return n?.direction?n.direction:e.config.graphDirection}function Fr(e,t){let n=kr(e,t);if(!n)return!1;let r=!1;for(let i of e.edges)if(i.to===t&&kr(e,i.from)!==n){r=!0;break}if(!r)return!1;let i=Z(t).y;for(let r of n.nodes){if(r===t||!r.gridCoord)continue;let a=!1;for(let t of e.edges)if(t.to===r&&kr(e,t.from)!==n){a=!0;break}if(a&&r.gridCoord.y<i)return!1}return!0}function Ir(e,t){if(t.nodes.length===0)return;let n=1e6,r=1e6,i=-1e6,a=-1e6;for(let o of t.children)Ir(e,o),o.nodes.length>0&&(n=Math.min(n,o.minX),r=Math.min(r,o.minY),i=Math.max(i,o.maxX),a=Math.max(a,o.maxY));for(let e of t.nodes){if(!e.drawingCoord||!e.drawing)continue;let t=e.drawingCoord.x,o=e.drawingCoord.y,s=t+e.drawing.length-1,c=o+e.drawing[0].length-1;n=Math.min(n,t),r=Math.min(r,o),i=Math.max(i,s),a=Math.max(a,c)}t.minX=n-2,t.minY=r-2-2,t.maxX=i+2,t.maxY=a+2;let o=Math.max(0,...Q(t.name).map(e=>V(e))),s=t.maxX-t.minX,c=o+1;if(c>s){let e=c-s,n=Math.floor(e/2),r=e-n;t.minX-=n,t.maxX+=r}}function Lr(e){let t=e.subgraphs.filter(e=>e.parent===null&&e.nodes.length>0);for(let e=0;e<t.length;e++)for(let n=e+1;n<t.length;n++){let r=t[e],i=t[n];r.minX<i.maxX&&r.maxX>i.minX&&(r.maxY>=i.minY-1&&r.minY<i.minY?i.minY=r.maxY+1+1:i.maxY>=r.minY-1&&i.minY<r.minY&&(r.minY=i.maxY+1+1)),r.minY<i.maxY&&r.maxY>i.minY&&(r.maxX>=i.minX-1&&r.minX<i.minX?i.minX=r.maxX+1+1:i.maxX>=r.minX-1&&i.minX<r.minX&&(r.minX=i.maxX+1+1))}}function Rr(e){for(let t of e.subgraphs)Ir(e,t);Lr(e)}function zr(e){if(e.subgraphs.length===0)return;let t=0,n=0;for(let r of e.subgraphs)t=Math.min(t,r.minX),n=Math.min(n,r.minY);let r=-t,i=-n;if(r!==0||i!==0){e.offsetX=r,e.offsetY=i;for(let t of e.subgraphs)t.minX+=r,t.minY+=i,t.maxX+=r,t.maxY+=i;for(let t of e.nodes)t.drawingCoord&&(t.drawingCoord.x+=r,t.drawingCoord.y+=i)}}function Br(e,t){let n=t=>{let n=Xr(e,t);return n.length>0?n[0].name:null},r=new Map,i=t.map((e,t)=>{let i=n(e);if(i===null)return t;let a=r.get(i);return a===void 0?(r.set(i,t),t):a});return t.map((e,t)=>({node:e,i:t})).sort((e,t)=>i[e.i]-i[t.i]||e.i-t.i).map(({node:e})=>e)}function Vr(e,t){let n=new Set,r=t=>{let r=[t];for(;r.length>0;){let t=r.shift();if(!n.has(t.name)){n.add(t.name);for(let n of Xr(e,t))r.push(n)}}};for(let e of t)r(e);let i=[...t];for(let t of e.nodes)n.has(t.name)||(i.push(t),r(t));return i}function Hr(e,t){return e.nodes.find(e=>e.gridCoord!==null&&e.gridCoord.x===t.x&&e.gridCoord.y===t.y)}function Ur(e,t,n,r,i){let a=r===`x`?`y`:`x`,o=i=>{let o=4;for(;;){let s=t[r]+i*o;if(s<0)return null;let c=r===`x`?{x:s,y:t[a]}:{x:t[a],y:s};if(zn(e.grid,c,3))return c;let l=Hr(e,c);if(!l||jr(e,l)!==n)return null;o+=4}};return o(i)??o(i*-1)}function Wr(e,t,n,r){let i=jr(e,t);if(!i)return;let a=n.get(i);if(!a)return;n.delete(i);let o=Z(t),s=Pr(e,t)===`LR`?`y`:`x`;for(let t of a){let n=Pr(e,t),a=Ur(e,o,i,s,1);Cr(e,e.nodes[t.index],a??o,n),r.add(t)}}function Gr(e,t){let n=!0;for(;n;){n=!1;let r=t=>e.config.graphDirection===`LR`?t.gridCoord?.y??0:t.gridCoord?.x??0,i=e.nodes.filter(e=>e.gridCoord!==null).sort((e,t)=>r(e)-r(t));for(let r of i){let i=r.gridCoord;if(i===null)continue;let a=[...Xr(e,r)].sort((t,n)=>Yr(e,t,n));for(let o of a){if(o.gridCoord!==null)continue;let a=kr(e,r),s=kr(e,o),c=a&&a===s&&a.direction?a.direction:e.config.graphDirection,l=c===`LR`?i.x+4:i.y+4,u;u=c===e.config.graphDirection?t[l]??0:c===`LR`?i.y:i.x;let d=c===`LR`?{x:l,y:u}:{x:u,y:l};Cr(e,e.nodes[o.index],d,c),c===e.config.graphDirection&&(t[l]=u+4),n=!0}}}}function Kr(e){let t=e.config.graphDirection,n=[],r=new Set;for(let t of e.edges)t.from!==t.to&&r.add(t.to.name);let i=Vr(e,e.nodes.filter(e=>!r.has(e.name))).filter(t=>{let n=kr(e,t);if(!n)return!0;for(let r of e.edges)if(r.to===t&&kr(e,r.from)!==n)return!1;return!0}),a=new Set(i),o=[],s=[];for(let t of i){let n=jr(e,t);n!==null&&Mr(n).some(n=>n!==t&&!a.has(n)&&!Nr(e,t,n))?o.push(t):s.push(t)}let c=Br(e,s),l=new Map;for(let t of o){let n=jr(e,t),r=l.get(n);r?r.push(t):l.set(n,[t])}let u=new Set,d=!1,f=!1;for(let t of c)Or(e,t)?Xr(e,t).length>0&&(f=!0):d=!0;let p=t===`LR`&&d&&f,m,h=[];p?(m=c.filter(t=>!Or(e,t)),h=c.filter(t=>Or(e,t))):m=c;for(let r of m){let i=t===`LR`?{x:0,y:n[0]??0}:{x:n[0]??0,y:0};Cr(e,e.nodes[r.index],i),n[0]=(n[0]??0)+4,Wr(e,r,l,u)}if(p&&h.length>0)for(let r of h){let i=t===`LR`?{x:4,y:n[4]??0}:{x:n[4]??0,y:4};Cr(e,e.nodes[r.index],i),n[4]=(n[4]??0)+4,Wr(e,r,l,u)}Gr(e,n);for(let t of o){if(u.has(t))continue;let r=jr(e,t),i=Pr(e,t),a=Mr(r).filter(e=>e!==t&&e.gridCoord!==null),o;if(a.length>0){let t=a[0];for(let e of a)(i===`LR`?e.gridCoord.x<t.gridCoord.x:e.gridCoord.y<t.gridCoord.y)&&(t=e);let n=i===`LR`?`y`:`x`;o=Ur(e,t.gridCoord,r,n,1)??{x:t.gridCoord.x,y:t.gridCoord.y}}else o=i===`LR`?{x:0,y:n[0]??0}:{x:n[0]??0,y:0},n[0]=(n[0]??0)+4;Cr(e,e.nodes[t.index],o,i)}Gr(e,n);for(let t of e.nodes)wr(e,t);e.pathBudget=Jn(),oi(e),e.bundles=tr(e),ar(e);let g=or(),_=In(e.grid);for(let t of e.edges){if(t.bundle&&t.path.length>0){Tr(e,t.path),cr(_,g,t.path,t.style),di(e,t);continue}ci(e,t),Dr(e,t,g,_),Tr(e,t.path),cr(_,g,t.path,t.style),di(e,t)}for(let t of e.nodes)t.drawingCoord=xr(e,Z(t)),t.drawing=Hi(t,e);Yt(e.canvas,e.columnWidth,e.rowHeight),Xt(e.roleCanvas,e.columnWidth,e.rowHeight),Rr(e),zr(e)}function qr(e,t){return e.edges.filter(e=>e.from.name===t.name)}function Jr(e,t){let n=kr(e,t),r=[],i=n;for(;i!==null;)r.unshift(i),i=i.parent;return r}function Yr(e,t,n){let r=Jr(e,t),i=Jr(e,n),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=r[a],s=i[a];return!o||!s||o===s?0:e.subgraphs.indexOf(s)-e.subgraphs.indexOf(o)}function Xr(e,t){return qr(e,t).map(e=>e.to)}function Zr(e){return e===K?q:e===q?K:e===J?Y:e===Y?J:e===xn?wn:e===Sn?Cn:e===Cn?Sn:e===wn?xn:Tn}function $(e,t){return e.x===t.x?e.y<t.y?q:K:e.y===t.y?e.x<t.x?Y:J:e.x<t.x?e.y<t.y?Cn:xn:e.y<t.y?wn:Sn}function Qr(e){return e===`LR`?[Y,q,q,Y]:[q,Y,Y,q]}function $r(e,t){if(e.from===e.to)return Qr(t);let n=$(Z(e.from),Z(e.to)),r,i,a,o,s=t===`LR`?X(n,J)||X(n,Sn)||X(n,wn):X(n,K)||X(n,Sn)||X(n,xn);return X(n,Cn)?t===`LR`?(r=q,i=J,a=Y,o=K):(r=Y,i=K,a=q,o=J):X(n,xn)?t===`LR`?(r=K,i=J,a=Y,o=q):(r=Y,i=q,a=K,o=J):X(n,wn)?t===`LR`?(r=q,i=q,a=J,o=K):(r=J,i=K,a=q,o=Y):X(n,Sn)?t===`LR`?(r=q,i=q,a=J,o=q):(r=Y,i=Y,a=K,o=Y):s?t===`LR`&&X(n,J)?(r=q,i=q,a=J,o=Y):t===`TD`&&X(n,K)?(r=Y,i=Y,a=K,o=q):(r=n,i=Zr(n),a=n,o=Zr(n)):(r=n,i=Zr(n),a=n,o=Zr(n)),[r,i,a,o]}var ei=2,ti=200;function ni(e,t){let n=e.gridCoord;return n?t.x>=n.x&&t.x<=n.x+2&&t.y>=n.y&&t.y<=n.y+2:!1}function ri(e,t,n=[]){for(let r=1;r<t.length-1;r++){let i=t[r];if(Ln(e.grid,i)&&!n.some(e=>ni(e,i)))return!1}return!0}function ii(e){let t=e.from.gridCoord,n=e.to.gridCoord;return!t||!n?!1:t.y===n.y&&t.x!==n.x}function ai(e){let t=e.from.name,n=e.to.name;return ii(e)&&n<t?JSON.stringify([n,t]):JSON.stringify([t,n])}function oi(e){let t=new Map;for(let n of e.edges){if(n.from===n.to)continue;let e=ai(n),r=t.get(e);r?r.push(n):t.set(e,[n])}for(let e of t.values()){if(e.length<2)continue;let t=new Set;for(let n=0;n<e.length;n++)e[n].parallelLane={index:n,total:e.length,usedOffsets:t}}}function si(e,t,n,r,i){let a=jn(Z(t.from),n),o=jn(Z(t.to),r),s=X(n,J)||X(n,Y),c=[t.from,t.to],l=t.parallelLane.usedOffsets,u=X(n,Y)?1:X(n,J)?-1:X(n,q)?1:-1,d=X(r,Y)?1:X(r,J)?-1:X(r,q)?1:-1,f=s?{x:a.x+u,y:a.y}:{x:a.x,y:a.y+u},p=s?{x:o.x+d,y:o.y}:{x:o.x,y:o.y+d},m=[a,o],h=[a,o],g=ei*i;for(let t=0;t<ti;t++){let n=g+t;if(l.has(n))continue;let r=a.y+n,i=a.x+n,u=s?[{x:a.x,y:r},{x:o.x,y:r}]:[{x:i,y:a.y},{x:i,y:o.y}],d=Xn([a,...u,o]);if(ri(e,Hn(d),c))return l.add(n),{path:d,labelSegment:u};m=d,h=u;let _=s?f.x!==p.x:f.y!==p.y,v=s?_?[{x:f.x,y:r},{x:p.x,y:r}]:[{x:f.x,y:r},{x:f.x,y:r}]:_?[{x:i,y:f.y},{x:i,y:p.y}]:[{x:i,y:f.y},{x:i,y:f.y}],y=Xn(s?[a,f,{x:f.x,y:r},{x:p.x,y:r},p,o]:[a,f,{x:i,y:f.y},{x:i,y:p.y},p,o]);if(ri(e,Hn(y),c))return l.add(n),{path:y,labelSegment:v};m=y,h=v}return{path:m,labelSegment:h}}function ci(e,t){let n=kr(e,t.from),r=kr(e,t.to),[i,a,o,s]=$r(t,n&&n===r&&n.direction?n.direction:e.config.graphDirection);if(t.parallelLane&&t.parallelLane.index>0){let n=X(i,a),r=n?o:i,c=n?s:a;t.startDir=r,t.endDir=c;let l=si(e,t,r,c,t.parallelLane.index);t.path=l.path,t.text.length>0&&pi(e,t,l.labelSegment,V(t.text));return}let c=jn(Z(t.from),i),l=jn(Z(t.to),a),u=er(e,c,l,Dn(i)),d=er(e,jn(Z(t.from),o),jn(Z(t.to),s),Dn(o));if(u!==null&&d!==null){u.length<=d.length?(t.startDir=i,t.endDir=a,t.path=u):(t.startDir=o,t.endDir=s,t.path=d);return}if(u!==null){t.startDir=i,t.endDir=a,t.path=u;return}if(d!==null){t.startDir=o,t.endDir=s,t.path=d;return}t.startDir=i,t.endDir=a,t.path=[c,l]}function li(e,t){for(let n of e.nodes){let e=n.gridCoord;if(e&&t>=e.x&&t<=e.x+2)return!0}return!1}function ui(e,t,n,r){if(!li(e,r))return r;for(let i=1;i<=n-t;i++){let a=r+i;if(a<=n&&!li(e,a))return a;let o=r-i;if(o>=t&&!li(e,o))return o}return r}function di(e,t){if(t.text.length===0||t.parallelLane&&t.parallelLane.index>0)return;let n=V(t.text),r=fi(t.path),i=r.length,a=[];for(let t=1;t<i;t++){let n=r[t-1],i=r[t],o=[n,i],s=mi(e,o),c=n.x===i.x;a.push({line:o,width:s,index:t,isVertical:c})}let o=t=>ri(e,Hn(t)),s=e=>e.index===1||e.index===a.length,c=a.filter(e=>e.width>=n&&!s(e)&&o(e.line)),l;if(c.length>0)c.sort((e,t)=>t.index-e.index),l=c[0].line;else{let e=a.filter(e=>e.width>=n&&o(e.line));if(e.length>0)e.sort((e,t)=>t.index-e.index),l=e[0].line;else{let e=a.filter(e=>!s(e)&&o(e.line)),n=a.filter(e=>o(e.line)),r=e.length>0?e:n.length>0?n:a;if(r.sort((e,t)=>t.width-e.width),r.length>0)l=r[0].line;else{let e=t.path[0]??{x:0,y:0};l=[e,e]}}}pi(e,t,l,n)}function fi(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.x!==n.x&&e.y!==n.y&&t.push({x:n.x,y:e.y}),t.push(n)}return t}function pi(e,t,n,r){let i=Math.min(n[0].x,n[1].x),a=Math.max(n[0].x,n[1].x),o=ui(e,i,a,i+Math.floor((a-i)/2)),s=e.columnWidth.get(o)??0;e.columnWidth.set(o,Math.max(s,r+2)),t.labelLine=[n[0],n[1]]}function mi(e,t){let n=0,r=Math.min(t[0].x,t[1].x),i=Math.max(t[0].x,t[1].x);for(let t=r;t<=i;t++)n+=e.columnWidth.get(t)??0;return n}var hi={solid:{h:{unicode:`─`,ascii:`-`},v:{unicode:`│`,ascii:`|`}},dotted:{h:{unicode:`┄`,ascii:`.`},v:{unicode:`┆`,ascii:`:`}},thick:{h:{unicode:`━`,ascii:`=`},v:{unicode:`┃`,ascii:`‖`}},invisible:{h:{unicode:` `,ascii:` `},v:{unicode:` `,ascii:` `}}};function gi(e,t,n,r,i,a,o=`solid`){let s=$(t,n),c=[],l=hi[o],u=a?l.h.ascii:l.h.unicode,d=a?l.v.ascii:l.v.unicode;if(X(s,K))for(let a=t.y-r;a>=n.y-i;a--)c.push({x:t.x,y:a}),W(e,t.x,a,d);else if(X(s,q))for(let a=t.y+r;a<=n.y+i;a++)c.push({x:t.x,y:a}),W(e,t.x,a,d);else if(X(s,J))for(let a=t.x-r;a>=n.x-i;a--)c.push({x:a,y:t.y}),W(e,a,t.y,u);else if(X(s,Y))for(let a=t.x+r;a<=n.x+i;a++)c.push({x:a,y:t.y}),W(e,a,t.y,u);else if(X(s,Sn)){for(let i=t.x-r;i>=n.x;i--)c.push({x:i,y:t.y}),W(e,i,t.y,u);for(let r=t.y-1;r>=n.y-i;r--)c.push({x:n.x,y:r}),W(e,n.x,r,d)}else if(X(s,xn)){for(let i=t.x+r;i<=n.x;i++)c.push({x:i,y:t.y}),W(e,i,t.y,u);for(let r=t.y-1;r>=n.y-i;r--)c.push({x:n.x,y:r}),W(e,n.x,r,d)}else if(X(s,wn)){for(let i=t.x-r;i>=n.x;i--)c.push({x:i,y:t.y}),W(e,i,t.y,u);for(let r=t.y+1;r<=n.y+i;r++)c.push({x:n.x,y:r}),W(e,n.x,r,d)}else if(X(s,Cn)){if(n.x-t.x<=1)for(let a=t.y+r;a<=n.y+i;a++)c.push({x:t.x,y:a}),W(e,t.x,a,d);else{for(let i=t.x+r;i<=n.x;i++)c.push({x:i,y:t.y}),W(e,i,t.y,u);for(let r=t.y+1;r<=n.y+i;r++)c.push({x:n.x,y:r}),W(e,n.x,r,d)}}return c}function _i(e,t){if(t.path.length===0){let t=U(e.canvas);return[t,t,t,t,t,t]}let n=Di(e,t),[r,i,a]=yi(e,t.path,t.style),o=i.length>0,s=t.style===`invisible`,c=o&&!s?Si(e,t.path,i[0],t.from):U(e.canvas),l;l=t.hasArrowEnd&&o?wi(e,i[i.length-1],a[a.length-1],t.endMarker):U(e.canvas);let u;if(t.hasArrowStart&&o){let n=i[0][0],r=vi(a[0]),o={x:n.x,y:n.y};X(a[0],Y)?o.x=n.x-1:X(a[0],J)?o.x=n.x+1:X(a[0],q)?o.y=n.y-1:X(a[0],K)&&(o.y=n.y+1),u=wi(e,[n,o],r,t.startMarker)}else u=U(e.canvas);let d=s?U(e.canvas):Ti(e,t.path);return[r,c,l,u,d,n]}function vi(e){return X(e,K)?q:X(e,q)?K:X(e,J)?Y:X(e,Y)?J:X(e,Sn)?Cn:X(e,xn)?wn:X(e,wn)?xn:X(e,Cn)?Sn:Tn}function yi(e,t,n=`solid`){let r=U(e.canvas),i=t[0],a=[],o=[];for(let s=1;s<t.length;s++){let c=t[s],l=xr(e,i),u=xr(e,c);if(An(l,u)){i=c;continue}let d=$(i,c),f=gi(r,l,u,1,-1,e.config.useAscii,n);f.length===0&&f.push(l),a.push(f),o.push(d),i=c}return[r,a,o]}var bi=new Set([`│`,`┃`,`║`,`┆`,`┊`,`|`,`‖`]),xi=new Set([`─`,`━`,`═`,`╌`,`┄`,`-`,`=`]);function Si(e,t,n,r){let i=U(e.canvas),a=e.config.useAscii;if(r.shape===`state-start`||r.shape===`state-end`)return i;let o=n[0],s=$(t[0],t[1]),c=a?`+`:null,l=(t,n)=>e.canvas[t]?.[n];if(X(s,K)){let e=o.x,t=o.y+1,n=l(e,t);W(i,e,t,n!==void 0&&xi.has(n)?c??`┴`:a?`|`:`│`)}else if(X(s,q)){let e=o.x,t=o.y-1,n=l(e,t);W(i,e,t,n!==void 0&&xi.has(n)?c??`┬`:a?`|`:`│`)}else if(X(s,J)||X(s,Y)){let e=r.drawingCoord,t=r.drawing;if(e===null||t===null)throw Error(`drawBoxStart: node "${r.name}" has no drawingCoord/drawing assigned`);let n=t.length,u=X(s,J)?e.x:e.x+n-1,d=o.y,f=l(u,d);W(i,u,d,f!==void 0&&bi.has(f)?c??(X(s,J)?`┤`:`├`):a?`-`:`─`)}return i}function Ci(e,t){if(t===`circle`)return e?`o`:`○`;if(t===`cross`)return e?`x`:`✕`}function wi(e,t,n,r){let i=U(e.canvas);if(t.length===0)return i;let a=t[0],o=t[t.length-1],s=$(a,o);(t.length===1||X(s,Tn))&&(s=n);let c,l=Ci(e.config.useAscii,r);return c=l===void 0?e.config.useAscii?X(s,K)?`^`:X(s,q)?`v`:X(s,J)?`<`:X(s,Y)?`>`:X(n,K)?`^`:X(n,q)?`v`:X(n,J)?`<`:X(n,Y)?`>`:`*`:X(s,K)?`▲`:X(s,q)?`▼`:X(s,J)?`◄`:X(s,Y)?`►`:X(s,xn)?`◥`:X(s,Sn)?`◤`:X(s,Cn)?`◢`:X(s,wn)?`◣`:X(n,K)?`▲`:X(n,q)?`▼`:X(n,J)?`◄`:X(n,Y)?`►`:X(n,xn)?`◥`:X(n,Sn)?`◤`:X(n,Cn)?`◢`:X(n,wn)?`◣`:`●`:l,W(i,o.x,o.y,c),i}function Ti(e,t){let n=U(e.canvas);for(let r=1;r<t.length-1;r++){let i=t[r],a=xr(e,i),o=$(t[r-1],i),s=$(i,t[r+1]),c;c=e.config.useAscii?`+`:X(o,Y)&&X(s,q)||X(o,K)&&X(s,J)?`┐`:X(o,Y)&&X(s,K)||X(o,q)&&X(s,J)?`┘`:X(o,J)&&X(s,q)||X(o,K)&&X(s,Y)?`┌`:X(o,J)&&X(s,K)||X(o,q)&&X(s,Y)?`└`:`+`,W(n,a.x,a.y,c)}return n}function Ei(e,t){return e.edges.some(e=>e!==t&&e.from===t.to&&e.to===t.from)}function Di(e,t){let n=U(e.canvas);if(t.text.length===0)return n;let r=Sr(e,t.labelLine),i;if(t.path.length>=2){let e=t.path[0].y,n=t.path[t.path.length-1].y;n<e?i=!0:n>e&&(i=!1)}let a=Ei(e,t);return Oi(n,r,t.text,i,a),n}function Oi(e,t,n,r,i=!1){if(t.length<2)return;let a=Math.min(t[0].x,t[1].x),o=Math.max(t[0].x,t[1].x),s=Math.min(t[0].y,t[1].y),c=Math.max(t[0].y,t[1].y),l=a+Math.floor((o-a)/2),u=s+Math.floor((c-s)/2);if(r!==void 0&&a===o){let e=c-s,t=Math.max(1,Math.floor(e/4));(i?r:!r)?u-=t:u+=t}let d=Q(n),f=u-Math.floor((d.length-1)/2);for(let t=0;t<d.length;t++){let n=d[t];Jt(e,{x:l-Math.floor(V(n)/2),y:f+t},n)}}function ki(e,t,n){let r=Z(t),i=0;for(let t=0;t<2;t++)i+=e.columnWidth.get(r.x+t)??0;let a=0;for(let t=0;t<2;t++)a+=e.rowHeight.get(r.y+t)??0;let o={width:i+1,height:a+1,labelArea:{x:0,y:0,width:0,height:0},gridColumns:[0,0,0],gridRows:[0,0,0]},s=t.drawingCoord;if(s===null)throw Error(`Node "${t.name}" has no drawingCoord; grid layout must run before bundled-edge drawing`);return br(t.shape,n,o,s)}function Ai(e,t,n){let r=U(e.canvas),i=t.pathToJunction;if(!i||i.length===0)return[r,r,r,r,r,r];let a=U(e.canvas),o=e.config.useAscii,s=i.map((r,a)=>n.type===`fan-in`&&a===0?ki(e,t.from,t.startDir):n.type===`fan-out`&&a===i.length-1?ki(e,t.to,t.endDir):xr(e,r));for(let e=1;e<s.length;e++){let n=s[e-1],r=s[e];An(n,r)||gi(a,n,r,1,-1,o,t.style)}let c=U(e.canvas);for(let t=1;t<i.length-1;t++){let n=i[t],r=xr(e,n),a=$(i[t-1],n),s=$(n,i[t+1]),l;l=o?`+`:X(a,Y)&&X(s,q)||X(a,K)&&X(s,J)?`┐`:X(a,Y)&&X(s,K)||X(a,q)&&X(s,J)?`┘`:X(a,J)&&X(s,q)||X(a,K)&&X(s,Y)?`┌`:X(a,J)&&X(s,K)||X(a,q)&&X(s,Y)?`└`:`+`,W(c,r.x,r.y,l)}let l=U(e.canvas);if(n.type===`fan-in`&&i.length>=2){let e=s[0],t=$(i[0],i[1]),n=o?`+`:null;X(t,K)?W(l,e.x,e.y,n??`┴`):X(t,q)?W(l,e.x,e.y,n??`┬`):X(t,J)?W(l,e.x,e.y,n??`┤`):X(t,Y)&&W(l,e.x,e.y,n??`├`)}return[a,l,r,r,c,U(e.canvas)]}function ji(e,t){let n=U(e.canvas),r=U(e.canvas);if(t.sharedPath.length<2)return[n,r];let i=e.config.useAscii,a=t.edges[0]?.style??`solid`,o=e.config.graphDirection,s=t.sharedPath.map((n,r)=>{if(t.type===`fan-in`&&r===t.sharedPath.length-1){let n=o===`TD`?K:J;return ki(e,t.sharedNode,n)}if(t.type===`fan-out`&&r===0){let n=o===`TD`?q:Y;return ki(e,t.sharedNode,n)}return xr(e,n)});for(let e=1;e<s.length;e++){let t=s[e-1],r=s[e];An(t,r)||gi(n,t,r,1,-1,i,a)}for(let n=1;n<t.sharedPath.length-1;n++){let a=t.sharedPath[n],o=xr(e,a),s=$(t.sharedPath[n-1],a),c=$(a,t.sharedPath[n+1]),l;l=i?`+`:X(s,Y)&&X(c,q)||X(s,K)&&X(c,J)?`┐`:X(s,Y)&&X(c,K)||X(s,q)&&X(c,J)?`┘`:X(s,J)&&X(c,q)||X(s,K)&&X(c,Y)?`┌`:X(s,J)&&X(c,K)||X(s,q)&&X(c,Y)?`└`:`+`,W(r,o.x,o.y,l)}return[n,r]}function Mi(e,t){let n=U(e.canvas);if(t.sharedPath.length<2)return n;let r=t.sharedPath.length-1,i=t.sharedPath[r-1],a=t.sharedPath[r],o=$(i,a),s=e.config.graphDirection,c=s===`TD`?K:J,l=ki(e,t.sharedNode,c);s===`TD`?--l.y:--l.x;let u=t.edges[0]?.endMarker,d=t.edges.every(e=>e.endMarker===u)?u:void 0,f=Ci(e.config.useAscii,d),p;return p=f===void 0?e.config.useAscii?X(o,K)?`^`:X(o,q)?`v`:X(o,J)?`<`:X(o,Y)?`>`:`v`:X(o,K)?`▲`:X(o,q)?`▼`:X(o,J)?`◄`:X(o,Y)?`►`:`▼`:f,W(n,l.x,l.y,p),n}function Ni(e,t){let n=U(e.canvas);if(!t.pathToJunction||t.pathToJunction.length<2)return n;let r=t.pathToJunction.length-1,i=t.pathToJunction[r-1],a=t.pathToJunction[r],o=$(i,a),s=e.config.graphDirection,c=s===`TD`?K:J,l=ki(e,t.to,c);s===`TD`?--l.y:--l.x;let u=Ci(e.config.useAscii,t.endMarker),d;return d=u===void 0?e.config.useAscii?X(o,K)?`^`:X(o,q)?`v`:X(o,J)?`<`:X(o,Y)?`>`:`v`:X(o,K)?`▲`:X(o,q)?`▼`:X(o,J)?`◄`:X(o,Y)?`►`:`▼`:u,W(n,l.x,l.y,d),n}function Pi(e){return X(e,K)?q:X(e,q)?K:X(e,J)?Y:X(e,Y)?J:e}function Fi(e,t){let n=U(e.canvas);if(t.sharedPath.length<2)return n;let r=t.sharedPath[0],i=t.sharedPath[1],a=Pi($(r,i)),o=e.config.graphDirection,s=o===`TD`?q:Y,c=ki(e,t.sharedNode,s);o===`TD`?c.y+=1:c.x+=1;let l;return l=e.config.useAscii?X(a,K)?`^`:X(a,q)?`v`:X(a,J)?`<`:X(a,Y)?`>`:`^`:X(a,K)?`▲`:X(a,q)?`▼`:X(a,J)?`◄`:X(a,Y)?`►`:`▲`,W(n,c.x,c.y,l),n}function Ii(e,t){let n=U(e.canvas);if(!t.pathToJunction||t.pathToJunction.length<2)return n;let r=t.pathToJunction[0],i=t.pathToJunction[1],a=Pi($(r,i)),o=ki(e,t.from,t.startDir);X(t.startDir,K)?--o.y:X(t.startDir,q)?o.y+=1:X(t.startDir,J)?--o.x:X(t.startDir,Y)&&(o.x+=1);let s;return s=e.config.useAscii?X(a,K)?`^`:X(a,q)?`v`:X(a,J)?`<`:X(a,Y)?`>`:`v`:X(a,K)?`▲`:X(a,q)?`▼`:X(a,J)?`◄`:X(a,Y)?`►`:`▼`,W(n,o.x,o.y,s),n}function Li(e,t){let n=U(e.canvas);if(!t.junctionPoint)return n;let r=xr(e,t.junctionPoint),i=e.config.useAscii,a=!1,o=!1,s=!1,c=!1;if(t.sharedPath.length>=2){let e=t.type===`fan-in`?0:t.sharedPath.length-1,n=t.type===`fan-in`?1:t.sharedPath.length-2,r=$(t.sharedPath[e],t.sharedPath[n]);X(r,q)?o=!0:X(r,K)?a=!0:X(r,Y)?c=!0:X(r,J)&&(s=!0)}for(let e of t.edges)if(e.pathToJunction&&e.pathToJunction.length>=2){let n=t.type===`fan-in`?e.pathToJunction.length-1:0,r=t.type===`fan-in`?e.pathToJunction.length-2:1,i=$(e.pathToJunction[r],e.pathToJunction[n]);X(i,q)?a=!0:X(i,K)?o=!0:X(i,Y)?s=!0:X(i,J)&&(c=!0)}let l;return l=i?`+`:a&&o&&s&&c?`┼`:o&&s&&c&&!a?`┬`:a&&s&&c&&!o?`┴`:a&&o&&c&&!s?`├`:a&&o&&s&&!c?`┤`:s&&c?`─`:a&&o?`│`:o&&c?`┌`:o&&s?`┐`:a&&c?`└`:a&&s?`┘`:`┼`,W(n,r.x,r.y,l),n}function Ri(e,t){let n=e.maxX-e.minX,r=e.maxY-e.minY;if(n<=0||r<=0)return H(0,0);let i={x:0,y:0},a={x:n,y:r},o=H(n,r);if(t.config.useAscii){for(let e=i.x+1;e<a.x;e++)W(o,e,i.y,`-`);for(let e=i.x+1;e<a.x;e++)W(o,e,a.y,`-`);for(let e=i.y+1;e<a.y;e++)W(o,i.x,e,`|`);for(let e=i.y+1;e<a.y;e++)W(o,a.x,e,`|`);W(o,i.x,i.y,`+`),W(o,a.x,i.y,`+`),W(o,i.x,a.y,`+`),W(o,a.x,a.y,`+`)}else{for(let e=i.x+1;e<a.x;e++)W(o,e,i.y,`─`);for(let e=i.x+1;e<a.x;e++)W(o,e,a.y,`─`);for(let e=i.y+1;e<a.y;e++)W(o,i.x,e,`│`);for(let e=i.y+1;e<a.y;e++)W(o,a.x,e,`│`);W(o,i.x,i.y,`┌`),W(o,a.x,i.y,`┐`),W(o,i.x,a.y,`└`),W(o,a.x,a.y,`┘`)}return o}function zi(e,t){let n=e.maxX-e.minX,r=e.maxY-e.minY;if(n<=0||r<=0)return[H(0,0),{x:0,y:0},[]];let i=H(n,r),a=[],o=Q(e.name);for(let e=0;e<o.length;e++){let t=o[e],s=1+e,c=1+Math.ceil((n-1-V(t))/2);c<1&&(c=1);let l=Mt(t);for(let e=0;e<l.length;e++)c+e>=n||s>=r||(W(i,c+e,s,l[e]),a.push({x:c+e,y:s}))}return[i,{x:e.minX,y:e.minY},a]}function Bi(e,t){return Vi(e,t)}function Vi(e,t){let n=Z(e),r=t.config.useAscii,i=0;for(let e=0;e<2;e++)i+=t.columnWidth.get(n.x+e)??0;let a=0;for(let e=0;e<2;e++)a+=t.rowHeight.get(n.y+e)??0;let o={x:0,y:0},s={x:i,y:a},c=H(Math.max(o.x,s.x),Math.max(o.y,s.y)),l=fr(e.shape,r),u=e.shape===`state-end`,d=r?u?`=`:`-`:u?`═`:`─`,f=r?u?`‖`:`|`:u?`║`:`│`,p=u?r?{tl:`#`,tr:`#`,bl:`#`,br:`#`}:{tl:`╔`,tr:`╗`,bl:`╚`,br:`╝`}:l;for(let e=o.x+1;e<s.x;e++)W(c,e,o.y,d);for(let e=o.x+1;e<s.x;e++)W(c,e,s.y,d);for(let e=o.y+1;e<s.y;e++)W(c,o.x,e,f);for(let e=o.y+1;e<s.y;e++)W(c,s.x,e,f);W(c,o.x,o.y,p.tl),W(c,s.x,o.y,p.tr),W(c,o.x,s.y,p.bl),W(c,s.x,s.y,p.br);let m=e.displayLabel,h=Q(m),g=o.y+Math.floor(a/2)-Math.floor((h.length-1)/2);for(let e=0;e<h.length;e++){let t=h[e],n=V(t),r=o.x+Math.floor(i/2)-Math.ceil(n/2)+1,a=Mt(t);for(let t=0;t<a.length;t++)W(c,r+t,g+e,a[t])}return c}function Hi(e,t){return Bi(e,t)}function Ui(e){return/^[┌┐└┘├┤┬┴┼│─╭╮╰╯+\-|]$/.test(e)?`border`:`text`}function Wi(e,t=1){let n=Math.max(0,t),r=0;for(let t of e)for(let e of t)r=Math.max(r,V(e));let i=0;for(let t of e)i+=Math.max(t.length,1);return{width:r+2*n+2,height:i+(e.length-1)+2}}function Gi(e,t,n=1){let r=Math.max(0,n),{width:i,height:a}=Wi(e,r),o=t?`-`:`─`,s=t?`|`:`│`,c=t?`+`:`┌`,l=t?`+`:`┐`,u=t?`+`:`└`,d=t?`+`:`┘`,f=t?`+`:`├`,p=t?`+`:`┤`,m=H(i-1,a-1);W(m,0,0,c);for(let e=1;e<i-1;e++)W(m,e,0,o);W(m,i-1,0,l),W(m,0,a-1,u);for(let e=1;e<i-1;e++)W(m,e,a-1,o);W(m,i-1,a-1,d);for(let e=1;e<a-1;e++)W(m,0,e,s),W(m,i-1,e,s);let h=1;for(let t=0;t<e.length;t++){let n=e[t],a=n.length>0?n:[``];for(let e of a){let t=1+r,n=Mt(e);for(let e=0;e<n.length;e++)W(m,t+e,h,n[e]);h++}if(t<e.length-1){W(m,0,h,f);for(let e=1;e<i-1;e++)W(m,e,h,o);W(m,i-1,h,p),h++}}return m}function Ki(e){function t(e){return e.parent===null?0:1+t(e.parent)}let n=[...e];return n.sort((e,n)=>t(e)-t(n)),n}function qi(e,t,n,r){for(let i=0;i<t.length;i++)for(let a=0;a<(t[0]?.length??0);a++){let o=t[i]?.[a];if(o&&o!==` `){let t=i+n.x,o=a+n.y;t>=0&&o>=0&&Ft(e,t,o,r)}}}function Ji(e,t,n,r){for(let i of t)qi(e,i,n,r)}function Yi(e,t,n){let r=e=>/^[┌┐└┘├┤┬┴┼│─╭╮╰╯+\-|.':]$/.test(e);for(let i=0;i<t.length;i++)for(let a=0;a<(t[0]?.length??0);a++){let o=t[i]?.[a];if(o&&o!==` `){let t=i+n.x,s=a+n.y;t>=0&&s>=0&&Ft(e,t,s,r(o)?`border`:`text`)}}}function Xi(e){let t=e.config.useAscii,n={x:0,y:0},r=Ki(e.subgraphs);for(let n of r){let r=Ri(n,e),i={x:n.minX,y:n.minY};e.canvas=Ut(e.canvas,i,t,r),qi(e.roleCanvas,r,i,`border`)}for(let n of e.nodes)!n.drawn&&n.drawingCoord&&n.drawing&&(e.canvas=Ut(e.canvas,n.drawingCoord,t,n.drawing),Yi(e.roleCanvas,n.drawing,n.drawingCoord),n.drawn=!0);let i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=new Set;for(let t of e.edges)if(t.bundle&&t.pathToJunction){let n=t.bundle,[r,f,,,p,m]=Ai(e,t,n);if(i.push(r),a.push(p),c.push(f),l.push(m),n.type===`fan-in`&&t.hasArrowStart){let n=Ii(e,t);s.push(n)}if(!d.has(n)){d.add(n);let[t,r]=ji(e,n);if(i.push(t),a.push(r),n.type===`fan-in`){let t=Mi(e,n);o.push(t)}if(n.type===`fan-out`&&n.edges.every(e=>e.hasArrowStart)){let t=Fi(e,n);s.push(t)}let c=Li(e,n);u.push(c)}if(n.type===`fan-out`&&t.hasArrowEnd){let n=Ni(e,t);o.push(n)}}else{let[n,r,u,d,f,p]=_i(e,t);i.push(n),a.push(f),o.push(u),s.push(d),c.push(r),l.push(p)}e.canvas=Ut(e.canvas,n,t,...i),Ji(e.roleCanvas,i,n,`line`),e.canvas=Ut(e.canvas,n,t,...a),Ji(e.roleCanvas,a,n,`corner`),e.canvas=Ut(e.canvas,n,t,...u),Ji(e.roleCanvas,u,n,`junction`),e.canvas=Ut(e.canvas,n,t,...o),Ji(e.roleCanvas,o,n,`arrow`),e.canvas=Ut(e.canvas,n,t,...c),Ji(e.roleCanvas,c,n,`junction`),e.canvas=Ut(e.canvas,n,t,...s),Ji(e.roleCanvas,s,n,`arrow`),e.canvas=Ut(e.canvas,n,t,...l),Ji(e.roleCanvas,l,n,`text`);for(let n of e.subgraphs){if(n.nodes.length===0)continue;let[r,i,a]=zi(n,e);e.canvas=Ut(e.canvas,i,t,r),qi(e.roleCanvas,r,i,`text`);for(let{x:t,y:n}of a){let a=r[t]?.[n];a===` `&&(W(e.canvas,t+i.x,n+i.y,a),Ft(e.roleCanvas,t+i.x,n+i.y,`text`))}}return e.canvas}function Zi(e,t,n,r){if(r(e))return e;let i=Math.max(e-t,n-e);for(let a=1;a<=i;a++){let i=e+a;if(i<=n&&r(i))return i;let o=e-a;if(o>=t&&r(o))return o}}function Qi(e){return`${e.keys.length>0?e.keys.join(`,`)+` `:` `}${e.type} ${e.name}`}function $i(e){let t=Q(e.label),n=e.attributes.map(Qi);return n.length===0?[t]:[t,n]}function ea(e,t,n=!1,r=!1){if(t)switch(e){case`one`:return r?`+`:`|`;case`zero-one`:return n?`o|`:`|o`;case`many`:return n?`<`:`>`;case`zero-many`:return n?`o<`:`>o`}else switch(e){case`one`:return r?`┼`:`│`;case`zero-one`:return n?`○│`:`│○`;case`many`:return n?`╟`:`╢`;case`zero-many`:return n?`○╟`:`╢○`}}function ta(e){let t=new Set,n=[],r=new Map;for(let t of e.entities)r.set(t.id,new Set);for(let t of e.relationships)r.get(t.entity1)?.add(t.entity2),r.get(t.entity2)?.add(t.entity1);function i(e,n){let i=[e];for(;i.length>0;){let e=i.pop();if(!t.has(e)){t.add(e),n.add(e);for(let n of r.get(e)??[])t.has(n)||i.push(n)}}}for(let r of e.entities)if(!t.has(r.id)){let e=new Set;i(r.id,e),e.size>0&&n.push(e)}return n}function na(e,t,n){let r=e.get(t);if(r===void 0)throw Error(`ER diagram layout: missing ${n} for entity "${t}"`);return r}function ra(e,t,n,r){let i=z(_(e));if(i.entities.length===0)return``;let a=t.useAscii,o=On(t.paddingX,5,6,6),s=On(t.paddingY,5,4,2),c=On(t.paddingY,5,2,1),l=Math.max(...[`one`,`zero-one`,`many`,`zero-many`].flatMap(e=>[ea(e,a,!1).length,ea(e,a,!0).length])),u=new Map,d=new Map,f=new Map,p=new Map;for(let e of i.entities){p.set(e.id,e);let n=$i(e);u.set(e.id,n);let{width:r,height:i}=Wi(n,t.boxBorderPadding);d.set(e.id,r),f.set(e.id,i)}let m=new Map;for(let e of i.relationships){if(!e.label)continue;let t=[e.entity1,e.entity2].sort().join(`|`),n=lr(e.label);m.set(t,Math.max(m.get(t)??0,n))}let h=ta(i),g=new Map,v=0;for(let e of h){let t=i.entities.filter(t=>e.has(t.id)),n=Math.max(2,Math.ceil(Math.sqrt(t.length))),r=0,a=0,l=0;for(let e=0;e<t.length;e++){let i=t[e],c=na(d,i.id,`box width`),p=na(f,i.id,`box height`);l>=n&&(v+=a+s,r=0,a=0,l=0),g.set(i.id,{entity:i,sections:na(u,i.id,`sections`),x:r,y:v,width:c,height:p});let h=o,_=l+1>=n,y=t[e+1];if(!_&&y){let e=[i.id,y.id].sort().join(`|`),t=m.get(e)??0;t>0&&(h=Math.max(h,t+2))}r+=c+h,a=Math.max(a,p),l++}v+=a+c}let y=0,b=0;for(let e of g.values())y=Math.max(y,e.x+e.width),b=Math.max(b,e.y+e.height);y+=4,b+=2;let x=H(y-1,b-1),S=Nt(y-1,b-1);function C(e,t,n,r){W(x,e,t,n,{role:r,roleCanvas:S})}function w(e,t){let n=S[e]?.[t];return n===`text`||n===`border`}function T(e,t,n,r,i){for(let a=0;a<e.length;a++){let e=t+a;if(!(e<r||e>i)&&w(e,n))return!1}return!0}function E(e,t,n,r,i){for(let a=0;a<e.length;a++){let e=t+a;if(!(e<r||e>i)&&(w(e,n)||S[e]?.[n]===`arrow`||D.has(`${e},${n}`)))return!1}return!0}for(let e of g.values()){let n=Gi(e.sections,a,t.boxBorderPadding);for(let t=0;t<n.length;t++)for(let r=0;r<n[0].length;r++){let i=n[t][r];if(i!==` `){let n=e.x+t,a=e.y+r;n<y&&a<b&&C(n,a,i,Ui(i))}}}let D=new Set;for(let e of g.values())for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++)D.add(`${e.x+n},${e.y+t}`);function O(e,t,n,r){D.has(`${e},${t}`)||(r===`text`||S[e]?.[t]!==`text`)&&C(e,t,n,r)}function ee(e,t,n,r){S[e-1]?.[t]!==`text`&&S[e+1]?.[t]!==`text`&&O(e,t,n,r)}function k(e,t,n,r){for(let i=n;i<=r;i++)for(let n=e;n<=t;n++){let e=x[n]?.[i];if(e!==void 0&&e!==` `)return!1}return!0}let A=[];function te(e,t,n){for(let r of A)if(Math.abs(r.x-e)===1&&t<=r.yEnd&&n>=r.yStart)return!0;return!1}function j(e,t,n){for(let r of A)if(!(Math.abs(r.x-e)>1)&&t<=r.yEnd&&n>=r.yStart)return!0;return!1}function M(e,t,n){A.push({x:e,yStart:t,yEnd:n})}let ne=a?`-`:`─`,N=a?`|`:`│`,P=a?`.`:`╌`,re=a?`:`:`┊`;function ie(e,t){return a?`+`:e===`down`?t===`right`?`┌`:`┐`:t===`right`?`└`:`┘`}function F(e,t,n,r){O(e,t,ie(n,r),`line`)}let I=new Map,ae=new Map;for(let e of i.relationships){let t=g.get(e.entity1),n=g.get(e.entity2);if(!t||!n)continue;let r=t.y+Math.floor(t.height/2),i=n.y+Math.floor(n.height/2);if(Math.abs(r-i)<Math.max(t.height,n.height))continue;let[a,o]=r<i?[t,n]:[n,t],s=a.x+Math.floor(a.width/2),c=o.x+Math.floor(o.width/2),l=ae.get(a.entity.id);l||(l=[],ae.set(a.entity.id,l)),l.push({rel:e,otherCenterX:c});let u=I.get(o.entity.id);u||(u=[],I.set(o.entity.id,u)),u.push({rel:e,otherCenterX:s})}function oe(e,t,n){let r=n.get(e.entity.id),i=e.x+Math.floor(e.width/2);if(!r||r.length<=1)return i;let a=[...r].sort((e,t)=>e.otherCenterX-t.otherCenterX),o=a.findIndex(e=>e.rel===t);if(o===-1)return i;let s=Math.min(1,Math.floor((e.width-1)/2)),c=Math.max(0,e.width-1-s*2),l=a.length>1?c/(a.length-1):0;return e.x+s+Math.round(o*l)}for(let e of i.relationships){let t=g.get(e.entity1),n=g.get(e.entity2);if(!t||!n)continue;let r=e.identifying?ne:P,i=e.identifying?N:re,o=t.x+Math.floor(t.width/2),c=t.y+Math.floor(t.height/2),u=n.x+Math.floor(n.width/2),d=n.y+Math.floor(n.height/2);if(Math.abs(c-d)<Math.max(t.height,n.height)){let[c,d]=o<u?[t,n]:[n,t],[f,p]=o<u?[e.cardinality1,e.cardinality2]:[e.cardinality2,e.cardinality1],m=c.x+c.width,h=d.x-1,_=c.y+Math.floor(c.height/2),v;for(let e of g.values())e!==c&&e!==d&&e.y===c.y&&e.x<h+1&&e.x+e.width>m&&(v=Math.max(v??0,e.y+e.height));let y=h-m+1,b=+(y>=l+1),C=ea(f,a,!1),w=ea(p,a,!0),E=+(y>=3&&C[0]===N),D=+(y>=3&&w[w.length-1]===N),A=m+E,te=h-D,j;if(v===void 0){for(let e=m;e<=h;e++)ee(e,_,r,`line`);if(j=_+1,e.label){let t=m+b,n=h-b,r=Q(e.label).length,i=_+1+Math.max(s-1,1);for(;j<i&&!k(t,n,j,j+r-1);)j++}}else{let t=Math.max(c.y+c.height,d.y+d.height,v),n=e.label?Q(e.label).length:0,a=t+1,o=t+Math.max(s*3,4);for(;a<o&&!k(m,h,a,a+n);)a++;Lt(x,h+1,a+n+1),Pt(S,h+1,a+n+1);for(let e=_;e<=a;e++)O(m,e,i,`line`),O(h,e,i,`line`);for(let e=m;e<=h;e++)ee(e,a,r,`line`);m!==h&&(F(m,a,`up`,`right`),F(h,a,`up`,`left`)),j=a+1}for(let e=0;e<C.length;e++)O(A+e,_,C[e],`arrow`);for(let e=0;e<w.length;e++)O(te-w.length+1+e,_,w[e],`arrow`);if(e.label){let t=Q(e.label),n=Math.floor((m+h)/2),r=m+b,i=h-b;for(let e=0;e<t.length;e++){let a=t[e],o=Mt(a),s=Math.max(r,n-Math.floor(o.length/2)),c=j+e;if(Lt(x,Math.max(s+o.length,1),Math.max(c+1,1)),Pt(S,Math.max(s+o.length,1),Math.max(c+1,1)),T(o,s,c,r,i))for(let e=0;e<o.length;e++){let t=s+e;t>=r&&t<=i&&O(t,c,o[e],`text`)}}}}else{let[o,s]=c<d?[t,n]:[n,t],[l,u]=c<d?[e.cardinality1,e.cardinality2]:[e.cardinality2,e.cardinality1],f=o.y+o.height,p=s.y-1,m=oe(o,e,ae),h=oe(s,e,I);function L(e,t,n){for(let r=t;r<=n;r++)if(D.has(`${e},${r}`))return!1;return!0}let _=f,v=p,y=Math.max(...[...g.values()].filter(e=>e.y===o.y).map(e=>e.y+e.height)),b=s.y,w=Math.max(f,y+1),T=Math.min(p,b-1);function se(e,t,n){let r=Math.floor(w<=T?(w+T)/2:(f+p)/2);if(w>T)return r;for(let r=w;r<=T;r++)if(k(e,t,r,r+n))return r;return r}let A=m!==h,ne=Math.min(m,h),N=Math.max(m,h),P=A?se(ne,N,0):p,re=A?P-1:p,ie=!L(m,w,T)||!L(h,w,T)||te(m,f,A?P:p)||A&&te(h,P,p),R=m;if(ie){let e=x.length,t;for(let n=0;n<=e;n++){let e=m+n;if(L(e,f,p)&&!j(e,f,p)){t=e;break}let r=m-n;if(n>0&&L(r,f,p)&&!j(r,f,p)){t=r;break}}R=t??m;for(let e=f;e<=_;e++)O(m,e,i,`line`);for(let e=Math.min(m,R);e<=Math.max(m,R);e++)ee(e,_,r,`line`);for(let e=_;e<=v;e++)O(R,e,i,`line`);for(let e=Math.min(R,h);e<=Math.max(R,h);e++)ee(e,v,r,`line`);for(let e=v;e<=p;e++)O(h,e,i,`line`);if(m!==R){let e=R>m?`right`:`left`,t=e===`right`?`left`:`right`;F(m,_,`up`,e),F(R,_,`down`,t)}if(R!==h){let e=h>R?`right`:`left`,t=e===`right`?`left`:`right`;F(R,v,`up`,e),F(h,v,`down`,t)}M(R,_,v)}else{for(let e=f;e<=re;e++)O(m,e,i,`line`);if(M(m,f,A?P:re),A){for(let e=ne;e<=N;e++)ee(e,P,r,`line`);for(let e=P+1;e<=p;e++)O(h,e,i,`line`);M(h,P,p);let e=h>m?`right`:`left`,t=e===`right`?`left`:`right`;F(m,P,`up`,e),F(h,P,`down`,t),R=h}}let ce=ea(l,a,!1,!0);for(let e=0;e<ce.length;e++)O(m-Math.floor(ce.length/2)+e,_,ce[e],`arrow`);let le=m===h?m:h,ue=ea(u,a,!0,!0);for(let e=0;e<ue.length;e++)O(le-Math.floor(ue.length/2)+e,v,ue[e],`arrow`);if(e.label){let t=Q(e.label),n=Math.max(ce.length-1-Math.floor(ce.length/2),ue.length-1-Math.floor(ue.length/2)),r=R+n+2,i=t.map(e=>Mt(e)),a=r+Math.max(...i.map(e=>e.length))-1,o=t.length,s=Math.floor((f+p)/2)-Math.floor((o-1)/2);a>=0&&(Lt(x,a+1,p+1),Pt(S,a+1,p+1));let c=null;for(let e=0;e<=p-f&&c===null;e++){let t=e===0?[s]:[s+e,s-e];for(let e of t)if(!(e<f||e+o-1>p)&&i.every((t,n)=>E(t,r,e+n,0,a))){c=e;break}}if(c!==null)for(let e=0;e<o;e++){let t=i[e],n=c+e;for(let e=0;e<t.length;e++){let i=r+e;i>=0&&O(i,n,t[e],`text`)}S[r-1]?.[n]===`line`&&C(r-1,n,` `,`line`);let a=r+t.length;S[a]?.[n]===`line`&&C(a,n,` `,`line`)}}}}return Wt(x,{roleCanvas:S,colorMode:n,theme:r})}var ia=4,aa=[`O`,`/|\\`,`/ \\`],oa=3,sa=4;function ca(e){return e.seqNumber===void 0?ia:ia+String(e.seqNumber).length}function la(e,t,n,r){let i=ke(_(e));if(i.actors.length===0)return``;let a=t.useAscii,o=a?`-`:`─`,s=a?`|`:`│`,c=a?`+`:`┌`,l=a?`+`:`┐`,u=a?`+`:`└`,d=a?`+`:`┘`,f=a?`+`:`┬`,p=a?`+`:`┴`,m=a?`+`:`├`,h=a?`+`:`┤`,g=new Map;i.actors.forEach((e,t)=>g.set(e.id,t));function v(e){let t=g.get(e);if(t===void 0)throw Error(`Sequence diagram: unknown actor "${e}"`);return t}function y(e){let t=lr(e.label?`${e.type} [${e.label}]`:e.type);for(let n of e.dividers)n.label&&(t=Math.max(t,lr(`[${n.label}]`)));return t}let b=Math.max(0,t.boxBorderPadding),x=e=>Math.max(lr(e.label),e.type===`actor`?oa:0),S=e=>ur(e.label)+(e.type===`actor`?aa.length:0),C=i.actors.map(e=>x(e)+2*b+2),w=C.map(e=>Math.ceil(e/2)),T=i.actors.map(e=>S(e)+2),E=Math.max(...T,3),D=(e,t)=>t-Math.floor(C[e]/2),O=Math.floor((E-1)/2),ee=E-1-O,k=new Map,A=new Map;i.actors.forEach((e,t)=>{e.createdAt!==void 0&&k.set(e.createdAt,t),e.destroyedAt!==void 0&&A.set(e.destroyedAt,t)});let te=new Map,j=new Map,M=i.boxes.filter(e=>e.actorIds.length>0).map(e=>{let t=e.actorIds.map(v);return{label:e.label,lo:Math.min(...t),hi:Math.max(...t)}}),ne=M.length>0,N=i.actors.map((e,t)=>M.findIndex(e=>e.lo<=t&&t<=e.hi)),P=+!!ne,re=e=>e===``?0:lr(e)+6,ie=Array(Math.max(i.actors.length-1,0)).fill(0);for(let e of i.messages){let t=v(e.from),n=v(e.to);if(t===n)continue;let r=Math.min(t,n),i=Math.max(t,n),a=lr(e.label)+4,o=i-r,s=Math.ceil(a/o);for(let e=r;e<i;e++)ie[e]=Math.max(ie[e],s)}function F(e){let t=Q(e.text);return Math.max(...t.map(e=>V(e)))+2+2*b}let I=Array(i.actors.length).fill(0),ae=Array(i.actors.length).fill(0);for(let e of i.notes){if(e.position!==`left`&&e.position!==`right`)continue;let t=g.get(e.actorIds[0])??0,n=F(e);e.position===`left`?I[t]=Math.max(I[t],n):ae[t]=Math.max(ae[t],n)}let oe=On(t.paddingX,5,10,4),L=[Math.max(w[0]+(N[0]===-1?0:2),I[0]+1)];for(let e=1;e<i.actors.length;e++){let t=N[e-1],n=N[e],r=t===n?0:(t===-1?0:1)+(n===-1?0:1),i=r===0?0:r*2-1,a=Math.max(ae[e-1],I[e])+2,o=Math.max(w[e-1]+w[e]+2+i,ie[e-1]+2,a,oe);L[e]=L[e-1]+o}let se=e=>D(e.lo,L[e.lo])-1-1,R=e=>Math.max(D(e.hi,L[e.hi])+C[e.hi]-1+1+1,se(e)+re(e.label)-1);for(let e of M){if(e.hi+1>=i.actors.length)continue;let t=D(e.hi+1,L[e.hi+1]),n=N[e.hi+1]===-1?0:2,r=R(e)+1+1+n-t;if(r>0){let t=L.slice(e.hi+1).map(e=>e+r);L.splice(e.hi+1,t.length,...t)}}for(let e of i.blocks){let t=-1,n=-1,r=1/0,a=-1;for(let o=e.startIndex;o<=e.endIndex&&!(o>=i.messages.length);o++){let e=i.messages[o],s=v(e.from),c=v(e.to);if(t=t===-1?Math.min(s,c):Math.min(t,s,c),n=Math.max(n,s,c),r=Math.min(r,L[Math.min(s,c)]),a=Math.max(a,L[Math.max(s,c)]),s===c){let t=L[s]+ia+2+lr(e.label);a=Math.max(a,t)}}if(n===-1||n+1>=i.actors.length)continue;let o=Math.max(0,r-sa),s=a+sa,c=o+1+y(e),l=Math.max(s,c),u=L[n+1],d=l+2-u;if(d>0){let e=L.slice(n+1).map(e=>e+d);L.splice(n+1,e.length,...e)}}let ce=[],le=[],ue=new Map,de=new Map,fe=new Map,pe=[],me=P,he=me+E,z=he+P,ge=On(t.paddingY,5,1,0),_e=Math.max(ge,1);for(let e of i.notes){if(e.afterIndex!==-1)continue;z+=ge;let t=Q(e.text),n=F(e),r=t.length+2,i=g.get(e.actorIds[0])??0,a;if(e.position===`left`)a=L[i]-n-1;else if(e.position===`right`)a=L[i]+2;else if(e.actorIds.length>=2){let t=g.get(e.actorIds[1])??i;a=Math.floor((L[i]+L[t])/2)-Math.floor(n/2)}else a=L[i]-Math.floor(n/2);a=Math.max(0,a),pe.push({x:a,y:z,width:n,height:r,lines:t}),z+=r}for(let e=0;e<i.messages.length;e++){for(let t=0;t<i.blocks.length;t++)i.blocks[t].startIndex===e&&(z+=ge+1,ue.set(t,z-1));for(let t=0;t<i.blocks.length;t++)for(let n=0;n<i.blocks[t].dividers.length;n++)i.blocks[t].dividers[n].index===e&&(z+=ge,fe.set(`${t}:${n}`,z),z+=_e);z+=ge;let t=i.messages[e],n=t.from===t.to,r=ur(t.label),a=n?void 0:k.get(e),o=A.get(e);if(n)le[e]=z+1,ce[e]=z,z+=2+r;else{let t=a===void 0?0:O,n=a===void 0?0:ee;le[e]=z,ce[e]=z+r+t,z+=r+t+1+n,a!==void 0&&te.set(a,ce[e]-t)}o!==void 0&&(j.set(o,z),z+=1);for(let t=0;t<i.notes.length;t++)if(i.notes[t].afterIndex===e){z+=ge;let e=i.notes[t],n=Q(e.text),r=F(e),a=n.length+2,o=g.get(e.actorIds[0])??0,s;if(e.position===`left`)s=L[o]-r-1;else if(e.position===`right`)s=L[o]+2;else if(e.actorIds.length>=2){let t=g.get(e.actorIds[1])??o;s=Math.floor((L[o]+L[t])/2)-Math.floor(r/2)}else s=L[o]-Math.floor(r/2);s=Math.max(0,s),pe.push({x:s,y:z,width:r,height:a,lines:n}),z+=a}for(let t=0;t<i.blocks.length;t++)i.blocks[t].endIndex===e&&(z+=ge,de.set(t,z),z+=_e)}z+=_e;let ve=z,ye=ve+P,be=ye+E+P,xe=(L[L.length-1]??0)+(w[w.length-1]??0)+2;for(let e of M)xe=Math.max(xe,R(e)+2);for(let e=0;e<i.messages.length;e++){let t=i.messages[e];if(t.from===t.to){let e=L[v(t.from)]+ca(t)+2+2+lr(t.label);xe=Math.max(xe,e+1)}}for(let e of pe)xe=Math.max(xe,e.x+e.width+1);let Se=H(xe,be-1),Ce=Nt(xe,be-1);function B(e,t,n,r){W(Se,e,t,n,{role:r,roleCanvas:Ce})}function we(e,t,n,r,i){let a=Mt(n);for(let n=0;n<a.length;n++){let o=e+n;if(i!==void 0&&o>=i||a[n+1]===``&&i!==void 0&&o+1>=i)break;B(o,t,a[n],r)}}function Te(e,t,n,r,i){let a=r===`actor`?aa:[],f=[...a,...Q(n)],p=Math.max(lr(n),a.length>0?oa:0),m=p+2*b+2,h=i,g=h-2,_=e-Math.floor(m/2);B(_,t,c,`border`);for(let e=1;e<m-1;e++)B(_+e,t,o,`border`);B(_+m-1,t,l,`border`);for(let e=0;e<g;e++){let n=t+1+e;B(_,n,s,`border`),B(_+m-1,n,s,`border`);let r=f[e];r!==void 0&&we(_+1+b+Math.floor((p-V(r))/2),n,r,`text`)}let v=t+h-1;B(_,v,u,`border`);for(let e=1;e<m-1;e++)B(_+e,v,o,`border`);B(_+m-1,v,d,`border`)}let Ee=e=>{let t=te.get(e);return t===void 0?he:t+E},De=e=>j.get(e)??ve;for(let e=0;e<i.actors.length;e++){let t=L[e];for(let n=Ee(e);n<=De(e);n++)B(t,n,s,`line`)}let Oe=a?`+`:`┼`;function Ae(e,t,n){let r=se(e),i=R(e),a=t+E+1;B(r,t,c,`border`),B(i,t,l,`border`),B(r,a,u,`border`),B(i,a,d,`border`);for(let e=r+1;e<i;e++)B(e,t,o,`border`),B(e,a,o,`border`);for(let e=t+1;e<a;e++)B(r,e,s,`border`),B(i,e,s,`border`);n!==``&&we(r+2,t,` ${Q(n)[0]} `,`text`);for(let n=e.lo;n<=e.hi;n++){let e=L[n];Ee(n)<=t&&t<=De(n)&&B(e,t,Oe,`junction`),Ee(n)<=a&&a<=De(n)&&B(e,a,Oe,`junction`)}}for(let e of M)Ae(e,0,e.label),Ae(e,ve,``);for(let e=0;e<i.actors.length;e++){let t=i.actors[e],n=te.get(e)??me,r=j.has(e);Te(L[e],n,t.label,t.type,E),r||Te(L[e],ye,t.label,t.type,E),a||(B(L[e],n+E-1,f,`junction`),r||B(L[e],ye,p,`junction`))}for(let e=0;e<i.messages.length;e++){let t=i.messages[e],n=v(t.from),r=v(t.to),c=L[n],l=L[r],u=n===r,d=t.lineStyle===`dashed`,f=t.arrowHead===`filled`,p=t.isLost===!0,h=a?`x`:`✕`,g=d?a?`.`:`╌`:o;if(u){let n=ce[e],r=ca(t),i=t.seqNumber===void 0?void 0:String(t.seqNumber),o=Q(t.label);B(c,n,m,`junction`);let l=c+1;if(i!==void 0){for(let e=0;e<i.length;e++)B(c+1+e,n,i[e],`text`);l=c+1+i.length}for(let e=l;e<c+r;e++)B(e,n,g,`line`);B(c+r,n,a?`+`:`┐`,`corner`);let u=c+r+2;for(let e=0;e<o.length;e++){let t=n+1+e;B(c+r,t,s,`line`),we(u,t,o[e],`text`,xe)}let d=n+1+o.length;B(c,d,p?h:f?a?`<`:`◀`:a?`<`:`◁`,`arrow`);for(let e=c+1;e<c+r;e++)B(e,d,g,`line`);B(c+r,d,a?`+`:`┘`,`corner`)}else{let n=le[e],i=ce[e],o=c<l,s=k.get(e)===r,u=l;if(s){let e=D(r,l),t=e+C[r]-1;u=o?e-1:t+1}let d=Math.floor((c+l)/2),m=Q(t.label);for(let e=0;e<m.length;e++){let t=m[e];we(d-Math.floor(V(t)/2),n+e,t,`text`,xe)}if(o){for(let e=c+1;e<u;e++)B(e,i,g,`line`);B(u,i,p?h:f?a?`>`:`▶`:a?`>`:`▷`,`arrow`),t.bidirectional&&B(c,i,a?`<`:`◀`,`arrow`)}else{for(let e=u+1;e<c;e++)B(e,i,g,`line`);B(u,i,p?h:f?a?`<`:`◀`:a?`<`:`◁`,`arrow`),t.bidirectional&&B(c,i,a?`>`:`▶`,`arrow`)}if(t.seqNumber!==void 0){let e=String(t.seqNumber);if(o){let t=c+1;if(t+e.length<l)for(let n=0;n<e.length;n++)B(t+n,i,e[n],`text`)}else{let t=c-e.length;if(t>u)for(let n=0;n<e.length;n++)B(t+n,i,e[n],`text`)}}}}for(let[e,t]of j)B(L[e],t,a?`x`:`✕`,`arrow`);let je=xe-1;for(let e=0;e<i.blocks.length;e++){let t=i.blocks[e],n=ue.get(e),r=de.get(e);if(n===void 0||r===void 0)continue;let a=xe,f=0;for(let e=t.startIndex;e<=t.endIndex&&!(e>=i.messages.length);e++){let t=i.messages[e],n=g.get(t.from)??0,r=g.get(t.to)??0;if(a=Math.min(a,L[Math.min(n,r)]),f=Math.max(f,L[Math.max(n,r)]),n===r){let e=L[n]+ca(t)+2+lr(t.label);f=Math.max(f,e)}}let p=a-sa,_=f+sa,v=1/0,b=-1/0;for(let e of L)e>f&&e<v&&(v=e),e<a&&e>b&&(b=e);_>=v&&(_=Math.max(f,v-sa)),p<=b&&(p=Math.min(a,b+sa)),p=Math.max(0,p),_>je&&(Lt(Se,_+1,be-1),Pt(Ce,_+1,be-1),je=_);let x=t.label?`${t.type} [${t.label}]`:t.type,S=p+1+y(t);if(S>_){_=S;let[e]=It(Se);_>e&&(Lt(Se,_,be-1),Pt(Ce,_,be-1)),xe=Math.max(xe,_+1),je=Math.max(je,_)}B(p,n,c,`border`);for(let e=p+1;e<_;e++)B(e,n,o,`border`);B(_,n,l,`border`);let C=Q(x);for(let e=0;e<C.length&&n+e<r;e++)we(p+1,n+e,C[e],`text`,_);B(p,r,u,`border`);for(let e=p+1;e<_;e++)B(e,r,o,`border`);B(_,r,d,`border`);for(let e=n+1;e<r;e++)B(p,e,s,`border`),B(_,e,s,`border`);for(let n=0;n<t.dividers.length;n++){let r=fe.get(`${e}:${n}`);if(r===void 0)continue;let i=Me();B(p,r,m,`junction`);for(let e=p+1;e<_;e++)B(e,r,i,`line`);B(_,r,h,`junction`);let a=t.dividers[n].label;if(a){let e=`[${a}]`;we(p+1,r,e,`text`,_)}}}for(let e of pe){Lt(Se,e.x+e.width,e.y+e.height),Pt(Ce,e.x+e.width,e.y+e.height),B(e.x,e.y,c,`border`);for(let t=1;t<e.width-1;t++)B(e.x+t,e.y,o,`border`);B(e.x+e.width-1,e.y,l,`border`);for(let t=0;t<e.lines.length;t++){let n=e.y+1+t;B(e.x,n,s,`border`),B(e.x+e.width-1,n,s,`border`);for(let t=e.x+1;t<e.x+e.width-1;t++)B(t,n,` `,`text`);we(e.x+1+b,n,e.lines[t],`text`)}let t=e.y+e.height-1;B(e.x,t,u,`border`);for(let n=1;n<e.width-1;n++)B(e.x+n,t,o,`border`);B(e.x+e.width-1,t,d,`border`)}return Wt(Se,{roleCanvas:Ce,colorMode:n,theme:r});function Me(){return a?`-`:`╌`}}function ua(e,t){return e.rowStart<=t.rowEnd&&t.rowStart<=e.rowEnd}function da(e,t){let n=e.map(e=>({item:e,geom:t(e)})).sort((e,t)=>e.geom.idealMid-t.geom.idealMid),r=(e,t)=>{let r=n[e];if(r)for(let i=e+t;i>=0&&i<n.length;i+=t){let e=n[i];if(e&&ua(e.geom,r.geom))return e.geom}},i=new Map;for(let[e,t]of n.entries()){let n=t.geom,a=r(e,-1),o=r(e,1),s=a&&a.end>=n.start?Math.floor((a.idealMid+n.idealMid)/2)+1:-1/0,c=o&&n.end>=o.start?Math.floor((n.idealMid+o.idealMid)/2):1/0;i.set(t.item,{left:s,right:c})}return i}function fa(e){let t=[];e.annotation&&t.push(`<<${e.annotation}>>`);let n=Q(e.label);t.push(...n);let r=e.attributes.map(he),i=e.methods.map(he),a=[t];return r.length>0&&a.push(r),i.length>0&&a.push(i),a}function pa(e,t){return{type:e,markerAt:t,dashed:e===`dependency`||e===`realization`}}function ma(e,t,n){switch(e){case`inheritance`:case`realization`:return n===`down`?t?`^`:`△`:n===`up`?t?`v`:`▽`:n===`left`?t?`>`:`◁`:t?`<`:`▷`;case`composition`:return t?`*`:`◆`;case`aggregation`:return t?`o`:`◇`;case`association`:case`dependency`:return n===`down`?t?`v`:`▼`:n===`up`?t?`^`:`▲`:n===`left`?t?`<`:`◀`:t?`>`:`▶`}}function ha(e,t,n,r,i){let a=e+t.length-1,o=r>e,s=i<a;if(!o&&!s)return{start:e,cells:t};let c=o?r:e,l=Math.max(0,(s?i:a)-c+1),u=+!!o+ +!!s;if(l===0)return{start:c,cells:[]};if(l<u)return{start:c,cells:[`…`]};let d=Math.max(0,l-u),f=Mt(n),p=f.length<=d?f:o&&!s?f.slice(f.length-d):f.slice(0,d),m=[...o?[`…`]:[],...p,...s?[`…`]:[]];return{start:c+Math.max(0,Math.floor((l-m.length)/2)),cells:m}}function ga(e){return Math.max(...Q(e).map(e=>V(e)))+2}function _a(e,n,r,i,a={}){let{diagram:o,notesById:s}=va(se(_(e)));if(o.classes.length===0)return``;let c=n.useAscii,l=On(n.paddingX,5,4,1),u=On(n.paddingY,5,3,1),d=new Map,f=new Map,p=new Map;for(let e of o.classes){let t=fa(e);d.set(e.id,t);let{width:r,height:i}=Wi(t,n.boxBorderPadding);f.set(e.id,r),p.set(e.id,i)}let m=new Map;for(let e of o.classes)m.set(e.id,e);let h=new Map,g=new Map;for(let e of o.relationships){let t=e.from,n=e.to,r=h.get(n)??new Set;h.set(n,r),r.add(t);let i=g.get(t)??new Set;g.set(t,i),i.add(n)}let v=new Map,y=o.classes.filter(e=>!h.has(e.id)||h.get(e.id).size===0).map(e=>e.id);for(let e of y)v.set(e,0);let b=o.classes.length-1,x=0;for(;x<y.length;){let e=y[x++],t=g.get(e);if(t)for(let n of t){let t=(v.get(e)??0)+1;t>b||(!v.has(n)||v.get(n)<t)&&(v.set(n,t),y.push(n))}}for(let e of o.classes)v.has(e.id)||v.set(e.id,0);ya(s,v);let S=Math.max(...v.values(),0),C=Array.from({length:S+1},()=>[]);for(let e of o.classes)C[v.get(e.id)].push(e.id);let w=new Map,T=new Map;{let e=new Map;o.relationships.forEach((t,n)=>{let r=[t.from,t.to].sort().join(`::`),i=e.get(r)??[];i.push(n),e.set(r,i)});for(let t of e.values()){if(t.length<2)continue;let e=t.length,n=Math.max(...t.map(e=>{let t=o.relationships[e].label;return t?ga(t):3}))+1;t.forEach((t,r)=>{w.set(t,Math.round((r-(e-1)/2)*n)),T.set(t,(e-1)*n)})}}let E=new Map,D=new Map,O=new Map,ee=new Map;{let e=(e,t,n)=>{let r=new Map;o.relationships.forEach((t,n)=>{if(w.has(n)||!m.has(t.from)||!m.has(t.to))return;let i=v.get(t.from)??0;if((v.get(t.to)??0)-i!==1)return;let a=e(t),o=r.get(a)??[];o.push(n),r.set(a,o)});for(let e of r.values()){if(e.length<2)continue;let r=e.length,i=Math.max(...e.map(e=>{let t=o.relationships[e].label;return t?ga(t):3}))+1;e.forEach((e,a)=>{t.set(e,Math.round((a-(r-1)/2)*i)),n.set(e,(r-1)*i)})}};e(e=>e.to,O,ee),e(e=>e.from,E,D)}let k=new Map;for(let e of o.classes)k.set(e.id,{left:0,right:0});o.relationships.forEach((e,t)=>{if(!m.has(e.from)||!m.has(e.to))return;let n=e.label?ga(e.label):1,r=w.get(t)??E.get(t)??0,i=w.get(t)??O.get(t)??0,a=k.get(e.from);a.left=Math.max(a.left,Math.floor(n/2)-r),a.right=Math.max(a.right,r+n-1-Math.floor(n/2));let o=k.get(e.to);o.left=Math.max(o.left,Math.floor(n/2)-i),o.right=Math.max(o.right,i+n-1-Math.floor(n/2))});let A=new Map,te=0,j=0;for(let e=0;e<=S;e++){let t=C[e];if(t.length===0)continue;let n=0,r=0;for(let e of t){let t=m.get(e),i=f.get(e),a=p.get(e),o=k.get(e),s=Math.max(0,o.left-Math.floor(i/2)),c=Math.max(0,o.right-(i-1-Math.floor(i/2)));A.set(e,{cls:t,sections:d.get(e),x:n+s,y:te,width:i,height:a});let u=s+i+c;j=Math.max(j,n+u),n+=u+l,r=Math.max(r,a)}te+=r+u}let M=j,ne=0;for(let e of A.values())M=Math.max(M,e.x+e.width),ne=Math.max(ne,e.y+e.height);M+=4,ne+=2;let N=H(M-1,ne-1),P=Nt(M-1,ne-1);function re(e,t,n,r){W(N,e,t,n,{role:r,roleCanvas:P})}let ie=a.hyperlinks?nt(M-1,ne-1):void 0;for(let e of A.values()){let r=Gi(e.sections,c,n.boxBorderPadding);for(let t=0;t<r.length;t++)for(let n=0;n<r[0].length;n++){let i=r[t][n];if(i!==` `){let r=e.x+t,a=e.y+n;r<M&&a<ne&&re(r,a,i,Ui(i))}}if(ie){let n=t(o.interactions.get(e.cls.id)?.href),i=e.sections[0];if(n!==void 0&&i!==void 0){let t=1+ +!!e.cls.annotation;at(ie,r,{x:e.x,y:e.y},n,{from:t,to:i.length})}}}let F=new Set;for(let e of A.values())for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++)F.add(`${e.x+n},${e.y+t}`);function I(e,t,n,r){F.has(`${e},${t}`)||re(e,t,n,r)}function ae(e,t,n){for(let[r,i]of A.entries())if(!n?.has(r)&&e>=i.x&&e<=i.x+i.width-1&&t>=i.y&&t<=i.y+i.height-1)return!0;return!1}function oe(e,t,n,r){return Zi(e,0,e+M+9,e=>{for(let i=Math.min(t,n);i<=Math.max(t,n);i++)if(ae(e,i,r))return!1;return!0})??M+2}let L=c?`-`:`─`,R=c?`|`:`│`,ce=c?`.`:`╌`,le=c?`:`:`┊`;function ue(e,t,n){let r=Math.floor(n/2),i=n-1-r,a=t>r+i?(r+i)/t:1;return Math.max(-r,Math.min(i,Math.round(e*a)))}function de(e,t,n){let r=w.get(e)??E.get(e)??0,i=w.get(e)??O.get(e)??0,a=T.get(e)??D.get(e)??0,o=T.get(e)??ee.get(e)??0,s=t.x+Math.floor(t.width/2),c=n.x+Math.floor(n.width/2);return{fromCX:s+r,toCX:c+i,fromAnchorX:s+ue(r,a,t.width),toAnchorX:c+ue(i,o,n.width)}}function fe(e,t,n,r){if(F.has(`${e},${t}`)||P[e]?.[t]===`arrow`)return;let i=N[e]?.[t];if(!c&&i!==void 0&&zt(i)&&zt(n)){let a=Ht(i,n);re(e,t,a,a===n?r:`junction`);return}re(e,t,n,r)}function pe(e,t,n,r,i){if(t===n)return;let a=Math.min(t,n),o=Math.max(t,n);for(let t=a+1;t<o;t++)fe(t,e,r,`line`);if(c){fe(t,e,r,`line`),fe(n,e,r,`line`);return}let s=n>t,l=i?s?`└`:`┘`:s?`┌`:`┐`,u=i?s?`┐`:`┌`:s?`┘`:`└`;fe(t,e,l,`corner`),fe(n,e,u,`corner`)}let me=new Map,he=new Map;o.relationships.forEach((e,t)=>{let n=A.get(e.from),r=A.get(e.to);if(!n||!r)return;let i=pa(e.type,e.markerAt),a=i.dashed?ce:L,o=i.dashed?le:R,s=new Set([e.from,e.to]),{fromCX:l,toCX:u,fromAnchorX:d,toAnchorX:f}=de(t,n,r),p=n.y+n.height-1,m=r.y;if(p<m){let e=oe(l,p+1,m-1,s),n=e!==l;if(e>=M&&Lt(N,e+2,ne),n){let n=p+1,r=m-1;me.set(t,{routeX:e,exitY:n,entryY:r,fromAnchorX:d,toAnchorX:f,clearSide:e>l?`right`:`left`});let s=Math.min(d,e),u=Math.max(d,e);for(let e=s;e<=u;e++)I(e,n,a,`line`);!c&&n<(N[0]?.length??0)&&(d<e?(I(d,n,`└`,`corner`),I(e,n,`┐`,`corner`)):(I(d,n,`┘`,`corner`),I(e,n,`┌`,`corner`)));for(let t=n+1;t<=r;t++)I(e,t,o,`line`);if(e!==f){let t=Math.min(e,f),n=Math.max(e,f);for(let e=t;e<=n;e++)I(e,r,a,`line`);!c&&r<(N[0]?.length??0)&&(e<f?(I(e,r,`└`,`corner`),I(f,r,`┐`,`corner`)):(I(e,r,`┘`,`corner`),I(f,r,`┌`,`corner`)))}if(i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`;I(f,r,ma(i.type,c,e?`up`:`down`),`arrow`)}if(i.markerAt===`from`){let e=ma(i.type,c,`down`);I(d,p+1,e,`arrow`)}}else{let e=p+Math.floor((m-p)/2),t=l!==d,n=u!==f;pe(p+1,d,l,a,!0);for(let n=p+(t?2:1);n<=e;n++)I(l,n,o,`line`);if(l!==u&&e<(N[0]?.length??0)){let t=Math.min(l,u),n=Math.max(l,u);for(let r=t;r<=n;r++)I(r,e,a,`line`);c||(I(l,e,l<u?`└`:`┘`,`corner`),I(u,e,l<u?`┐`:`┌`,`corner`))}for(let t=e+1;t<m-+!!n;t++)I(u,t,o,`line`);if(pe(m-1,f,u,a,!1),i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`;I(f,m-1,ma(i.type,c,e?`up`:`down`),`arrow`)}i.markerAt===`from`&&I(d,p+1,ma(i.type,c,`down`),`arrow`)}}else if(r.y+r.height-1<n.y){let e=n.y,t=r.y+r.height-1,s=t+Math.floor((e-t)/2),p=l!==d,m=u!==f;pe(e-1,d,l,a,!1);for(let t=e-(p?2:1);t>=s;t--)I(l,t,o,`line`);if(l!==u){let e=Math.min(l,u),t=Math.max(l,u);for(let n=e;n<=t;n++)I(n,s,a,`line`);!c&&s>=0&&s<ne&&(I(l,s,l<u?`┌`:`┐`,`corner`),I(u,s,l<u?`┘`:`└`,`corner`))}for(let e=s-1;e>t+ +!!m;e--)I(u,e,o,`line`);if(pe(t+1,f,u,a,!0),i.markerAt===`from`){let t=ma(i.type,c,`up`),n=e-1;for(let e=0;e<t.length;e++)I(d-Math.floor(t.length/2)+e,n,t[e],`arrow`)}if(i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`?`down`:`up`,n=ma(i.type,c,e),r=t+1;for(let e=0;e<n.length;e++)I(f-Math.floor(n.length/2)+e,r,n[e],`arrow`)}}else{let s=r.y+r.height-1,m=Math.min(l,u),h=Math.max(l,u),g=Math.max(p,s);for(let[t,r]of A.entries())t!==e.from&&t!==e.to&&r.y===n.y&&r.x<h+1&&r.x+r.width>m&&(g=Math.max(g,r.y+r.height-1));let _=g+2;he.set(t,_),Lt(N,M,_+1),Pt(P,M,_+1);let v=l!==d,y=u!==f;pe(p+1,d,l,a,!0);for(let e=p+(v?2:1);e<=_;e++)I(l,e,o,`line`);for(let e=m;e<=h;e++)I(e,_,a,`line`);for(let e=_-1;e>=s+(y?2:1);e--)I(u,e,o,`line`);if(pe(s+1,f,u,a,!0),i.markerAt===`from`){let e=ma(i.type,c,`down`),t=p+1;for(let n=0;n<e.length;n++)I(d-Math.floor(e.length/2)+n,t,e[n],`arrow`)}if(i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`,t=ma(i.type,c,e?`down`:`up`),n=r.y+r.height;for(let e=0;e<t.length;e++)I(f-Math.floor(t.length/2)+e,n,t[e],`arrow`)}}});function z(e,t,n,r){let{fromCX:i,toCX:a}=de(e,t,n),o=t.y+t.height-1,s=n.y;if(o<s){let t=me.get(e);if(t){let e=t.exitY+1,n=t.entryY;if(n>=e)return{idealMidX:t.clearSide===`right`?t.routeX+1+Math.floor(r/2):t.routeX-1-Math.ceil(r/2),baseMidY:Math.floor((e+n)/2)};let i=Math.abs(t.routeX-t.fromAnchorX);return Math.abs(t.toAnchorX-t.routeX)>=i?{idealMidX:Math.floor((t.routeX+t.toAnchorX)/2),baseMidY:t.entryY}:{idealMidX:Math.floor((t.fromAnchorX+t.routeX)/2),baseMidY:t.exitY}}return{idealMidX:Math.floor((i+a)/2),baseMidY:Math.floor((o+1+s-1)/2)}}if(n.y+n.height-1<t.y){let e=n.y+n.height-1;return{idealMidX:Math.floor((i+a)/2),baseMidY:Math.floor((e+1+t.y-1)/2)}}return{idealMidX:Math.floor((i+a)/2),baseMidY:he.get(e)??Math.max(o,n.y+n.height-1)+2}}function ge(e,t,n,r,i,a,o){let s=r,c=Math.floor(a/2),l=e.y+e.height-1,u=t.y,d=!1;for(let e=0;e<a;e++){let t=s-c+e,r=n-Math.floor(i/2),a=Math.max(0,r);for(let e=a;e<a+i;e++)if(ae(e,t,o)){d=!0;break}if(d)break}if(d){let e=l+1,t=u-1;for(let r=e;r<=t;r++){let e=!0,t=n-Math.floor(i/2),a=Math.max(0,t);for(let t=a;t<a+i;t++)if(ae(t,r,o)){e=!1;break}if(e){s=r;break}}}return s}let _e=new Map,ve=[];for(let[e,t]of o.relationships.entries()){if(!t.label)continue;let n=A.get(t.from),r=A.get(t.to);if(!n||!r)continue;let i=Q(t.label),a=Math.floor(i.length/2),o=Math.max(...i.map(V))+2,{idealMidX:s,baseMidY:c}=z(e,n,r,o),l=new Set([t.from,t.to]),u=ge(n,r,s,c,o,i.length,l);_e.set(t,u);let d=Math.max(0,s-Math.floor(o/2));ve.push({rel:t,idealMidX:s,naturalStart:d,naturalEnd:d+o-1,rowStart:u-a,rowEnd:u+a})}let ye=da(ve,e=>({idealMid:e.idealMidX,start:e.naturalStart,end:e.naturalEnd,rowStart:e.rowStart,rowEnd:e.rowEnd})),be=new Map;for(let e of ve){let t=ye.get(e);t&&be.set(e.rel,t)}for(let[e,t]of o.relationships.entries()){let n=A.get(t.from),r=A.get(t.to);if(!(!n||!r)&&t.label){let i=Q(t.label),{idealMidX:a}=z(e,n,r,Math.max(...i.map(e=>V(e)))+2),o=_e.get(t)-Math.floor(i.length/2),s=be.get(t);for(let e=0;e<i.length;e++){let t=o+e,n=i[e],r=Mt(` ${n} `),{start:c,cells:l}=ha(Math.max(0,a-Math.floor(r.length/2)),r,n,Math.max(0,s.left),s.right),u=c+l.length;u>0&&t>=0&&(Lt(N,Math.max(u,1),Math.max(t+1,1)),Pt(P,Math.max(u,1),Math.max(t+1,1)));for(let e=0;e<l.length;e++){let n=c+e;n>=0&&t>=0&&re(n,t,l[e],`text`)}}}}return ba(s,A,N,c,re),Wt(N,{roleCanvas:P,colorMode:r,theme:i,linkCanvas:ie})}function va(e){let t=new Map;if(e.notes.length===0)return{diagram:e,notesById:t};let n=(e,n)=>{let r=`note ${e}`;return t.set(r,n),{id:r,label:n.text,attributes:[],methods:[]}},r=new Set(e.classes.map(e=>e.id)),i=[];for(let t of e.classes){i.push(t);for(let[r,a]of e.notes.entries())a.forClass===t.id&&i.push(n(r,a))}for(let[t,a]of e.notes.entries())(a.forClass===void 0||!r.has(a.forClass))&&i.push(n(t,a));return{diagram:{...e,classes:i},notesById:t}}function ya(e,t){for(let[n,r]of e){if(r.forClass===void 0)continue;let e=t.get(r.forClass);e!==void 0&&t.set(n,e)}}function ba(e,t,n,r,i){if(e.size===0)return;let a=fr(`rounded`,r),o=r?`.`:`╌`;for(let[r,s]of e){let e=t.get(r);if(!e)continue;let c=e.x+e.width-1,l=e.y+e.height-1;if(i(e.x,e.y,a.tl,`border`),i(c,e.y,a.tr,`border`),i(e.x,l,a.bl,`border`),i(c,l,a.br,`border`),s.forClass===void 0)continue;let u=t.get(s.forClass);if(!u||u.x+u.width>e.x||u.y!==e.y)continue;let d=u.y+1;for(let t=u.x+u.width;t<e.x;t++)n[t]?.[d]===` `&&i(t,d,o,`line`)}}function xa(e){let t=e.trim();return t.length>=2&&(t[0]===`"`&&t[t.length-1]===`"`||t[0]===`'`&&t[t.length-1]===`'`)?t.slice(1,-1):t}var Sa=`"graph <dir>"/"flowchart <dir>" (dir: TD, TB, LR, BT, RL), "stateDiagram-v2", "sequenceDiagram", "classDiagram", "erDiagram", "xychart-beta"`;function Ca(e){let t=e.trim().toLowerCase();if(/^sequence/.test(t))return`sequenceDiagram`;if(/^class/.test(t))return`classDiagram`;if(/^er/.test(t))return`erDiagram`;if(/^xychart/.test(t))return`xychart-beta`;if(/^state/.test(t))return`stateDiagram-v2`}var wa=/^(?:[\w-]+@)?<?(?:-{2,}|={2,}|-\.+-?|~{3,})/;function Ta(e){let t=[];for(let n of e)n.forEach((e,n)=>{if(n===0&&t.length>0&&wa.test(e.text)){let n=t[t.length-1];t[t.length-1]={text:`${n.text} ${e.text}`,line:n.line}}else t.push(e)});return t}function Ea(e){let t=D(e.split(`
8
- `).map(e=>e.trim())),n=Ta(g(e));if(n.length===0)throw Error(`Empty mermaid diagram`);let r=n[0],i=/^stateDiagram(-v2)?\s*$/i.test(r.text)?Oa(n):Da(n);return i.initConfig=t,i}function Da(e){let t=e[0];if(t===void 0)throw Error(`parseFlowchart called with no lines`);let n=t.text,r=n.match(/^(?:graph|flowchart)\s+(TD|TB|LR|BT|RL)\s*$/i);if(!r){let e=n.match(/^(?:graph|flowchart)\b\s*(.*)$/i);if(e){let r=e[1].trim();throw Error(r.length>0?`Line ${t.line}: Invalid direction "${r}" in header "${n}". Expected one of: TD, TB, LR, BT, RL.`:`Line ${t.line}: Missing direction in header "${n}". Expected e.g. "graph TD" or "flowchart LR" — one of: TD, TB, LR, BT, RL.`)}let r=Ca(n),i=r&&r.toLowerCase()!==n.trim().toLowerCase()?` Did you mean "${r}"?`:``;throw Error(`Line ${t.line}: Invalid mermaid header: "${n}".${i} Supported headers: ${Sa}.`)}let i={direction:b(r[1]),nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map,interactions:new Map},a=[];for(let t=1;t<e.length;t++){let n=e[t].text;if(P(n,i)||re(n,i)||F(n,i))continue;if(/^click\s+/i.test(n)){Ba(n,i);continue}if(Ha(n,i))continue;let r=n.match(/^linkStyle\s+(default|[\d,\s]+)\s+(.+)$/);if(r){let e=r[1].trim(),t=N(r[2]);if(e==="default")i.linkStyles.set(`default`,{...i.linkStyles.get(`default`),...t});else{let n=e.split(`,`).map(e=>parseInt(e.trim(),10));for(let e of n)isNaN(e)||i.linkStyles.set(e,{...i.linkStyles.get(e),...t})}continue}let o=n.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(o&&a.length>0){a[a.length-1].direction=b(o[1]);continue}let s=n.match(/^subgraph\s+(.+)$/);if(s){let e=s[1].trim(),t=e.match(/^([^\s[]+)\s*\[(.+)\]$/),n,r;t?(n=t[1],r=M(xa(t[2]))):(r=M(xa(e)),n=r.replace(/\s+/g,`_`).replace(/[^\p{L}\p{N}_-]/gu,``));let i={id:n,label:r,nodeIds:[],children:[]};a.push(i);continue}if(n===`end`){let e=a.pop();e&&(a.length>0?a[a.length-1].children.push(e):i.subgraphs.push(e));continue}Ka(n,i,a)}return i}function Oa(e){let t={direction:`TD`,nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map,interactions:new Map},n=[],r=new Set,i=0,a=0;for(let o=1;o<e.length;o++){let s=e[o].text,c=s.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(c){n.length>0?n[n.length-1].direction=b(c[1]):t.direction=b(c[1]);continue}let l=s.match(/^linkStyle\s+(default|[\d,\s]+)\s+(.+)$/);if(l){let e=l[1].trim(),n=N(l[2]);if(e==="default")t.linkStyles.set(`default`,{...t.linkStyles.get(`default`),...n});else{let r=e.split(`,`).map(e=>parseInt(e.trim(),10));for(let e of r)isNaN(e)||t.linkStyles.set(e,{...t.linkStyles.get(e),...n})}continue}if(Ha(s,t))continue;let u=s.match(/^state\s+(?:"([^"]+)"\s+as\s+)?([\w\p{L}]+)\s*\{$/u);if(u){let e=u[1]??u[2],i=u[2],a={id:i,label:e,nodeIds:[],children:[]};n.push(a),r.add(i),t.nodes.delete(i);continue}if(s===`}`){let e=n.pop();e&&(n.length>0?n[n.length-1].children.push(e):t.subgraphs.push(e));continue}let d=s.match(/^state\s+"([^"]+)"\s+as\s+([\w\p{L}]+)\s*$/u);if(d){let e=M(d[1]),r=d[2];ka(t,n,{id:r,label:e,shape:`rounded`});continue}let f=s.match(/^(\[\*\]|[\w\p{L}-]+)\s*(?:([\w-]+)@)?-->\s*(\[\*\]|[\w\p{L}-]+)(?:\s*:\s*(.+))?$/u);if(f){let e=f[1],o=f[2],s=f[3],c=f[4]?.trim(),l=c?M(c):void 0;e===`[*]`?(i++,e=`_start${i>1?i:``}`,ka(t,n,{id:e,label:``,shape:`state-start`})):r.has(e)||Aa(t,n,e),s===`[*]`?(a++,s=`_end${a>1?a:``}`,ka(t,n,{id:s,label:``,shape:`state-end`})):r.has(s)||Aa(t,n,s),t.edges.push({source:e,target:s,label:l,style:`solid`,hasArrowStart:!1,hasArrowEnd:!0,...o===void 0?{}:{id:o}});continue}let p=s.match(/^([\w\p{L}-]+)\s*:\s*(.+)$/u);if(p){let e=p[1];ka(t,n,{id:e,label:M(p[2].trim()),shape:`rounded`});continue}}return t}function ka(e,t,n){if(e.nodes.has(n.id)||e.nodes.set(n.id,n),t.length>0){let e=t[t.length-1];e.nodeIds.includes(n.id)||e.nodeIds.push(n.id)}}function Aa(e,t,n){if(!e.nodes.has(n))ka(e,t,{id:n,label:n,shape:`rounded`});else if(t.length>0){let e=t[t.length-1];e.nodeIds.includes(n)||e.nodeIds.push(n)}}var ja=/^(<|o|x)?(-{2,}|={2,}|-\.+-|~{3,})(>|o|x)?(?:\|([^|]*)\|)?/,Ma=new Set([`--`,`==`]);function Na(e){if(e===`o`)return`circle`;if(e===`x`)return`cross`}var Pa=/^(<|o|x)?(--|-\.|==)\s+(.+?)\s+(-{2,}[>ox]|={2,}[>ox]|\.+-[>ox]|-{3,}|={3,}|-\.+-)/,Fa=[{regex:/^([\w\p{L}-]+)\(\(\(((?:"[^"]*"|(?!\)\)\)).)+)\)\)\)/u,shape:`doublecircle`},{regex:/^([\w\p{L}-]+)\(\[((?:"[^"]*"|(?!\]\)).)+)\]\)/u,shape:`stadium`},{regex:/^([\w\p{L}-]+)\(\(((?:"[^"]*"|(?!\)\)).)+)\)\)/u,shape:`circle`},{regex:/^([\w\p{L}-]+)\[\[((?:"[^"]*"|(?!\]\]).)+)\]\]/u,shape:`subroutine`},{regex:/^([\w\p{L}-]+)\[\(((?:"[^"]*"|(?!\)\]).)+)\)\]/u,shape:`cylinder`},{regex:/^([\w\p{L}-]+)\[\/((?:"[^"]*"|(?![\\/]\]).)+)([\\/])\]/u,shape:e=>e===`\\`?`trapezoid`:`parallelogram`},{regex:/^([\w\p{L}-]+)\[\\((?:"[^"]*"|(?![\\/]\]).)+)([\\/])\]/u,shape:e=>e===`/`?`trapezoid-alt`:`parallelogram-alt`},{regex:/^([\w\p{L}-]+)>((?:"[^"]*"|(?!\]).)+)\]/u,shape:`asymmetric`},{regex:/^([\w\p{L}-]+)\{\{((?:"[^"]*"|(?!\}\}).)+)\}\}/u,shape:`hexagon`},{regex:/^([\w\p{L}-]+)\[((?:"[^"]*"|(?!\]).)+)\]/u,shape:`rectangle`},{regex:/^([\w\p{L}-]+)\(((?:"[^"]*"|(?!\)).)+)\)/u,shape:`rounded`},{regex:/^([\w\p{L}-]+)\{((?:"[^"]*"|(?!\}).)+)\}/u,shape:`diamond`}],Ia=/^([\w\p{L}]+(?:-[\w\p{L}]+)*)/u,La=/^([\w\p{L}-]+)(?=@\{)/u;function Ra(e){if(e.shape)return Ge(e.shape)??`rectangle`;if(e.icon!==void 0||e.img!==void 0)switch(e.form?.toLowerCase()){case`circle`:return`circle`;case`rounded`:return`rounded`;default:return`rectangle`}return`rectangle`}function za(e,t){return t.label!==void 0&&t.label.length>0?t.label:t.icon?t.icon:t.img?t.img:e}function Ba(t,n){e(t,n.interactions)}var Va=/^([\w-]+)(?=@\{)/;function Ha(e,t){let n=e.match(Va);if(!n||!t.edges.some(e=>e.id===n[1]))return!1;let r=Xe(e.slice(n[1].length));return r?(Ua(t,n[1],Ke(r.body)),!0):!1}function Ua(e,t,n){for(let r of e.edges)r.id===t&&(n.animate!==void 0&&(r.animate=n.animate.toLowerCase()!==`false`),n.animation!==void 0&&(r.animate=!0))}var Wa=/^:::([\w][\w-]*)/,Ga=/^([\w\p{L}-]+):::([\w][\w-]*)/u;function Ka(e,t,n){let r=e.trim(),i=qa(r,t,n);if(!i||i.ids.length===0)return;r=i.remaining.trim();let a=i.ids;for(;r.length>0;){let e,i,o,s,c,l,u,d=r.match(/^([\w-]+)@(?=[-=<~ox])/);d&&(u=d[1],r=r.slice(d[0].length));let f=r.match(ja),p=f?.[2],m=f?.[1],h=f?.[3];if(f&&p!==void 0&&!(m===void 0&&h===void 0&&Ma.has(p))){e=m!==void 0,c=Na(m);let t=f[4]?.trim();s=t?M(t):void 0,r=r.slice(f[0].length).trim(),i=Za(p),o=h!==void 0,l=Na(h)}else{let t=r.match(Pa);if(!t)break;e=!!t[1],c=Na(t[1]);let n=t[3].trim();s=n?M(n):void 0;let a=t[2],u=t[4];r=r.slice(t[0].length).trim(),i=Qa(a,u),l=Na(u.slice(-1)),o=u.endsWith(`>`)||l!==void 0}let g=qa(r,t,n);if(!g||g.ids.length===0)break;r=g.remaining.trim();for(let n of a)for(let r of g.ids)t.edges.push({source:n,target:r,label:s,style:i,hasArrowStart:e,hasArrowEnd:o,...c===void 0?{}:{startMarker:c},...l===void 0?{}:{endMarker:l},...u===void 0?{}:{id:u}});a=g.ids}}function qa(e,t,n){let r=Ja(e,t,n);if(!r)return null;let i=[r.id],a=r.remaining.trim();for(;a.startsWith(`&`);){a=a.slice(1).trim();let e=Ja(a,t,n);if(!e)break;i.push(e.id),a=e.remaining.trim()}return{ids:i,remaining:a}}function Ja(e,t,n){let r=null,i=e,a,o=i.match(Ga);o&&(a=o[2],i=o[1]+i.slice(o[0].length));let s=i.match(La);if(s){let e=s[1],a=Xe(i.slice(e.length));if(a){let o=Ke(a.body);Ya(t,n,{id:e,label:M(za(e,o)),shape:Ra(o)}),r=e,i=i.slice(e.length+a.length)}}if(r===null)for(let{regex:e,shape:a}of Fa){let o=i.match(e);if(o){r=o[1];let e=M(o[2]),s=typeof a==`function`?a(o[3]??``):a;Ya(t,n,{id:r,label:e,shape:s}),i=i.slice(o[0].length);break}}if(r===null){let e=i.match(Ia);e&&(r=e[1],t.nodes.has(r)||Ya(t,n,{id:r,label:r,shape:`rectangle`}),i=i.slice(e[0].length))}if(r===null)return null;a&&t.classAssignments.set(r,a);let c=i.match(Wa);return c&&(t.classAssignments.set(r,c[1]),i=i.slice(c[0].length)),{id:r,remaining:i}}function Ya(e,t,n){e.nodes.has(n.id)||e.nodes.set(n.id,n),Xa(t,n.id)}function Xa(e,t){if(e.length>0){let n=e[e.length-1];n.nodeIds.includes(t)||n.nodeIds.push(t)}}function Za(e){return e.startsWith(`~`)?`invisible`:e.includes(`.`)?`dotted`:e.startsWith(`=`)?`thick`:`solid`}function Qa(e,t){return e.includes(`.`)||t.includes(`.`)?`dotted`:e.startsWith(`=`)||t.startsWith(`=`)?`thick`:`solid`}function $a(e,t){let n=new Set,r=new Map;for(let t of e.subgraphs)eo(t,n,r);let i=new Map,a=0;for(let[t,r]of e.nodes){if(n.has(t))continue;let e={name:t,displayLabel:ne(r.label),shape:r.shape,index:a,gridCoord:null,drawingCoord:null,drawing:null,drawn:!1,styleClassName:``,styleClass:Nn};i.set(t,e),a++}let o=[...i.values()],s=[];for(let t of e.edges){let a=t.source,o=t.target;if(n.has(a)){let t=r.get(a),n=t?ro(t,e,`exit`):void 0;n&&(a=n)}if(n.has(o)){let t=r.get(o),n=t?ro(t,e,`entry`):void 0;n&&(o=n)}let c=i.get(a),l=i.get(o);!c||!l||s.push({from:c,to:l,text:t.label?ne(t.label):``,path:[],labelLine:[],startDir:{x:0,y:0},endDir:{x:0,y:0},style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,...t.startMarker===void 0?{}:{startMarker:t.startMarker},...t.endMarker===void 0?{}:{endMarker:t.endMarker}})}let c=[];for(let t of e.subgraphs)io(t,null,i,c,e);ao(e.subgraphs,c,i);let l=e.classDefs.get(`default`);if(l)for(let e of i.values())e.styleClassName=`default`,e.styleClass={name:`default`,styles:l};for(let[t,n]of e.classAssignments){let r=i.get(t),a=e.classDefs.get(n);r&&a&&(r.styleClassName=n,r.styleClass={name:n,styles:l?{...l,...a}:a})}return{nodes:o,edges:s,canvas:H(0,0),roleCanvas:Nt(0,0),grid:Fn(),columnWidth:new Map,rowHeight:new Map,subgraphs:c,config:t,offsetX:0,offsetY:0,bundles:[]}}function eo(e,t,n){t.add(e.id),n.set(e.id,e);for(let r of e.children)eo(r,t,n)}function to(e,t){for(let n of e.nodeIds)t.add(n);for(let n of e.children)to(n,t)}function no(e,t){let n=new Set;if(to(e,n),n.size===0)return!0;let r=t=>n.has(t)||t===e.id;return!t.edges.some(e=>r(e.source)!==r(e.target))}function ro(e,t,n){let r=new Set;if(to(e,r),r.size===0)return;let i=[...t.nodes.keys()].filter(e=>r.has(e));if(i.length===0)return;let a=i.filter(e=>n===`entry`?!t.edges.some(t=>t.target===e&&r.has(t.source)):!t.edges.some(t=>t.source===e&&r.has(t.target))),o=a.length>0?a:i;return n===`entry`?o[0]:o[o.length-1]}function io(e,t,n,r,i){let a;e.direction&&no(e,i)&&(a=e.direction===`LR`||e.direction===`RL`?`LR`:`TD`);let o={name:e.label,nodes:[],parent:t,children:[],minX:0,minY:0,maxX:0,maxY:0,direction:a};for(let t of e.nodeIds){let e=n.get(t);e&&o.nodes.push(e)}r.push(o);for(let t of e.children){let e=io(t,o,n,r,i);o.children.push(e);for(let t of e.nodes)o.nodes.includes(t)||o.nodes.push(t)}return o}function ao(e,t,n){let r=new Map;so(e,t,r);let i=new Map;function a(e){let t=r.get(e);if(t){for(let t of e.children)a(t);for(let n of e.nodeIds)i.has(n)||i.set(n,t)}}for(let t of e)a(t);for(let e of t)e.nodes=e.nodes.filter(t=>{let r;for(let[e,i]of n)if(i===t){r=e;break}if(!r)return!1;let a=i.get(r);return!a||oo(e,a)})}function oo(e,t){let n=t;for(;n!==null;){if(n===e)return!0;n=n.parent}return!1}function so(e,t,n){let r=[];function i(e){for(let t of e)r.push(t),i(t.children)}i(e);for(let e=0;e<r.length&&e<t.length;e++){let i=r[e],a=t[e];!i||!a||n.set(i,a)}}function co(e,t,n,r,i={}){let a=x(Ea(e),i.direction);t.graphDirection=a.direction===`LR`||a.direction===`RL`?`LR`:`TD`;let o=$a(a,t);Kr(o),Xi(o);let s=i.hyperlinks?ot(o,a.interactions):void 0;return a.direction===`BT`&&(Kt(o.canvas),qt(o.roleCanvas),s&&it(s)),Wt(o.canvas,{roleCanvas:o.roleCanvas,colorMode:n,theme:r,linkCanvas:s})}var lo={xychart:(e,t,n,r)=>rn(e,t,n,r),er:(e,t,n,r)=>ra(e,t,n,r),sequence:(e,t,n,r)=>la(e,t,n,r),class:(e,t,n,r,i)=>_a(e,t,n,r,i),flowchart:(e,t,n,r,i)=>co(e,t,n,r,i)},uo=/\x1b\[[0-9;]*m/g;function fo(e){let t=e.split(`
9
- `),n=t.reduce((e,t)=>Math.max(e,tt(t.replace(uo,``)).length),0),r=String(Math.max(0,t.length-1)).length,i=` `.repeat(r+1);return[i+Array.from({length:n},(e,t)=>String(Math.floor(t/10)%10)).join(``),i+Array.from({length:n},(e,t)=>String(t%10)).join(``),...t.map((e,t)=>`${String(t).padStart(r,` `)} ${e}`)].join(`
10
- `)}function po(e,t={}){let n={useAscii:t.useAscii??!1,paddingX:t.paddingX??5,paddingY:t.paddingY??5,boxBorderPadding:t.boxBorderPadding??1,graphDirection:`TD`},r=t.colorMode===`auto`||t.colorMode===void 0?dt():t.colorMode,i={...lt,...t.theme},a=lo[v(e)](e,n,r,i,{hyperlinks:t.hyperlinks??!1,direction:t.direction});return t.showCoords?fo(a):a}var mo=po;exports.DEFAULT_ASCII_THEME=lt,exports.detectColorMode=dt,exports.diagramColorsToAsciiTheme=ut,exports.renderMermaidASCII=po,exports.renderMermaidAscii=mo;
4
+ `).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,``).replace(/\*\*(.+?)\*\*/g,`<b>$1</b>`).replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,`<i>$1</i>`).replace(/~~(.+?)~~/g,`<s>$1</s>`)}function N(e){return e.replace(/<\/?(?:b|strong|i|em|u|s|del)\s*>/gi,``)}function P(e){let t=e.replace(/;\s*$/,``),n={};for(let e of t.split(`,`)){let t=e.indexOf(`:`);if(t>0){let r=e.slice(0,t).trim(),i=e.slice(t+1).trim();r&&i&&(n[r]=i)}}return n}function re(e,t){let n=e.match(/^classDef\s+([\w,-]+)\s+(.+)$/);if(!n)return!1;let r=P(n[2]);for(let e of n[1].split(`,`)){let n=e.trim();n&&t.classDefs.set(n,r)}return!0}function ie(e,t){let n=e.match(/^class\s+([\w,-]+)\s+([\w-]+)\s*;?\s*$/);if(!n)return!1;let r=n[2];for(let e of n[1].split(`,`))t.classAssignments.set(e.trim(),r);return!0}function F(e,t){let n=e.match(/^cssClass\s+"([^"]*)"\s+([\w-]+)\s*;?\s*$/);if(!n)return!1;let r=n[2];for(let e of n[1].split(`,`)){let n=e.trim();n&&t.classAssignments.set(n,r)}return!0}function I(e,t){let n=e.match(/^style\s+([\w,-]+)\s+(.+)$/);if(!n)return!1;let r=P(n[2]);for(let e of n[1].split(`,`).map(e=>e.trim()))t.nodeStyles.set(e,{...t.nodeStyles.get(e),...r});return!0}function ae(e){let t=e.match(/^(.+?):::([\w][\w-]*)$/);return t?{id:t[1],className:t[2]}:{id:e}}var oe={text:100,textSec:60,textMuted:40,textFaint:25,line:50,arrow:85,nodeFill:3,nodeStroke:20,groupHeader:5,innerStroke:12,keyBadge:10},se=`<\\|--|<\\|\\.\\.|\\*--|o--|-->|--\\*|--o|--\\|>|\\.\\.>|\\.\\.\\|>|<--|<\\.\\.?|--`,ce=new RegExp(se);function L(t){let n={classes:[],relationships:[],namespaces:[],interactions:new Map,classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,notes:[]},r=new Map,i=null,a=null,o=0,s;for(let l=1;l<t.length;l++){let u=t[l],d=u.text;if(a&&o>0){if(d===`}`){o--,o===0&&(a=null,s=void 0);continue}let e=d.match(/^<<(\w+)>>$/);if(e){a.annotation=e[1];continue}if(d.startsWith(`<<`))throw Error(`Line ${u.line}: Malformed class annotation "${d}" — expected "<<name>>" (e.g. "<<interface>>").`);le(a,d,u.line);continue}if(/^click\s+/i.test(d)){e(d,n.interactions);continue}let f=d.match(/^note\s+(?:for\s+(\S+)\s+)?"([^"]*)"\s*$/);if(f){let e=f[1];n.notes.push({text:M(f[2]),...e?{forClass:e}:{}});continue}if(re(d,n)||I(d,n)||F(d,n)||ie(d,n))continue;let p=d.match(/^namespace\s+(\S+)\s*\{$/);if(p){i={name:p[1],classIds:[]};continue}if(d===`}`&&i){n.namespaces.push(i),i=null;continue}let m=d.match(/^class\s+(\S+?)(?:\s*~(\w+)~)?\s*\{$/);if(m){let e=c(m[1],m[2]);a=r.get(e)??null,o=1,s=u.line;continue}let h=d.match(/^class\s+(\S+?)(?:\s*~(\w+)~)?\s*$/);if(h){c(h[1],h[2]);continue}let g=d.match(/^class\s+(\S+?)\s*\{\s*(.*?)\s*\}$/);if(g){let e=c(g[1],void 0),t=r.get(e),n=g[2],i=n.match(/^<<(\w+)>>$/);if(t&&i)t.annotation=i[1];else if(t&&n.startsWith(`<<`))throw Error(`Line ${u.line}: Malformed class annotation "${n}" — expected "<<name>>" (e.g. "<<interface>>").`);else t&&n&&le(t,n,u.line);continue}let _=d.match(/^(\S+?)\s*:\s*(.+)$/);if(_){let e=_[2];if(!e.match(/<\|--|--|\*--|o--|-->|\.\.>|\.\.\|>/)){le(ue(r,_[1]),e,u.line);continue}}let v=he(d);if(v){v.from=c(v.from,void 0,!1),v.to=c(v.to,void 0,!1),n.relationships.push(v);continue}if(ce.test(d))throw Error(`Line ${u.line}: Malformed class-diagram relationship "${d}". Expected "FROM ARROW TO" (optionally with cardinalities and a ": label"), e.g. "Animal <|-- Dog" or 'A "1" --> "*" B : label'. ARROW must be one of <|--, <|.., *--, o--, -->, --*, --o, --|>, ..>, ..|>, <--, <.., or --.`)}if(a!==null)throw Error(`Line ${s}: Unclosed class body for "${a.id}" — expected a closing "}" before the diagram ends.`);return n.classes=[...r.values()],n;function c(e,t,a=!0){let{id:o,className:s}=ae(e),c=o,l=t;if(!l){let e=o.match(/^(.+?)~(\w+)~$/);e&&(c=e[1],l=e[2])}let u=ue(r,c);return l&&(u.label=`${c}<${l}>`),s&&n.classAssignments.set(c,s),a&&i&&i.classIds.push(c),c}}function le(e,t,n){let r=me(t,n);r&&(r.isMethod?e.methods.push(r.member):e.attributes.push(r.member))}function ue(e,t){let n=e.get(t);return n||(n={id:t,label:t,attributes:[],methods:[]},e.set(t,n)),n}function de(e,t){return Math.max(0,e.split(t).length-1)}function fe(e){let t=de(e,`~`);if(t<=1)return e;let n=e,r=!1;t%2!=0&&n.startsWith(`~`)&&(n=n.slice(1),r=!0);let i=[...n],a=i.indexOf(`~`),o=i.lastIndexOf(`~`);for(;a!==-1&&o!==-1&&a!==o;)i[a]=`<`,i[o]=`>`,a=i.indexOf(`~`),o=i.lastIndexOf(`~`);return r&&i.unshift(`~`),i.join(``)}function pe(e){let t=e.split(/(,)/),n=[];for(let e=0;e<t.length;e++){let r=t[e];if(r===`,`&&e>0&&e+1<t.length){let i=t[e-1],a=t[e+1];de(i,`~`)===1&&de(a,`~`)===1&&(r=`${i},${a}`,e++,n.pop())}n.push(fe(r))}return n.join(``)}function me(e,t){let n=e.trim().replace(/;$/,``);if(!n)return null;let r=``,i=n,a=i[0];if((a===`+`||a===`-`||a===`#`||a===`~`)&&(r=a,i=i.slice(1).trim()),i.includes(`(`)&&!i.includes(`)`))throw Error(`Line ${t}: Malformed class member "${n}" — unclosed "(" in a method signature. Expected e.g. "+eat() void" or "+eat(Food f) void".`);let o=i.match(/^(.+?)\(([^)]*)\)(?:\s*(.+))?$/);if(o){let e=pe(o[1].trim()),t=o[2]?.trim(),n=t?pe(t):void 0,a=o[3]?.trim(),s=a?pe(a):void 0,c=e.endsWith(`$`)||i.includes(`$`),l=e.endsWith(`*`)||i.includes(`*`);return{member:{visibility:r,name:e.replace(/[$*]$/,``),type:s||void 0,isStatic:c,isAbstract:l,isMethod:!0,params:n},isMethod:!0}}let s=pe(i).split(/\s+/),c,l;s.length>=2?(l=s[0],c=s.slice(1).join(` `)):c=s[0]??i;let u=c.endsWith(`$`),d=c.endsWith(`*`);return{member:{visibility:r,name:c.replace(/[$*]$/,``),type:l||void 0,isStatic:u,isAbstract:d,isMethod:!1},isMethod:!1}}function he(e){let t=e.match(RegExp(`^(\\S+?)\\s+(?:"([^"]*?)"\\s+)?(${se})\\s+(?:"([^"]*?)"\\s+)?(\\S+?)(?::::([\\w][\\w-]*))?(?:\\s*:\\s*(.+))?$`));if(!t)return null;let n=t[1],r=t[2],i=r?M(r):void 0,a=t[3].trim(),o=t[4],s=o?M(o):void 0,c=t[6]?`${t[5]}:::${t[6]}`:t[5],l=t[7]?.trim(),u=l?M(l):void 0,d=ge(a);return d?{from:n,to:c,type:d.type,markerAt:d.markerAt,label:u,fromCardinality:i,toCardinality:s}:null}function ge(e){switch(e.trim()){case`<|--`:return{type:`inheritance`,markerAt:`from`};case`--|>`:return{type:`inheritance`,markerAt:`to`};case`<|..`:return{type:`realization`,markerAt:`from`};case`..|>`:return{type:`realization`,markerAt:`to`};case`*--`:return{type:`composition`,markerAt:`from`};case`--*`:return{type:`composition`,markerAt:`to`};case`o--`:return{type:`aggregation`,markerAt:`from`};case`--o`:return{type:`aggregation`,markerAt:`to`};case`-->`:return{type:`association`,markerAt:`to`};case`<--`:return{type:`association`,markerAt:`from`};case`..>`:return{type:`dependency`,markerAt:`to`};case`<..`:return{type:`dependency`,markerAt:`from`};case`--`:return{type:`association`,markerAt:`to`};default:return null}}function _e(e){return`${e.visibility?`${e.visibility} `:``}${e.isMethod?`${e.name}(${e.params||``})`:e.name}${e.type?`: ${e.type}`:``}`}function ve(e){let t={entities:[],relationships:[]},n=new Map,r=null;for(let i=1;i<e.length;i++){let a=e[i],o=a.text;if(r){if(o===`}`){r=null;continue}let e=ye(o);e&&r.attributes.push(e);continue}let s=o.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(s){t.direction=b(s[1]);continue}let c=o.match(/^(\S+?)(?:\[(.+)\])?\s*\{(.*)$/);if(c){let e=c[1],t=c[2],i=R(n,e,t===void 0?void 0:M(t.trim().replace(/^["']|["']$/g,``))),a=c[3].trim(),o=a.endsWith(`}`),s=o?a.slice(0,-1).trim():a;for(let e of s.split(`;`).map(e=>e.trim()).filter(Boolean)){let t=ye(e);t&&i.attributes.push(t)}o||(r=i);continue}let l=be(o,a.line);if(l){R(n,l.entity1),R(n,l.entity2),t.relationships.push(l);continue}}return t.entities=[...n.values()],t}function R(e,t,n){let r=e.get(t);return r?n!==void 0&&(r.label=n):(r={id:t,label:n??t,attributes:[]},e.set(t,r)),r}function ye(e){let t=e.match(/^(\S+)\s+(\S+)(?:\s+(.+))?$/);if(!t)return null;let n=t[1],r=t[2],i=t[3]?.trim()??``,a=[],o,s=i.match(/"([^"]*)"/);s&&(o=M(s[1]));let c=i.replace(/"[^"]*"/,``).trim();for(let e of c.split(/\s+/)){let t=e.toUpperCase();(t===`PK`||t===`FK`||t===`UK`)&&a.push(t)}return{type:n,name:r,keys:a,comment:o}}function be(e,t){let n=e.match(/^(\S+)\s+(\S*(?:--|\.\.)\S*)\s+(\S+)\s*(?::\s*(.*))?$/);if(!n)return null;let r=n[1],i=n[2],a=n[3],o=n[4]!==void 0,s=n[4]?.trim()??``,c=i.match(/^([|o}{]*)(--|\.\.?)([|o}{]*)$/),l=c?xe(c[1]):null,u=c?Se(c[3]):null;if(!l||!u)throw Error(`Line ${t}: Invalid ER relationship cardinality "${i}" in "${e}". Left side must be one of ||, |o, }|, }o; right side must be one of ||, o|, |{, o{ (e.g. "||--o{").`);if(!o||s.length===0)throw Error(`Line ${t}: ER relationship "${r} ${i} ${a}" is missing a ": label" — expected e.g. "${r} ${i} ${a} : label".`);return{entity1:r,entity2:a,cardinality1:l,cardinality2:u,label:M(s.replace(/^["']|["']$/g,``)),identifying:c[2]===`--`}}function xe(e){return e===`||`?`one`:e===`|o`?`zero-one`:e===`}|`?`many`:e===`}o`?`zero-many`:null}function Se(e){return e===`||`?`one`:e===`o|`?`zero-one`:e===`|{`?`many`:e===`o{`?`zero-many`:null}var Ce=new Set(`aliceblue antiquewhite aqua aquamarine azure beige bisque black blanchedalmond blue blueviolet brown burlywood cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan darkblue darkcyan darkgoldenrod darkgray darkgreen darkgrey darkkhaki darkmagenta darkolivegreen darkorange darkorchid darkred darksalmon darkseagreen darkslateblue darkslategray darkslategrey darkturquoise darkviolet deeppink deepskyblue dimgray dimgrey dodgerblue firebrick floralwhite forestgreen fuchsia gainsboro ghostwhite gold goldenrod gray green greenyellow grey honeydew hotpink indianred indigo ivory khaki lavender lavenderblush lawngreen lemonchiffon lightblue lightcoral lightcyan lightgoldenrodyellow lightgray lightgreen lightgrey lightpink lightsalmon lightseagreen lightskyblue lightslategray lightslategrey lightsteelblue lightyellow lime limegreen linen magenta maroon mediumaquamarine mediumblue mediumorchid mediumpurple mediumseagreen mediumslateblue mediumspringgreen mediumturquoise mediumvioletred midnightblue mintcream mistyrose moccasin navajowhite navy oldlace olive olivedrab orange orangered orchid palegoldenrod palegreen paleturquoise palevioletred papayawhip peachpuff peru pink plum powderblue purple rebeccapurple red rosybrown royalblue saddlebrown salmon sandybrown seagreen seashell sienna silver skyblue slateblue slategray slategrey snow springgreen steelblue tan teal thistle tomato turquoise violet wheat white whitesmoke yellow yellowgreen`.split(` `)),we=/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,Te=/^(?:rgba?|hsla?)\(\s*[\d.%]+(?:[\s,/]+[\d.%]+){2,3}\s*\)$/i;function Ee(e){return Ce.has(e.toLowerCase())||we.test(e)||Te.test(e)}function z(e){let t=e.trim(),n=t.match(/^((?:rgba?|hsla?)\s*\([^)]*\)|#[0-9a-fA-F]+|\S+)?(.*)$/),r=n?.[1]??``,i=n?.[2]?.trim()??``;return r.toLowerCase()===`transparent`?{label:i}:r!==``&&Ee(r)?{color:r,label:i}:{label:t}}function De(e){return e===`loop`||e===`alt`||e===`opt`||e===`par`||e===`critical`||e===`break`||e===`rect`}function Oe(e){if(!De(e))throw Error(`Invalid block type: "${e}"`);return e}var ke=/^(.+?)\s*(<<->>|<<-->>|--?>?>)\s*([+-]?)(.+?)\s*:\s*(.+)$/,Ae=/^(.+?)\s*(<<->>|<<-->>|--?>?>|--?[)x]|--?>>|--?>)\s*([+-]?)(.+?)\s*:\s*(.+)$/;function je(e){let t={actors:[],messages:[],blocks:[],notes:[],activations:[],boxes:[]},n={open:void 0,membership:new Map},r=0,i,a=new Set,o=[],s={enabled:!1,next:1,step:1},c,l;for(let u=1;u<e.length;u++){let d=e[u],f=d.text,p=f.match(/^box(?:\s+(.*))?$/);if(p){if(n.open!==void 0)throw Error(`Line ${d.line}: Sequence diagram: a box cannot be nested inside another box — close the open box with "end" first`);let{color:e,label:a}=z(p[1]??``),s={label:M(a),actorIds:[]};e!==void 0&&(s.color=e),t.boxes.push(s),n.open=t.boxes.length-1,r=o.length,i=d.line;continue}let m=f.match(/^create\s+(participant|actor)\s+(\S+?)(?:\s+as\s+(.+))?$/);if(m){let e=m[1]===`actor`?`actor`:`participant`,r=m[2];if(a.has(r))throw Error(`Line ${d.line}: It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior`);a.add(r),t.actors.push({id:r,label:M(m[3]?.trim()??r),type:e}),Pe(t,n,r,d.line),c=r;continue}let h=f.match(/^destroy\s+(.+)$/);if(h){let e=h[1].trim();Ne(t,a,n,e,d.line),l=e;continue}let g=f.match(/^autonumber(?:\s+(off|\d+(?:\.\d{1,2})?)(?:\s+(\d+(?:\.\d{1,2})?))?)?$/);if(g){let e=g[1],t=g[2];e===`off`?s.enabled=!1:(s.enabled=!0,s.next=e===void 0?1:Number(e),s.step=t===void 0?1:Number(t));continue}let _=f.match(/^(participant|actor)\s+(\S+?)(?:\s+as\s+(.+))?$/);if(_){let e=_[1]===`actor`?`actor`:`participant`,r=_[2],i=M(_[3]?.trim()??r);a.has(r)||(a.add(r),t.actors.push({id:r,label:i,type:e})),Pe(t,n,r,d.line);continue}let v=f.match(/^Note\s+(left of|right of|over)\s+([^:]+):\s*(.+)$/i);if(v){let e=v[1].toLowerCase(),r=v[2].trim(),i=M(v[3].trim()),o=r.split(`,`).map(e=>e.trim());for(let e of o)Ne(t,a,n,e,d.line);let s=`over`;e===`left of`?s=`left`:e===`right of`&&(s=`right`),t.notes.push({actorIds:o,text:i,position:s,afterIndex:t.messages.length-1});continue}let y=f.match(/^(loop|alt|opt|par|critical|break|rect)\s*(.*)$/);if(y){let e=Oe(y[1]),n=M(y[2]?.trim()??``);o.push({type:e,label:n,startIndex:t.messages.length,dividers:[],line:d.line});continue}let b=f.match(/^(else|and)\s*(.*)$/);if(b&&o.length>0){let e=M(b[2]?.trim()??``);o[o.length-1].dividers.push({index:t.messages.length,label:e});continue}if(f===`end`&&n.open!==void 0&&o.length===r){n.open=void 0,i=void 0;continue}if(f===`end`&&o.length>0){let e=o.pop();t.blocks.push({type:e.type,label:e.label,startIndex:e.startIndex,endIndex:Math.max(t.messages.length-1,e.startIndex),dividers:e.dividers});continue}if(f===`end`)throw Error(`Line ${d.line}: Sequence diagram: "end" does not match any open block ("loop"/"alt"/"opt"/"par"/"critical"/"break"/"rect") or "box" — nothing is currently open to close.`);let x=f.match(/^(activate|deactivate)\s+(.+)$/);if(x){let e=x[2].trim();Ne(t,a,n,e,d.line),t.activations.push({actorId:e,kind:x[1]===`activate`?`start`:`end`,afterIndex:t.messages.length-1});continue}let S=f.match(ke)??f.match(Ae);if(S){let e=S[2],r=S[4][0];if(r===`>`||r===`)`)throw Error(`Line ${d.line}: Malformed sequence-diagram arrow in "${f}" — "${e}${r}" is not a recognized arrow. Expected one of: ->, -->, ->>, -->>, -x, --x, -), --), <<->>, <<-->>.`);Fe(t,a,n,s,S[1],S[2],S[3],S[4],S[5],d.line);let i=t.messages.length-1,o=t.messages[i];if(c!==void 0){if(o.to!==c)throw Error(`Line ${d.line}: The created participant ${c} does not have an associated creating message after its declaration. Please check the sequence diagram.`);Me(t,c).createdAt=i,c=void 0}if(l!==void 0){if(o.from!==l&&o.to!==l)throw Error(`Line ${d.line}: The destroyed participant ${l} does not have an associated destroying message after its declaration. Please check the sequence diagram.`);Me(t,l).destroyedAt=i,l=void 0}continue}}if(o.length>0){let e=o[o.length-1];throw Error(`Line ${e.line}: Sequence diagram: unclosed "${e.type}" block — expected a matching "end" before the diagram ends.`)}if(n.open!==void 0){let e=t.boxes[n.open];throw Error(`Line ${i}: Sequence diagram: unclosed "box${e.label?` ${e.label}`:``}" — expected a matching "end" before the diagram ends.`)}return t}function Me(e,t){let n=e.actors.find(e=>e.id===t);if(n===void 0)throw Error(`Sequence diagram: unknown actor "${t}"`);return n}function Ne(e,t,n,r,i){t.has(r)||(t.add(r),e.actors.push({id:r,label:r,type:`participant`})),Pe(e,n,r,i)}function Pe(e,t,n,r){let i=t.open;if(i===void 0)return;let a=t.membership.get(n);if(a!==i){if(a!==void 0){let t=e.boxes[a].label,o=e.boxes[i].label;throw Error(`Line ${r}: A same participant should only be defined in one Box: ${n} can't be in '${t}' and in '${o}' at the same time.`)}t.membership.set(n,i),e.boxes[i].actorIds.push(n)}}function Fe(e,t,n,r,i,a,o,s,c,l){Ne(e,t,n,i,l),Ne(e,t,n,s,l);let u=a===`<<->>`||a===`<<-->>`,d=u?a===`<<-->>`?`dashed`:`solid`:a.startsWith(`--`)?`dashed`:`solid`,f=a.includes(`>>`)||a.includes(`x`)?`filled`:`open`,p=a.includes(`x`),m={from:i,to:s,label:M(c.trim()),lineStyle:d,arrowHead:f};p&&(m.isLost=!0),u&&(m.bidirectional=!0),o===`+`&&(m.activate=!0),o===`-`&&(m.deactivate=!0),r.enabled&&(m.seqNumber=r.next,r.next=Math.round((r.next+r.step)*100)/100),e.messages.push(m)}function Ie(e){let t={},n={},r=[],i,a=!1;for(let o of e){let e=o.text;if(/^xychart(-beta)?\b/i.test(e)){/\bhorizontal\b/i.test(e)&&(a=!0);continue}let s=e.match(/^title\s+"([^"]+)"/);if(s){i=s[1];continue}let c=e.match(/^x-axis\s+(?:"([^"]*)"\s*)?\[([^\]]+)\]/);if(c){c[1]&&(t.title=c[1]),t.categories=Le(c[2]).map(e=>Re(e.trim()));continue}let l=e.match(/^x-axis\s+(?:"([^"]*)"\s+)?(-?\d+(?:\.\d+)?)\s*-->\s*(-?\d+(?:\.\d+)?)/);if(l){l[1]&&(t.title=l[1]),t.range={min:parseFloat(l[2]),max:parseFloat(l[3])};continue}let u=e.match(/^y-axis\s+(?:"([^"]*)"\s+)?(-?\d+(?:\.\d+)?)\s*-->\s*(-?\d+(?:\.\d+)?)/);if(u){u[1]&&(n.title=u[1]),n.range={min:parseFloat(u[2]),max:parseFloat(u[3])};continue}let d=e.match(/^y-axis\s+"([^"]+)"\s*$/);if(d){n.title=d[1];continue}let f=e.match(/^bar\s+\[([^\]]+)\]/);if(f){r.push({type:`bar`,data:ze(f[1],`bar`,e,o.line)});continue}let p=e.match(/^line\s+\[([^\]]+)\]/);if(p){r.push({type:`line`,data:ze(p[1],`line`,e,o.line)});continue}let m=e.match(/^(x-axis|y-axis|bar|line|title)\b/i);if(m)throw Ve(m[1].toLowerCase(),e,o.line)}if(!n.range&&r.length>0){let e=r.flatMap(e=>e.data),t=Math.min(...e),i=Math.max(...e),a=i-t||1;t-=a*.1,i+=a*.1,t>0&&t<a*.5&&(t=0),n.range={min:t,max:i}}return n.range||={min:0,max:100},{title:i,horizontal:a,xAxis:t,yAxis:n,series:r}}function Le(e){let t=[],n=``,r=!1;for(let i of e)i===`"`?(r=!r,n+=i):i===`,`&&!r?(t.push(n),n=``):n+=i;return t.push(n),t}function Re(e){return e.length>=2&&e.startsWith(`"`)&&e.endsWith(`"`)?e.slice(1,-1):e}function ze(e,t,n,r){return e.split(`,`).map((e,i)=>{let a=e.trim(),o=parseFloat(a);if(a.length===0||Number.isNaN(o))throw Error(`Line ${r}: Invalid numeric value ${JSON.stringify(a)} at position ${i+1} in "${n}". Every value in a ${t} [...] list must be a number.`);return o})}var Be={"x-axis":`x-axis [A, B, C] (categories) or x-axis 0 --> 100 (numeric range), either optionally preceded by a quoted title`,"y-axis":`y-axis 0 --> 100 (numeric range) or y-axis "Title" (title only), optionally preceded by a quoted title before a range`,bar:`bar [10, 20, 30] — a comma-separated numeric array in square brackets`,line:`line [10, 20, 30] — a comma-separated numeric array in square brackets`,title:`title "Chart Title" — a double-quoted string`};function Ve(e,t,n){let r=Be[e]??e;return Error(`Line ${n}: Malformed xychart-beta "${e}" directive: "${t}". Expected: ${r}.`)}var He=`#3b82f6`;function Ue(e){let t=e.replace(`#`,``),n=parseInt(t.substring(0,2),16)/255,r=parseInt(t.substring(2,4),16)/255,i=parseInt(t.substring(4,6),16)/255,a=Math.max(n,r,i),o=Math.min(n,r,i),s=(a+o)/2;if(a===o)return[0,0,s*100];let c=a-o,l=s>.5?c/(2-a-o):c/(a+o),u;return u=a===n?((r-i)/c+(r<i?6:0))/6:a===r?((i-n)/c+2)/6:((n-r)/c+4)/6,[u*360,l*100,s*100]}function We(e,t,n){let r=t/100,i=n/100,a=(1-Math.abs(2*i-1))*r,o=a*(1-Math.abs(e/60%2-1)),s=i-a/2,c,l,u;e<60?(c=a,l=o,u=0):e<120?(c=o,l=a,u=0):e<180?(c=0,l=a,u=o):e<240?(c=0,l=o,u=a):e<300?(c=o,l=0,u=a):(c=a,l=0,u=o);let d=e=>Math.round((e+s)*255).toString(16).padStart(2,`0`);return`#${d(c)}${d(l)}${d(u)}`}function Ge(e){return/^#[0-9a-fA-F]{6}$/.test(e)}function Ke(e){return Ue(e)[2]<50}function qe(e,t,n){if(e===0)return t;let r=Ge(t)?t:He,i=n&&Ge(n)?n:void 0,[a,o]=Ue(r),s=Math.max(55,Math.min(85,o)),c=Math.ceil(e/2),l=e%2==1,u=i&&Ke(i)?!l:l,d=u?Math.max(25,48-c*13):Math.min(78,55+c*11);return We(((a+(u?-8:12)*c)%360+360)%360,s,d)}var Je={rect:`rectangle`,rectangle:`rectangle`,proc:`rectangle`,process:`rectangle`,"normal-rect":`rectangle`,rounded:`rounded`,event:`rounded`,"rounded-rect":`rounded`,stadium:`stadium`,pill:`stadium`,terminal:`stadium`,subproc:`subroutine`,subprocess:`subroutine`,subroutine:`subroutine`,"framed-rectangle":`subroutine`,"fr-rect":`subroutine`,cyl:`cylinder`,cylinder:`cylinder`,db:`cylinder`,database:`cylinder`,"h-cyl":`cylinder`,das:`cylinder`,"horizontal-cylinder":`cylinder`,"lin-cyl":`cylinder`,"lined-cylinder":`cylinder`,disk:`cylinder`,circ:`circle`,circle:`circle`,start:`circle`,"dbl-circ":`doublecircle`,"double-circle":`doublecircle`,stop:`doublecircle`,"f-circ":`filled-circle`,"filled-circle":`filled-circle`,junction:`filled-circle`,"cross-circ":`crossed-circle`,"crossed-circle":`crossed-circle`,summary:`crossed-circle`,diam:`diamond`,diamond:`diamond`,decision:`diamond`,question:`diamond`,hex:`hexagon`,hexagon:`hexagon`,prepare:`hexagon`,odd:`asymmetric`,"rect-left-inv-arrow":`asymmetric`,"lean-r":`parallelogram`,"lean-right":`parallelogram`,"in-out":`parallelogram`,"lean-l":`parallelogram-alt`,"lean-left":`parallelogram-alt`,"out-in":`parallelogram-alt`,"trap-b":`trapezoid`,"trapezoid-bottom":`trapezoid`,priority:`trapezoid`,"trap-t":`trapezoid-alt`,"trapezoid-top":`trapezoid-alt`,manual:`trapezoid-alt`,"curv-trap":`trapezoid-alt`,"curved-trapezoid":`trapezoid-alt`,display:`trapezoid-alt`,doc:`document`,document:`document`,"lin-doc":`document`,"lined-document":`document`,"tag-doc":`document`,"tagged-document":`document`,docs:`stacked-document`,documents:`stacked-document`,"st-doc":`stacked-document`,"stacked-document":`stacked-document`,"notch-rect":`card`,card:`card`,"notched-rectangle":`card`,"lin-rect":`lined-process`,"lined-rectangle":`lined-process`,"lin-proc":`lined-process`,"shaded-process":`lined-process`,"div-rect":`divided-process`,"divided-rectangle":`divided-process`,"div-proc":`divided-process`,"tag-rect":`rectangle`,"tagged-rectangle":`rectangle`,"tag-proc":`rectangle`,procs:`stacked-process`,processes:`stacked-process`,"st-rect":`stacked-process`,"stacked-rectangle":`stacked-process`,tri:`triangle`,triangle:`triangle`,extract:`triangle`,"flip-tri":`flipped-triangle`,"flipped-triangle":`flipped-triangle`,"manual-file":`flipped-triangle`,"win-pane":`window-pane`,"window-pane":`window-pane`,"internal-storage":`window-pane`,fork:`fork-join`,join:`fork-join`,"long-rect":`fork-join`,"notch-pent":`notched-pentagon`,"loop-limit":`notched-pentagon`,"notched-pentagon":`notched-pentagon`,"sl-rect":`sloped-rectangle`,"sloped-rectangle":`sloped-rectangle`,"manual-input":`sloped-rectangle`,flag:`flag`,"paper-tape":`flag`,"bow-rect":`bow-tie-rectangle`,"bow-tie-rectangle":`bow-tie-rectangle`,"stored-data":`bow-tie-rectangle`,delay:`half-rounded-rectangle`,"half-rounded-rectangle":`half-rounded-rectangle`,brace:`brace`,"brace-l":`brace`,comment:`brace`,"brace-r":`brace-right`,braces:`braces`,bolt:`bolt`,"com-link":`bolt`,"lightning-bolt":`bolt`,text:`text`,anchor:`anchor`};function Ye(e){return Je[e.trim().toLowerCase()]}function Xe(e){let t={};for(let n of Ze(e,`,`)){let e=n.trim();if(e.length===0)continue;let r=Qe(e,`:`);if(r===-1){t.shape??=$e(e);continue}let i=e.slice(0,r).trim().toLowerCase(),a=$e(e.slice(r+1).trim());i.length>0&&(t[i]=a)}return t}function Ze(e,t){let n=[],r=``,i=null;for(let a of e){if(i!==null){r+=a,a===i&&(i=null);continue}if(a===`"`||a===`'`){i=a,r+=a;continue}if(a===t){n.push(r),r=``;continue}r+=a}return n.push(r),n}function Qe(e,t){let n=null;for(let r=0;r<e.length;r++){let i=e[r];if(n!==null){i===n&&(n=null);continue}if(i===`"`||i===`'`){n=i;continue}if(i===t)return r}return-1}function $e(e){return e.length>=2&&(e.startsWith(`"`)&&e.endsWith(`"`)||e.startsWith(`'`)&&e.endsWith(`'`))?e.slice(1,-1):e}function et(e){if(!e.startsWith(`@{`))return;let t=0,n=null;for(let r=1;r<e.length;r++){let i=e[r];if(n!==null){i===n&&(n=null);continue}if(i===`"`||i===`'`){n=i;continue}if(i===`{`){t++;continue}if(i===`}`&&(t--,t===0))return{body:e.slice(2,r),length:r+1}}}function tt(e){return[e.length-1,(e[0]?.length??1)-1]}var nt=`\x1B]8;;\x1B\\`;function rt(e){return`\x1b]8;;${e.replace(/[^\x21-\x7e]/gu,e=>encodeURIComponent(e))}\x1b\\`}var it=/\x1b\]8;[^\x07\x1b]*(?:\x1b\\|\x07)/g;function at(e){return e.replace(it,``)}function ot(e,t){let n=[];for(let r=0;r<=e;r++){let e=[];for(let n=0;n<=t;n++)e.push(null);n.push(e)}return n}function st(e,t,n,r){let i=e[t];i===void 0||n<0||n>=i.length||(i[n]=r)}function ct(e){for(let t of e)t.reverse();return e}function lt(e,t,n,r,i){let[a,o]=tt(t),s=Math.max(1,i?.from??1),c=Math.min(o-1,i?.to??o-1);for(let i=s;i<=c;i++){let o=-1,s=-1;for(let e=1;e<=a-1;e++)t[e]?.[i]!==` `&&(o===-1&&(o=e),s=e);if(o!==-1)for(let t=o;t<=s;t++)st(e,t+n.x,i+n.y,r)}}function ut(e,n){let[r,i]=tt(e.canvas),a=ot(r,i);for(let r of e.nodes){if(!r.drawing||!r.drawingCoord)continue;let e=t(n.get(r.name)?.href);e!==void 0&&lt(a,r.drawing,r.drawingCoord,e)}return a}var dt=class{current=null;advance(e){if(e===this.current)return``;let t=this.current===null?``:nt;return e!==null&&(t+=rt(e)),this.current=e,t}finish(){let e=this.current===null?``:nt;return this.current=null,e}};function ft(e,t){let n=new dt,r=``;for(let[i,a]of e.entries())r+=n.advance(t[i]??null)+a;return r+n.finish()}var pt={fg:`#27272a`,border:`#a1a1aa`,line:`#71717a`,arrow:`#52525b`,corner:`#71717a`,junction:`#a1a1aa`};function mt(e){let t=e.line??l(e.fg,e.bg,oe.line),n=e.border??l(e.fg,e.bg,oe.nodeStroke);return{fg:e.fg,border:n,line:t,arrow:e.accent??l(e.fg,e.bg,oe.arrow),accent:e.accent,bg:e.bg,corner:t,junction:n}}function ht(){let e=globalThis.process;if(e){if(!e.stdout?.isTTY)return`none`;let t=e.env?.COLORTERM?.toLowerCase()??``,n=e.env?.TERM?.toLowerCase()??``;return t===`truecolor`||t===`24bit`?`truecolor`:n.includes(`256color`)||n.includes(`256`)?`ansi256`:n&&n!==`dumb`?`ansi16`:`none`}return typeof document<`u`?`html`:`none`}function gt(e){return i(e.startsWith(`#`)?e:`#${e}`)??{r:0,g:0,b:0}}var _t=`\x1B[`,vt=`${_t}0m`;function yt(e){let{r:t,g:n,b:r}=gt(e);return`${_t}38;2;${t};${n};${r}m`}function bt(e,t,n){let r=(e+t+n)/3;if(Math.max(Math.abs(e-r),Math.abs(t-r),Math.abs(n-r))<10){let e=Math.round(r/255*23);return 232+Math.min(23,Math.max(0,e))}let i=e=>e<48?0:e<115?1:Math.min(5,Math.floor((e-35)/40)),a=i(e),o=i(t),s=i(n);return 16+36*a+6*o+s}function xt(e){let{r:t,g:n,b:r}=gt(e);return`${_t}38;5;${bt(t,n,r)}m`}function St(e){let{r:t,g:n,b:r}=gt(e),i=.299*t+.587*n+.114*r,a=i>100?0:60,o;return o=t>180&&n<100&&r<100?31:n>180&&t<100&&r<100?32:t>150&&n>150&&r<100?33:r>180&&t<100&&n<100?34:t>150&&r>150&&n<100?35:n>150&&r>150&&t<100?36:i>200?37:i<50?30:37,`${_t}${o+a}m`}function Ct(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function wt(e,t){return`<span style="color:${e}">${Ct(t)}</span>`}function Tt(e,t){switch(e){case`text`:return t.fg;case`border`:return t.border;case`line`:return t.line;case`arrow`:return t.arrow;case`corner`:return t.corner??t.line;case`junction`:return t.junction??t.border;default:return t.fg}}function Et(e,t,n){if(n===`none`)return``;let r=Tt(e,t);switch(n){case`truecolor`:return yt(r);case`ansi256`:return xt(r);case`ansi16`:return St(r);default:return``}}function Dt(e,t,n,r,i){if(r===`none`)return i?ft(e,i):e.join(``);if(r===`html`)return Ot(e,t,n);let a=new dt,o=``,s=null,c=``;for(let[l,u]of e.entries()){let e=t[l]??null,d=i?a.advance(i[l]??null):``;if(u===` `){c.length>0&&(o+=s===null?c:Et(s,n,r)+c+vt,c=``,s=null),o+=d+u;continue}if(e===s){c+=d+u;continue}c.length>0&&(o+=s===null?c:Et(s,n,r)+c+vt),c=d+u,s=e}return c.length>0&&s!==null?o+=Et(s,n,r)+c+vt:c.length>0&&(o+=c),o+a.finish()}function Ot(e,t,n){let r=``,i=null,a=``,o=()=>{a.length!==0&&(r+=i===null?Ct(a):wt(Tt(i,n),a),a=``,i=null)};for(let[n,s]of e.entries()){let e=t[n]??null;if(s===` `){o(),r+=` `;continue}if(e===i){a+=s;continue}o(),a=s,i=e}return o(),r}function kt(e,t,n){if(n===`none`||e.length===0)return e;if(n===`html`)return wt(t,e);let r;switch(n){case`truecolor`:r=yt(t);break;case`ansi256`:r=xt(t);break;case`ansi16`:r=St(t);break;default:return e}return`${r}${e}${vt}`}var At=/\p{Mn}|\p{Me}/u;function jt(e){return At.test(e)}var Mt=new Intl.Segmenter(void 0,{granularity:`grapheme`}),Nt=`️`;function Pt(e){let t=[];for(let{segment:n}of Mt.segment(e))t.push(n);return t}function Ft(e){if(e.includes(Nt))return 2;let t=!1,n=!1;for(let r of e)j(r)&&(t=!0),jt(r)||(n=!0);return t?2:+!!n}function B(e){let t=0;for(let n of Pt(e))t+=Ft(n);return t}function It(e){let t=[];for(let n of Pt(e)){let e=Ft(n);e!==0&&(t.push(n),e===2&&t.push(``))}return t}function V(e,t){let n=[];for(let r=0;r<=e;r++){let e=[];for(let n=0;n<=t;n++)e.push(` `);n.push(e)}return n}function H(e){let[t,n]=Bt(e);return V(t,n)}function Lt(e,t){let n=[];for(let r=0;r<=e;r++){let e=[];for(let n=0;n<=t;n++)e.push(null);n.push(e)}return n}function Rt(e,t,n){let r=e.length-1,i=(e[0]?.length??1)-1,a=Lt(Math.max(t,r),Math.max(n,i));for(let t=0;t<a.length;t++)for(let n=0;n<(a[0]?.length??0);n++)t<e.length&&n<(e[0]?.length??0)&&(a[t][n]=e[t][n]);return e.length=0,e.push(...a),e}function zt(e,t,n,r){(t>=e.length||n>=(e[0]?.length??0))&&Rt(e,t,n),e[t][n]=r}function Bt(e){return[e.length-1,(e[0]?.length??1)-1]}function Vt(e,t,n){let[r,i]=Bt(e),a=V(Math.max(t,r),Math.max(n,i));for(let t=0;t<a.length;t++)for(let n=0;n<(a[0]?.length??0);n++)t<e.length&&n<(e[0]?.length??0)&&(a[t][n]=e[t][n]);return e.length=0,e.push(...a),e}function U(e,t,n,r,i){let[a,o]=Bt(e);t<0||t>a||n<0||n>o||(e[t][n]=r,i&&zt(i.roleCanvas,t,n,i.role))}var Ht=new Set([`─`,`│`,`┌`,`┐`,`└`,`┘`,`├`,`┤`,`┬`,`┴`,`┼`,`╴`,`╵`,`╶`,`╷`]);function Ut(e){return Ht.has(e)}function Wt(e){return/^[a-zA-Z0-9]$/.test(e)}var Gt={"─":{"│":`┼`,"┌":`┬`,"┐":`┬`,"└":`┴`,"┘":`┴`,"├":`┼`,"┤":`┼`,"┬":`┬`,"┴":`┴`},"│":{"─":`┼`,"┌":`├`,"┐":`┤`,"└":`├`,"┘":`┤`,"├":`├`,"┤":`┤`,"┬":`┼`,"┴":`┼`},"┌":{"─":`┬`,"│":`├`,"┐":`┬`,"└":`├`,"┘":`┼`,"├":`├`,"┤":`┼`,"┬":`┬`,"┴":`┼`},"┐":{"─":`┬`,"│":`┤`,"┌":`┬`,"└":`┼`,"┘":`┤`,"├":`┼`,"┤":`┤`,"┬":`┬`,"┴":`┼`},"└":{"─":`┴`,"│":`├`,"┌":`├`,"┐":`┼`,"┘":`┴`,"├":`├`,"┤":`┼`,"┬":`┼`,"┴":`┴`},"┘":{"─":`┴`,"│":`┤`,"┌":`┼`,"┐":`┤`,"└":`┴`,"├":`┼`,"┤":`┤`,"┬":`┼`,"┴":`┴`},"├":{"─":`┼`,"│":`├`,"┌":`├`,"┐":`┼`,"└":`├`,"┘":`┼`,"┤":`┼`,"┬":`┼`,"┴":`┼`},"┤":{"─":`┼`,"│":`┤`,"┌":`┼`,"┐":`┤`,"└":`┼`,"┘":`┤`,"├":`┼`,"┬":`┼`,"┴":`┼`},"┬":{"─":`┬`,"│":`┼`,"┌":`┬`,"┐":`┬`,"└":`┼`,"┘":`┼`,"├":`┼`,"┤":`┼`,"┴":`┼`},"┴":{"─":`┴`,"│":`┼`,"┌":`┼`,"┐":`┼`,"└":`┴`,"┘":`┴`,"├":`┼`,"┤":`┼`,"┬":`┼`}};function Kt(e,t){return Gt[e]?.[t]??e}function qt(e,t,n,...r){let[i,a]=Bt(e);for(let e of r){let[n,r]=Bt(e);i=Math.max(i,n+t.x),a=Math.max(a,r+t.y)}let o=V(i,a);for(let t=0;t<=i;t++)for(let n=0;n<=a;n++)t<e.length&&n<(e[0]?.length??0)&&(o[t][n]=e[t][n]);for(let e of r)for(let r=0;r<e.length;r++)for(let i=0;i<(e[0]?.length??0);i++){let a=e[r][i];if(a!==` `){let e=r+t.x,s=i+t.y,c=o[e][s];!n&&Ut(a)&&Ut(c)?o[e][s]=Kt(c,a):Wt(c)&&Wt(a)||(o[e][s]=a)}}return o}function Jt(e,t){let[n,r]=Bt(e),i=[],a=t?.roleCanvas,o=t?.colorMode??`none`,s=t?.theme??pt,c=o===`html`?void 0:t?.linkCanvas;for(let t=0;t<=r;t++)if(o===`none`||!a){let r=[];for(let i=0;i<=n;i++)r.push(e[i][t]);if(c){let e=r.map((e,n)=>c[n]?.[t]??null);i.push(ft(r,e))}else i.push(r.join(``))}else{let r=[],l=[],u=[];for(let i=0;i<=n;i++)r.push(e[i][t]),l.push(a[i]?.[t]??null),u.push(c?.[i]?.[t]??null);i.push(Dt(r,l,s,o,c?u:void 0))}return i.join(`
5
+ `)}var Yt={"▲":`▼`,"▼":`▲`,"↖":`↙`,"↙":`↖`,"↗":`↘`,"↘":`↗`,"^":`v`,v:`^`,"┌":`└`,"└":`┌`,"┐":`┘`,"┘":`┐`,"┬":`┴`,"┴":`┬`,"╵":`╷`,"╷":`╵`};function Xt(e){for(let t of e)t.reverse();for(let t of e)for(let[e,n]of t.entries()){let r=Yt[n];r&&(t[e]=r)}return e}function Zt(e){for(let t of e)t.reverse();return e}function Qt(e,t,n,r=!1){let i=It(n);Vt(e,t.x+i.length,t.y);for(let[n,a]of i.entries()){let i=t.x+n,o=e[i][t.y];(r||o===` `)&&(e[i][t.y]=a)}}function $t(e,t,n){let r=0,i=0;for(let e of t.values())r+=e;for(let e of n.values())i+=e;Vt(e,r-1,i-1)}function en(e,t,n){let r=0,i=0;for(let e of t.values())r+=e;for(let e of n.values())i+=e;Rt(e,r-1,i-1)}var tn=60,nn=20,rn={hLine:`─`,vLine:`│`,origin:`┼`,yTick:`┤`,xTick:`┬`,bar:`█`,grid:`·`,cornerTL:`╭`,cornerTR:`╮`,cornerBL:`╰`,cornerBR:`╯`},an={hLine:`-`,vLine:`|`,origin:`+`,yTick:`+`,xTick:`+`,bar:`#`,grid:`.`,cornerTL:`+`,cornerTR:`+`,cornerBL:`+`,cornerBR:`+`};function on(e,t){let n=t.accent??`#3b82f6`;return e<=1?[n]:Array.from({length:e},(e,r)=>qe(r,n,t.bg))}function sn(e,t){switch(e){case`text`:return t.fg;case`border`:return t.border;case`line`:return t.line;case`arrow`:return t.arrow;case`corner`:return t.corner??t.line;case`junction`:return t.junction??t.border;default:return t.fg}}function cn(e,t,n,r){let i=Ie(_(e)),a=t.useAscii?an:rn;return i.horizontal?un(i,a,n,r):ln(i,a,n,r)}function ln(e,t,n,r){let i=xn(e);if(i===0)return``;let a=e.yAxis.range;if(!a)throw Error(`XY chart: y-axis range was not set by the parser`);let o=Cn(a.min,a.max),s=o.map(e=>wn(e)),c=Math.max(...s.map(e=>e.length))+1,l=Math.max(tn,i*6),u=nn,d=Math.floor(l/i),f=Sn(e,i),p=!!e.title,m=!!e.xAxis.title,h=!!e.yAxis.title,g=e.series.length>1,_=p?0:-1,v=(p?2:0)+ +!!g,y=h?2:0,b=y+c+1,x=b+d*i+2,S=v+u,C=S+1,w=m?C+1:-1,T=C+1+ +!!m+0,E=mn(x,T),D=hn(x,T),O=gn(x,T),ee=on(e.series.length,r),te=e=>{let t=(e-a.min)/(a.max-a.min||1);return Math.round(t*19)},k=e=>b+Math.floor(d*(e+.5));e.title&&_>=0&&vn(E,D,_,Math.floor(x/2-e.title.length/2),e.title,`text`),g&&pn(E,D,O,e,+!!p,x,t,ee);for(let e=0;e<u;e++)W(E,D,v+(19-e),b-1,t.vLine,`border`);W(E,D,S,b-1,t.origin,`border`);for(let e of o){let n=te(e);if(n<0||n>=u)continue;let r=v+(19-n),i=wn(e);W(E,D,r,b-1,n===0?t.origin:t.yTick,`border`);let a=y+c-i.length;vn(E,D,r,Math.max(0,a),i,`text`)}for(let e=b;e<b+d*i;e++)W(E,D,S,e,t.hLine,`border`);for(let e=0;e<i;e++){let n=k(e);W(E,D,S,n,t.xTick,`border`);let r=f[e],i=n-Math.floor(r.length/2);vn(E,D,C,Math.max(0,i),r,`text`)}if(e.xAxis.title&&w>=0){let t=e.xAxis.title;vn(E,D,w,Math.floor(x/2-t.length/2),t,`text`)}if(e.yAxis.title){let t=e.yAxis.title,n=v+Math.max(0,Math.floor((u-t.length)/2));for(let e=0;e<t.length;e++){let r=n+e;if(r>=v+u)break;W(E,D,r,0,t[e],`text`)}}for(let e of o){let n=te(e);if(n<0||n>=u)continue;let r=v+(19-n);for(let e=b;e<b+d*i;e++)_n(E,r,e)===` `&&W(E,D,r,e,t.grid,`line`)}let ne=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`bar`&&ne.push({data:e.series[t].data,globalIdx:t});if(ne.length>0){let e=Math.max(1,d-2),n=Math.max(1,Math.min(e,8)),r=te(Math.max(0,a.min));for(let e=0;e<ne.length;e++){let i=ne[e],a=ee[i.globalIdx];for(let e=0;e<i.data.length;e++){let o=k(e)-Math.floor(n/2),s=te(i.data[e]),c=Math.min(r,s),l=Math.max(r,s);for(let e=c;e<=l;e++){let r=v+(19-e);for(let e=o;e<o+n;e++)W(E,D,r,e,t.bar,`arrow`,O,a)}}}}let A=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`line`&&A.push({data:e.series[t].data,globalIdx:t});for(let e of A){if(e.data.length===0)continue;let n=ee[e.globalIdx];dn(E,D,e.data,k,te,v,u,b,d*i,t,O,n)}return yn(E,D,O,n,r)}function un(e,t,n,r){let i=xn(e);if(i===0)return``;let a=e.yAxis.range;if(!a)throw Error(`XY chart: y-axis range was not set by the parser`);let o=Cn(a.min,a.max),s=Sn(e,i),c=Math.max(...s.map(e=>e.length))+1,l=Math.max(tn,40),u=Math.max(2,Math.floor(nn/i)),d=u*i,f=!!e.title,p=!!e.yAxis.title,m=e.series.length>1,h=(f?2:0)+ +!!m,g=c+1,_=g+l+2,v=h+d+2+ +!!p,y=h+d,b=mn(_,v),x=hn(_,v),S=gn(_,v),C=on(e.series.length,r),w=e=>{let t=(e-a.min)/(a.max-a.min||1);return g+Math.round(t*59)},T=e=>h+Math.floor(u*(e+.5));e.title&&vn(b,x,0,Math.floor(_/2-e.title.length/2),e.title,`text`),m&&pn(b,x,S,e,+!!f,_,t,C);for(let e=h;e<h+d;e++)W(b,x,e,g-1,t.vLine,`border`);W(b,x,y,g-1,t.origin,`border`);for(let e=0;e<i;e++){let t=T(e),n=s[e],r=c-n.length;vn(b,x,t,Math.max(0,r),n,`text`)}for(let e=g;e<g+l;e++)W(b,x,y,e,t.hLine,`border`);for(let e of o){let n=w(e);if(n<g||n>=g+l)continue;W(b,x,y,n,t.xTick,`border`);let r=wn(e);vn(b,x,y+1,n-Math.floor(r.length/2),r,`text`)}if(e.yAxis.title){let t=e.yAxis.title;vn(b,x,v-1,Math.floor(_/2-t.length/2),t,`text`)}for(let e of o){let n=w(e);if(!(n<g||n>=g+l))for(let e=h;e<h+d;e++)_n(b,e,n)===` `&&W(b,x,e,n,t.grid,`line`)}let E=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`bar`&&E.push({data:e.series[t].data,globalIdx:t});if(E.length>0){let e=w(Math.max(0,a.min));for(let n=0;n<E.length;n++){let r=E[n],i=C[r.globalIdx];for(let n=0;n<r.data.length;n++){let a=T(n),o=w(r.data[n]),s=Math.min(e,o),c=Math.max(e,o);for(let e=a;e<a+1;e++)for(let n=s;n<=c;n++)W(b,x,e,n,t.bar,`arrow`,S,i)}}}let D=[];for(let t=0;t<e.series.length;t++)e.series[t].type===`line`&&D.push({data:e.series[t].data,globalIdx:t});for(let e of D){if(e.data.length===0)continue;let n=C[e.globalIdx];fn(b,x,e.data,T,w,h,d,g,l,t,S,n)}return yn(b,x,S,n,r)}function dn(e,t,n,r,i,a,o,s,c,l,u,d){if(n.length===0)return;let f=n.map((e,t)=>({col:r(t),row:i(e)})),p=(n,r,i)=>{let l=a+(o-1-r);l>=0&&n>=s&&n<s+c&&W(e,t,l,n,i,`arrow`,u,d)};if(f.length===1){p(f[0].col,f[0].row,l.hLine);return}for(let e=0;e<f.length-1;e++){let t=f[e],n=f[e+1];if(t.row===n.row){for(let e=t.col;e<=n.col;e++)p(e,t.row,l.hLine);continue}let r=Math.round((t.col+n.col)/2),i=n.row>t.row;for(let e=t.col;e<r;e++)p(e,t.row,l.hLine);i?p(r,t.row,l.cornerBR):p(r,t.row,l.cornerTR);let a=Math.min(t.row,n.row),o=Math.max(t.row,n.row);for(let e=a+1;e<o;e++)p(r,e,l.vLine);i?p(r,n.row,l.cornerTL):p(r,n.row,l.cornerBL);for(let e=r+1;e<=n.col;e++)p(e,n.row,l.hLine);if(e===0){let e=Math.max(s,t.col-Math.floor((n.col-t.col)/4));for(let n=e;n<t.col;n++)p(n,t.row,l.hLine)}if(e===f.length-2){let e=Math.min(s+c-1,n.col+Math.floor((n.col-t.col)/4));for(let t=n.col+1;t<=e;t++)p(t,n.row,l.hLine)}}}function fn(e,t,n,r,i,a,o,s,c,l,u,d){if(n.length===0)return;let f=n.map((e,t)=>({row:r(t),col:i(e)})),p=(n,r,i)=>{n>=a&&n<a+o&&r>=s&&r<s+c&&W(e,t,n,r,i,`arrow`,u,d)};if(f.length===1){p(f[0].row,f[0].col,l.vLine);return}for(let e=0;e<f.length-1;e++){let t=f[e],n=f[e+1];if(t.col===n.col){for(let e=t.row;e<=n.row;e++)p(e,t.col,l.vLine);continue}let r=Math.round((t.row+n.row)/2),i=n.col>t.col;for(let e=t.row;e<r;e++)p(e,t.col,l.vLine);i?p(r,t.col,l.cornerBL):p(r,t.col,l.cornerBR);let a=Math.min(t.col,n.col),o=Math.max(t.col,n.col);for(let e=a+1;e<o;e++)p(r,e,l.hLine);i?p(r,n.col,l.cornerTR):p(r,n.col,l.cornerTL);for(let e=r+1;e<=n.row;e++)p(e,n.col,l.vLine)}}function pn(e,t,n,r,i,a,o,s){let c=[],l=0,u=0;for(let e=0;e<r.series.length;e++)r.series[e].type===`bar`?(c.push({symbol:o.bar,label:`Bar ${l+1}`,globalIdx:e}),l++):(c.push({symbol:o.hLine,label:`Line ${u+1}`,globalIdx:e}),u++);let d=0;for(let e=0;e<c.length;e++)e>0&&(d+=2),d+=2+c[e].label.length;let f=Math.max(0,Math.floor(a/2-d/2));for(let r=0;r<c.length;r++){r>0&&(f+=2);let a=c[r];W(e,t,i,f,a.symbol,`arrow`,n,s[a.globalIdx]),f+=1,f+=1,vn(e,t,i,f,a.label,`text`),f+=a.label.length}}function mn(e,t){return V(e-1,t-1)}function hn(e,t){return Lt(e-1,t-1)}function gn(e,t){return Array.from({length:e},()=>Array.from({length:t}).fill(null))}function W(e,t,n,r,i,a,o,s){r>=0&&r<e.length&&n>=0&&n<(e[0]?.length??0)&&(U(e,r,n,i,{role:a,roleCanvas:t}),o&&s&&(o[r][n]=s))}function _n(e,t,n){return n>=0&&n<e.length&&t>=0&&t<e[0].length?e[n][t]:` `}function vn(e,t,n,r,i,a){for(let o=0;o<i.length;o++)W(e,t,n,r+o,i[o],a)}function yn(e,t,n,r,i){if(e.length===0)return``;let a=e[0].length,o=e.length,s=[];for(let c=0;c<a;c++){let a=[],l=[],u=[];for(let r=0;r<o;r++)a.push(e[r][c]),l.push(t[r][c]),u.push(n[r][c]);let d=a.length-1;for(;d>=0&&a[d]===` `;)d--;d<0?s.push(``):s.push(bn(a.slice(0,d+1),l.slice(0,d+1),u.slice(0,d+1),i,r))}for(;s.length>0&&s[s.length-1]===``;)s.pop();return s.join(`
6
+ `)}function bn(e,t,n,r,i){if(i===`none`)return e.join(``);let a=``,o=null,s=``;for(let c=0;c<e.length;c++){let l=e[c];if(l===` `){s.length>0&&(a+=o?kt(s,o,i):s,s=``,o=null),a+=` `;continue}let u=n[c]??null,d=t[c]??null,f=u??(d?sn(d,r):null);f===o?s+=l:(s.length>0&&(a+=o?kt(s,o,i):s),s=l,o=f)}return s.length>0&&(a+=o?kt(s,o,i):s),a}function xn(e){if(e.xAxis.categories)return e.xAxis.categories.length;for(let t of e.series)if(t.data.length>0)return t.data.length;return 0}function Sn(e,t){if(e.xAxis.categories)return e.xAxis.categories;if(e.xAxis.range){let{min:n,max:r}=e.xAxis.range,i=t>1?(r-n)/(t-1):0;return Array.from({length:t},(e,t)=>wn(n+i*t))}return Array.from({length:t},(e,t)=>String(t+1))}function Cn(e,t){let n=t-e;if(n<=0)return[e];let r=n/6,i=10**Math.floor(Math.log10(r)),a=r/i,o;o=a<=1.5?i:a<=3?2*i:a<=7?5*i:10*i;let s=Math.ceil(e/o)*o,c=[];for(let e=s;e<=t+o*.001;e+=o)c.push(Math.round(e*1e10)/1e10);return c}function wn(e){return Number.isInteger(e)?String(e):e.toFixed(+(Math.abs(e)<10))}var G={x:1,y:0},K={x:1,y:2},q={x:0,y:1},J={x:2,y:1},Tn={x:2,y:0},En={x:0,y:0},Dn={x:2,y:2},On={x:0,y:2},kn={x:1,y:1};function Y(e,t){return e.x===t.x&&e.y===t.y}function An(e){return Y(e,G)||Y(e,K)||Y(e,q)||Y(e,J)}function jn(e){if(!An(e))throw Error(`Expected a cardinal direction (Up/Down/Left/Right); got {x:${e.x}, y:${e.y}}`);return e}function Mn(e,t,n,r){return Math.max(r,n+(e-t))}function Nn(e,t){return e.x===t.x&&e.y===t.y}function Pn(e,t){return e.x===t.x&&e.y===t.y}function Fn(e,t){return{x:e.x+t.x,y:e.y+t.y}}function In(e){return`${e.x},${e.y}`}function X(e){let t=e.gridCoord;if(t===null)throw Error(`Node "${e.name}" has no gridCoord; grid layout must run before it is read`);return t}var Ln={name:``,styles:{}},Rn=class{#e=new Set;has(e){return this.#e.has(e)}add(e){this.#e.add(e)}delete(e){this.#e.delete(e)}keys(){return this.#e.keys()}};function zn(){return new Rn}function Bn(e){let t=zn();for(let n of e.keys())t.add(n);return t}function Vn(e,t){return e.has(In(t))}function Hn(e,t){return t.x<0||t.y<0?!1:!Vn(e,t)}function Un(e,t,n=3){for(let r=0;r<n;r++)for(let i=0;i<n;i++)if(Vn(e,{x:t.x+r,y:t.y+i}))return!1;return!0}function Wn(e,t,n=3){if(!Un(e,t,n))throw Error(`Grid block at (${t.x},${t.y}) is already occupied`);for(let r=0;r<n;r++)for(let i=0;i<n;i++){let n={x:t.x+r,y:t.y+i};e.add(In(n))}}var Gn=1e5;function Kn(e){if(e.length===0)return[];let t=[e[0]];for(let n=1;n<e.length;n++){let r=e[n-1],i=e[n],a=r.x,o=r.y,s=Math.abs(i.x-r.x),c=Math.abs(i.y-r.y),l=r.x<i.x?1:-1,u=r.y<i.y?1:-1,d=s-c,f=0;for(;a!==i.x||o!==i.y;){if(f>=Gn)throw Error(`pathCells: segment from (${r.x},${r.y}) to (${i.x},${i.y}) did not reach its endpoint within ${Gn} steps`);let e=2*d;e>-c&&(d-=c,a+=l),e<s&&(d+=s,o+=u),t.push({x:a,y:o}),f++}}return t}var qn=class{items=[];get length(){return this.items.length}push(e){this.items.push(e),this.bubbleUp(this.items.length-1)}pop(){if(this.items.length===0)return;let e=this.items[0],t=this.items.pop();return this.items.length>0&&(this.items[0]=t,this.sinkDown(0)),e}bubbleUp(e){let t=e;for(;t>0;){let e=t-1>>1;if(this.items[t].priority<this.items[e].priority)[this.items[t],this.items[e]]=[this.items[e],this.items[t]],t=e;else break}}sinkDown(e){let t=this.items.length,n=e;for(;;){let e=n,r=2*n+1,i=2*n+2;if(r<t&&this.items[r].priority<this.items[e].priority&&(e=r),i<t&&this.items[i].priority<this.items[e].priority&&(e=i),e!==n)[this.items[n],this.items[e]]=[this.items[e],this.items[n]],n=e;else break}}};function Jn(e,t){let n=Math.abs(e.x-t.x),r=Math.abs(e.y-t.y);return n===0||r===0?n+r:n+r+1}var Yn=[{x:1,y:0},{x:-1,y:0},{x:0,y:1},{x:0,y:-1}],Xn=5e4,Zn=2e5;function Qn(e=Zn){return{remaining:e}}function $n(e,t,n,r){if(r&&r.remaining<=0)return null;let i=new qn;i.push({coord:t,priority:0});let a=new Map;a.set(In(t),0);let o=new Map;o.set(In(t),null);let s=0;for(;i.length>0;){if(++s>Xn)return null;if(r){if(r.remaining<=0)return null;r.remaining--}let t=i.pop().coord;if(Nn(t,n)){let e=[],n=t;for(;n!==null;)e.unshift(n),n=o.get(In(n))??null;return e}let c=a.get(In(t));if(c===void 0)throw Error(`A* pathfinding: missing cost for visited cell ${In(t)}`);for(let r of Yn){let s={x:t.x+r.x,y:t.y+r.y};if(!Hn(e,s)&&!Nn(s,n))continue;let l=c+1,u=In(s),d=a.get(u);if(d===void 0||l<d){a.set(u,l);let e=l+Jn(s,n);i.push({coord:s,priority:e}),o.set(u,t)}}}return null}function er(e){if(e.length<=2)return e;let t=new Set,n=e[0],r=e[1];for(let i=2;i<e.length;i++){let a=e[i],o=r.x-n.x,s=r.y-n.y,c=a.x-r.x,l=a.y-r.y;o===c&&s===l&&t.add(i-1),n=r,r=a}return e.filter((e,n)=>!t.has(n))}function tr(e,t,n,r){if(t.x===n.x&&t.y===n.y)return!0;let i=t.x===n.x;if(!i&&t.y!==n.y)return!1;let a=i?n.y>t.y?1:-1:n.x>t.x?1:-1,o=i?t.y:t.x,s=i?n.y:n.x;for(o+=a;;o+=a){let n=o===s,a=i?{x:t.x,y:o}:{x:o,y:t.y};if(!(n&&!r)&&!Hn(e,a))return!1;if(n)break}return!0}function nr(e,t,n,r){let i=r?{x:n.x,y:t.y}:{x:t.x,y:n.y};return!tr(e,t,i,!0)||!tr(e,i,n,!1)?null:[t,i,n]}function rr(e,t,n,r){if(t.x===n.x||t.y===n.y)return null;let i=Y(r,q)||Y(r,J);return nr(e.grid,t,n,i)??nr(e.grid,t,n,!i)}function ir(e,t,n,r){if(!e.pathBudget)throw Error(`routeEdge requires graph.pathBudget to be set; call createPathBudget() (see grid.ts createMapping) before routing edges`);let i=rr(e,t,n,r)??$n(e.grid,t,n,e.pathBudget);return i?er(i):null}function ar(e){if(e.config.graphDirection!==`TD`)return[];let t=[],n=new Set,r=new Map;for(let t of e.edges){if(t.from===t.to)continue;let e=r.get(t.to)??[];e.push(t),r.set(t.to,e)}for(let[i,a]of r){if(a.length<2||!or(a,e)||a.some(e=>n.has(e)))continue;let r={type:`fan-in`,edges:[...a],sharedNode:i,otherNodes:a.map(e=>e.from),junctionPoint:null,sharedPath:[],junctionDir:kn,sharedNodeDir:kn};for(let e of a)e.bundle=r,n.add(e);t.push(r)}let i=new Map;for(let t of e.edges){if(t.from===t.to||n.has(t))continue;let e=i.get(t.from)??[];e.push(t),i.set(t.from,e)}for(let[r,a]of i){if(a.length<2||!or(a,e))continue;let i={type:`fan-out`,edges:[...a],sharedNode:r,otherNodes:a.map(e=>e.to),junctionPoint:null,sharedPath:[],junctionDir:kn,sharedNodeDir:kn};for(let e of a)e.bundle=i,n.add(e);t.push(i)}return t}function or(e,t){if(e.length<2)return!1;let n=e[0].style,r=Q(t,e[0].from),i=Q(t,e[0].to);for(let a of e){if(a.style!==n||a.text.length>0)return!1;let e=Q(t,a.from),o=Q(t,a.to);if(e!==r||o!==i||e!==o)return!1}let a=e.every(t=>t.to===e[0].to),o=a?e.map(e=>e.from):e.map(e=>e.to);if(new Set(o).size!==o.length||e.some(e=>e.parallelLane))return!1;let s=t.config.graphDirection===`LR`?`x`:`y`,c=(a?e[0].to:e[0].from).gridCoord;if(!c)return!1;for(let t of e){let e=(a?t.from:t.to).gridCoord;if(!e)return!1;if(a){if(e[s]>=c[s])return!1}else if(e[s]<=c[s])return!1}return!0}function sr(e,t){let n=e.config.graphDirection,r=X(t.sharedNode);if(t.type===`fan-in`){if(n===`TD`){let e=r.y-1;return{x:r.x+1,y:e}}return{x:r.x-1,y:r.y+1}}if(n===`TD`){let e=r.y+3;return{x:r.x+1,y:e}}return{x:r.x+3,y:r.y+1}}function cr(e,t){let n=e.config.graphDirection;t.junctionPoint=sr(e,t);let r=t.junctionPoint;if(t.type===`fan-in`){t.junctionDir=n===`TD`?G:q,t.sharedNodeDir=n===`TD`?K:J;let i=X(t.sharedNode),a=jn(n===`TD`?G:q),o=Fn(i,a);t.sharedPath=ir(e,r,o,a)??[r,o];for(let i of t.edges){let o=X(i.from),s=jn(n===`TD`?K:J),c=Fn(o,s);i.pathToJunction=ir(e,c,r,s)??[c,r],i.startDir=s,i.endDir=a,i.path=[...i.pathToJunction,...t.sharedPath.slice(1)]}}else{t.junctionDir=n===`TD`?K:J,t.sharedNodeDir=n===`TD`?G:q;let i=X(t.sharedNode),a=jn(n===`TD`?K:J),o=Fn(i,a);t.sharedPath=ir(e,o,r,a)??[o,r];for(let i of t.edges){let o=X(i.to),s=jn(n===`TD`?G:q),c=Fn(o,s);i.pathToJunction=ir(e,r,c,s)??[r,c],i.startDir=a,i.endDir=s,i.path=[...t.sharedPath,...i.pathToJunction.slice(1)]}}}function lr(e){for(let t of e.bundles)cr(e,t)}function ur(){return new Map}function dr(e,t,n,r){for(let i of Kn(n)){if(Vn(e,i))continue;let n=t.get(In(i));if(n!==void 0&&n!==r)return i}return null}function fr(e,t,n,r){for(let i of Kn(n)){if(Vn(e,i))continue;let n=In(i);t.has(n)||t.set(n,r)}}function Z(e){return e.split(`
7
+ `)}function pr(e){let t=Z(e);return Math.max(...t.map(e=>B(e)),0)}function mr(e){return Z(e).length}var hr={rectangle:{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},rounded:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`.`,tr:`.`,bl:`'`,br:`'`}},circle:{unicode:{tl:`◯`,tr:`◯`,bl:`◯`,br:`◯`},ascii:{tl:`o`,tr:`o`,bl:`o`,br:`o`}},doublecircle:{unicode:{tl:`◎`,tr:`◎`,bl:`◎`,br:`◎`},ascii:{tl:`@`,tr:`@`,bl:`@`,br:`@`}},diamond:{unicode:{tl:`◇`,tr:`◇`,bl:`◇`,br:`◇`},ascii:{tl:`<`,tr:`>`,bl:`<`,br:`>`}},hexagon:{unicode:{tl:`⌜`,tr:`⌝`,bl:`⌞`,br:`⌟`},ascii:{tl:`*`,tr:`*`,bl:`*`,br:`*`}},stadium:{unicode:{tl:`(`,tr:`)`,bl:`(`,br:`)`},ascii:{tl:`(`,tr:`)`,bl:`(`,br:`)`}},subroutine:{unicode:{tl:`╟`,tr:`╢`,bl:`╟`,br:`╢`},ascii:{tl:`|`,tr:`|`,bl:`|`,br:`|`}},cylinder:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`.`,tr:`.`,bl:`'`,br:`'`}},asymmetric:{unicode:{tl:`▷`,tr:`┐`,bl:`▷`,br:`┘`},ascii:{tl:`>`,tr:`+`,bl:`>`,br:`+`}},trapezoid:{unicode:{tl:`/`,tr:`\\`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`\\`,bl:`+`,br:`+`}},"trapezoid-alt":{unicode:{tl:`┌`,tr:`┐`,bl:`\\`,br:`/`},ascii:{tl:`+`,tr:`+`,bl:`\\`,br:`/`}},parallelogram:{unicode:{tl:`/`,tr:`/`,bl:`/`,br:`/`},ascii:{tl:`/`,tr:`/`,bl:`/`,br:`/`}},"parallelogram-alt":{unicode:{tl:`\\`,tr:`\\`,bl:`\\`,br:`\\`},ascii:{tl:`\\`,tr:`\\`,bl:`\\`,br:`\\`}},"state-start":{unicode:{tl:`●`,tr:`●`,bl:`●`,br:`●`},ascii:{tl:`*`,tr:`*`,bl:`*`,br:`*`}},"state-end":{unicode:{tl:`◉`,tr:`◉`,bl:`◉`,br:`◉`},ascii:{tl:`@`,tr:`@`,bl:`@`,br:`@`}},document:{unicode:{tl:`┌`,tr:`┐`,bl:`╰`,br:`╮`},ascii:{tl:`+`,tr:`+`,bl:`'`,br:`~`}},"stacked-document":{unicode:{tl:`┌`,tr:`╗`,bl:`╰`,br:`╮`},ascii:{tl:`+`,tr:`#`,bl:`'`,br:`~`}},"stacked-process":{unicode:{tl:`┌`,tr:`╗`,bl:`└`,br:`╝`},ascii:{tl:`+`,tr:`#`,bl:`+`,br:`#`}},card:{unicode:{tl:`╱`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`+`,bl:`+`,br:`+`}},"lined-process":{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},"divided-process":{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},"window-pane":{unicode:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`+`,tr:`+`,bl:`+`,br:`+`}},triangle:{unicode:{tl:`╱`,tr:`╲`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`\\`,bl:`+`,br:`+`}},"flipped-triangle":{unicode:{tl:`┌`,tr:`┐`,bl:`╲`,br:`╱`},ascii:{tl:`+`,tr:`+`,bl:`\\`,br:`/`}},"filled-circle":{unicode:{tl:`●`,tr:`●`,bl:`●`,br:`●`},ascii:{tl:`*`,tr:`*`,bl:`*`,br:`*`}},"crossed-circle":{unicode:{tl:`╳`,tr:`╳`,bl:`╳`,br:`╳`},ascii:{tl:`X`,tr:`X`,bl:`X`,br:`X`}},"fork-join":{unicode:{tl:`━`,tr:`━`,bl:`━`,br:`━`},ascii:{tl:`=`,tr:`=`,bl:`=`,br:`=`}},"notched-pentagon":{unicode:{tl:`╱`,tr:`╲`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`\\`,bl:`+`,br:`+`}},"sloped-rectangle":{unicode:{tl:`╱`,tr:`┐`,bl:`└`,br:`┘`},ascii:{tl:`/`,tr:`+`,bl:`+`,br:`+`}},flag:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`~`,tr:`~`,bl:`~`,br:`~`}},"bow-tie-rectangle":{unicode:{tl:`╲`,tr:`╱`,bl:`╱`,br:`╲`},ascii:{tl:`\\`,tr:`/`,bl:`/`,br:`\\`}},"half-rounded-rectangle":{unicode:{tl:`┌`,tr:`╮`,bl:`└`,br:`╯`},ascii:{tl:`+`,tr:`.`,bl:`+`,br:`'`}},brace:{unicode:{tl:`╭`,tr:`┐`,bl:`╰`,br:`┘`},ascii:{tl:`{`,tr:`+`,bl:`{`,br:`+`}},"brace-right":{unicode:{tl:`┌`,tr:`╮`,bl:`└`,br:`╯`},ascii:{tl:`+`,tr:`}`,bl:`+`,br:`}`}},braces:{unicode:{tl:`╭`,tr:`╮`,bl:`╰`,br:`╯`},ascii:{tl:`{`,tr:`}`,bl:`{`,br:`}`}},bolt:{unicode:{tl:`╱`,tr:`╲`,bl:`╲`,br:`╱`},ascii:{tl:`/`,tr:`\\`,bl:`\\`,br:`/`}},text:{unicode:{tl:` `,tr:` `,bl:` `,br:` `},ascii:{tl:` `,tr:` `,bl:` `,br:` `}},anchor:{unicode:{tl:` `,tr:` `,bl:` `,br:` `},ascii:{tl:` `,tr:` `,bl:` `,br:` `}}};function gr(e,t){let n=hr[e]??hr.rectangle;return t?n.ascii:n.unicode}function _r(e,t){let n=Z(e),r=Math.max(...n.map(e=>B(e)),0),i=n.length,a=2*t.padding+r,o=a+2,s=i+2*t.padding,c=s%2==0?s+1:s;return{width:o,height:c+2,labelArea:{x:1+t.padding,y:1+t.padding,width:r,height:i},gridColumns:[1,a,1],gridRows:[1,c,1]}}function vr(e,t,n,r){let{width:i,height:a}=t,o=V(i-1,a-1),s={x:0,y:0},c={x:i-1,y:a-1},l=r?`-`:`─`,u=r?`|`:`│`;for(let e=s.x+1;e<c.x;e++)o[e][s.y]=l,o[e][c.y]=l;for(let e=s.y+1;e<c.y;e++)o[s.x][e]=u,o[c.x][e]=u;o[s.x][s.y]=n.tl,o[c.x][s.y]=n.tr,o[s.x][c.y]=n.bl,o[c.x][c.y]=n.br;let d=Z(e),f=i-1,p=a-1,m=Math.floor(p/2)-Math.floor((d.length-1)/2);for(let e=0;e<d.length;e++){let t=d[e],n=Math.floor(f/2)-Math.ceil(B(t)/2)+1,r=It(t);for(let t=0;t<r.length;t++){let i=n+t,a=m+e;i>=0&&i<o.length&&a>=0&&a<o[0].length&&(o[i][a]=r[t])}}return o}function yr(e,t,n){let{width:r,height:i}=t,a=n.x+Math.floor(r/2),o=n.y+Math.floor(i/2);return Y(e,G)?{x:a,y:n.y}:Y(e,K)?{x:a,y:n.y+i-1}:Y(e,q)?{x:n.x,y:o}:Y(e,J)?{x:n.x+r-1,y:o}:Y(e,En)?{x:n.x,y:n.y}:Y(e,Tn)?{x:n.x+r-1,y:n.y}:Y(e,On)?{x:n.x,y:n.y+i-1}:Y(e,Dn)?{x:n.x+r-1,y:n.y+i-1}:{x:a,y:o}}var br={getDimensions:_r,render(e,t,n){return vr(e,t,gr(`rectangle`,n.useAscii),n.useAscii)},getAttachmentPoint:yr},xr=new Map([[`rectangle`,br],[`rounded`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`rounded`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`diamond`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`diamond`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`stadium`,{getDimensions(e,t){let n=Z(e),r=Math.max(...n.map(e=>B(e)),0),i=n.length,a=2*t.padding+r,o=a+4,s=i+2*t.padding;return{width:o,height:Math.max(s+2,3),labelArea:{x:2+t.padding,y:1+t.padding,width:r,height:i},gridColumns:[2,a,2],gridRows:[1,s,1]}},render(e,t,n){let{width:r,height:i}=t,a=V(r-1,i-1),o=Math.floor(i/2),s=n.useAscii?`-`:`─`;if(i===3)a[0][o]=`(`,a[r-1][o]=`)`;else if(n.useAscii){for(let e=0;e<i;e++)a[0][e]=`(`,a[r-1][e]=`)`;for(let e=1;e<r-1;e++)a[e][0]=s,a[e][i-1]=s}else{a[0][0]=`╭`;for(let e=1;e<r-1;e++)a[e][0]=s;a[r-1][0]=`╮`;for(let e=1;e<i-1;e++)a[0][e]=`│`,a[r-1][e]=`│`;a[0][i-1]=`╰`;for(let e=1;e<r-1;e++)a[e][i-1]=s;a[r-1][i-1]=`╯`}let c=Z(e),l=o-Math.floor((c.length-1)/2);for(let e=0;e<c.length;e++){let t=c[e],n=Math.floor(r/2)-Math.floor(B(t)/2),o=It(t);for(let t=0;t<o.length;t++){let s=n+t,c=l+e;s>0&&s<r-1&&c>=0&&c<i&&(a[s][c]=o[t])}}return a},getAttachmentPoint:yr}],[`circle`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`circle`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`subroutine`,{getDimensions(e,t){let n=Z(e),r=Math.max(...n.map(e=>B(e)),0),i=n.length,a=2*t.padding+r,o=a+4,s=i+2*t.padding;return{width:o,height:s+2,labelArea:{x:2+t.padding,y:1+t.padding,width:r,height:i},gridColumns:[2,a,2],gridRows:[1,s,1]}},render(e,t,n){let{width:r,height:i}=t,a=V(r-1,i-1),o=n.useAscii?`-`:`─`,s=n.useAscii?`|`:`│`;a[0][0]=n.useAscii?`+`:`┌`,a[1][0]=n.useAscii?`+`:`┬`;for(let e=2;e<r-2;e++)a[e][0]=o;a[r-2][0]=n.useAscii?`+`:`┬`,a[r-1][0]=n.useAscii?`+`:`┐`;for(let e=1;e<i-1;e++)a[0][e]=s,a[1][e]=s,a[r-2][e]=s,a[r-1][e]=s;a[0][i-1]=n.useAscii?`+`:`└`,a[1][i-1]=n.useAscii?`+`:`┴`;for(let e=2;e<r-2;e++)a[e][i-1]=o;a[r-2][i-1]=n.useAscii?`+`:`┴`,a[r-1][i-1]=n.useAscii?`+`:`┘`;let c=Z(e),l=Math.floor(i/2)-Math.floor((c.length-1)/2);for(let e=0;e<c.length;e++){let t=c[e],n=Math.floor(r/2)-Math.floor(B(t)/2),o=It(t);for(let t=0;t<o.length;t++){let s=n+t,c=l+e;s>1&&s<r-2&&c>0&&c<i-1&&(a[s][c]=o[t])}}return a},getAttachmentPoint:yr}],[`doublecircle`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`doublecircle`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`hexagon`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`hexagon`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`cylinder`,{getDimensions(e,t){let n=Z(e),r=Math.max(...n.map(e=>B(e)),0),i=n.length,a=2*t.padding+r,o=a+2,s=i+2*t.padding+2;return{width:o,height:s+2,labelArea:{x:1+t.padding,y:2+t.padding,width:r,height:i},gridColumns:[1,a,1],gridRows:[2,s-2,2]}},render(e,t,n){let{width:r,height:i}=t,a=V(r-1,i-1),o=n.useAscii?`-`:`─`,s=n.useAscii?`|`:`│`;a[0][0]=n.useAscii?`.`:`╭`;for(let e=1;e<r-1;e++)a[e][0]=o;a[r-1][0]=n.useAscii?`.`:`╮`,a[0][1]=s;for(let e=1;e<r-1;e++)a[e][1]=o;a[r-1][1]=s;for(let e=2;e<i-2;e++)a[0][e]=s,a[r-1][e]=s;a[0][i-2]=s;for(let e=1;e<r-1;e++)a[e][i-2]=o;a[r-1][i-2]=s,a[0][i-1]=n.useAscii?`'`:`╰`;for(let e=1;e<r-1;e++)a[e][i-1]=o;a[r-1][i-1]=n.useAscii?`'`:`╯`;let c=Z(e),l=Math.floor(i/2)-Math.floor((c.length-1)/2);for(let e=0;e<c.length;e++){let t=c[e],n=Math.floor(r/2)-Math.floor(B(t)/2),o=It(t);for(let t=0;t<o.length;t++){let s=n+t,c=l+e;s>0&&s<r-1&&c>1&&c<i-2&&(a[s][c]=o[t])}}return a},getAttachmentPoint:yr}],[`asymmetric`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`asymmetric`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`trapezoid`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`trapezoid`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`trapezoid-alt`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`trapezoid-alt`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`parallelogram`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`parallelogram`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`parallelogram-alt`,{getDimensions:_r,render(e,t,n){return vr(e,t,gr(`parallelogram-alt`,n.useAscii),n.useAscii)},getAttachmentPoint:yr}],[`state-start`,{getDimensions(e,t){return{width:5,height:3,labelArea:{x:2,y:1,width:1,height:1},gridColumns:[1,3,1],gridRows:[1,1,1]}},render(e,t,n){let{width:r,height:i}=t,a=V(r-1,i-1),o=Math.floor(r/2);return n.useAscii?(a[0][0]=`.`,a[1][0]=`-`,a[2][0]=`-`,a[3][0]=`-`,a[4][0]=`.`,a[0][1]=`|`,a[o][1]=`*`,a[4][1]=`|`,a[0][2]=`'`,a[1][2]=`-`,a[2][2]=`-`,a[3][2]=`-`,a[4][2]=`'`):(a[0][0]=`╭`,a[1][0]=`─`,a[2][0]=`─`,a[3][0]=`─`,a[4][0]=`╮`,a[0][1]=`│`,a[o][1]=`●`,a[4][1]=`│`,a[0][2]=`╰`,a[1][2]=`─`,a[2][2]=`─`,a[3][2]=`─`,a[4][2]=`╯`),a},getAttachmentPoint(e,t,n){let{width:r,height:i}=t,a=n.x+Math.floor(r/2),o=n.y+Math.floor(i/2);return Y(e,G)?{x:a,y:n.y}:Y(e,K)?{x:a,y:n.y+i-1}:Y(e,q)?{x:n.x,y:o}:Y(e,J)?{x:n.x+r-1,y:o}:{x:a,y:o}}}],[`state-end`,{getDimensions(e,t){return{width:5,height:3,labelArea:{x:2,y:1,width:1,height:1},gridColumns:[1,3,1],gridRows:[1,1,1]}},render(e,t,n){let{width:r,height:i}=t,a=V(r-1,i-1),o=Math.floor(r/2);return n.useAscii?(a[0][0]=`#`,a[1][0]=`=`,a[2][0]=`=`,a[3][0]=`=`,a[4][0]=`#`,a[0][1]=`#`,a[o][1]=`*`,a[4][1]=`#`,a[0][2]=`#`,a[1][2]=`=`,a[2][2]=`=`,a[3][2]=`=`,a[4][2]=`#`):(a[0][0]=`╔`,a[1][0]=`═`,a[2][0]=`═`,a[3][0]=`═`,a[4][0]=`╗`,a[0][1]=`║`,a[o][1]=`◎`,a[4][1]=`║`,a[0][2]=`╚`,a[1][2]=`═`,a[2][2]=`═`,a[3][2]=`═`,a[4][2]=`╝`),a},getAttachmentPoint(e,t,n){let{width:r,height:i}=t,a=n.x+Math.floor(r/2),o=n.y+Math.floor(i/2);return Y(e,G)?{x:a,y:n.y}:Y(e,K)?{x:a,y:n.y+i-1}:Y(e,q)?{x:n.x,y:o}:Y(e,J)?{x:n.x+r-1,y:o}:{x:a,y:o}}}]]);function Sr(e){return xr.get(e)??br}function Cr(e,t,n){return Sr(e).getDimensions(t,n)}function wr(e,t,n,r){return Sr(e).getAttachmentPoint(t,n,r)}function Tr(e,t,n){let r=n?{x:t.x+n.x,y:t.y+n.y}:t,i=0;for(let t=0;t<r.x;t++)i+=e.columnWidth.get(t)??0;let a=0;for(let t=0;t<r.y;t++)a+=e.rowHeight.get(t)??0;let o=e.columnWidth.get(r.x)??0,s=e.rowHeight.get(r.y)??0;return{x:i+Math.floor(o/2)+e.offsetX,y:a+Math.floor(s/2)+e.offsetY}}function Er(e,t){return t.map(t=>Tr(e,t))}function Dr(e,t,n,r){let i=r??Lr(e,t);return Un(e.grid,n,3)?(Wn(e.grid,n,3),t.gridCoord=n,n):i===`LR`?Dr(e,t,{x:n.x,y:n.y+4},i):Dr(e,t,{x:n.x+4,y:n.y},i)}function Or(e,t){let n=X(t),r=e.config.boxBorderPadding,i=Cr(t.shape,t.displayLabel,{useAscii:e.config.useAscii,padding:r}),a=i.gridColumns,o=i.gridRows;for(let t=0;t<a.length;t++){let r=n.x+t,i=e.columnWidth.get(r)??0;e.columnWidth.set(r,Math.max(i,a[t]))}for(let t=0;t<o.length;t++){let r=n.y+t,i=e.rowHeight.get(r)??0;e.rowHeight.set(r,Math.max(i,o[t]))}if(n.x>0){let t=e.columnWidth.get(n.x-1)??0;e.columnWidth.set(n.x-1,Math.max(t,e.config.paddingX))}if(n.y>0){let r=e.config.paddingY;Rr(e,t)&&(r+=4);let i=e.rowHeight.get(n.y-1)??0;e.rowHeight.set(n.y-1,Math.max(i,r))}}function kr(e,t){for(let n of t)e.columnWidth.has(n.x)||e.columnWidth.set(n.x,Math.floor(e.config.paddingX/2)),e.rowHeight.has(n.y)||e.rowHeight.set(n.y,Math.floor(e.config.paddingY/2))}var Ar=8;function jr(e,t,n,r){let i=[];try{for(let a=0;a<Ar;a++){let a=dr(r,n,t.path,t.style);if(!a)return;e.grid.add(In(a)),i.push(a),di(e,t)}}finally{for(let t of i)e.grid.delete(In(t))}}function Mr(e,t){return e.subgraphs.some(e=>e.nodes.includes(t))}function Q(e,t){let n=null;for(let r of e.subgraphs)r.nodes.includes(t)&&(!n||Nr(n,r))&&(n=r);return n}function Nr(e,t){let n=t;for(;n!==null;){if(n===e)return!0;n=n.parent}return!1}function Pr(e,t){let n=Q(e,t);if(!n)return null;let r=n;for(;r.parent;)r=r.parent;return r}function Fr(e){let t=[...e.nodes];for(let n of e.children)t.push(...Fr(n));return t}function Ir(e,t,n){if(t===n)return!0;let r=new Set([t]),i=[t];for(;i.length>0;){let t=i.shift();for(let a of $r(e,t)){if(a===n)return!0;r.has(a)||(r.add(a),i.push(a))}}return!1}function Lr(e,t){let n=Q(e,t);return n?.direction?n.direction:e.config.graphDirection}function Rr(e,t){let n=Q(e,t);if(!n)return!1;let r=!1;for(let i of e.edges)if(i.to===t&&Q(e,i.from)!==n){r=!0;break}if(!r)return!1;let i=X(t).y;for(let r of n.nodes){if(r===t||!r.gridCoord)continue;let a=!1;for(let t of e.edges)if(t.to===r&&Q(e,t.from)!==n){a=!0;break}if(a&&r.gridCoord.y<i)return!1}return!0}function zr(e,t){if(t.nodes.length===0)return;let n=1e6,r=1e6,i=-1e6,a=-1e6;for(let o of t.children)zr(e,o),o.nodes.length>0&&(n=Math.min(n,o.minX),r=Math.min(r,o.minY),i=Math.max(i,o.maxX),a=Math.max(a,o.maxY));for(let e of t.nodes){if(!e.drawingCoord||!e.drawing)continue;let t=e.drawingCoord.x,o=e.drawingCoord.y,s=t+e.drawing.length-1,c=o+e.drawing[0].length-1;n=Math.min(n,t),r=Math.min(r,o),i=Math.max(i,s),a=Math.max(a,c)}t.minX=n-2,t.minY=r-2-2,t.maxX=i+2,t.maxY=a+2;let o=Math.max(0,...Z(t.name).map(e=>B(e))),s=t.maxX-t.minX,c=o+1;if(c>s){let e=c-s,n=Math.floor(e/2),r=e-n;t.minX-=n,t.maxX+=r}}function Br(e){let t=e.subgraphs.filter(e=>e.parent===null&&e.nodes.length>0);for(let e=0;e<t.length;e++)for(let n=e+1;n<t.length;n++){let r=t[e],i=t[n];r.minX<i.maxX&&r.maxX>i.minX&&(r.maxY>=i.minY-1&&r.minY<i.minY?i.minY=r.maxY+1+1:i.maxY>=r.minY-1&&i.minY<r.minY&&(r.minY=i.maxY+1+1)),r.minY<i.maxY&&r.maxY>i.minY&&(r.maxX>=i.minX-1&&r.minX<i.minX?i.minX=r.maxX+1+1:i.maxX>=r.minX-1&&i.minX<r.minX&&(r.minX=i.maxX+1+1))}}function Vr(e){for(let t of e.subgraphs)zr(e,t);Br(e)}function Hr(e){if(e.subgraphs.length===0)return;let t=0,n=0;for(let r of e.subgraphs)t=Math.min(t,r.minX),n=Math.min(n,r.minY);let r=-t,i=-n;if(r!==0||i!==0){e.offsetX=r,e.offsetY=i;for(let t of e.subgraphs)t.minX+=r,t.minY+=i,t.maxX+=r,t.maxY+=i;for(let t of e.nodes)t.drawingCoord&&(t.drawingCoord.x+=r,t.drawingCoord.y+=i)}}function Ur(e,t){let n=t=>{let n=$r(e,t);return n.length>0?n[0].name:null},r=new Map,i=t.map((e,t)=>{let i=n(e);if(i===null)return t;let a=r.get(i);return a===void 0?(r.set(i,t),t):a});return t.map((e,t)=>({node:e,i:t})).sort((e,t)=>i[e.i]-i[t.i]||e.i-t.i).map(({node:e})=>e)}function Wr(e,t){let n=new Set,r=t=>{let r=[t];for(;r.length>0;){let t=r.shift();if(!n.has(t.name)){n.add(t.name);for(let n of $r(e,t))r.push(n)}}};for(let e of t)r(e);let i=[...t];for(let t of e.nodes)n.has(t.name)||(i.push(t),r(t));return i}function Gr(e,t){return e.nodes.find(e=>e.gridCoord!==null&&e.gridCoord.x===t.x&&e.gridCoord.y===t.y)}function Kr(e,t,n,r,i){let a=r===`x`?`y`:`x`,o=i=>{let o=4;for(;;){let s=t[r]+i*o;if(s<0)return null;let c=r===`x`?{x:s,y:t[a]}:{x:t[a],y:s};if(Un(e.grid,c,3))return c;let l=Gr(e,c);if(!l||Pr(e,l)!==n)return null;o+=4}};return o(i)??o(i*-1)}function qr(e,t,n,r){let i=Pr(e,t);if(!i)return;let a=n.get(i);if(!a)return;n.delete(i);let o=X(t),s=Lr(e,t)===`LR`?`y`:`x`;for(let t of a){let n=Lr(e,t),a=Kr(e,o,i,s,1);Dr(e,e.nodes[t.index],a??o,n),r.add(t)}}function Jr(e,t){let n=!0;for(;n;){n=!1;let r=t=>e.config.graphDirection===`LR`?t.gridCoord?.y??0:t.gridCoord?.x??0,i=e.nodes.filter(e=>e.gridCoord!==null).sort((e,t)=>r(e)-r(t));for(let r of i){let i=r.gridCoord;if(i===null)continue;let a=[...$r(e,r)].sort((t,n)=>Qr(e,t,n));for(let o of a){if(o.gridCoord!==null)continue;let a=Q(e,r),s=Q(e,o),c=a&&a===s&&a.direction?a.direction:e.config.graphDirection,l=c===`LR`?i.x+4:i.y+4,u;u=c===e.config.graphDirection?t[l]??0:c===`LR`?i.y:i.x;let d=c===`LR`?{x:l,y:u}:{x:u,y:l};Dr(e,e.nodes[o.index],d,c),c===e.config.graphDirection&&(t[l]=u+4),n=!0}}}}function Yr(e){let t=e.config.graphDirection,n=[],r=new Set;for(let t of e.edges)t.from!==t.to&&r.add(t.to.name);let i=Wr(e,e.nodes.filter(e=>!r.has(e.name))).filter(t=>{let n=Q(e,t);if(!n)return!0;for(let r of e.edges)if(r.to===t&&Q(e,r.from)!==n)return!1;return!0}),a=new Set(i),o=[],s=[];for(let t of i){let n=Pr(e,t);n!==null&&Fr(n).some(n=>n!==t&&!a.has(n)&&!Ir(e,t,n))?o.push(t):s.push(t)}let c=Ur(e,s),l=new Map;for(let t of o){let n=Pr(e,t),r=l.get(n);r?r.push(t):l.set(n,[t])}let u=new Set,d=!1,f=!1;for(let t of c)Mr(e,t)?$r(e,t).length>0&&(f=!0):d=!0;let p=t===`LR`&&d&&f,m,h=[];p?(m=c.filter(t=>!Mr(e,t)),h=c.filter(t=>Mr(e,t))):m=c;for(let r of m){let i=t===`LR`?{x:0,y:n[0]??0}:{x:n[0]??0,y:0};Dr(e,e.nodes[r.index],i),n[0]=(n[0]??0)+4,qr(e,r,l,u)}if(p&&h.length>0)for(let r of h){let i=t===`LR`?{x:4,y:n[4]??0}:{x:n[4]??0,y:4};Dr(e,e.nodes[r.index],i),n[4]=(n[4]??0)+4,qr(e,r,l,u)}Jr(e,n);for(let t of o){if(u.has(t))continue;let r=Pr(e,t),i=Lr(e,t),a=Fr(r).filter(e=>e!==t&&e.gridCoord!==null),o;if(a.length>0){let t=a[0];for(let e of a)(i===`LR`?e.gridCoord.x<t.gridCoord.x:e.gridCoord.y<t.gridCoord.y)&&(t=e);let n=i===`LR`?`y`:`x`;o=Kr(e,t.gridCoord,r,n,1)??{x:t.gridCoord.x,y:t.gridCoord.y}}else o=i===`LR`?{x:0,y:n[0]??0}:{x:n[0]??0,y:0},n[0]=(n[0]??0)+4;Dr(e,e.nodes[t.index],o,i)}Jr(e,n);for(let t of e.nodes)Or(e,t);e.pathBudget=Qn(),li(e),e.bundles=ar(e),lr(e);let g=ur(),_=Bn(e.grid);for(let t of e.edges){if(t.bundle&&t.path.length>0){kr(e,t.path),fr(_,g,t.path,t.style),mi(e,t);continue}di(e,t),jr(e,t,g,_),kr(e,t.path),fr(_,g,t.path,t.style),mi(e,t)}for(let t of e.nodes)t.drawingCoord=Tr(e,X(t)),t.drawing=qi(t,e);$t(e.canvas,e.columnWidth,e.rowHeight),en(e.roleCanvas,e.columnWidth,e.rowHeight),Vr(e),Hr(e)}function Xr(e,t){return e.edges.filter(e=>e.from.name===t.name)}function Zr(e,t){let n=Q(e,t),r=[],i=n;for(;i!==null;)r.unshift(i),i=i.parent;return r}function Qr(e,t,n){let r=Zr(e,t),i=Zr(e,n),a=0;for(;a<r.length&&a<i.length&&r[a]===i[a];)a++;let o=r[a],s=i[a];return!o||!s||o===s?0:e.subgraphs.indexOf(s)-e.subgraphs.indexOf(o)}function $r(e,t){return Xr(e,t).map(e=>e.to)}function ei(e){return e===G?K:e===K?G:e===q?J:e===J?q:e===Tn?On:e===En?Dn:e===Dn?En:e===On?Tn:kn}function $(e,t){return e.x===t.x?e.y<t.y?K:G:e.y===t.y?e.x<t.x?J:q:e.x<t.x?e.y<t.y?Dn:Tn:e.y<t.y?On:En}function ti(e){return e===`LR`?[J,K,K,J]:[K,J,J,K]}function ni(e,t){if(e.from===e.to)return ti(t);let n=$(X(e.from),X(e.to)),r,i,a,o,s=t===`LR`?Y(n,q)||Y(n,En)||Y(n,On):Y(n,G)||Y(n,En)||Y(n,Tn);return Y(n,Dn)?t===`LR`?(r=K,i=q,a=J,o=G):(r=J,i=G,a=K,o=q):Y(n,Tn)?t===`LR`?(r=G,i=q,a=J,o=K):(r=J,i=K,a=G,o=q):Y(n,On)?t===`LR`?(r=K,i=K,a=q,o=G):(r=q,i=G,a=K,o=J):Y(n,En)?t===`LR`?(r=K,i=K,a=q,o=K):(r=J,i=J,a=G,o=J):s?t===`LR`&&Y(n,q)?(r=K,i=K,a=q,o=J):t===`TD`&&Y(n,G)?(r=J,i=J,a=G,o=K):(r=n,i=ei(n),a=n,o=ei(n)):(r=n,i=ei(n),a=n,o=ei(n)),[r,i,a,o]}var ri=2,ii=200;function ai(e,t){let n=e.gridCoord;return n?t.x>=n.x&&t.x<=n.x+2&&t.y>=n.y&&t.y<=n.y+2:!1}function oi(e,t,n=[]){for(let r=1;r<t.length-1;r++){let i=t[r];if(Vn(e.grid,i)&&!n.some(e=>ai(e,i)))return!1}return!0}function si(e){let t=e.from.gridCoord,n=e.to.gridCoord;return!t||!n?!1:t.y===n.y&&t.x!==n.x}function ci(e){let t=e.from.name,n=e.to.name;return si(e)&&n<t?JSON.stringify([n,t]):JSON.stringify([t,n])}function li(e){let t=new Map;for(let n of e.edges){if(n.from===n.to)continue;let e=ci(n),r=t.get(e);r?r.push(n):t.set(e,[n])}for(let e of t.values()){if(e.length<2)continue;let t=new Set;for(let n=0;n<e.length;n++)e[n].parallelLane={index:n,total:e.length,usedOffsets:t}}}function ui(e,t,n,r,i){let a=Fn(X(t.from),n),o=Fn(X(t.to),r),s=Y(n,q)||Y(n,J),c=[t.from,t.to],l=t.parallelLane.usedOffsets,u=Y(n,J)?1:Y(n,q)?-1:Y(n,K)?1:-1,d=Y(r,J)?1:Y(r,q)?-1:Y(r,K)?1:-1,f=s?{x:a.x+u,y:a.y}:{x:a.x,y:a.y+u},p=s?{x:o.x+d,y:o.y}:{x:o.x,y:o.y+d},m=[a,o],h=[a,o],g=ri*i;for(let t=0;t<ii;t++){let n=g+t;if(l.has(n))continue;let r=a.y+n,i=a.x+n,u=s?[{x:a.x,y:r},{x:o.x,y:r}]:[{x:i,y:a.y},{x:i,y:o.y}],d=er([a,...u,o]);if(oi(e,Kn(d),c))return l.add(n),{path:d,labelSegment:u};m=d,h=u;let _=s?f.x!==p.x:f.y!==p.y,v=s?_?[{x:f.x,y:r},{x:p.x,y:r}]:[{x:f.x,y:r},{x:f.x,y:r}]:_?[{x:i,y:f.y},{x:i,y:p.y}]:[{x:i,y:f.y},{x:i,y:f.y}],y=er(s?[a,f,{x:f.x,y:r},{x:p.x,y:r},p,o]:[a,f,{x:i,y:f.y},{x:i,y:p.y},p,o]);if(oi(e,Kn(y),c))return l.add(n),{path:y,labelSegment:v};m=y,h=v}return{path:m,labelSegment:h}}function di(e,t){let n=Q(e,t.from),r=Q(e,t.to),[i,a,o,s]=ni(t,n&&n===r&&n.direction?n.direction:e.config.graphDirection);if(t.parallelLane&&t.parallelLane.index>0){let n=Y(i,a),r=n?o:i,c=n?s:a;t.startDir=r,t.endDir=c;let l=ui(e,t,r,c,t.parallelLane.index);t.path=l.path,t.text.length>0&&gi(e,t,l.labelSegment,B(t.text));return}let c=Fn(X(t.from),i),l=Fn(X(t.to),a),u=ir(e,c,l,jn(i)),d=ir(e,Fn(X(t.from),o),Fn(X(t.to),s),jn(o));if(u!==null&&d!==null){u.length<=d.length?(t.startDir=i,t.endDir=a,t.path=u):(t.startDir=o,t.endDir=s,t.path=d);return}if(u!==null){t.startDir=i,t.endDir=a,t.path=u;return}if(d!==null){t.startDir=o,t.endDir=s,t.path=d;return}t.startDir=i,t.endDir=a,t.path=[c,l]}function fi(e,t){for(let n of e.nodes){let e=n.gridCoord;if(e&&t>=e.x&&t<=e.x+2)return!0}return!1}function pi(e,t,n,r){if(!fi(e,r))return r;for(let i=1;i<=n-t;i++){let a=r+i;if(a<=n&&!fi(e,a))return a;let o=r-i;if(o>=t&&!fi(e,o))return o}return r}function mi(e,t){if(t.text.length===0||t.parallelLane&&t.parallelLane.index>0)return;let n=B(t.text),r=hi(t.path),i=r.length,a=[];for(let t=1;t<i;t++){let n=r[t-1],i=r[t],o=[n,i],s=_i(e,o),c=n.x===i.x;a.push({line:o,width:s,index:t,isVertical:c})}let o=t=>oi(e,Kn(t)),s=e=>e.index===1||e.index===a.length,c=a.filter(e=>e.width>=n&&!s(e)&&o(e.line)),l;if(c.length>0)c.sort((e,t)=>t.index-e.index),l=c[0].line;else{let e=a.filter(e=>e.width>=n&&o(e.line));if(e.length>0)e.sort((e,t)=>t.index-e.index),l=e[0].line;else{let e=a.filter(e=>!s(e)&&o(e.line)),n=a.filter(e=>o(e.line)),r=e.length>0?e:n.length>0?n:a;if(r.sort((e,t)=>t.width-e.width),r.length>0)l=r[0].line;else{let e=t.path[0]??{x:0,y:0};l=[e,e]}}}gi(e,t,l,n)}function hi(e){let t=[];for(let n of e){let e=t[t.length-1];e&&e.x!==n.x&&e.y!==n.y&&t.push({x:n.x,y:e.y}),t.push(n)}return t}function gi(e,t,n,r){let i=Math.min(n[0].x,n[1].x),a=Math.max(n[0].x,n[1].x),o=pi(e,i,a,i+Math.floor((a-i)/2)),s=e.columnWidth.get(o)??0;e.columnWidth.set(o,Math.max(s,r+2)),t.labelLine=[n[0],n[1]]}function _i(e,t){let n=0,r=Math.min(t[0].x,t[1].x),i=Math.max(t[0].x,t[1].x);for(let t=r;t<=i;t++)n+=e.columnWidth.get(t)??0;return n}var vi={solid:{h:{unicode:`─`,ascii:`-`},v:{unicode:`│`,ascii:`|`}},dotted:{h:{unicode:`┄`,ascii:`.`},v:{unicode:`┆`,ascii:`:`}},thick:{h:{unicode:`━`,ascii:`=`},v:{unicode:`┃`,ascii:`‖`}},invisible:{h:{unicode:` `,ascii:` `},v:{unicode:` `,ascii:` `}}};function yi(e,t,n,r,i,a,o=`solid`){let s=$(t,n),c=[],l=vi[o],u=a?l.h.ascii:l.h.unicode,d=a?l.v.ascii:l.v.unicode;if(Y(s,G))for(let a=t.y-r;a>=n.y-i;a--)c.push({x:t.x,y:a}),U(e,t.x,a,d);else if(Y(s,K))for(let a=t.y+r;a<=n.y+i;a++)c.push({x:t.x,y:a}),U(e,t.x,a,d);else if(Y(s,q))for(let a=t.x-r;a>=n.x-i;a--)c.push({x:a,y:t.y}),U(e,a,t.y,u);else if(Y(s,J))for(let a=t.x+r;a<=n.x+i;a++)c.push({x:a,y:t.y}),U(e,a,t.y,u);else if(Y(s,En)){for(let i=t.x-r;i>=n.x;i--)c.push({x:i,y:t.y}),U(e,i,t.y,u);for(let r=t.y-1;r>=n.y-i;r--)c.push({x:n.x,y:r}),U(e,n.x,r,d)}else if(Y(s,Tn)){for(let i=t.x+r;i<=n.x;i++)c.push({x:i,y:t.y}),U(e,i,t.y,u);for(let r=t.y-1;r>=n.y-i;r--)c.push({x:n.x,y:r}),U(e,n.x,r,d)}else if(Y(s,On)){for(let i=t.x-r;i>=n.x;i--)c.push({x:i,y:t.y}),U(e,i,t.y,u);for(let r=t.y+1;r<=n.y+i;r++)c.push({x:n.x,y:r}),U(e,n.x,r,d)}else if(Y(s,Dn)){if(n.x-t.x<=1)for(let a=t.y+r;a<=n.y+i;a++)c.push({x:t.x,y:a}),U(e,t.x,a,d);else{for(let i=t.x+r;i<=n.x;i++)c.push({x:i,y:t.y}),U(e,i,t.y,u);for(let r=t.y+1;r<=n.y+i;r++)c.push({x:n.x,y:r}),U(e,n.x,r,d)}}return c}function bi(e,t){if(t.path.length===0){let t=H(e.canvas);return[t,t,t,t,t,t]}let n=Mi(e,t),[r,i,a]=Si(e,t.path,t.style),o=i.length>0,s=t.style===`invisible`,c=o&&!s?Ti(e,t.path,i[0],t.from):H(e.canvas),l;l=t.hasArrowEnd&&o?ki(e,i[i.length-1],a[a.length-1],t.endMarker):H(e.canvas);let u;if(t.hasArrowStart&&o){let n=i[0][0],r=xi(a[0]),o={x:n.x,y:n.y};Y(a[0],J)?o.x=n.x-1:Y(a[0],q)?o.x=n.x+1:Y(a[0],K)?o.y=n.y-1:Y(a[0],G)&&(o.y=n.y+1),u=ki(e,[n,o],r,t.startMarker)}else u=H(e.canvas);let d=s?H(e.canvas):Ai(e,t.path);return[r,c,l,u,d,n]}function xi(e){return Y(e,G)?K:Y(e,K)?G:Y(e,q)?J:Y(e,J)?q:Y(e,En)?Dn:Y(e,Tn)?On:Y(e,On)?Tn:Y(e,Dn)?En:kn}function Si(e,t,n=`solid`){let r=H(e.canvas),i=t[0],a=[],o=[];for(let s=1;s<t.length;s++){let c=t[s],l=Tr(e,i),u=Tr(e,c);if(Pn(l,u)){i=c;continue}let d=$(i,c),f=yi(r,l,u,1,-1,e.config.useAscii,n);f.length===0&&f.push(l),a.push(f),o.push(d),i=c}return[r,a,o]}var Ci=new Set([`│`,`┃`,`║`,`┆`,`┊`,`|`,`‖`]),wi=new Set([`─`,`━`,`═`,`╌`,`┄`,`-`,`=`]);function Ti(e,t,n,r){let i=H(e.canvas),a=e.config.useAscii;if(r.shape===`state-start`||r.shape===`state-end`)return i;let o=n[0],s=$(t[0],t[1]),c=a?`+`:null,l=(t,n)=>e.canvas[t]?.[n];if(Y(s,G)){let e=o.x,t=o.y+1,n=l(e,t);U(i,e,t,n!==void 0&&wi.has(n)?c??`┴`:a?`|`:`│`)}else if(Y(s,K)){let e=o.x,t=o.y-1,n=l(e,t);U(i,e,t,n!==void 0&&wi.has(n)?c??`┬`:a?`|`:`│`)}else if(Y(s,q)||Y(s,J)){let e=r.drawingCoord,t=r.drawing;if(e===null||t===null)throw Error(`drawBoxStart: node "${r.name}" has no drawingCoord/drawing assigned`);let n=t.length,u=Y(s,q)?e.x:e.x+n-1,d=o.y,f=l(u,d);U(i,u,d,f!==void 0&&Ci.has(f)?c??(Y(s,q)?`┤`:`├`):a?`-`:`─`)}return i}function Ei(e,t){if(t===`circle`)return e?`o`:`○`;if(t===`cross`)return e?`x`:`✕`}function Di(e){if(Y(e,G))return`▲`;if(Y(e,K))return`▼`;if(Y(e,q))return`◄`;if(Y(e,J))return`►`;if(Y(e,Tn))return`↗`;if(Y(e,En))return`↖`;if(Y(e,Dn))return`↘`;if(Y(e,On))return`↙`}function Oi(e){if(Y(e,G))return`^`;if(Y(e,K))return`v`;if(Y(e,q))return`<`;if(Y(e,J))return`>`}function ki(e,t,n,r){let i=H(e.canvas);if(t.length===0)return i;let a=t[t.length-1],o=$(t.length>=2?t[t.length-2]:t[0],a);(t.length===1||Y(o,kn))&&(o=n);let s=Ei(e.config.useAscii,r),c;if(s!==void 0)c=s;else if(e.config.useAscii){let e=Oi(o);c=e===void 0?Oi(n)??`*`:e}else{let e=Di(o);c=e===void 0?Di(n)??`●`:e}return U(i,a.x,a.y,c),i}function Ai(e,t){let n=H(e.canvas);for(let r=1;r<t.length-1;r++){let i=t[r],a=Tr(e,i),o=$(t[r-1],i),s=$(i,t[r+1]),c;c=e.config.useAscii?`+`:Y(o,J)&&Y(s,K)||Y(o,G)&&Y(s,q)?`┐`:Y(o,J)&&Y(s,G)||Y(o,K)&&Y(s,q)?`┘`:Y(o,q)&&Y(s,K)||Y(o,G)&&Y(s,J)?`┌`:Y(o,q)&&Y(s,G)||Y(o,K)&&Y(s,J)?`└`:`+`,U(n,a.x,a.y,c)}return n}function ji(e,t){return e.edges.some(e=>e!==t&&e.from===t.to&&e.to===t.from)}function Mi(e,t){let n=H(e.canvas);if(t.text.length===0)return n;let r=Er(e,t.labelLine),i;if(t.path.length>=2){let e=t.path[0].y,n=t.path[t.path.length-1].y;n<e?i=!0:n>e&&(i=!1)}let a=ji(e,t);return Ni(n,r,t.text,i,a),n}function Ni(e,t,n,r,i=!1){if(t.length<2)return;let a=Math.min(t[0].x,t[1].x),o=Math.max(t[0].x,t[1].x),s=Math.min(t[0].y,t[1].y),c=Math.max(t[0].y,t[1].y),l=a+Math.floor((o-a)/2),u=s+Math.floor((c-s)/2);if(r!==void 0&&a===o){let e=c-s,t=Math.max(1,Math.floor(e/4));(i?r:!r)?u-=t:u+=t}let d=Z(n),f=u-Math.floor((d.length-1)/2);for(let t=0;t<d.length;t++){let n=d[t];Qt(e,{x:l-Math.floor(B(n)/2),y:f+t},n)}}function Pi(e,t,n){let r=X(t),i=0;for(let t=0;t<2;t++)i+=e.columnWidth.get(r.x+t)??0;let a=0;for(let t=0;t<2;t++)a+=e.rowHeight.get(r.y+t)??0;let o={width:i+1,height:a+1,labelArea:{x:0,y:0,width:0,height:0},gridColumns:[0,0,0],gridRows:[0,0,0]},s=t.drawingCoord;if(s===null)throw Error(`Node "${t.name}" has no drawingCoord; grid layout must run before bundled-edge drawing`);return wr(t.shape,n,o,s)}function Fi(e,t,n){let r=H(e.canvas),i=t.pathToJunction;if(!i||i.length===0)return[r,r,r,r,r,r];let a=H(e.canvas),o=e.config.useAscii,s=i.map((r,a)=>n.type===`fan-in`&&a===0?Pi(e,t.from,t.startDir):n.type===`fan-out`&&a===i.length-1?Pi(e,t.to,t.endDir):Tr(e,r));for(let e=1;e<s.length;e++){let n=s[e-1],r=s[e];Pn(n,r)||yi(a,n,r,1,-1,o,t.style)}let c=H(e.canvas);for(let t=1;t<i.length-1;t++){let n=i[t],r=Tr(e,n),a=$(i[t-1],n),s=$(n,i[t+1]),l;l=o?`+`:Y(a,J)&&Y(s,K)||Y(a,G)&&Y(s,q)?`┐`:Y(a,J)&&Y(s,G)||Y(a,K)&&Y(s,q)?`┘`:Y(a,q)&&Y(s,K)||Y(a,G)&&Y(s,J)?`┌`:Y(a,q)&&Y(s,G)||Y(a,K)&&Y(s,J)?`└`:`+`,U(c,r.x,r.y,l)}let l=H(e.canvas);if(n.type===`fan-in`&&i.length>=2){let e=s[0],t=$(i[0],i[1]),n=o?`+`:null;Y(t,G)?U(l,e.x,e.y,n??`┴`):Y(t,K)?U(l,e.x,e.y,n??`┬`):Y(t,q)?U(l,e.x,e.y,n??`┤`):Y(t,J)&&U(l,e.x,e.y,n??`├`)}return[a,l,r,r,c,H(e.canvas)]}function Ii(e,t){let n=H(e.canvas),r=H(e.canvas);if(t.sharedPath.length<2)return[n,r];let i=e.config.useAscii,a=t.edges[0]?.style??`solid`,o=e.config.graphDirection,s=t.sharedPath.map((n,r)=>{if(t.type===`fan-in`&&r===t.sharedPath.length-1){let n=o===`TD`?G:q;return Pi(e,t.sharedNode,n)}if(t.type===`fan-out`&&r===0){let n=o===`TD`?K:J;return Pi(e,t.sharedNode,n)}return Tr(e,n)});for(let e=1;e<s.length;e++){let t=s[e-1],r=s[e];Pn(t,r)||yi(n,t,r,1,-1,i,a)}for(let n=1;n<t.sharedPath.length-1;n++){let a=t.sharedPath[n],o=Tr(e,a),s=$(t.sharedPath[n-1],a),c=$(a,t.sharedPath[n+1]),l;l=i?`+`:Y(s,J)&&Y(c,K)||Y(s,G)&&Y(c,q)?`┐`:Y(s,J)&&Y(c,G)||Y(s,K)&&Y(c,q)?`┘`:Y(s,q)&&Y(c,K)||Y(s,G)&&Y(c,J)?`┌`:Y(s,q)&&Y(c,G)||Y(s,K)&&Y(c,J)?`└`:`+`,U(r,o.x,o.y,l)}return[n,r]}function Li(e,t){let n=H(e.canvas);if(t.sharedPath.length<2)return n;let r=t.sharedPath.length-1,i=t.sharedPath[r-1],a=t.sharedPath[r],o=$(i,a),s=e.config.graphDirection,c=s===`TD`?G:q,l=Pi(e,t.sharedNode,c);s===`TD`?--l.y:--l.x;let u=t.edges[0]?.endMarker,d=t.edges.every(e=>e.endMarker===u)?u:void 0,f=Ei(e.config.useAscii,d),p;return p=f===void 0?e.config.useAscii?Y(o,G)?`^`:Y(o,K)?`v`:Y(o,q)?`<`:Y(o,J)?`>`:`v`:Y(o,G)?`▲`:Y(o,K)?`▼`:Y(o,q)?`◄`:Y(o,J)?`►`:`▼`:f,U(n,l.x,l.y,p),n}function Ri(e,t){let n=H(e.canvas);if(!t.pathToJunction||t.pathToJunction.length<2)return n;let r=t.pathToJunction.length-1,i=t.pathToJunction[r-1],a=t.pathToJunction[r],o=$(i,a),s=e.config.graphDirection,c=s===`TD`?G:q,l=Pi(e,t.to,c);s===`TD`?--l.y:--l.x;let u=Ei(e.config.useAscii,t.endMarker),d;return d=u===void 0?e.config.useAscii?Y(o,G)?`^`:Y(o,K)?`v`:Y(o,q)?`<`:Y(o,J)?`>`:`v`:Y(o,G)?`▲`:Y(o,K)?`▼`:Y(o,q)?`◄`:Y(o,J)?`►`:`▼`:u,U(n,l.x,l.y,d),n}function zi(e){return Y(e,G)?K:Y(e,K)?G:Y(e,q)?J:Y(e,J)?q:e}function Bi(e,t){let n=H(e.canvas);if(t.sharedPath.length<2)return n;let r=t.sharedPath[0],i=t.sharedPath[1],a=zi($(r,i)),o=e.config.graphDirection,s=o===`TD`?K:J,c=Pi(e,t.sharedNode,s);o===`TD`?c.y+=1:c.x+=1;let l;return l=e.config.useAscii?Y(a,G)?`^`:Y(a,K)?`v`:Y(a,q)?`<`:Y(a,J)?`>`:`^`:Y(a,G)?`▲`:Y(a,K)?`▼`:Y(a,q)?`◄`:Y(a,J)?`►`:`▲`,U(n,c.x,c.y,l),n}function Vi(e,t){let n=H(e.canvas);if(!t.pathToJunction||t.pathToJunction.length<2)return n;let r=t.pathToJunction[0],i=t.pathToJunction[1],a=zi($(r,i)),o=Pi(e,t.from,t.startDir);Y(t.startDir,G)?--o.y:Y(t.startDir,K)?o.y+=1:Y(t.startDir,q)?--o.x:Y(t.startDir,J)&&(o.x+=1);let s;return s=e.config.useAscii?Y(a,G)?`^`:Y(a,K)?`v`:Y(a,q)?`<`:Y(a,J)?`>`:`v`:Y(a,G)?`▲`:Y(a,K)?`▼`:Y(a,q)?`◄`:Y(a,J)?`►`:`▼`,U(n,o.x,o.y,s),n}function Hi(e,t){let n=H(e.canvas);if(!t.junctionPoint)return n;let r=Tr(e,t.junctionPoint),i=e.config.useAscii,a=!1,o=!1,s=!1,c=!1;if(t.sharedPath.length>=2){let e=t.type===`fan-in`?0:t.sharedPath.length-1,n=t.type===`fan-in`?1:t.sharedPath.length-2,r=$(t.sharedPath[e],t.sharedPath[n]);Y(r,K)?o=!0:Y(r,G)?a=!0:Y(r,J)?c=!0:Y(r,q)&&(s=!0)}for(let e of t.edges)if(e.pathToJunction&&e.pathToJunction.length>=2){let n=t.type===`fan-in`?e.pathToJunction.length-1:0,r=t.type===`fan-in`?e.pathToJunction.length-2:1,i=$(e.pathToJunction[r],e.pathToJunction[n]);Y(i,K)?a=!0:Y(i,G)?o=!0:Y(i,J)?s=!0:Y(i,q)&&(c=!0)}let l;return l=i?`+`:a&&o&&s&&c?`┼`:o&&s&&c&&!a?`┬`:a&&s&&c&&!o?`┴`:a&&o&&c&&!s?`├`:a&&o&&s&&!c?`┤`:s&&c?`─`:a&&o?`│`:o&&c?`┌`:o&&s?`┐`:a&&c?`└`:a&&s?`┘`:`┼`,U(n,r.x,r.y,l),n}function Ui(e,t){let n=e.maxX-e.minX,r=e.maxY-e.minY;if(n<=0||r<=0)return V(0,0);let i={x:0,y:0},a={x:n,y:r},o=V(n,r);if(t.config.useAscii){for(let e=i.x+1;e<a.x;e++)U(o,e,i.y,`-`);for(let e=i.x+1;e<a.x;e++)U(o,e,a.y,`-`);for(let e=i.y+1;e<a.y;e++)U(o,i.x,e,`|`);for(let e=i.y+1;e<a.y;e++)U(o,a.x,e,`|`);U(o,i.x,i.y,`+`),U(o,a.x,i.y,`+`),U(o,i.x,a.y,`+`),U(o,a.x,a.y,`+`)}else{for(let e=i.x+1;e<a.x;e++)U(o,e,i.y,`─`);for(let e=i.x+1;e<a.x;e++)U(o,e,a.y,`─`);for(let e=i.y+1;e<a.y;e++)U(o,i.x,e,`│`);for(let e=i.y+1;e<a.y;e++)U(o,a.x,e,`│`);U(o,i.x,i.y,`┌`),U(o,a.x,i.y,`┐`),U(o,i.x,a.y,`└`),U(o,a.x,a.y,`┘`)}return o}function Wi(e,t){let n=e.maxX-e.minX,r=e.maxY-e.minY;if(n<=0||r<=0)return[V(0,0),{x:0,y:0},[]];let i=V(n,r),a=[],o=Z(e.name);for(let e=0;e<o.length;e++){let t=o[e],s=1+e,c=1+Math.ceil((n-1-B(t))/2);c<1&&(c=1);let l=It(t);for(let e=0;e<l.length;e++)c+e>=n||s>=r||(U(i,c+e,s,l[e]),a.push({x:c+e,y:s}))}return[i,{x:e.minX,y:e.minY},a]}function Gi(e,t){return Ki(e,t)}function Ki(e,t){let n=X(e),r=t.config.useAscii,i=0;for(let e=0;e<2;e++)i+=t.columnWidth.get(n.x+e)??0;let a=0;for(let e=0;e<2;e++)a+=t.rowHeight.get(n.y+e)??0;let o={x:0,y:0},s={x:i,y:a},c=V(Math.max(o.x,s.x),Math.max(o.y,s.y)),l=gr(e.shape,r),u=e.shape===`state-end`,d=r?u?`=`:`-`:u?`═`:`─`,f=r?u?`‖`:`|`:u?`║`:`│`,p=u?r?{tl:`#`,tr:`#`,bl:`#`,br:`#`}:{tl:`╔`,tr:`╗`,bl:`╚`,br:`╝`}:l;for(let e=o.x+1;e<s.x;e++)U(c,e,o.y,d);for(let e=o.x+1;e<s.x;e++)U(c,e,s.y,d);for(let e=o.y+1;e<s.y;e++)U(c,o.x,e,f);for(let e=o.y+1;e<s.y;e++)U(c,s.x,e,f);U(c,o.x,o.y,p.tl),U(c,s.x,o.y,p.tr),U(c,o.x,s.y,p.bl),U(c,s.x,s.y,p.br);let m=e.displayLabel,h=Z(m),g=o.y+Math.floor(a/2)-Math.floor((h.length-1)/2);for(let e=0;e<h.length;e++){let t=h[e],n=B(t),r=o.x+Math.floor(i/2)-Math.ceil(n/2)+1,a=It(t);for(let t=0;t<a.length;t++)U(c,r+t,g+e,a[t])}return c}function qi(e,t){return Gi(e,t)}function Ji(e){return/^[┌┐└┘├┤┬┴┼│─╭╮╰╯+\-|]$/.test(e)?`border`:`text`}function Yi(e,t=1){let n=Math.max(0,t),r=0;for(let t of e)for(let e of t)r=Math.max(r,B(e));let i=0;for(let t of e)i+=Math.max(t.length,1);return{width:r+2*n+2,height:i+(e.length-1)+2}}function Xi(e,t,n=1){let r=Math.max(0,n),{width:i,height:a}=Yi(e,r),o=t?`-`:`─`,s=t?`|`:`│`,c=t?`+`:`┌`,l=t?`+`:`┐`,u=t?`+`:`└`,d=t?`+`:`┘`,f=t?`+`:`├`,p=t?`+`:`┤`,m=V(i-1,a-1);U(m,0,0,c);for(let e=1;e<i-1;e++)U(m,e,0,o);U(m,i-1,0,l),U(m,0,a-1,u);for(let e=1;e<i-1;e++)U(m,e,a-1,o);U(m,i-1,a-1,d);for(let e=1;e<a-1;e++)U(m,0,e,s),U(m,i-1,e,s);let h=1;for(let t=0;t<e.length;t++){let n=e[t],a=n.length>0?n:[``];for(let e of a){let t=1+r,n=It(e);for(let e=0;e<n.length;e++)U(m,t+e,h,n[e]);h++}if(t<e.length-1){U(m,0,h,f);for(let e=1;e<i-1;e++)U(m,e,h,o);U(m,i-1,h,p),h++}}return m}function Zi(e){function t(e){return e.parent===null?0:1+t(e.parent)}let n=[...e];return n.sort((e,n)=>t(e)-t(n)),n}function Qi(e,t,n,r){for(let i=0;i<t.length;i++)for(let a=0;a<(t[0]?.length??0);a++){let o=t[i]?.[a];if(o&&o!==` `){let t=i+n.x,o=a+n.y;t>=0&&o>=0&&zt(e,t,o,r)}}}function $i(e,t,n,r){for(let i of t)Qi(e,i,n,r)}function ea(e,t,n){let r=e=>/^[┌┐└┘├┤┬┴┼│─╭╮╰╯+\-|.':]$/.test(e);for(let i=0;i<t.length;i++)for(let a=0;a<(t[0]?.length??0);a++){let o=t[i]?.[a];if(o&&o!==` `){let t=i+n.x,s=a+n.y;t>=0&&s>=0&&zt(e,t,s,r(o)?`border`:`text`)}}}function ta(e){let t=e.config.useAscii,n={x:0,y:0},r=Zi(e.subgraphs);for(let n of r){let r=Ui(n,e),i={x:n.minX,y:n.minY};e.canvas=qt(e.canvas,i,t,r),Qi(e.roleCanvas,r,i,`border`)}for(let n of e.nodes)!n.drawn&&n.drawingCoord&&n.drawing&&(e.canvas=qt(e.canvas,n.drawingCoord,t,n.drawing),ea(e.roleCanvas,n.drawing,n.drawingCoord),n.drawn=!0);let i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=new Set;for(let t of e.edges)if(t.bundle&&t.pathToJunction){let n=t.bundle,[r,f,,,p,m]=Fi(e,t,n);if(i.push(r),a.push(p),c.push(f),l.push(m),n.type===`fan-in`&&t.hasArrowStart){let n=Vi(e,t);s.push(n)}if(!d.has(n)){d.add(n);let[t,r]=Ii(e,n);if(i.push(t),a.push(r),n.type===`fan-in`){let t=Li(e,n);o.push(t)}if(n.type===`fan-out`&&n.edges.every(e=>e.hasArrowStart)){let t=Bi(e,n);s.push(t)}let c=Hi(e,n);u.push(c)}if(n.type===`fan-out`&&t.hasArrowEnd){let n=Ri(e,t);o.push(n)}}else{let[n,r,u,d,f,p]=bi(e,t);i.push(n),a.push(f),o.push(u),s.push(d),c.push(r),l.push(p)}e.canvas=qt(e.canvas,n,t,...i),$i(e.roleCanvas,i,n,`line`),e.canvas=qt(e.canvas,n,t,...a),$i(e.roleCanvas,a,n,`corner`),e.canvas=qt(e.canvas,n,t,...u),$i(e.roleCanvas,u,n,`junction`),e.canvas=qt(e.canvas,n,t,...o),$i(e.roleCanvas,o,n,`arrow`),e.canvas=qt(e.canvas,n,t,...c),$i(e.roleCanvas,c,n,`junction`),e.canvas=qt(e.canvas,n,t,...s),$i(e.roleCanvas,s,n,`arrow`),e.canvas=qt(e.canvas,n,t,...l),$i(e.roleCanvas,l,n,`text`);for(let n of e.subgraphs){if(n.nodes.length===0)continue;let[r,i,a]=Wi(n,e);e.canvas=qt(e.canvas,i,t,r),Qi(e.roleCanvas,r,i,`text`);for(let{x:t,y:n}of a){let a=r[t]?.[n];a===` `&&(U(e.canvas,t+i.x,n+i.y,a),zt(e.roleCanvas,t+i.x,n+i.y,`text`))}}return e.canvas}function na(e,t,n,r){if(r(e))return e;let i=Math.max(e-t,n-e);for(let a=1;a<=i;a++){let i=e+a;if(i<=n&&r(i))return i;let o=e-a;if(o>=t&&r(o))return o}}function ra(e){return`${e.keys.length>0?e.keys.join(`,`)+` `:` `}${e.type} ${e.name}`}function ia(e){let t=Z(e.label),n=e.attributes.map(ra);return n.length===0?[t]:[t,n]}function aa(e,t,n=!1,r=!1){if(t)switch(e){case`one`:return r?`+`:`|`;case`zero-one`:return n?`o|`:`|o`;case`many`:return n?`<`:`>`;case`zero-many`:return n?`o<`:`>o`}else switch(e){case`one`:return r?`┼`:`│`;case`zero-one`:return n?`○│`:`│○`;case`many`:return n?`╟`:`╢`;case`zero-many`:return n?`○╟`:`╢○`}}function oa(e){let t=new Set,n=[],r=new Map;for(let t of e.entities)r.set(t.id,new Set);for(let t of e.relationships)r.get(t.entity1)?.add(t.entity2),r.get(t.entity2)?.add(t.entity1);function i(e,n){let i=[e];for(;i.length>0;){let e=i.pop();if(!t.has(e)){t.add(e),n.add(e);for(let n of r.get(e)??[])t.has(n)||i.push(n)}}}for(let r of e.entities)if(!t.has(r.id)){let e=new Set;i(r.id,e),e.size>0&&n.push(e)}return n}function sa(e,t,n){let r=e.get(t);if(r===void 0)throw Error(`ER diagram layout: missing ${n} for entity "${t}"`);return r}function ca(e,t,n,r){let i=ve(_(e));if(i.entities.length===0)return``;let a=t.useAscii,o=Mn(t.paddingX,5,6,6),s=Mn(t.paddingY,5,4,2),c=Mn(t.paddingY,5,2,1),l=Math.max(...[`one`,`zero-one`,`many`,`zero-many`].flatMap(e=>[aa(e,a,!1).length,aa(e,a,!0).length])),u=new Map,d=new Map,f=new Map,p=new Map;for(let e of i.entities){p.set(e.id,e);let n=ia(e);u.set(e.id,n);let{width:r,height:i}=Yi(n,t.boxBorderPadding);d.set(e.id,r),f.set(e.id,i)}let m=new Map;for(let e of i.relationships){if(!e.label)continue;let t=[e.entity1,e.entity2].sort().join(`|`),n=pr(e.label);m.set(t,Math.max(m.get(t)??0,n))}let h=oa(i),g=new Map,v=0;for(let e of h){let t=i.entities.filter(t=>e.has(t.id)),n=Math.max(2,Math.ceil(Math.sqrt(t.length))),r=0,a=0,l=0;for(let e=0;e<t.length;e++){let i=t[e],c=sa(d,i.id,`box width`),p=sa(f,i.id,`box height`);l>=n&&(v+=a+s,r=0,a=0,l=0),g.set(i.id,{entity:i,sections:sa(u,i.id,`sections`),x:r,y:v,width:c,height:p});let h=o,_=l+1>=n,y=t[e+1];if(!_&&y){let e=[i.id,y.id].sort().join(`|`),t=m.get(e)??0;t>0&&(h=Math.max(h,t+2))}r+=c+h,a=Math.max(a,p),l++}v+=a+c}let y=0,b=0;for(let e of g.values())y=Math.max(y,e.x+e.width),b=Math.max(b,e.y+e.height);y+=4,b+=2;let x=V(y-1,b-1),S=Lt(y-1,b-1);function C(e,t,n,r){U(x,e,t,n,{role:r,roleCanvas:S})}function w(e,t){let n=S[e]?.[t];return n===`text`||n===`border`}function T(e,t,n,r,i){for(let a=0;a<e.length;a++){let e=t+a;if(!(e<r||e>i)&&w(e,n))return!1}return!0}function E(e,t,n,r,i){for(let a=0;a<e.length;a++){let e=t+a;if(!(e<r||e>i)&&(w(e,n)||S[e]?.[n]===`arrow`||D.has(`${e},${n}`)))return!1}return!0}for(let e of g.values()){let n=Xi(e.sections,a,t.boxBorderPadding);for(let t=0;t<n.length;t++)for(let r=0;r<n[0].length;r++){let i=n[t][r];if(i!==` `){let n=e.x+t,a=e.y+r;n<y&&a<b&&C(n,a,i,Ji(i))}}}let D=new Set;for(let e of g.values())for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++)D.add(`${e.x+n},${e.y+t}`);function O(e,t,n,r){D.has(`${e},${t}`)||(r===`text`||S[e]?.[t]!==`text`)&&C(e,t,n,r)}function ee(e,t,n,r){S[e-1]?.[t]!==`text`&&S[e+1]?.[t]!==`text`&&O(e,t,n,r)}function te(e,t,n,r){for(let i=n;i<=r;i++)for(let n=e;n<=t;n++){let e=x[n]?.[i];if(e!==void 0&&e!==` `)return!1}return!0}let k=[];function ne(e,t,n){for(let r of k)if(Math.abs(r.x-e)===1&&t<=r.yEnd&&n>=r.yStart)return!0;return!1}function A(e,t,n){for(let r of k)if(!(Math.abs(r.x-e)>1)&&t<=r.yEnd&&n>=r.yStart)return!0;return!1}function j(e,t,n){k.push({x:e,yStart:t,yEnd:n})}let M=a?`-`:`─`,N=a?`|`:`│`,P=a?`.`:`╌`,re=a?`:`:`┊`;function ie(e,t){return a?`+`:e===`down`?t===`right`?`┌`:`┐`:t===`right`?`└`:`┘`}function F(e,t,n,r){O(e,t,ie(n,r),`line`)}let I=new Map,ae=new Map;for(let e of i.relationships){let t=g.get(e.entity1),n=g.get(e.entity2);if(!t||!n)continue;let r=t.y+Math.floor(t.height/2),i=n.y+Math.floor(n.height/2);if(Math.abs(r-i)<Math.max(t.height,n.height))continue;let[a,o]=r<i?[t,n]:[n,t],s=a.x+Math.floor(a.width/2),c=o.x+Math.floor(o.width/2),l=ae.get(a.entity.id);l||(l=[],ae.set(a.entity.id,l)),l.push({rel:e,otherCenterX:c});let u=I.get(o.entity.id);u||(u=[],I.set(o.entity.id,u)),u.push({rel:e,otherCenterX:s})}function oe(e,t,n){let r=n.get(e.entity.id),i=e.x+Math.floor(e.width/2);if(!r||r.length<=1)return i;let a=[...r].sort((e,t)=>e.otherCenterX-t.otherCenterX),o=a.findIndex(e=>e.rel===t);if(o===-1)return i;let s=Math.min(1,Math.floor((e.width-1)/2)),c=Math.max(0,e.width-1-s*2),l=a.length>1?c/(a.length-1):0;return e.x+s+Math.round(o*l)}for(let e of i.relationships){let t=g.get(e.entity1),n=g.get(e.entity2);if(!t||!n)continue;let r=e.identifying?M:P,i=e.identifying?N:re,o=t.x+Math.floor(t.width/2),c=t.y+Math.floor(t.height/2),u=n.x+Math.floor(n.width/2),d=n.y+Math.floor(n.height/2);if(Math.abs(c-d)<Math.max(t.height,n.height)){let[c,d]=o<u?[t,n]:[n,t],[f,p]=o<u?[e.cardinality1,e.cardinality2]:[e.cardinality2,e.cardinality1],m=c.x+c.width,h=d.x-1,_=c.y+Math.floor(c.height/2),v;for(let e of g.values())e!==c&&e!==d&&e.y===c.y&&e.x<h+1&&e.x+e.width>m&&(v=Math.max(v??0,e.y+e.height));let y=h-m+1,b=+(y>=l+1),C=aa(f,a,!1),w=aa(p,a,!0),E=+(y>=3&&C[0]===N),D=+(y>=3&&w[w.length-1]===N),k=m+E,ne=h-D,A;if(v===void 0){for(let e=m;e<=h;e++)ee(e,_,r,`line`);if(A=_+1,e.label){let t=m+b,n=h-b,r=Z(e.label).length,i=_+1+Math.max(s-1,1);for(;A<i&&!te(t,n,A,A+r-1);)A++}}else{let t=Math.max(c.y+c.height,d.y+d.height,v),n=e.label?Z(e.label).length:0,a=t+1,o=t+Math.max(s*3,4);for(;a<o&&!te(m,h,a,a+n);)a++;Vt(x,h+1,a+n+1),Rt(S,h+1,a+n+1);for(let e=_;e<=a;e++)O(m,e,i,`line`),O(h,e,i,`line`);for(let e=m;e<=h;e++)ee(e,a,r,`line`);m!==h&&(F(m,a,`up`,`right`),F(h,a,`up`,`left`)),A=a+1}for(let e=0;e<C.length;e++)O(k+e,_,C[e],`arrow`);for(let e=0;e<w.length;e++)O(ne-w.length+1+e,_,w[e],`arrow`);if(e.label){let t=Z(e.label),n=Math.floor((m+h)/2),r=m+b,i=h-b;for(let e=0;e<t.length;e++){let a=t[e],o=It(a),s=Math.max(r,n-Math.floor(o.length/2)),c=A+e;if(Vt(x,Math.max(s+o.length,1),Math.max(c+1,1)),Rt(S,Math.max(s+o.length,1),Math.max(c+1,1)),T(o,s,c,r,i))for(let e=0;e<o.length;e++){let t=s+e;t>=r&&t<=i&&O(t,c,o[e],`text`)}}}}else{let[o,s]=c<d?[t,n]:[n,t],[l,u]=c<d?[e.cardinality1,e.cardinality2]:[e.cardinality2,e.cardinality1],f=o.y+o.height,p=s.y-1,m=oe(o,e,ae),h=oe(s,e,I);function se(e,t,n){for(let r=t;r<=n;r++)if(D.has(`${e},${r}`))return!1;return!0}let _=f,v=p,y=Math.max(...[...g.values()].filter(e=>e.y===o.y).map(e=>e.y+e.height)),b=s.y,w=Math.max(f,y+1),T=Math.min(p,b-1);function ce(e,t,n){let r=Math.floor(w<=T?(w+T)/2:(f+p)/2);if(w>T)return r;for(let r=w;r<=T;r++)if(te(e,t,r,r+n))return r;return r}let k=m!==h,M=Math.min(m,h),N=Math.max(m,h),P=k?ce(M,N,0):p,re=k?P-1:p,ie=!se(m,w,T)||!se(h,w,T)||ne(m,f,k?P:p)||k&&ne(h,P,p),L=m;if(ie){let e=x.length,t;for(let n=0;n<=e;n++){let e=m+n;if(se(e,f,p)&&!A(e,f,p)){t=e;break}let r=m-n;if(n>0&&se(r,f,p)&&!A(r,f,p)){t=r;break}}L=t??m;for(let e=f;e<=_;e++)O(m,e,i,`line`);for(let e=Math.min(m,L);e<=Math.max(m,L);e++)ee(e,_,r,`line`);for(let e=_;e<=v;e++)O(L,e,i,`line`);for(let e=Math.min(L,h);e<=Math.max(L,h);e++)ee(e,v,r,`line`);for(let e=v;e<=p;e++)O(h,e,i,`line`);if(m!==L){let e=L>m?`right`:`left`,t=e===`right`?`left`:`right`;F(m,_,`up`,e),F(L,_,`down`,t)}if(L!==h){let e=h>L?`right`:`left`,t=e===`right`?`left`:`right`;F(L,v,`up`,e),F(h,v,`down`,t)}j(L,_,v)}else{for(let e=f;e<=re;e++)O(m,e,i,`line`);if(j(m,f,k?P:re),k){for(let e=M;e<=N;e++)ee(e,P,r,`line`);for(let e=P+1;e<=p;e++)O(h,e,i,`line`);j(h,P,p);let e=h>m?`right`:`left`,t=e===`right`?`left`:`right`;F(m,P,`up`,e),F(h,P,`down`,t),L=h}}let le=aa(l,a,!1,!0);for(let e=0;e<le.length;e++)O(m-Math.floor(le.length/2)+e,_,le[e],`arrow`);let ue=m===h?m:h,de=aa(u,a,!0,!0);for(let e=0;e<de.length;e++)O(ue-Math.floor(de.length/2)+e,v,de[e],`arrow`);if(e.label){let t=Z(e.label),n=Math.max(le.length-1-Math.floor(le.length/2),de.length-1-Math.floor(de.length/2)),r=L+n+2,i=t.map(e=>It(e)),a=r+Math.max(...i.map(e=>e.length))-1,o=t.length,s=Math.floor((f+p)/2)-Math.floor((o-1)/2);a>=0&&(Vt(x,a+1,p+1),Rt(S,a+1,p+1));let c=null;for(let e=0;e<=p-f&&c===null;e++){let t=e===0?[s]:[s+e,s-e];for(let e of t)if(!(e<f||e+o-1>p)&&i.every((t,n)=>E(t,r,e+n,0,a))){c=e;break}}if(c!==null)for(let e=0;e<o;e++){let t=i[e],n=c+e;for(let e=0;e<t.length;e++){let i=r+e;i>=0&&O(i,n,t[e],`text`)}S[r-1]?.[n]===`line`&&C(r-1,n,` `,`line`);let a=r+t.length;S[a]?.[n]===`line`&&C(a,n,` `,`line`)}}}}return Jt(x,{roleCanvas:S,colorMode:n,theme:r})}var la=4,ua=[`O`,`/|\\`,`/ \\`],da=3,fa=4;function pa(e){return e.seqNumber===void 0?la:la+String(e.seqNumber).length}function ma(e,t,n,r){let i=je(_(e));if(i.actors.length===0)return``;let a=t.useAscii,o=a?`-`:`─`,s=a?`|`:`│`,c=a?`+`:`┌`,l=a?`+`:`┐`,u=a?`+`:`└`,d=a?`+`:`┘`,f=a?`+`:`┬`,p=a?`+`:`┴`,m=a?`+`:`├`,h=a?`+`:`┤`,g=new Map;i.actors.forEach((e,t)=>g.set(e.id,t));function v(e){let t=g.get(e);if(t===void 0)throw Error(`Sequence diagram: unknown actor "${e}"`);return t}function y(e){let t=pr(e.label?`${e.type} [${e.label}]`:e.type);for(let n of e.dividers)n.label&&(t=Math.max(t,pr(`[${n.label}]`)));return t}let b=Math.max(0,t.boxBorderPadding),x=e=>Math.max(pr(e.label),e.type===`actor`?da:0),S=e=>mr(e.label)+(e.type===`actor`?ua.length:0),C=i.actors.map(e=>x(e)+2*b+2),w=C.map(e=>Math.ceil(e/2)),T=i.actors.map(e=>S(e)+2),E=Math.max(...T,3),D=(e,t)=>t-Math.floor(C[e]/2),O=Math.floor((E-1)/2),ee=E-1-O,te=new Map,k=new Map;i.actors.forEach((e,t)=>{e.createdAt!==void 0&&te.set(e.createdAt,t),e.destroyedAt!==void 0&&k.set(e.destroyedAt,t)});let ne=new Map,A=new Map,j=i.boxes.filter(e=>e.actorIds.length>0).map(e=>{let t=e.actorIds.map(v);return{label:e.label,lo:Math.min(...t),hi:Math.max(...t)}}),M=j.length>0,N=i.actors.map((e,t)=>j.findIndex(e=>e.lo<=t&&t<=e.hi)),P=+!!M,re=e=>e===``?0:pr(e)+6,ie=Array(Math.max(i.actors.length-1,0)).fill(0);for(let e of i.messages){let t=v(e.from),n=v(e.to);if(t===n)continue;let r=Math.min(t,n),i=Math.max(t,n),a=pr(e.label)+4,o=i-r,s=Math.ceil(a/o);for(let e=r;e<i;e++)ie[e]=Math.max(ie[e],s)}function F(e){let t=Z(e.text);return Math.max(...t.map(e=>B(e)))+2+2*b}let I=Array(i.actors.length).fill(0),ae=Array(i.actors.length).fill(0),oe=Array(i.actors.length).fill(0),se=Array(i.actors.length).fill(0);for(let e of i.notes)if(e.position===`left`||e.position===`right`){let t=v(e.actorIds[0]),n=F(e);e.position===`left`?I[t]=Math.max(I[t],n):ae[t]=Math.max(ae[t],n)}else if(e.position===`over`&&e.actorIds.length===1){let t=v(e.actorIds[0]),n=F(e),r=Math.floor(n/2),i=n-r;oe[t]=Math.max(oe[t],r),se[t]=Math.max(se[t],i)}let ce=Mn(t.paddingX,5,10,4),L=[Math.max(w[0]+(N[0]===-1?0:2),I[0]+1,oe[0])];for(let e=1;e<i.actors.length;e++){let t=N[e-1],n=N[e],r=t===n?0:(t===-1?0:1)+(n===-1?0:1),i=r===0?0:r*2-1,a=Math.max(ae[e-1],I[e],se[e-1],oe[e])+2,o=Math.max(w[e-1]+w[e]+2+i,ie[e-1]+2,a,ce);L[e]=L[e-1]+o}let le=e=>D(e.lo,L[e.lo])-1-1,ue=e=>Math.max(D(e.hi,L[e.hi])+C[e.hi]-1+1+1,le(e)+re(e.label)-1);for(let e of j){if(e.hi+1>=i.actors.length)continue;let t=D(e.hi+1,L[e.hi+1]),n=N[e.hi+1]===-1?0:2,r=ue(e)+1+1+n-t;if(r>0){let t=L.slice(e.hi+1).map(e=>e+r);L.splice(e.hi+1,t.length,...t)}}for(let e of i.blocks){let t=-1,n=-1,r=1/0,a=-1;for(let o=e.startIndex;o<=e.endIndex&&!(o>=i.messages.length);o++){let e=i.messages[o],s=v(e.from),c=v(e.to);if(t=t===-1?Math.min(s,c):Math.min(t,s,c),n=Math.max(n,s,c),r=Math.min(r,L[Math.min(s,c)]),a=Math.max(a,L[Math.max(s,c)]),s===c){let t=L[s]+la+2+pr(e.label);a=Math.max(a,t)}}if(n===-1||n+1>=i.actors.length)continue;let o=Math.max(0,r-fa),s=a+fa,c=o+1+y(e),l=Math.max(s,c),u=L[n+1],d=l+2-u;if(d>0){let e=L.slice(n+1).map(e=>e+d);L.splice(n+1,e.length,...e)}}let de=[],fe=[],pe=new Map,me=new Map,he=new Map,ge=[],_e=P,ve=_e+E,R=ve+P,ye=Mn(t.paddingY,5,1,0),be=Math.max(ye,1);for(let e of i.notes){if(e.afterIndex!==-1)continue;R+=ye;let t=Z(e.text),n=F(e),r=t.length+2,i=g.get(e.actorIds[0])??0,a;if(e.position===`left`)a=L[i]-n-1;else if(e.position===`right`)a=L[i]+2;else if(e.actorIds.length>=2){let t=g.get(e.actorIds[1])??i;a=Math.floor((L[i]+L[t])/2)-Math.floor(n/2)}else a=L[i]-Math.floor(n/2);a=Math.max(0,a),ge.push({x:a,y:R,width:n,height:r,lines:t}),R+=r}for(let e=0;e<i.messages.length;e++){for(let t=0;t<i.blocks.length;t++)i.blocks[t].startIndex===e&&(R+=ye+1,pe.set(t,R-1));for(let t=0;t<i.blocks.length;t++)for(let n=0;n<i.blocks[t].dividers.length;n++)i.blocks[t].dividers[n].index===e&&(R+=ye,he.set(`${t}:${n}`,R),R+=be);R+=ye;let t=i.messages[e],n=t.from===t.to,r=mr(t.label),a=n?void 0:te.get(e),o=k.get(e);if(n)fe[e]=R+1,de[e]=R,R+=2+r;else{let t=a===void 0?0:O,n=a===void 0?0:ee;fe[e]=R,de[e]=R+r+t,R+=r+t+1+n,a!==void 0&&ne.set(a,de[e]-t)}o!==void 0&&(A.set(o,R),R+=1);for(let t=0;t<i.notes.length;t++)if(i.notes[t].afterIndex===e){R+=ye;let e=i.notes[t],n=Z(e.text),r=F(e),a=n.length+2,o=g.get(e.actorIds[0])??0,s;if(e.position===`left`)s=L[o]-r-1;else if(e.position===`right`)s=L[o]+2;else if(e.actorIds.length>=2){let t=g.get(e.actorIds[1])??o;s=Math.floor((L[o]+L[t])/2)-Math.floor(r/2)}else s=L[o]-Math.floor(r/2);s=Math.max(0,s),ge.push({x:s,y:R,width:r,height:a,lines:n}),R+=a}for(let t=0;t<i.blocks.length;t++)i.blocks[t].endIndex===e&&(R+=ye,me.set(t,R),R+=be)}R+=be;let xe=R,Se=xe+P,Ce=Se+E+P,we=(L[L.length-1]??0)+(w[w.length-1]??0)+2;for(let e of j)we=Math.max(we,ue(e)+2);for(let e=0;e<i.messages.length;e++){let t=i.messages[e];if(t.from===t.to){let e=L[v(t.from)]+pa(t)+2+2+pr(t.label);we=Math.max(we,e+1)}}for(let e of ge)we=Math.max(we,e.x+e.width+1);let Te=V(we,Ce-1),Ee=Lt(we,Ce-1);function z(e,t,n,r){U(Te,e,t,n,{role:r,roleCanvas:Ee})}function De(e,t,n,r,i){let a=It(n);for(let n=0;n<a.length;n++){let o=e+n;if(i!==void 0&&o>=i||a[n+1]===``&&i!==void 0&&o+1>=i)break;z(o,t,a[n],r)}}function Oe(e,t,n,r,i){let a=r===`actor`?ua:[],f=[...a,...Z(n)],p=Math.max(pr(n),a.length>0?da:0),m=p+2*b+2,h=i,g=h-2,_=e-Math.floor(m/2);z(_,t,c,`border`);for(let e=1;e<m-1;e++)z(_+e,t,o,`border`);z(_+m-1,t,l,`border`);for(let e=0;e<g;e++){let n=t+1+e;z(_,n,s,`border`),z(_+m-1,n,s,`border`);let r=f[e];r!==void 0&&De(_+1+b+Math.floor((p-B(r))/2),n,r,`text`)}let v=t+h-1;z(_,v,u,`border`);for(let e=1;e<m-1;e++)z(_+e,v,o,`border`);z(_+m-1,v,d,`border`)}let ke=e=>{let t=ne.get(e);return t===void 0?ve:t+E},Ae=e=>A.get(e)??xe;for(let e=0;e<i.actors.length;e++){let t=L[e];for(let n=ke(e);n<=Ae(e);n++)z(t,n,s,`line`)}let Me=a?`+`:`┼`;function Ne(e,t,n){let r=le(e),i=ue(e),a=t+E+1;z(r,t,c,`border`),z(i,t,l,`border`),z(r,a,u,`border`),z(i,a,d,`border`);for(let e=r+1;e<i;e++)z(e,t,o,`border`),z(e,a,o,`border`);for(let e=t+1;e<a;e++)z(r,e,s,`border`),z(i,e,s,`border`);n!==``&&De(r+2,t,` ${Z(n)[0]} `,`text`);for(let n=e.lo;n<=e.hi;n++){let e=L[n];ke(n)<=t&&t<=Ae(n)&&z(e,t,Me,`junction`),ke(n)<=a&&a<=Ae(n)&&z(e,a,Me,`junction`)}}for(let e of j)Ne(e,0,e.label),Ne(e,xe,``);for(let e=0;e<i.actors.length;e++){let t=i.actors[e],n=ne.get(e)??_e,r=A.has(e);Oe(L[e],n,t.label,t.type,E),r||Oe(L[e],Se,t.label,t.type,E),a||(z(L[e],n+E-1,f,`junction`),r||z(L[e],Se,p,`junction`))}for(let e=0;e<i.messages.length;e++){let t=i.messages[e],n=v(t.from),r=v(t.to),c=L[n],l=L[r],u=n===r,d=t.lineStyle===`dashed`,f=t.arrowHead===`filled`,p=t.isLost===!0,h=a?`x`:`✕`,g=d?a?`.`:`╌`:o;if(u){let n=de[e],r=pa(t),i=t.seqNumber===void 0?void 0:String(t.seqNumber),o=Z(t.label);z(c,n,m,`junction`);let l=c+1;if(i!==void 0){for(let e=0;e<i.length;e++)z(c+1+e,n,i[e],`text`);l=c+1+i.length}for(let e=l;e<c+r;e++)z(e,n,g,`line`);z(c+r,n,a?`+`:`┐`,`corner`);let u=c+r+2;for(let e=0;e<o.length;e++){let t=n+1+e;z(c+r,t,s,`line`),De(u,t,o[e],`text`,we)}let d=n+1+o.length;z(c,d,p?h:f?a?`<`:`◀`:a?`<`:`◁`,`arrow`);for(let e=c+1;e<c+r;e++)z(e,d,g,`line`);z(c+r,d,a?`+`:`┘`,`corner`)}else{let n=fe[e],i=de[e],o=c<l,s=te.get(e)===r,u=l;if(s){let e=D(r,l),t=e+C[r]-1;u=o?e-1:t+1}let d=Math.floor((c+l)/2),m=Z(t.label);for(let e=0;e<m.length;e++){let t=m[e];De(d-Math.floor(B(t)/2),n+e,t,`text`,we)}if(o){for(let e=c+1;e<u;e++)z(e,i,g,`line`);z(u,i,p?h:f?a?`>`:`▶`:a?`>`:`▷`,`arrow`),t.bidirectional&&z(c,i,a?`<`:`◀`,`arrow`)}else{for(let e=u+1;e<c;e++)z(e,i,g,`line`);z(u,i,p?h:f?a?`<`:`◀`:a?`<`:`◁`,`arrow`),t.bidirectional&&z(c,i,a?`>`:`▶`,`arrow`)}if(t.seqNumber!==void 0){let e=String(t.seqNumber);if(o){let t=c+1;if(t+e.length<l)for(let n=0;n<e.length;n++)z(t+n,i,e[n],`text`)}else{let t=c-e.length;if(t>u)for(let n=0;n<e.length;n++)z(t+n,i,e[n],`text`)}}}}for(let[e,t]of A)z(L[e],t,a?`x`:`✕`,`arrow`);let Pe=we-1;for(let e=0;e<i.blocks.length;e++){let t=i.blocks[e],n=pe.get(e),r=me.get(e);if(n===void 0||r===void 0)continue;let a=we,f=0;for(let e=t.startIndex;e<=t.endIndex&&!(e>=i.messages.length);e++){let t=i.messages[e],n=g.get(t.from)??0,r=g.get(t.to)??0;if(a=Math.min(a,L[Math.min(n,r)]),f=Math.max(f,L[Math.max(n,r)]),n===r){let e=L[n]+pa(t)+2+pr(t.label);f=Math.max(f,e)}}let p=a-fa,_=f+fa,v=1/0,b=-1/0;for(let e of L)e>f&&e<v&&(v=e),e<a&&e>b&&(b=e);_>=v&&(_=Math.max(f,v-fa)),p<=b&&(p=Math.min(a,b+fa)),p=Math.max(0,p),_>Pe&&(Vt(Te,_+1,Ce-1),Rt(Ee,_+1,Ce-1),Pe=_);let x=t.label?`${t.type} [${t.label}]`:t.type,S=p+1+y(t);if(S>_){_=S;let[e]=Bt(Te);_>e&&(Vt(Te,_,Ce-1),Rt(Ee,_,Ce-1)),we=Math.max(we,_+1),Pe=Math.max(Pe,_)}z(p,n,c,`border`);for(let e=p+1;e<_;e++)z(e,n,o,`border`);z(_,n,l,`border`);let C=Z(x);for(let e=0;e<C.length&&n+e<r;e++)De(p+1,n+e,C[e],`text`,_);z(p,r,u,`border`);for(let e=p+1;e<_;e++)z(e,r,o,`border`);z(_,r,d,`border`);for(let e=n+1;e<r;e++)z(p,e,s,`border`),z(_,e,s,`border`);for(let n=0;n<t.dividers.length;n++){let r=he.get(`${e}:${n}`);if(r===void 0)continue;let i=Fe();z(p,r,m,`junction`);for(let e=p+1;e<_;e++)z(e,r,i,`line`);z(_,r,h,`junction`);let a=t.dividers[n].label;if(a){let e=`[${a}]`;De(p+1,r,e,`text`,_)}}}for(let e of ge){Vt(Te,e.x+e.width,e.y+e.height),Rt(Ee,e.x+e.width,e.y+e.height),z(e.x,e.y,c,`border`);for(let t=1;t<e.width-1;t++)z(e.x+t,e.y,o,`border`);z(e.x+e.width-1,e.y,l,`border`);for(let t=0;t<e.lines.length;t++){let n=e.y+1+t;z(e.x,n,s,`border`),z(e.x+e.width-1,n,s,`border`);for(let t=e.x+1;t<e.x+e.width-1;t++)z(t,n,` `,`text`);De(e.x+1+b,n,e.lines[t],`text`)}let t=e.y+e.height-1;z(e.x,t,u,`border`);for(let n=1;n<e.width-1;n++)z(e.x+n,t,o,`border`);z(e.x+e.width-1,t,d,`border`)}return Jt(Te,{roleCanvas:Ee,colorMode:n,theme:r});function Fe(){return a?`-`:`╌`}}function ha(e,t){return e.rowStart<=t.rowEnd&&t.rowStart<=e.rowEnd}function ga(e,t){let n=e.map(e=>({item:e,geom:t(e)})).sort((e,t)=>e.geom.idealMid-t.geom.idealMid),r=(e,t)=>{let r=n[e];if(r)for(let i=e+t;i>=0&&i<n.length;i+=t){let e=n[i];if(e&&ha(e.geom,r.geom))return e.geom}},i=new Map;for(let[e,t]of n.entries()){let n=t.geom,a=r(e,-1),o=r(e,1),s=a&&a.end>=n.start?Math.floor((a.idealMid+n.idealMid)/2)+1:-1/0,c=o&&n.end>=o.start?Math.floor((n.idealMid+o.idealMid)/2):1/0;i.set(t.item,{left:s,right:c})}return i}function _a(e){let t=[];e.annotation&&t.push(`<<${e.annotation}>>`);let n=Z(e.label);t.push(...n);let r=e.attributes.map(_e),i=e.methods.map(_e),a=[t];return r.length>0&&a.push(r),i.length>0&&a.push(i),a}function va(e,t){return{type:e,markerAt:t,dashed:e===`dependency`||e===`realization`}}function ya(e,t,n){switch(e){case`inheritance`:case`realization`:return n===`down`?t?`^`:`△`:n===`up`?t?`v`:`▽`:n===`left`?t?`>`:`◁`:t?`<`:`▷`;case`composition`:return t?`*`:`◆`;case`aggregation`:return t?`o`:`◇`;case`association`:case`dependency`:return n===`down`?t?`v`:`▼`:n===`up`?t?`^`:`▲`:n===`left`?t?`<`:`◀`:t?`>`:`▶`}}function ba(e,t,n,r,i){let a=e+t.length-1,o=r>e,s=i<a;if(!o&&!s)return{start:e,cells:t};let c=o?r:e,l=Math.max(0,(s?i:a)-c+1),u=+!!o+ +!!s;if(l===0)return{start:c,cells:[]};if(l<u)return{start:c,cells:[`…`]};let d=Math.max(0,l-u),f=It(n),p=f.length<=d?f:o&&!s?f.slice(f.length-d):f.slice(0,d),m=[...o?[`…`]:[],...p,...s?[`…`]:[]];return{start:c+Math.max(0,Math.floor((l-m.length)/2)),cells:m}}function xa(e){return Math.max(...Z(e).map(e=>B(e)))+2}function Sa(e,n,r,i,a={}){let{diagram:o,notesById:s}=Ca(L(_(e)));if(o.classes.length===0)return``;let c=n.useAscii,l=Mn(n.paddingX,5,4,1),u=Mn(n.paddingY,5,3,1),d=new Map,f=new Map,p=new Map;for(let e of o.classes){let t=_a(e);d.set(e.id,t);let{width:r,height:i}=Yi(t,n.boxBorderPadding);f.set(e.id,r),p.set(e.id,i)}let m=new Map;for(let e of o.classes)m.set(e.id,e);let h=new Map,g=new Map;for(let e of o.relationships){let t=e.from,n=e.to,r=h.get(n)??new Set;h.set(n,r),r.add(t);let i=g.get(t)??new Set;g.set(t,i),i.add(n)}let v=new Map,y=o.classes.filter(e=>!h.has(e.id)||h.get(e.id).size===0).map(e=>e.id);for(let e of y)v.set(e,0);let b=o.classes.length-1,x=0;for(;x<y.length;){let e=y[x++],t=g.get(e);if(t)for(let n of t){let t=(v.get(e)??0)+1;t>b||(!v.has(n)||v.get(n)<t)&&(v.set(n,t),y.push(n))}}for(let e of o.classes)v.has(e.id)||v.set(e.id,0);wa(s,v);let S=Math.max(...v.values(),0),C=Array.from({length:S+1},()=>[]);for(let e of o.classes)C[v.get(e.id)].push(e.id);let w=new Map,T=new Map;{let e=new Map;o.relationships.forEach((t,n)=>{let r=[t.from,t.to].sort().join(`::`),i=e.get(r)??[];i.push(n),e.set(r,i)});for(let t of e.values()){if(t.length<2)continue;let e=t.length,n=Math.max(...t.map(e=>{let t=o.relationships[e].label;return t?xa(t):3}))+1;t.forEach((t,r)=>{w.set(t,Math.round((r-(e-1)/2)*n)),T.set(t,(e-1)*n)})}}let E=new Map,D=new Map,O=new Map,ee=new Map;{let e=(e,t,n)=>{let r=new Map;o.relationships.forEach((t,n)=>{if(w.has(n)||!m.has(t.from)||!m.has(t.to))return;let i=v.get(t.from)??0;if((v.get(t.to)??0)-i!==1)return;let a=e(t),o=r.get(a)??[];o.push(n),r.set(a,o)});for(let e of r.values()){if(e.length<2)continue;let r=e.length,i=Math.max(...e.map(e=>{let t=o.relationships[e].label;return t?xa(t):3}))+1;e.forEach((e,a)=>{t.set(e,Math.round((a-(r-1)/2)*i)),n.set(e,(r-1)*i)})}};e(e=>e.to,O,ee),e(e=>e.from,E,D)}let te=new Map;for(let e of o.classes)te.set(e.id,{left:0,right:0});o.relationships.forEach((e,t)=>{if(!m.has(e.from)||!m.has(e.to))return;let n=e.label?xa(e.label):1,r=w.get(t)??E.get(t)??0,i=w.get(t)??O.get(t)??0,a=te.get(e.from);a.left=Math.max(a.left,Math.floor(n/2)-r),a.right=Math.max(a.right,r+n-1-Math.floor(n/2));let o=te.get(e.to);o.left=Math.max(o.left,Math.floor(n/2)-i),o.right=Math.max(o.right,i+n-1-Math.floor(n/2))});let k=new Map,ne=0,A=0;for(let e=0;e<=S;e++){let t=C[e];if(t.length===0)continue;let n=e=>{let t=h.get(e);return t&&t.size>0?[...t].sort().join(`,`):`root:${e}`},r=new Map;for(let e of t){let t=n(e),i=r.get(t);i||(i=[],r.set(t,i)),i.push(e)}let i=new Map,a=new Map,o=new Map;{let e=0;for(let n of t){let t=f.get(n),r=te.get(n),s=Math.max(0,r.left-Math.floor(t/2)),c=Math.max(0,r.right-(t-1-Math.floor(t/2)));i.set(n,e),a.set(n,s+t+c),o.set(n,s),e+=s+t+c+l}}let s=0,c=0,g=(e,t)=>{let n=m.get(e),r=f.get(e),i=p.get(e),u=o.get(e),h=a.get(e);k.set(e,{cls:n,sections:d.get(e),x:t+u,y:ne,width:r,height:i}),A=Math.max(A,t+h),s=t+h+l,c=Math.max(c,i)},_=new Set;for(let c of t){if(_.has(c))continue;let t=n(c),u=h.get(c),d=u?[...u].filter(t=>v.get(t)<e):[];if(d.length===0){g(c,Math.max(i.get(c),s,0)),_.add(c);continue}let p=r.get(t),m=d.map(e=>{let t=k.get(e);return t.x+Math.floor(t.width/2)}),y=Math.round(m.reduce((e,t)=>e+t,0)/m.length),b=0;for(let e=0;e<p.length;e++)b+=a.get(p[e]),e<p.length-1&&(b+=l);let x=o.get(p[0]),S=p[p.length-1],C=a.get(S)-o.get(S)-f.get(S),w=b-x-C,T=y-x-Math.floor(w/2),E=Math.max(T,s,0);for(let e of p)g(e,E),_.add(e),E=s}ne+=c+u}let j=A,M=0;for(let e of k.values())j=Math.max(j,e.x+e.width),M=Math.max(M,e.y+e.height);j+=4,M+=2;let N=V(j-1,M-1),P=Lt(j-1,M-1);function re(e,t,n,r){U(N,e,t,n,{role:r,roleCanvas:P})}let ie=a.hyperlinks?ot(j-1,M-1):void 0;for(let e of k.values()){let r=Xi(e.sections,c,n.boxBorderPadding);for(let t=0;t<r.length;t++)for(let n=0;n<r[0].length;n++){let i=r[t][n];if(i!==` `){let r=e.x+t,a=e.y+n;r<j&&a<M&&re(r,a,i,Ji(i))}}if(ie){let n=t(o.interactions.get(e.cls.id)?.href),i=e.sections[0];if(n!==void 0&&i!==void 0){let t=1+ +!!e.cls.annotation;lt(ie,r,{x:e.x,y:e.y},n,{from:t,to:i.length})}}}let F=new Set;for(let e of k.values())for(let t=0;t<e.height;t++)for(let n=0;n<e.width;n++)F.add(`${e.x+n},${e.y+t}`);function I(e,t,n,r){F.has(`${e},${t}`)||re(e,t,n,r)}function ae(e,t,n){for(let[r,i]of k.entries())if(!n?.has(r)&&e>=i.x&&e<=i.x+i.width-1&&t>=i.y&&t<=i.y+i.height-1)return!0;return!1}function oe(e,t,n,r){return na(e,0,e+j+9,e=>{for(let i=Math.min(t,n);i<=Math.max(t,n);i++)if(ae(e,i,r))return!1;return!0})??j+2}let se=c?`-`:`─`,ce=c?`|`:`│`,le=c?`.`:`╌`,ue=c?`:`:`┊`;function de(e,t,n){let r=Math.floor(n/2),i=n-1-r,a=t>r+i?(r+i)/t:1;return Math.max(-r,Math.min(i,Math.round(e*a)))}function fe(e,t,n){let r=w.get(e)??E.get(e)??0,i=w.get(e)??O.get(e)??0,a=T.get(e)??D.get(e)??0,o=T.get(e)??ee.get(e)??0,s=t.x+Math.floor(t.width/2),c=n.x+Math.floor(n.width/2);return{fromCX:s+r,toCX:c+i,fromAnchorX:s+de(r,a,t.width),toAnchorX:c+de(i,o,n.width)}}function pe(e,t,n,r){if(F.has(`${e},${t}`)||P[e]?.[t]===`arrow`)return;let i=N[e]?.[t];if(!c&&i!==void 0&&Ut(i)&&Ut(n)){let a=Kt(i,n);re(e,t,a,a===n?r:`junction`);return}re(e,t,n,r)}function me(e,t,n,r,i){if(t===n)return;let a=Math.min(t,n),o=Math.max(t,n);for(let t=a+1;t<o;t++)pe(t,e,r,`line`);if(c){pe(t,e,r,`line`),pe(n,e,r,`line`);return}let s=n>t,l=i?s?`└`:`┘`:s?`┌`:`┐`,u=i?s?`┐`:`┌`:s?`┘`:`└`;pe(t,e,l,`corner`),pe(n,e,u,`corner`)}let he=new Map,ge=new Map;o.relationships.forEach((e,t)=>{let n=k.get(e.from),r=k.get(e.to);if(!n||!r)return;let i=va(e.type,e.markerAt),a=i.dashed?le:se,o=i.dashed?ue:ce,s=new Set([e.from,e.to]),{fromCX:l,toCX:u,fromAnchorX:d,toAnchorX:f}=fe(t,n,r),p=n.y+n.height-1,m=r.y;if(p<m){let e=oe(l,p+1,m-1,s),n=e!==l;if(e>=j&&Vt(N,e+2,M),n){let n=p+1,r=m-1;he.set(t,{routeX:e,exitY:n,entryY:r,fromAnchorX:d,toAnchorX:f,clearSide:e>l?`right`:`left`});let s=Math.min(d,e),u=Math.max(d,e);for(let e=s;e<=u;e++)I(e,n,a,`line`);!c&&n<(N[0]?.length??0)&&(d<e?(I(d,n,`└`,`corner`),I(e,n,`┐`,`corner`)):(I(d,n,`┘`,`corner`),I(e,n,`┌`,`corner`)));for(let t=n+1;t<=r;t++)I(e,t,o,`line`);if(e!==f){let t=Math.min(e,f),n=Math.max(e,f);for(let e=t;e<=n;e++)I(e,r,a,`line`);!c&&r<(N[0]?.length??0)&&(e<f?(I(e,r,`└`,`corner`),I(f,r,`┐`,`corner`)):(I(e,r,`┘`,`corner`),I(f,r,`┌`,`corner`)))}if(i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`;I(f,r,ya(i.type,c,e?`up`:`down`),`arrow`)}if(i.markerAt===`from`){let e=ya(i.type,c,`down`);I(d,p+1,e,`arrow`)}}else{let e=p+Math.floor((m-p)/2),t=l!==d,n=u!==f;me(p+1,d,l,a,!0);for(let n=p+(t?2:1);n<=e;n++)I(l,n,o,`line`);if(l!==u&&e<(N[0]?.length??0)){let t=Math.min(l,u),n=Math.max(l,u);for(let r=t;r<=n;r++)I(r,e,a,`line`);c||(I(l,e,l<u?`└`:`┘`,`corner`),I(u,e,l<u?`┐`:`┌`,`corner`))}for(let t=e+1;t<m-+!!n;t++)I(u,t,o,`line`);if(me(m-1,f,u,a,!1),i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`;I(f,m-1,ya(i.type,c,e?`up`:`down`),`arrow`)}i.markerAt===`from`&&I(d,p+1,ya(i.type,c,`down`),`arrow`)}}else if(r.y+r.height-1<n.y){let e=n.y,t=r.y+r.height-1,s=t+Math.floor((e-t)/2),p=l!==d,m=u!==f;me(e-1,d,l,a,!1);for(let t=e-(p?2:1);t>=s;t--)I(l,t,o,`line`);if(l!==u){let e=Math.min(l,u),t=Math.max(l,u);for(let n=e;n<=t;n++)I(n,s,a,`line`);!c&&s>=0&&s<M&&(I(l,s,l<u?`┌`:`┐`,`corner`),I(u,s,l<u?`┘`:`└`,`corner`))}for(let e=s-1;e>t+ +!!m;e--)I(u,e,o,`line`);if(me(t+1,f,u,a,!0),i.markerAt===`from`){let t=ya(i.type,c,`up`),n=e-1;for(let e=0;e<t.length;e++)I(d-Math.floor(t.length/2)+e,n,t[e],`arrow`)}if(i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`?`down`:`up`,n=ya(i.type,c,e),r=t+1;for(let e=0;e<n.length;e++)I(f-Math.floor(n.length/2)+e,r,n[e],`arrow`)}}else{let s=r.y+r.height-1,m=Math.min(l,u),h=Math.max(l,u),g=Math.max(p,s);for(let[t,r]of k.entries())t!==e.from&&t!==e.to&&r.y===n.y&&r.x<h+1&&r.x+r.width>m&&(g=Math.max(g,r.y+r.height-1));let _=g+2;ge.set(t,_),Vt(N,j,_+1),Rt(P,j,_+1);let v=l!==d,y=u!==f;me(p+1,d,l,a,!0);for(let e=p+(v?2:1);e<=_;e++)I(l,e,o,`line`);for(let e=m;e<=h;e++)I(e,_,a,`line`);for(let e=_-1;e>=s+(y?2:1);e--)I(u,e,o,`line`);if(me(s+1,f,u,a,!0),i.markerAt===`from`){let e=ya(i.type,c,`down`),t=p+1;for(let n=0;n<e.length;n++)I(d-Math.floor(e.length/2)+n,t,e[n],`arrow`)}if(i.markerAt===`to`){let e=i.type===`inheritance`||i.type===`realization`,t=ya(i.type,c,e?`down`:`up`),n=r.y+r.height;for(let e=0;e<t.length;e++)I(f-Math.floor(t.length/2)+e,n,t[e],`arrow`)}}});function _e(e,t,n,r){let{fromCX:i,toCX:a}=fe(e,t,n),o=t.y+t.height-1,s=n.y;if(o<s){let t=he.get(e);if(t){let e=t.exitY+1,n=t.entryY;if(n>=e)return{idealMidX:t.clearSide===`right`?t.routeX+1+Math.floor(r/2):t.routeX-1-Math.ceil(r/2),baseMidY:Math.floor((e+n)/2)};let i=Math.abs(t.routeX-t.fromAnchorX);return Math.abs(t.toAnchorX-t.routeX)>=i?{idealMidX:Math.floor((t.routeX+t.toAnchorX)/2),baseMidY:t.entryY}:{idealMidX:Math.floor((t.fromAnchorX+t.routeX)/2),baseMidY:t.exitY}}return{idealMidX:Math.floor((i+a)/2),baseMidY:Math.floor((o+1+s-1)/2)}}if(n.y+n.height-1<t.y){let e=n.y+n.height-1;return{idealMidX:Math.floor((i+a)/2),baseMidY:Math.floor((e+1+t.y-1)/2)}}return{idealMidX:Math.floor((i+a)/2),baseMidY:ge.get(e)??Math.max(o,n.y+n.height-1)+2}}function ve(e,t,n,r,i,a,o){let s=r,c=Math.floor(a/2),l=e.y+e.height-1,u=t.y,d=!1;for(let e=0;e<a;e++){let t=s-c+e,r=n-Math.floor(i/2),a=Math.max(0,r);for(let e=a;e<a+i;e++)if(ae(e,t,o)){d=!0;break}if(d)break}if(d){let e=l+1,t=u-1;for(let r=e;r<=t;r++){let e=!0,t=n-Math.floor(i/2),a=Math.max(0,t);for(let t=a;t<a+i;t++)if(ae(t,r,o)){e=!1;break}if(e){s=r;break}}}return s}let R=new Map,ye=[];for(let[e,t]of o.relationships.entries()){if(!t.label)continue;let n=k.get(t.from),r=k.get(t.to);if(!n||!r)continue;let i=Z(t.label),a=Math.floor(i.length/2),o=Math.max(...i.map(B))+2,{idealMidX:s,baseMidY:c}=_e(e,n,r,o),l=new Set([t.from,t.to]),u=ve(n,r,s,c,o,i.length,l);R.set(t,u);let d=Math.max(0,s-Math.floor(o/2));ye.push({rel:t,idealMidX:s,naturalStart:d,naturalEnd:d+o-1,rowStart:u-a,rowEnd:u+a})}let be=ga(ye,e=>({idealMid:e.idealMidX,start:e.naturalStart,end:e.naturalEnd,rowStart:e.rowStart,rowEnd:e.rowEnd})),xe=new Map;for(let e of ye){let t=be.get(e);t&&xe.set(e.rel,t)}for(let[e,t]of o.relationships.entries()){let n=k.get(t.from),r=k.get(t.to);if(!(!n||!r)&&t.label){let i=Z(t.label),{idealMidX:a}=_e(e,n,r,Math.max(...i.map(e=>B(e)))+2),o=R.get(t)-Math.floor(i.length/2),s=xe.get(t);for(let e=0;e<i.length;e++){let t=o+e,n=i[e],r=It(` ${n} `),{start:c,cells:l}=ba(Math.max(0,a-Math.floor(r.length/2)),r,n,Math.max(0,s.left),s.right),u=c+l.length;u>0&&t>=0&&(Vt(N,Math.max(u,1),Math.max(t+1,1)),Rt(P,Math.max(u,1),Math.max(t+1,1)));for(let e=0;e<l.length;e++){let n=c+e;n>=0&&t>=0&&re(n,t,l[e],`text`)}}}}return Ta(s,k,N,c,re),Jt(N,{roleCanvas:P,colorMode:r,theme:i,linkCanvas:ie})}function Ca(e){let t=new Map;if(e.notes.length===0)return{diagram:e,notesById:t};let n=(e,n)=>{let r=`note ${e}`;return t.set(r,n),{id:r,label:n.text,attributes:[],methods:[]}},r=new Set(e.classes.map(e=>e.id)),i=[];for(let t of e.classes){i.push(t);for(let[r,a]of e.notes.entries())a.forClass===t.id&&i.push(n(r,a))}for(let[t,a]of e.notes.entries())(a.forClass===void 0||!r.has(a.forClass))&&i.push(n(t,a));return{diagram:{...e,classes:i},notesById:t}}function wa(e,t){for(let[n,r]of e){if(r.forClass===void 0)continue;let e=t.get(r.forClass);e!==void 0&&t.set(n,e)}}function Ta(e,t,n,r,i){if(e.size===0)return;let a=gr(`rounded`,r),o=r?`.`:`╌`;for(let[r,s]of e){let e=t.get(r);if(!e)continue;let c=e.x+e.width-1,l=e.y+e.height-1;if(i(e.x,e.y,a.tl,`border`),i(c,e.y,a.tr,`border`),i(e.x,l,a.bl,`border`),i(c,l,a.br,`border`),s.forClass===void 0)continue;let u=t.get(s.forClass);if(!u||u.x+u.width>e.x||u.y!==e.y)continue;let d=u.y+1;for(let t=u.x+u.width;t<e.x;t++)n[t]?.[d]===` `&&i(t,d,o,`line`)}}function Ea(e){let t=e.trim();return t.length>=2&&(t[0]===`"`&&t[t.length-1]===`"`||t[0]===`'`&&t[t.length-1]===`'`)?t.slice(1,-1):t}var Da=`"graph <dir>"/"flowchart <dir>" (dir: TD, TB, LR, BT, RL), "stateDiagram-v2", "sequenceDiagram", "classDiagram", "erDiagram", "xychart-beta"`;function Oa(e){let t=e.trim().toLowerCase();if(/^sequence/.test(t))return`sequenceDiagram`;if(/^class/.test(t))return`classDiagram`;if(/^er/.test(t))return`erDiagram`;if(/^xychart/.test(t))return`xychart-beta`;if(/^state/.test(t))return`stateDiagram-v2`}var ka=/^(?:[\w-]+@)?<?(?:-{2,}|={2,}|-\.+-?|~{3,})/;function Aa(e){let t=[];for(let n of e)n.forEach((e,n)=>{if(n===0&&t.length>0&&ka.test(e.text)){let n=t[t.length-1];t[t.length-1]={text:`${n.text} ${e.text}`,line:n.line}}else t.push(e)});return t}function ja(e){let t=D(e.split(`
8
+ `).map(e=>e.trim())),n=Aa(g(e));if(n.length===0)throw Error(`Empty mermaid diagram`);let r=n[0],i=/^stateDiagram(-v2)?\s*$/i.test(r.text)?Na(n):Ma(n);return i.initConfig=t,i}function Ma(e){let t=e[0];if(t===void 0)throw Error(`parseFlowchart called with no lines`);let n=t.text,r=n.match(/^(?:graph|flowchart)\s+(TD|TB|LR|BT|RL)\s*$/i);if(!r){let e=n.match(/^(?:graph|flowchart)\b\s*(.*)$/i);if(e){let r=e[1].trim();throw Error(r.length>0?`Line ${t.line}: Invalid direction "${r}" in header "${n}". Expected one of: TD, TB, LR, BT, RL.`:`Line ${t.line}: Missing direction in header "${n}". Expected e.g. "graph TD" or "flowchart LR" — one of: TD, TB, LR, BT, RL.`)}let r=Oa(n),i=r&&r.toLowerCase()!==n.trim().toLowerCase()?` Did you mean "${r}"?`:``;throw Error(`Line ${t.line}: Invalid mermaid header: "${n}".${i} Supported headers: ${Da}.`)}let i={direction:b(r[1]),nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map,interactions:new Map},a=[];for(let t=1;t<e.length;t++){let n=e[t].text;if(re(n,i)||ie(n,i)||I(n,i))continue;if(/^click\s+/i.test(n)){Ga(n,i);continue}if(qa(n,i))continue;let r=n.match(/^linkStyle\s+(default|[\d,\s]+)\s+(.+)$/);if(r){let e=r[1].trim(),t=P(r[2]);if(e==="default")i.linkStyles.set(`default`,{...i.linkStyles.get(`default`),...t});else{let n=e.split(`,`).map(e=>parseInt(e.trim(),10));for(let e of n)isNaN(e)||i.linkStyles.set(e,{...i.linkStyles.get(e),...t})}continue}let o=n.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(o&&a.length>0){a[a.length-1].direction=b(o[1]);continue}let s=n.match(/^subgraph\s+(.+)$/);if(s){let e=s[1].trim(),t=e.match(/^([^\s[]+)\s*\[(.+)\]$/),n,r;t?(n=t[1],r=M(Ea(t[2]))):(r=M(Ea(e)),n=r.replace(/\s+/g,`_`).replace(/[^\p{L}\p{N}_-]/gu,``));let i={id:n,label:r,nodeIds:[],children:[]};a.push(i);continue}if(n===`end`){let e=a.pop();e&&(a.length>0?a[a.length-1].children.push(e):i.subgraphs.push(e));continue}Za(n,i,a)}return i}function Na(e){let t={direction:`TD`,nodes:new Map,edges:[],subgraphs:[],classDefs:new Map,classAssignments:new Map,nodeStyles:new Map,linkStyles:new Map,interactions:new Map},n=[],r=new Set,i=0,a=0;for(let o=1;o<e.length;o++){let s=e[o].text,c=s.match(/^direction\s+(TD|TB|LR|BT|RL)\s*$/i);if(c){n.length>0?n[n.length-1].direction=b(c[1]):t.direction=b(c[1]);continue}let l=s.match(/^linkStyle\s+(default|[\d,\s]+)\s+(.+)$/);if(l){let e=l[1].trim(),n=P(l[2]);if(e==="default")t.linkStyles.set(`default`,{...t.linkStyles.get(`default`),...n});else{let r=e.split(`,`).map(e=>parseInt(e.trim(),10));for(let e of r)isNaN(e)||t.linkStyles.set(e,{...t.linkStyles.get(e),...n})}continue}if(qa(s,t))continue;let u=s.match(/^state\s+(?:"([^"]+)"\s+as\s+)?([\w\p{L}]+)\s*\{$/u);if(u){let e=u[1]??u[2],i=u[2],a={id:i,label:e,nodeIds:[],children:[]};n.push(a),r.add(i),t.nodes.delete(i);continue}if(s===`}`){let e=n.pop();e&&(n.length>0?n[n.length-1].children.push(e):t.subgraphs.push(e));continue}let d=s.match(/^state\s+"([^"]+)"\s+as\s+([\w\p{L}]+)\s*$/u);if(d){let e=M(d[1]),r=d[2];Pa(t,n,{id:r,label:e,shape:`rounded`});continue}let f=s.match(/^(\[\*\]|[\w\p{L}-]+)\s*(?:([\w-]+)@)?-->\s*(\[\*\]|[\w\p{L}-]+)(?:\s*:\s*(.+))?$/u);if(f){let e=f[1],o=f[2],s=f[3],c=f[4]?.trim(),l=c?M(c):void 0;e===`[*]`?(i++,e=`_start${i>1?i:``}`,Pa(t,n,{id:e,label:``,shape:`state-start`})):r.has(e)||Fa(t,n,e),s===`[*]`?(a++,s=`_end${a>1?a:``}`,Pa(t,n,{id:s,label:``,shape:`state-end`})):r.has(s)||Fa(t,n,s),t.edges.push({source:e,target:s,label:l,style:`solid`,hasArrowStart:!1,hasArrowEnd:!0,...o===void 0?{}:{id:o}});continue}let p=s.match(/^([\w\p{L}-]+)\s*:\s*(.+)$/u);if(p){let e=p[1];Pa(t,n,{id:e,label:M(p[2].trim()),shape:`rounded`});continue}}return t}function Pa(e,t,n){if(e.nodes.has(n.id)||e.nodes.set(n.id,n),t.length>0){let e=t[t.length-1];e.nodeIds.includes(n.id)||e.nodeIds.push(n.id)}}function Fa(e,t,n){if(!e.nodes.has(n))Pa(e,t,{id:n,label:n,shape:`rounded`});else if(t.length>0){let e=t[t.length-1];e.nodeIds.includes(n)||e.nodeIds.push(n)}}var Ia=/^(<|o|x)?(-{2,}|={2,}|-\.+-|~{3,})(>|o|x)?(?:\|([^|]*)\|)?/,La=new Set([`--`,`==`]);function Ra(e){if(e===`o`)return`circle`;if(e===`x`)return`cross`}var za=/^(<|o|x)?(--|-\.|==)\s+(.+?)\s+(-{2,}[>ox]|={2,}[>ox]|\.+-[>ox]|-{3,}|={3,}|-\.+-)/,Ba=[{regex:/^([\w\p{L}-]+)\(\(\(((?:"[^"]*"|(?!\)\)\)).)+)\)\)\)/u,shape:`doublecircle`},{regex:/^([\w\p{L}-]+)\(\[((?:"[^"]*"|(?!\]\)).)+)\]\)/u,shape:`stadium`},{regex:/^([\w\p{L}-]+)\(\(((?:"[^"]*"|(?!\)\)).)+)\)\)/u,shape:`circle`},{regex:/^([\w\p{L}-]+)\[\[((?:"[^"]*"|(?!\]\]).)+)\]\]/u,shape:`subroutine`},{regex:/^([\w\p{L}-]+)\[\(((?:"[^"]*"|(?!\)\]).)+)\)\]/u,shape:`cylinder`},{regex:/^([\w\p{L}-]+)\[\/((?:"[^"]*"|(?![\\/]\]).)+)([\\/])\]/u,shape:e=>e===`\\`?`trapezoid`:`parallelogram`},{regex:/^([\w\p{L}-]+)\[\\((?:"[^"]*"|(?![\\/]\]).)+)([\\/])\]/u,shape:e=>e===`/`?`trapezoid-alt`:`parallelogram-alt`},{regex:/^([\w\p{L}-]+)>((?:"[^"]*"|(?!\]).)+)\]/u,shape:`asymmetric`},{regex:/^([\w\p{L}-]+)\{\{((?:"[^"]*"|(?!\}\}).)+)\}\}/u,shape:`hexagon`},{regex:/^([\w\p{L}-]+)\[((?:"[^"]*"|(?!\]).)+)\]/u,shape:`rectangle`},{regex:/^([\w\p{L}-]+)\(((?:"[^"]*"|(?!\)).)+)\)/u,shape:`rounded`},{regex:/^([\w\p{L}-]+)\{((?:"[^"]*"|(?!\}).)+)\}/u,shape:`diamond`}],Va=/^([\w\p{L}]+(?:-[\w\p{L}]+)*)/u,Ha=/^([\w\p{L}-]+)(?=@\{)/u;function Ua(e){if(e.shape)return Ye(e.shape)??`rectangle`;if(e.icon!==void 0||e.img!==void 0)switch(e.form?.toLowerCase()){case`circle`:return`circle`;case`rounded`:return`rounded`;default:return`rectangle`}return`rectangle`}function Wa(e,t){return t.label!==void 0&&t.label.length>0?t.label:t.icon?t.icon:t.img?t.img:e}function Ga(t,n){e(t,n.interactions)}var Ka=/^([\w-]+)(?=@\{)/;function qa(e,t){let n=e.match(Ka);if(!n||!t.edges.some(e=>e.id===n[1]))return!1;let r=et(e.slice(n[1].length));return r?(Ja(t,n[1],Xe(r.body)),!0):!1}function Ja(e,t,n){for(let r of e.edges)r.id===t&&(n.animate!==void 0&&(r.animate=n.animate.toLowerCase()!==`false`),n.animation!==void 0&&(r.animate=!0))}var Ya=/^:::([\w][\w-]*)/,Xa=/^([\w\p{L}-]+):::([\w][\w-]*)/u;function Za(e,t,n){let r=e.trim(),i=Qa(r,t,n);if(!i||i.ids.length===0)return;r=i.remaining.trim();let a=i.ids;for(;r.length>0;){let e,i,o,s,c,l,u,d=r.match(/^([\w-]+)@(?=[-=<~ox])/);d&&(u=d[1],r=r.slice(d[0].length));let f=r.match(Ia),p=f?.[2],m=f?.[1],h=f?.[3];if(f&&p!==void 0&&!(m===void 0&&h===void 0&&La.has(p))){e=m!==void 0,c=Ra(m);let t=f[4]?.trim();s=t?M(t):void 0,r=r.slice(f[0].length).trim(),i=no(p),o=h!==void 0,l=Ra(h)}else{let t=r.match(za);if(!t)break;e=!!t[1],c=Ra(t[1]);let n=t[3].trim();s=n?M(n):void 0;let a=t[2],u=t[4];r=r.slice(t[0].length).trim(),i=ro(a,u),l=Ra(u.slice(-1)),o=u.endsWith(`>`)||l!==void 0}let g=Qa(r,t,n);if(!g||g.ids.length===0)break;r=g.remaining.trim();for(let n of a)for(let r of g.ids)t.edges.push({source:n,target:r,label:s,style:i,hasArrowStart:e,hasArrowEnd:o,...c===void 0?{}:{startMarker:c},...l===void 0?{}:{endMarker:l},...u===void 0?{}:{id:u}});a=g.ids}}function Qa(e,t,n){let r=$a(e,t,n);if(!r)return null;let i=[r.id],a=r.remaining.trim();for(;a.startsWith(`&`);){a=a.slice(1).trim();let e=$a(a,t,n);if(!e)break;i.push(e.id),a=e.remaining.trim()}return{ids:i,remaining:a}}function $a(e,t,n){let r=null,i=e,a,o=i.match(Xa);o&&(a=o[2],i=o[1]+i.slice(o[0].length));let s=i.match(Ha);if(s){let e=s[1],a=et(i.slice(e.length));if(a){let o=Xe(a.body);eo(t,n,{id:e,label:M(Wa(e,o)),shape:Ua(o)}),r=e,i=i.slice(e.length+a.length)}}if(r===null)for(let{regex:e,shape:a}of Ba){let o=i.match(e);if(o){r=o[1];let e=M(o[2]),s=typeof a==`function`?a(o[3]??``):a;eo(t,n,{id:r,label:e,shape:s}),i=i.slice(o[0].length);break}}if(r===null){let e=i.match(Va);e&&(r=e[1],t.nodes.has(r)||eo(t,n,{id:r,label:r,shape:`rectangle`}),i=i.slice(e[0].length))}if(r===null)return null;a&&t.classAssignments.set(r,a);let c=i.match(Ya);return c&&(t.classAssignments.set(r,c[1]),i=i.slice(c[0].length)),{id:r,remaining:i}}function eo(e,t,n){e.nodes.has(n.id)||e.nodes.set(n.id,n),to(t,n.id)}function to(e,t){if(e.length>0){let n=e[e.length-1];n.nodeIds.includes(t)||n.nodeIds.push(t)}}function no(e){return e.startsWith(`~`)?`invisible`:e.includes(`.`)?`dotted`:e.startsWith(`=`)?`thick`:`solid`}function ro(e,t){return e.includes(`.`)||t.includes(`.`)?`dotted`:e.startsWith(`=`)||t.startsWith(`=`)?`thick`:`solid`}function io(e,t){let n=new Set,r=new Map;for(let t of e.subgraphs)ao(t,n,r);let i=new Map,a=0;for(let[t,r]of e.nodes){if(n.has(t))continue;let e={name:t,displayLabel:N(r.label),shape:r.shape,index:a,gridCoord:null,drawingCoord:null,drawing:null,drawn:!1,styleClassName:``,styleClass:Ln};i.set(t,e),a++}let o=[...i.values()],s=[];for(let t of e.edges){let a=t.source,o=t.target;if(n.has(a)){let t=r.get(a),n=t?co(t,e,`exit`):void 0;n&&(a=n)}if(n.has(o)){let t=r.get(o),n=t?co(t,e,`entry`):void 0;n&&(o=n)}let c=i.get(a),l=i.get(o);!c||!l||s.push({from:c,to:l,text:t.label?N(t.label):``,path:[],labelLine:[],startDir:{x:0,y:0},endDir:{x:0,y:0},style:t.style,hasArrowStart:t.hasArrowStart,hasArrowEnd:t.hasArrowEnd,...t.startMarker===void 0?{}:{startMarker:t.startMarker},...t.endMarker===void 0?{}:{endMarker:t.endMarker}})}let c=[];for(let t of e.subgraphs)lo(t,null,i,c,e);uo(e.subgraphs,c,i);let l=e.classDefs.get(`default`);if(l)for(let e of i.values())e.styleClassName=`default`,e.styleClass={name:`default`,styles:l};for(let[t,n]of e.classAssignments){let r=i.get(t),a=e.classDefs.get(n);r&&a&&(r.styleClassName=n,r.styleClass={name:n,styles:l?{...l,...a}:a})}return{nodes:o,edges:s,canvas:V(0,0),roleCanvas:Lt(0,0),grid:zn(),columnWidth:new Map,rowHeight:new Map,subgraphs:c,config:t,offsetX:0,offsetY:0,bundles:[]}}function ao(e,t,n){t.add(e.id),n.set(e.id,e);for(let r of e.children)ao(r,t,n)}function oo(e,t){for(let n of e.nodeIds)t.add(n);for(let n of e.children)oo(n,t)}function so(e,t){let n=new Set;if(oo(e,n),n.size===0)return!0;let r=t=>n.has(t)||t===e.id;return!t.edges.some(e=>r(e.source)!==r(e.target))}function co(e,t,n){let r=new Set;if(oo(e,r),r.size===0)return;let i=[...t.nodes.keys()].filter(e=>r.has(e));if(i.length===0)return;let a=i.filter(e=>n===`entry`?!t.edges.some(t=>t.target===e&&r.has(t.source)):!t.edges.some(t=>t.source===e&&r.has(t.target))),o=a.length>0?a:i;return n===`entry`?o[0]:o[o.length-1]}function lo(e,t,n,r,i){let a;e.direction&&so(e,i)&&(a=e.direction===`LR`||e.direction===`RL`?`LR`:`TD`);let o={name:e.label,nodes:[],parent:t,children:[],minX:0,minY:0,maxX:0,maxY:0,direction:a};for(let t of e.nodeIds){let e=n.get(t);e&&o.nodes.push(e)}r.push(o);for(let t of e.children){let e=lo(t,o,n,r,i);o.children.push(e);for(let t of e.nodes)o.nodes.includes(t)||o.nodes.push(t)}return o}function uo(e,t,n){let r=new Map;po(e,t,r);let i=new Map;function a(e){let t=r.get(e);if(t){for(let t of e.children)a(t);for(let n of e.nodeIds)i.has(n)||i.set(n,t)}}for(let t of e)a(t);for(let e of t)e.nodes=e.nodes.filter(t=>{let r;for(let[e,i]of n)if(i===t){r=e;break}if(!r)return!1;let a=i.get(r);return!a||fo(e,a)})}function fo(e,t){let n=t;for(;n!==null;){if(n===e)return!0;n=n.parent}return!1}function po(e,t,n){let r=[];function i(e){for(let t of e)r.push(t),i(t.children)}i(e);for(let e=0;e<r.length&&e<t.length;e++){let i=r[e],a=t[e];!i||!a||n.set(i,a)}}function mo(e,t,n,r,i={}){let a=x(ja(e),i.direction);t.graphDirection=a.direction===`LR`||a.direction===`RL`?`LR`:`TD`;let o=io(a,t);Yr(o),ta(o);let s=i.hyperlinks?ut(o,a.interactions):void 0;return a.direction===`BT`&&(Xt(o.canvas),Zt(o.roleCanvas),s&&ct(s)),Jt(o.canvas,{roleCanvas:o.roleCanvas,colorMode:n,theme:r,linkCanvas:s})}var ho={xychart:(e,t,n,r)=>cn(e,t,n,r),er:(e,t,n,r)=>ca(e,t,n,r),sequence:(e,t,n,r)=>ma(e,t,n,r),class:(e,t,n,r,i)=>Sa(e,t,n,r,i),flowchart:(e,t,n,r,i)=>mo(e,t,n,r,i)},go=/\x1b\[[0-9;]*m/g;function _o(e){let t=e.split(`
9
+ `),n=t.reduce((e,t)=>Math.max(e,at(t.replace(go,``)).length),0),r=String(Math.max(0,t.length-1)).length,i=` `.repeat(r+1);return[i+Array.from({length:n},(e,t)=>String(Math.floor(t/10)%10)).join(``),i+Array.from({length:n},(e,t)=>String(t%10)).join(``),...t.map((e,t)=>`${String(t).padStart(r,` `)} ${e}`)].join(`
10
+ `)}function vo(e,t={}){let n={useAscii:t.useAscii??!1,paddingX:t.paddingX??5,paddingY:t.paddingY??5,boxBorderPadding:t.boxBorderPadding??1,graphDirection:`TD`},r=t.colorMode===`auto`||t.colorMode===void 0?ht():t.colorMode,i={...pt,...t.theme},a=ho[v(e)](e,n,r,i,{hyperlinks:t.hyperlinks??!1,direction:t.direction});return t.showCoords?_o(a):a}var yo=vo;exports.DEFAULT_ASCII_THEME=pt,exports.detectColorMode=ht,exports.diagramColorsToAsciiTheme=mt,exports.renderMermaidASCII=vo,exports.renderMermaidAscii=yo;
11
11
  //# sourceMappingURL=ascii.cjs.map