diff --git a/.gitignore b/.gitignore index 94490b5..fc083cf 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,9 @@ e2e/playwright-report/ .codex .firecrawl/ + +# Refactored test stack stays local for now +.env.refactored +.env.refactored.example +docker-compose.refactored.yml +refactored-ped-ai/ diff --git a/migrations/1777507197626_add-mermaid-diagrams.js b/migrations/1777507197626_add-mermaid-diagrams.js new file mode 100644 index 0000000..0351811 --- /dev/null +++ b/migrations/1777507197626_add-mermaid-diagrams.js @@ -0,0 +1,24 @@ +/** + * Mermaid Diagrams — per-user clinical pathway / algorithm diagrams. + * Source is plain Mermaid text; rendered to SVG client-side. Source + * encrypted at rest like personal_notes so a row dump stays useless + * without the app key. + */ + +exports.up = (pgm) => { + pgm.createTable('mermaid_diagrams', { + id: { type: 'serial', primaryKey: true }, + user_id: { type: 'integer', notNull: true, references: 'users(id)', onDelete: 'CASCADE' }, + title: { type: 'text', notNull: true }, + source: { type: 'text', notNull: true, default: '' }, + notes: { type: 'text', notNull: true, default: '' }, + created_at: { type: 'timestamptz', notNull: true, default: pgm.func('NOW()') }, + updated_at: { type: 'timestamptz', notNull: true, default: pgm.func('NOW()') }, + }); + pgm.createIndex('mermaid_diagrams', 'user_id'); + pgm.createIndex('mermaid_diagrams', ['user_id', 'updated_at']); +}; + +exports.down = (pgm) => { + pgm.dropTable('mermaid_diagrams'); +}; diff --git a/public/components/diagrams.html b/public/components/diagrams.html new file mode 100644 index 0000000..6f5d965 --- /dev/null +++ b/public/components/diagrams.html @@ -0,0 +1,235 @@ +
Generating answer...
'; - var wrap = document.getElementById('assistant-messages'); - if (wrap) wrap.scrollTop = wrap.scrollHeight; - } - - function handleEvent(type, data) { - if (type === 'status') { - updateLoadingMessage(loading, data.message || 'Working...'); - return; - } - if (type === 'sources') { - streamSources = data.sources || []; - renderSources(streamSources); - return; - } - if (type === 'token') { - partial += data.token || ''; - renderPartial(false); - return; - } - if (type === 'done') { - doneData = data || {}; - streamSuggestions = doneData.suggestions || []; - return; - } - if (type === 'error') throw new Error(data.error || 'Assistant stream failed'); - } - - var reader = response.body.getReader(); - while (true) { - var chunk = await reader.read(); - if (chunk.done) break; - buffer += decoder.decode(chunk.value, { stream: true }); - var parts = buffer.split('\n\n'); - buffer = parts.pop() || ''; - parts.forEach(function (part) { - var parsed = parseSseEvent(part); - if (parsed) handleEvent(parsed.type, parsed.data); - }); - } - if (buffer.trim()) { - var tail = parseSseEvent(buffer); - if (tail) handleEvent(tail.type, tail.data); - } - if (!doneData) { - updateLoadingMessage(loading, 'Stream ended early. Retrying without streaming...'); - doneData = await fetchAssistantFallback(payload); - } - + async function fetchAssistantResponse(payload, loading) { + updateLoadingMessage(loading, 'Looking up sources...'); + var data = await fetchAssistantFallback(payload); setBusy(false, 'Ready'); - var answer = (doneData && (doneData.answer || doneData.markdown)) || partial; - lastAnswer = answer || ''; - lastSources = (doneData && (doneData.sources || doneData.citations)) || streamSources; - replaceLoadingMessage(loading, lastAnswer, lastSources, streamSuggestions); + lastAnswer = data.answer || ''; + lastSources = data.sources || []; + replaceLoadingMessage(loading, lastAnswer, lastSources, data.suggestions || []); renderSources(lastSources); - if (doneData && doneData.model) { + if (data.model) { var label = document.getElementById('assistant-model-label'); - if (label) label.textContent = 'Chat: ' + doneData.model; + if (label) label.textContent = 'Chat: ' + data.model; } } @@ -236,18 +161,6 @@ import { escapeAttr, escapeHtml, renderAssistantMarkdown, stripSourcesSection } return data; } - function parseSseEvent(block) { - var type = 'message'; - var data = ''; - String(block || '').split(/\r?\n/).forEach(function (line) { - if (line.indexOf('event:') === 0) type = line.substring(6).trim(); - if (line.indexOf('data:') === 0) data += line.substring(5).trim(); - }); - if (!data) return null; - try { return { type: type, data: JSON.parse(data) }; } - catch (e) { return null; } - } - function updateLoadingMessage(row, detail) { if (!row) return; var el = row.querySelector('.assistant-thinking-detail'); @@ -284,7 +197,7 @@ import { escapeAttr, escapeHtml, renderAssistantMarkdown, stripSourcesSection } if (!bubble) return; row.classList.remove('assistant-loading-msg'); bubble.classList.remove('assistant-thinking'); - bubble.innerHTML = rawHtml ? sanitize(String(content || '')) : renderMarkdown(content, sources || []); + bubble.innerHTML = renderAssistantBubbleHtml(content, sources || [], rawHtml); if (suggestions && suggestions.length) bubble.appendChild(renderSuggestionButtons(suggestions)); renderEmbeddedBlocks(bubble); var wrap = document.getElementById('assistant-messages'); @@ -292,6 +205,16 @@ import { escapeAttr, escapeHtml, renderAssistantMarkdown, stripSourcesSection } messages.push({ role: 'assistant', content: content, sources: sources || [] }); } + function renderAssistantBubbleHtml(content, sources, rawHtml) { + if (rawHtml) return sanitize(String(content || '')); + try { + return renderMarkdown(content, sources || []); + } catch (e) { + console.warn('[clinical-assistant] markdown render failed:', e && e.message ? e.message : e); + return '' + escapeHtml(String(content || '')).replace(/\n/g, '
') + '
b&&(b=h),C=v*v*k,T=Math.max(b/C,C/x),T>w){v-=h;break}w=T}s.push(u={value:v,dice:m Aa))l.moveTo(0,0);else if(v>t1-Aa)l.moveTo(m*Kf(g),m*Tc(g)),l.arc(0,0,m,g,y,!x),p>Aa&&(l.moveTo(p*Kf(y),p*Tc(y)),l.arc(0,0,p,y,g,x));else{var b=g,T=y,w=g,k=y,C=v,E=v,S=s.apply(this,arguments)/2,L=S>Aa&&(i?+i.apply(this,arguments):m0(p*p+m*m)),M=s3(AN(m-p)/2,+r.apply(this,arguments)),I=M,A=M,_,D;if(L>Aa){var N=_N(L/p*Tc(S)),R=_N(L/m*Tc(S));(C-=N*2)>Aa?(N*=x?1:-1,w+=N,k-=N):(C=0,w=k=(g+y)/2),(E-=R*2)>Aa?(R*=x?1:-1,b+=R,T-=R):(E=0,b=T=(g+y)/2)}var B=m*Kf(b),O=m*Tc(b),$=p*Kf(k),z=p*Tc(k);if(M>Aa){var F=m*Kf(T),V=m*Tc(T),H=p*Kf(w),X=p*Tc(w),W;if(v "),t.result!==null&&g.kind!==t.kind&&or(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):or(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||f}function Ize(t){var e=t.position,r,i,n,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(Zn(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!bo(s);)s=t.input.charCodeAt(++t.position);for(i=t.input.slice(r,t.position),n=[],i.length<1&&or(t,"directive name must not be less than one character in length");s!==0;){for(;S0(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!wu(s));break}if(wu(s))break;for(r=t.position;s!==0&&!bo(s);)s=t.input.charCodeAt(++t.position);n.push(t.input.slice(r,t.position))}s!==0&&BI(t),ld.call(_ne,i)?_ne[i](t,i,n):J3(t,'unknown document directive "'+i+'"')}if(Zn(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,Zn(t,!0,-1)):a&&or(t,"directives end mark is expected"),A1(t,t.lineIndent-1,Z3,!1,!0),Zn(t,!0,-1),t.checkLineBreaks&&yze.test(t.input.slice(e,t.position))&&J3(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&r5(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,Zn(t,!0,-1));return}if(t.position ${this.parser.parseInline(t)} An error occurred: ${t.replace(/\\n|\n/g," ${n.tokens?.map(i).join("")}0;){if(h=s2(s,l,r),h===u)return i[n]=s,i[a]=l,e(i);if(h>0)s=Math.floor(s/h)*h,l=Math.ceil(l/h)*h;else if(h<0)s=Math.ceil(s*h)/h,l=Math.floor(l*h)/h;else break;u=h}return t},t}function vc(){var t=N2();return t.copy=function(){return jw(t,vc())},Yf.apply(t,arguments),wIe(t)}var Pee=P(()=>{"use strict";zf();aN();R2();Oee();o(wIe,"linearish");o(vc,"linear")});function oN(t,e){t=t.slice();var r=0,i=t.length-1,n=t[r],a=t[i],s;return a0))return u;let h;do u.push(h=new Date(+a)),e(a,l),t(a);while(hzi(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,l)=>{if(s>=s)if(l<0)for(;++l<=0;)for(;e(s,-1),!a(s););else for(;--l>=0;)for(;e(s,1),!a(s););}),r&&(n.count=(a,s)=>(lN.setTime(+a),cN.setTime(+s),t(lN),t(cN),Math.floor(r(lN,cN))),n.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?n.filter(i?s=>i(s)%a===0:s=>n.count(0,s)%a===0):n)),n}var lN,cN,Lh=P(()=>{"use strict";lN=new Date,cN=new Date;o(zi,"timeInterval")});var pu,Fee,uN=P(()=>{"use strict";Lh();pu=zi(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);pu.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?zi(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):pu);Fee=pu.range});var Xo,$ee,hN=P(()=>{"use strict";Lh();Xo=zi(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),$ee=Xo.range});var Rh,EIe,Xw,SIe,fN=P(()=>{"use strict";Lh();Rh=zi(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),EIe=Rh.range,Xw=zi(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),SIe=Xw.range});var Nh,AIe,Kw,_Ie,dN=P(()=>{"use strict";Lh();Nh=zi(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),AIe=Nh.range,Kw=zi(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),_Ie=Kw.range});var Sl,DIe,M2,LIe,Qw,RIe,pN=P(()=>{"use strict";Lh();Sl=zi(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),DIe=Sl.range,M2=zi(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),LIe=M2.range,Qw=zi(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),RIe=Qw.range});function h0(t){return zi(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function f0(t){return zi(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var xc,jf,Zw,Jw,gu,e3,t3,Gee,NIe,IIe,MIe,OIe,PIe,BIe,d0,Zg,Vee,qee,Xf,Wee,Uee,Hee,FIe,$Ie,zIe,GIe,VIe,qIe,mN=P(()=>{"use strict";Lh();o(h0,"timeWeekday");xc=h0(0),jf=h0(1),Zw=h0(2),Jw=h0(3),gu=h0(4),e3=h0(5),t3=h0(6),Gee=xc.range,NIe=jf.range,IIe=Zw.range,MIe=Jw.range,OIe=gu.range,PIe=e3.range,BIe=t3.range;o(f0,"utcWeekday");d0=f0(0),Zg=f0(1),Vee=f0(2),qee=f0(3),Xf=f0(4),Wee=f0(5),Uee=f0(6),Hee=d0.range,FIe=Zg.range,$Ie=Vee.range,zIe=qee.range,GIe=Xf.range,VIe=Wee.range,qIe=Uee.range});var Ih,WIe,r3,UIe,gN=P(()=>{"use strict";Lh();Ih=zi(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),WIe=Ih.range,r3=zi(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),UIe=r3.range});var Ko,HIe,bc,YIe,yN=P(()=>{"use strict";Lh();Ko=zi(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());Ko.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:zi(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});HIe=Ko.range,bc=zi(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());bc.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:zi(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});YIe=bc.range});function jee(t,e,r,i,n,a){let s=[[Xo,1,1e3],[Xo,5,5*1e3],[Xo,15,15*1e3],[Xo,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[n,1,36e5],[n,3,3*36e5],[n,6,6*36e5],[n,12,12*36e5],[i,1,864e5],[i,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function l(h,f,d){let p=f{"use strict";zf();uN();hN();fN();dN();pN();mN();gN();yN();o(jee,"ticker");[XIe,KIe]=jee(bc,r3,d0,Qw,Kw,Xw),[vN,xN]=jee(Ko,Ih,xc,Sl,Nh,Rh)});var i3=P(()=>{"use strict";uN();hN();fN();dN();pN();mN();gN();yN();Xee()});function bN(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function TN(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function O2(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function kN(t){var e=t.dateTime,r=t.date,i=t.time,n=t.periods,a=t.days,s=t.shortDays,l=t.months,u=t.shortMonths,h=P2(n),f=B2(n),d=P2(a),p=B2(a),m=P2(s),g=B2(s),y=P2(l),v=B2(l),x=P2(u),b=B2(u),T={a:B,A:O,b:$,B:z,c:null,d:tte,e:tte,f:xMe,g:DMe,G:RMe,H:gMe,I:yMe,j:vMe,L:ste,m:bMe,M:TMe,p:F,q:V,Q:nte,s:ate,S:kMe,u:CMe,U:wMe,V:EMe,w:SMe,W:AMe,x:null,X:null,y:_Me,Y:LMe,Z:NMe,"%":ite},w={a:H,A:X,b:W,B:Z,c:null,d:rte,e:rte,f:PMe,g:HMe,G:jMe,H:IMe,I:MMe,j:OMe,L:lte,m:BMe,M:FMe,p:Y,q:ae,Q:nte,s:ate,S:$Me,u:zMe,U:GMe,V:VMe,w:qMe,W:WMe,x:null,X:null,y:UMe,Y:YMe,Z:XMe,"%":ite},k={a:M,A:I,b:A,B:_,c:D,d:Jee,e:Jee,f:fMe,g:Zee,G:Qee,H:ete,I:ete,j:lMe,L:hMe,m:oMe,M:cMe,p:L,q:sMe,Q:pMe,s:mMe,S:uMe,u:tMe,U:rMe,V:iMe,w:eMe,W:nMe,x:N,X:R,y:Zee,Y:Qee,Z:aMe,"%":dMe};T.x=C(r,T),T.X=C(i,T),T.c=C(e,T),w.x=C(r,w),w.X=C(i,w),w.c=C(e,w);function C(J,ee){return function(re){var te=[],be=-1,de=0,Ee=J.length,Ne,we,Te;for(re instanceof Date||(re=new Date(+re));++be{"use strict";k1();d1();o(ZBe,"copyObject");Il=ZBe});function JBe(t,e){for(var r=-1,i=Array(t);++r
"},r),lt.lineBreakRegex.test(t)))return t;let i=t.split(" ").filter(Boolean),n=[],a="";return i.forEach((s,l)=>{let u=Ra(`${s} `,r),h=Ra(a,r);if(u>e){let{hyphenatedStrings:p,remainingWord:m}=zFe(s,e,"-",r);n.push(a,...p),a=m}else h+u>=e?(n.push(a),a=s):a=[a,s].filter(Boolean).join(" ");l+1===i.length&&n.push(a)}),n.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),zFe=u1((t,e,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);let n=[...t],a=[],s="";return n.forEach((l,u)=>{let h=`${s}${l}`;if(Ra(h,i)>=e){let d=u+1,p=n.length===d,m=`${h}${r}`;a.push(p?h:m),s=""}else s=h}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",i)=>`${t}${e}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`);o(H3,"calculateTextHeight");o(Ra,"calculateTextWidth");CI=u1((t,e)=>{let{fontSize:r=12,fontFamily:i="Arial",fontWeight:n=400}=e;if(!t)return{width:0,height:0};let[,a]=$s(r),s=["sans-serif",i],l=t.split(lt.lineBreakRegex),u=[],h=Ze("body");if(!h.remove)return{width:0,height:0,lineHeight:0};let f=h.append("svg");for(let p of s){let m=0,g={width:0,height:0,lineHeight:0};for(let y of l){let v=FFe();v.text=y||gI;let x=$Fe(f,v).style("font-size",a).style("font-weight",n).style("font-family",p),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),m=Math.round(b.height),g.height+=m,g.lineHeight=Math.round(Math.max(g.lineHeight,m))}u.push(g)}f.remove();let d=isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1;return u[d]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),mI=class{constructor(e=!1,r){this.count=0;this.count=r?r.length:0,this.next=e?()=>this.count++:()=>Date.now()}static{o(this,"InitIDGenerator")}},GFe=o(function(t){return U3=U3||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),U3.innerHTML=t,unescape(U3.textContent)},"entityDecode");o(wI,"isDetailedError");VFe=o((t,e,r,i)=>{if(!i)return;let n=t.node()?.getBBox();n&&t.append("text").text(i).attr("text-anchor","middle").attr("x",n.x+n.width/2).attr("y",-r).attr("class",e)},"insertTitle"),$s=o(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");o(fi,"cleanAndMerge");Kt={assignWithDepth:Yi,wrapLabel:kI,calculateTextHeight:H3,calculateTextWidth:Ra,calculateTextDimensions:CI,cleanAndMerge:fi,detectInit:DFe,detectDirective:cne,isSubstringInArray:LFe,interpolateToCurve:yI,calcLabelPosition:MFe,calcCardinalityPosition:OFe,calcTerminalLabelPosition:PFe,formatUrl:RFe,getStylesFromArray:xI,generateId:bI,random:TI,runFunc:NFe,entityDecode:GFe,insertTitle:VFe,isLabelCoordinateInPath:qFe,parseFontSize:$s,InitIDGenerator:mI},fne=o(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let i=r.substring(1,r.length-1);return/^\+?\d+$/.test(i)?"\uFB02\xB0\xB0"+i+"\xB6\xDF":"\uFB02\xB0"+i+"\xB6\xDF"}),e},"encodeEntities"),zs=o(function(t){return t.replace(/fl°°/g,"").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),Cu=o((t,e,{counter:r=0,prefix:i,suffix:n},a)=>a||`${i?`${i}_`:""}${t}_${e}_${r}${n?`_${n}`:""}`,"getEdgeId");o(xi,"handleUndefinedAttr");o(qFe,"isLabelCoordinateInPath")});function _c(t,e,r,i,n){if(!e[t].width)if(r)e[t].text=kI(e[t].text,n,i),e[t].textLines=e[t].text.split(lt.lineBreakRegex).length,e[t].width=n,e[t].height=H3(e[t].text,i);else{let a=e[t].text.split(lt.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let l of a)e[t].width=Math.max(Ra(l,i),e[t].width),s=H3(l,i),e[t].height=e[t].height+s}}function yne(t,e,r,i,n){let a=new K3(n);a.data.widthLimit=r.data.widthLimit/Math.min(EI,i.length);for(let[s,l]of i.entries()){let u=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=u,u=l.image.Y+l.image.height);let h=l.wrap&&tr.wrap,f=Y3(tr);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",_c("label",l,h,f,a.data.widthLimit),l.label.Y=u+8,u=l.label.Y+l.label.height,l.type&&l.type.text!==""){l.type.text="["+l.type.text+"]";let g=Y3(tr);_c("type",l,h,g,a.data.widthLimit),l.type.Y=u+5,u=l.type.Y+l.type.height}if(l.descr&&l.descr.text!==""){let g=Y3(tr);g.fontSize=g.fontSize-2,_c("descr",l,h,g,a.data.widthLimit),l.descr.Y=u+20,u=l.descr.Y+l.descr.height}if(s==0||s%EI===0){let g=r.data.startx+tr.diagramMarginX,y=r.data.stopy+tr.diagramMarginY+u;a.setData(g,g,y,y)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+tr.diagramMarginX:a.data.startx,y=a.data.starty;a.setData(g,g,y,y)}a.name=l.alias;let d=n.db.getC4ShapeArray(l.alias),p=n.db.getC4ShapeKeys(l.alias);p.length>0&&gne(a,t,d,p),e=l.alias;let m=n.db.getBoundaries(e);m.length>0&&yne(t,e,a,m,n),l.alias!=="global"&&mne(t,l,a),r.data.stopy=Math.max(a.data.stopy+tr.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+tr.c4ShapeMargin,r.data.stopx),j3=Math.max(j3,r.data.stopx),X3=Math.max(X3,r.data.stopy)}}var j3,X3,pne,EI,tr,K3,SI,db,Y3,WFe,mne,gne,vo,dne,UFe,HFe,YFe,AI,vne=P(()=>{"use strict";Pr();dre();bt();uL();Vr();bL();Ut();kg();er();Xi();j3=0,X3=0,pne=4,EI=2;Jx.yy=a2;tr={},K3=class{static{o(this,"Bounds")}constructor(e){this.name="",this.data={},this.data.startx=void 0,this.data.stopx=void 0,this.data.starty=void 0,this.data.stopy=void 0,this.data.widthLimit=void 0,this.nextData={},this.nextData.startx=void 0,this.nextData.stopx=void 0,this.nextData.starty=void 0,this.nextData.stopy=void 0,this.nextData.cnt=0,SI(e.db.getConfig())}setData(e,r,i,n){this.nextData.startx=this.data.startx=e,this.nextData.stopx=this.data.stopx=r,this.nextData.starty=this.data.starty=i,this.nextData.stopy=this.data.stopy=n}updateVal(e,r,i,n){e[r]===void 0?e[r]=i:e[r]=n(i,e[r])}insert(e){this.nextData.cnt=this.nextData.cnt+1;let r=this.nextData.startx===this.nextData.stopx?this.nextData.stopx+e.margin:this.nextData.stopx+e.margin*2,i=r+e.width,n=this.nextData.starty+e.margin*2,a=n+e.height;(r>=this.data.widthLimit||i>=this.data.widthLimit||this.nextData.cnt>pne)&&(r=this.nextData.startx+e.margin+tr.nextLinePaddingX,n=this.nextData.stopy+e.margin*2,this.nextData.stopx=i=r+e.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=a=n+e.height,this.nextData.cnt=1),e.x=r,e.y=n,this.updateVal(this.data,"startx",r,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",i,Math.max),this.updateVal(this.data,"stopy",a,Math.max),this.updateVal(this.nextData,"startx",r,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",i,Math.max),this.updateVal(this.nextData,"stopy",a,Math.max)}init(e){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},SI(e.db.getConfig())}bumpLastMargin(e){this.data.stopx+=e,this.data.stopy+=e}},SI=o(function(t){Yi(tr,t),t.fontFamily&&(tr.personFontFamily=tr.systemFontFamily=tr.messageFontFamily=t.fontFamily),t.fontSize&&(tr.personFontSize=tr.systemFontSize=tr.messageFontSize=t.fontSize),t.fontWeight&&(tr.personFontWeight=tr.systemFontWeight=tr.messageFontWeight=t.fontWeight)},"setConf"),db=o((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),Y3=o(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),WFe=o(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");o(_c,"calcC4ShapeTextWH");mne=o(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=tr.c4ShapeMargin-35;let i=e.wrap&&tr.wrap,n=Y3(tr);n.fontSize=n.fontSize+2,n.fontWeight="bold";let a=Ra(e.label.text,n);_c("label",e,i,n,a),Ec.drawBoundary(t,e,tr)},"drawBoundary"),gne=o(function(t,e,r,i){let n=0;for(let a of i){n=0;let s=r[a],l=db(tr,s.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,s.typeC4Shape.width=Ra("\xAB"+s.typeC4Shape.text+"\xBB",l),s.typeC4Shape.height=l.fontSize+2,s.typeC4Shape.Y=tr.c4ShapePadding,n=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=n,n=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=n,n=s.image.Y+s.image.height);let u=s.wrap&&tr.wrap,h=tr.width-tr.c4ShapePadding*2,f=db(tr,s.typeC4Shape.text);if(f.fontSize=f.fontSize+2,f.fontWeight="bold",_c("label",s,u,f,h),s.label.Y=n+8,n=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let m=db(tr,s.typeC4Shape.text);_c("type",s,u,m,h),s.type.Y=n+5,n=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let m=db(tr,s.techn.text);_c("techn",s,u,m,h),s.techn.Y=n+5,n=s.techn.Y+s.techn.height}let d=n,p=s.label.width;if(s.descr&&s.descr.text!==""){let m=db(tr,s.typeC4Shape.text);_c("descr",s,u,m,h),s.descr.Y=n+20,n=s.descr.Y+s.descr.height,p=Math.max(s.label.width,s.descr.width),d=n-s.descr.textLines*5}p=p+tr.c4ShapePadding,s.width=Math.max(s.width||tr.width,p,tr.width),s.height=Math.max(s.height||tr.height,d,tr.height),s.margin=s.margin||tr.c4ShapeMargin,t.insert(s),Ec.drawC4Shape(e,s,tr)}t.bumpLastMargin(tr.c4ShapeMargin)},"drawC4ShapeArray"),vo=class{static{o(this,"Point")}constructor(e,r){this.x=e,this.y=r}},dne=o(function(t,e){let r=t.x,i=t.y,n=e.x,a=e.y,s=r+t.width/2,l=i+t.height/2,u=Math.abs(r-n),h=Math.abs(i-a),f=h/u,d=t.height/t.width,p=null;return i==a&&r"u"&&$h(t,e,null,!1,!1))&&(i!==""&&(i+=","+(t.condenseFlow?"":" ")),i+=t.dump);t.tag=n,t.dump="["+i+"]"}function Bne(t,e,r,i){var n="",a=t.tag,s,l,u;for(s=0,l=r.length;s tag resolver accepts not "'+u+'" style');t.dump=i}return!0}return!1}function $h(t,e,r,i,n,a,s){t.tag=null,t.dump=r,Fne(t,r,!1)||Fne(t,r,!0);var l=tae.call(t.dump),u=i,h;i&&(i=t.flowLevel<0||t.flowLevel>e);var f=l==="[object Object]"||l==="[object Array]",d,p;if(f&&(d=t.duplicates.indexOf(r),p=d!==-1),(t.tag!==null&&t.tag!=="?"||p||t.indent!==2&&e>0)&&(n=!1),p&&t.usedDuplicates[d])t.dump="*ref_"+d;else{if(f&&p&&!t.usedDuplicates[d]&&(t.usedDuplicates[d]=!0),l==="[object Object]")i&&Object.keys(t.dump).length!==0?(mGe(t,e,t.dump,n),p&&(t.dump="&ref_"+d+t.dump)):(pGe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object Array]")i&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?Bne(t,e-1,t.dump,n):Bne(t,e,t.dump,n),p&&(t.dump="&ref_"+d+t.dump)):(dGe(t,e,t.dump),p&&(t.dump="&ref_"+d+" "+t.dump));else if(l==="[object String]")t.tag!=="?"&&uGe(t,t.dump,e,a,u);else{if(l==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new xo("unacceptable kind of an object to dump "+l)}t.tag!==null&&t.tag!=="?"&&(h=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?h="!"+h:h.slice(0,18)==="tag:yaml.org,2002:"?h="!!"+h.slice(18):h="!<"+h+">",t.dump=h+" "+t.dump)}return!0}function gGe(t,e){var r=[],i=[],n,a;for(OI(t,r,i),n=0,a=i.length;n{"use strict";o($ne,"isNothing");o(JFe,"isObject");o(e$e,"toArray");o(t$e,"extend");o(r$e,"repeat");o(i$e,"isNegativeZero");n$e=$ne,a$e=JFe,s$e=e$e,o$e=r$e,l$e=i$e,c$e=t$e,ha={isNothing:n$e,isObject:a$e,toArray:s$e,repeat:o$e,isNegativeZero:l$e,extend:c$e};o(zne,"formatError");o(mb,"YAMLException$1");mb.prototype=Object.create(Error.prototype);mb.prototype.constructor=mb;mb.prototype.toString=o(function(e){return this.name+": "+zne(this,e)},"toString");xo=mb;o(_I,"getLine");o(DI,"padStart");o(u$e,"makeSnippet");h$e=u$e,f$e=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],d$e=["scalar","sequence","mapping"];o(p$e,"compileStyleAliases");o(m$e,"Type$1");hs=m$e;o(wne,"compileList");o(g$e,"compileMap");o(RI,"Schema$1");RI.prototype.extend=o(function(e){var r=[],i=[];if(e instanceof hs)i.push(e);else if(Array.isArray(e))i=i.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(i=i.concat(e.explicit));else throw new xo("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof hs))throw new xo("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new xo("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new xo("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),i.forEach(function(a){if(!(a instanceof hs))throw new xo("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var n=Object.create(RI.prototype);return n.implicit=(this.implicit||[]).concat(r),n.explicit=(this.explicit||[]).concat(i),n.compiledImplicit=wne(n,"implicit"),n.compiledExplicit=wne(n,"explicit"),n.compiledTypeMap=g$e(n.compiledImplicit,n.compiledExplicit),n},"extend");y$e=RI,v$e=new hs("tag:yaml.org,2002:str",{kind:"scalar",construct:o(function(t){return t!==null?t:""},"construct")}),x$e=new hs("tag:yaml.org,2002:seq",{kind:"sequence",construct:o(function(t){return t!==null?t:[]},"construct")}),b$e=new hs("tag:yaml.org,2002:map",{kind:"mapping",construct:o(function(t){return t!==null?t:{}},"construct")}),T$e=new y$e({explicit:[v$e,x$e,b$e]});o(k$e,"resolveYamlNull");o(C$e,"constructYamlNull");o(w$e,"isNull");E$e=new hs("tag:yaml.org,2002:null",{kind:"scalar",resolve:k$e,construct:C$e,predicate:w$e,represent:{canonical:o(function(){return"~"},"canonical"),lowercase:o(function(){return"null"},"lowercase"),uppercase:o(function(){return"NULL"},"uppercase"),camelcase:o(function(){return"Null"},"camelcase"),empty:o(function(){return""},"empty")},defaultStyle:"lowercase"});o(S$e,"resolveYamlBoolean");o(A$e,"constructYamlBoolean");o(_$e,"isBoolean");D$e=new hs("tag:yaml.org,2002:bool",{kind:"scalar",resolve:S$e,construct:A$e,predicate:_$e,represent:{lowercase:o(function(t){return t?"true":"false"},"lowercase"),uppercase:o(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:o(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});o(L$e,"isHexCode");o(R$e,"isOctCode");o(N$e,"isDecCode");o(I$e,"resolveYamlInteger");o(M$e,"constructYamlInteger");o(O$e,"isInteger");P$e=new hs("tag:yaml.org,2002:int",{kind:"scalar",resolve:I$e,construct:M$e,predicate:O$e,represent:{binary:o(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:o(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:o(function(t){return t.toString(10)},"decimal"),hexadecimal:o(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),B$e=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");o(F$e,"resolveYamlFloat");o($$e,"constructYamlFloat");z$e=/^[-+]?[0-9]+e/;o(G$e,"representYamlFloat");o(V$e,"isFloat");q$e=new hs("tag:yaml.org,2002:float",{kind:"scalar",resolve:F$e,construct:$$e,predicate:V$e,represent:G$e,defaultStyle:"lowercase"}),Gne=T$e.extend({implicit:[E$e,D$e,P$e,q$e]}),W$e=Gne,Vne=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),qne=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");o(U$e,"resolveYamlTimestamp");o(H$e,"constructYamlTimestamp");o(Y$e,"representYamlTimestamp");j$e=new hs("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:U$e,construct:H$e,instanceOf:Date,represent:Y$e});o(X$e,"resolveYamlMerge");K$e=new hs("tag:yaml.org,2002:merge",{kind:"scalar",resolve:X$e}),PI=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
+\r`;o(Q$e,"resolveYamlBinary");o(Z$e,"constructYamlBinary");o(J$e,"representYamlBinary");o(eze,"isBinary");tze=new hs("tag:yaml.org,2002:binary",{kind:"scalar",resolve:Q$e,construct:Z$e,predicate:eze,represent:J$e}),rze=Object.prototype.hasOwnProperty,ize=Object.prototype.toString;o(nze,"resolveYamlOmap");o(aze,"constructYamlOmap");sze=new hs("tag:yaml.org,2002:omap",{kind:"sequence",resolve:nze,construct:aze}),oze=Object.prototype.toString;o(lze,"resolveYamlPairs");o(cze,"constructYamlPairs");uze=new hs("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:lze,construct:cze}),hze=Object.prototype.hasOwnProperty;o(fze,"resolveYamlSet");o(dze,"constructYamlSet");pze=new hs("tag:yaml.org,2002:set",{kind:"mapping",resolve:fze,construct:dze}),Wne=W$e.extend({implicit:[j$e,K$e],explicit:[tze,sze,uze,pze]}),ld=Object.prototype.hasOwnProperty,Q3=1,Une=2,Hne=3,Z3=4,LI=1,mze=2,Ene=3,gze=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,yze=/[\x85\u2028\u2029]/,vze=/[,\[\]\{\}]/,Yne=/^(?:!|!!|![a-z\-]+!)$/i,jne=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;o(Sne,"_class");o(wu,"is_EOL");o(S0,"is_WHITE_SPACE");o(bo,"is_WS_OR_EOL");o(E1,"is_FLOW_INDICATOR");o(xze,"fromHexCode");o(bze,"escapedHexLen");o(Tze,"fromDecimalCode");o(Ane,"simpleEscapeSequence");o(kze,"charFromCodepoint");o(Xne,"setProperty");Kne=new Array(256),Qne=new Array(256);for(E0=0;E0<256;E0++)Kne[E0]=Ane(E0)?1:0,Qne[E0]=Ane(E0);o(Cze,"State$1");o(Zne,"generateError");o(or,"throwError");o(J3,"throwWarning");_ne={YAML:o(function(e,r,i){var n,a,s;e.version!==null&&or(e,"duplication of %YAML directive"),i.length!==1&&or(e,"YAML directive accepts exactly one argument"),n=/^([0-9]+)\.([0-9]+)$/.exec(i[0]),n===null&&or(e,"ill-formed argument of the YAML directive"),a=parseInt(n[1],10),s=parseInt(n[2],10),a!==1&&or(e,"unacceptable YAML version of the document"),e.version=i[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&J3(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:o(function(e,r,i){var n,a;i.length!==2&&or(e,"TAG directive accepts exactly two arguments"),n=i[0],a=i[1],Yne.test(n)||or(e,"ill-formed tag handle (first argument) of the TAG directive"),ld.call(e.tagMap,n)&&or(e,'there is a previously declared suffix for "'+n+'" tag handle'),jne.test(a)||or(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{or(e,"tag prefix is malformed: "+a)}e.tagMap[n]=a},"handleTagDirective")};o(od,"captureSegment");o(Dne,"mergeMappings");o(S1,"storeMappingPair");o(BI,"readLineBreak");o(Zn,"skipSeparationSpace");o(r5,"testDocumentSeparator");o(FI,"writeFoldedLines");o(wze,"readPlainScalar");o(Eze,"readSingleQuotedScalar");o(Sze,"readDoubleQuotedScalar");o(Aze,"readFlowCollection");o(_ze,"readBlockScalar");o(Lne,"readBlockSequence");o(Dze,"readBlockMapping");o(Lze,"readTagProperty");o(Rze,"readAnchorProperty");o(Nze,"readAlias");o(A1,"composeNode");o(Ize,"readDocument");o(Jne,"loadDocuments");o(Mze,"loadAll$1");o(Oze,"load$1");Pze=Mze,Bze=Oze,eae={loadAll:Pze,load:Bze},tae=Object.prototype.toString,rae=Object.prototype.hasOwnProperty,$I=65279,Fze=9,gb=10,$ze=13,zze=32,Gze=33,Vze=34,NI=35,qze=37,Wze=38,Uze=39,Hze=42,iae=44,Yze=45,e5=58,jze=61,Xze=62,Kze=63,Qze=64,nae=91,aae=93,Zze=96,sae=123,Jze=124,oae=125,fs={};fs[0]="\\0";fs[7]="\\a";fs[8]="\\b";fs[9]="\\t";fs[10]="\\n";fs[11]="\\v";fs[12]="\\f";fs[13]="\\r";fs[27]="\\e";fs[34]='\\"';fs[92]="\\\\";fs[133]="\\N";fs[160]="\\_";fs[8232]="\\L";fs[8233]="\\P";eGe=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],tGe=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;o(rGe,"compileStyleMap");o(iGe,"encodeHex");nGe=1,yb=2;o(aGe,"State");o(Rne,"indentString");o(II,"generateNextLine");o(sGe,"testImplicitResolving");o(t5,"isWhitespace");o(vb,"isPrintable");o(Nne,"isNsCharOrWhitespace");o(Ine,"isPlainSafe");o(oGe,"isPlainSafeFirst");o(lGe,"isPlainSafeLast");o(pb,"codePointAt");o(lae,"needIndentIndicator");cae=1,MI=2,uae=3,hae=4,w1=5;o(cGe,"chooseScalarStyle");o(uGe,"writeScalar");o(Mne,"blockHeader");o(One,"dropEndingNewline");o(hGe,"foldString");o(Pne,"foldLine");o(fGe,"escapeString");o(dGe,"writeFlowSequence");o(Bne,"writeBlockSequence");o(pGe,"writeFlowMapping");o(mGe,"writeBlockMapping");o(Fne,"detectType");o($h,"writeNode");o(gGe,"getDuplicateReferences");o(OI,"inspectNode");o(yGe,"dump$1");vGe=yGe,xGe={dump:vGe};o(zI,"renamed");cd=Gne,ud=eae.load,eFt=eae.loadAll,tFt=xGe.dump,rFt=zI("safeLoad","load"),iFt=zI("safeLoadAll","loadAll"),nFt=zI("safeDump","dump")});function WI(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function yae(t){_0=t}function Ei(t,e=""){let r=typeof t=="string"?t:t.source,i={replace:o((n,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(Gs.caret,"$1"),r=r.replace(n,s),i},"replace"),getRegex:o(()=>new RegExp(r,e),"getRegex")};return i}function Eu(t,e){if(e){if(Gs.escapeTest.test(t))return t.replace(Gs.escapeReplace,dae)}else if(Gs.escapeTestNoEncode.test(t))return t.replace(Gs.escapeReplaceNoEncode,dae);return t}function pae(t){try{t=encodeURI(t).replace(Gs.percentDecode,"%")}catch{return null}return t}function mae(t,e){let r=t.replace(Gs.findPipe,(a,s,l)=>{let u=!1,h=s;for(;--h>=0&&l[h]==="\\";)u=!u;return u?"|":" |"}),i=r.split(Gs.splitPipe),n=0;if(i[0].trim()||i.shift(),i.length>0&&!i.at(-1)?.trim()&&i.pop(),e)if(i.length>e)i.splice(e);else for(;i.length
+`:"'+(r?n:Eu(n,!0))+`
+`}blockquote({tokens:t}){return`"+(r?n:Eu(n,!0))+`
+${this.parser.parse(t)}
+`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`
+`}list(t){let e=t.ordered,r=t.start,i="";for(let s=0;s
+
+`+e+`
+`+i+`
+`}tablerow({text:t}){return`
+${t}
+`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`${r}>
+`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${Eu(t,!0)}`}br(t){return"
"}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let i=this.parser.parseInline(r),n=pae(t);if(n===null)return i;t=n;let a='"+i+"",a}image({href:t,title:e,text:r,tokens:i}){i&&(r=this.parser.parseInline(i,this.parser.textRenderer));let n=pae(t);if(n===null)return Eu(r);t=n;let a=`",a}text(t){return"tokens"in t&&t.tokens?this.parser.parseInline(t.tokens):"escaped"in t&&t.escaped?t.text:Eu(t.text)}},ZI=class{static{o(this,"$")}strong({text:t}){return t}em({text:t}){return t}codespan({text:t}){return t}del({text:t}){return t}html({text:t}){return t}text({text:t}){return t}link({text:t}){return""+t}image({text:t}){return""+t}br(){return""}},Gh=class qI{static{o(this,"l")}options;renderer;textRenderer;constructor(e){this.options=e||_0,this.options.renderer=this.options.renderer||new o5,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new ZI}static parse(e,r){return new qI(r).parse(e)}static parseInline(e,r){return new qI(r).parseInline(e)}parse(e,r=!0){let i="";for(let n=0;n
"+Eu(r.message+"",!0)+"
";return e?Promise.resolve(i):i}if(e)return Promise.reject(r);throw r}}},A0=new tVe;o(bi,"d");bi.options=bi.setOptions=function(t){return A0.setOptions(t),bi.defaults=A0.defaults,yae(bi.defaults),bi};bi.getDefaults=WI;bi.defaults=_0;bi.use=function(...t){return A0.use(...t),bi.defaults=A0.defaults,yae(bi.defaults),bi};bi.walkTokens=function(t,e){return A0.walkTokens(t,e)};bi.parseInline=A0.parseInline;bi.Parser=Gh;bi.parser=Gh.parse;bi.Renderer=o5;bi.TextRenderer=ZI;bi.Lexer=zh;bi.lexer=zh.lex;bi.Tokenizer=s5;bi.Hooks=kb;bi.parse=bi;sFt=bi.options,oFt=bi.setOptions,lFt=bi.use,cFt=bi.walkTokens,uFt=bi.parseInline,hFt=Gh.parse,fFt=zh.lex});function rVe(t,{markdownAutoWrap:e}){let i=t.replace(/
/g,`
+`).replace(/\n{2,}/g,`
+`);return Z4(i)}function Dae(t){return t.split(/\\n|\n|
/gi).map(e=>e.trim().match(/<[^>]+>|[^\s<>]+/g)?.map(r=>({content:r,type:"normal"}))??[])}function Lae(t,e={}){let r=rVe(t,e),i=bi.lexer(r),n=[[]],a=0;function s(l,u="normal"){l.type==="text"?l.text.split(`
+`).forEach((f,d)=>{d!==0&&(a++,n.push([])),f.split(" ").forEach(p=>{p=p.replace(/'/g,"'"),p&&n[a].push({content:p,type:u})})}):l.type==="strong"||l.type==="em"?l.tokens.forEach(h=>{s(h,l.type)}):l.type==="html"&&n[a].push({content:l.text,type:"normal"})}return o(s,"processNode"),i.forEach(l=>{l.type==="paragraph"?l.tokens?.forEach(u=>{s(u)}):l.type==="html"?n[a].push({content:l.text,type:"normal"}):n[a].push({content:l.raw,type:"normal"})}),n}function Rae(t){return t?`
")}
").replace(/ /g," "):n.text.replace(/\n */g,"
"):n.type==="strong"?`${n.tokens?.map(i).join("")}`:n.type==="em"?`${n.tokens?.map(i).join("")}`:n.type==="paragraph"?`
/g,"
")),p=s?Lae(d.replace("
","
"),f):Dae(d),m=oVe(u,t,p,e?h:!1,!l);if(l){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ze(m).attr("style",g)}else{let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");Ze(m).select("rect").attr("style",g.replace(/background:/g,"fill:"));let y=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ze(m).select("text").attr("style",y)}return i?Ze(m).selectAll("tspan.text-outer-tspan").classed("title-row",!0):Ze(m).selectAll("tspan.text-outer-tspan").classed("row",!0),m}},"createText")});async function u5(t,e){let r=t.getElementsByTagName("img");if(!r||r.length===0)return;let i=e.replace(/]*>/g,"").trim()==="";await Promise.all([...r].map(n=>new Promise(a=>{function s(){if(n.style.display="flex",n.style.flexDirection="column",i){let l=ge().fontSize?ge().fontSize:window.getComputedStyle(document.body).fontSize,u=5,[h=fr.fontSize]=$s(l),f=h*u+"px";n.style.minWidth=f,n.style.maxWidth=f}else n.style.width="100%";a(n)}o(s,"setupImage"),setTimeout(()=>{n.complete&&s()}),n.addEventListener("error",s),n.addEventListener("load",s)})))}var rM=P(()=>{"use strict";Ut();wa();er();o(u5,"configureLabelImages")});function rr(t){let e=t.map((r,i)=>`${i===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Ml(t,e,r,i,n,a){let s=[],u=r-t,h=i-e,f=u/a,d=2*Math.PI/f,p=e+h/2;for(let m=0;m<=50;m++){let g=m/50,y=t+g*u,v=p+n*Math.sin(d*(y-t));s.push({x:y,y:v})}return s}function D0(t,e,r,i,n,a){let s=[],l=n*Math.PI/180,f=(a*Math.PI/180-l)/(i-1);for(let d=0;du.tagName==="path"),r=document.createElementNS("http://www.w3.org/2000/svg","path"),i=e.map(u=>u.getAttribute("d")).filter(u=>u!==null).join(" ");r.setAttribute("d",i);let n=e.find(u=>u.getAttribute("fill")!=="none"),a=e.find(u=>u.getAttribute("stroke")!=="none"),s=o((u,h)=>u?.getAttribute(h)??void 0,"getAttr");if(n){let u={fill:s(n,"fill"),"fill-opacity":s(n,"fill-opacity")??"1"};Object.entries(u).forEach(([h,f])=>{f&&r.setAttribute(h,f)})}if(a){let u={stroke:s(a,"stroke"),"stroke-width":s(a,"stroke-width")??"1","stroke-opacity":s(a,"stroke-opacity")??"1"};Object.entries(u).forEach(([h,f])=>{f&&r.setAttribute(h,f)})}let l=document.createElementNS("http://www.w3.org/2000/svg","g");return l.appendChild(r),l}var vt,h5,at,mt,zt=P(()=>{"use strict";To();Ut();Sr();Pr();Vr();er();rM();vt=o(async(t,e,r)=>{let i,n=e.useHtmlLabels||ls(ge()?.htmlLabels);r?i=r:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",xi(e.labelStyle)),l;e.label===void 0?l="":l=typeof e.label=="string"?e.label:e.label[0];let u=!!e.icon||!!e.img,h=e.labelType==="markdown",f=await Vi(s,Tr(zs(l),ge()),{useHtmlLabels:n,width:e.width||ge().flowchart?.wrappingWidth,classes:h?"markdown-node-label":"",style:e.labelStyle,addSvgBackground:u,markdown:h},ge()),d=f.getBBox(),p=(e?.padding??0)/2;if(n){let m=f.children[0],g=Ze(f);await u5(m,l),d=m.getBoundingClientRect(),g.attr("width",d.width),g.attr("height",d.height)}return n?s.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"):s.attr("transform","translate(0, "+-d.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:d,halfPadding:p,label:s}},"labelHelper"),h5=o(async(t,e,r)=>{let i=r.useHtmlLabels??Or(ge()),n=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await Vi(n,Tr(zs(e),ge()),{useHtmlLabels:i,width:r.width||ge()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),l=r.padding/2;if(Or(ge())){let u=a.children[0],h=Ze(a);s=u.getBoundingClientRect(),h.attr("width",s.width),h.attr("height",s.height)}return i?n.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):n.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&n.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),n.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:l,label:n}},"insertLabel"),at=o((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),mt=o((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");o(rr,"createPathFromPoints");o(Ml,"generateFullSineWavePoints");o(D0,"generateCirclePoints");o(iM,"mergePaths")});function cVe(t,e){return t.intersect(e)}var Gae,Vae=P(()=>{"use strict";o(cVe,"intersectNode");Gae=cVe});function uVe(t,e,r,i){var n=t.x,a=t.y,s=n-i.x,l=a-i.y,u=Math.sqrt(e*e*l*l+r*r*s*s),h=Math.abs(e*r*s/u);i.x
"):p,e.labelStyle,!0,!0),y=g.children[0],v=Ze(g);d=y.getBoundingClientRect(),v.attr("width",d.width),v.attr("height",d.height);let x=(e.padding||0)/2;Ze(g).attr("transform","translate( "+(d.width>m.width?0:(m.width-d.width)/2)+", "+(m.height+x+5)+")"),Ze(f).attr("transform","translate( "+(d.width
").length,d.innerHTML.includes("")&&(f+=d.innerHTML.split("]*>/g,"").trim()==="";await Promise.all([...m].map(y=>new Promise(v=>{function x(){if(y.style.display="flex",y.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,w=parseInt(b,10)*5+"px";y.style.minWidth=w,y.style.maxWidth=w}else y.style.width="100%";v(y)}o(x,"setupImage"),setTimeout(()=>{y.complete&&x()}),y.addEventListener("error",x),y.addEventListener("load",x)})))}h=d.getBoundingClientRect(),p.attr("width",h.width),p.attr("height",h.height)}else{i.includes("font-weight: bolder")&&Ze(u).selectAll("tspan").attr("font-weight",""),f=u.children.length;let d=u.children[0];(u.textContent===""||u.textContent.includes(">"))&&(d.textContent=l[0]+l.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),l[1]===" "&&(d.textContent=d.textContent[0]+" "+d.textContent.substring(1))),d.textContent==="undefined"&&(d.textContent=""),h=u.getBBox()}return n.attr("transform","translate(0,"+(-h.height/(2*f)+r)+")"),h.height}var Ale=P(()=>{"use strict";Pr();Sr();zt();er();Ut();To();Vr();o(Sle,"textHelper");o(E5,"addText")});async function _le(t,e){let r=ge(),{themeVariables:i}=r,{useGradient:n}=i,a=r.class.padding??12,s=a,l=e.useHtmlLabels??ls(r.htmlLabels)??!0,u=e;u.annotations=u.annotations??[],u.members=u.members??[],u.methods=u.methods??[];let{shapeSvg:h,bbox:f}=await Sle(t,e,r,l,s),{labelStyles:d,nodeStyles:p}=tt(e);e.labelStyle=d,e.cssStyles=u.styles||"";let m=u.styles?.join(";")||p||"";e.cssStyles||(e.cssStyles=m.replaceAll("!important","").split(";"));let g=u.members.length===0&&u.methods.length===0&&!r.class?.hideEmptyMembersBox,y=rt.svg(h),v=st(e,{});e.look!=="handDrawn"&&(v.roughness=0,v.fillStyle="solid");let x=Math.max(e.width??0,f.width),b=Math.max(e.height??0,f.height),T=(e.height??0)>f.height;u.members.length===0&&u.methods.length===0?b+=s:u.members.length>0&&u.methods.length===0&&(b+=s*2);let w=-x/2,k=-b/2,C=g?a*2:u.members.length===0&&u.methods.length===0?-a:0;T&&(C=a*2);let E=y.rectangle(w-a,k-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0),x+2*a,b+2*a+C,v),S=h.insert(()=>E,":first-child");S.attr("class","basic label-container outer-path");let L=S.node().getBBox(),M=h.select(".annotation-group").node().getBBox().height-(g?a/2:0)||0,I=h.select(".label-group").node().getBBox().height-(g?a/2:0)||0,A=h.select(".members-group").node().getBBox().height-(g?a/2:0)||0,_=(M+I+k+a-(k-a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0)))/2;if(h.selectAll(".text").each((D,N,R)=>{let B=Ze(R[N]),O=B.attr("transform"),$=0;if(O){let H=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(O);H&&($=parseFloat(H[2]))}let z=$+k+a-(g?a:u.members.length===0&&u.methods.length===0?-a/2:0);if(B.attr("class").includes("methods-group")){let V=Math.max(A,s/2);T?z=Math.max(_,M+I+V+k+s*2+a)+s*2:z=M+I+V+k+s*4+a}u.members.length===0&&u.methods.length===0&&r.class?.hideEmptyMembersBox&&(u.annotations.length>0?z=$-s:z=$),l||(z-=4);let F=w;(B.attr("class").includes("label-group")||B.attr("class").includes("annotation-group"))&&(F=-B.node()?.getBBox().width/2||0,h.selectAll("text").each(function(V,H,X){window.getComputedStyle(X[H]).textAnchor==="middle"&&(F=0)})),B.attr("transform",`translate(${F}, ${z})`)}),u.members.length>0||u.methods.length>0||g){let D=M+I+k+a,N=y.line(L.x,D,L.x+L.width,D+.001,v);h.insert(()=>N).attr("class",`divider${e.look==="neo"&&!n?" neo-line":""}`).attr("style",m)}if(g||u.members.length>0||u.methods.length>0){let D=M+I+A+k+s*2+a,N=y.line(L.x,T?Math.max(_,D):D,L.x+L.width,(T?Math.max(_,D):D)+.001,v);h.insert(()=>N).attr("class",`divider${e.look==="neo"&&!n?" neo-line":""}`).attr("style",m)}if(u.look!=="handDrawn"&&h.selectAll("path").attr("style",m),S.select(":nth-child(2)").attr("style",m),h.selectAll(".divider").select("path").attr("style",m),e.labelStyle?h.selectAll("span").attr("style",e.labelStyle):h.selectAll("span").attr("style",m),!l){let D=RegExp(/color\s*:\s*([^;]*)/),N=D.exec(m);if(N){let R=N[0].replace("color","fill");h.selectAll("tspan").attr("style",R)}else if(d){let R=D.exec(d);if(R){let B=R[0].replace("color","fill");h.selectAll("tspan").attr("style",B)}}}return at(e,S),e.intersect=function(D){return et.rect(e,D)},h}var Dle=P(()=>{"use strict";zt();Ut();Pr();Yt();Ht();Xt();Ale();Vr();o(_le,"classBox")});async function Lle(t,e){let{labelStyles:r,nodeStyles:i}=tt(e);e.labelStyle=r;let n=e,a=e,s=20,l=20,u="verifyMethod"in e,h=mt(e),{themeVariables:f}=ge(),{borderColorArray:d,requirementEdgeLabelBackground:p}=f,m=t.insert("g").attr("class",h).attr("id",e.domId??e.id),g;u?g=await Wh(m,`<<${n.type}>>`,0,e.labelStyle):g=await Wh(m,"<<Element>>",0,e.labelStyle);let y=g,v=await Wh(m,n.name,y,e.labelStyle+"; font-weight: bold;");if(y+=v+l,u){let L=await Wh(m,`${n.requirementId?`ID: ${n.requirementId}`:""}`,y,e.labelStyle);y+=L;let M=await Wh(m,`${n.text?`Text: ${n.text}`:""}`,y,e.labelStyle);y+=M;let I=await Wh(m,`${n.risk?`Risk: ${n.risk}`:""}`,y,e.labelStyle);y+=I,await Wh(m,`${n.verifyMethod?`Verification: ${n.verifyMethod}`:""}`,y,e.labelStyle)}else{let L=await Wh(m,`${a.type?`Type: ${a.type}`:""}`,y,e.labelStyle);y+=L,await Wh(m,`${a.docRef?`Doc Ref: ${a.docRef}`:""}`,y,e.labelStyle)}let x=(m.node()?.getBBox().width??200)+s,b=(m.node()?.getBBox().height??200)+s,T=-x/2,w=-b/2,k=rt.svg(m),C=st(e,{});e.look!=="handDrawn"&&(C.roughness=0,C.fillStyle="solid");let E=k.rectangle(T,w,x,b,C),S=m.insert(()=>E,":first-child");if(S.attr("class","basic label-container outer-path").attr("style",i),d?.length){let L=e.colorIndex??0;m.attr("data-color-id",`color-${L%d.length}`)}if(m.selectAll(".label").each((L,M,I)=>{let A=Ze(I[M]),_=A.attr("transform"),D=0,N=0;if(_){let $=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(_);$&&(D=parseFloat($[1]),N=parseFloat($[2]))}let R=N-b/2,B=T+s/2;(M===0||M===1)&&(B=D),A.attr("transform",`translate(${B}, ${R+s})`)}),y>g+v+l){let L=w+g+v+l,M;if(e.look==="neo"){let _=[[T,L],[T+x,L],[T+x,L+.001],[T,L+.001]];M=k.polygon(_,C)}else M=k.line(T,L,T+x,L,C);m.insert(()=>M).attr("class","divider")}return at(e,S),e.intersect=function(L){return et.rect(e,L)},i&&e.look!=="handDrawn"&&(p||d?.length)&&m.selectAll("path").attr("style",i),m}async function Wh(t,e,r,i=""){if(e==="")return 0;let n=t.insert("g").attr("class","label").attr("style",i),a=ge(),s=a.htmlLabels??!0,l=await Vi(n,r2(zs(e)),{width:Ra(e,a)+50,classes:"markdown-node-label",useHtmlLabels:s,style:i},a),u;if(s){let h=l.children[0],f=Ze(l);u=h.getBoundingClientRect(),f.attr("width",u.width),f.attr("height",u.height)}else{let h=l.children[0];for(let f of h.children)i&&f.setAttribute("style",i);u=l.getBBox(),u.height+=6}return n.attr("transform",`translate(${-u.width/2},${-u.height/2+r})`),u.height}var Rle=P(()=>{"use strict";zt();Xt();Ht();Yt();er();Ut();To();Pr();o(Lle,"requirementBox");o(Wh,"addText")});async function Nle(t,e,{config:r}){let{labelStyles:i,nodeStyles:n}=tt(e);e.labelStyle=i||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:l,bbox:u,label:h}=await vt(t,e,mt(e)),f=e.padding||10,d="",p;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(d=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),p=l.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",d).attr("target","_blank"));let m={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,y;p?{label:g,bbox:y}=await h5(p,"ticket"in e&&e.ticket||"",m):{label:g,bbox:y}=await h5(l,"ticket"in e&&e.ticket||"",m);let{label:v,bbox:x}=await h5(l,"assigned"in e&&e.assigned||"",m);e.width=s;let b=10,T=e?.width||0,w=Math.max(y.height,x.height)/2,k=Math.max(u.height+b*2,e?.height||0)+w,C=-T/2,E=-k/2;h.attr("transform","translate("+(f-T/2)+", "+(-w-u.height/2)+")"),g.attr("transform","translate("+(f-T/2)+", "+(-w+u.height/2)+")"),v.attr("transform","translate("+(f+T/2-x.width-2*a)+", "+(-w+u.height/2)+")");let S,{rx:L,ry:M}=e,{cssStyles:I}=e;if(e.look==="handDrawn"){let A=rt.svg(l),_=st(e,{}),D=L||M?A.path(Co(C,E,T,k,L||0),_):A.rectangle(C,E,T,k,_);S=l.insert(()=>D,":first-child"),S.attr("class","basic label-container").attr("style",I||null)}else{S=l.insert("rect",":first-child"),S.attr("class","basic label-container __APA__").attr("style",n).attr("rx",L??5).attr("ry",M??5).attr("x",C).attr("y",E).attr("width",T).attr("height",k);let A="priority"in e&&e.priority;if(A){let _=l.append("line"),D=C+2,N=E+Math.floor((L??0)/2),R=E+k-Math.floor((L??0)/2);_.attr("x1",D).attr("y1",N).attr("x2",D).attr("y2",R).attr("stroke-width","4").attr("stroke",zVe(A))}}return at(e,S),e.height=k,e.intersect=function(A){return et.rect(e,A)},l}var zVe,Ile=P(()=>{"use strict";zt();Xt();R0();Ht();Yt();zVe=o(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");o(Nle,"kanbanItem")});async function Mle(t,e){let{labelStyles:r,nodeStyles:i}=tt(e);e.labelStyle=r;let{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await vt(t,e,mt(e)),u=a.width+10*s,h=a.height+8*s,f=.15*u,{cssStyles:d}=e,p=a.width+20,m=a.height+20,g=Math.max(u,p),y=Math.max(h,m);l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`);let v,x=`M0 0
+ a${f},${f} 1 0,0 ${g*.25},${-1*y*.1}
+ a${f},${f} 1 0,0 ${g*.25},0
+ a${f},${f} 1 0,0 ${g*.25},0
+ a${f},${f} 1 0,0 ${g*.25},${y*.1}
+
+ a${f},${f} 1 0,0 ${g*.15},${y*.33}
+ a${f*.8},${f*.8} 1 0,0 0,${y*.34}
+ a${f},${f} 1 0,0 ${-1*g*.15},${y*.33}
+
+ a${f},${f} 1 0,0 ${-1*g*.25},${y*.15}
+ a${f},${f} 1 0,0 ${-1*g*.25},0
+ a${f},${f} 1 0,0 ${-1*g*.25},0
+ a${f},${f} 1 0,0 ${-1*g*.25},${-1*y*.15}
+
+ a${f},${f} 1 0,0 ${-1*g*.1},${-1*y*.33}
+ a${f*.8},${f*.8} 1 0,0 0,${-1*y*.34}
+ a${f},${f} 1 0,0 ${g*.1},${-1*y*.33}
+ H0 V0 Z`;if(e.look==="handDrawn"){let b=rt.svg(n),T=st(e,{}),w=b.path(x,T);v=n.insert(()=>w,":first-child"),v.attr("class","basic label-container").attr("style",xi(d))}else v=n.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",x);return v.attr("transform",`translate(${-g/2}, ${-y/2})`),at(e,v),e.calcIntersect=function(b,T){return et.rect(b,T)},e.intersect=function(b){return Q.info("Bang intersect",e,b),et.rect(e,b)},n}var Ole=P(()=>{"use strict";bt();zt();Xt();Ht();Yt();er();o(Mle,"bang")});async function Ple(t,e){let{labelStyles:r,nodeStyles:i}=tt(e);e.labelStyle=r;let{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await vt(t,e,mt(e)),u=a.width+2*s,h=a.height+2*s,f=.15*u,d=.25*u,p=.35*u,m=.2*u,{cssStyles:g}=e,y,v=`M0 0
+ a${f},${f} 0 0,1 ${u*.25},${-1*u*.1}
+ a${p},${p} 1 0,1 ${u*.4},${-1*u*.1}
+ a${d},${d} 1 0,1 ${u*.35},${u*.2}
+
+ a${f},${f} 1 0,1 ${u*.15},${h*.35}
+ a${m},${m} 1 0,1 ${-1*u*.15},${h*.65}
+
+ a${d},${f} 1 0,1 ${-1*u*.25},${u*.15}
+ a${p},${p} 1 0,1 ${-1*u*.5},0
+ a${f},${f} 1 0,1 ${-1*u*.25},${-1*u*.15}
+
+ a${f},${f} 1 0,1 ${-1*u*.1},${-1*h*.35}
+ a${m},${m} 1 0,1 ${u*.1},${-1*h*.65}
+ H0 V0 Z`;if(e.look==="handDrawn"){let x=rt.svg(n),b=st(e,{}),T=x.path(v,b);y=n.insert(()=>T,":first-child"),y.attr("class","basic label-container").attr("style",xi(g))}else y=n.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",v);return l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),y.attr("transform",`translate(${-u/2}, ${-h/2})`),at(e,y),e.calcIntersect=function(x,b){return et.rect(x,b)},e.intersect=function(x){return Q.info("Cloud intersect",e,x),et.rect(e,x)},n}var Ble=P(()=>{"use strict";Yt();bt();er();Xt();Ht();zt();o(Ple,"cloud")});async function Fle(t,e){let{labelStyles:r,nodeStyles:i}=tt(e);e.labelStyle=r;let{shapeSvg:n,bbox:a,halfPadding:s,label:l}=await vt(t,e,mt(e)),u=a.width+8*s,h=a.height+2*s,f=5,d=e.look==="neo"?`
+ M${-u/2} ${h/2-f}
+ v${-h+2*f}
+ q0,-${f} ${f},-${f}
+ h${u-2*f}
+ q${f},0 ${f},${f}
+ v${h-f}
+ H${-u/2}
+ Z
+ `:`
+ M${-u/2} ${h/2-f}
+ v${-h+2*f}
+ q0,-${f} ${f},-${f}
+ h${u-2*f}
+ q${f},0 ${f},${f}
+ v${h-2*f}
+ q0,${f} ${-f},${f}
+ h${-(u-2*f)}
+ q${-f},0 ${-f},${-f}
+ Z
+ `;if(!e.domId)throw new Error(`defaultMindmapNode: node "${e.id}" is missing a domId \u2014 was render.ts domId prefixing skipped?`);let p=n.append("path").attr("id",e.domId).attr("class","node-bkg node-"+e.type).attr("style",i).attr("d",d);return n.append("line").attr("class","node-line-").attr("x1",-u/2).attr("y1",h/2).attr("x2",u/2).attr("y2",h/2),l.attr("transform",`translate(${-a.width/2}, ${-a.height/2})`),n.append(()=>l.node()),at(e,p),e.calcIntersect=function(m,g){return et.rect(m,g)},e.intersect=function(m){return et.rect(e,m)},n}var $le=P(()=>{"use strict";Xt();Ht();zt();o(Fle,"defaultMindmapNode")});async function zle(t,e){let r={padding:e.padding??0};return C5(t,e,r)}var Gle=P(()=>{"use strict";CM();o(zle,"mindmapCircle")});function Vle(t){return t in SM}var GVe,VVe,SM,AM=P(()=>{"use strict";fse();mse();yse();xse();CM();Tse();Cse();Ese();Ase();Dse();Ise();Ose();Bse();$se();qse();Use();Yse();Xse();Qse();Jse();toe();ioe();aoe();ooe();coe();hoe();doe();moe();yoe();Toe();Coe();Eoe();Aoe();Doe();Roe();Ioe();Ooe();Boe();$oe();Goe();qoe();Uoe();Yoe();Xoe();Qoe();Joe();tle();ile();ale();cle();hle();dle();yle();xle();Tle();Cle();Ele();Dle();Rle();Ile();Ole();Ble();$le();Gle();GVe=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:Voe},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:Poe},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Woe},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Zoe},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:Nse},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:C5},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:Mle},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:Ple},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Loe},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:jse},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:poe},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:foe},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:ule},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:loe},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:Pse},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:nle},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:gse},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Foe},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Koe},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:joe},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:Wse},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:Kse},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:kse},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:wse},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:Sse},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:goe},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:vle},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:Hse},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:lle},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:boe},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:_se},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:Mse},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:gle},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:kle},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:Fse},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:fle},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:Vse},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:zoe},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Soe},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:woe},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:pse},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:bse},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:rle},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:ele},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:ble},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Noe},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:koe}],VVe=o(()=>{let e=[...Object.entries({state:Hoe,choice:vse,note:_oe,rectWithTitle:Moe,labelRect:uoe,iconSquare:noe,iconCircle:eoe,icon:Zse,iconRounded:roe,imageSquare:soe,anchor:hse,kanbanItem:Nle,mindmapCircle:zle,defaultMindmapNode:Fle,classBox:_le,erBox:EM,requirementBox:Lle}),...GVe.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(n=>[n,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),SM=VVe();o(Vle,"isValidShape")});var qVe,S5,qle=P(()=>{"use strict";Pr();xb();Ut();bt();AM();er();Vr();Ki();y0();zx();qVe="flowchart-",S5=class{constructor(){this.vertexCounter=0;this.config=ge();this.diagramId="";this.vertices=new Map;this.edges=[];this.classes=new Map;this.subGraphs=[];this.subGraphLookup=new Map;this.tooltips=new Map;this.subCount=0;this.firstGraphFlag=!0;this.secCount=-1;this.posCrossRef=[];this.funs=[];this.setAccTitle=Ar;this.setAccDescription=Lr;this.setDiagramTitle=Mr;this.getAccTitle=Dr;this.getAccDescription=Rr;this.getDiagramTitle=Nr;this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{o(this,"FlowDB")}sanitizeText(e){return lt.sanitizeText(e,this.config)}sanitizeNodeLabelType(e){switch(e){case"markdown":case"string":case"text":return e;default:return"markdown"}}setDiagramId(e){this.diagramId=e}lookUpDomId(e){for(let r of this.vertices.values())if(r.id===e)return this.diagramId?`${this.diagramId}-${r.domId}`:r.domId;return this.diagramId?`${this.diagramId}-${e}`:e}addVertex(e,r,i,n,a,s,l={},u){if(!e||e.trim().length===0)return;let h;if(u!==void 0){let m;u.includes(`
+`)?m=u+`
+`:m=`{
+`+u+`
+}`,h=ud(m,{schema:cd})}let f=this.edges.find(m=>m.id===e);if(f){let m=h;m?.animate!==void 0&&(f.animate=m.animate),m?.animation!==void 0&&(f.animation=m.animation),m?.curve!==void 0&&(f.interpolate=m.curve);return}let d,p=this.vertices.get(e);if(p===void 0&&(r===void 0&&i===void 0&&n!==void 0&&n!==null&&Q.warn(`Style applied to unknown node "${e}". This may indicate a typo. The node will be created automatically.`),p={id:e,labelType:"text",domId:qVe+e+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(e,p)),this.vertexCounter++,r!==void 0?(this.config=ge(),d=this.sanitizeText(r.text.trim()),p.labelType=r.type,d.startsWith('"')&&d.endsWith('"')&&(d=d.substring(1,d.length-1)),p.text=d):p.text===void 0&&(p.text=e),i!==void 0&&(p.type=i),n?.forEach(m=>{p.styles.push(m)}),a?.forEach(m=>{p.classes.push(m)}),s!==void 0&&(p.dir=s),p.props===void 0?p.props=l:l!==void 0&&Object.assign(p.props,l),h!==void 0){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!Vle(h.shape))throw new Error(`No such shape: ${h.shape}.`);p.type=h?.shape}h?.label&&(p.text=h?.label,p.labelType=this.sanitizeNodeLabelType(h?.labelType)),h?.icon&&(p.icon=h?.icon,!h.label?.trim()&&p.text===e&&(p.text="")),h?.form&&(p.form=h?.form),h?.pos&&(p.pos=h?.pos),h?.img&&(p.img=h?.img,!h.label?.trim()&&p.text===e&&(p.text="")),h?.constraint&&(p.constraint=h.constraint),h.w&&(p.assetWidth=Number(h.w)),h.h&&(p.assetHeight=Number(h.h))}}addSingleLink(e,r,i,n){let l={start:e,end:r,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};Q.info("abc78 Got edge...",l);let u=i.text;if(u!==void 0&&(l.text=this.sanitizeText(u.text.trim()),l.text.startsWith('"')&&l.text.endsWith('"')&&(l.text=l.text.substring(1,l.text.length-1)),l.labelType=this.sanitizeNodeLabelType(u.type)),i!==void 0&&(l.type=i.type,l.stroke=i.stroke,l.length=i.length>10?10:i.length),n&&!this.edges.some(h=>h.id===n))l.id=n,l.isUserDefinedId=!0;else{let h=this.edges.filter(f=>f.start===l.start&&f.end===l.end);h.length===0?l.id=Cu(l.start,l.end,{counter:0,prefix:"L"}):l.id=Cu(l.start,l.end,{counter:h.length+1,prefix:"L"})}if(this.edges.length<(this.config.maxEdges??500))Q.info("Pushing edge..."),this.edges.push(l);else throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.
+
+Initialize mermaid with maxEdges set to a higher number to allow more edges.
+You cannot set this config via configuration inside the diagram as it is a secure config.
+You have to call mermaid.initialize.`)}isLinkData(e){return e!==null&&typeof e=="object"&&"id"in e&&typeof e.id=="string"}addLink(e,r,i){let n=this.isLinkData(i)?i.id.replace("@",""):void 0;Q.info("addLink",e,r,n);for(let a of e)for(let s of r){let l=a===e[e.length-1],u=s===r[0];l&&u?this.addSingleLink(a,s,i,n):this.addSingleLink(a,s,i,void 0)}}updateLinkInterpolate(e,r){e.forEach(i=>{i==="default"?this.edges.defaultInterpolate=r:this.edges[i].interpolate=r})}updateLink(e,r){e.forEach(i=>{if(typeof i=="number"&&i>=this.edges.length)throw new Error(`The index ${i} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);i==="default"?this.edges.defaultStyle=r:(this.edges[i].style=r,(this.edges[i]?.style?.length??0)>0&&!this.edges[i]?.style?.some(n=>n?.startsWith("fill"))&&this.edges[i]?.style?.push("fill:none"))})}addClass(e,r){let i=r.join().replace(/\\,/g,"\xA7\xA7\xA7").replace(/,/g,";").replace(/§§§/g,",").split(";");e.split(",").forEach(n=>{let a=this.classes.get(n);a===void 0&&(a={id:n,styles:[],textStyles:[]},this.classes.set(n,a)),i?.forEach(s=>{if(/color/.exec(s)){let l=s.replace("fill","bgFill");a.textStyles.push(l)}a.styles.push(s)})})}setDirection(e){this.direction=e.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),this.direction==="TD"&&(this.direction="TB")}setClass(e,r){for(let i of e.split(",")){let n=this.vertices.get(i);n&&n.classes.push(r);let a=this.edges.find(l=>l.id===i);a&&a.classes.push(r);let s=this.subGraphLookup.get(i);s&&s.classes.push(r)}}setTooltip(e,r){if(r!==void 0){r=this.sanitizeText(r);for(let i of e.split(","))this.tooltips.set(this.version==="gen-1"?this.lookUpDomId(i):i,r)}}setClickFun(e,r,i){if(ge().securityLevel!=="loose"||r===void 0)return;let n=[];if(typeof i=="string"){n=i.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s