agentic-mermaid 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
- package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
- package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
- package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
- package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
- package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
- package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
- package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
- package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
- package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
- package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
- package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
- package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
- package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
- package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
- package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
- package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
- package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
- package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
- package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
- package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
- package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
- package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
- package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
- package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
- package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
- package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
- package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
- package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
- package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
- package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
- package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
- package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
- package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
- package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
- package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
- package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +507 -507
- package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
- package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
- package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
- package/dist/chunk-DOFB572I.js +58 -0
- package/dist/chunk-EHJI3QYE.js +52 -0
- package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
- package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
- package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
- package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
- package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
- package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
- package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
- package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
- package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
- package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
- package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
- package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
- package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
- package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
- package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
- package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
- package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
- package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
- package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
- package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
- package/docs/api.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
- package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
- package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
- package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
- package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
- package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
- package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
- package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
- package/dist/chunk-EHCMJUMD.js +0 -52
- package/dist/chunk-OMY6NRQD.js +0 -58
- package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
- package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
- package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
- /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
- /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{e as e,f as t,s as r,t as n,u as i}from"./chunk-TYZOZXUJ.js";import{Ab as o,Cb as a,Db as s,Ea as d,Eb as c,Fa as l,Fb as u,Ga as m,Gb as p,Ha as f,Ia as g,N as h,Q as y,V as b,X as E,Xa as v,Y as k,Za as $,_a as x,ab as S,b as N,ba as w,d as C,db as z,e as O,eb as _,f as T,fa as j,fb as M,g as D,ga as I,ha as A,ia as U,l as P,n as B,pb as R,qb as L,rb as F,s as W,tb as q,ub as Y,vb as G,wb as V,yb as K,zb as Z}from"./chunk-Z3FDIVLN.js";function H(e){return e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\\(?:\r\n|[\n\r\f])/g,"").replace(/\\([0-9a-fA-F]{1,6})\s?/g,(e,t)=>{let r=Number.parseInt(t,16);return Number.isFinite(r)?String.fromCodePoint(r):""}).replace(/\\([^\n\r\f])/g,"$1")}var J=/\s([^\s=<>]+)\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/g,Q=/<(?:[^\s<>/:]+:)?(?:animate(?:Motion|Transform)?|set)\b/i,X=/^on[a-z]/,ee=/[(:@\\&]/,et=/^(?:javascript|vbscript|data|file):/,er=/(?:javascript|vbscript|data|file)\s*:/i,en=/(?:expression|behavior)\s*\(/i,ei=/(?:expression|behavior)\s*\(|-moz-binding\s*:/i,eo=new Set(["amp","lt","gt","quot","apos"]);function ea(e){return" "===e||" "===e||e===`
|
|
2
|
-
`||"\r"===e}function es(e,t){let r=e.charCodeAt(t),n=32|r;if(!(n>=97&&n<=122||95===r))return -1;let i=t+1;for(;_(e[i]);)i++;return i}var ed="http://www.w3.org/XML/1998/namespace";function ec(e){return 9===e||10===e||13===e||e>=32&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}function el(e){for(let t=e.indexOf("&");t>=0;t=e.indexOf("&",t+1)){let r=e.indexOf(";",t+1);if(r<0)return!1;let n=e.slice(t+1,r);if(n.startsWith("#x")||n.startsWith("#X")){if(!/^[0-9a-f]+$/i.test(n.slice(2))||!ec(Number.parseInt(n.slice(2),16)))return!1}else if(n.startsWith("#")){if(!/^[0-9]+$/.test(n.slice(1))||!ec(Number.parseInt(n.slice(1),10)))return!1}else if(!eo.has(n))return!1;t=r}return!0}function eu(e,t){if(/[\0-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]/u.test(e))return!1;let r=[],n=!1,i=!1,o=0;for(;o<e.length;){let a;if("<"!==e[o]){let t=e.indexOf("<",o),n=t<0?e.length:t,i=e.slice(o,n);if(0===r.length&&""!==i.trim()||i.includes("]]>")||!el(i))return!1;o=n;continue}if(e.startsWith("\x3c!--",o)){if(0===r.length)return!1;let t=e.indexOf("--\x3e",o+4),n=t<0?"":e.slice(o+4,t);if(t<0||n.includes("--")||n.endsWith("-"))return!1;o=t+3;continue}if(e.startsWith("<![CDATA[",o)||e.startsWith("<!",o)||e.startsWith("<?",o))return!1;if(e.startsWith("</",o)){let t=es(e,o+2);if(t<0)return!1;let n=e.slice(o+2,t);if(n.includes(":"))return!1;for(;ea(e[t]);)t++;if(">"!==e[t]||r.pop()?.name!==n)return!1;if(o=t+1,0===r.length){if("svg"!==n||i)return!1;i=!0}continue}let s=es(e,o+1);if(s<0||i)return!1;let d=e.slice(o+1,s);if(d.includes(":"))return!1;if(0===r.length){if(n||"svg"!==d)return!1;n=!0}let c=s,l=new Set,u=[],m=!1;for(;;){let r=ea(e[c]);for(;ea(e[c]);)c++;if(">"===e[c]){c++;break}if("/"===e[c]&&">"===e[c+1]){m=!0,c+=2;break}if(!r)return!1;let n=es(e,c);if(n<0)return!1;let i=e.slice(c,n);if(l.has(i))return!1;let o=i.includes(":"),a=o?function(e){let t=e.indexOf(":");if(!(t<=0||t===e.length-1||e.indexOf(":",t+1)>=0))return{prefix:e.slice(0,t),local:e.slice(t+1)}}(i):void 0;if(o&&!a)return!1;for(l.add(i),c=n;ea(e[c]);)c++;if("="!==e[c])return!1;for(c++;ea(e[c]);)c++;let s=e[c];if('"'!==s&&"'"!==s)return!1;let d=++c;if((c=e.indexOf(s,d))<0)return!1;let p=e.slice(d,c);if(p.includes("<")||!el(p))return!1;(a||"xmlns"===i)&&u.push({name:i,...a,value:em(p)}),t?.(i,p),c++}let p=r.at(-1)?.namespaces??new Map([["xml",ed]]),f;for(let e of u){let t="xmlns"===e.name,r="xmlns"===e.prefix;if(!t&&!r)continue;let n=t?"":e.local,i=e.value;if("xmlns"===n||"http://www.w3.org/2000/xmlns/"===i||"xml"===n&&i!==ed||"xml"!==n&&i===ed||""!==n&&""===i)return!1;f||(p=f=new Map(p)),f.set(n,i)}if("http://www.w3.org/2000/svg"!==p.get("")||r.length>0&&"svg"===d)return!1;for(let e of u){if("xmlns"===e.name||"xmlns"===e.prefix)continue;let t=p.get(e.prefix);if(void 0===t)return!1;let r=`${t}\0${e.local}`;if(a||(a=new Set),a.has(r))return!1;a.add(r)}if(o=c,m){if(0===r.length)return!1}else r.push({name:d,namespaces:p})}return n&&i&&0===r.length}function em(e){if(!e.includes("&"))return e;let t=e;for(let e=0;e<3;e++){let e=t.replace(/&#x([0-9a-f]+);?/gi,(e,t)=>{let r=Number.parseInt(t,16);return Number.isFinite(r)&&r<=1114111?String.fromCodePoint(r):""}).replace(/&#([0-9]+);?/g,(e,t)=>{let r=Number.parseInt(t,10);return Number.isFinite(r)&&r<=1114111?String.fromCodePoint(r):""}).replace(/:?/gi,":").replace(//?/gi,"/").replace(/&tab;?/gi," ").replace(/&newline;?/gi,`
|
|
3
|
-
`).replace(/"?/gi,'"').replace(/'?/gi,"'").replace(/<?/gi,"<").replace(/>?/gi,">").replace(/&?/gi,"&");if(e===t)break;t=e}return t}function ep(e){return em(e).replace(/[\u0000-\u0020\u007f-\u009f]+/g,"").toLowerCase()}function ef(e){let t=em(e);if(/[\u0000-\u001f\u007f-\u009f]/.test(t))return!1;let r=t.replace(/ +/g,"").toLowerCase().trim();return!!/^(?:https?:|mailto:)/.test(r)||!/^[a-z][a-z0-9+.-]*:/.test(r)&&r.length>0}function eg(e){let t=H(em(e)),r=[];for(let e of(/@import\b/i.test(t)&&r.push("@import"),t.matchAll(/url\s*\(\s*(["']?)([\s\S]*?)\1\s*\)/gi))){let t=ep(e[2]);""===t||t.startsWith("#")||r.push(`url(${e[2].trim()})`)}for(let e of t.matchAll(/(?:-webkit-)?(?:image-set|cross-fade)\s*\(/gi))r.push(`${e[0].slice(0,-1).trim()}()`);return r}function eh(e){return!!(ei.test(e)||er.test(e))}var ey=new Set(["clip-path","cursor","fill","filter","marker-end","marker-mid","marker-start","mask","stroke","style"]);function eb(e,t){if(void 0!==e&&""!==e)return"string"!=typeof e?"Mermaid themeCSS must be a string":`Raw Mermaid themeCSS is not allowed in ${t} security mode because selectors can escape an imported SVG; use a declarative StyleSpec`}function eE(e,t,r,n){let i=e.slice(e.lastIndexOf(":")+1).toLowerCase();if(X.test(i)&&(r.push("inline-event-handler"),n.push("inline-event-handler")),"xml:base"===e.toLowerCase()&&r.push(`xml:base=${t}`),"href"===i||"src"===i||"data"===i){let i=ep(t);""===i||i.startsWith("#")||r.push(i.startsWith("javascript:")?"javascript-url":t),et.test(i)&&n.push(`${e}=${t}`)}if(ey.has(i)||"values"===i||"from"===i||"to"===i){if(!ee.test(t))return;let i=H(em(t));(eg(i).length>0||er.test(i)||en.test(i))&&r.push(`${e}=${t}`),eh(i)&&n.push(`${e}=${t}`)}}function ev(e,t,r){for(let n of e.matchAll(/<style\b[^>]*>([\s\S]*?)<\/style>/gi))eh(H(em(n[1])))&&r.push("active-css"),t.push(...eg(n[1]));for(let n of["script","foreignObject","image","object","embed","iframe"])RegExp(`<(?:[^\\s<>/:]+:)?${n}\\b`,"i").test(e)&&(t.push(`<${n}>`),"image"!==n&&r.push(`<${n}>`));return Q.test(e)&&(t.push("<animation>"),r.push("<animation>")),Object.freeze({active:Object.freeze(r),refs:Object.freeze(t)})}function ek(e){let{refs:t}=z("security",e,()=>(function(e){let t=e.replace(/<!--[\s\S]*?-->/g,""),r=[],n=[];for(let e of function(e){let t=[];for(let r=e.indexOf("<");r>=0;r=e.indexOf("<",r+1)){let n,i=e[r+1];if(i&&"/"!==i&&"!"!==i&&"?"!==i&&/[^\s<>]/.test(i))for(let i=r+1;i<e.length;i++){let o=e[i];if(n)o===n&&(n=void 0);else if('"'===o||"'"===o)n=o;else if(">"===o){t.push(e.slice(r,i+1)),r=i;break}}}return t}(t))for(let t of e.matchAll(RegExp(J.source,"g")))eE(t[1],function(e){let t=e[0];return('"'===t||"'"===t)&&e[e.length-1]===t?e.slice(1,-1):e}(t[2]),r,n);return ev(t,r,n)})(e));return{ok:0===t.length,refs:[...t]}}function e$(e,t="default"){let r=z("final-security",e,()=>{let t=[],r=[],n=!1,i;if(!eu(e,(e,o)=>{if(!n)try{eE(e,o,t,r)}catch(e){n=!0,i=e}}))return!1;if(n)throw i;return ev(e.replace(/<!--[\s\S]*?-->/g,""),t,r)});if(!r)throw Error("OutputSecurityPolicy rejected an invalid SVG document envelope");let{active:n,refs:i}=r;if(n.length>0)throw Error(`OutputSecurityPolicy rejected active content: ${n.join(", ")}`);if("strict"===t&&i.length)throw Error(`OutputSecurityPolicy strict verification failed: ${i.join(", ")}`);return{svg:e,diagnostics:"strict"===t?[]:i.map(e=>({code:"EXTERNAL_REFERENCE",reference:e}))}}var ex=["document","text","shape","container","connector","marker","data-mark"];Object.freeze(ex.map(e=>Object.freeze({primitive:e,operation:"document"===e?"serialize":"render"})));var eS=["measure","layout","bounds","hit-test","render","accessibility","terminal-project","serialize"],eN=["geometry","paint","stroke","transform","identity","relation","labels","markers","resources","interaction","topology","subpaths","closedness","bend-radius","endpoints","direction","hit-geometry","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"],ew=Object.freeze([{primitive:"document",feature:"identity",operation:"serialize"},{primitive:"document",feature:"resources",operation:"serialize"},{primitive:"document",feature:"interaction",operation:"accessibility"},{primitive:"text",feature:"geometry",operation:"render"},{primitive:"text",feature:"paint",operation:"render"},{primitive:"text",feature:"labels",operation:"accessibility"},{primitive:"text",feature:"identity",operation:"serialize"},{primitive:"shape",feature:"geometry",operation:"render"},{primitive:"shape",feature:"paint",operation:"render"},{primitive:"shape",feature:"identity",operation:"serialize"},{primitive:"container",feature:"geometry",operation:"render"},{primitive:"container",feature:"paint",operation:"render"},{primitive:"container",feature:"identity",operation:"serialize"},{primitive:"connector",feature:"geometry",operation:"render"},{primitive:"connector",feature:"stroke",operation:"render"},{primitive:"connector",feature:"transform",operation:"render"},{primitive:"connector",feature:"topology",operation:"render"},{primitive:"connector",feature:"subpaths",operation:"render"},{primitive:"connector",feature:"closedness",operation:"render"},{primitive:"connector",feature:"bend-radius",operation:"render"},{primitive:"connector",feature:"stroke-opacity",operation:"render"},{primitive:"connector",feature:"stroke-cap",operation:"render"},{primitive:"connector",feature:"stroke-join",operation:"render"},{primitive:"connector",feature:"stroke-miter",operation:"render"},{primitive:"connector",feature:"dash-array",operation:"render"},{primitive:"connector",feature:"dash-offset",operation:"render"},{primitive:"connector",feature:"dash-restart",operation:"render"},{primitive:"connector",feature:"path-length",operation:"render"},{primitive:"connector",feature:"paint-order",operation:"render"},{primitive:"connector",feature:"compositing",operation:"render"},{primitive:"connector",feature:"non-scaling-stroke",operation:"render"},{primitive:"connector",feature:"marker-orientation",operation:"render"},{primitive:"connector",feature:"marker-overflow",operation:"render"},{primitive:"connector",feature:"endpoints",operation:"serialize"},{primitive:"connector",feature:"direction",operation:"serialize"},{primitive:"connector",feature:"labels",operation:"render"},{primitive:"connector",feature:"labels",operation:"accessibility"},{primitive:"connector",feature:"markers",operation:"render"},{primitive:"connector",feature:"relation",operation:"accessibility"},{primitive:"connector",feature:"interaction",operation:"hit-test"},{primitive:"connector",feature:"hit-geometry",operation:"hit-test"},{primitive:"connector",feature:"identity",operation:"serialize"},{primitive:"marker",feature:"geometry",operation:"render"},{primitive:"marker",feature:"paint",operation:"render"},{primitive:"marker",feature:"identity",operation:"serialize"},{primitive:"data-mark",feature:"geometry",operation:"render"},{primitive:"data-mark",feature:"paint",operation:"render"},{primitive:"data-mark",feature:"identity",operation:"serialize"}].map(e=>Object.freeze(e))),eC=["native","emulated","projected","lossy","unsupported"];function ez(e){switch(e.kind){case"text":return["text"];case"shape":return e.channels?.value===void 0?["shape"]:["shape","data-mark"];case"group":return["container"];case"connector":return["connector"];case"document":return e.markerResources?.length?["document","marker"]:["document"]}}function eO(e,t,r="rough"){let n="crisp"===t?"native":"emulated",i="crisp"===t?"native":"projected",o="src/__tests__/backend-capability-conformance.test.ts",a=e=>"crisp"===t?{realization:"native"}:"geometry"===e||"topology"===e?{realization:"lossy",diagnostic:"The exact authored path remains as an invisible semantic carrier, but arbitrary curves are flattened to typed routed contours for the visible sketch."}:"closedness"===e?{realization:"lossy",diagnostic:"Sketch shafts are rebuilt from routed geometry and do not preserve explicit closed-subpath semantics."}:"bend-radius"===e?{realization:"lossy",diagnostic:"The authored rounded carrier remains exact, but the visible sketch follows its routed polyline and cannot preserve the continuous bend radius."}:"dash-restart"===e?{realization:"lossy",diagnostic:"A rough stroke may contain multiple generated stroke subpaths, so SVG dash restart boundaries can differ."}:"path-length"===e?{realization:"lossy",diagnostic:"One pathLength value spans generated stroke subpaths, so a sketch cannot retain one authored path calibration exactly."}:"hybrid"===r&&("stroke-cap"===e||"stroke-join"===e||"stroke-miter"===e||"non-scaling-stroke"===e)?{realization:"lossy",diagnostic:`Freehand ribbon geometry cannot preserve authored ${e} semantics; dashed Hybrid connectors fall back to the faithful rough projection.`}:"marker-orientation"===e||"marker-overflow"===e?{realization:"projected",diagnostic:"Marker geometry, orientation, and overflow remain in the typed marker projection instead of being sketched."}:{realization:"emulated"},s=[{target:e,primitive:"document",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"document",feature:"resources",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"document",feature:"interaction",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"text",feature:"geometry",operation:"render",realization:"native",evidence:o},{target:e,primitive:"text",feature:"paint",operation:"render",realization:"native",evidence:o},{target:e,primitive:"text",feature:"labels",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"text",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"shape",feature:"geometry",operation:"render",realization:n,evidence:o},{target:e,primitive:"shape",feature:"paint",operation:"render",realization:n,evidence:o},{target:e,primitive:"shape",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"container",feature:"geometry",operation:"render",realization:"native",evidence:o},{target:e,primitive:"container",feature:"paint",operation:"render",realization:"native",evidence:o},{target:e,primitive:"container",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"geometry",operation:"render",...a("geometry"),evidence:o},{target:e,primitive:"connector",feature:"stroke",operation:"render",realization:n,evidence:o},...["transform","topology","subpaths","closedness","bend-radius","stroke-opacity","stroke-cap","stroke-join","stroke-miter","dash-array","dash-offset","dash-restart","path-length","paint-order","compositing","non-scaling-stroke","marker-orientation","marker-overflow"].map(t=>({target:e,primitive:"connector",feature:t,operation:"render",...a(t),evidence:o})),{target:e,primitive:"connector",feature:"relation",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"endpoints",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"direction",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"labels",operation:"render",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"labels",operation:"accessibility",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"markers",operation:"render",realization:i,evidence:o},{target:e,primitive:"connector",feature:"interaction",operation:"hit-test",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"hit-geometry",operation:"hit-test",realization:"native",evidence:o},{target:e,primitive:"connector",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"marker",feature:"geometry",operation:"render",realization:i,evidence:o},{target:e,primitive:"marker",feature:"paint",operation:"render",realization:i,evidence:o},{target:e,primitive:"marker",feature:"identity",operation:"serialize",realization:"native",evidence:o},{target:e,primitive:"data-mark",feature:"geometry",operation:"render",realization:n,evidence:o},{target:e,primitive:"data-mark",feature:"paint",operation:"render",realization:n,evidence:o},{target:e,primitive:"data-mark",feature:"identity",operation:"serialize",realization:"native",evidence:o}],d=eT(s);if(!d.valid)throw Error(`Invalid graphical backend capability contract: ${d.diagnostics.join("; ")}`);return Object.freeze(s.map(e=>Object.freeze({...e})))}function e_(e){return[e.target,e.primitive,e.feature,e.operation].join("\0")}function eT(e){let t=[],r=new Set;for(let n=0;n<e.length;n++){let i=e[n],o=e_(i);r.has(o)&&t.push(`claim[${n}]: duplicate target/primitive/feature/operation`),r.add(o),""===i.target.trim()&&t.push(`claim[${n}]: target must not be empty`),""===i.primitive.trim()&&t.push(`claim[${n}]: primitive must not be empty`),""===i.feature.trim()&&t.push(`claim[${n}]: feature must not be empty`),""===i.operation.trim()&&t.push(`claim[${n}]: operation must not be empty`),eC.includes(i.realization)||t.push(`claim[${n}]: invalid realization ${String(i.realization)}`),"lossy"!==i.realization&&"unsupported"!==i.realization||i.diagnostic?.trim()||t.push(`claim[${n}]: ${i.realization} realization requires a diagnostic`)}return{valid:0===t.length,diagnostics:t}}function ej(e,t,r){let n=r.x-t.x,i=r.y-t.y,o=n*n+i*i;if(0===o)return Math.hypot(e.x-t.x,e.y-t.y);let a=Math.max(0,Math.min(1,((e.x-t.x)*n+(e.y-t.y)*i)/o));return Math.hypot(e.x-(t.x+a*n),e.y-(t.y+a*i))}function eM(e,t,r=0){return function(e,t,r,n){if("none"===e.hit.pointerEvents)return!1;let i=g(m(n,l(e.transform)));if(!i)return!1;if(e.stroke.nonScaling){let i=function(e,t,r){if("none"===e.hit.pointerEvents)return;let n=U(e.hit.geometry,e.hit.closed);if(0===n.length)return;let i=m(r,l(e.transform)),o=1/0;for(let e of n)o=Math.min(o,ej(t,f(e.start,i),f(e.end,i)));return o}(e,t,n);return void 0!==i&&i<=e.hit.strokeWidth/2+Math.max(0,r)}let o=f(t,i),a=(Math.hypot(i[0]+i[3],i[1]-i[2])+Math.hypot(i[0]-i[3],i[1]+i[2]))/2,s=e.hit.strokeWidth/2+(r>0?r*a:0);return U(e.hit.geometry,e.hit.closed).some(e=>ej(o,e.start,e.end)<=s)}(e,t,r,d)}function eD(e,t){if(0!==e.length&&e.length>t)return t+1;if(!/[^\x00-\x7f]/.test(e))return e.length;let r=0;for(let n=0;n<e.length;n++){let i=e.charCodeAt(n);if(i<=127)r+=1;else if(i<=2047)r+=2;else if(i>=55296&&i<=56319&&n+1<e.length){let t=e.charCodeAt(n+1);t>=56320&&t<=57343?(r+=4,n++):r+=3}else r+=3;if(r>t)return t+1}return r}Object.freeze(["importance","value","category","status","progress","route","emphasis"]);var eI=/^[A-Za-z_][A-Za-z0-9_.:-]*$/,eA=Object.freeze({maxIdLength:256,maxCoordinate:1e6,maxStopsPerGradient:256,maxResources:1e4,maxAggregateStops:2e4,maxSerializationBytes:8e6});function eU(e,t){if(!Number.isFinite(e))throw Error(`Linear gradient ${t} must be finite`);if(Math.abs(e)>eA.maxCoordinate)throw Error(`Linear gradient ${t} must not exceed ${eA.maxCoordinate}`);return e}function eP(t){if(!eI.test(t.id))throw Error(`Linear gradient id ${JSON.stringify(t.id)} must use the safe SVG id grammar`);if(t.id.length>eA.maxIdLength)throw Error(`Linear gradient id must contain at most ${eA.maxIdLength} characters`);if("userSpaceOnUse"!==t.units&&"objectBoundingBox"!==t.units)throw Error(`Linear gradient "${t.id}" units must be userSpaceOnUse or objectBoundingBox`);if(eU(t.x1,"x1"),eU(t.y1,"y1"),eU(t.x2,"x2"),eU(t.y2,"y2"),t.stops.length<2)throw Error(`Linear gradient "${t.id}" must declare at least two stops`);if(t.stops.length>eA.maxStopsPerGradient)throw Error(`Linear gradient "${t.id}" must declare at most ${eA.maxStopsPerGradient} stops`);let r=-1;for(let[n,i]of t.stops.entries()){if(eU(i.offset,`stops[${n}].offset`),i.offset<0||i.offset>1)throw Error(`Linear gradient "${t.id}" stop offsets must be in [0,1]`);if(i.offset<r)throw Error(`Linear gradient "${t.id}" stop offsets must be non-decreasing`);if(r=i.offset,void 0===e(i.color)||/^url\s*\(/i.test(i.color))throw Error(`Linear gradient "${t.id}" stop ${n} must use a safe non-fetching CSS paint`);if(void 0!==i.opacity&&(!Number.isFinite(i.opacity)||i.opacity<0||i.opacity>1))throw Error(`Linear gradient "${t.id}" stop opacity must be in [0,1]`)}}function eB(e,t={}){eP(e);let r=" ".repeat(t.indent??2),n=`${r} `,i=[`id="${h(e.id)}"`,`gradientUnits="${e.units}"`,`x1="${eU(e.x1,"x1")}"`,`y1="${eU(e.y1,"y1")}"`,`x2="${eU(e.x2,"x2")}"`,`y2="${eU(e.y2,"y2")}"`];return[`${r}<linearGradient ${i.join(" ")}>`,...e.stops.map(e=>{var t;return`${n}<stop offset="${t=e.offset,`${Math.round(1e5*t)/1e3}%`}" stop-color="${h(e.color)}"${void 0===e.opacity?"":` stop-opacity="${e.opacity}"`} />`}),`${r}</linearGradient>`].join(`
|
|
4
|
-
`)}function eR(e,t={}){if(e.length>eA.maxResources)throw Error(`A definitions mark may declare at most ${eA.maxResources} linear gradients`);let r=new Set,n=0,i=0,o=[];for(let a of e){if(r.has(a.id))throw Error(`Duplicate linear gradient resource "${a.id}"`);if(r.add(a.id),(n+=a.stops.length)>eA.maxAggregateStops)throw Error(`Linear gradient resources may declare at most ${eA.maxAggregateStops} aggregate stops`);let e=eB(a,t),s=+(0!==o.length),d=eA.maxSerializationBytes-i-s,c=eD(e,Math.max(0,d));if(c>d)throw Error(`Linear gradient serialization exceeds ${eA.maxSerializationBytes} bytes`);i+=c+s,o.push(e)}return o.join(`
|
|
5
|
-
`)}var eL=Object.freeze({maxExtent:1e6,maxNodes:1e5,maxDepth:64,maxTextLength:1e6,maxTextBytes:2e6,maxPoints:5e4,maxSerializationBytesPerNode:5e6,maxAggregateSerializationBytes:16e6,maxFinalSvgBytes:8e6}),eF=class extends Error{constructor(e){super(`Scene validation failed: ${e.map(e=>`${e.path}: ${e.message}`).join("; ")}`),this.diagnostics=e,this.name="SceneValidationError"}diagnostics;code="SCENE_VALIDATION_FAILED"},eW=eL.maxExtent,eq=eL.maxNodes,eY=eL.maxDepth,eG=eL.maxTextLength,eV=eL.maxTextBytes,eK=eL.maxPoints,eZ=eL.maxSerializationBytesPerNode,eH=eL.maxAggregateSerializationBytes,eJ=eL.maxFinalSvgBytes,eQ=/^[A-Za-z0-9][A-Za-z0-9_.:/-]*$/,eX=/^[a-z0-9][a-z0-9._/-]*:[a-z0-9][a-z0-9._/-]*$/i,e0=/^(?:none|[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?(?:[\s,]+[-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)*)$/,e1=/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/,e2=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)(?:px)?$/,e3=/^([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)$/,e4=/^var\(--[a-z0-9_-]+(?:,\s*[-+]?\d*\.?\d+)?\)$/i,e5=Object.freeze({M:2,m:2,L:2,l:2,H:1,h:1,V:1,v:1,C:6,c:6,S:4,s:4,Q:4,q:4,T:2,t:2,A:7,a:7,Z:0,z:0}),e6=/[-+]?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+))(?:[eE][-+]?\d+)?/y,e8=["fill","stroke","strokeWidth","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","vectorEffect","paintOrder","opacity"];function e7(e,t="final SVG"){if("string"!=typeof e)throw TypeError(`${t} must be a string`);if(!(3*e.length<=eJ)&&!z("final-svg-budget",e,()=>eD(e,eJ)<=eJ))throw RangeError(`${t} exceeds the ${eJ}-byte final SVG limit`)}function e9(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function te(e,t,r,n){e.push({code:t,path:r,message:n})}function tt(e,t,r,n){let i=new Set(t);for(let t of Object.keys(e))i.has(t)||te(n,"SCENE_DOCUMENT",`${r}.${t}`,"is not part of the external Scene contract")}function tr(e,t,r,n={}){return"number"==typeof e&&Number.isFinite(e)?(n.positive&&e<=0&&te(r,"SCENE_BOUNDS",t,"must be positive"),n.nonNegative&&e<0&&te(r,"SCENE_BOUNDS",t,"must be non-negative"),Math.abs(e)>eW&&te(r,"SCENE_BOUNDS",t,`must not exceed ${eW} user units`),!0):(te(r,"SCENE_FINITE",t,"must be a finite number"),!1)}function tn(e,t,r,n={}){return"string"!=typeof e?(te(r,"SCENE_ID",t,"must be a string"),!1):(n.empty||0!==e.length||te(r,"SCENE_ID",t,"must not be empty"),e.length>(n.max??256)&&te(r,"SCENE_ID",t,"is too long"),e1.test(e)&&te(r,"SCENE_ID",t,"contains a control character"),n.externalId&&!eQ.test(e)&&te(r,"SCENE_ID",t,"must use the safe external id grammar"),!0)}function ti(e,t,r,n={}){if(void 0===e)return;if("string"!=typeof e&&"number"!=typeof e)return void te(r,"SCENE_PAINT",t,"must be a finite numeric value");let i=("string"==typeof e?e.trim():void 0)?.match(n.length?e2:e3),o="number"==typeof e?e:i?Number(i[1]):NaN;if(Number.isFinite(o))n.nonNegative&&o<0?te(r,"SCENE_PAINT",t,"must be non-negative"):n.unitInterval&&(o<0||o>1)&&te(r,"SCENE_PAINT",t,"must be in [0,1]");else{if("string"==typeof e&&e4.test(e.trim()))return;te(r,"SCENE_PAINT",t,`must be a finite number or safe numeric custom-property reference (received ${JSON.stringify(e)})`)}}function to(t,r,n,i=!1){if(!e9(t))return void te(n,"SCENE_PAINT",r,"must be a paint object");for(let o of(i&&tt(t,e8,r,n),["fill","stroke"])){let a=t[o],s=ta(a);void 0!==a&&void 0===e(a)&&(i||!s)&&te(n,"SCENE_PAINT",`${r}.${o}`,"must be a safe non-fetching CSS paint")}if(ti(t.strokeWidth,`${r}.strokeWidth`,n,{nonNegative:!0,length:!0}),ti(t.strokeDashoffset,`${r}.strokeDashoffset`,n,{length:!0}),ti(t.strokeMiterlimit,`${r}.strokeMiterlimit`,n,{nonNegative:!0}),ti(t.opacity,`${r}.opacity`,n,{unitInterval:!0}),ti(t.fillOpacity,`${r}.fillOpacity`,n,{unitInterval:!0}),ti(t.strokeOpacity,`${r}.strokeOpacity`,n,{unitInterval:!0}),void 0===t.strokeDasharray||"string"==typeof t.strokeDasharray&&e0.test(t.strokeDasharray.trim())||te(n,"SCENE_PAINT",`${r}.strokeDasharray`,'must be "none" or a finite numeric dash list'),void 0===t.strokeLinecap||["butt","round","square"].includes(String(t.strokeLinecap))||te(n,"SCENE_PAINT",`${r}.strokeLinecap`,"must be butt, round, or square"),void 0===t.strokeLinejoin||["arcs","bevel","miter","miter-clip","round"].includes(String(t.strokeLinejoin))||te(n,"SCENE_PAINT",`${r}.strokeLinejoin`,"must be arcs, bevel, miter, miter-clip, or round"),void 0===t.vectorEffect||["none","non-scaling-stroke"].includes(String(t.vectorEffect))||te(n,"SCENE_PAINT",`${r}.vectorEffect`,"must be none or non-scaling-stroke"),void 0!==t.paintOrder){let e="string"==typeof t.paintOrder?t.paintOrder.trim().split(/\s+/).filter(Boolean).map(e=>e.toLowerCase()):[];1===e.length&&"normal"===e[0]||e.length>=1&&e.length<=3&&new Set(e).size===e.length&&e.every(e=>["fill","stroke","markers"].includes(e))||te(n,"SCENE_PAINT",`${r}.paintOrder`,"must be normal or one to three unique fill, stroke, and markers keywords")}}function ta(e){return("string"==typeof e?/^url\(#([A-Za-z_][A-Za-z0-9_.:-]*)\)$/.exec(e.trim()):null)?.[1]}function ts(e,t,r,n,i,o,a,s){if(!e||"string"!=typeof n||e[r])return;let d=Math.max(0,a-e[t]),c=eD(n,d);c>d?(e[t]=a+1,e[r]=!0,te(o,"SCENE_BOUNDS",i,`${s} exceed the aggregate ${a}-byte limit`)):e[t]+=c}function td(e,t,r,n,i=!1){e9(e)?(i&&tt(e,["x","y"],t,r),!n||n.pointsExceeded||++n.points>eK&&(n.pointsExceeded=!0,te(r,"SCENE_BOUNDS",t,`Scene points exceed the aggregate ${eK}-point limit`)),tr(e.x,`${t}.x`,r),tr(e.y,`${t}.y`,r)):te(r,"SCENE_FINITE",t,"must be a point object")}function tc(e,t,r){if(!e9(e)||"number"!=typeof e.x||"number"!=typeof e.y)return;let n=Math.hypot(e.x,e.y);(!Number.isFinite(n)||Math.abs(n-1)>1e-9)&&te(r,"SCENE_FINITE",t,"must be a finite unit vector")}function tl(e,t,r,n,i,o=!1){if(!Array.isArray(e))return void te(r,"SCENE_FINITE",t,"must be an array of points");if(e.length<n&&te(r,"SCENE_BOUNDS",t,`must contain at least ${n} points`),i?.pointCollections.has(e))return;i?.pointCollections.add(e),e.length>eq&&te(r,"SCENE_BOUNDS",t,"contains too many points");let a=Math.min(e.length,eq,i?Math.max(0,eK-i.points+1):eq);for(let n=0;n<a;n++)td(e[n],`${t}[${n}]`,r,i,o)}function tu(e,t,r,n=!1,i=0,o,a=!1){if(i>eY)return void te(r,"SCENE_BOUNDS",t,`geometry exceeds maximum nesting depth ${eY}`);if(!e9(e)||"string"!=typeof e.kind)return void te(r,"SCENE_DOCUMENT",t,"must be a typed geometry object");if(a){let n={rect:["kind","x","y","width","height","rx","ry"],circle:["kind","cx","cy","r"],ellipse:["kind","cx","cy","rx","ry"],line:["kind","x1","y1","x2","y2"],polygon:["kind","points"],polyline:["kind","points"],path:["kind","d","points"],compound:["kind","children"]}[e.kind];n&&tt(e,n,t,r)}switch(e.kind){case"rect":tr(e.x,`${t}.x`,r),tr(e.y,`${t}.y`,r),tr(e.width,`${t}.width`,r,{nonNegative:!0}),tr(e.height,`${t}.height`,r,{nonNegative:!0}),void 0!==e.rx&&tr(e.rx,`${t}.rx`,r,{nonNegative:!0}),void 0!==e.ry&&tr(e.ry,`${t}.ry`,r,{nonNegative:!0});return;case"circle":tr(e.cx,`${t}.cx`,r),tr(e.cy,`${t}.cy`,r),tr(e.r,`${t}.r`,r,{nonNegative:!0});return;case"ellipse":tr(e.cx,`${t}.cx`,r),tr(e.cy,`${t}.cy`,r),tr(e.rx,`${t}.rx`,r,{nonNegative:!0}),tr(e.ry,`${t}.ry`,r,{nonNegative:!0});return;case"line":tr(e.x1,`${t}.x1`,r),tr(e.y1,`${t}.y1`,r),tr(e.x2,`${t}.x2`,r),tr(e.y2,`${t}.y2`,r);return;case"polygon":tl(e.points,`${t}.points`,r,3,o,a);return;case"polyline":tl(e.points,`${t}.points`,r,2,o,a);return;case"path":if("string"!=typeof e.d||0===e.d.length||e.d.length>eG)te(r,"SCENE_SECURITY",`${t}.d`,"must use bounded SVG path data");else{let i=function(e,t=!1){let r=0,n,i=!1,o=0,a=()=>{for(;r<e.length&&(","===e[r]||/\s/.test(e[r]));)r++},s=()=>{let t=e[r];return void 0!==t&&"MmLlHhVvCcSsQqTtAaZz".includes(t)?t:void 0},d=()=>{a(),e6.lastIndex=r;let t=e6.exec(e);if(!t)return"expected a numeric path parameter";r=e6.lastIndex;let n=Number(t[0]);return Number.isFinite(n)?Math.abs(n)>eW?`path parameter ${t[0]} exceeds ${eW} user units`:void 0:`path parameter ${t[0]} is not finite`};for(;a(),!(r>=e.length);){let c=s();if(void 0!==c){if(n=c,r++,!i&&"M"!==n&&"m"!==n)return"must start with an M or m moveto command";if(i&&t&&("M"===n||"m"===n))return"multiple moveto subpaths require typed subpath geometry";if(i=!0,"Z"===n||"z"===n){n=void 0;continue}}else if(void 0===n)return"path parameters must follow a command";let l=e5[n];if(void 0===l||0===l)return`unknown path command ${String(n)}`;let u=0;for(;;){if(a(),r>=e.length||void 0!==s()){if(0===u)return`command ${n} requires ${l} parameters`;break}for(let t=0;t<l;t++){if(a(),r>=e.length||void 0!==s())return`command ${n} ended before its ${l}-parameter group was complete`;if(("A"===n||"a"===n)&&(3===t||4===t)){let t=e[r];if("0"!==t&&"1"!==t)return`command ${n} arc flags must be 0 or 1`;r++}else{let e=d();if(e)return e}}if(u++,++o>eK)return`contains more than ${eK} path parameter groups`}}return i?void 0:"must contain an M or m moveto command"}(e.d,a&&!n);i&&te(r,"SCENE_SECURITY",`${t}.d`,`must use semantic SVG path data: ${i}`)}if(void 0!==e.points&&tl(e.points,`${t}.points`,r,2,o,a),void 0!==e.markerMidpoints&&tl(e.markerMidpoints,`${t}.markerMidpoints`,r,0,o,a),void 0!==e.subpaths)if(Array.isArray(e.subpaths)&&0!==e.subpaths.length)for(let n=0;n<Math.min(e.subpaths.length,eq);n++){let i=e.subpaths[n];if(!e9(i)){te(r,"SCENE_DOCUMENT",`${t}.subpaths[${n}]`,"must be a typed contour");continue}tl(i.points,`${t}.subpaths[${n}].points`,r,2,o,a),"boolean"!=typeof i.closed&&te(r,"SCENE_DOCUMENT",`${t}.subpaths[${n}].closed`,"must be boolean")}else te(r,"SCENE_BOUNDS",`${t}.subpaths`,"must be a non-empty array of typed contours");return;case"compound":if(!Array.isArray(e.children))return void te(r,"SCENE_BOUNDS",`${t}.children`,"must be a geometry array");e.children.length>eq&&te(r,"SCENE_BOUNDS",`${t}.children`,"contains too many geometries");for(let s=0;s<Math.min(e.children.length,eq);s++)tu(e.children[s],`${t}.children[${s}]`,r,n,i+1,o,a);return;default:te(r,"SCENE_DOCUMENT",`${t}.kind`,`unknown geometry kind "${e.kind}"`)}}function tm(e,t,n,i,o){if(!e9(e))return te(n,"SCENE_MARKER",t,"must be a marker descriptor"),!1;if(i&&tt(e,["id","shape","geometry","size","viewBox","ref","bounds","units","orient","overflow","paint","scale"],t,n),tn(e.id,`${t}.id`,n,{externalId:i}),["arrow","open-arrow","circle","cross","triangle","diamond","diamond-open"].includes(String(e.shape))||te(n,"SCENE_MARKER",`${t}.shape`,"must be a known marker shape"),tu(e.geometry,`${t}.geometry`,n,!0,0,o,i),i&&e9(e.geometry)&&"compound"===e.geometry.kind&&(!Array.isArray(e.geometry.children)||0===e.geometry.children.length)&&te(n,"SCENE_BOUNDS",`${t}.geometry.children`,"external marker compounds must contain geometry"),e9(e.size)&&(i&&tt(e.size,["width","height"],`${t}.size`,n),tr(e.size.width,`${t}.size.width`,n,{positive:!0}),tr(e.size.height,`${t}.size.height`,n,{positive:!0})),e9(e.ref)&&td(e.ref,`${t}.ref`,n,o,i),void 0!==e.paint&&to(e.paint,`${t}.paint`,n,i),e9(e.viewBox)&&(i&&tt(e.viewBox,["x","y","width","height"],`${t}.viewBox`,n),tr(e.viewBox.x,`${t}.viewBox.x`,n),tr(e.viewBox.y,`${t}.viewBox.y`,n),tr(e.viewBox.width,`${t}.viewBox.width`,n,{positive:!0}),tr(e.viewBox.height,`${t}.viewBox.height`,n,{positive:!0})),e9(e.bounds)){for(let r of(i&&tt(e.bounds,["x0","y0","x1","y1"],`${t}.bounds`,n),["x0","y0","x1","y1"]))tr(e.bounds[r],`${t}.bounds.${r}`,n);"number"==typeof e.bounds.x0&&"number"==typeof e.bounds.x1&&e.bounds.x0>e.bounds.x1&&te(n,"SCENE_BOUNDS",`${t}.bounds`,"x0 must not exceed x1"),"number"==typeof e.bounds.y0&&"number"==typeof e.bounds.y1&&e.bounds.y0>e.bounds.y1&&te(n,"SCENE_BOUNDS",`${t}.bounds`,"y0 must not exceed y1")}void 0!==e.scale&&tr(e.scale,`${t}.scale`,n,{nonNegative:!0}),void 0===e.units||["strokeWidth","userSpaceOnUse"].includes(String(e.units))||te(n,"SCENE_MARKER",`${t}.units`,"must be strokeWidth or userSpaceOnUse"),"number"==typeof e.orient?tr(e.orient,`${t}.orient`,n):void 0===e.orient||["auto","auto-start-reverse"].includes(String(e.orient))||te(n,"SCENE_MARKER",`${t}.orient`,"must be auto, auto-start-reverse, or a finite angle"),void 0===e.overflow||["hidden","visible"].includes(String(e.overflow))||te(n,"SCENE_MARKER",`${t}.overflow`,"must be hidden or visible");try{r(e)}catch(e){te(n,"SCENE_MARKER",t,e instanceof Error?e.message:String(e))}return"string"==typeof e.id}function tp(e,t,r){let n;try{n=Y(e),eD(n,eZ)>eZ&&te(r.diagnostics,"SCENE_DOCUMENT",t,"has an oversized SVG serialization")}catch(e){te(r.diagnostics,"SCENE_DOCUMENT",t,e instanceof Error?e.message:String(e))}return r.aggregateBudgets&&void 0!==n&&ts(r.budget,"serializationBytes","serializationExceeded",n,t,r.diagnostics,eH,"Scene serializations"),n}function tf(t,r,n,o,a){var s,d;if(o>eY)return void te(n.diagnostics,"SCENE_BOUNDS",r,`exceeds maximum nesting depth ${eY}`);if(++n.nodeCount>eq){n.nodeCount===eq+1&&te(n.diagnostics,"SCENE_BOUNDS",r,"contains too many Scene nodes");return}if(!e9(t)||"string"!=typeof t.kind)return void te(n.diagnostics,"SCENE_DOCUMENT",r,"must be a typed Scene node");let c=t.kind;if(function(e,t,r){if(e9(e))if("connector"===e.kind){if(e9(e.stroke)){let n=ta(e.stroke.color);n&&r.push({id:n,path:`${t}.stroke.color`})}if(Array.isArray(e.labels))for(let n=0;n<Math.min(e.labels.length,eq);n++){let i=e.labels[n];e9(i)&&tg(i.paint,`${t}.labels[${n}].paint`,r)}}else tg(e.paint,`${t}.paint`,r)}(t,r,n.paintReferences),!["shape","connector","text","group","document"].includes(c))return void te(n.diagnostics,"SCENE_DOCUMENT",`${r}.kind`,`unknown Scene node kind "${c}"`);if(n.external&&o>0&&"document"===c&&te(n.diagnostics,"SCENE_DOCUMENT",r,`${c} marks must be top-level document furniture`),n.external){let e=["kind","id","role","identity","accessibility","channels","transform","owner"];tt(t,{shape:[...e,"geometry","paint"],text:[...e,"text","x","y","fontSize","anchor","baselineShift","paint","fontWeight","letterSpacing","display","textLayout","block","measurement","prepared"],group:[...e,"open","close","children","join"],document:[...e,"element","text","domId","markerResources"],connector:[...e,"lineStyle","endpoints","relationship","route","stroke","markers","labels","hit","terminalProjection"]}[c],r,n.diagnostics)}if(tn(t.id,`${r}.id`,n.diagnostics,{externalId:n.external})){let e=n.ids.get(t.id);n.external&&e?te(n.diagnostics,"SCENE_ID",`${r}.id`,`duplicates ${e.path}`):n.ids.set(t.id,{path:`${r}.id`,kind:c})}if(void 0!==t.domId&&tn(t.domId,`${r}.domId`,n.diagnostics,{externalId:n.external})){let e=n.domIds.get(t.domId),i=n.markerIds.get(t.domId),o=n.gradientIds.get(t.domId);n.external&&e?te(n.diagnostics,"SCENE_ID",`${r}.domId`,`duplicates DOM id owned by ${e}`):n.external&&i?te(n.diagnostics,"SCENE_ID",`${r}.domId`,`collides with marker resource "${t.domId}"`):o?te(n.diagnostics,"SCENE_ID",`${r}.domId`,`collides with gradient resource "${t.domId}"`):n.domIds.set(t.domId,`${r}.domId`)}s=t.role,d=`${r}.role`,"string"!=typeof s?te(n.diagnostics,"SCENE_ROLE",d,"must be a Scene role string"):Object.prototype.hasOwnProperty.call(P,s)||eX.test(s)?B(s).applicableKinds.includes(c)||te(n.diagnostics,"SCENE_ROLE",d,`role "${s}" is not applicable to ${c} marks`):te(n.diagnostics,"SCENE_ROLE",d,"must be a built-in or namespaced Scene role"),"string"==typeof t.id&&"string"==typeof t.role&&n.subjects.add(JSON.stringify([t.id,t.role])),e9(t.identity)&&"string"==typeof t.identity.id&&"string"==typeof t.identity.role&&n.subjects.add(JSON.stringify([t.identity.id,t.identity.role])),e9(t.owner)&&"string"==typeof t.owner.id&&"string"==typeof t.owner.role&&n.ownerReferences.push({key:JSON.stringify([t.owner.id,t.owner.role]),path:`${r}.owner`}),function(e,t,r){if(void 0!==e){if(!e9(e))return te(r,"SCENE_DOCUMENT",t,"must be a semantic channel object");for(let n of["importance","value","progress"])void 0!==e[n]&&tr(e[n],`${t}.${n}`,r);for(let n of("number"==typeof e.progress&&(e.progress<0||e.progress>1)&&te(r,"SCENE_BOUNDS",`${t}.progress`,"must be in [0,1]"),["category","status","route"]))void 0!==e[n]&&tn(e[n],`${t}.${n}`,r,{max:4096});void 0!==e.emphasis&&"boolean"!=typeof e.emphasis&&te(r,"SCENE_DOCUMENT",`${t}.emphasis`,"must be boolean")}}(t.channels,`${r}.channels`,n.diagnostics);let l=n.native&&"document"!==c?void 0:tp(t,r,n);if(void 0!==t.transform){if(e9(t.transform)&&["rotate","matrix"].includes(String(t.transform.kind)))for(let e of"matrix"===t.transform.kind?["a","b","c","d","e","f"]:["angle","cx","cy"])tr(t.transform[e],`${r}.transform.${e}`,n.diagnostics);else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.transform`,"must be a rotate or matrix transform");n.external&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.transform`,"external Scene transforms are not exposed by the declarative builder")}if(void 0!==t.owner&&(e9(t.owner)?(tn(t.owner.id,`${r}.owner.id`,n.diagnostics),"string"==typeof t.owner.role&&(Object.hasOwn(P,t.owner.role)||eX.test(t.owner.role))||te(n.diagnostics,"SCENE_ROLE",`${r}.owner.role`,"must be a Scene role")):te(n.diagnostics,"SCENE_REFERENCE",`${r}.owner`,"must be a semantic owner")),void 0!==t.visibility&&"conditional"!==t.visibility&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.visibility`,"must be conditional"),void 0!==t.attributes&&function(e,t,r){if(!e9(e))return te(r,"SCENE_DOCUMENT",t,"must be an attribute hook object");if(tt(e,["className","data","ariaHidden","tabIndex","ariaLabel"],t,r),void 0===e.className||"string"==typeof e.className&&L.test(e.className)||te(r,"SCENE_DOCUMENT",`${t}.className`,"must be space-separated CSS class tokens"),void 0!==e.ariaHidden&&!0!==e.ariaHidden&&te(r,"SCENE_DOCUMENT",`${t}.ariaHidden`,"must be true when present"),void 0!==e.tabIndex&&0!==e.tabIndex&&te(r,"SCENE_DOCUMENT",`${t}.tabIndex`,"must be 0 when present"),void 0!==e.ariaLabel&&tn(e.ariaLabel,`${t}.ariaLabel`,r,{max:eG}),void 0!==e.data){if(!e9(e.data))return te(r,"SCENE_DOCUMENT",`${t}.data`,"must be a string record");for(let[n,i]of Object.entries(e.data))(!F.test(n)||R.has(n))&&te(r,"SCENE_DOCUMENT",`${t}.data.${n}`,"must be a family data-* key the writer does not own"),tn(i,`${t}.data.${n}`,r,{empty:!0,max:eG})}}(t.attributes,`${r}.attributes`,n.diagnostics),"shape"===c){void 0===t.identity&&"string"==typeof t.role&&b(t.role)&&(n.native&&"string"==typeof t.id&&e9(t.owner)&&"string"==typeof t.owner.id&&t.owner.role===t.role?n.native.artwork.push({id:t.id,owner:{id:t.owner.id,role:t.role},path:`${r}.identity`}):a&&e9(t.owner)&&t.role===a.role&&t.owner.id===a.id&&t.owner.role===a.role||te(n.diagnostics,"SCENE_FIDELITY",`${r}.identity`,"owned artwork without DOM identity must be inside its matching semantic group")),void 0!==t.surfaceFragment&&"boolean"!=typeof t.surfaceFragment&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.surfaceFragment`,"must be boolean"),tu(t.geometry,`${r}.geometry`,n.diagnostics,!1,0,n.budget,n.external),n.external&&e9(t.geometry)&&("path"===t.geometry.kind||"compound"===t.geometry.kind)&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.geometry`,"external shapes must use a directly bounded structured geometry"),to(t.paint,`${r}.paint`,n.diagnostics,n.external),void 0!==t.childPaints&&(Array.isArray(t.childPaints)&&e9(t.geometry)&&"compound"===t.geometry.kind&&Array.isArray(t.geometry.children)&&t.childPaints.length===t.geometry.children.length?t.childPaints.forEach((e,t)=>to(e,`${r}.childPaints[${t}]`,n.diagnostics,n.external)):te(n.diagnostics,"SCENE_PAINT",`${r}.childPaints`,"must give one paint per compound geometry child")),void 0!==t.conditionalPaint&&("conditional"!==t.visibility&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.conditionalPaint`,"requires an explicit conditional state"),to(t.conditionalPaint,`${r}.conditionalPaint`,n.diagnostics,n.external));return}if("text"===c){if(tn(t.text,`${r}.text`,n.diagnostics,{empty:!0,max:eG}),n.aggregateBudgets&&ts(n.budget,"textBytes","textExceeded",t.text,`${r}.text`,n.diagnostics,eV,"Scene text values"),tr(t.x,`${r}.x`,n.diagnostics),tr(t.y,`${r}.y`,n.diagnostics),tr(t.fontSize,`${r}.fontSize`,n.diagnostics,{positive:!0}),void 0!==t.fontWeight&&tr(t.fontWeight,`${r}.fontWeight`,n.diagnostics,{positive:!0}),void 0!==t.letterSpacing&&tr(t.letterSpacing,`${r}.letterSpacing`,n.diagnostics),void 0!==t.display&&"literal"!==t.display&&"formatted"!==t.display&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.display`,"must be literal or formatted"),void 0===t.measurement||["prepared","fallback"].includes(String(t.measurement))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.measurement`,"must identify prepared or fallback measurement"),"prepared"!==t.measurement||e9(t.block)&&"px"===t.block.unit&&e9(t.block.prepared)||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.block`,"prepared text must retain its actual pixel block"),e9(t.block)){for(let e of(E(t.block)||te(n.diagnostics,"SCENE_FIDELITY",`${r}.block`,"must retain the actual immutable pixel text preparation"),["fontSize","fontWeight","letterSpacing"]))void 0!==t[e]&&t[e]!==t.block[e]&&te(n.diagnostics,"SCENE_FIDELITY",`${r}.block.${e}`,"must equal the retained text typography");for(let e of["width","height","fontSize","fontWeight","lineHeight"])tr(t.block[e],`${r}.block.${e}`,n.diagnostics,{nonNegative:!0});e9(t.textLayout)&&(t.block.width!==t.textLayout.width||t.block.height!==t.textLayout.height||t.block.lineHeight!==t.textLayout.lineHeight)&&te(n.diagnostics,"SCENE_FIDELITY",`${r}.textLayout`,"retained block differs from occupied text geometry")}if(void 0!==t.textLayout&&(e9(t.textLayout)?(n.external&&tt(t.textLayout,["width","height","lineHeight","offsetY"],`${r}.textLayout`,n.diagnostics),tr(t.textLayout.width,`${r}.textLayout.width`,n.diagnostics,{nonNegative:!0}),tr(t.textLayout.height,`${r}.textLayout.height`,n.diagnostics,{nonNegative:!0}),tr(t.textLayout.lineHeight,`${r}.textLayout.lineHeight`,n.diagnostics,{positive:!0}),tr(t.textLayout.offsetY,`${r}.textLayout.offsetY`,n.diagnostics)):te(n.diagnostics,"SCENE_DOCUMENT",`${r}.textLayout`,"must be measured text geometry")),["start","middle","end"].includes(String(t.anchor))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.anchor`,"must be start, middle, or end"),void 0!==t.baselineShift&&tr(t.baselineShift,`${r}.baselineShift`,n.diagnostics),void 0===t.dominantBaseline||["middle","central","hanging"].includes(String(t.dominantBaseline))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.dominantBaseline`,"must be middle, central, or hanging"),void 0!==t.fontStyle&&"italic"!==t.fontStyle&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.fontStyle`,"must be italic"),void 0===t.textDecoration||["underline","line-through","underline line-through"].includes(String(t.textDecoration))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.textDecoration`,"must be underline, line-through, or both"),void 0!==t.spans)if(Array.isArray(t.spans)&&0!==t.spans.length){t.spans.length>eq&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.spans`,"contains too many text runs");for(let e=0;e<Math.min(t.spans.length,eq);e++){let i=t.spans[e];if(!e9(i)){te(n.diagnostics,"SCENE_DOCUMENT",`${r}.spans[${e}]`,"must be a painted run");continue}tn(i.text,`${r}.spans[${e}].text`,n.diagnostics,{empty:!0,max:eG}),n.aggregateBudgets&&ts(n.budget,"textBytes","textExceeded",i.text,`${r}.spans[${e}].text`,n.diagnostics,eV,"Scene text values"),to({fill:i.fill},`${r}.spans[${e}]`,n.diagnostics,n.external)}}else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.spans`,"must be a non-empty run list");to(t.paint,`${r}.paint`,n.diagnostics,n.external);return}if("group"===c){if(n.native&&"string"==typeof t.role&&b(t.role)&&e9(t.identity)&&"string"==typeof t.identity.id&&t.identity.role===t.role&&n.native.groups.add(JSON.stringify([t.identity.id,t.role])),void 0!==t.paint&&(to(t.paint,`${r}.paint`,n.diagnostics,n.external),e9(t.paint)&&tt(t.paint,["opacity","fill"],`${r}.paint`,n.diagnostics)),!Array.isArray(t.children))return void te(n.diagnostics,"SCENE_DOCUMENT",`${r}.children`,"must be an array");t.children.length>eq&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.children`,"contains too many Scene nodes");let e=Math.min(t.children.length,Math.max(0,eq-n.nodeCount+1)),i="string"==typeof t.role&&b(t.role)?e9(t.identity)&&"string"==typeof t.identity.id&&t.identity.role===t.role?{id:t.identity.id,role:t.role}:void 0:a;for(let a=0;a<e;a++){let e=t.children[a];e9(e)?(tr(e.indent,`${r}.children[${a}].indent`,n.diagnostics,{nonNegative:!0}),tf(e.node,`${r}.children[${a}].node`,n,o+1,i)):te(n.diagnostics,"SCENE_DOCUMENT",`${r}.children[${a}]`,"must wrap a Scene node")}return void(n.external&&("string"!=typeof t.open||!/^<g(?:\s|>)/.test(t.open)||"</g>"!==t.close)&&te(n.diagnostics,"SCENE_SECURITY",r,"external containers must use a generated <g> wrapper"))}if("document"===c){if(void 0!==t.nonPaint){let e={accessibility:["title","desc"],stylesheet:["style"],"interaction-metadata":["title","desc"]}[String(t.nonPaint)];("content"!==t.element||!e||void 0===l||M(l).some(t=>!e.includes(t.name)))&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.nonPaint`,"must describe only closed non-painting metadata elements")}if(["open","title","description","definitions","content","close"].includes(String(t.element))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.element`,"has an unknown document element"),void 0!==t.markerResources)if(Array.isArray(t.markerResources)){t.markerResources.length>eq&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.markerResources`,"contains too many marker resources");for(let e=0;e<Math.min(t.markerResources.length,eq);e++){if(n.native&&n.markerIds.size>=eq)return void te(n.diagnostics,"SCENE_BOUNDS",`${r}.markerResources`,"contains too many aggregate marker resources");let i=t.markerResources[e],o=`${r}.markerResources[${e}]`;if(tm(i,o,n.diagnostics,n.external,n.budget)&&"string"==typeof i.id){let e=n.markerIds.get(i.id),t=n.domIds.get(i.id);e?te(n.diagnostics,"SCENE_MARKER",`${o}.id`,`duplicates marker resource "${i.id}"`):n.external&&t?te(n.diagnostics,"SCENE_ID",`${o}.id`,`collides with DOM id owned by ${t}`):n.gradientIds.has(i.id)?te(n.diagnostics,"SCENE_ID",`${o}.id`,`collides with gradient resource "${i.id}"`):n.markerIds.set(i.id,i)}}if(n.external&&"definitions"===t.element)try{let e=q(`<defs>
|
|
6
|
-
${i(t.markerResources)}
|
|
7
|
-
</defs>`);l!==e&&te(n.diagnostics,"SCENE_FIDELITY",r,"definitions must be generated from the typed marker resources")}catch{}}else te(n.diagnostics,"SCENE_MARKER",`${r}.markerResources`,"must be an array");if(void 0!==t.gradientResources)if("definitions"!==t.element&&te(n.diagnostics,"SCENE_PAINT",`${r}.gradientResources`,"are only valid on a definitions document mark"),Array.isArray(t.gradientResources)){t.gradientResources.length>eA.maxResources&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.gradientResources`,`contains more than ${eA.maxResources} gradient resources`);for(let e=0;e<Math.min(t.gradientResources.length,eA.maxResources);e++){if(n.native&&n.gradientIds.size>=eA.maxResources)return void te(n.diagnostics,"SCENE_BOUNDS",`${r}.gradientResources`,`contains more than ${eA.maxResources} aggregate gradient resources`);let i=t.gradientResources[e],o=`${r}.gradientResources[${e}]`;try{eP(i),n.gradientIds.has(i.id)||n.markerIds.has(i.id)||n.domIds.has(i.id)?te(n.diagnostics,"SCENE_ID",`${o}.id`,`duplicates SVG resource id "${i.id}"`):n.gradientIds.set(i.id,i)}catch(e){te(n.diagnostics,"SCENE_PAINT",o,e instanceof Error?e.message:String(e))}}if("definitions"===t.element)try{let e=[...Array.isArray(t.markerResources)&&t.markerResources.length>0?[i(t.markerResources)]:[],...t.gradientResources.length>0?[eR(t.gradientResources)]:[]].join(`
|
|
8
|
-
`),o=q(`<defs>
|
|
9
|
-
${e}
|
|
10
|
-
</defs>`);l!==o&&te(n.diagnostics,"SCENE_FIDELITY",r,"definitions must be generated from typed resources")}catch{}}else te(n.diagnostics,"SCENE_PAINT",`${r}.gradientResources`,"must be an array");n.aggregateBudgets&&("title"===t.element||"description"===t.element)&&(tn(t.text,`${r}.text`,n.diagnostics,{empty:!0,max:eG}),ts(n.budget,"textBytes","textExceeded",t.text,`${r}.text`,n.diagnostics,eV,"Scene text values")),n.external&&"close"===t.element&&"</svg>"!==l&&te(n.diagnostics,"SCENE_SECURITY",r,"external document close must be canonical");return}if(["solid","dotted","dashed","thick","invisible"].includes(String(t.lineStyle))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.lineStyle`,"has an unknown line style"),e9(t.endpoints)){for(let e of["from","to"])n.external&&void 0===t.endpoints[e]?te(n.diagnostics,"SCENE_REFERENCE",`${r}.endpoints.${e}`,"is required for external connectors"):void 0!==t.endpoints[e]&&tn(t.endpoints[e],`${r}.endpoints.${e}`,n.diagnostics,{externalId:n.external})&&n.endpointReferences.push({id:t.endpoints[e],path:`${r}.endpoints.${e}`});for(let e of["start","end"]){let i=t.endpoints[e];if(e9(i)&&(void 0!==i.point&&td(i.point,`${r}.endpoints.${e}.point`,n.diagnostics,n.budget,n.external),void 0!==i.id&&tn(i.id,`${r}.endpoints.${e}.id`,n.diagnostics,{externalId:n.external}),void 0!==i.portId&&tn(i.portId,`${r}.endpoints.${e}.portId`,n.diagnostics,{externalId:n.external}),void 0!==i.owner)){let o=`${r}.endpoints.${e}.owner`;if(e9(i.owner)){tn(i.owner.id,`${o}.id`,n.diagnostics),"string"==typeof i.owner.role&&(Object.hasOwn(P,i.owner.role)||eX.test(i.owner.role))||te(n.diagnostics,"SCENE_ROLE",`${o}.role`,"must be a Scene role");let r=t.endpoints["start"===e?"from":"to"];void 0!==r&&i.owner.id!==r&&te(n.diagnostics,"SCENE_FIDELITY",o,"must retain the authored endpoint identity"),n.ownerReferences.push({key:JSON.stringify([i.owner.id,i.owner.role]),path:o})}else te(n.diagnostics,"SCENE_REFERENCE",o,"must be a semantic owner")}}}else te(n.diagnostics,"SCENE_REFERENCE",`${r}.endpoints`,"must be a typed endpoint object");if(e9(t.relationship)?tn(t.relationship.kind,`${r}.relationship.kind`,n.diagnostics,{max:4096}):te(n.diagnostics,"SCENE_DOCUMENT",`${r}.relationship`,"must be a typed relationship"),e9(t.relationship)&&!["forward","reverse","bidirectional","undirected","self"].includes(String(t.relationship.direction))&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.relationship.direction`,"has an unknown connector direction"),e9(t.route)){if(tu(t.route.geometry,`${r}.route.geometry`,n.diagnostics,!1,0,n.budget,n.external),n.external&&e9(t.route.geometry)&&"path"===t.route.geometry.kind&&!Array.isArray(t.route.geometry.points)&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.route.geometry.points`,"external connector paths require deterministic routed points"),tr(t.route.bendRadius,`${r}.route.bendRadius`,n.diagnostics,{nonNegative:!0}),["authored","layout","family","projected"].includes(String(t.route.ownership))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.ownership`,"has an unknown route ownership"),"boolean"!=typeof t.route.closed&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.closed`,"must be boolean"),!0===t.route.closed&&e9(t.route.geometry)&&"path"!==t.route.geometry.kind&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.closed`,"closed connector topology requires path geometry"),void 0!==t.route.startTangent&&(td(t.route.startTangent,`${r}.route.startTangent`,n.diagnostics,n.budget,n.external),tc(t.route.startTangent,`${r}.route.startTangent`,n.diagnostics)),void 0!==t.route.endTangent&&(td(t.route.endTangent,`${r}.route.endTangent`,n.diagnostics,n.budget,n.external),tc(t.route.endTangent,`${r}.route.endTangent`,n.diagnostics)),Array.isArray(t.route.labelAnchors)){t.route.labelAnchors.length>eq&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.route.labelAnchors`,"contains too many points");let e=Math.min(t.route.labelAnchors.length,eq,Math.max(0,eK-n.budget.points+1));for(let i=0;i<e;i++)td(t.route.labelAnchors[i],`${r}.route.labelAnchors[${i}]`,n.diagnostics,n.budget,n.external)}else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.labelAnchors`,"must be an array");if(Array.isArray(t.route.contours)){(0===t.route.contours.length||t.route.contours.length>eq)&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.route.contours`,"must contain a bounded non-empty contour list");for(let e=0;e<Math.min(t.route.contours.length,eq);e++){let i=t.route.contours[e];if(!e9(i)){te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.contours[${e}]`,"must be typed contour semantics");continue}for(let[t,o]of(td(i.start,`${r}.route.contours[${e}].start`,n.diagnostics,n.budget,n.external),td(i.end,`${r}.route.contours[${e}].end`,n.diagnostics,n.budget,n.external),"boolean"!=typeof i.closed&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.contours[${e}].closed`,"must be boolean"),[["startTangent",i.startTangent],["endTangent",i.endTangent]])){if(void 0===o)continue;let i=`${r}.route.contours[${e}].${t}`;td(o,i,n.diagnostics,n.budget,n.external),tc(o,i,n.diagnostics)}}}else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route.contours`,"must be an array")}else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.route`,"must be a typed connector route");if(e9(t.stroke)){if(void 0===e(t.stroke.color)&&(n.external||!ta(t.stroke.color))&&te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.color`,"must be a safe non-fetching CSS paint"),ti(t.stroke.width,`${r}.stroke.width`,n.diagnostics,{nonNegative:!0,length:!0}),ti(t.stroke.opacity,`${r}.stroke.opacity`,n.diagnostics,{unitInterval:!0}),ti(t.stroke.miterLimit,`${r}.stroke.miterLimit`,n.diagnostics,{nonNegative:!0}),ti(t.stroke.pathLength,`${r}.stroke.pathLength`,n.diagnostics,{nonNegative:!0}),["butt","round","square"].includes(String(t.stroke.lineCap))||te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.lineCap`,"has an unknown line cap"),["arcs","bevel","miter","miter-clip","round"].includes(String(t.stroke.lineJoin))||te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.lineJoin`,"has an unknown line join"),void 0===t.stroke.mixBlendMode||["normal","multiply"].includes(String(t.stroke.mixBlendMode))||te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.mixBlendMode`,"must be normal or multiply"),"boolean"!=typeof t.stroke.nonScaling&&te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.nonScaling`,"must be boolean"),void 0!==t.stroke.encodesValue&&"boolean"!=typeof t.stroke.encodesValue&&te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.encodesValue`,"must be boolean"),void 0!==t.stroke.dash)if(e9(t.stroke.dash)){let e=t.stroke.dash.array;"string"==typeof e?e0.test(e.trim())||te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.dash.array`,"must be a finite numeric dash list"):Array.isArray(e)?e.forEach((e,t)=>ti(e,`${r}.stroke.dash.array[${t}]`,n.diagnostics,{nonNegative:!0})):te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.dash.array`,"must be a string or numeric array"),ti(t.stroke.dash.offset,`${r}.stroke.dash.offset`,n.diagnostics)}else te(n.diagnostics,"SCENE_PAINT",`${r}.stroke.dash`,"must be a dash descriptor")}else te(n.diagnostics,"SCENE_PAINT",`${r}.stroke`,"must be a typed connector stroke");if(e9(t.hit)?(tu(t.hit.geometry,`${r}.hit.geometry`,n.diagnostics,!1,0,n.budget,n.external),tr(t.hit.strokeWidth,`${r}.hit.strokeWidth`,n.diagnostics,{nonNegative:!0}),"boolean"!=typeof t.hit.closed&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.hit.closed`,"must be boolean"),["stroke","none"].includes(String(t.hit.pointerEvents))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.hit.pointerEvents`,"has unknown pointer-event semantics"),e9(t.route)&&"boolean"==typeof t.route.closed&&"boolean"==typeof t.hit.closed&&t.hit.closed!==t.route.closed&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.hit.closed`,"must match route.closed topology")):te(n.diagnostics,"SCENE_DOCUMENT",`${r}.hit`,"must be typed hit geometry"),Array.isArray(t.labels)){t.labels.length>eq&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.labels`,"contains too many connector labels");for(let i=0;i<Math.min(t.labels.length,eq);i++){let o=t.labels[i];if(!e9(o)){te(n.diagnostics,"SCENE_DOCUMENT",`${r}.labels[${i}]`,"must be a label descriptor");continue}if(n.external&&tt(o,["id","text","anchor","bounds","halo","clearance","paint","fontSize","textAnchor","visual"],`${r}.labels[${i}]`,n.diagnostics),void 0!==o.id&&tn(o.id,`${r}.labels[${i}].id`,n.diagnostics,{externalId:n.external}),tn(o.text,`${r}.labels[${i}].text`,n.diagnostics,{empty:!0,max:eG}),n.aggregateBudgets&&ts(n.budget,"textBytes","textExceeded",o.text,`${r}.labels[${i}].text`,n.diagnostics,eV,"Scene text values"),void 0!==o.anchor&&td(o.anchor,`${r}.labels[${i}].anchor`,n.diagnostics,n.budget,n.external),void 0!==o.bounds)if(e9(o.bounds)){for(let e of(n.external&&tt(o.bounds,["x0","y0","x1","y1"],`${r}.labels[${i}].bounds`,n.diagnostics),["x0","y0","x1","y1"]))tr(o.bounds[e],`${r}.labels[${i}].bounds.${e}`,n.diagnostics);"number"==typeof o.bounds.x0&&"number"==typeof o.bounds.x1&&o.bounds.x0>o.bounds.x1&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.labels[${i}].bounds`,"x0 must not exceed x1"),"number"==typeof o.bounds.y0&&"number"==typeof o.bounds.y1&&o.bounds.y0>o.bounds.y1&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.labels[${i}].bounds`,"y0 must not exceed y1")}else te(n.diagnostics,"SCENE_BOUNDS",`${r}.labels[${i}].bounds`,"must be a finite ordered box");if(void 0!==o.clearance&&tr(o.clearance,`${r}.labels[${i}].clearance`,n.diagnostics,{nonNegative:!0}),void 0===o.block||e9(o.block)&&E(o.block)||te(n.diagnostics,"SCENE_FIDELITY",`${r}.labels[${i}].block`,"must retain the actual immutable pixel text preparation"),void 0!==o.fontSize&&tr(o.fontSize,`${r}.labels[${i}].fontSize`,n.diagnostics,{positive:!0}),void 0!==o.fontWeight&&tr(o.fontWeight,`${r}.labels[${i}].fontWeight`,n.diagnostics,{positive:!0}),void 0!==o.letterSpacing&&tr(o.letterSpacing,`${r}.labels[${i}].letterSpacing`,n.diagnostics),void 0!==o.display&&"literal"!==o.display&&"formatted"!==o.display&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.labels[${i}].display`,"must be literal or formatted"),void 0===o.textAnchor||["start","middle","end"].includes(String(o.textAnchor))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.labels[${i}].textAnchor`,"must be start, middle, or end"),void 0!==o.paint&&to(o.paint,`${r}.labels[${i}].paint`,n.diagnostics,n.external),void 0!==o.halo&&(e9(o.halo)?(n.external&&tt(o.halo,["color","width"],`${r}.labels[${i}].halo`,n.diagnostics),tr(o.halo.width,`${r}.labels[${i}].halo.width`,n.diagnostics,{nonNegative:!0}),void 0!==o.halo.color&&void 0===e(o.halo.color)&&te(n.diagnostics,"SCENE_PAINT",`${r}.labels[${i}].halo.color`,"must be a safe non-fetching CSS paint")):te(n.diagnostics,"SCENE_DOCUMENT",`${r}.labels[${i}].halo`,"must be a halo descriptor")),void 0!==o.visual)if(e9(o.visual)&&["inline","companion"].includes(String(o.visual.kind)))if("companion"===o.visual.kind){let e=`${r}.labels[${i}].visual.markId`;tn(o.visual.markId,e,n.diagnostics,{externalId:n.external})&&n.companionLabelReferences.push({id:o.visual.markId,path:e})}else(void 0===o.anchor||void 0===o.paint||void 0===o.fontSize||void 0===o.textAnchor)&&te(n.diagnostics,"SCENE_DOCUMENT",`${r}.labels[${i}].visual`,"inline labels require anchor, paint, fontSize, and textAnchor");else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.labels[${i}].visual`,"must be inline or companion label ownership")}}if(e9(t.markers)){Array.isArray(t.markers.mid)||te(n.diagnostics,"SCENE_MARKER",`${r}.markers.mid`,"must be an array"),Array.isArray(t.markers.mid)&&t.markers.mid.length>eq&&te(n.diagnostics,"SCENE_BOUNDS",`${r}.markers.mid`,"contains too many mid markers");let e=[[t.markers.start,`${r}.markers.start`],[t.markers.end,`${r}.markers.end`]];if(Array.isArray(t.markers.mid))for(let n=0;n<Math.min(t.markers.mid.length,eq);n++)e.push([t.markers.mid[n],`${r}.markers.mid[${n}]`]);for(let[t,r]of e)void 0!==t&&tm(t,r,n.diagnostics,n.external,n.budget)&&e9(t)&&"string"==typeof t.id&&n.markerReferences.push({id:t.id,path:`${r}.id`,marker:t})}else te(n.diagnostics,"SCENE_MARKER",`${r}.markers`,"must be a typed marker set");if(!(!n.external&&!n.crossChecks&&n.native&&void 0!==$(t))){if(e9(t.terminalProjection)){for(let e of(["native","emulated","projected","lossy","unsupported"].includes(String(t.terminalProjection.realization))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.realization`,"has an unknown realization"),["line","polyline","path"].includes(String(t.terminalProjection.topology))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.topology`,"has an unknown topology"),tu(t.terminalProjection.geometry,`${r}.terminalProjection.geometry`,n.diagnostics,!1,0,void 0,n.external),["forward","reverse","bidirectional","undirected","self"].includes(String(t.terminalProjection.direction))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.direction`,"has an unknown direction"),["solid","dotted","dashed","thick","invisible"].includes(String(t.terminalProjection.lineStyle))||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.lineStyle`,"has an unknown line style"),["labels","strokeLosses","diagnostics"]))Array.isArray(t.terminalProjection[e])||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.${e}`,"must be an array");if(e9(t.terminalProjection.markers)&&Array.isArray(t.terminalProjection.markers.mid)||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.markers`,"must contain a mid-marker array"),e9(t.terminalProjection.markerPlacements))for(let e of["start","mid","end"]){let i=t.terminalProjection.markerPlacements[e];if(!Array.isArray(i)){te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.markerPlacements.${e}`,"must be an array");continue}for(let t=0;t<Math.min(i.length,eq);t++){let o=i[t];if(!e9(o)){te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.markerPlacements.${e}[${t}]`,"must be a marker placement");continue}tn(o.markerId,`${r}.terminalProjection.markerPlacements.${e}[${t}].markerId`,n.diagnostics,{externalId:n.external}),td(o.point,`${r}.terminalProjection.markerPlacements.${e}[${t}].point`,n.diagnostics,void 0,n.external),tr(o.contourIndex,`${r}.terminalProjection.markerPlacements.${e}[${t}].contourIndex`,n.diagnostics,{nonNegative:!0})}}else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.markerPlacements`,"must contain typed start/mid/end marker placements");for(let e of["endpoints","route","stroke","hit"])e9(t.terminalProjection[e])||te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection.${e}`,"must preserve typed connector semantics")}else te(n.diagnostics,"SCENE_DOCUMENT",`${r}.terminalProjection`,"must be a terminal projection");!n.external&&n.crossChecks&&function(e,t,r){if(!e9(e.route)||!e9(e.stroke)||!e9(e.markers)||!Array.isArray(e.markers.mid)||!Array.isArray(e.labels)||!e9(e.hit)||!e9(e.endpoints)||!e9(e.relationship)||!e9(e.terminalProjection)||!Array.isArray(e.terminalProjection.diagnostics))return;let n=e.route.geometry,i=A(n,e.route.closed),o=i.starts[0],a=i.ends.at(-1);for(let[n,i,s]of[["start",e.endpoints.start?.point,o],["end",e.endpoints.end?.point,a]])i&&s&&!w(i,s)&&te(r.diagnostics,"SCENE_FIDELITY",`${t}.endpoints.${n}.point`,"must equal the endpoint derived from connector geometry");let s=I(n,e.route.closed);e.route.contours.length!==s.length&&te(r.diagnostics,"SCENE_FIDELITY",`${t}.route.contours`,"must match the geometry-derived contour count");let d=!j(n);for(let n=0;n<Math.min(e.route.contours.length,s.length);n++){let i=e.route.contours[n],o=s[n];if(w(i.start,o.start)&&w(i.end,o.end)&&i.closed===o.closed||te(r.diagnostics,"SCENE_FIDELITY",`${t}.route.contours[${n}]`,"must match geometry-derived endpoint topology"),d)for(let e of["startTangent","endTangent"]){let a=i[e],s=o[e];(void 0===a!=(void 0===s)||a&&s&&!w(a,s,1e-9))&&te(r.diagnostics,"SCENE_FIDELITY",`${t}.route.contours[${n}].${e}`,"must match the tangent derived from linear route geometry")}}let c=e.route.contours[0]?.startTangent,l=e.route.contours.at(-1)?.endTangent;for(let[n,i,o]of[["startTangent",e.route.startTangent,c],["endTangent",e.route.endTangent,l]])(void 0===i!=(void 0===o)||i&&o&&!w(i,o,1e-9))&&te(r.diagnostics,"SCENE_FIDELITY",`${t}.route.${n}`,"must equal the corresponding contour tangent authority");try{let i=v({geometry:n,lineStyle:e.lineStyle,endpoints:e.endpoints,relationship:e.relationship,route:e.route,stroke:e.stroke,markers:e.markers,labels:e.labels,hit:e.hit,...e.transform?{transform:e.transform}:{},additionalDiagnostics:e.terminalProjection.diagnostics.slice(1)});(function e(t,r){if(Object.is(t,r))return!0;if(Array.isArray(t)||Array.isArray(r))return Array.isArray(t)&&Array.isArray(r)&&t.length===r.length&&t.every((t,n)=>e(t,r[n]));if(!e9(t)||!e9(r))return!1;let n=Object.keys(t).filter(e=>void 0!==t[e]).sort(),i=Object.keys(r).filter(e=>void 0!==r[e]).sort();return n.length===i.length&&n.every((n,o)=>n===i[o]&&e(t[n],r[n]))})(e.terminalProjection,i)||te(r.diagnostics,"SCENE_FIDELITY",`${t}.terminalProjection`,"must equal the canonical projection derived from connector semantics")}catch(e){te(r.diagnostics,"SCENE_FIDELITY",`${t}.terminalProjection`,e instanceof Error?e.message:String(e))}}(t,r,n)}}function tg(e,t,r){if(e9(e))for(let n of["fill","stroke"]){let i=ta(e[n]);i&&r.push({id:i,path:`${t}.${n}`})}}function th(e,t={}){return"external"===t.mode||"internal"===t.mode?t.mode:(e9(e)&&"string"==typeof e.family?O(e.family):void 0)?.kind==="family"?"external":"internal"}function ty(e,t={}){let r=[];if(tv(e,!1,r),"external"===th(e)&&te(r,"SCENE_DOCUMENT","scene.family","native admission requires a built-in family"),r.length>0)throw new eF(r);let n={artwork:[],groups:new Set,enclosures:new Map},i={...tE(r,!1,t.crossChecks??!1,!0),native:n},o,a=()=>{if(o)throw Error("Native Scene validation has already finished");if(r.length>0)throw new eF(r)},s=e=>{if(a(),!Number.isInteger(e)||e<0||e>eY)throw te(r,"SCENE_BOUNDS","scene.depth",`must be an integer nesting depth between 0 and ${eY}`),new eF(r)};return{node(e,t=0){if(a(),s(t),"group"===e.kind&&(!Array.isArray(e.children)||0!==e.children.length))throw te(r,"SCENE_DOCUMENT","scene.parts","native groups must be shallow headers with separately submitted children"),new eF(r);let n=`scene.parts[${i.nodeCount}]`;if(tf(e,n,i,t),r.length>0)throw new eF(r);let o="document"===e.kind?Y(e):tp(e,n,i);if(r.length>0)throw new eF(r);return o},depth:s,enclosure(e,t){a(),tn(e,"scene.enclosure.id",r),tn(t.id,"scene.enclosure.owner.id",r);let i=n.enclosures.get(e);if(i&&(i.id!==t.id||i.role!==t.role)?te(r,"SCENE_FIDELITY","scene.enclosure","artwork cannot have conflicting semantic enclosures"):n.enclosures.size>=eq?te(r,"SCENE_BOUNDS","scene.enclosure","contains too many semantic enclosure relations"):n.enclosures.set(e,{id:t.id,role:t.role}),r.length>0)throw new eF(r)},serialization(e){if(a(),eD(e,eZ)>eZ)throw te(r,"SCENE_DOCUMENT","scene.serialization","has an oversized SVG serialization"),new eF(r)},finish(){if(o)return o;for(let e of(tb(i),n.artwork)){let t=n.enclosures.get(e.id);t&&t.id===e.owner.id&&t.role===e.owner.role&&n.groups.has(JSON.stringify([t.id,t.role]))||te(r,"SCENE_FIDELITY",e.path,"owned artwork without DOM identity must be inside its matching semantic group")}return o=Object.freeze({valid:0===r.length,diagnostics:Object.freeze(r.map(e=>Object.freeze(e)))})}}}function tb(e){for(let t of e.paintReferences)e.gradientIds.has(t.id)||te(e.diagnostics,"SCENE_REFERENCE",t.path,`references undeclared gradient "${t.id}"`);for(let t of e.ownerReferences)e.subjects.has(t.key)||te(e.diagnostics,"SCENE_REFERENCE",t.path,"must reference an actual Scene subject identity and role");for(let t of e.companionLabelReferences){let r=e.ids.get(t.id);r?"text"!==r.kind&&te(e.diagnostics,"SCENE_REFERENCE",t.path,`must reference a Text mark; "${t.id}" is a ${r.kind} mark`):te(e.diagnostics,"SCENE_REFERENCE",t.path,`references unknown companion Text mark "${t.id}"`)}}function tE(e,t,r,n=t){return{diagnostics:e,external:t,aggregateBudgets:n,paintReferences:[],ids:new Map,subjects:new Set,ownerReferences:[],domIds:new Map,markerIds:new Map,gradientIds:new Map,markerReferences:[],endpointReferences:[],companionLabelReferences:[],budget:{textBytes:0,serializationBytes:0,points:0,textExceeded:!1,serializationExceeded:!1,pointsExceeded:!1,pointCollections:new WeakSet},crossChecks:r,nodeCount:0}}function tv(r,n,i){tn(r.family,"scene.family",i);let o=tr(r.width,"scene.width",i,n?{positive:!0}:{nonNegative:!0}),a=tr(r.height,"scene.height",i,n?{positive:!0}:{nonNegative:!0});if(void 0!==r.transparent&&"boolean"!=typeof r.transparent&&te(i,"SCENE_DOCUMENT","scene.transparent","must be boolean"),e9(r.colors)){for(let t of(n&&tt(r.colors,["bg","fg","line","accent","muted","surface","border","font","shadow","embedFontImport"],"scene.colors",i),["bg","fg","line","accent","muted","surface","border"]))("bg"===t||"fg"===t||void 0!==r.colors[t])&&void 0===e(r.colors[t])&&te(i,"SCENE_PAINT",`scene.colors.${t}`,"must be a safe non-fetching CSS paint");void 0!==r.colors.font&&void 0===t(r.colors.font)&&te(i,"SCENE_SECURITY","scene.colors.font","must be a safe non-fetching font family"),void 0!==r.colors.shadow&&"boolean"!=typeof r.colors.shadow&&te(i,"SCENE_DOCUMENT","scene.colors.shadow","must be boolean"),void 0!==r.colors.embedFontImport&&"boolean"!=typeof r.colors.embedFontImport&&te(i,"SCENE_DOCUMENT","scene.colors.embedFontImport","must be boolean")}else te(i,"SCENE_DOCUMENT","scene.colors","must be a DiagramColors object");return{widthOk:o,heightOk:a}}function tk(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}function t$(e){if("object"!=typeof e||null===e||Object.isFrozen(e))return e;for(let t of Object.values(e))t$(t);return Object.freeze(e)}var tx=globalThis.process?.env,tS=tx?.AGENTIC_MERMAID_SCENE_ASSERTIONS==="1",tN=new WeakSet;function tw(e){return tS||void 0!==e&&(tN.has(e)||"strict"===e.renderOptions.layoutSafety)}var tC=16*eL.maxNodes,tz=16*eL.maxNodes,tO=8*eL.maxTextBytes,t_=Object.freeze({...Object.freeze({maxObjects:4*eL.maxNodes,maxTextBytes:eL.maxTextBytes,maxArrayEntries:eL.maxNodes,maxAggregateArrayEntries:tz,maxDepth:4*eL.maxDepth,maxPropertiesPerObject:64,maxAggregateProperties:tC,maxPropertyKeyBytes:256,maxAggregatePropertyKeyBytes:tO}),maxObjects:8*eL.maxNodes,maxTextBytes:eL.maxTextBytes+eL.maxAggregateSerializationBytes+eL.maxFinalSvgBytes}),tT=new WeakMap;function tj(e,t,r=!0){tT.set(e,{mode:t,crossChecks:r})}function tM(){throw new eF([{code:"SCENE_DOCUMENT",path:"scene.family",message:"source-only browser admission requires a built-in family"}])}function tD(e,t,r){let n=function(e,t,r,n){let i=[];if(!e9(e))return Object.freeze({valid:!1,diagnostics:Object.freeze([{code:"SCENE_DOCUMENT",path:"scene",message:"must be a Scene document object"}])});let o="external"===th(e,t);if(o&&1)return te(i,"SCENE_DOCUMENT","scene.family","source-only browser admission requires a built-in family"),Object.freeze({valid:!1,diagnostics:Object.freeze(i)});o&&tt(e,["family","width","height","colors","transparent","parts"],"scene",i);let{widthOk:a,heightOk:s}=tv(e,o,i);if(Array.isArray(e.parts)){let t=tE(i,o,r);e.parts.length>eq&&te(i,"SCENE_BOUNDS","scene.parts","contains too many top-level Scene nodes");for(let r=0;r<Math.min(e.parts.length,eq);r++)tf(e.parts[r],`scene.parts[${r}]`,t,0);let n=o?(void 0).document(e,t,a,s):void 0;if(tb(t),0===i.length&&o&&(void 0).canonical(e,i),0===i.length&&r)try{let t=o?n:e.parts.map(Y).join(`
|
|
11
|
-
`);void 0!==t&&e$(t,o?"strict":"default")}catch(e){te(i,"SCENE_SECURITY","scene",e instanceof Error?e.message:String(e))}}else te(i,"SCENE_DOCUMENT","scene.parts","must be an array");return Object.freeze({valid:0===i.length,diagnostics:Object.freeze(i.map(e=>Object.freeze(e)))})}(e,{mode:t},r);if(!n.valid)throw new eF(n.diagnostics)}function tI(e){return tA(e)}function tA(e,t,r=tw()){return function(e,t,r,n,i=!1){let o="object"==typeof e&&null!==e?tT.get(e):void 0;i&&("external"===t||void 0!==o&&("external"===o.mode||"external"===th(e)))&&tM();let a="internal"!==t||r;if(void 0!==o&&o.mode===(t??th(e)))return("external"===o.mode||r)&&!o.crossChecks&&(n(e,o.mode,!0),tj(e,o.mode,!0)),e;let s=function(e,t,r="input"){let n=new WeakSet,i=new WeakMap,o=0,a=0,s=0,d=0,c=0,l=(e,r,u)=>{if("string"==typeof e){let r=Math.max(0,t.maxTextBytes-a),n=eD(e,r);if(n>r)throw Error(`External Scene text values exceed the aggregate ${t.maxTextBytes}-byte limit`);return a+=n,e}if(null===e||"object"!=typeof e){if("function"==typeof e||"symbol"==typeof e||"bigint"==typeof e)throw TypeError(`External Scene ${u} must be declarative data`);return e}if(r>t.maxDepth)throw Error("External Scene input object graph is too deeply nested");if(++o>t.maxObjects)throw Error("External Scene input object graph is too large");if(n.has(e))throw Error("External Scene input must be acyclic");let m=i.get(e);if(void 0!==m)return m;n.add(e);try{if(Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype)throw TypeError(`External Scene ${u} must be a plain array`);let n=Reflect.getOwnPropertyDescriptor(e,"length");if(!n||!("value"in n)||"number"!=typeof n.value||!Number.isSafeInteger(n.value)||n.value<0)throw TypeError(`External Scene ${u}.length must be a non-negative integer data property`);let o=n.value;if(o>t.maxArrayEntries)throw Error(`External Scene ${u} contains too many entries`);if((s+=o)>t.maxAggregateArrayEntries)throw Error(`External Scene input exceeds the aggregate ${t.maxAggregateArrayEntries}-array-entry limit`);let a=Reflect.ownKeys(e);if(a.length>o+1||!a.includes("length"))throw TypeError(`External Scene ${u} must not define custom array properties or iterators`);let d=new Map;for(let t of(d.set("length",n),a)){if("length"===t)continue;let r=Reflect.getOwnPropertyDescriptor(e,t);if(!r)throw TypeError(`External Scene ${u} has an unstable property descriptor`);d.set(t,r)}for(let e of a)if("length"!==e&&("string"!=typeof e||!/^(?:0|[1-9]\d*)$/.test(e)||Number(e)>=o))throw TypeError(`External Scene ${u} must not define custom array properties or iterators`);let c=Array(o);i.set(e,c),V(e,c);for(let e=0;e<o;e++){let t=d.get(String(e));if(!t)throw TypeError(`External Scene ${u} must not be sparse`);if(!("value"in t)||!t.enumerable)throw TypeError(`External Scene ${u}[${e}] must be an enumerable data property`);c[e]=l(t.value,r+1,`${u}[${e}]`)}return Object.freeze(c)}let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&null!==n)throw TypeError(`External Scene ${u} must be a plain object`);let o=Reflect.ownKeys(e);if(o.length>t.maxPropertiesPerObject)throw Error(`External Scene ${u} contains too many properties`);if((d+=o.length)>t.maxAggregateProperties)throw Error(`External Scene input exceeds the aggregate ${t.maxAggregateProperties}-property limit`);for(let e of o){if("string"!=typeof e)continue;let r=Math.max(0,t.maxAggregatePropertyKeyBytes-c),n=eD(e,Math.min(t.maxPropertyKeyBytes,r));if(n>t.maxPropertyKeyBytes)throw Error(`External Scene ${u} contains a property key longer than ${t.maxPropertyKeyBytes} bytes`);if(n>r)throw Error(`External Scene property keys exceed the aggregate ${t.maxAggregatePropertyKeyBytes}-byte limit`);c+=n}let a=Object.create(null);for(let t of(i.set(e,a),V(e,a),o)){let n;if("string"!=typeof t)throw TypeError(`External Scene ${u} must not contain symbol keys`);let i=Reflect.getOwnPropertyDescriptor(e,t);if(!i||!i.enumerable)throw TypeError(`External Scene ${u}.${t} must be an enumerable data property`);if("value"in i)n=i.value;else if(n=x(e,t,i),void 0===n)throw TypeError(`External Scene ${u}.${t} must be an enumerable data property`);Object.defineProperty(a,t,{value:l(n,r+1,`${u}.${t}`),enumerable:!0,configurable:!1,writable:!1})}return k(e,a),Object.freeze(a)}finally{n.delete(e)}};return l(e,0,r)}(e,t_,"scene");return i&&"external"===th(s)&&tM(),n(s,t,"internal"!==t||r),tj(s,t??th(s),a),s}(e,t,r,tD,!0)}var tU="backend-claim-matrix@4";function tP(){let e={bg:"#ffffff",fg:"#172033",line:"#334155",accent:"#a33b20"},t={id:"backend-conformance-arrow",shape:"arrow",geometry:{kind:"path",d:"M 0 0 L 8 4 L 0 8 Z"},size:{width:8,height:8},viewBox:{x:0,y:0,width:8,height:8},ref:{x:8,y:4},units:"userSpaceOnUse",orient:"auto",overflow:"visible",paint:{fill:"#a33b20",stroke:"#334155",strokeWidth:"1"}},r={id:"backend-conformance-gradient",units:"userSpaceOnUse",x1:0,y1:0,x2:120,y2:0,stops:[{offset:0,color:"#a33b20"},{offset:1,color:"#334155"}]},i=p({id:"backend-conformance-prelude",width:120,height:80,colors:e,transparent:!0,font:"Inter",hasMonoFont:!1},'<svg xmlns="http://www.w3.org/2000/svg" width="120" height="80" viewBox="0 0 120 80" role="img" aria-labelledby="backend-conformance-title backend-conformance-description">'),d=a({id:"backend-conformance-title",element:"title",text:"Backend conformance fixture",domId:"backend-conformance-title"}),l=a({id:"backend-conformance-description",element:"description",text:"A representative Scene document",domId:"backend-conformance-description"}),m=s({id:"backend-conformance-definitions",markerResources:[t],gradientResources:[r]},`<defs>
|
|
12
|
-
${n(t)}
|
|
13
|
-
${eB(r)}
|
|
14
|
-
</defs>`),f=K({id:"backend-conformance-node",role:"node",geometry:{kind:"rect",x:8,y:16,width:34,height:24,rx:3,ry:3},paint:{fill:"#f4efe6",stroke:"#334155",strokeWidth:"2"}}),g=u({id:"backend-conformance-container",role:"group",open:"<g>",paint:{opacity:"0.8",fill:"#f4efe6"},close:"</g>",children:[{node:f,indent:2}]}),h=K({id:"backend-conformance-data-mark",role:"bar",geometry:{kind:"rect",x:92,y:48,width:16,height:20},paint:{fill:"#a33b20",stroke:"#334155",strokeWidth:"1"},channels:{value:.75,category:"fixture"}}),y=Z({id:"backend-conformance-relation",role:"edge",geometry:{kind:"path",d:"M 42 28 L 62 14 Q 66 12 70 14 L 90 28",points:[{x:42,y:28},{x:66,y:12},{x:90,y:28}],markerMidpoints:[{x:62,y:14},{x:70,y:14}]},lineStyle:"dashed",paint:{fill:"none",stroke:"#334155",strokeWidth:"2",opacity:"0.65",strokeLinecap:"square",strokeLinejoin:"bevel",strokeMiterlimit:"7",strokeDasharray:"6 3",strokeDashoffset:"2",vectorEffect:"non-scaling-stroke",paintOrder:"stroke fill"},endpoints:{from:"backend-conformance-node",to:"backend-conformance-data-mark"},relationship:{kind:"dependency",direction:"forward"},route:{ownership:"layout",bendRadius:4,labelAnchors:[{x:66,y:8}],contours:[{start:{x:42,y:28},end:{x:90,y:28},closed:!1,startTangent:{x:.8192319205190405,y:-.5734623443633283},endTangent:{x:.8192319205190405,y:.5734623443633283}}]},stroke:{opacity:.65,dash:{array:"6 3",offset:2},lineCap:"square",lineJoin:"bevel",miterLimit:7,pathLength:77,paintOrder:"stroke fill",mixBlendMode:"multiply",nonScaling:!0},markers:{start:t,mid:[t],end:t},labels:[{id:"backend-conformance-relation-label",text:"depends on",anchor:{x:66,y:8},clearance:2,halo:{color:"#ffffff",width:3},paint:{fill:"#172033"},fontSize:11,textAnchor:"middle",visual:{kind:"inline"}}]}),b=Z({id:"backend-conformance-freehand-relation",role:"edge",geometry:{kind:"line",x1:42,y1:58,x2:90,y2:58},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2",strokeLinecap:"square",strokeLinejoin:"miter",strokeMiterlimit:"7",vectorEffect:"non-scaling-stroke"},endpoints:{from:"backend-conformance-node",to:"backend-conformance-data-mark"},relationship:{kind:"association",direction:"forward"},stroke:{lineCap:"square",lineJoin:"miter",miterLimit:7,nonScaling:!0},transform:{kind:"rotate",angle:90,cx:42,cy:58}}),E=Z({id:"backend-conformance-closed-relation",role:"edge",geometry:{kind:"path",d:"M 10 65 L 25 50 L 40 65 Z",points:[{x:10,y:65},{x:25,y:50},{x:40,y:65}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},route:{ownership:"authored",closed:!0}}),v=Z({id:"backend-conformance-multi-relation",role:"edge",geometry:{kind:"path",d:"M 8 72 L 28 72 M 52 72 L 72 72",points:[{x:8,y:72},{x:28,y:72},{x:52,y:72},{x:72,y:72}],subpaths:[{points:[{x:8,y:72},{x:28,y:72}],closed:!1},{points:[{x:52,y:72},{x:72,y:72}],closed:!1}]},lineStyle:"solid",paint:{fill:"none",stroke:"#334155",strokeWidth:"2"},markers:{start:t,mid:[],end:t}}),k=o({id:"backend-conformance-text",role:"member",text:"Fixture label",x:25,y:31,fontSize:12,anchor:"middle",paint:{fill:"#172033"},baselineShift:0});return t$({doc:{family:"backend-conformance",width:120,height:80,colors:e,transparent:!1,parts:[i,d,l,m,g,h,y,k,c()]},context:{seed:24301,style:{stroke:"freehand",fill:"wash",roughness:1,bowing:1,passes:2,strokeWidth:1.5,hachureAngle:-41,hachureGap:5,fillWeight:.8,washOpacity:.3,washEdge:.34,backdrop:"plain"}},probes:[{primitive:"document",node:i,requiredFragments:["<svg","backend-conformance-title"]},{primitive:"marker",node:m,requiredFragments:['id="backend-conformance-arrow"']},{primitive:"container",node:g,requiredFragments:['data-id="backend-conformance-container"','data-id="backend-conformance-node"']},{primitive:"shape",node:f,requiredFragments:['data-id="backend-conformance-node"','data-role="node"']},{primitive:"data-mark",node:h,requiredFragments:['data-id="backend-conformance-data-mark"','data-role="bar"']},{primitive:"connector",node:y,requiredFragments:['data-id="backend-conformance-relation"','data-role="edge"']},{primitive:"text",node:k,requiredFragments:['data-id="backend-conformance-text"',"Fixture label"]}],nodes:{root:i,marker:m,shape:f,container:g,dataMark:h,richConnector:y,freehandConnector:b,closedConnector:E,multiSubpathConnector:v,label:k}})}function tB(e){return 0===e.length?void 0:`missing ${e.join(", ")}`}function tR(e,t,r){return e?{passed:e,observation:t}:{passed:e,observation:t,diagnostic:r}}function tL(e,t){return e.split(t).length-1}function tF(e,t){let r=e.drawNode(t,tX.context);return e7(r,"backend conformance drawNode output"),r}function tW(e){let t=e.render(tX.doc,tX.context);return e7(t,"backend conformance render output"),t}function tq(e,t){let r=e.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??"";return/\sstroke-opacity="0"/.test(r)?e.split(`
|
|
15
|
-
`).slice(t.split(`
|
|
16
|
-
`).length).join(`
|
|
17
|
-
`):e}function tY(e,t,r,n=()=>!0){let i=tF(e,r),o=tq(i,Y(r)),a="text"===r.kind?i.includes(r.text)&&i.includes(`x="${r.x}"`)&&i.includes(`y="${r.y}"`):"shape"===r.kind&&"rect"===r.geometry.kind?i.includes(`x="${r.geometry.x}"`)&&i.includes(`y="${r.geometry.y}"`)&&i.includes(`width="${r.geometry.width}"`)&&i.includes(`height="${r.geometry.height}"`):"connector"===r.kind&&"line"===r.route.geometry.kind?i.includes(`x1="${r.route.geometry.x1}"`)&&i.includes(`y1="${r.route.geometry.y1}"`)&&i.includes(`x2="${r.route.geometry.x2}"`)&&i.includes(`y2="${r.route.geometry.y2}"`):"connector"===r.kind&&"path"===r.route.geometry.kind?i.includes(`d="${r.route.geometry.d}"`):i===Y(r),s="native"===t.realization?a:"emulated"===t.realization&&i!==Y(r)&&o.includes("<path"),d="backend:hybrid"!==t.target||"shape"!==r.kind||i.includes("fill-opacity=")&&i.includes('stroke="none"');return tR(s&&d&&n(i,o),(t.realization,""),`backend output did not demonstrate ${t.realization} ${t.primitive}/${t.feature}`)}function tG(e,t,r,n){let i="lossy"===t.realization?tX.nodes.freehandConnector:tX.nodes.richConnector,o=tF(e,i),a=tq(o,Y(i));return"lossy"===t.realization?tR(o!==Y(i)&&a.includes('stroke="none"')&&!a.includes(`${r}="`),"",`lossy ${r} projection was not observable on the visible freehand ribbon`):tR(("native"===t.realization?o.includes('data-id="backend-conformance-relation"'):o!==Y(i))&&a.includes(`${r}="${n}"`),(t.realization,""),`${r}=${n} was not preserved by the ${t.realization} realization`)}function tV(e){return[e.primitive,e.feature,e.operation].join("/")}Object.freeze(["draw-node-determinism","draw-node-semantics","document-determinism","single-svg-document","finite-serialization","output-security","document-semantics","container-semantics","shape-semantics","text-semantics","connector-semantics","marker-semantics","data-mark-semantics","capability-claims"]);var tK=Object.freeze({"document/identity/serialize":e=>{let t=tW(e);return tR(1===tL(t,"<svg")&&t.includes('viewBox="0 0 120 80"')&&t.trimEnd().endsWith("</svg>"),"","document envelope or bounds were not preserved")},"document/resources/serialize":e=>{let t=tW(e);return tR(t.includes("<defs>")&&t.includes('id="backend-conformance-arrow"')&&t.includes('<linearGradient id="backend-conformance-gradient"')&&ek(t).ok,"","document resources were missing or unsafe")},"document/interaction/accessibility":e=>{let t=tW(e);return tR(t.includes('role="img"')&&t.includes('aria-labelledby="backend-conformance-title backend-conformance-description"')&&t.includes('<title id="backend-conformance-title">Backend conformance fixture</title>')&&t.includes('<desc id="backend-conformance-description">A representative Scene document</desc>'),"","document accessibility projection was incomplete")},"text/geometry/render":(e,t)=>tY(e,t,tX.nodes.label,e=>e.includes('x="25"')&&e.includes('y="31"')&&e.includes('font-size="12"')),"text/paint/render":(e,t)=>tY(e,t,tX.nodes.label,e=>e.includes('fill="#172033"')),"text/labels/accessibility":e=>tR(tF(e,tX.nodes.label).includes("Fixture label"),"","text label was not serialized"),"text/identity/serialize":e=>{let t=tF(e,tX.nodes.label);return tR(t.includes('data-id="backend-conformance-text"')&&t.includes('data-role="member"'),"","text DOM identity was lost")},"shape/geometry/render":(e,t)=>tY(e,t,tX.nodes.shape),"shape/paint/render":(e,t)=>tY(e,t,tX.nodes.shape,e=>e.includes("#334155")&&e.includes("#f4efe6")),"shape/identity/serialize":e=>{let t=tF(e,tX.nodes.shape);return tR(t.includes('data-id="backend-conformance-node"')&&t.includes('data-role="node"'),"","shape DOM identity was lost")},"container/geometry/render":(e,t)=>{let r=tF(e,tX.nodes.container);return tR("native"===t.realization&&r.startsWith("<g ")&&r.trimEnd().endsWith("</g>")&&r.includes('data-id="backend-conformance-node"'),"","container boundary/child geometry was not preserved as a native wrapper")},"container/paint/render":(e,t)=>{let r=tF(e,tX.nodes.container);return tR("native"===t.realization&&r.includes('opacity="0.8"')&&r.includes('fill="#f4efe6"'),"","container paint cascade was not preserved as a native wrapper")},"container/identity/serialize":e=>{let t=tF(e,tX.nodes.container);return tR(t.includes('data-id="backend-conformance-container"')&&t.includes('data-role="group"'),"","container DOM identity was lost")},"connector/geometry/render":(e,t)=>{let r=tX.nodes.richConnector,n=tF(e,r),i=tq(n,Y(r));return tR("native"===t.realization?"path"===r.route.geometry.kind&&n.includes(`d="${r.route.geometry.d}"`):"lossy"===t.realization&&n!==Y(r)&&n.includes("Q 66 12 70 14")&&!i.includes("Q 66 12 70 14"),(t.realization,""),"connector geometry realization did not match its claim")},"connector/stroke/render":(e,t)=>tY(e,t,tX.nodes.freehandConnector,e=>e.includes("#334155")),"connector/transform/render":(e,t)=>{let r=tX.nodes.freehandConnector,n=tF(e,r),i=tq(n,Y(r));return tR(n.includes('transform="rotate(90 42 58)"')&&eM(r,{x:42,y:82})&&!eM(r,{x:66,y:58})&&("native"===t.realization?!/\sstroke-opacity="0"/.test(n.match(/^\s*<(?:line|polyline|path)\b[^>]*>/)?.[0]??""):"emulated"===t.realization&&i.startsWith('<g transform="rotate(90 42 58)">')),"","connector transform was not preserved by both rendering and interaction")},"connector/topology/render":(e,t)=>{let r=tX.nodes.richConnector,n=tF(e,r),i=tq(n,Y(r));return tR("native"===t.realization?"path"===r.route.geometry.kind&&n.includes(`d="${r.route.geometry.d}"`):"lossy"===t.realization&&n!==Y(r)&&n.includes("Q 66 12 70 14")&&!i.includes("Q 66 12 70 14"),(t.realization,""),"connector topology realization did not match its claim")},"connector/subpaths/render":(e,t)=>{let r=tX.nodes.multiSubpathConnector,n=tF(e,r),i=tq(n,Y(r)),o=eM(r,{x:18,y:72})&&eM(r,{x:62,y:72})&&!eM(r,{x:40,y:72})&&2===r.route.contours.length&&r.route.contours.every(e=>e.startTangent?.x===1&&e.endTangent?.x===1),a="native"===t.realization?2===tL(n.match(/^\s*<path\b[^>]*>/)?.[0]??"","M "):"emulated"===t.realization&&n!==Y(r)&&tL(i,"<path")>=2;return tR(o&&a,"","connector subpath boundaries were not preserved")},"connector/closedness/render":(e,t)=>{let r=tX.nodes.closedConnector,n=tF(e,r),i=tq(n,Y(r));return tR(eM(r,{x:25,y:65})&&("native"===t.realization?/\sZ(?:\s|"|")/.test(n.match(/^\s*<path\b[^>]*>/)?.[0]??""):"lossy"===t.realization&&n!==Y(r)&&/\sZ(?:\s|"|")/.test(n.slice(0,n.indexOf(`
|
|
18
|
-
`)))&&!i.includes("M 10 65 L 25 50 L 40 65 Z")),(t.realization,""),"output did not demonstrate the declared closedness realization")},"connector/bend-radius/render":(e,t)=>{let r=tX.nodes.richConnector,n=tF(e,r),i=tq(n,Y(r));return tR(n.includes("Q 66 12 70 14")&&4===r.route.bendRadius&&("native"===t.realization?!/\sstroke-opacity="0"/.test(n.match(/^\s*<path\b[^>]*>/)?.[0]??""):"lossy"===t.realization&&n!==Y(r)&&!i.includes("Q 66 12 70 14")),(t.realization,""),"bend-radius realization did not match the declared capability")},"connector/stroke-opacity/render":(e,t)=>tG(e,t,"stroke-opacity","0.65"),"connector/stroke-cap/render":(e,t)=>tG(e,t,"stroke-linecap","square"),"connector/stroke-join/render":(e,t)=>tG(e,t,"stroke-linejoin","bevel"),"connector/stroke-miter/render":(e,t)=>tG(e,t,"stroke-miterlimit","7"),"connector/dash-array/render":(e,t)=>tG(e,t,"stroke-dasharray","6 3"),"connector/dash-offset/render":(e,t)=>tG(e,t,"stroke-dashoffset","2"),"connector/dash-restart/render":(e,t)=>{let r=tX.nodes.richConnector,n=tq(tF(e,r),Y(r)),i=tL(n,'stroke-dasharray="6 3"'),o=tL(n,"M");return tR("native"===t.realization?1===i:"lossy"===t.realization&&i>=1&&o>1,(t.realization,""),"dash restart boundaries did not match the declared realization")},"connector/path-length/render":(e,t)=>{let r=tX.nodes.richConnector,n=tq(tF(e,r),Y(r)),i=tL(n,'pathLength="77"'),o=tL(n,"M");return tR("native"===t.realization?1===i:"lossy"===t.realization&&i>=1&&o>1,(t.realization,""),"pathLength behavior did not match the declared realization")},"connector/paint-order/render":(e,t)=>tG(e,t,"paint-order","stroke fill"),"connector/compositing/render":(e,t)=>tG(e,t,"style","mix-blend-mode:multiply"),"connector/non-scaling-stroke/render":(e,t)=>tG(e,t,"vector-effect","non-scaling-stroke"),"connector/marker-orientation/render":(e,t)=>{let r=tW(e);if("unsupported"===t.realization)return tR(r.includes('orient="auto"')&&!r.includes('marker-start="url(#backend-conformance-arrow)"')&&!r.includes('marker-mid="url(#backend-conformance-arrow)"')&&!r.includes('marker-end="url(#backend-conformance-arrow)"'),"","backend declared connector marker orientation unsupported but attached the marker");let n=r.includes('orient="auto"')&&r.includes('marker-start="url(#backend-conformance-arrow)"')&&r.includes('marker-mid="url(#backend-conformance-arrow)"')&&r.includes('marker-end="url(#backend-conformance-arrow)"'),i="projected"!==t.realization||r.includes('markerUnits="userSpaceOnUse"');return tR(("native"===t.realization||"projected"===t.realization)&&n&&i,(t.realization,""),"marker orientation/carrier projection did not match the declaration")},"connector/marker-overflow/render":(e,t)=>{let r=tW(e),n=r.includes('marker-start="url(#backend-conformance-arrow)"')&&r.includes('marker-end="url(#backend-conformance-arrow)"');return"unsupported"===t.realization?tR(r.includes('overflow="visible"')&&!n&&!r.includes('marker-mid="url(#backend-conformance-arrow)"'),"","backend declared connector marker overflow unsupported but attached the marker"):tR(("native"===t.realization||"projected"===t.realization)&&r.includes('overflow="visible"')&&n,(t.realization,""),"marker overflow or its connector attachment was not preserved")},"connector/endpoints/serialize":e=>{let t=tF(e,tX.nodes.richConnector);return tR(t.includes('data-from="backend-conformance-node"')&&t.includes('data-to="backend-conformance-data-mark"'),"","connector endpoint identities were not serialized")},"connector/direction/serialize":e=>{let t=tF(e,tX.nodes.richConnector);return tR(t.includes('data-relationship="dependency"')&&t.includes('data-direction="forward"'),"","connector relationship direction was not serialized")},"connector/labels/accessibility":e=>tR(tF(e,tX.nodes.richConnector).includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"","connector label was absent from accessibility output"),"connector/labels/render":(e,t)=>{let r=tF(e,tX.nodes.richConnector);return tR("native"===t.realization&&r.includes('data-id="backend-conformance-relation-label"')&&r.includes('data-connector-label-for="backend-conformance-relation"')&&r.includes('x="66" y="6"')&&r.includes('font-size="11"')&&r.includes('fill="#172033"')&&r.includes('stroke="#ffffff"')&&r.includes('stroke-width="3"')&&r.includes('paint-order="stroke fill"')&&r.includes(">depends on</text>"),"","connector label visual semantics were not preserved")},"connector/relation/accessibility":e=>{let t=tF(e,tX.nodes.richConnector);return tR(t.includes('data-from="backend-conformance-node"')&&t.includes('data-to="backend-conformance-data-mark"')&&t.includes('role="graphics-symbol"')&&t.includes('aria-roledescription="relation"')&&t.includes('aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"'),"","connector relation accessibility semantics were lost")},"connector/markers/render":(e,t)=>{let r=tF(e,tX.nodes.richConnector);return"unsupported"===t.realization?tR(!r.includes('marker-start="url(#backend-conformance-arrow)"')&&!r.includes('marker-mid="url(#backend-conformance-arrow)"')&&!r.includes('marker-end="url(#backend-conformance-arrow)"'),"","backend declared connector markers unsupported but still serialized one"):tR(("native"===t.realization||"projected"===t.realization)&&r.includes('marker-start="url(#backend-conformance-arrow)"')&&r.includes('marker-mid="url(#backend-conformance-arrow)"')&&r.includes('marker-end="url(#backend-conformance-arrow)"'),(t.realization,""),"connector marker projection did not match the declaration")},"connector/interaction/hit-test":e=>{let t=tX.nodes.freehandConnector;return tR(tF(e,t).includes('data-id="backend-conformance-freehand-relation"')&&eM(t,{x:42,y:82})&&!eM(t,{x:66,y:58}),"","connector carrier or typed hit geometry was not preserved")},"connector/hit-geometry/hit-test":e=>{let t=tX.nodes.multiSubpathConnector;return tR(tF(e,t).includes('data-id="backend-conformance-multi-relation"')&&eM(t,{x:18,y:72})&&!eM(t,{x:40,y:72}),"","connector hit geometry did not preserve typed contour boundaries")},"connector/identity/serialize":e=>{let t=tF(e,tX.nodes.richConnector);return tR(t.includes('data-id="backend-conformance-relation"')&&t.includes('data-role="edge"'),"","connector DOM identity was lost")},"marker/geometry/render":(e,t)=>{let r=tF(e,tX.nodes.marker);return tR(("native"===t.realization||"projected"===t.realization)&&r.includes("M 0 0 L 8 4 L 0 8 Z")&&r.includes('viewBox="0 0 8 8"'),(t.realization,""),"marker geometry was not present in backend output")},"marker/paint/render":(e,t)=>{let r=tF(e,tX.nodes.marker);return tR(("native"===t.realization||"projected"===t.realization)&&r.includes('fill="#a33b20"')&&r.includes('stroke="#334155"'),(t.realization,""),"marker paint was not present in backend output")},"marker/identity/serialize":e=>tR(tF(e,tX.nodes.marker).includes('id="backend-conformance-arrow"'),"","marker resource identity was lost"),"data-mark/geometry/render":(e,t)=>tY(e,t,tX.nodes.dataMark),"data-mark/paint/render":(e,t)=>tY(e,t,tX.nodes.dataMark,e=>e.includes("#a33b20")&&e.includes("#334155")),"data-mark/identity/serialize":e=>{let t=tF(e,tX.nodes.dataMark);return tR(t.includes('data-id="backend-conformance-data-mark"')&&t.includes('data-role="bar"'),"","quantitative mark DOM identity was lost")}}),tZ=Symbol();function tH(e,t,r){return e[tZ]?.(t,r)??r}function tJ(e,t,r,n){return[e,...n.map(e=>G(e.serialized,e.indent)),t].join(r)}function tQ(e,t){return!t.style||e.transparent?"":`<rect width="${y(e.width)}" height="${y(e.height)}" fill="var(--bg)" data-backdrop="page" />`}var tX,t0,t1={id:"default",capabilities:eO("backend:default","crisp"),drawNode:e=>Y(e),render(e,t){let r=tI(e),n=tQ(r,t);return r.parts.map((e,r)=>{let i=tH(t,e,Y(e));return n&&0===r?`${i}
|
|
19
|
-
${n}`:i}).join(`
|
|
20
|
-
`)}},t2=new WeakSet([t1.render]),t3=Object.getOwnPropertyDescriptors(t1);function t4(e){return e===t1&&t2.has(e.render)}function t5(e){return void 0!==t0&&e===t0}var t6,t8="1.0.0",t7=Object.freeze({core:N,scene:"^2.0.0"}),t9=Object.freeze({owner:"agentic-mermaid",source:"built-in",reference:"src/scene/backend.ts"}),re=Object.freeze({owner:"host",source:"in-process"}),rt=new Map,rr=new Map,rn=new Map,ri=null;function ro(e,t){if(e.passed)return;let r=e.checks.filter(e=>!e.passed).map(e=>`${e.id}${e.diagnostic?`: ${e.diagnostic}`:""}`);throw Error(`Built-in backend "${t}" failed SVG conformance: ${r.join("; ")}`)}function ra(e){(function(){if(null!==ri)throw Error(`Backend registry mutation is forbidden while candidate "${ri}" is undergoing conformance`)})(),ri="<built-in>";try{var t,r,n;let i,o,a,s=e.id,d=C("backend",s);ri=d;let c=rr.get(s);if(void 0!==c)throw Error(`Backend input name "${s}" already selects "${c}"`);let l=function(e){if(e!==t1)return!1;for(let t of["id","capabilities","drawNode","render"]){let r=Object.getOwnPropertyDescriptor(e,t);if(!r||!("value"in r)||r.value!==t3[t].value)return!1}return!0}(e);if(!Array.isArray(e.capabilities))throw Error(`Backend "${e.id}" must declare capability claims`);let u=eT(e.capabilities);if(!u.valid)throw Error(`Backend "${e.id}" has invalid capabilities: ${u.diagnostics.join("; ")}`);if(0===e.capabilities.length)throw Error(`Backend "${e.id}" must declare capability claims`);if(e.capabilities.find(e=>e.target!==d))throw Error(`Backend "${e.id}" capability target must be "${d}"`);let m=e.capabilities.find(e=>!e.evidence?.trim());if(m)throw Error(`Backend "${e.id}" capability ${m.primitive}/${m.feature}/${m.operation} must declare evidence`);for(let{primitive:t,feature:r,operation:n}of ew)if(!e.capabilities.some(e=>e.primitive===t&&e.feature===r&&e.operation===n))throw Error(`Backend "${e.id}" must declare an evidenced essential ${t}/${r}/${n} capability`);let p=(o=!1,{running:()=>o,report:()=>{if(i)return i;let t=ri;ri=d,o=!0;try{i=function(e,t=e.id){var r;tX??=W(void 0,tP);let n=[],i=(e,t,r)=>{n.push(Object.freeze({id:e,passed:t,...r?{diagnostic:r}:{}}))},o=[],a=[];for(let t of tX.probes)try{let r=tF(e,t.node),n=tF(e,t.node);if("string"!=typeof r||"string"!=typeof n){o.push(`${t.primitive} returned a non-string`),a.push(`${t.primitive} returned a non-string`);continue}r!==n&&o.push(`${t.primitive} changed between identical calls`);let i=t.requiredFragments.filter(e=>!r.includes(e));i.length>0&&a.push(`${t.primitive} ${tB(i)}`)}catch(r){let e=`${t.primitive} threw ${r instanceof Error?r.message:String(r)}`;o.push(e),a.push(e)}i("draw-node-determinism",0===o.length,o.join("; ")||void 0),i("draw-node-semantics",0===a.length,a.join("; ")||void 0);let s="",d="",c;try{s=tW(e),d=tW(e),"string"!=typeof s||"string"!=typeof d?(c="render must return a string",s="string"==typeof s?s:"",d="string"==typeof d?d:""):s!==d&&(c="render changed between identical calls")}catch(e){c=`render threw ${e instanceof Error?e.message:String(e)}`}i("document-determinism",void 0===c,c);let l=z("xml-envelope",r=s,()=>eu(r));i("single-svg-document",l,l?void 0:"render must return one well-formed namespaced SVG document");let u=s.match(/\b(?:NaN|Infinity|undefined)\b/)?.[0];i("finite-serialization",!u,u?`serialized ${u}`:void 0);let m=ek(s),p;try{e$(s,"default")}catch(e){p=e instanceof Error?e.message:String(e)}let f=m.ok&&void 0===p;for(let[e,t]of(i("output-security",f,f?void 0:[p,m.ok?void 0:`unsafe SVG constructs: ${m.refs.join(", ")}`].filter(Boolean).join("; ")),[["document-semantics",['aria-labelledby="backend-conformance-title backend-conformance-description"','<title id="backend-conformance-title">Backend conformance fixture</title>','<desc id="backend-conformance-description">A representative Scene document</desc>']],["container-semantics",['data-id="backend-conformance-container"','data-role="group"']],["shape-semantics",['data-id="backend-conformance-node"','data-role="node"']],["text-semantics",['data-id="backend-conformance-text"','data-role="member"',"Fixture label"]],["connector-semantics",['data-id="backend-conformance-relation"','data-role="edge"','data-from="backend-conformance-node"','data-to="backend-conformance-data-mark"','role="graphics-symbol"','aria-roledescription="relation"','aria-label="backend-conformance-node to backend-conformance-data-mark: depends on"']],["marker-semantics",['id="backend-conformance-arrow"']],["data-mark-semantics",['data-id="backend-conformance-data-mark"','data-role="bar"']]])){let r=t.filter(e=>!s.includes(e));i(e,0===r.length,tB(r))}let g=e.capabilities.map(t=>{let r=e_(t),n=tK[tV(t)],i={claimKey:r,target:t.target,primitive:t.primitive,feature:t.feature,operation:t.operation,realization:t.realization,...t.diagnostic?{limitation:t.diagnostic}:{}};if(!n)return ex.includes(t.primitive)&&eN.includes(t.feature)&&eS.includes(t.operation)?{...i,status:"failed",diagnostic:"No executable witness is registered for this core claim."}:{...i,status:"unverified-extension",diagnostic:"Namespaced extension claim is outside the built-in witness vocabulary."};let o=`${tU}/${tV(t)}`;try{let r=n(e,t);return{...i,witnessId:o,status:r.passed?"passed":"failed",observation:r.observation,...r.diagnostic?{diagnostic:r.diagnostic}:{}}}catch(e){return{...i,witnessId:o,status:"failed",diagnostic:`Witness threw ${e instanceof Error?e.message:String(e)}`}}}),h=g.filter(e=>"failed"===e.status);return i("capability-claims",0===h.length,h.map(e=>`${e.primitive}/${e.feature}/${e.operation}: ${e.diagnostic??"failed"}`).join("; ")||void 0),t$({version:4,fixtureId:tU,backendId:t,contracts:{scene:2,outputSecurity:2},directOutputs:["svg"],passed:n.every(e=>e.passed),checks:n,claims:g})}(l?function(e){let{id:t,capabilities:r,drawNode:n,render:i}=e,o;return{id:t,capabilities:r,drawNode:(t,r)=>n.call(e,t,r),render(t,r){let n=t===tX?.doc?o??=tI(t):t;return i.call(e,n,r)}}}(e):e,d)}finally{o=!1,ri=t}return i}}),f=(r=(t=function(e,t,r){let{drawNode:n,render:i}=e,o=!1,a=()=>{o||r.running()||(ro(r.report(),t),o=!0)};return e.drawNode=(t,r)=>(a(),n.call(e,t,r)),e.render=(t,r)=>(a(),i.call(e,t,r)),e===t1&&t2.has(i)&&t2.add(e.render),e}(e,s,p)).capabilities,a=["target","primitive","feature","operation","realization","evidence","diagnostic"],t.capabilities=Object.freeze(r.map(e=>{let t=("object"==typeof e||"function"==typeof e)&&null!==e?e:void 0,r=t?{...t}:{};if(t)for(let e of a)Object.prototype.hasOwnProperty.call(r,e)||(r[e]=Reflect.get(t,e));return Object.freeze(r)})),Object.freeze(t));D(rt,{identity:(n={version:t8,compatibility:t7,provenance:t9},T({id:d,kind:"backend",version:n.version??t8,compatibility:n.compatibility,provenance:n.provenance??re})),value:f}),rn.set(d,p.report),rr.set(s,d),l&&(t0=f),t6=void 0}finally{ri=null}}function rs(){return Object.freeze(Array.from(rt.values(),({identity:e,value:t})=>{let r=rn.get(e.id);return Object.freeze({identity:e,backend:t,inputName:Array.from(rr.entries()).find(([,t])=>t===e.id)?.[0]??e.id,get conformance(){return r()}})}))}function rd(e,t){return e.find(e=>e.identity.id===t||e.inputName===t)}function rc(e,t){S("backend-registry",t?"bypass":t6?"hit":"miss");let r=t?rs():t6??=rs(),n=rd(r,e);if(!t)return n;let i=t.selectBackend(Object.freeze({requestedId:e,...n?{canonicalId:n.identity.id}:{},registered:r}));if(null!==i)return"string"==typeof i?rd(r,i):n}ra(t1);export{eD as a,tk as b,t$ as c,ef as d,eb as e,e$ as f,ew as g,ez as h,eO as i,eR as j,eL as k,eF as l,e7 as m,ty as n,tw as o,tI as p,tA as q,tH as r,tJ as s,tQ as t,t1 as u,t4 as v,t5 as w,ro as x,ra as y,rc as z};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{f as e,o as t,p as i,t as r}from"./chunk-TYZOZXUJ.js";import{$a as n,Ea as o,Fa as a,Ga as l,Ha as s,Ia as d,Ja as u,La as f,Ma as y,Na as h,Q as c,Qa as p,R as x,Ra as m,Sa as g,Ta as b,Ua as k,Wa as v,Y as w,Za as M,fb as N,ib as O,ub as j,wb as z,za as F}from"./chunk-Z3FDIVLN.js";var S=new WeakMap,P=new WeakMap;function E(e){return P.get(e)??S.get(e)}var B=new WeakMap,T=new WeakSet,L=Object.freeze([1,0,0,1,0,0]);function W(e){return B.get(e)}function C(e){return[e.x0,e.x1,e.y0,e.y1].every(Number.isFinite)&&e.x0<=e.x1&&e.y0<=e.y1}function I(e){return"none"===e||"transparent"===e||!!e&&F(e)?.[3]===0}function D(e){if(void 0===e)return 1;let t=e.trim();if(!/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$/.test(t))return NaN;let i=Number(t);return Number.isFinite(i)?Math.max(0,Math.min(1,i)):NaN}function $(e,t){return 0===e||0===t?0:e*t}function A(e,t){return e&&0!==Number(t.opacity??1)&&(!I(t.fill)||void 0!==t.stroke&&!I(t.stroke)&&0!==Number.parseFloat(t.strokeWidth??"1"))}function U(e,t){return e?e.lineBlocks.some(e=>e.runs.some(e=>""!==e.text.trim())):""!==t.trim()}var R=new WeakSet,_=Object.freeze([]);function q(e){return Object.freeze({id:e.id,role:e.role})}function J(e,t){let i=q(t),r=Object.freeze([...void 0===e?_:R.has(e)?e:Array.from(e,q),i]);return R.add(r),r}function V(e){let t=K(e,void 0,!0);return{leaf(e,i,r,n=_,o=!1,a=1,l){if(!R.has(n))throw TypeError("Native paint ancestors must be owned snapshots");t.leaf(e,i,r,n,o,a,l)},finish:t.finish}}function K(e,t,i=!1){let r=[],n={measured:0,unmeasured:0,nonPainting:0,preparedText:0,fallbackText:0};return{leaf:(e,s,d,u,f,y,h,c=void 0===d)=>{let p=h??e.owner??u.at(-1)??e.identity??{id:e.id,role:e.role},x=i?function(e){switch(e.kind){case"shape":return Object.freeze({kind:e.kind,geometry:e.geometry,paint:e.paint,...e.childPaints?{childPaints:e.childPaints}:{},...e.transform?{transform:e.transform}:{}});case"connector":return Object.freeze({kind:e.kind,lineStyle:e.lineStyle,endpoints:e.endpoints,route:e.route,stroke:e.stroke,markers:e.markers,...e.transform?{transform:e.transform}:{}});case"text":return Object.freeze({kind:e.kind,paint:e.paint});case"document":return Object.freeze({kind:e.kind})}}(e):void 0,b=0===y||("document"===e.kind?"content"!==e.element||void 0!==e.nonPaint||""===j(e).trim():"text"===e.kind?!A(U(e.block,e.text),e.paint):"connector"===e.kind?"invisible"===e.lineStyle:"shape"===e.kind&&!e.conditionalPaint&&[e.paint,...e.childPaints??[]].every(e=>void 0!==e.opacity&&0===Number(e.opacity)||I(e.fill)&&(void 0===e.stroke||I(e.stroke)))),[k,w,M,N,O,z]=d??o,F=d||e.transform?{kind:"matrix",a:k,b:w,c:M,d:N,e:O,f:z}:void 0,E=d||e.transform?Object.freeze(l(d??o,a(e.transform))):L,W=b?void 0:v(e,F),D=!!W&&C(W),$=Object.freeze({key:s,id:e.id,kind:e.kind,role:e.role,owner:i&&u.includes(p)?p:q(p),ancestors:u,order:r.length,coverage:b?"non-painting":D?"measured":"unmeasured",...f||"conditional"===e.visibility||!Number.isFinite(y)?{visibility:"conditional"}:{},...y<1?{groupOpacity:y}:{},...D?{bounds:Object.freeze(W)}:{},...!b&&!D?{reason:"document"===e.kind?"opaque-visible-content":"missing-paint-geometry"}:{},..."text"===e.kind?{text:Object.freeze({measurement:e.measurement??"unavailable",...t?.(e.text,e.block,!0)})}:{}});x?P.set($,x):S.set($,e),B.set($,E),c&&!e.transform&&T.add($),r.push($),b?n.nonPainting++:D?n.measured++:n.unmeasured++,"text"===e.kind&&!b&&("prepared"===e.measurement?n.preparedText++:n.fallbackText++),"connector"===e.kind&&e.labels.forEach((i,o)=>{if(i.visual?.kind!=="inline")return;let a={...i.paint,...i.halo?{stroke:i.halo.color??"var(--bg)",strokeWidth:String(i.halo.width)}:{}},l=0===y||!A(U(i.block,i.text),a),d=l?void 0:m(i),[u,f,h,c,p,b]=E,k=d&&g(d,{kind:"matrix",a:u,b:f,c:h,d:c,e:p,f:b}),v=!!k&&C(k),w=Object.freeze({key:`${s}.label.${o}`,id:i.id??`${e.id}:label:${o}`,kind:"text",role:"label",owner:$.owner,ancestors:$.ancestors,order:r.length,coverage:l?"non-painting":v?"measured":"unmeasured",...$.visibility?{visibility:$.visibility}:{},...y<1?{groupOpacity:y}:{},...v?{bounds:Object.freeze(k)}:l?{}:{reason:"missing-inline-label-geometry"},text:Object.freeze({measurement:i.block?"prepared":"fallback",...t?.(i.text,i.block)})});x?P.set(w,x):S.set(w,e),B.set(w,E),r.push(w),l?n.nonPainting++:(v?n.measured++:n.unmeasured++,i.block?n.preparedText++:n.fallbackText++)})},finish:()=>Object.freeze({version:1,family:e.family,bounds:Object.freeze({width:e.width,height:e.height}),primitives:Object.freeze(r),coverage:Object.freeze(n)})}}function Z(e,t,i,r,n,o){o?.();let a=e.geometry;if(!a)return[];let l="start"===r&&"auto-start-reverse"===e.orient?-1:1,s=Math.hypot(i.x,i.y);if(!s)return[];let d=l*i.x/s,u=l*i.y/s,f=e.viewBox,y=("userSpaceOnUse"===e.units?1:n)*Math.max(1,e.scale??1)*(f&&e.size?Math.min(e.size.width/f.width,e.size.height/f.height):1);if(!Number.isFinite(y))throw TypeError("Nonfinite Class marker scale");if(y<=0)return[];let h=i=>{o?.();let r=(i.x-(e.ref?.x??0))*y,n=(i.y-(e.ref?.y??0))*y;return{x:t.x+d*r-u*n,y:t.y+u*r+d*n}},c=e.paint??{},p=c.stroke&&"none"!==c.stroke&&"transparent"!==c.stroke?Number.parseFloat(c.strokeWidth??"1")/2:0,x=void 0!==c.fill&&"none"!==c.fill&&"transparent"!==c.fill;if("circle"===a.kind){let e=h({x:a.cx,y:a.cy});return[{kind:"circle",cx:e.x,cy:e.y,r:(a.r+p)*y}]}if("polygon"!==a.kind&&"polyline"!==a.kind)throw TypeError("Unmeasured Class marker geometry");let m=a.points,g=[];if(x&&"polygon"===a.kind){for(let e=0;e<m.length;e++)o?.();g.push([...m])}let b="polygon"===a.kind?m.length:m.length-1,k=(e,t)=>{o?.();let i=Math.hypot(t.x-e.x,t.y-e.y);return{x:(t.x-e.x)/i,y:(t.y-e.y)/i}};if(p>0){for(let e=0;e<b;e++){o?.();let t=m[e],i=m[(e+1)%m.length],r=k(t,i),n={x:-r.y*p,y:r.x*p};g.push([{x:t.x+n.x,y:t.y+n.y},{x:i.x+n.x,y:i.y+n.y},{x:i.x-n.x,y:i.y-n.y},{x:t.x-n.x,y:t.y-n.y}])}for(let e=+("polygon"!==a.kind);e<("polygon"===a.kind?m.length:m.length-1);e++){o?.();let t=m[e],i=m[(e-1+m.length)%m.length],r=m[(e+1)%m.length],n=k(i,t),a=k(t,r),l=n.x*a.y-n.y*a.x;if(!l)continue;let s=l>0?-1:1,d={x:t.x-s*n.y*p,y:t.y+s*n.x*p},u={x:t.x-s*a.y*p,y:t.y+s*a.x*p},f=((u.x-d.x)*a.y-(u.y-d.y)*a.x)/l,y={x:d.x+f*n.x,y:d.y+f*n.y};g.push(Math.hypot(y.x-t.x,y.y-t.y)<=Number(c.strokeMiterlimit??"4")*p?[t,d,y,u]:[t,d,u])}}let v=(e,t,i,r)=>{let n=[];for(let a=0;a<e.length;a++){o?.();let l=e[a],s=e[(a+1)%e.length],d=e=>r?e[t]>=i:e[t]<=i,u=d(l),f=d(s);if(u&&n.push(l),u!==f){let e=(i-l[t])/(s[t]-l[t]);n.push({x:l.x+e*(s.x-l.x),y:l.y+e*(s.y-l.y)})}}return n};return g.flatMap(t=>{if(o?.(),"hidden"===e.overflow&&f)for(let[e,i,r]of[["x",f.x,!0],["x",f.x+f.width,!1],["y",f.y,!0],["y",f.y+f.height,!1]])o?.(),t=v(t,e,i,r);let i=t[0],r=0;if(i)for(let e=0;e<t.length;e++){o?.();let n=t[e],a=t[(e+1)%t.length];r+=(n.x-i.x)*(a.y-i.y)-(n.y-i.y)*(a.x-i.x)}return t.length>=3&&0!==r?[{kind:"polygon",points:t.map(h)}]:[]})}R.add(_);var G=4e5,X=new WeakSet,Y=new WeakMap;function H(t){let i=0,o=!1,a=!1,l=new Map,s=[],d=(e=1)=>!o&&(!Number.isSafeInteger(e)||e<0||e>t-i?(o=!0,!1):(i+=e,!0)),f=Symbol("unsupported-emission"),y=(e,t=0,i=new Set)=>{if(t>64)throw f;if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e)return e;if("object"!=typeof e||!d()||i.has(e))throw f;let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&null!==r&&r!==Array.prototype)throw f;let o=Object.getOwnPropertyNames(e);if(!d(o.length))throw f;i.add(e);let a=Array.isArray(e)?[]:{},l,s=M(e);for(let r of o){if(!d())throw f;let n=Object.getOwnPropertyDescriptor(e,r);if(n){if("length"===r&&Array.isArray(e)){l=n;continue}if(!("terminalProjection"===r&&s)){if(!("value"in n))throw f;Object.defineProperty(a,r,{value:y(n.value,t+1,i),enumerable:n.enumerable,configurable:!1,writable:!1})}}}if(Array.isArray(e)){if(!l||!("value"in l))throw f;Object.defineProperty(a,"length",{value:l.value,writable:!1})}if(s){if(!d(3)||!n(e,a))throw f;let t=Object.getOwnPropertyDescriptor(a,"terminalProjection");Object.defineProperty(a,"terminalProjection",{...t,configurable:!1})}return w(e,a),i.delete(e),Object.preventExtensions(a)},h=e=>{try{return y(e)}catch{return}},p=(e,t)=>{if(!d())return!1;if("string"==typeof e&&"string"==typeof t)return d(e.length+t.length)&&e===t;if(e===t)return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;let i=0,r=0;if(!d(2))return!1;let n=Object.getOwnPropertyNames(e),o=Object.getOwnPropertyNames(t);if(!d(n.length+o.length))return!1;for(let r of n){if(!d(3))return!1;let n=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);if(n&&(i++,!o||!("value"in n)||!("value"in o)||n.enumerable!==o.enumerable||!p(n.value,o.value)))return!1}for(let e of o){if(!d())return!1;Object.hasOwn(t,e)&&r++}return i===r},x=e=>{if(!d())return;if("string"==typeof e)return 6*e.length+2;if("number"==typeof e)return 32;if(!e||"object"!=typeof e)return 8;let i=64;if(!d())return;let r=Object.getOwnPropertyNames(e);if(d(r.length)){for(let n of r){if(!d(3))return;let r=Object.getOwnPropertyDescriptor(e,n);if(!r||!("value"in r))return;let o=x(r.value);if(void 0===o||!Number.isSafeInteger(i+=n.length+16+o)||i>t)return}return i}};return{snapshot:h,same:p,retainFragment:()=>d(),parts(e,t){if(!d()||!Array.isArray(e))return a=!0,e;let i=Object.getOwnPropertyDescriptor(e,"length")?.value;if(!Number.isSafeInteger(i)||i<0||i>t)throw RangeError("Native drawing contains too many emitted nodes");if(!d(4*i))return a=!0,e;let r=[];for(let t=0;t<i;t++){let i=Object.getOwnPropertyDescriptor(e,String(t));i&&"value"in i?r.push(i.value):(a=!0,r.push(e[t]))}return Object.freeze(r)},uncertain(){a=!0},header(t,i){if(!d(8*i.length+128))return t;let r=N(i).find(e=>"svg"===e.name);if(!r)return a=!0,t;let n=c(t.width),o=c(t.height),l=O(r,"viewBox");for(let e of((void 0!==l?l!==`0 0 ${n} ${o}`:O(r,"width")!==n||O(r,"height")!==o)&&(a=!0),r.attributes)){if(!d())return t;["xmlns","width","height","viewBox","style","role","class","id"].includes(e.name)||e.name.startsWith("data-")||e.name.startsWith("aria-")||(a=!0)}let s=Object.freeze({...t,width:Number(n),height:Number(o)}),u=t.colors,f=O(r,"style");if(void 0===f)return s;let y=new Set;for(let t of f.split(";")){if(!d(t.length+4))break;if(!t.trim())continue;let i=t.indexOf(":"),r=t.slice(0,i).trim(),n=t.slice(i+1).trim();if(i<0||y.has(r)){a=!0;continue}if(y.add(r),"background"!==r||"var(--bg)"!==n){if("--font"===r){d("string"==typeof u.font?4*u.font.length:1)&&e(u.font)===n||(a=!0);continue}["bg","fg","line","accent","muted","surface","border","font"].some(e=>`--${e}`===r)&&u[r.slice(2)]===n||(a=!0)}}return s},group(e){if(!d(8*e.open.length))return;let t=N(e.open)[0];if(!t||"g"!==t.name){a=!0;return}(O(t,"opacity")!==e.paint?.opacity||e.paint?.fill!==void 0||void 0!==O(t,"style"))&&(a=!0);let i=O(t,"transform");if(void 0===i)return;let r=u(i);return r||(a=!0),r&&Object.freeze(r)},observe(e,t){if(!d(2*(1+("connector"===e.kind?e.labels.length:0))))return!1;if("connector"===e.kind){let t=e=>{e&&d(2)&&s.push(e)};for(let i of(t(e.markers.start),e.markers.mid)){if(!d())break;t(i)}t(e.markers.end)}else if("document"===e.kind&&"definitions"===e.element){if(!d(8*t.length))return!1;for(let e of N(t)){if(!d(e.attributes.length+1))break;if("marker"!==e.name)continue;let i=O(e,"id"),r=t.indexOf("</marker>",e.end);if(!i||r<0||l.has(i)){a=!0;continue}let n=t.slice(e.start,r+9).replace(/(^|\n)[ \t]+(?=<)/g,"$1");if(!d(2))break;l.set(i,n)}}return!o},leaf(e){let t=h(e);return t?(z(e,t),{node:t,conditional:!1}):{node:e,conditional:!0}},finish(e,t){let n=new Map;for(let e of s){if(!d())break;try{if(!d(2))break;let t=n.get(e.id);if(t&&p(t,e))continue;let i=x(e);if(void 0===i||!d(2*i)){a=!0;break}let o=r(e,{indent:0}).replace(/(^|\n)[ \t]+(?=<)/g,"$1");d(3*o.length)&&l.get(e.id)===o?d(2)&&n.set(e.id,e):a=!0}catch{a=!0}}for(let t of e.primitives)"conditional"!==t.visibility&&X.add(t);Y.set(e,Object.freeze({operations:i,exhausted:o,uncertain:a,header:t}))}}}var Q=1e5,ee=(e,t,i=0)=>e.x0<=t.x0+i&&e.y0<=t.y0+i&&e.x1>=t.x1-i&&e.y1>=t.y1-i,et=(e,t)=>e.x0<t.x1&&t.x0<e.x1&&e.y0<t.y1&&t.y0<e.y1,ei=e=>({x0:e.x,y0:e.y,x1:e.x+e.w,y1:e.y+e.h});function er(e,t){let i=D(t.opacity),r=D(t.fillOpacity),n=t.fill?F(t.fill):null;return"line"!==e.kind&&"none"!==t.fill&&"transparent"!==t.fill&&!(i<1||r<1||n&&n[3]<1)}function en(e,t){return 0!==D(t.opacity)&&0!==D(t.strokeOpacity)&&0!==k(t,["polygon","polyline","path","compound"].includes(e.kind))}function eo(e,t,i,r,n=0,o=()=>!0,a,l,u=!1){let f=E(e.primitive);if(f?.kind!=="shape")return!1;let y=d(W(e.primitive));if(!y)return!1;let{geometry:h,paint:p,childPaints:m}=f,g=(r??[{x:t.x0,y:t.y0},{x:t.x0,y:t.y1},{x:t.x1,y:t.y0},{x:t.x1,y:t.y1}]).map(e=>s(e,y)),[b,v,w,M]=y,N=(Math.hypot(b+M,v-w)+Math.hypot(b-M,v+w))/2,O=n*N,j=l?s(l,y):void 0,z=!1,F,S=[],P=(r,n=e.borderWidth??0,a=p,l=!0,d=e.bounds,b)=>{if(!o())return!1;if(!b&&S.includes(r)||b&&(b.x<d.x0||b.x>d.x1||b.y<d.y0||b.y>d.y1))return!0;let v=b?[s(b,y)]:g,w=b?0:O,M=b?-1e-8:1e-8*!u,E=b?-1e-8:0;if("compound"===r.kind)return r===h&&r.children.length<=64&&r.children.every((t,i)=>"compound"!==t.kind&&P(t,e.partBorderWidths?.[i]??0,m?.[i]??p,e.partFilled?.[i]??!0,e.partBounds?.[i]??e.bounds,b));if(!l&&(0===D(a.opacity)||0===D(a.strokeOpacity)||0===k(a,"line"!==r.kind)))return!0;if("line"===r.kind){if(!b&&F&&j&&["butt","round","square"].includes(a.strokeLinecap??"butt")){if(!o())return!1;let e=r.x2-r.x1,t=r.y2-r.y1,i=j.x===r.x1&&j.y===r.y1?1:j.x===r.x2&&j.y===r.y2?-1:0;if(i&&Number.isFinite(e)&&Number.isFinite(t)&&(0!==e||0!==t)&&g.every(r=>{if(!o())return!1;let n=((r.x-j.x)*e+(r.y-j.y)*t)*i;return Number.isFinite(n)&&n<=0}))return P(r,n,a,l,d,F)}let e=k(a,!1);if(void 0===e)return!1;if(0===e)return!0;let t=e*("non-scaling-stroke"===a.vectorEffect?N:1);return v.every(e=>o()&&e.x+w<=Math.min(r.x1,r.x2)-t+E)||v.every(e=>o()&&e.x-w>=Math.max(r.x1,r.x2)+t-E)||v.every(e=>o()&&e.y+w<=Math.min(r.y1,r.y2)-t+E)||v.every(e=>o()&&e.y-w>=Math.max(r.y1,r.y2)+t-E)}let B=k(a,["polygon","polyline","path"].includes(r.kind));if(void 0===B)return!1;if(b)w=B*("non-scaling-stroke"===a.vectorEffect?N:1);else if(B>0&&0!==D(a.opacity)&&0!==D(a.strokeOpacity)&&!(i&&z&&n>0)&&et(d,t))return!1;let L=!b&&i&&z?Math.max(0,n/2):0;if("rect"===r.kind){let t=Math.min(r.width/2,r.rx??r.ry??0),i=Math.min(r.height/2,r.ry??r.rx??0);if(t>0&&i>0){var W;let l=!f.transform&&(W=e.primitive,T.has(W))&&y.every((e,t)=>e===[1,0,0,1,0,0][t])&&Number(c(n))===n&&Number.parseFloat(x("stroke-width",a.strokeWidth??"1"))===Number.parseFloat(a.strokeWidth??"1"),s=l&&Number(c(r.x))===r.x&&Number(c(r.width))===r.width,d=l&&Number(c(r.y))===r.y&&Number(c(r.height))===r.height;if(s&&(v.every(e=>o()&&e.x+w<=r.x+L+M)||v.every(e=>o()&&e.x-w>=r.x+r.width-L-M))||d&&(v.every(e=>o()&&e.y+w<=r.y+L+M)||v.every(e=>o()&&e.y-w>=r.y+r.height-L-M)))return!0;let u=r.x+r.width/2,h=r.y+r.height/2,p=r.width/2-t,m=r.height/2-i;for(let e of v){if(!o())break;let r=e.x-u,n=e.y-h,a=(r-Math.max(-p,Math.min(p,r)))/(t*t),l=(n-Math.max(-m,Math.min(m,n)))/(i*i),s=Math.hypot(a,l);if(!s)continue;let d=a/s,f=l/s,y=p*Math.abs(d)+m*Math.abs(f)+Math.hypot(t*d,i*f)-L+w;if(v.every(e=>o()&&(e.x-u)*d+(e.y-h)*f>=y-M))return!0}return!1}}if("ellipse"===r.kind||"circle"===r.kind){let e="circle"===r.kind?r.r:r.rx,t="circle"===r.kind?r.r:r.ry;if(!(e>0&&t>0))return!1;if("circle"===r.kind){let t=Math.max(Math.min(...v.map(e=>e.x)),Math.min(r.cx,Math.max(...v.map(e=>e.x)))),i=Math.max(Math.min(...v.map(e=>e.y)),Math.min(r.cy,Math.max(...v.map(e=>e.y))));if(Math.hypot(t-r.cx,i-r.cy)>=e-L+w-M)return!0}for(let i of v){if(!o())break;let n=(i.x-r.cx)/(e*e),a=(i.y-r.cy)/(t*t),l=Math.hypot(n,a);if(!l)continue;let s=n/l,d=a/l,u=Math.hypot(e*s,t*d)-L+w;if(v.every(e=>o()&&(e.x-r.cx)*s+(e.y-r.cy)*d>=u-M))return!0}return!1}let C="rect"===r.kind?[{x:r.x,y:r.y},{x:r.x+r.width,y:r.y},{x:r.x+r.width,y:r.y+r.height},{x:r.x,y:r.y+r.height}]:"polygon"===r.kind?r.points:void 0;if(!C||C.length<3||C.length>64)return!1;let I=(e,t,i)=>(t.x-e.x)*(i.y-e.y)-(t.y-e.y)*(i.x-e.x),$=Math.sign(C.reduce((e,t,i)=>{let r=C[(i+1)%C.length];return e+t.x*r.y-r.x*t.y},0));return!!$&&!!C.every((e,t)=>C.every(i=>o()&&$*I(e,C[(t+1)%C.length],i)>=-(b||u?0:1e-8)))&&C.some((e,t)=>{let i=C[(t+1)%C.length],r=Math.hypot(i.x-e.x,i.y-e.y);return r>0&&v.every(t=>o()&&$*I(e,i,t)<=(L-w+M)*r)})};if(i&&(F=a?.find(t=>o()&&P(h,e.borderWidth??0,p,!0,e.bounds,t))),(z=void 0!==F)&&j&&"compound"===h.kind&&y.every((e,t)=>e===[1,0,0,1,0,0][t])){let t=h.children[0];if(o()&&t?.kind==="rect"&&!t.rx&&!t.ry&&e.partFilled?.[0]&&0===k(m?.[0]??p,!1)){let i=j.x===t.x?1:2*(j.x===t.x+t.width),r=h.children[i],n=e.partOwnBorderWidths?.[i]??0;i&&r?.kind==="line"&&n>0&&r.x1===r.x2&&r.x1===j.x&&Math.min(r.y1,r.y2)===t.y&&Math.max(r.y1,r.y2)===t.y+t.height&&j.y>t.y&&j.y<t.y+t.height&&g.every(e=>o()&&(1===i?-1:1)*(e.x-r.x1)>=O-n/2)&&(S=[t,r])}}return P(h)}function ea(e,i,r,n,o,a){let l,s=e=>{for(let t=0;t<e;t++)if(!o())return!1;return!0};if(!s(3)||!r||"mid"===n||r.geometry?.kind!=="polygon"&&r.geometry?.kind!=="polyline"||r.geometry.points.length<3||r.geometry.points.length>64||i.transform||"polyline"===r.geometry.kind&&r.paint?.strokeLinecap!==void 0&&!["butt","round"].includes(r.paint.strokeLinecap)||i.route.closed||i.stroke.nonScaling||i.stroke.mixBlendMode&&"normal"!==i.stroke.mixBlendMode||(r.scale??1)!==1||r.paint?.vectorEffect==="non-scaling-stroke"||r.paint?.strokeLinejoin&&!["miter","round","bevel"].includes(r.paint.strokeLinejoin)||!r.size||!r.ref||!(r.size.width>0)||!(r.size.height>0)||!Number.isFinite(r.size.width+r.size.height+r.ref.x+r.ref.y)||r.viewBox&&(!(r.viewBox.width>0)||!(r.viewBox.height>0)||!Number.isFinite(r.viewBox.x+r.viewBox.y+r.viewBox.width+r.viewBox.height)))return;let d=String(i.stroke.width);if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(d))return;let u=Number.parseFloat("number"==typeof i.stroke.width?c(i.stroke.width):x("stroke-width",i.stroke.width));if(!(u>0)||!Number.isFinite(u)||!s(12+5*r.geometry.points.length))return;let f=i.route.geometry,y,h,m=(e,t)=>{if(!o())return!1;let i={x:Number(c(e)),y:Number(c(t))};if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return!1;if(y){if(i.x!==y.x||i.y!==y.y)return h=i,!1}else y=i;return!0};if("line"===f.kind)m("start"===n?f.x1:f.x2,"start"===n?f.y1:f.y2),m("start"===n?f.x2:f.x1,"start"===n?f.y2:f.y1);else if("polyline"!==f.kind)return;else for(let e=0;e<f.points.length;e++){let t=f.points["start"===n?e:f.points.length-e-1];if(!m(t.x,t.y))break}if(!y||!h||!o()||y.x!==h.x&&y.y!==h.y)return;let g=r.geometry.points,b="polygon"===r.geometry.kind?r:{...r,geometry:{kind:"polygon",points:g}},k="start"===n?{x:h.x-y.x,y:h.y-y.y}:{x:y.x-h.x,y:y.y-h.y},v="start"===n?y:h,w="start"===n?h:y,M={kind:"line",x1:v.x,y1:v.y,x2:w.x,y2:w.y},N=p({route:{...i.route,geometry:M,contours:[{start:v,end:w,closed:!1,startTangent:k,endTangent:k}]},stroke:{...i.stroke,width:u},markers:{mid:[],..."start"===n?{start:b}:{end:b}}})[0],O=N?.hull;if(!O||O.length!==g.length||!s(O.length))return;let j=0;for(let e=0;e<O.length;e++){let t=O[e],i=O[(e+1)%O.length];for(let e of O){if(!o())return;let r=(i.x-t.x)*(e.y-t.y)-(i.y-t.y)*(e.x-t.x);if(!Number.isFinite(r))return;if(r){if(j&&Math.sign(r)!==j)return;j||=Math.sign(r)}}}if(!j)return;let z=b.viewBox??(b.size?{x:0,y:0,...b.size}:void 0),S=e=>"visible"===b.overflow||!!z&&e.x>z.x&&e.x<z.x+z.width&&e.y>z.y&&e.y<z.y+z.height,P=r.paint??{},E=i=>{if(!i||!o())return;let r=a?a(i):t(i,e.colors);return r?F(r)??void 0:void 0},B=E(P.fill),T=E(P.stroke),L=D(P.opacity),W="none"===P.fill||L<1||B&&B[3]<1?"absent":B?.[3]===1&&1===L&&g.every(e=>o()&&S(e))?"opaque":"unknown",C=void 0===P.stroke||"none"===P.stroke||0===L||T?.[3]===0,I=P.strokeWidth??"1",$=/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(I)?Number.parseFloat(I):void 0,A=("userSpaceOnUse"===b.units?1:u)*(b.viewBox&&b.size?Math.min(b.size.width/b.viewBox.width,b.size.height/b.viewBox.height):1),U=C?0:void 0!==$&&Number.isFinite($*A)?$*A/2:void 0,R=C||0===$?"absent":void 0!==$&&$>0&&T?.[3]===1&&1===L&&!P.strokeDasharray?"visible":"unknown",_=[];if(!C&&void 0!==$&&$>0&&T?.[3]===1&&1===L&&!P.strokeDasharray){for(let e=0;e<g.length-("polyline"===r.geometry.kind);e++){let t=g[e],i=g[(e+1)%g.length];if(t.x!==i.x||t.y!==i.y)for(let r=1;r<4;r++){if(!s(3))return;let n=r/4;S({x:t.x*(1-n)+i.x*n,y:t.y*(1-n)+i.y*n})&&_.push({x:O[e].x*(1-n)+O[(e+1)%O.length].x*n,y:O[e].y*(1-n)+O[(e+1)%O.length].y*n})}}let e=+("polygon"!==r.geometry.kind),t=g.length-("polygon"!==r.geometry.kind);for(let i=e;i<t;i++){if(!s(2))return;let e=g[(i+g.length-1)%g.length],t=g[i],r=g[(i+1)%g.length];(e.x!==t.x||e.y!==t.y)&&(t.x!==r.x||t.y!==r.y)&&S(t)&&_.push(O[i])}}let q=!1;if("hidden"===r.overflow){if(!s(5))return;q=r.viewBox?.x===0&&0===r.viewBox.y&&r.viewBox.width===r.size.width&&r.viewBox.height===r.size.height}if(("visible"===r.overflow||q)&&(void 0===r.orient||"auto"===r.orient||"auto-start-reverse"===r.orient)&&"unknown"!==W&&"unknown"!==R&&1===L&&("polygon"===r.geometry.kind||"none"===P.fill||B?.[3]===0)&&!P.strokeDasharray&&(void 0===P.strokeLinecap||"butt"===P.strokeLinecap)&&(void 0===P.strokeLinejoin||"miter"===P.strokeLinejoin)&&(void 0===P.strokeMiterlimit||4===Number(P.strokeMiterlimit))){if(q&&!s(16))return;l={marker:q?{id:r.id,shape:r.shape,geometry:r.geometry,paint:r.paint,units:r.units,size:r.size,ref:r.ref,orient:r.orient,viewBox:r.viewBox,scale:r.scale,overflow:"visible"}:r,anchor:y,tangent:k,position:n,width:u}}return(!l||o())&&s(6)?{repaint:{resource:N.repaint,anchor:y,geometry:r.geometry.kind},hull:O,fill:W,stroke:R,fillColor:B,strokeColor:T,innerStroke:U,strokeWitnesses:_,padding:N.padding,...l?{paintPieceSource:l}:{}}:void 0}function el(e,t){let i=e.marker.geometry;if("polygon"!==i.kind&&"polyline"!==i.kind)return;let r=i.points,n="polygon"===i.kind?r.length:r.length-2;for(let e=0;e<n;e++){for(let e=0;e<8;e++)if(!t())return;let n="polygon"===i.kind?e:e+1,o=r[(n+r.length-1)%r.length],a=r[n],l=r[(n+1)%r.length],s=a.x-o.x,d=a.y-o.y,u=l.x-a.x,f=l.y-a.y,y=Math.hypot(s,d),h=Math.hypot(u,f),c=s/y*(u/h)+d/y*(f/h);if(!(y>0)||!(h>0)||!Number.isFinite(c)||c<=-.875+128*Number.EPSILON)return}let o={},a;try{a=Z(e.marker,e.anchor,e.tangent,e.position,e.width,()=>{if(!t())throw o})}catch(e){if(e===o)return;throw e}for(let e of a){if(!t()||"polygon"!==e.kind||e.points.length<3)return;let i=0;for(let r=0;r<e.points.length;r++){if(!t())return;let n=e.points[r],o=e.points[(r+1)%e.points.length];if(!Number.isFinite(n.x)||!Number.isFinite(n.y))return;i+=(n.x-e.points[0].x)*(o.y-e.points[0].y)-(n.y-e.points[0].y)*(o.x-e.points[0].x)}if(!Number.isFinite(i)||0===i)return}return a}function es(e,t,i){if(!i())return"exhausted";let r=e=>e?.fill==="absent"&&"absent"===e.stroke&&(e.fillColor?.[3]===0||e.paintPieceSource?.marker.paint?.fill==="none");if(r(e)||r(t))return"clear";if(!e?.paintPieceSource||!t?.paintPieceSource)return"unknown";let n={},o=()=>{if(!i())throw n;return!0};try{let i=el(e.paintPieceSource,o);if(i){let e=el(t.paintPieceSource,o);if(e&&function(e,t,i){for(let r of e)for(let e of t){if(!i()||"polygon"!==r.kind||"polygon"!==e.kind)return!1;let t=!1;for(let n of[r.points,e.points]){for(let o=0;o<n.length;o++){if(!i())return!1;let a=n[o],l=n[(o+1)%n.length],s=a.y-l.y,d=l.x-a.x,u=Math.hypot(s,d);if(!(u>0)||!Number.isFinite(u))continue;let f=s/u,y=d/u,h=r.points[0],c=1/0,p=-1/0,x=1/0,m=-1/0,g=1;for(let e of r.points){if(!i())return!1;let t=(e.x-h.x)*f+(e.y-h.y)*y;c=Math.min(c,t),p=Math.max(p,t),g=Math.max(g,Math.abs(e.x),Math.abs(e.y))}for(let t of e.points){if(!i())return!1;let e=(t.x-h.x)*f+(t.y-h.y)*y;x=Math.min(x,e),m=Math.max(m,e),g=Math.max(g,Math.abs(t.x),Math.abs(t.y))}let b=1e-8+128*Number.EPSILON*g;if(Number.isFinite(c+p+x+m)&&(p+b<x||m+b<c)){t=!0;break}}if(t)break}if(!t)return!1}return!0}(i,e,o))return"clear"}}catch(e){if(e===n)return"exhausted";throw e}return"unknown"}function ed(e,t,i,r=0){if(!i()||!Number.isSafeInteger(r)||r<0)return"unknown";if(t?.fill==="absent"||e?.stroke==="absent"&&"absent"===e.fill)return"clear";if(!e||!t)return"unknown";let n=t.hull;if(void 0!==e.innerStroke){let t=0;for(let r=0;r<e.hull.length;r++){if(!i())return"unknown";let n=e.hull[r],o=e.hull[(r+1)%e.hull.length],a=e.hull[(r+2)%e.hull.length],l=(o.x-n.x)*(a.y-o.y)-(o.y-n.y)*(a.x-o.x);if(l){t=Math.sign(l);break}}if(t)for(let r=0;r<e.hull.length;r++){if(!i())return"unknown";let o=e.hull[r],a=e.hull[(r+1)%e.hull.length],l=a.x-o.x,s=a.y-o.y,d=Math.hypot(l,s);if(!d)continue;let u=!0;for(let r of n){if(!i())return"unknown";let n=t*(l*(r.y-o.y)-s*(r.x-o.x))/d,f=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(r.x),Math.abs(r.y),Math.abs(o.x),Math.abs(o.y),Math.abs(a.x),Math.abs(a.y));if(!Number.isFinite(n)||n>=-e.innerStroke-f){u=!1;break}}if(u)return"clear"}}if(void 0!==e.padding&&Number.isFinite(e.padding))for(let t of[e.hull,n])for(let r=0;r<t.length;r++){if(!i())return"unknown";let o=t[r],a=t[(r+1)%t.length],l=a.y-o.y,s=o.x-a.x,d=Math.hypot(l,s);if(!d)continue;let u=1/0,f=-1/0,y=1/0,h=-1/0;for(let t of e.hull){if(!i())return"unknown";let e=(t.x-o.x)*l+(t.y-o.y)*s;u=Math.min(u,e),f=Math.max(f,e)}for(let e of n){if(!i())return"unknown";let t=(e.x-o.x)*l+(e.y-o.y)*s;y=Math.min(y,t),h=Math.max(h,t)}if(f+e.padding*d<y||h<u-e.padding*d)return"clear"}if(e.paintPieceSource&&t.paintPieceSource){let r=es(e,t,i);if("clear"===r)return"clear";if("exhausted"===r)return"unknown"}if("visible"!==e.stroke||"opaque"!==t.fill||void 0===t.innerStroke||!e.strokeColor||!t.fillColor)return"unknown";let o=!0;for(let r=0;r<3;r++){if(!i())return"unknown";e.strokeColor[r]!==t.fillColor[r]&&(o=!1)}if(o)return"unknown";for(let o=r;o<e.strokeWitnesses.length&&i();o++){let r=e.strokeWitnesses[o],a=0,l=!0;for(let e=0;e<n.length;e++){if(!i())return"unknown";let o=n[e],s=n[(e+1)%n.length],d=s.x-o.x,u=s.y-o.y,f=Math.hypot(d,u),y=d*(r.y-o.y)-u*(r.x-o.x),h=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(r.x),Math.abs(r.y),Math.abs(o.x),Math.abs(o.y),Math.abs(s.x),Math.abs(s.y));if(!Number.isFinite(y)||!f||Math.abs(y)/f<=t.innerStroke+h||a&&Math.sign(y)!==a){l=!1;break}a||=Math.sign(y)}if(l&&a)return r}return"unknown"}var eu=new Set(["node","service","class-box","entity"]),ef=new Set([...eu,"group","note","actor","junction"]);function ey(e,t,i={}){let r,n;return eh(e,(r=K(e,void 0),(n=(e,t,i,o,s=!1,d=1,u=!0)=>{e.forEach((e,f)=>{let y=`${t}.${f}`;if("group"===e.kind){let t=e.identity??{id:e.id,role:e.role};n(e.children.map(e=>e.node),y,l(i,a(e.transform)),Object.freeze([...o,q(t)]),s||"conditional"===e.visibility,$(d,D(e.paint?.opacity)),u&&!e.transform)}else r.leaf(e,y,i,o,s,d,void 0,u)})})(e.parts,"scene",o,Object.freeze([])),r.finish()),t,i)}function eh(e,r,n,o={}){let u=[],m=!1,w=!1,M=(e,t=!1)=>{u.length<64&&u.push(Object.freeze(e)),t?m=!0:w=!0},N=(e,t,i)=>M({code:"POTENTIAL_OCCLUSION",id:e,by:t,message:i}),O=(e,t,i=!1)=>M({code:"UNMEASURED_PAINT",id:e,message:t},i),j=e=>M({code:"OUTPUT_SCOPE",message:e}),z=Y.get(r);z&&e!==z.header&&(j("Retained emission is paired with a different document header"),e=z.header);let S=0,P=0,B=e.width,T=e.height,L=0;for(let e of r.primitives){if(!z&&X.has(e)&&j("Native paint occurrences have no bound emission context"),"conditional"===e.visibility){L++;continue}"unmeasured"===e.coverage&&O(e.id,e.reason??"Paint geometry is unavailable"),e.text&&"non-painting"!==e.coverage&&"prepared"!==e.text.measurement&&M({code:"UNPREPARED_TEXT",id:e.id,message:"Text was not retained from layout preparation"});let t=e.bounds;t&&(S=Math.min(S,t.x0),P=Math.min(P,t.y0),B=Math.max(B,t.x1),T=Math.max(T,t.y1))}L&&M({code:"CONDITIONAL_PAINT",message:`${L} primitives depend on unresolved paint or interaction state`}),(!1===o.outputSupported||e.family.startsWith("family:"))&&j("Selected backend, style or external family has no native final-paint proof"),S=Math.min(0,S+1e-6),P=Math.min(0,P+1e-6),B=Math.max(e.width,B-1e-6),T=Math.max(e.height,T-1e-6);let C=S<0||P<0||B>e.width||T>e.height,I={x:Math.floor(S),y:Math.floor(P),width:Math.ceil(B)-Math.floor(S),height:Math.ceil(T)-Math.floor(P)};if(C&&e.width>0&&e.height>0){let t=e.width/e.height;I.width/I.height>t?I.height=I.width/t:I.width=I.height*t}let $=Object.freeze(C?I:{x:0,y:0,width:e.width,height:e.height}),A={x0:$.x,y0:$.y,x1:$.x+$.width,y1:$.y+$.height};C&&r.primitives.some(e=>{let t=E(e);return t?.kind==="connector"?t.stroke.nonScaling:(t?.kind==="shape"||t?.kind==="text")&&"non-scaling-stroke"===t.paint.vectorEffect})&&j("Viewport expansion changes the user-unit extent of non-scaling strokes; final painted containment is unverified");let U=0,R=(t,i,r)=>{if(U++,!i||!r)return void O(t,"Projected label has no retained occupied or available region");let n=ei(r);0===n.x0&&0===n.y0&&n.x1===e.width&&n.y1===e.height&&(n=A),ee(n,ei(i),.5)||M({code:"LABEL_CONTAINMENT",id:t,message:"Retained text extends beyond its declared available region"},!0)};if(n){for(let e of n.nodes)e.label?.trim()&&"hidden"!==e.labelVisibility&&"semantic"!==e.labelVisibility&&R(String(e.id),e.labelBounds,e.labelContainer);for(let e of n.labels??[])e.text.trim()&&"hidden"!==e.visibility&&"semantic"!==e.visibility&&R(e.id,e.bounds,e.container)}let _=function e(t){if(!t.length)return;let i={x0:1/0,y0:1/0,x1:-1/0,y1:-1/0};for(let e of t)i.x0=Math.min(i.x0,e.bounds.x0),i.y0=Math.min(i.y0,e.bounds.y0),i.x1=Math.max(i.x1,e.bounds.x1),i.y1=Math.max(i.y1,e.bounds.y1);if(t.length<=8)return{bounds:i,leaves:t};let r=i.x1-i.x0>=i.y1-i.y0?"x0":"y0";t.sort((e,t)=>e.bounds[r]-t.bounds[r]||e.primitive.order-t.primitive.order);let n=Math.floor(t.length/2);return{bounds:i,left:e(t.slice(0,n)),right:e(t.slice(n))}}(function(e,i){let r=new Map,n=i=>{if(r.has(i))return r.get(i);let n=t(i,e.colors),o=!!n&&F(n)?.[3]===1;return r.set(i,o),o},o=e=>{if("non-scaling-stroke"===e.vectorEffect||!e.stroke||!n(e.stroke)||1!==Number(e.opacity??1)||1!==Number(e.strokeOpacity??1)||e.strokeDasharray)return 0;let t=Number(e.strokeWidth?.replace(/px$/,"")??1);return Number.isFinite(t)&&t>0?t:0},a=new Map,l=(e,t)=>JSON.stringify([e.owner,t,W(e)]);for(let e of i){let t=E(e);if(t?.kind!=="shape"||"measured"!==e.coverage||"conditional"===e.visibility||void 0!==e.groupOpacity)continue;let i="compound"===t.geometry.kind?t.geometry.children:[t.geometry];for(let r=0;r<i.length;r++){let n=o("compound"===t.geometry.kind?t.childPaints?.[r]??t.paint:t.paint);n>0&&a.set(l(e,i[r]),n)}}let d=[];for(let e of i){let t=E(e);if(!t||"shape"!==t.kind||"conditional"===e.visibility||"measured"!==e.coverage||void 0!==e.groupOpacity)continue;let{geometry:i,paint:r,childPaints:u}=t,y="compound"===i.kind?i.children:void 0,h=y?void 0:i,c=y?.map((e,t)=>u?.[t]??r),p=y?void 0:r,x=y?.map((e,t)=>er(e,c[t])),m=!y&&er(h,p),b=y?.map((e,t)=>en(e,c[t])),w=!y&&en(h,p);if(!(x?x.some(Boolean):m)&&!(b?b.some(Boolean):w))continue;let M=W(e),[N,O,j,z,F,S]=M,P={kind:"matrix",a:N,b:O,c:j,d:z,e:F,f:S},B,T=y?[]:void 0;for(let t=0,i=y?.length??1;t<i;t++){if(y&&!(t in y))continue;let i=y?y[t]:h,r=c?c[t]:p;if(!(x?x[t]:m)&&!(b?b[t]:w))continue;let n=v({kind:"shape",id:e.id,role:e.role,geometry:i,paint:r},P)??e.bounds;T&&(T[t]=n),B=f(B,n)}if(!B)continue;let L={primitive:e,bounds:B,borderWidth:a.get(l(e,i)),...y?{partBorderWidths:y.map(t=>a.get(l(e,t))??0),partOwnBorderWidths:c.map(o),partFilled:x,partBounds:T}:{}};if(Math.abs(M[1])>1e-12||Math.abs(M[2])>1e-12){d.push(L);continue}let C=[],I=[];for(let e=0,t=y?.length??1;e<t;e++){if(y&&!(e in y))continue;let t=y?y[e]:h,i=c?c[e]:p;if("rect"===t.kind&&1===M[0]&&1===M[3]&&0===M[1]&&0===M[2]&&"non-scaling-stroke"!==i.vectorEffect&&i.stroke&&n(i.stroke)&&1===D(i.opacity)&&1===D(i.strokeOpacity)&&!i.strokeDasharray&&void 0!==k(i,!1)){let e=Number.parseFloat(i.strokeWidth??"1")/2,r=Math.max(0,Math.min(t.width/2,t.rx??t.ry??0)),n=Math.max(0,Math.min(t.height/2,t.ry??t.rx??0));if(e>0)for(let i of[{x0:t.x-e,y0:t.y+n,x1:t.x+e,y1:t.y+t.height-n},{x0:t.x+t.width-e,y0:t.y+n,x1:t.x+t.width+e,y1:t.y+t.height-n},{x0:t.x+r,y0:t.y-e,x1:t.x+t.width-r,y1:t.y+e},{x0:t.x+r,y0:t.y+t.height-e,x1:t.x+t.width-r,y1:t.y+t.height+e}])i.x0<i.x1&&i.y0<i.y1&&I.push(g(i,P))}if(!(x?x[e]:m)||"rect"!==t.kind||1!==D(i.opacity)||1!==D(i.fillOpacity)||!i.fill||!n(i.fill))continue;let r=Math.min(t.width/2,t.rx??t.ry??0),o=Math.min(t.height/2,t.ry??t.rx??0),a=s({x:t.x+r,y:t.y+o},M),l=s({x:t.x+t.width-r,y:t.y+t.height-o},M);C.push({x0:Math.min(a.x,l.x),y0:Math.min(a.y,l.y),x1:Math.max(a.x,l.x),y1:Math.max(a.y,l.y)})}d.push({...L,interiors:C,strokeInteriors:I})}return d}(e,r.primitives));z?.uncertain&&j("Emitted document context or marker resource differs from retained paint evidence");let q=0,J=z?.operations??0,V=z?.exhausted??!1,K=()=>J>=G?(V=!0,!1):(J++,!0),Z=new Map;for(let e of r.primitives){if(V)break;for(let t of[e.owner,...e.ancestors]){if(!K())break;if(!ef.has(t.role))continue;let e=Z.get(t.id)??new Set;e.add(t.role),Z.set(t.id,e)}}let H=(e,t)=>{let i=!1;for(let[r,n]of[[e.endpoints.from,e.endpoints.start],[e.endpoints.to,e.endpoints.end]])if(r===t.id)if(n?.owner){if(n.owner.id!==r){i=!0;continue}if(n.owner.role===t.role)return"attached"}else{if(!((Z.get(r)?.size??0)>1))return"attached";i=!0}return i?"ambiguous":"unrelated"},el=(e,t)=>{if(!(V||!K()||!e||!et(e.bounds,t.bounds))){if(!e.leaves){el(e.left,t),el(e.right,t);return}for(let i of e.leaves){if(!K())return;if(++q>Q){V=!0;return}i.primitive.order<=t.order||!et(i.bounds,t.bounds)||(i.interiors?.some(e=>K()&&ee(e,t.bounds))?M({code:"TEXT_OCCLUDED",id:t.id,by:i.primitive.id,message:`Retained text is fully covered by later opaque artwork owned by ${i.primitive.owner.id}`},!0):N(t.id,i.primitive.id,"Later filled artwork overlaps the occupied text band; its exact ink intersection is unverified"))}}};for(let e of r.primitives)"text"===e.kind&&"measured"===e.coverage&&"conditional"!==e.visibility&&el(_,e);let ey=new Map;for(let i of r.primitives){if(!K())break;let r=E(i);if(r?.kind!=="connector"||!["edge","relationship"].includes(i.role)||"invisible"===r.lineStyle||"conditional"===i.visibility||"measured"!==i.coverage)continue;let n=Number.parseFloat(String(r.stroke.width)),a=Number(r.stroke.opacity??1);if(0===n||0===a||"none"===r.stroke.color||"transparent"===r.stroke.color)continue;if(!ey.has(r.stroke.color)){let i=t(r.stroke.color,e.colors);ey.set(r.stroke.color,i?F(i)?.[3]:void 0)}let l=ey.get(r.stroke.color);if(0===l)continue;let d=!1!==o.outputSupported&&!e.family.startsWith("family:")&&!!r.endpoints?.from&&!!r.endpoints.to&&void 0!==l&&l>0&&n>0&&a>0&&!r.stroke.dash,u=W(i),[f,c,p,x,m,v]=u,w={kind:"matrix",a:f,b:c,c:p,d:x,e:m,f:v},j=k({stroke:r.stroke.color,strokeWidth:String(r.stroke.width),strokeLinecap:r.stroke.lineCap,strokeLinejoin:r.stroke.lineJoin,strokeMiterlimit:String(r.stroke.miterLimit)},b(r.route));if(void 0===j){O(i.id,"Final connector stroke has no bounded cap/join extent");continue}let z=e=>{if(!K())return!1;let t=r.stroke.nonScaling?y(g(e.bounds,w),j):g(y(e.bounds,j),w),o=e.line?.map(e=>s(e,u)),a=e=>{if(!(V||!K()||!e||!et(e.bounds,t))){if(!e.leaves){a(e.left),a(e.right);return}for(let a of e.leaves){if(!K())return;if(++q>Q){V=!0;return}let e=d&&"note"===a.primitive.role&&!!a.interiors?.length;if(!eu.has(a.primitive.role)&&!e||a.primitive.owner.id===i.owner.id&&a.primitive.owner.role===i.owner.role||!et(a.bounds,t))continue;let l=H(r,a.primitive.owner);"attached"!==l&&(d&&o&&function(e,t,i,r,n,o,a){if(!a()||!o.every(Number.isFinite)||1!==o[0]||0!==o[1]||0!==o[2]||1!==o[3]||i.nonScaling||!["butt","round","square"].includes(i.lineCap??"butt")||!["miter","round","bevel"].includes(i.lineJoin??"miter")||!Number.isFinite(r)||r<=0||!Number.isFinite(n)||n<r/2)return!1;let[l,s]=e;if(![l.x,l.y,s.x,s.y].every(Number.isFinite)||l.x!==s.x&&l.y!==s.y||l.x===s.x&&l.y===s.y)return!1;let d=r/2,u={x0:Math.min(l.x,s.x)-d,y0:Math.min(l.y,s.y)-d,x1:Math.max(l.x,s.x)+d,y1:Math.max(l.y,s.y)+d};if(!a()||!Object.values(u).every(Number.isFinite)||et(u,t))return!1;for(let i of e){if(!a())return!1;let e={x0:i.x-n,y0:i.y-n,x1:i.x+n,y1:i.y+n};if(!Object.values(e).every(Number.isFinite)||et(e,t))return!1}return!0}(o,a.bounds,r.stroke,n,j,u,K)||(d&&"unrelated"===l&&o&&a.interiors?.some(e=>K()&&function(e,t){let[i,r]=e,n=0,o=1;for(let[e,a,l,s]of[[i.x,r.x-i.x,t.x0,t.x1],[i.y,r.y-i.y,t.y0,t.y1]])if(1e-12>Math.abs(a)){if(e<=l+1e-8||e>=s-1e-8)return!1}else{let t=(l-e)/a,i=(s-e)/a;n=Math.max(n,Math.min(t,i)),o=Math.min(o,Math.max(t,i))}return(o-n)*Math.hypot(r.x-i.x,r.y-i.y)>1e-8}(o,e))?M({code:"CONNECTOR_CARD_CROSSING",id:i.id,by:a.primitive.id,message:`Final connector shaft crosses opaque artwork owned by unrelated ${e?"note":"card"} ${a.primitive.owner.id}`},!0):N(i.id,a.primitive.id,e?"Final connector envelope intersects unrelated filled note artwork; actual route/note crossing is unverified":"Final connector envelope intersects unrelated filled card artwork; actual route/card crossing is unverified")))}}};return a(_),!V},S=r.route.geometry;if("path"===S.kind)h(S.d,z,K)||V||O(i.id,"Final connector segments could not be measured from typed path geometry");else{let e="line"===S.kind?[{x:S.x1,y:S.y1},{x:S.x2,y:S.y2}]:S.points;for(let t=1;t<e.length;t++){let i=e[t-1],r=e[t];if(!z({bounds:{x0:Math.min(i.x,r.x),y0:Math.min(i.y,r.y),x1:Math.max(i.x,r.x),y1:Math.max(i.y,r.y)},line:[i,r]}))break}}}let ec=new Map,ep,ex=t=>(ep??=i())(t,e.colors);for(let t of r.primitives){let i=E(t);if("connector"!==t.kind||i?.kind!=="connector"||"invisible"===i.lineStyle||"non-painting"===t.coverage)continue;let r=d(a(i.transform));if(!r)continue;let[n,s,u,y,m,g]=l(W(t),r);for(let r of p(i,{kind:"matrix",a:n,b:s,c:u,d:y,e:m,f:g})){if(!r.bounds){O(t.id,"Endpoint marker has no painted footprint");continue}let n=JSON.stringify([t.owner.id,t.owner.role,r.position,r.resource,r.anchor,r.repaint]),a="number"==typeof i.stroke.width?Number.isFinite(i.stroke.width)&&i.stroke.width>0:/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(i.stroke.width)&&Number.parseFloat(i.stroke.width)>0,l="start"===r.position?i.markers.start:"end"===r.position?i.markers.end:1===i.markers.mid.length?i.markers.mid[0]:void 0,s="measured"===t.coverage&&!!d(W(t)),u=l?.units==="userSpaceOnUse"||a,y=ec.get(n),m=!1!==o.outputSupported&&!e.family.startsWith("family:")&&(["edge","relationship"].includes(t.role)&&!!i.endpoints?.from&&!!i.endpoints.to||y?.semantic===!0),g=W(t),b="measured"===t.coverage&&"conditional"!==t.visibility&&(t.groupOpacity??1)===1&&0===t.ancestors.length&&!!g&&1===g[0]&&0===g[1]&&0===g[2]&&1===g[3]&&0===g[4]&&0===g[5],v=m&&b&&u?function(e,t,i,r){let{position:n,anchor:o}=i;for(let e=0;e<18;e++)if(!r())return;if(!t||"mid"===n||e.transform||e.route.closed||e.stroke.nonScaling||"visible"===t.overflow||(t.scale??1)!==1||t.paint?.vectorEffect==="non-scaling-stroke"||void 0!==t.orient&&"auto"!==t.orient&&"auto-start-reverse"!==t.orient||!t.size||!t.ref||!(t.size.width>0)||!(t.size.height>0)||!Number.isFinite(t.size.width+t.size.height+t.ref.x+t.ref.y)||t.ref.y<0||t.ref.y>t.size.height||0!==t.ref.x&&t.ref.x!==t.size.width||t.viewBox&&(0!==t.viewBox.x||0!==t.viewBox.y||t.viewBox.width!==t.size.width||t.viewBox.height!==t.size.height))return;let a=e.route.geometry,l,s,d=(e,t)=>{if(!r()||!Number.isFinite(e)||!Number.isFinite(t))return!1;if(l){if(e!==l.x||t!==l.y)return s={x:e,y:t},!1}else l={x:e,y:t};return!0};if("line"===a.kind){if(!d("start"===n?a.x1:a.x2,"start"===n?a.y1:a.y2))return;d("start"===n?a.x2:a.x1,"start"===n?a.y2:a.y1)}else if("polyline"!==a.kind)return;else for(let e=0;e<a.points.length;e++){let t=a.points["start"===n?e:a.points.length-e-1];if(!d(t.x,t.y))break}if(!l||!s||l.x!==o.x||l.y!==o.y||l.x!==s.x&&l.y!==s.y)return;let u=e=>({x:Number(c(e.x)),y:Number(c(e.y))}),y=u(l),h=u(s),m=l.y===s.y;if(![y.x,y.y,h.x,h.y].every(Number.isFinite)||m&&(y.x!==l.x||y.y!==h.y||Math.sign(h.x-y.x)!==Math.sign(s.x-l.x))||!m&&(y.y!==l.y||y.x!==h.x||Math.sign(h.y-y.y)!==Math.sign(s.y-l.y)))return;let g=1;if("userSpaceOnUse"!==t.units){let t=String(e.stroke.width);if(!/^\s*(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(?:px)?\s*$/i.test(t)||!((g=Number.parseFloat("number"==typeof e.stroke.width?c(e.stroke.width):x("stroke-width",e.stroke.width)))>0)||!Number.isFinite(g)||g!==Number.parseFloat(t))return}let b="start"===n?y:h,k="start"===n?h:y,v={x:k.x-b.x,y:k.y-b.y},w=p({route:{geometry:{kind:"line",x1:b.x,y1:b.y,x2:k.x,y2:k.y},closed:!1,contours:[{start:b,end:k,closed:!1,startTangent:v,endTangent:v}]},stroke:{width:g},markers:{mid:[],..."start"===n?{start:t}:{end:t}}})[0];if(!r()||!w?.bounds||!i.bounds)return;let M=f(i.bounds,w.bounds),N="end"===n||"auto-start-reverse"===t.orient?-1:1,O=0===t.ref.x?1:-1,j=Math.sign(s.x-l.x)*N*O,z=Math.sign(s.y-l.y)*N*O;if(!r())return;let F={x0:j>0?Math.max(M.x0,w.anchor.x):M.x0,y0:z>0?Math.max(M.y0,w.anchor.y):M.y0,x1:j<0?Math.min(M.x1,w.anchor.x):M.x1,y1:z<0?Math.min(M.y1,w.anchor.y):M.y1};return F.x0<=F.x1&&F.y0<=F.y1?{region:{...w,bounds:M},clipped:F}:void 0}(i,l,r,K):void 0,w=v?.region??r,M=s&&u?function(e,t,i,r){if(!e||!t||e.geometry?.kind!=="polygon"||(e.scale??1)>1||1!==D(e.paint?.opacity)||1!==D(e.paint?.fillOpacity)||!e.paint?.fill)return;let n=i(e.paint.fill);if(!n||F(n)?.[3]!==1)return;let o=e.geometry.points;if(o.length<3||o.length>64||o.length!==t.length)return;let a=Math.sign(o.reduce((e,t,i)=>{let r=o[(i+1)%o.length];return e+t.x*r.y-r.x*t.y},0));if(!a||!o.every((e,t)=>o.every(i=>r()&&a*((o[(t+1)%o.length].x-e.x)*(i.y-e.y)-(o[(t+1)%o.length].y-e.y)*(i.x-e.x))>=0)))return;let l=e=>({x:e.reduce((e,t)=>e+t.x,0)/e.length,y:e.reduce((e,t)=>e+t.y,0)/e.length}),s=l(o),d=l(t),u=e.viewBox??(e.size?{x:0,y:0,width:e.size.width,height:e.size.height}:void 0),f=[];for(let i=-1,n=o.length;i<n;i++){if(!r())continue;let n=i<0?s:{x:(s.x+o[i].x)/2,y:(s.y+o[i].y)/2};("visible"===e.overflow||u&&n.x>u.x&&n.x<u.x+u.width&&n.y>u.y&&n.y<u.y+u.height)&&f.push(i<0?d:{x:(d.x+t[i].x)/2,y:(d.y+t[i].y)/2})}return f}(l,w.hull,ex,K):void 0,N=s&&u&&l?.paint?.vectorEffect!=="non-scaling-stroke"&&function(e,t,i,r){if(t?.length)return!0;if(!e?.geometry||1!==D(e.paint?.opacity))return!1;let n=e.viewBox??(e.size?{x:0,y:0,width:e.size.width,height:e.size.height}:void 0),o=t=>Number.isFinite(t.x)&&Number.isFinite(t.y)&&("visible"===e.overflow||!!n&&t.x>n.x&&t.x<n.x+n.width&&t.y>n.y&&t.y<n.y+n.height),a=e=>{if(!e||!r())return!1;let t=i(e);return!!t&&F(t)?.[3]===1},l=e.geometry;if(1===D(e.paint?.fillOpacity)&&a(e.paint?.fill)&&("circle"===l.kind&&l.r>0&&o({x:l.cx,y:l.cy})||"ellipse"===l.kind&&l.rx>0&&l.ry>0&&o({x:l.cx,y:l.cy})||"rect"===l.kind&&l.width>0&&l.height>0&&o({x:l.x+l.width/2,y:l.y+l.height/2})))return!0;if(1!==D(e.paint?.strokeOpacity)||!a(e.paint?.stroke)||e.paint?.strokeDasharray||!(Number.parseFloat(e.paint?.strokeWidth??"1")>0)||void 0===k(e.paint??{},!0))return!1;let s=(e,t)=>r()&&Math.hypot(t.x-e.x,t.y-e.y)>0&&o({x:(e.x+t.x)/2,y:(e.y+t.y)/2});if("line"===l.kind)return s({x:l.x1,y:l.y1},{x:l.x2,y:l.y2});if("polygon"===l.kind||"polyline"===l.kind)return l.points.length<=64&&l.points.some((e,t)=>t>0&&s(l.points[t-1],e));if("path"===l.kind){let e=!1;return h(l.d,t=>(t.line&&s(t.line[0],t.line[1])&&(e=!0),r()),r)&&e}return!1}(l,M,ex,K),j=function(e,t,i){if(!i()||!t)return!0;if(t.geometry?.kind==="line"||t.paint?.fill==="none"||t.paint?.fill==="transparent"||1>D(t.paint?.opacity))return!1;let r=t.paint?.fill;if(!r||!i())return!0;let n=e(r),o=n?F(n):null;return!o||1===o[3]}(ex,l,K),z=m&&(t.groupOpacity??1)===1&&0===t.ancestors.length&&(!i.stroke.mixBlendMode||"normal"===i.stroke.mixBlendMode)?function(e,t,i){let r=e?.paint;if(!i()||!r||!Number.isFinite(D(r.opacity))||void 0===k(r,!0)||void 0!==r.strokeDasharray&&"none"!==r.strokeDasharray||void 0!==r.strokeDashoffset||void 0!==r.paintOrder&&"normal"!==r.paintOrder||!r.fill||!r.stroke||!i())return;let n=t(r.fill);if(!n||"none"!==n&&!F(n)||!i())return;let o=t(r.stroke);if(!(!o||"none"!==o&&!F(o)))return`${n}\0${o}`}(l,ex,K):void 0,S=m&&b?ea(e,i,l,r.position,K,ex):void 0;ec.set(n,{primitive:t,position:r.position,clipped:v?.clipped,anchor:w.anchor,repaint:w.repaint,bounds:w.bounds,hull:w.hull,padding:w.padding,witnesses:M,actualInk:N,strokeProof:S,paintIdentity:z,semantic:m,mayFill:j})}}let em=(e,t)=>{if("conditional"!==t.primitive.visibility&&!(V||!K()||!e||!et(e.bounds,t.bounds))){if(!e.leaves){em(e.left,t),em(e.right,t);return}for(let i of e.leaves){if(!K())return;if(++q>Q){V=!0;return}if(i.primitive.order<=t.primitive.order||!et(i.bounds,t.bounds))continue;if(t.actualInk&&(i.interiors?.some(e=>K()&&ee(e,t.bounds))||i.strokeInteriors?.some(e=>K()&&ee(e,t.bounds)))){M({code:"MARKER_OCCLUDED",id:t.primitive.id,by:i.primitive.id,message:"Endpoint marker is fully covered by later opaque artwork with no owned repaint"},!0);continue}let e=E(t.primitive),r=e?.kind==="connector"&&"attached"===H(e,i.primitive.owner);eo(i,t.bounds,r,t.hull,t.padding,K,t.witnesses,t.anchor)||t.clipped&&eo(i,t.clipped,r,void 0,0,K,t.witnesses,t.anchor,!0)||N(t.primitive.id,i.primitive.id,"Later filled artwork overlaps an endpoint marker; its exact ink intersection is unverified")}}},eg=Array.from(ec.values());for(let e=0;e<eg.length;e++)em(_,eg[e]);for(let e=0;e<eg.length;e++){let t=eg[e];if(!K())break;if(!t.semantic||"conditional"===t.primitive.visibility||t.strokeProof?.fill==="absent"&&"absent"===t.strokeProof.stroke)continue;let i=r.primitives;for(let e=0;e<i.length;e++){let r=i[e];if(!K())break;if("text"!==r.kind||"measured"!==r.coverage||"conditional"===r.visibility||!r.bounds||!et(r.bounds,t.bounds))continue;if(++q>Q){V=!0;break}let n=t.primitive.order>r.order;N(n?r.id:t.primitive.id,n?t.primitive.id:r.id,n?"Later endpoint-marker ink overlaps occupied text; actual text visibility is unverified.":"Later occupied text or its halo overlaps an endpoint marker; actual marker ink visibility is unverified.")}}for(let e=0;e<eg.length;e++){let t=eg[e];if(V)break;if(!(!t.semantic||"conditional"===t.primitive.visibility))for(let e=0;e<eg.length;e++){let i=eg[e];if(!K())break;let n=t.strokeProof?.repaint,o=i.strokeProof?.repaint,a=void 0!==t.paintIdentity&&t.paintIdentity===i.paintIdentity;if(!i.semantic||"conditional"===i.primitive.visibility||i.primitive.order<=t.primitive.order||a&&(t.anchor.x===i.anchor.x&&t.anchor.y===i.anchor.y&&t.repaint===i.repaint||n&&o&&n.resource===o.resource&&n.geometry===o.geometry&&n.anchor.x===o.anchor.x&&n.anchor.y===o.anchor.y)||!et(t.bounds,i.bounds))continue;if(++q>Q){V=!0;break}let l=0,s="unknown";for(;!V;){let e=i.mayFill?ed(t.strokeProof,i.strokeProof,K,l):es(t.strokeProof,i.strokeProof,K);if("exhausted"===e&&(e="unknown"),"string"==typeof e){s=e;break}let n=!1,o=r.primitives;for(let t=0;t<o.length;t++){let r=o[t];if(!K())break;let a=r.bounds;if(r.order<=i.primitive.order||"non-painting"===r.coverage)continue;if(!a){n=!0;break}if(a.x0>e.x||e.x>a.x1||a.y0>e.y||e.y>a.y1)continue;let l=E(r);if(l?.kind==="connector"&&0===Number(l.stroke.opacity)){let t=!1;for(let i=0;i<eg.length;i++){let n=eg[i];if(!K())break;if(!(n.primitive.order!==r.order||n.bounds.x0>e.x||e.x>n.bounds.x1||n.bounds.y0>e.y||e.y>n.bounds.y1)&&!function(e,t,i){if(!e||void 0===e.innerStroke)return!1;let r=e.hull,n=0;for(let e=0;e<r.length;e++){if(!i())return!1;let t=r[e],o=r[(e+1)%r.length],a=r[(e+2)%r.length],l=(o.x-t.x)*(a.y-o.y)-(o.y-t.y)*(a.x-o.x);if(l){n=Math.sign(l);break}}if(!n)return!1;for(let o=0;o<r.length&&i();o++){let i=r[o],a=r[(o+1)%r.length],l=a.x-i.x,s=a.y-i.y,d=Math.hypot(l,s),u=n*(l*(t.y-i.y)-s*(t.x-i.x))/d,f=1e-8+64*Number.EPSILON*Math.max(1,Math.abs(t.x),Math.abs(t.y),Math.abs(i.x),Math.abs(i.y),Math.abs(a.x),Math.abs(a.y));if(Number.isFinite(u)&&u<-e.innerStroke-f)return!0}return!1}(n.strokeProof,e,K)){t=!0;break}}if(!t&&!V)continue}n=!0;break}if(!n&&!V){s="covered";break}let a=t.strokeProof.strokeWitnesses,d=!1;for(;l<a.length&&K();l++)if(a[l]===e){l++,d=!0;break}if(!d)break}"covered"!==s||V?"unknown"===s&&N(t.primitive.id,i.primitive.id,"Distinct endpoint-marker envelopes overlap; actual marker ink separation is unverified."):M({code:"MARKER_OCCLUDED",id:t.primitive.id,by:i.primitive.id,message:"Later opaque endpoint-marker fill covers actual stroke ink of a distinct marker."},!0)}}for(let e of(V&&M({code:"CHECK_BUDGET",message:`Occlusion checking reached its ${Q}-pair or ${G}-operation limit`}),r.primitives))e.bounds&&"conditional"!==e.visibility&&!ee(A,e.bounds,1e-6)&&O(e.id,"Final viewport does not contain retained paint",!0);for(let e of eg)"conditional"===e.primitive.visibility||ee(A,e.bounds,1e-6)||O(e.primitive.id,"Final viewport does not contain serialized marker paint",!0);return Object.freeze({version:1,unit:"px",scope:"native-scene",status:m?"failed":w?"unverified":"passed",viewport:$,attempts:C?2:1,repairs:Object.freeze(C?["expand-viewport"]:[]),coverage:Object.freeze({measured:r.coverage.measured,unmeasured:r.coverage.unmeasured,preparedText:r.coverage.preparedText,fallbackText:r.coverage.fallbackText,conditional:L}),checks:Object.freeze({primitives:r.primitives.length,labels:U,occlusionPairs:Math.min(q,Q),maxOcclusionPairs:Q,operations:J,maxOperations:G,markers:ec.size}),issues:Object.freeze(u),limitations:Object.freeze(["Prepared occupied text regions bound native geometry; exact glyph ink depends on the resolved font.","Declared transparency, intentional data-mark overlap and externally modified CSS are outside this proof."])})}var ec=class extends Error{constructor(e){super(`Final paint certification failed: ${e.issues.map(e=>`${e.id??"scene"}: ${e.message}`).join("; ")}`),this.certification=e,this.name="PaintLayoutCertificationError"}certification;code="PAINT_LAYOUT_CERTIFICATION_FAILED"};export{Z as a,D as b,$ as c,J as d,V as e,G as f,H as g,Q as h,ea as i,ed as j,ey as k,eh as l,ec as m};
|