graview 0.1.43 → 0.1.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/preview/{chunk.6AYTF53S.js → chunk.2EFH63WS.js} +1 -1
  2. package/dist/preview/{chunk.YPEZZLOY.js → chunk.2JJYGYT2.js} +1 -1
  3. package/dist/preview/chunk.2LKMNEWZ.js +1 -0
  4. package/dist/preview/{chunk.X5WB4GJ4.js → chunk.2YABX3SC.js} +1 -1
  5. package/dist/preview/{chunk.OIJP6PQV.js → chunk.3HSPWSAI.js} +1 -1
  6. package/dist/preview/chunk.3NMINX5Z.js +1 -0
  7. package/dist/preview/{chunk.SKB4XSDG.js → chunk.4HYJHGI4.js} +1 -1
  8. package/dist/preview/{chunk.F6CPM7SL.js → chunk.4KNEBLB7.js} +1 -1
  9. package/dist/preview/{chunk.3GQL4K3Q.js → chunk.4RJZVTW7.js} +1 -1
  10. package/dist/preview/{chunk.N3FONYEP.js → chunk.4XOWRYRU.js} +2 -2
  11. package/dist/preview/{chunk.4P3LS2OE.js → chunk.55D33E5A.js} +1 -1
  12. package/dist/preview/{chunk.FTF67QE2.js → chunk.5B2LH2SR.js} +1 -1
  13. package/dist/preview/chunk.5EDA3JHU.js +1 -0
  14. package/dist/preview/{chunk.TX65ZO27.js → chunk.5O5IJVLN.js} +1 -1
  15. package/dist/preview/chunk.5R2R364Q.js +1 -0
  16. package/dist/preview/{chunk.6BU3GCHK.js → chunk.63JLXGYX.js} +1 -1
  17. package/dist/preview/{chunk.XGRMQUFB.js → chunk.64WM4IBI.js} +1 -1
  18. package/dist/preview/chunk.66JF3UMG.js +1 -0
  19. package/dist/preview/chunk.6BJBPDF3.js +349 -0
  20. package/dist/preview/{chunk.T4M4MLOS.js → chunk.6KWFTSK4.js} +1 -1
  21. package/dist/preview/{chunk.EBTYR5CZ.js → chunk.6MADC6DM.js} +1 -1
  22. package/dist/preview/{chunk.WH2RYGXR.js → chunk.6RY6OSE6.js} +1 -1
  23. package/dist/preview/{chunk.4YLBGGWT.js → chunk.6SJA4FSW.js} +1 -1
  24. package/dist/preview/chunk.6SWW6KEV.js +1 -0
  25. package/dist/preview/chunk.6UIW664O.js +6 -0
  26. package/dist/preview/chunk.6USUVORO.js +1 -0
  27. package/dist/preview/{chunk.B2KDYES6.js → chunk.6X3G3PWL.js} +1 -1
  28. package/dist/preview/chunk.7KVWV577.js +1 -0
  29. package/dist/preview/{chunk.DZN26GKS.js → chunk.7ZRFXI73.js} +1 -1
  30. package/dist/preview/chunk.AS4CQBOQ.js +5 -0
  31. package/dist/preview/{chunk.C3DX4LWD.js → chunk.B6KT6BTG.js} +4 -4
  32. package/dist/preview/{chunk.RDXDEFOC.js → chunk.BGYY55VO.js} +1 -1
  33. package/dist/preview/{chunk.A3WOUDOG.js → chunk.BNPQUI3F.js} +1 -1
  34. package/dist/preview/chunk.BRDAO2OF.js +4 -0
  35. package/dist/preview/{chunk.C3X3R7LP.js → chunk.BS2SJC2P.js} +2 -2
  36. package/dist/preview/{chunk.RQBX7M7Q.js → chunk.C2UFMFJ3.js} +2 -2
  37. package/dist/preview/{chunk.S2MP53RO.js → chunk.CBUSFM3E.js} +1 -1
  38. package/dist/preview/chunk.CSDERNQV.js +1 -0
  39. package/dist/preview/chunk.DLFWBG33.js +1 -0
  40. package/dist/preview/{chunk.5TBK44MK.js → chunk.DQHPEKWK.js} +1 -1
  41. package/dist/preview/{chunk.5J2HETUO.js → chunk.DQOCBKC3.js} +1 -1
  42. package/dist/preview/{chunk.R7F6UJVG.js → chunk.DX357TZ3.js} +1 -1
  43. package/dist/preview/{chunk.T4QT5SZY.js → chunk.E37V2EJM.js} +1 -1
  44. package/dist/preview/{chunk.XAXZCOZK.js → chunk.E4G6DXSB.js} +1 -1
  45. package/dist/preview/chunk.EAUVEVVO.js +1 -0
  46. package/dist/preview/chunk.EVW5YY3W.js +1 -0
  47. package/dist/preview/chunk.F6HMZL65.js +1 -0
  48. package/dist/preview/{chunk.IJ2AF3AW.js → chunk.FCAYURB4.js} +1 -1
  49. package/dist/preview/{chunk.LDU25CCL.js → chunk.FF6DBQMB.js} +1 -1
  50. package/dist/preview/chunk.FHZBXMXR.js +33 -0
  51. package/dist/preview/{chunk.26SI4K3P.js → chunk.FOFLD64U.js} +1 -1
  52. package/dist/preview/{chunk.BYVE2NQY.js → chunk.FPASZ4RD.js} +1 -1
  53. package/dist/preview/{chunk.KR3J27IA.js → chunk.FTM64IDI.js} +1 -1
  54. package/dist/preview/chunk.GEPNIMXW.js +1 -0
  55. package/dist/preview/{chunk.25VAWLKJ.js → chunk.GER2XRD4.js} +1 -1
  56. package/dist/preview/chunk.GFLAGZSB.js +1 -0
  57. package/dist/preview/{chunk.JNCSGUO3.js → chunk.GIYFEGAP.js} +1 -1
  58. package/dist/preview/chunk.GVY5UQTJ.js +1 -0
  59. package/dist/preview/{chunk.DYW4D74X.js → chunk.H7KCWCB4.js} +1 -1
  60. package/dist/preview/{chunk.RSYFIL2Z.js → chunk.HDRD33II.js} +1 -1
  61. package/dist/preview/{chunk.3B47UX2J.js → chunk.HGTPTRMM.js} +1 -1
  62. package/dist/preview/chunk.HWCHFQ7O.js +6 -0
  63. package/dist/preview/{chunk.4ZHUGSJL.js → chunk.HZGVEHEN.js} +1 -1
  64. package/dist/preview/{chunk.I4HUBO22.js → chunk.ICCIZDTQ.js} +1 -1
  65. package/dist/preview/{chunk.YKN2VWWQ.js → chunk.ICGNIK3Z.js} +2 -2
  66. package/dist/preview/chunk.II7VTGNC.js +1 -0
  67. package/dist/preview/{chunk.R2B2ZAWI.js → chunk.IKX4VDTW.js} +1 -1
  68. package/dist/preview/chunk.IW7YFPGG.js +1 -0
  69. package/dist/preview/chunk.J7G3AATY.js +14 -0
  70. package/dist/preview/{chunk.DJ3BD7AZ.js → chunk.JBW3DI7E.js} +1 -1
  71. package/dist/preview/{chunk.6IEDQHKI.js → chunk.JDMXZFSG.js} +1 -1
  72. package/dist/preview/{chunk.4IDXQVSW.js → chunk.JHIUG25Q.js} +1 -1
  73. package/dist/preview/{chunk.OWL5GZ6U.js → chunk.JLEC3USG.js} +1 -1
  74. package/dist/preview/{chunk.ZRICIE6T.js → chunk.JLYNMAME.js} +1 -1
  75. package/dist/preview/{chunk.C5NOO4CC.js → chunk.JR7RDOEP.js} +1 -1
  76. package/dist/preview/{chunk.KWQ67UK2.js → chunk.JSSFA3FC.js} +1 -1
  77. package/dist/preview/chunk.K46YRA65.js +1 -0
  78. package/dist/preview/chunk.K6KMLD2B.js +21 -0
  79. package/dist/preview/{chunk.ONSG3OIL.js → chunk.KBHU54NM.js} +1 -1
  80. package/dist/preview/{chunk.6ROYIMQ2.js → chunk.KRGM25HF.js} +1 -1
  81. package/dist/preview/chunk.KUUDW7VR.js +1 -0
  82. package/dist/preview/{chunk.TMBFLZNH.js → chunk.KWQ7QOHD.js} +1 -1
  83. package/dist/preview/chunk.L24FCXZ7.js +1 -0
  84. package/dist/preview/{chunk.7TU2PDYW.js → chunk.L2PI7V4R.js} +1 -1
  85. package/dist/preview/{chunk.NH6D6TWY.js → chunk.L3FOLN3K.js} +1 -1
  86. package/dist/preview/{chunk.PWYMZWAN.js → chunk.L3FQZCWI.js} +1 -1
  87. package/dist/preview/{chunk.IJU322EP.js → chunk.LEO2KWLZ.js} +1 -1
  88. package/dist/preview/{chunk.3HLNRVFY.js → chunk.LNG3CQNI.js} +1 -1
  89. package/dist/preview/{chunk.27QYTMXP.js → chunk.LSLLKICK.js} +1 -1
  90. package/dist/preview/{chunk.QXTLZSBL.js → chunk.M5GJHVWZ.js} +1 -1
  91. package/dist/preview/{chunk.GZA5ZNLJ.js → chunk.MGWMGLWE.js} +1 -1
  92. package/dist/preview/{chunk.7MXQRSNR.js → chunk.NIVTK2W5.js} +1 -1
  93. package/dist/preview/chunk.NMIXBH37.js +1 -0
  94. package/dist/preview/{chunk.6PF5LWRK.js → chunk.OF34OZ4V.js} +1 -1
  95. package/dist/preview/chunk.OMZ3LDDN.js +1 -0
  96. package/dist/preview/{chunk.QWY54AVN.js → chunk.OYHQSXNC.js} +1 -1
  97. package/dist/preview/{chunk.BT6FUNQI.js → chunk.PKUDIWIF.js} +1 -1
  98. package/dist/preview/chunk.PRD3UNJX.js +7 -0
  99. package/dist/preview/{chunk.FKLEIR4Y.js → chunk.Q7RQC3F7.js} +1 -1
  100. package/dist/preview/{chunk.BYVLGDVJ.js → chunk.QGVLJTZS.js} +1 -1
  101. package/dist/preview/chunk.QPCSS322.js +1 -0
  102. package/dist/preview/{chunk.ZEC64CK6.js → chunk.R2AG4NHQ.js} +1 -1
  103. package/dist/preview/{chunk.7XCBIID7.js → chunk.RNEJYIQ7.js} +1 -1
  104. package/dist/preview/chunk.RPX35VYU.js +1 -0
  105. package/dist/preview/{chunk.CO2ZPX3D.js → chunk.RYRTKIKB.js} +2 -2
  106. package/dist/preview/chunk.S5MQVPLF.js +1 -0
  107. package/dist/preview/{chunk.Z56L6V6Z.js → chunk.S6WHA4CW.js} +1 -1
  108. package/dist/preview/{chunk.XBV4WO7D.js → chunk.SDU76JU6.js} +1 -1
  109. package/dist/preview/{chunk.GSZYT6GF.js → chunk.SGKPGVBB.js} +1 -1
  110. package/dist/preview/chunk.SZ34UAQ3.js +2 -0
  111. package/dist/preview/chunk.T7XH7FVJ.js +1 -0
  112. package/dist/preview/{chunk.MI2HL3LQ.js → chunk.TBQOSI4J.js} +1 -1
  113. package/dist/preview/{chunk.WWR7Y2KE.js → chunk.TBSNNOQU.js} +1 -1
  114. package/dist/preview/{chunk.CW6IPHRR.js → chunk.TOXWNEOQ.js} +2 -2
  115. package/dist/preview/{chunk.T4Q6OLZU.js → chunk.UHX4WTM7.js} +1 -1
  116. package/dist/preview/chunk.UJKT2G6M.js +5 -0
  117. package/dist/preview/{chunk.Q5XICUDZ.js → chunk.UKAPFIPJ.js} +1 -1
  118. package/dist/preview/{chunk.7ROWZZN5.js → chunk.UM7GWXEW.js} +1 -1
  119. package/dist/preview/{chunk.OH2N3SX7.js → chunk.UNCS63AM.js} +1 -1
  120. package/dist/preview/{chunk.PEXPTDX7.js → chunk.URXSZQSF.js} +1 -1
  121. package/dist/preview/{chunk.7IXLH7PR.js → chunk.UY7IOVR6.js} +1 -1
  122. package/dist/preview/{chunk.6XEATXZC.js → chunk.V5FIZIX2.js} +1 -1
  123. package/dist/preview/chunk.VC3BX2ZF.js +1 -0
  124. package/dist/preview/{chunk.FCPH4YZN.js → chunk.VSAPJAT3.js} +1 -1
  125. package/dist/preview/{chunk.MBOOUJOE.js → chunk.VW2VCPJX.js} +1 -1
  126. package/dist/preview/chunk.W2RCWPLK.js +1 -0
  127. package/dist/preview/{chunk.ZE4U4JBF.js → chunk.W44VRHKS.js} +2 -2
  128. package/dist/preview/{chunk.SGRKCQ2X.js → chunk.WAB7UDHU.js} +1 -1
  129. package/dist/preview/chunk.WBHM5I3I.js +1 -0
  130. package/dist/preview/chunk.WM2LWHTJ.js +1 -0
  131. package/dist/preview/{chunk.ZE6LJVVN.js → chunk.WPOTEXJZ.js} +1 -1
  132. package/dist/preview/{chunk.RPDTWQKA.js → chunk.WSTBCWW7.js} +3 -3
  133. package/dist/preview/{chunk.XFQUVMRI.js → chunk.XMCFZD3A.js} +1 -1
  134. package/dist/preview/chunk.XWAMQPUM.js +25 -0
  135. package/dist/preview/{chunk.IQ3LUSD6.js → chunk.XXEYRHRG.js} +1 -1
  136. package/dist/preview/{chunk.CTSPNTDX.js → chunk.Y5ARSVH4.js} +1 -1
  137. package/dist/preview/{chunk.DQR45N7V.js → chunk.Z6TMIAAB.js} +1 -1
  138. package/dist/preview/chunk.ZBR2QY67.js +104 -0
  139. package/dist/preview/chunk.ZEAH57AZ.js +1 -0
  140. package/dist/preview/{chunk.FLMNHV6A.js → chunk.ZJ2VS4M4.js} +1 -1
  141. package/dist/preview/chunk.ZTIF23VF.js +1 -0
  142. package/dist/preview/index.html +49 -45
  143. package/dist/preview/page.js +2 -34
  144. package/package.json +6 -6
  145. package/dist/preview/chunk.22E4GKYU.js +0 -1
  146. package/dist/preview/chunk.2JMJTREH.js +0 -1
  147. package/dist/preview/chunk.3JATXDSP.js +0 -1
  148. package/dist/preview/chunk.4C65DXZB.js +0 -1
  149. package/dist/preview/chunk.4HAGPMY6.js +0 -117
  150. package/dist/preview/chunk.4ZSHTUNK.js +0 -1
  151. package/dist/preview/chunk.5BJW4IPW.js +0 -1
  152. package/dist/preview/chunk.63DI7XNE.js +0 -21
  153. package/dist/preview/chunk.64MP7636.js +0 -1
  154. package/dist/preview/chunk.6K4JBLOP.js +0 -1
  155. package/dist/preview/chunk.7L6LYXCV.js +0 -25
  156. package/dist/preview/chunk.7MQ7UWVW.js +0 -5
  157. package/dist/preview/chunk.AXJJUCWT.js +0 -1
  158. package/dist/preview/chunk.CXJXVBGF.js +0 -1
  159. package/dist/preview/chunk.E5PHLNXR.js +0 -1
  160. package/dist/preview/chunk.EPPAFWP7.js +0 -5
  161. package/dist/preview/chunk.GAFYE37S.js +0 -3
  162. package/dist/preview/chunk.GNPYSMHA.js +0 -1
  163. package/dist/preview/chunk.HMABYAZR.js +0 -1
  164. package/dist/preview/chunk.IWUSCCZN.js +0 -1
  165. package/dist/preview/chunk.K6SPN4D6.js +0 -7
  166. package/dist/preview/chunk.KBMVUIWR.js +0 -6
  167. package/dist/preview/chunk.KG5R4GTK.js +0 -1
  168. package/dist/preview/chunk.LBIDNJ6G.js +0 -1
  169. package/dist/preview/chunk.MXU3VQSQ.js +0 -1
  170. package/dist/preview/chunk.NQTCOBOQ.js +0 -1
  171. package/dist/preview/chunk.O4X5WJIC.js +0 -1
  172. package/dist/preview/chunk.ORKXXLWD.js +0 -1
  173. package/dist/preview/chunk.OUN2H3TR.js +0 -1
  174. package/dist/preview/chunk.QJUFVEAU.js +0 -1
  175. package/dist/preview/chunk.RY4E4JRI.js +0 -1
  176. package/dist/preview/chunk.S6BZXNMV.js +0 -1
  177. package/dist/preview/chunk.U3ETEQDO.js +0 -1
  178. package/dist/preview/chunk.VCOIFBUE.js +0 -1
  179. package/dist/preview/chunk.VP35BUUZ.js +0 -349
  180. package/dist/preview/chunk.XVWJD2DG.js +0 -2
  181. package/dist/preview/chunk.YQDIVHCH.js +0 -1
  182. package/dist/preview/chunk.YWVOACSX.js +0 -5
  183. package/dist/preview/chunk.ZHRW2UF4.js +0 -1
  184. package/dist/preview/chunk.ZUJZVK2X.js +0 -1
@@ -0,0 +1,5 @@
1
+ import{a as pe,b as Fe,c as Yn,e as $e,f as Re,g as hn}from"./chunk.2AZTW66C.js";var Zt="en-US",Ce=/^\d{4}-\d{2}-\d{2}$/,Jn=/^\d{4}(-\d\d){2}[T ]\d\d:\d\d(:[\d.]+)?(Z|[+-][\d:]+)?$/,Tf=n=>!Number.isNaN(Date.parse(n)),H=(n,e=Date.now())=>{let t=Xn(n);return t?Lt(e,t).day:new Date(e).toISOString().slice(0,10)},Xn=n=>Le(n)??Ze,gn,mn,yn,Ze;function Rd(n){gn=bn(n.reader),mn=bn(n.app),yn=Le(n.readerTimeZone),Ze=Le(n.appTimeZone)}function _d(n,e){let t=[gn,mn,yn,Ze];n.reader!==void 0&&(gn=bn(n.reader)),n.app!==void 0&&(mn=bn(n.app)),n.readerTimeZone!==void 0&&(yn=Le(n.readerTimeZone)),n.appTimeZone!==void 0&&(Ze=Le(n.appTimeZone));try{return e()}finally{[gn,mn,yn,Ze]=t}}var Eo=n=>gn??bn(n)??mn??Zt,Qn=n=>yn??Le(n)??Ze,Ad=n=>Qn(n)??Intl.DateTimeFormat().resolvedOptions().timeZone??"UTC",Od=/^\s*([+\-−]|\d)/;var Ft=new Map;function Le(n){if(n&&!Ft.has(n)){let e=!1;try{new Intl.DateTimeFormat(Zt,{timeZone:n}),e=!Od.test(n)}catch{}Ft.set(n,e)}return n&&Ft.get(n)?n:void 0}var _e=new Map;function bn(n){if(n&&!_e.has(n)){let e=!1;try{e=Intl.DateTimeFormat.supportedLocalesOf(n).length>0}catch{}_e.set(n,e)}return n&&_e.get(n)?n:void 0}function he(n,e,t,r){let o=`${t=Eo(t)}${r?"#":"@"}${JSON.stringify(e)}`,i=_e.get(o);return i||_e.set(o,i=r?new Intl.NumberFormat(t,e):new Intl.DateTimeFormat(t,e)),i.format(n).replace(/ /g," ")}var Ae="UTC",et=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10));function ge(n,e){return Ce.test(n)?he(et(n),{year:"numeric",month:"short",day:"numeric",timeZone:Ae},e):n}function Lt(n,e){let t=`wall@${e??""}`,r=_e.get(t);r||_e.set(t,r=new Intl.DateTimeFormat("en-US",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",hourCycle:"h23",...e?{timeZone:e}:{}}));let o=Object.fromEntries(r.formatToParts(n).map(i=>[i.type,i.value]));return{day:`${o.year}-${o.month}-${o.day}`,minutes:Number(o.hour)%24*60+Number(o.minute)}}function Po(n,e,t){let r=Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),o=i=>{let s=Lt(i,t);return Ed(s.day,s.minutes)-Math.floor(i/6e4)*6e4};return r-o(r-o(r))}var Ed=(n,e)=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10),0,e),zo=n=>/[Z+-][\d:]*$/.test(n.slice(16));function Mo(n,e,t,r,o=!1){if(!Jn.test(n))return n;let i=zo(n),s=Date.parse(n.replace(" ","T")+(i?"":"Z"));if(Number.isNaN(s))return n;let a=i?Qn(r):Ae;return he(s,{...e,hour:"numeric",minute:"2-digit",...i&&o?{timeZoneName:"short"}:{},...a?{timeZone:a}:{}},t)}var Ct=(n,e,t)=>Mo(n,{year:"numeric",month:"short",day:"numeric"},e,t,!0),Pd=(n,e,t)=>Mo(n,{},e,t);function zd(n,e){if(Ce.test(n))return n;if(!Jn.test(n))return;if(!zo(n))return n.slice(0,10);let t=Date.parse(n.replace(" ","T"));return Number.isNaN(t)?void 0:Lt(t,Qn(e)).day}function se(n,e,t={maximumFractionDigits:2}){return Number.isFinite(n)?he(n,t,e,!0):String(n)}function Md(n,e={},t){return Ce.test(n)?he(et(n),{weekday:e.weekday??"long",month:"short",day:"numeric",...e.year?{year:"numeric"}:{},timeZone:Ae},t):n}function Nd(n,e){return Ce.test(n)?he(et(n),{month:"short",day:"numeric",timeZone:Ae},e):n}function Id(n,e={},t){if(!/^\d{4}-\d{2}/.test(n))return n;let r=e.year??!e.short;return he(et(`${n.slice(0,7)}-01`),{month:e.short?"short":"long",...r?{year:e.short?"2-digit":"numeric"}:{},timeZone:Ae},t)}var jd=(n,e="short",t)=>he(Date.UTC(1970,0,4+n),{weekday:e,timeZone:Ae},t),Td=(n,e)=>he(Date.UTC(1970,0,1,0,Math.round(n)),{hour:"numeric",minute:"2-digit",timeZone:Ae},e),Dd=/(?<![\w-])(\d{4}-\d{2}-\d{2})(?![\w-]|:)/g;function Gt(n,e){return n.includes("-")?n.replace(Dd,t=>ge(t,e)):n}var vn=n=>n.charAt(0).toUpperCase()+n.slice(1),No=(n,e="and")=>n.length>1?`${n.slice(0,-1).join(", ")} ${e} ${n.at(-1)}`:n[0]??"";function Fd(n,e){return{...e,kind:n,edges:e.edges??{}}}function Bt(n,e,t){let r=n?.lifecycle;if(!r)return!0;let o=e[r.field];return r.retired==="date"?typeof o!="string"||o.length===0?!0:o>=(t??H()):!r.retired.includes(o)}function F(n,e){if(n?.label)return n.label(e);let t=e.label;return typeof t=="string"&&t.length>0?t:e.id}function Zd(n){return n.title??C(n.name)}function C(n){let e=n.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return vn(e)}function Ld(n,e,t){let r=n.tryDefinition(e);return`${se(t)} ${t===1?K(r,e):ne(n,e).toLowerCase()}`}function ne(n,e){return n.tryDefinition(e)?.plural??`${C(e).toLowerCase()}s`}function Cd(n,e){return vn(ne(n,e))}function Gd(n,e){let t=ne(n,e);return`All ${/^[A-Z][a-z]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t}`}function nt(n,e){let t=n?.computed&&Object.hasOwn(n.computed,e)?n.computed[e]:void 0;return n?.display?.labels?.[e]??(typeof t=="object"?t.label:void 0)??(e==="label"?"Name":C(e))}var Bd=/^(u[nt]i|use|usu|uti|ubiq|eu|ewe|one|once)/,Kd=/^(hour|honest|hono[ur]r?|heir)/;function Io(n){let e=C(n).toLowerCase();return Kd.test(e)?"an":Bd.test(e)?"a":/^[aeiou]/.test(e)?"an":"a"}function Ge(n){return`${Io(n)} ${C(n).toLowerCase()}`}function K(n,e){return n?.noun??C(e).toLowerCase()}function Ut(n){let e=Object.values(n).filter(r=>typeof r=="number");return Object.entries(n).filter(([r,o])=>e.indexOf(+r)===-1).map(([r,o])=>o)}function Wt(n,e="|"){return n.map(t=>Xt(t)).join(e)}function To(n,e){return typeof e=="bigint"?e.toString():e}var Vt=class{constructor(e){this._getter=e,this._value=void 0}get value(){let e=this._getter;return e!==void 0&&(this._value=e(),this._getter=void 0),this._value}};function Do(n){return new Vt(n)}function Fo(n){return n==null}function qt(n){let e=n.startsWith("^")?1:0,t=n.endsWith("$")?n.length-1:n.length;return n.slice(e,t)}function Zo(n,e){let t=n/e,r=Math.round(t),o=4*Number.EPSILON*Math.max(Math.abs(t),1);return Math.abs(t-r)<o?0:t-r}var jo=Symbol("evaluating");function Lo(n,e,t){let r;Object.defineProperty(n,e,{get(){if(r!==jo)return r===void 0&&(r=jo,r=t()),r},set(o){Object.defineProperty(n,e,{value:o})},configurable:!0})}function rt(n,e,t){Object.defineProperty(n,e,{value:t,writable:!0,enumerable:!0,configurable:!0})}function Co(n){let e=Object.getOwnPropertyDescriptor(n,"shape");return e?.get?e.get.raw:e?.value}function Ht(n){return Co(n._zod.def)??n._zod.def.shape}function Go(n,e,t){Object.defineProperty(n,e,{get(){let r=t();return rt(this,e,r),r},enumerable:!0,configurable:!0})}function Bo(n,e,t){e in n?rt(n,e,t):n[e]=t}function Vd(n,e,t,r){let o=Ht(e);for(let i of t){let s=Object.getOwnPropertyDescriptor(o,i);s.enumerable&&(s.get?Go(n,i,()=>{let a=e._zod.def.shape[i];return r?r(a,i):a}):Bo(n,i,r?r(s.value,i):s.value))}}function Ud(n,e){for(let t of Reflect.ownKeys(e)){let r=Object.getOwnPropertyDescriptor(e,t);r.enumerable&&(r.get?Go(n,t,()=>e[t]):Bo(n,t,r.value))}}function Ko(...n){let e={};for(let t of n){let r=Object.getOwnPropertyDescriptors(t);Object.assign(e,r)}return Object.defineProperties({},e)}var Yt="captureStackTrace"in Error?Error.captureStackTrace:(...n)=>{};function tt(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Jt(n){if(tt(n)===!1)return!1;let e=n.constructor;if(e===void 0||typeof e!="function")return!0;let t=e.prototype;return!(tt(t)===!1||Object.prototype.hasOwnProperty.call(t,"isPrototypeOf")===!1)}var Vo=new Set(["string","number","symbol"]);function wn(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Be(n,e,t){let r=new n._zod.constr(e??n._zod.def);return(!e||t?.parent)&&(r._zod.parent=n),r}function M(n){let e=n;if(!e)return{};if(typeof e=="string")return{error:()=>e};if(e?.message!==void 0){if(e?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");e.error=e.message}return delete e.message,typeof e.error=="string"?{...e,error:()=>e.error}:e}function Xt(n){return typeof n=="bigint"?n.toString()+"n":typeof n=="string"?`"${n}"`:`${n}`}function Uo(n){return Object.keys(n).filter(e=>n[e]._zod.optin!==void 0&&n[e]._zod.optout==="optional")}var Wo={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function qo(n,e){if(!Jt(e))throw new Error("Invalid input to extend: expected a plain object");let t=n._zod.def.checks;if(t&&t.length>0){let o=Ht(n);for(let i of Reflect.ownKeys(e))if(Object.getOwnPropertyDescriptor(o,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Be(n,Ko(n._zod.def,{shape:Wd(n,e)}))}function Wd(n,e){let t={};return Vd(t,n,Reflect.ownKeys(Ht(n))),Ud(t,e),t}function ae(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue!==!0)return!0;return!1}function Ho(n,e=0){if(n.aborted===!0)return!0;for(let t=e;t<n.issues.length;t++)if(n.issues[t]?.continue===!1)return!0;return!1}function ye(n,e){return e.map(t=>{var r;return(r=t).path??(r.path=[]),t.path.unshift(n),t})}function xn(n){return typeof n=="string"?n:n?.message}function Qt(n,e,t){var r;for(let o=e;o<n.length;o++)(r=n[o]).schema??(r.schema=t)}function de(n,e,t){var r;let o=n.inst?._zod?.traits;o?.has("$ZodType")&&(o.has("$ZodCheck")?(r=n).schema??(r.schema=n.inst):n.schema=n.inst);let i=n.schema!==n.inst?n.schema?._zod.def?.error:void 0,s=n.message?n.message:xn(n.inst?._zod.def?.error?.(n))??xn(i?.(n))??xn(e?.error?.(n))??xn(t.customError?.(n))??xn(t.localeError?.(n))??"Invalid input",a={};for(let d of Object.keys(n))d==="inst"||d==="schema"||d==="continue"||d==="input"||d==="__proto__"||(a[d]=n[d]);return a.path??(a.path=[]),a.message=s,e?.reportInput&&(a.input=n.input),a}var qd=/[\uD800-\uDBFF]/;function er(n){let e=n.length;if(!qd.test(n))return e;let t=e;for(let r=0;r<e-1;r++)(n.charCodeAt(r)&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320&&(t--,r++);return t}function nr(n){return Array.isArray(n)?"array":typeof n=="string"?"string":"unknown"}function Yo(n){let e=typeof n;switch(e){case"number":return Number.isNaN(n)?"nan":"number";case"object":{if(n===null)return"null";if(Array.isArray(n))return"array";let t=n;if(t&&Object.getPrototypeOf(t)!==Object.prototype&&"constructor"in t&&t.constructor)return t.constructor.name}}return e}function kn(...n){let[e,t,r]=n;return typeof e=="string"?{message:e,code:"custom",input:t,inst:r}:{...e}}function Jo(n,e){for(let t in e){let r=Object.getOwnPropertyDescriptor(e,t);r.get?Object.defineProperty(n,t,{...r,enumerable:!1}):Hd(n,t,r.value)}}function Oe(n,e,t,r=!0){return Object.defineProperty(n,e,{configurable:!0,writable:!0,enumerable:r,value:t}),t}function tr(n,e,t){return Oe(n,e,t,!1)}function Hd(n,e,t){Object.defineProperty(n,e,{configurable:!0,get(){return this==null?t:Oe(this,e,t.bind(this))},set(r){Oe(this,e,r)}})}function Yd(n,e){let t=Object.getPrototypeOf(n);return e in t?void 0:t}var Kt,me=!1,Jd={configurable:!0,get(){me=!0}};function V(n,e,t){let r=Object.getPrototypeOf(n._zod);if(e in r&&Kt!==n._zod){Kt=void 0;return}Kt=n._zod,Object.defineProperty(r,e,{configurable:!0,get(){Object.defineProperty(this,e,Jd);let o=me;me=!1;try{let i=t(this);return me?delete this[e]:Object.defineProperty(this,e,{configurable:!0,writable:!0,value:i}),me=me||o,i}catch(i){throw delete this[e],me=me||o,i}},set(o){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:o})}})}function Xo(n,e,t,r){let o=Yd(n,e);o&&Object.defineProperty(o,e,{configurable:!0,get(){let i={configurable:!0,writable:!0,enumerable:r,value:void 0};return Object.defineProperty(this,e,i),i.value=t(this),Object.defineProperty(this,e,i),i.value},set(i){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:r,value:i})}})}var Qo;var rr={value:void 0,enumerable:!1},ei="captureStackTrace"in Error?Error:null;function Xd(n){let e=ei;if(e){let t=e.stackTraceLimit;if(typeof t=="number"){try{e.stackTraceLimit=0}catch{return ei=null,new n}try{return new n}finally{e.stackTraceLimit=t}}}return new n}function O(n,e,t,r){let o={};function i(u){this.def=u,this.constr=p,this.traits=new Set}i.prototype=o;let s=t,a=s&&new WeakSet;function d(u,l){if(u._zod){if(u._zod.traits.has(n))return}else{rr.value=new i(l);try{Object.defineProperty(u,"_zod",rr)}finally{rr.value=void 0}}if(u._zod.traits.add(n),e(u,l),a){let h=Object.getPrototypeOf(u),b=u._zod.constr.prototype,y=h;for(;y&&y!==b;)y=Object.getPrototypeOf(y);let S=y??h;a.has(S)||(a.add(S),Jo(S,s))}let g=p.prototype;for(let h in g)Object.prototype.hasOwnProperty.call(g,h)&&(h in u||(u[h]=g[h].bind(u)))}let f=r?.Parent??Object;class c extends f{}Object.defineProperty(c,"name",{value:n});function p(u){let l=r?.Parent?Xd(c):this;d(l,u);let g=l._zod.deferred;if(g){for(let b of g)b();l._zod.deferred=void 0}let h=globalThis.__zod_globalConfig?.postProcessor;return h&&h(l),l}return Object.defineProperty(p,"init",{value:d}),Object.defineProperty(p,Symbol.hasInstance,{value:u=>r?.Parent&&u instanceof r.Parent?!0:u?._zod?.traits?.has(n)}),Object.defineProperty(p,"name",{value:n}),p}var ue=class extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};(Qo=globalThis).__zod_globalConfig??(Qo.__zod_globalConfig={});var Ke=globalThis.__zod_globalConfig;function J(n){return n&&Object.assign(Ke,n),Ke}function Qd(){let n=this._zod;return n.message??(n.message=JSON.stringify(n.def,To,2)),n.message}function ec(n){this._zod.message=n}var nc={get:Qd,set:ec,enumerable:!0,configurable:!0},ir={value:void 0,enumerable:!1},ni=new WeakSet([Object.prototype,Error.prototype]),ti=(n,e)=>{n.name="$ZodError",ir.value=e,Object.defineProperty(n,"issues",ir),ir.value=void 0,Object.defineProperty(n,"message",nc);let t=Object.getPrototypeOf(n);ni.has(t)||(ni.add(t),Object.defineProperty(t,"toString",{configurable:!0,enumerable:!1,get(){let r=()=>this.message;return Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0}),r},set(r){Object.defineProperty(this,"toString",{value:r,configurable:!0,writable:!0})}}))},Kf=O("$ZodError",ti),Sn=O("$ZodError",ti,void 0,{Parent:Error});var rc=n=>{let e=(t,r,o,i)=>{let s=o?{...o,async:!1}:{async:!1},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise)throw new ue;if(a.issues.length){let d=new(i?.Err??n)(a.issues.map(f=>de(f,s,J())));throw Yt(d,i?.callee??e),d}return a.value};return e},sr=rc(Sn),oc=n=>{let e=async(t,r,o,i)=>{let s=o?{...o,async:!0}:{async:!0},a=t._zod.run({value:r,issues:[]},s);if(a instanceof Promise&&(a=await a),a.issues.length){let d=new(i?.Err??n)(a.issues.map(f=>de(f,s,J())));throw Yt(d,i?.callee??e),d}return a.value};return e},ar=oc(Sn),ic=n=>(e,t,r)=>{let o=r?{...r,async:!1}:{async:!1},i=e._zod.run({value:t,issues:[]},o);if(i instanceof Promise)throw new ue;return i.issues.length?ri(n,i.issues,o):{success:!0,data:i.value}},dr=ic(Sn);function ri(n,e,t){let r;return{success:!1,get error(){return r||(r=new n(e.map(o=>de(o,t,J()))),e=void 0,t=void 0),r},set error(o){r=o,e=void 0,t=void 0}}}var sc=n=>async(e,t,r)=>{let o=r?{...r,async:!0}:{async:!0},i=e._zod.run({value:t,issues:[]},o);return i instanceof Promise&&(i=await i),i.issues.length?ri(n,i.issues,o):{success:!0,data:i.value}},cr=sc(Sn);var oi=/^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;var ii=/^https?$/;var si=/^[\s\S]{0,}$/;var ur=/^-?\d+(?:\.\d+)?$/,ai=/^(?:true|false)$/i,di=/^null$/i;var X=O("$ZodCheck",(n,e)=>{var t;n._zod??(n._zod={}),n._zod.def=e,(t=n._zod).onattach??(t.onattach=[])});var ci=n=>{let e=n.value;return!Fo(e)&&e.length!==void 0},ot={number:"number",bigint:"bigint",object:"date"},ui=O("$ZodCheckLessThan",(n,e)=>{X.init(n,e);let t=ot[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value<=e.value:r.value<e.value)||r.issues.push({origin:ot[typeof r.value]??t,code:"too_big",maximum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),li=O("$ZodCheckGreaterThan",(n,e)=>{X.init(n,e);let t=ot[typeof e.value];n._zod.check=r=>{(e.inclusive?r.value>=e.value:r.value>e.value)||r.issues.push({origin:ot[typeof r.value]??t,code:"too_small",minimum:typeof e.value=="object"?e.value.getTime():e.value,input:r.value,inclusive:e.inclusive,inst:n,continue:!e.abort})}}),fi=O("$ZodCheckMultipleOf",(n,e)=>{X.init(n,e),n._zod.check=t=>{if(typeof t.value!=typeof e.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof t.value=="bigint"?e.value!==BigInt(0)&&t.value%e.value===BigInt(0):Zo(t.value,e.value)===0)||t.issues.push({origin:typeof t.value,code:"not_multiple_of",divisor:e.value,input:t.value,inst:n,continue:!e.abort})}}),pi=O("$ZodCheckNumberFormat",(n,e)=>{X.init(n,e),e.format=e.format||"float64";let t=e.format?.includes("int"),r=t?"int":"number",[o,i]=Wo[e.format];n._zod.check=s=>{let a=s.value;if(t){if(!Number.isInteger(a)){s.issues.push({expected:r,format:e.format,code:"invalid_type",continue:!1,input:a,inst:n});return}if(!Number.isSafeInteger(a)){a>0?s.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort}):s.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:n,origin:r,inclusive:!0,continue:!e.abort});return}}a<o&&s.issues.push({origin:"number",input:a,code:"too_small",minimum:o,inclusive:!0,inst:n,continue:!e.abort}),a>i&&s.issues.push({origin:"number",input:a,code:"too_big",maximum:i,inclusive:!0,inst:n,continue:!e.abort})}});var hi=O("$ZodCheckMaxLength",(n,e)=>{var t;X.init(n,e),(t=n._zod.def).when??(t.when=ci),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>e.maximum?er(o):i)<=e.maximum)return;let a=nr(o);r.issues.push({origin:a,code:"too_big",maximum:e.maximum,inclusive:!0,input:o,inst:n,continue:!e.abort})}}),gi=O("$ZodCheckMinLength",(n,e)=>{var t;X.init(n,e),(t=n._zod.def).when??(t.when=ci),n._zod.check=r=>{let o=r.value,i=o.length;if((typeof o=="string"&&i>=e.minimum&&i<e.minimum*2?er(o):i)>=e.minimum)return;let a=nr(o);r.issues.push({origin:a,code:"too_small",minimum:e.minimum,inclusive:!0,input:o,inst:n,continue:!e.abort})}});var fr=O("$ZodCheckStringFormat",(n,e)=>{var t,r;X.init(n,e),e.pattern?(t=n._zod).check??(t.check=o=>{e.pattern.lastIndex=0,!e.pattern.test(o.value)&&o.issues.push({origin:"string",code:"invalid_format",format:e.format,input:o.value,...e.pattern?{pattern:e.pattern.toString()}:{},inst:n,continue:!e.abort})}):(r=n._zod).check??(r.check=()=>{})}),mi=O("$ZodCheckRegex",(n,e)=>{fr.init(n,e),n._zod.check=t=>{e.pattern.lastIndex=0,!e.pattern.test(t.value)&&t.issues.push({origin:"string",code:"invalid_format",format:"regex",input:t.value,pattern:e.pattern.toString(),inst:n,continue:!e.abort})}});var bi={major:4,minor:6,patch:5};var G=O("$ZodType",(n,e)=>{var t;n??(n={}),n._zod.def=e,n._zod.bag=n._zod.bag||{},n._zod.version=bi;let r=n._zod.def.checks,o=n._zod.traits.has("$ZodCheck")?[n,...r??[]]:r?.length?[...r]:[];for(let i of o)for(let s of i._zod.onattach)s(n);if(o.length===0)(t=n._zod).deferred??(t.deferred=[]),n._zod.deferred?.push(()=>{n._zod.run=n._zod.parse});else{let i=(a,d,f)=>{if(a.memo)return a;let c=ae(a),p;for(let u of d){if(u._zod.def.when){if(Ho(a)||!u._zod.def.when(a))continue}else if(c)continue;let l=a.issues.length,g=u._zod.check(a);if(g instanceof Promise&&f?.async===!1)throw new ue;if(p||g instanceof Promise)p=(p??Promise.resolve()).then(async()=>{await g,a.issues.length!==l&&(Qt(a.issues,l,n),c||(c=ae(a,l)))});else{if(a.issues.length===l)continue;Qt(a.issues,l,n),c||(c=ae(a,l))}}return p?p.then(()=>a):a},s=(a,d,f)=>{if(ae(a))return a.aborted=!0,a;let c=i(d,o,f);if(c instanceof Promise){if(f.async===!1)throw new ue;return c.then(p=>n._zod.parse(p,f))}return n._zod.parse(c,f)};n._zod.run=(a,d)=>{if(d.skipChecks)return n._zod.parse(a,d);if(d.direction==="backward"){let c=n._zod.parse({value:a.value,issues:[]},{...d,skipChecks:!0});return c instanceof Promise?c.then(p=>s(p,a,d)):s(c,a,d)}let f=n._zod.parse(a,d);if(f instanceof Promise){if(d.async===!1)throw new ue;return f.then(c=>i(c,o,d))}return i(f,o,d)}}},{get"~standard"(){return tr(this,"~standard",dc(this))},set"~standard"(n){Oe(this,"~standard",n)}}),$i=(n,e)=>n.issues.length?{issues:n.issues.map(t=>de(t,e,J()))}:{value:n.value};async function ac(n,e){let t={async:!0};return $i(await n._zod.run({value:e,issues:[]},t),t)}function dc(n){return{validate:e=>{let t={async:!1};try{let r=n._zod.run({value:e,issues:[]},t);if(!(r instanceof Promise))return $i(r,t)}catch{}return ac(n,e)},vendor:"zod",version:1}}var pr=O("$ZodString",(n,e)=>{G.init(n,e),n._zod.pattern=e.pattern??si,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=String(t.value)}catch{}return typeof t.value=="string"||t.issues.push({expected:"string",code:"invalid_type",input:t.value,inst:n}),t}}),at=O("$ZodStringFormat",(n,e)=>{fr.init(n,e),pr.init(n,e)});var Ri=O("$ZodEmail",(n,e)=>{e.pattern??(e.pattern=oi),at.init(n,e)}),_i=1,it=2;function cc(n){try{return typeof URL<"u"&&typeof URL.canParse=="function"?URL.canParse(n):(new URL(n),!0)}catch{return!1}}function uc(n,e){return!("normalize"in e)&&!("hostname"in e)&&!("protocol"in e)?cc(n)||it:lc(n,e)}function lc(n,e){if(!e.normalize&&e.protocol?.source===ii.source&&!/^https?:\/\//i.test(n))return _i;try{if(typeof URL<"u"){let t=URL;if(typeof t.parse=="function")return t.parse(n)??it}return new URL(n)}catch{return it}}var fc=/[\t\n\r]/g;function vi(n){return n.replace(fc,"")}function pc(n,e){return e.lastIndex=0,e.test(n.hostname)}function hc(n,e){return e.lastIndex=0,e.test(n.protocol.endsWith(":")?n.protocol.slice(0,-1):n.protocol)}var Ai=O("$ZodURL",(n,e)=>{at.init(n,e),n._zod.check=t=>{try{let r=t.value.trim(),o=uc(r,e);if(o===_i){t.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:t.value,inst:n,continue:!e.abort});return}if(o===it){t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort});return}if(o===!0){t.value=vi(r);return}e.hostname&&!pc(o,e.hostname)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e.hostname.source,input:t.value,inst:n,continue:!e.abort}),e.protocol&&!hc(o,e.protocol)&&t.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:e.protocol.source,input:t.value,inst:n,continue:!e.abort}),t.value=e.normalize?o.href:vi(r);return}catch{t.issues.push({code:"invalid_format",format:"url",input:t.value,inst:n,continue:!e.abort})}}});var hr=O("$ZodNumber",(n,e)=>{G.init(n,e),n._zod.pattern=ur,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=Number(t.value)}catch{}let o=t.value;if(typeof o=="number"&&!Number.isNaN(o)&&Number.isFinite(o))return t;let i=typeof o=="number"?Number.isNaN(o)?"NaN":Number.isFinite(o)?void 0:String(o):void 0;return t.issues.push({expected:"number",code:"invalid_type",input:o,inst:n,...i?{received:i}:{}}),t}}),Oi=O("$ZodNumberFormat",(n,e)=>{pi.init(n,e),hr.init(n,e)}),Ei=O("$ZodBoolean",(n,e)=>{G.init(n,e),n._zod.pattern=ai,n._zod.parse=(t,r)=>{if(e.coerce)try{t.value=!!t.value}catch{}let o=t.value;return typeof o=="boolean"||t.issues.push({expected:"boolean",code:"invalid_type",input:o,inst:n}),t}});var Pi=O("$ZodNull",(n,e)=>{G.init(n,e),n._zod.pattern=di,n._zod.values=new Set([null]),n._zod.parse=(t,r)=>{let o=t.value;return o===null||t.issues.push({expected:"null",code:"invalid_type",input:o,inst:n}),t}});var zi=O("$ZodUnknown",(n,e)=>{G.init(n,e),n._zod.parse=t=>t}),Mi=O("$ZodNever",(n,e)=>{G.init(n,e),n._zod.parse=(t,r)=>(t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:n}),t)});function xi(n,e,t){n.issues.length&&e.issues.push(...ye(t,n.issues)),e.value[t]=n.value}var Ni=O("$ZodArray",(n,e)=>{G.init(n,e);let t=Ke.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Array.isArray(i))return r.issues.push({expected:"array",code:"invalid_type",input:i,inst:n}),r;r.value=t?t.alloc(n,r,Array(i.length),o):Array(i.length);let s=[],a=o?.abortEarly;for(let d=0;d<i.length;d++){let f=i[d],c=e.element._zod.run({value:f,issues:[]},o);if(c instanceof Promise)s.push(c.then(p=>xi(p,r,d)));else if(xi(c,r,d),a&&c.issues.length!==0&&ae(c))break}return s.length?Promise.all(s).then(()=>r):r}});function st(n,e,t,r,o,i){let s=t in r,a=i==="optional";if(!(!s&&a&&o==="optional")){if(n.issues.length){if(o!==void 0&&a&&!s)return;e.issues.push(...ye(t,n.issues))}if(!s&&o===void 0){n.issues.length||e.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[t]});return}n.value===void 0?(s||o==="defaulted"&&!a)&&(e.value[t]=void 0):e.value[t]=n.value}}var gc=[];function mc(n){let e=Object.keys(n.shape),t=Object.getOwnPropertySymbols(n.shape),r=t.length?t:gc,o=r.length?[...e,...r]:e;for(let s of o)if(!n.shape?.[s]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${String(s)}": expected a Zod schema`);let i=Uo(n.shape);return{...n,allKeys:o,symbolKeys:r,keySet:new Set(e),numKeys:e.length,optionalKeys:new Set(i)}}function yc(n,e,t,r,o,i,s){let a=[],d=o.keySet,f=o.catchall._zod,c=f.def.type,p=f.optin,u=f.optout,l=0;for(let g in e){if(s&&t.issues.length!==l){if(ae(t,l))break;l=t.issues.length}if(d.has(g))continue;if(g==="__proto__"){c==="never"&&a.push(g);continue}if(c==="never"){a.push(g);continue}let h=f.run({value:e[g],issues:[]},r);h instanceof Promise?n.push(h.then(b=>st(b,t,g,e,p,u))):st(h,t,g,e,p,u)}return a.length&&t.issues.push({code:"unrecognized_keys",keys:a,input:e,inst:i,continue:!0}),n.length?Promise.all(n).then(()=>t):t}var Ii=O("$ZodObject",(n,e)=>{G.init(n,e);let t=Object.getOwnPropertyDescriptor(e,"shape"),r=t?.get?t.get.raw:e.shape??{};if(r){let f=()=>{let c={...r};return Object.defineProperty(e,"shape",{value:c}),f.raw=c,c};f.raw=r,Object.defineProperty(e,"shape",{get:f})}let o=Do(()=>mc(e));V(n,"propValues",f=>{let c=f.def.shape,p={};for(let u in c){let l=c[u]._zod;if(l.values){Object.prototype.hasOwnProperty.call(p,u)||rt(p,u,new Set);for(let g of l.values)p[u].add(g);l.optin!==void 0&&p[u].add(void 0)}}return p});let i=tt,s=e.catchall,a,d=Ke.memoizer;d?.attach(n),n._zod.parse=(f,c)=>{a??(a=o.value);let p=f.value;if(!i(p))return f.issues.push({expected:"object",code:"invalid_type",input:p,inst:n}),f;f.value=d?d.alloc(n,f,{},c):{};let u=[],l=a.shape,g=c?.abortEarly,h=f.issues.length;for(let b of a.allKeys){if(g&&f.issues.length!==h){if(ae(f,h))break;h=f.issues.length}if(b==="__proto__")continue;let y=l[b],S=y._zod.optin,A=y._zod.optout,m=y._zod.run({value:p[b],issues:[]},c);m instanceof Promise?u.push(m.then(k=>st(k,f,b,p,S,A))):st(m,f,b,p,S,A)}return s?yc(u,p,f,c,o.value,n,g===!0):u.length?Promise.all(u).then(()=>f):f}});function wi(n,e,t,r){for(let i of n)if(i.issues.length===0)return e.value=i.value,e;let o=n.filter(i=>!ae(i));return o.length===1?(e.value=o[0].value,o[0]):(e.issues.push({code:"invalid_union",input:e.value,inst:t,errors:n.map(i=>i.issues.map(s=>de(s,r,J())))}),e)}var ji=O("$ZodUnion",(n,e)=>{G.init(n,e),V(n,"optin",r=>r.def.options.some(o=>o._zod.optin==="defaulted")?"defaulted":r.def.options.some(o=>o._zod.optin!==void 0)?"optional":void 0),V(n,"optout",r=>r.def.options.some(o=>o._zod.optout==="optional")?"optional":void 0),V(n,"values",r=>{if(r.def.options.every(o=>o._zod.values))return new Set(r.def.options.flatMap(o=>Array.from(o._zod.values)))}),V(n,"pattern",r=>{if(r.def.options.every(o=>o._zod.pattern)){let o=r.def.options.map(i=>i._zod.pattern);return new RegExp(`^(${o.map(i=>qt(i.source)).join("|")})$`)}});let t=e.options.length===1?e.options[0]._zod.run:null;n._zod.parse=(r,o)=>{if(t)return t(r,o);let i=!1,s=[];for(let a of e.options){let d=a._zod.run({value:r.value,issues:[]},o);if(d instanceof Promise)s.push(d),i=!0;else{if(d.issues.length===0)return d;s.push(d)}}return i?Promise.all(s).then(a=>wi(a,r,n,o)):wi(s,r,n,o)}});var Ti=O("$ZodRecord",(n,e)=>{G.init(n,e);let t=Ke.memoizer;t?.attach(n),n._zod.parse=(r,o)=>{let i=r.value;if(!Jt(i))return r.issues.push({expected:"record",code:"invalid_type",input:i,inst:n}),r;let s=[],a=e.keyType._zod.values;if(a&&!e.partial){r.value=t?t.alloc(n,r,{},o):{};let d=new Set;for(let c of a)if(typeof c=="string"||typeof c=="number"||typeof c=="symbol"){if(d.add(typeof c=="number"?c.toString():c),c==="__proto__")continue;let p=e.keyType._zod.run({value:c,issues:[]},o);if(p instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(p.issues.length){r.issues.push({code:"invalid_key",origin:"record",issues:p.issues.map(g=>de(g,o,J())),input:c,path:[c],inst:n});continue}let u=p.value;if(u==="__proto__")continue;let l=e.valueType._zod.run({value:i[c],issues:[]},o);l instanceof Promise?s.push(l.then(g=>{g.issues.length&&r.issues.push(...ye(c,g.issues)),r.value[u]=g.value})):(l.issues.length&&r.issues.push(...ye(c,l.issues)),r.value[u]=l.value)}let f;for(let c in i)if(!d.has(c))if(e.mode==="loose"){if(c==="__proto__")continue;r.value[c]=i[c]}else f=f??[],f.push(c);f&&f.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:f,continue:!0})}else{r.value=t?t.alloc(n,r,{},o):{};let d;for(let f of Reflect.ownKeys(i)){if(f==="__proto__"||!Object.prototype.propertyIsEnumerable.call(i,f))continue;let c=e.keyType._zod.run({value:f,issues:[]},o);if(c instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(typeof f=="string"&&ur.test(f)&&c.issues.length){let g=e.keyType._zod.run({value:Number(f),issues:[]},o);if(g instanceof Promise)throw new Error("Async schemas not supported in object keys currently");g.issues.length===0&&(c=g)}if(c.issues.length){e.mode==="loose"?r.value[f]=i[f]:a?(d=d??[],d.push(f)):r.issues.push({code:"invalid_key",origin:"record",issues:c.issues.map(g=>de(g,o,J())),input:f,path:[f],inst:n});continue}let u=c.value;if(u==="__proto__")continue;let l=e.valueType._zod.run({value:i[f],issues:[]},o);l instanceof Promise?s.push(l.then(g=>{g.issues.length&&r.issues.push(...ye(f,g.issues)),r.value[u]=g.value})):(l.issues.length&&r.issues.push(...ye(f,l.issues)),r.value[u]=l.value)}d&&d.length>0&&r.issues.push({code:"unrecognized_keys",input:i,inst:n,keys:d,continue:!0})}return s.length?Promise.all(s).then(()=>r):r}});var Di=O("$ZodEnum",(n,e)=>{G.init(n,e);let t=Ut(e.entries),r=new Set(t);n._zod.values=r,V(n,"pattern",o=>{let i=Ut(o.def.entries).filter(s=>Vo.has(typeof s));return new RegExp(i.length?`^(${i.map(s=>wn(s.toString())).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(o,i)=>{let s=o.value;return r.has(s)||o.issues.push({code:"invalid_value",values:t,input:s,inst:n}),o}}),Fi=O("$ZodLiteral",(n,e)=>{G.init(n,e);let t=new Set(e.values);n._zod.values=t,V(n,"pattern",r=>{let o=r.def.values;return new RegExp(o.length?`^(${o.map(i=>typeof i=="string"?wn(i):i?wn(i.toString()):String(i)).join("|")})$`:"^[^\\s\\S]$")}),n._zod.parse=(r,o)=>{let i=r.value;return t.has(i)||r.issues.push({code:"invalid_value",values:e.values,input:i,inst:n}),r}});function ki(n,e){return n.value=e.issues.length?void 0:e.value,n}var Zi=O("$ZodOptional",(n,e)=>{G.init(n,e),V(n,"optin",t=>t.def.innerType._zod.optin==="defaulted"?"defaulted":"optional"),n._zod.optout="optional",V(n,"values",t=>{let r=t.def.innerType._zod.values;return r?new Set([...r,void 0]):void 0}),V(n,"pattern",t=>{let r=t.def.innerType._zod.pattern;return r?new RegExp(`^(${qt(r.source)})?$`):void 0}),n._zod.parse=(t,r)=>{if(t.value===void 0){if(e.innerType._zod.optin!=="defaulted")return t;let o=e.innerType._zod.run({value:t.value,issues:[]},r);return o instanceof Promise?o.then(i=>ki(t,i)):ki(t,o)}return e.innerType._zod.run(t,r)}});var Li=O("$ZodLazy",(n,e)=>{G.init(n,e),Lo(n._zod,"innerType",()=>{let t=e;return t._cachedInner||(t._cachedInner=e.getter()),t._cachedInner}),V(n,"pattern",t=>t.innerType?._zod?.pattern),V(n,"propValues",t=>t.innerType?._zod?.propValues),V(n,"optin",t=>t.innerType?._zod?.optin??void 0),V(n,"optout",t=>t.innerType?._zod?.optout??void 0),n._zod.parse=(t,r)=>n._zod.innerType._zod.run(t,r)}),Ci=O("$ZodCustom",(n,e)=>{X.init(n,e),G.init(n,e),n._zod.parse=(t,r)=>t,n._zod.check=t=>{let r=t.value,o=e.fn(r);if(o instanceof Promise)return o.then(i=>Si(i,t,r,n));Si(o,t,r,n)}});function Si(n,e,t,r){if(!n){let o={code:"custom",input:t,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(o.params=r._zod.def.params),e.issues.push(kn(o))}}var bc=()=>{let n={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function e(i){return n[i]??null}let t={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",currency_code:"currency code",credit_card:"credit card number",iban:"IBAN",jwt:"JWT",template_literal:"input"},r={nan:"NaN"};function o(i,s){return i==="number"&&typeof s=="number"&&!Number.isFinite(s)?String(s):r[i]??i}return i=>{switch(i.code){case"invalid_type":{let s=o(i.expected),a=Yo(i.input),d=o(a,i.input);return`Invalid input: expected ${s}, received ${d}`}case"invalid_value":return i.values.length===1?`Invalid input: expected ${Xt(i.values[0])}`:`Invalid option: expected one of ${Wt(i.values,"|")}`;case"too_big":{let s=i.exact?"exactly ":i.inclusive?"<=":"<",a=e(i.origin);return a?`Too big: expected ${i.origin??"value"} to have ${s}${i.maximum.toString()} ${a.unit??"elements"}`:`Too big: expected ${i.origin??"value"} to be ${s}${i.maximum.toString()}`}case"too_small":{let s=i.exact?"exactly ":i.inclusive?">=":">",a=e(i.origin);return a?`Too small: expected ${i.origin} to have ${s}${i.minimum.toString()} ${a.unit}`:`Too small: expected ${i.origin} to be ${s}${i.minimum.toString()}`}case"invalid_format":{let s=i;return s.format==="starts_with"?`Invalid string: must start with "${s.prefix}"`:s.format==="ends_with"?`Invalid string: must end with "${s.suffix}"`:s.format==="includes"?`Invalid string: must include "${s.includes}"`:s.format==="regex"?`Invalid string: must match pattern ${s.pattern}`:`Invalid ${t[s.format]??i.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${i.divisor}`;case"unrecognized_keys":return`Unrecognized key${i.keys.length>1?"s":""}: ${Wt(i.keys,", ")}`;case"invalid_key":return`Invalid key in ${i.origin}`;case"invalid_union":return i.options&&Array.isArray(i.options)&&i.options.length>0?`Invalid discriminator value. Expected ${i.options.map(a=>`'${a}'`).join(" | ")}`:i.inclusive===!1?"Invalid input: more than one option matched":"Invalid input";case"invalid_element":return`Invalid value in ${i.origin}`;default:return"Invalid input"}}};function Gi(){return{localeError:bc()}}var Bi;var gr=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let r=t[0];return this._map.set(e,r),r&&typeof r=="object"&&"id"in r&&this._idmap.set(r.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t=="object"&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let r={...this.get(t)??{}};delete r.id;let o={...r,...this._map.get(e)};return Object.keys(o).length?o:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Ki(){return new gr}(Bi=globalThis).__zod_globalRegistry??(Bi.__zod_globalRegistry=Ki());var Ve=globalThis.__zod_globalRegistry;function Vi(n){return n.checks&&(n.checks=[...n.checks]),n}function Ui(n,e){return new n(Vi({type:"string",...M(e)}))}function Wi(n,e){return new n({type:"string",format:"email",check:"string_format",abort:!1,...M(e)})}function qi(n,e){return new n({type:"string",format:"url",check:"string_format",abort:!1,...M(e)})}function Hi(n,e){return new n(Vi({type:"number",checks:[],...M(e)}))}function Yi(n,e){return new n({type:"number",check:"number_format",abort:!1,format:"safeint",...M(e)})}function Ji(n,e){return new n({type:"boolean",...M(e)})}function Xi(n,e){return new n({type:"null",...M(e)})}function Qi(n){return new n({type:"unknown"})}function es(n,e){return new n({type:"never",...M(e)})}function ns(n,e){return new ui({check:"less_than",...M(e),value:n,inclusive:!0})}function ts(n,e){return new li({check:"greater_than",...M(e),value:n,inclusive:!0})}function kc(n,e){return new fi({check:"multiple_of",...M(e),value:n})}function mr(n,e){return new hi({check:"max_length",...M(e),maximum:n})}function $n(n,e){return new gi({check:"min_length",...M(e),minimum:n})}function Rn(n,e){return new mi({check:"string_format",format:"regex",...M(e),pattern:n})}function rs(n,e,t){return new n({type:"custom",check:"custom",fn:e,...M(t)})}function os(n,e){let t=Sc(r=>(r.addIssue=o=>{if(typeof o=="string")r.issues.push(kn(o,r.value,t._zod.def));else{let i=o;i.fatal&&(i.continue=!1),i.code??(i.code="custom"),"input"in i||(i.input=r.value),i.inst??(i.inst=t),i.continue??(i.continue=!t._zod.def.abort),r.issues.push(kn(i))}},n(r.value,r)),e);return t}function Sc(n,e){let t=new X({check:"custom",...M(e)});return t._zod.check=n,t}function is(n){let e=new X({check:"describe"});return e._zod.onattach=[t=>{let r=Ve.get(t)??{};Ve.add(t,{...r,description:n})}],e._zod.check=()=>{},e}var U=O("ZodMiniType",(n,e)=>{if(!n._zod)throw new Error("Uninitialized schema in ZodMiniType.");G.init(n,e),n.def=e,n.type=e.type},{get with(){return this.check},set with(n){Oe(this,"with",n)},parse(n,e){return sr(this,n,e,{callee:this.parse})},parseAsync(n,e){return ar(this,n,e,{callee:this.parseAsync})},safeParse(n,e){return dr(this,n,e)},safeParseAsync(n,e){return cr(this,n,e)},check(...n){let e=this.def;return this.clone({...e,checks:[...e.checks??[],...n.map(t=>typeof t=="function"?{_zod:{check:t,def:{check:"custom"},onattach:[]}}:t)]},{parent:!0})},clone(n,e){return Be(this,n,e)},brand(){return this},register(n,e){return n.add(this,e),this},apply(n,...e){return e.length===0?n(this):n(this,...e)}}),as=O("ZodMiniString",(n,e)=>{pr.init(n,e),U.init(n,e)});function D(n){return Ui(as,n)}var ds=O("ZodMiniStringFormat",(n,e)=>{at.init(n,e),as.init(n,e)}),_c=O("ZodMiniEmail",(n,e)=>{Ri.init(n,e),ds.init(n,e)});function Ug(n){return Wi(_c,n)}var Ac=O("ZodMiniURL",(n,e)=>{Ai.init(n,e),ds.init(n,e)});function Wg(n){return qi(Ac,n)}var cs=O("ZodMiniNumber",(n,e)=>{hr.init(n,e),U.init(n,e)});function _n(n){return Hi(cs,n)}var Oc=O("ZodMiniNumberFormat",(n,e)=>{Oi.init(n,e),cs.init(n,e)});function qg(n){return Yi(Oc,n)}var Ec=O("ZodMiniBoolean",(n,e)=>{Ei.init(n,e),U.init(n,e)});function Hg(n){return Ji(Ec,n)}var Pc=O("ZodMiniNull",(n,e)=>{Pi.init(n,e),U.init(n,e)});function Yg(n){return Xi(Pc,n)}var zc=O("ZodMiniUnknown",(n,e)=>{zi.init(n,e),U.init(n,e)});function yr(){return Qi(zc)}var Mc=O("ZodMiniNever",(n,e)=>{Mi.init(n,e),U.init(n,e)});function Nc(n){return es(Mc,n)}var Ic=O("ZodMiniArray",(n,e)=>{Ni.init(n,e),U.init(n,e)});function Jg(n,e){return new Ic({type:"array",element:n,...M(e)})}var br=O("ZodMiniObject",(n,e)=>{Ii.init(n,e),U.init(n,e),Xo(n,"shape",t=>t._zod.def.shape,!1)});function Ue(n,e){let t={type:"object",shape:n??{},...M(e)};return new br(t)}function We(n,e){return new br({type:"object",shape:n,catchall:Nc(),...M(e)})}function Xg(n,e){return new br({type:"object",shape:n,catchall:yr(),...M(e)})}function us(n,e){return qo(n,e)}var jc=O("ZodMiniUnion",(n,e)=>{ji.init(n,e),U.init(n,e)});function Qg(n,e){return new jc({type:"union",options:n,...M(e)})}var ss=O("ZodMiniRecord",(n,e)=>{Ti.init(n,e),U.init(n,e)});function em(n,e,t){return!e||!e._zod?new ss({type:"record",keyType:D(),valueType:n,...M(e)}):new ss({type:"record",keyType:n,valueType:e,...M(t)})}var Tc=O("ZodMiniEnum",(n,e)=>{Di.init(n,e),U.init(n,e),n.options=[...n._zod.values]});function ls(n,e){let t=Array.isArray(n)?Object.fromEntries(n.map(r=>[r,r])):n;return new Tc({type:"enum",entries:t,...M(e)})}var Dc=O("ZodMiniLiteral",(n,e)=>{Fi.init(n,e),U.init(n,e)});function fs(n,e){return new Dc({type:"literal",values:Array.isArray(n)?n:[n],...M(e)})}var Fc=O("ZodMiniOptional",(n,e)=>{Zi.init(n,e),U.init(n,e)});function Q(n){return new Fc({type:"optional",innerType:n})}var Zc=O("ZodMiniLazy",(n,e)=>{Li.init(n,e),U.init(n,e)});function nm(n){return new Zc({type:"lazy",getter:n})}var Lc=O("ZodMiniCustom",(n,e)=>{Ci.init(n,e),U.init(n,e)});function dt(n,e={}){return rs(Lc,n,e)}function tm(n,e){return os(n,e)}var rm=is;J().localeError||J(Gi());var I=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,Cc=n=>{if(typeof n!="object"||n===null||!("_zod"in n))return;let e=Ve.get(n)?.description;return typeof e=="string"?e:void 0};var Gc=(n,e)=>n?.src?.(e)??e,ct=n=>typeof n=="string"&&n.length<2049&&/^(?![^/?#]*:|\/\/)(?!(?:.*\/)?\.\.?(?:[/?#]|$))(?!.*%2e)[^\\\s]+$/i.test(n),vr=(n,e=1)=>e>0&&n===void 0||Number.isInteger(n)&&n>=e;function xr(n){let e=n??{};return ct(e.href)&&typeof e.name=="string"&&/^.{1,255}$/s.test(e.name)&&/^[\w.+-]{1,60}\/[\w.+-]{1,60}$/.test(e.type)&&vr(e.bytes,0)&&vr(e.width)&&vr(e.height)&&(e.caption===void 0||typeof e.caption=="string"&&e.caption.length<501)&&(e.poster===void 0||ct(e.poster))&&(e.captions===void 0||ct(e.captions))&&(e.duration===void 0||typeof e.duration=="number"&&Number.isFinite(e.duration)&&e.duration>0)&&(e.at===void 0||ps(e.at)!==void 0)}function ps(n){return typeof n=="string"&&n.length<41&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:?\d{2})$/.test(n)&&Number.isFinite(Date.parse(n))?n:void 0}var hs=n=>n.type.startsWith("image/"),gs=n=>n.type.startsWith("video/");function Bc(n){let e=n.duration===void 0?0:Math.round(n.duration);if(e<1)return"a video";if(e<60)return`a ${e}-second video`;let t=Math.round(e/60);return t<60?`a ${t}-minute video`:`a ${Math.floor(t/60)}-hour${t%60>0?` ${t%60}-minute`:""} video`}var Kc=(n,e)=>e==="image"?hs(n):e==="video"?gs(n):!0,Vc=n=>`${n==="image"?"an image":n==="video"?"a video":"a file"} the host stored, at a path on this host`,An=n=>(Array.isArray(n)?n:[n]).filter(xr),ms=Symbol.for("@graview/core:file"),Uc=(n,e)=>(Object.defineProperty(I(n),ms,{value:e,enumerable:!0}),n);function ys(n){let e=I(n);return e?.[ms]??(e?.innerType?ys(e.innerType):void 0)}var Wc=()=>({href:D(),name:D(),type:D(),bytes:_n(),width:Q(_n()),height:Q(_n()),caption:Q(D()),poster:Q(D()),duration:Q(_n()),captions:Q(D()),at:Q(D())});function oy(n){return Uc(Ue(Wc()).check(dt(e=>xr(e)&&Kc(e,n),Vc(n))),n)}var ut=/^(?:https?:\/\/[^\s<>"'`\\]+|@?[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)$/,lt=n=>typeof n=="string"&&n.length<501&&ut.test(n);var bs=n=>typeof n=="object"&&n!==null?n._zod?.def:void 0,qc=/^@(?:https?:\/\/[^\s<>"'`\\#?]+|[A-Za-z0-9][\w.~-]*(?:\/[\w.~-]+)*)\/[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;function vs(n){if(typeof n!="string"||!n.startsWith("@")||!qc.test(n))return;let e=n.lastIndexOf("/"),t=n.slice(0,e),r=n.slice(e+1),o=/^@https?:\/\//.test(t)||!t.includes("/")?t.slice(1):t;return lt(o)?{address:o,kind:r}:void 0}var Hc=/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*:\S[^\n]{0,199}$/,Yc=n=>`${n.kind}:${n.id}`;function xs(n,e){if(typeof n!="string"||!Hc.test(n))return;let t=n.indexOf(":"),r=n.slice(0,t);return e.kinds.includes(r)?{address:e.address,kind:r,id:n.slice(t+1)}:void 0}function Jc(n,e){return(Array.isArray(n)?n:n==null?[]:[n]).flatMap(r=>{let o=xs(r,e);return o?[o]:[]})}var ws=Symbol.for("@graview/core:linked"),dy=(n,e)=>(Object.defineProperty(bs(n),ws,{value:e,enumerable:!0}),n);function On(n){let e=bs(n);return e?e[ws]??On(e.innerType):void 0}function Xc(n){let e=n?.fields?.shape??{},t=new Map;for(let[r,o]of Object.entries(e)){let i=On(o);i&&t.set(r,i)}return t}function Qc(n){if(n.to==="*"||n.to.length===0)return;let e=n.to.map(vs);if(e.some(r=>!r))return;let t=e[0].address;if(!e.some(r=>r.address!==t))return{address:t,kinds:[...new Set(e.map(r=>r.kind))],cardinality:n.cardinality??"many",...n.description?{description:n.description}:{}}}var eu=n=>n.to!=="*"&&n.to.some(e=>typeof e=="string"&&e.startsWith("@"));function cy(n){return Object.fromEntries(Object.entries(n??{}).filter(([,e])=>!eu(e)))}function uy(n){let e=new Map;for(let[t,r]of Object.entries(n??{})){let o=Qc(r);o&&e.set(t,o)}return e}var wr=new WeakMap;function nu(n,e){e?wr.set(n,e):wr.delete(n)}var ks=n=>wr.get(n);var ft=["sun","mon","tue","wed","thu","fri","sat"],tu=["day","week","month","year"],He=n=>`${n}Repeat`,Pn=n=>n.endsWith("Repeat")&&n.length>6?n.slice(0,-6):void 0,Rs=/^\d{4}-\d{2}-\d{2}$/,_s=Symbol.for("@graview/core:repeat");function pt(n){let e=I(n);return!!e&&(e[_s]===1||pt(e.innerType))}var ru=n=>(Object.defineProperty(I(n),_s,{value:1,enumerable:!0}),n),kr=(n,e,t)=>n===void 0||Number.isInteger(n)&&n>=e&&n<=t,Ss=(n,e)=>n===void 0||Array.isArray(n)&&n.length<=e&&n.every(t=>typeof t=="string"&&Rs.test(t)),ou=["every","interval","on","until","count","except","continues"],As=n=>Ye(n)&&Object.keys(n).every(e=>ou.includes(e))&&kr(n.interval,1,99)&&kr(n.count,1,1e3)&&Ss(n.until===void 0?void 0:[n.until],1)&&Ss(n.except,500)&&(n.continues===void 0||typeof n.continues=="string"&&n.continues.length<=200)&&(n.on===void 0||Array.isArray(n.on)&&n.on.length>0&&n.on.length<=31&&n.on.every(e=>n.every==="week"?ft.includes(e):n.every==="month"&&e!==0&&kr(e,-1,31))),py=()=>ru(yr().check(dt(n=>n===null||As(n),"how a date repeats, or null"))),En=n=>Date.UTC(+n.slice(0,4),+n.slice(5,7)-1,+n.slice(8,10)),Os=n=>new Date(n).toISOString().slice(0,10),Sr=(n,e)=>Os(En(n)+e*864e5),$s=(n,e,t)=>{let r=new Date(Date.UTC(n,e+1,0)).getUTCDate();return Os(Date.UTC(n,e,t<0||t>r?r:t))},Ye=n=>typeof n=="object"&&n!==null&&tu.includes(n.every);function qe(n,e,t={}){let r=n.slice(0,10),o=n.slice(10),i=[];if(!Rs.test(r))return i;let s=Math.max(1,e.interval??1),a=e.every,d=t.from&&t.from>r?t.from.slice(0,10):r,f=[e.until,t.to?.slice(0,10)].filter(Boolean).sort()[0],c=t.limit??1e3,p=new Set(e.except??[]),u=+r.slice(0,4),l=+r.slice(5,7)-1,g=+r.slice(8,10),h=Sr(r,-new Date(En(r)).getUTCDay()),b=(e.on?.length?e.on:[a==="week"?ft[new Date(En(r)).getUTCDay()]:g]).map(k=>typeof k=="string"?ft.indexOf(k):k),y=a==="day"?1:a==="week"?7:0,S=(+d.slice(0,4)-u)*12+(+d.slice(5,7)-1-l),A=e.count?0:Math.max(0,Math.floor((y?(En(d)-En(y===7?h:r))/864e5/y:a==="month"?S:S/12)/s)-1),m=0;for(let k=0;k<5e4&&i.length<c;k++,A++){let w=A*s,x=a==="day"?[Sr(r,w)]:a==="week"?b.map(v=>Sr(h,w*7+v)):a==="month"?b.map(v=>$s(u,l+w,v)):[$s(u+w,l,g)];for(let v of[...new Set(x)].sort())if(!(v<r)&&(f&&v>f||e.count&&m>=e.count||(m++,v>=d&&!p.has(v)&&i.push(v+o),i.length>=c)))return i}return i}function Es(n,e,t){if(!Ye(e)||typeof n!="string")return n;let r=qe(n,e,{from:t,limit:1})[0];if(r)return r;let o=e.until||e.count?qe(n,e):[];return o[o.length-1]??n}function iu(n,e,t){let r=n[e],o=n[He(e)];return typeof r=="string"&&Ye(o)?Es(r,o,t):r}function zn(n,e){if(n.onBehalfOf){let{onBehalfOf:i,...s}=n;return`${zn(s,e)}, for ${zn(i,e)}`}if(n.id===void 0)return n.name??(n.kind==="agent"?"an agent":n.kind);let t=e.graph.getNode(n.id);if(t)return F(e.schema.tryDefinition(t.kind),t);let r=e.seats?.find(i=>i.principal.id===n.id);if(r)return r.label;let o=e.people?.find(i=>i.id===n.id&&(i.kind===void 0||i.kind===n.kind));return o?o.name:n.name?n.name:/(^|:)migration$/.test(n.id)?"the upgrade":n.id.startsWith("form:")?"a visitor via a form":/[:_/]/.test(n.id)?{human:"somebody",agent:"an agent",rule:"a rule",system:"the system"}[n.kind]:n.id}var Je="$archived",Ee=n=>n?.[Je]===!0,yy=(n,e=!1)=>e==="all"||Ee(n)===e,$r=n=>n===!0||n==="true"?!0:n==="all"?"all":!1,Mn="$leftAlone",ht=new Set([Je,Mn]);var te=class extends Error{constructor(t,r){super(r?`${t}
2
+ \u2192 ${r}`:t);this.hint=r;this.name="SchemaError"}};function su(n,e){let t=n,r=new Map;for(let a of t){if(r.has(a.kind))throw new te(`Duplicate node kind "${a.kind}"`,"Each kind may be declared once; merge the two defineNode calls.");r.set(a.kind,a)}let o=new Map;for(let a of t)for(let[d,f]of Object.entries(a.edges)){if(f.to!=="*"){for(let p of f.to)if(!r.has(p))throw new te(`Edge "${d}" on "${a.kind}" points at undeclared kind "${p}"`,`Declared kinds: ${[...r.keys()].join(", ")}`)}let c=o.get(d);c?c.from.push(a.kind):o.set(d,{from:[a.kind],decl:f})}let i=new Map;for(let[a,{from:d,decl:f}]of o){let c=d.map(p=>r.get(p).edges[a].to);i.set(a,{kind:a,from:d,to:c.includes("*")?"*":[...new Set(c.flat())],cardinality:f.cardinality??"many",...f.description===void 0?{}:{description:f.description}})}let s=new Map;for(let a of t)s.set(a.kind,us(a.fields,{id:D().check($n(1)),kind:fs(a.kind)}));return{definitions:t,computed:e,kinds:t.map(a=>a.kind),edgeKinds:[...i.keys()],definition(a){let d=r.get(a);if(!d)throw new te(`Unknown node kind "${String(a)}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);return d},tryDefinition(a){return r.get(a)},edge(a){return i.get(a)},edgeAllowed(a,d,f){let c=r.get(d)?.edges[a];return c?c.to==="*"||c.to.includes(f):!1},parseNode(a){let d=a?.kind;if(typeof d!="string")throw new te("Node is missing a `kind`");let f=s.get(d);if(!f)throw new te(`Unknown node kind "${d}"`,`Declared kinds: ${[...r.keys()].join(", ")}`);let c={},p={};for(let[l,g]of Object.entries(a))ht.has(l)?g===!0&&(p[l]=!0):c[l]=g;let u=f.parse(c);return Object.keys(p).length>0?{...u,...p}:u},__node:void 0}}function z(n){return`${n.kind}\0${n.from}\0${n.to}`}var Nn={addedNodes:[],removedNodes:[],changedNodes:[],addedEdges:[],removedEdges:[],touched:[]};function Ps(n){return n.addedNodes.length===0&&n.removedNodes.length===0&&n.changedNodes.length===0&&n.addedEdges.length===0&&n.removedEdges.length===0}function au(n,e){let t=new Set([...Object.keys(n),...Object.keys(e)]),r=[];for(let o of t){let i=n[o],s=e[o];JSON.stringify(i)!==JSON.stringify(s)&&r.push(o)}return r.sort()}function Xe(n,e){let t=new Map(n.nodes.map(u=>[u.id,u])),r=new Map(e.nodes.map(u=>[u.id,u])),o=e.nodes.filter(u=>!t.has(u.id)),i=n.nodes.filter(u=>!r.has(u.id)),s=[];for(let u of n.nodes){let l=r.get(u.id);if(!l||l===u)continue;let g=au(u,l);g.length>0&&s.push({before:u,after:l,fields:g})}let a=new Map(n.edges.map(u=>[z(u),u])),d=new Map(e.edges.map(u=>[z(u),u])),f=e.edges.filter(u=>!a.has(z(u))),c=n.edges.filter(u=>!d.has(z(u))),p=new Set;for(let u of o)p.add(u.id);for(let u of i)p.add(u.id);for(let u of s)p.add(u.after.id);for(let u of[...f,...c])p.add(u.from),p.add(u.to);return{addedNodes:o,removedNodes:i,changedNodes:s,addedEdges:f,removedEdges:c,touched:[...p].sort()}}function be(n,e,t){let r=new Set(t.flatMap(i=>i.op==="patch-node"?[i.id]:"node"in i?[i.node.id]:[i.edge.from,i.edge.to]));if(r.size===0)return Nn;let o=i=>({nodes:i.nodes.filter(s=>r.has(s.id)),edges:i.edges.filter(s=>r.has(s.from)||r.has(s.to))});return Xe(o(n),o(e))}function du(n){let e=n?.issues;return!Array.isArray(e)||e.length===0?n instanceof Error?n.message:String(n):e.map(t=>{let r=t.path?.length?C(String(t.path.at(-1))):null,o=t.message??"is not what the declaration allows";return r?`${r}: ${o}`:o}).join("; ")}var N=class extends Error{constructor(t,r){super(r?`${t}
3
+ ${r}`:t);this.hint=r;this.name="GraphError"}},B=class extends N{constructor(t,r){super(r);this.id=t;this.name="MissingRecordError"}};function gt(n,e){try{n.parseNode(e);return}catch(t){if(t instanceof te)throw t;let r=t.issues??[];return{fields:new Set(r.flatMap(i=>i.code==="unrecognized_keys"&&i.keys?[...i.keys]:typeof i.path?.[0]=="string"?[i.path[0]]:[""])),error:t}}}var Rr="n\0",_r="e\0",W=class n{constructor(e,t={}){this.schema=e;this.validate=t.validate??!0}nodes=new Map;edges=new Map;outIndex=new Map;inIndex=new Map;rank=0;ranks=new Map;lapsed=new Map;reordered=!1;counts=new Map;archived=new Set;listeners=new Set;validate;static from(e,t,r={}){let o=new n(e,r);return o.load(t),o}load(e){let t=this.snapshot();this.restore(e);let r=Xe(t,this.snapshot());return this.emit(r),r}getNode(e){return this.nodes.get(e)}has(e){return this.nodes.has(e)}allNodes(e){return this.reach([...this.nodes.values()],e,this.held)}count(e,t){return t||this.archived.size?this.nodesOfKind(e,t).length:this.counts.get(e)??0}allEdges(e){return this.reach([...this.edges.values()],e,t=>this.archived.has(t.from)||this.archived.has(t.to))}nodesOfKind(e,t){return this.allNodes(t).filter(r=>r.kind===e)}edgesOfKind(e,t){return this.allEdges(t).filter(r=>r.kind===e)}out(e,t,r){return this.reach(this.resolve(this.outIndex.get(e),t,"to"),r,this.held)}in(e,t,r){return this.reach(this.resolve(this.inIndex.get(e),t,"from"),r,this.held)}neighbors(e,t){let r=new Map;for(let o of[...this.out(e,void 0,t),...this.in(e,void 0,t)])r.set(o.id,o);return[...r.values()]}isArchived(e){return this.archived.has(e)}outEdges(e,t){return this.edgesFrom(this.outIndex.get(e),t)}inEdges(e,t){return this.edgesFrom(this.inIndex.get(e),t)}snapshot(){return{nodes:[...this.nodes.values()],edges:[...this.edges.values()]}}get size(){return{nodes:this.nodes.size,edges:this.edges.size}}applyPrimitives(e,t={}){let r=this.snapshot();try{for(let i of e)this.applyOne(i,t.restoring===!0,t.inPlace===!0);this.settleOrder()}catch(i){throw this.restore(r),i}let o=be(r,this.snapshot(),e);return this.emit(o),o}preview(e,t={}){return n.from(this.schema,this.snapshot(),{validate:this.validate}).applyPrimitives(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}restore(e){for(let t of[this.nodes,this.edges,this.outIndex,this.inIndex,this.ranks,this.lapsed,this.counts,this.archived])t.clear();this.reordered=!1;for(let t of e.nodes)this.insertNode(t,!0);for(let t of e.edges)this.insertEdge(t,!0)}tally(e,t){this.counts.set(e,(this.counts.get(e)??0)+t)}place(e,t){let r=t?this.lapsed.get(e):void 0;if(r===void 0){this.ranks.set(e,++this.rank);return}this.ranks.set(e,r),this.lapsed.delete(e),this.reordered=!0}lapse(e){let t=this.ranks.get(e);t!==void 0&&(this.ranks.delete(e),this.lapsed.set(e,t),this.lapsed.size>4096&&this.lapsed.delete(this.lapsed.keys().next().value))}settleOrder(){if(!this.reordered)return;this.reordered=!1;let e=o=>(i,s)=>this.ranks.get(o+i[0])-this.ranks.get(o+s[0]),t=[...this.nodes.entries()].sort(e(Rr));this.nodes.clear();for(let[o,i]of t)this.nodes.set(o,i);let r=[...this.edges.entries()].sort(e(_r));this.edges.clear();for(let[o,i]of r)this.edges.set(o,i)}emit(e){if(!(e.addedNodes.length===0&&e.removedNodes.length===0&&e.changedNodes.length===0&&e.addedEdges.length===0&&e.removedEdges.length===0))for(let t of this.listeners)t(e)}applyOne(e,t,r){switch(e.op){case"add-node":this.insertNode(e.node,t,r);return;case"remove-node":{let o=e.node.id,i=this.nodes.get(o);if(!i)throw new B(o,`Cannot remove missing node "${o}"`);for(let s of[...this.outEdges(o),...this.inEdges(o)])this.deleteEdge(s);this.tally(i.kind,-1),this.archived.delete(o),this.nodes.delete(o),this.lapse(Rr+o),this.outIndex.delete(o),this.inIndex.delete(o);return}case"patch-node":{let o=this.nodes.get(e.id);if(!o)throw new B(e.id,`Cannot patch missing node "${e.id}"`);let i={...o};for(let[a,d]of Object.entries(e.after))Fe(d)?delete i[a]:i[a]=d;let s=t?i:this.checkPatch(o,i,Object.keys(e.after));this.nodes.set(e.id,s),this.archived[Ee(s)?"add":"delete"](e.id),s.kind!==o.kind&&(this.tally(o.kind,-1),this.tally(s.kind,1));return}case"add-edge":this.insertEdge(e.edge,t,r);return;case"remove-edge":{if(!this.edges.has(z(e.edge)))throw new B(z(e.edge),`Cannot remove missing edge ${z(e.edge)}`);this.deleteEdge(e.edge);return}}}check(e){if(!this.validate)return e;try{return this.schema.parseNode(e)}catch(t){throw this.refusal(e,t)}}checkPatch(e,t,r){if(!this.validate)return t;let o=this.schema.tryDefinition(String(t.kind))?.fields?.shape;if(!o)return this.check(t);for(let a of r){if(a==="id"||a==="kind"||ht.has(a))continue;let d=o[a];if(!d){delete t[a];continue}let f=d.safeParse(t[a]);f.success&&(f.data===void 0?delete t[a]:t[a]=f.data)}let i=gt(this.schema,t);if(i===void 0)return t;let s=gt(this.schema,e)?.fields??new Set;if([...i.fields].some(a=>r.includes(a)||!s.has(a)))throw this.refusal(t,i.error);return t}refusal(e,t){if(t instanceof te)return t;{let r=e?.id??"?",o=e?.kind??"?",i=this.schema.tryDefinition(o),s=i&&e&&typeof e=="object"?F(i,e):r;return new N(`${s} does not match what ${o} declares`,du(t))}}insertNode(e,t,r=!1){if(this.nodes.has(e.id))throw new N(`Duplicate node id "${e.id}"`);this.nodes.set(e.id,t?e:this.check(e)),Ee(e)&&this.archived.add(e.id),this.tally(e.kind,1),this.place(Rr+e.id,r)}insertEdge(e,t,r=!1){let o=this.nodes.get(e.from),i=this.nodes.get(e.to);if(!o||!i){let a=o?e.to:e.from;throw new B(a,`Edge "${e.kind}" references missing node "${a}"`)}if(this.validate&&!t&&!this.schema.edgeAllowed(e.kind,o.kind,i.kind)){let a=this.schema.edge(e.kind);throw new N(`Edge "${e.kind}" is not declared from ${o.kind} to ${i.kind}`,a?`Declared: ${a.from.join("|")} -> ${a.to==="*"?"*":a.to.join("|")}`:`No edge kind "${e.kind}" is declared in this schema`)}let s=z(e);this.edges.has(s)||(this.edges.set(s,e),this.place(_r+s,r),this.index(this.outIndex,e.from,s),this.index(this.inIndex,e.to,s))}deleteEdge(e){let t=z(e);this.edges.delete(t),this.lapse(_r+t),this.outIndex.get(e.from)?.delete(t),this.inIndex.get(e.to)?.delete(t)}index(e,t,r){(e.get(t)??e.set(t,new Set).get(t)).add(r)}edgesFrom(e,t){if(!e)return[];let r=[];for(let o of e){let i=this.edges.get(o);i&&(t===void 0||i.kind===t)&&r.push(i)}return r}resolve(e,t,r){let o=[];for(let i of this.edgesFrom(e,t)){let s=this.nodes.get(i[r]);s&&o.push(s)}return o}held=e=>this.archived.has(e.id);reach(e,t,r){let o=t?.archived??!1;return o==="all"||!o&&!this.archived.size?e:e.filter(i=>r(i)===o)}};var mt=class extends Error{constructor(t,r){super(`No invariant registered under "${t}" (required by node "${r}")`);this.invariant=t;this.nodeId=r;this.name="UnregisteredInvariantError"}};function cu(n,e){return{...e,name:n}}var yt=class extends Error{constructor(e){super(e),this.name="RuleBudgetError"}};function zs(n,e,t){try{return e().map(r=>r.status?r:{...r,status:"violated"})}catch(r){let o=r instanceof yt,i=r instanceof Error?r.message:String(r),s=n.label??n.name.replace(/-/g," ");return[{invariant:n.name,status:o?"over-budget":"could-not-judge",...t!==void 0?{subjectId:t}:{},label:s,message:`${s} could not be judged: ${i}`,nodeIds:t!==void 0?[t]:[],repairs:[]}]}}function Qe(n,e,t={}){let r=t.context??{},o=t.today===void 0?{}:{today:t.today},i=t.onUnregistered??"skip",s=new Set(e.map(u=>u.name)),a=[];for(let u of e)u.scope==="graph"&&a.push(...zs(u,()=>u.evaluate({graph:n,subject:void 0,context:r,...o}),void 0));let d=e.filter(u=>u.scope!=="graph"),f=new Map;for(let u of d){let l=u.scope.kind,g=f.get(l);g?g.push(u):f.set(l,[u])}for(let u of n.allNodes()){let l=n.schema.tryDefinition(u.kind),g=l?.requiresInvariant?.(u)??null;if(t.subjectFilter&&!t.subjectFilter(u,r))continue;if(g!==null&&!s.has(g)){if(i==="throw")throw new mt(g,u.id);continue}let h=!Bt(l,u,t.today);for(let b of f.get(u.kind)??[]){if(h&&b.judgesPast!==!0)continue;let y=b.scope.match;y&&!y(u)||a.push(...zs(b,()=>b.evaluate({graph:n,subject:u,context:r,...o}),u.id))}}let c=new Set,p=a.filter(u=>{let l=`${u.message}|${[...u.nodeIds].sort().join(",")}`;return c.has(l)?!1:(c.add(l),!0)}).map(u=>{let l=Gt(u.message);return l===u.message?u:{...u,message:l}});return Ar?Ar(n,e,p,t.today):p}var Ar;function Ny(n){Ar=n}function uu(n,e){let t=new Set(e);return n.filter(r=>r.nodeIds.some(o=>t.has(o))||r.subjectId!==void 0&&t.has(r.subjectId))}function lu(n){let e=new Set(n.map(r=>r.invariant)).size;if(e===0)return"All rules hold";let t=`${e} ${e===1?"rule":"rules"} broken`;return n.length>e?`${t} in ${n.length} places`:t}var bt=(n,e)=>n==="*"||n.includes(e);function T(n){let e=n.onBehalfOf;if(!e)return n;let t=e.roles??[],r=n.roles===void 0?t:n.roles.filter(o=>t.includes(o));return{...n,...e.id!==void 0?{id:e.id}:{},roles:r}}var q=n=>n.kind==="system"&&n.onBehalfOf===void 0,ve=(n,e)=>n.roles==="*"||(e.roles??[]).some(t=>n.roles.includes(t));function Ms(n){return No(n.map(e=>Ge(C(e).toLowerCase())),"or")}function xe(n,e,t,r,o,i,s={},a,d,f){if(!n)return{ok:!0};if(q(e))return{ok:!0};if(e=T(e),o!==void 0){if(xe(n,e,t,r,void 0,i).ok)return{ok:!0};let l=!1;if(o.some(y=>xe(n,e,y,r,void 0,i).ok)){if(!d||i===void 0||e.id!==void 0&&d()===e.id||!f&&n.grants.some(y=>y.roles!=="*"&&ve(y,e)&&o.some(S=>bt(y.mutations,S))))return{ok:!0};l=!0}let g=l?[t]:[t,...o],h=[...new Set(g.flatMap(y=>Or(n,y,r)))].sort(),b=(l?"only on what you made; ":"")+(h.length===0?o.length===0?"no declared act creates or changes it, so no role can":"no role can":`${Ms(h)} can`);return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:h,message:Ns(n,g,r,b,s)}}}let c=!1;for(let l of n.grants){if(!ve(l,e)||!bt(l.mutations,t)||l.kinds!==void 0&&l.kinds!=="*"&&(r===void 0||!l.kinds.includes(r))||l.self&&(i===void 0||e.id===void 0||i!==e.id))continue;let g=l.ownEnd?a?.()??[]:[e.id];if(!g.length||g.some(h=>h!==e.id)){c=!0;continue}return{ok:!0}}let p=Or(n,t,r),u=c?"only on your own end of the link":p.length===0?"no role can":`${Ms(p)} can`;return{ok:!1,refusal:{mutation:t,...r===void 0?{}:{kind:r},wouldNeed:p,message:Ns(n,[t],r,u,s)}}}function Ns(n,e,t,r,o){let i=[...new Set(e.flatMap(a=>Is(n,a,t)))],s=o.act?.(e[0]);return`Not permitted: ${s?`\u201C${s}\u201D`:e[0]}${t?` on ${Ge(o.noun?.(t)??t)}`:""} \u2014 ${r}.`+(i.length>0?` ${i.join(" ")}`:"")}function Is(n,e,t){return[...new Set(js(n,e,t).flatMap(r=>r.describe||[]))]}var js=(n,e,t)=>n.grants.filter(r=>bt(r.mutations,e)&&(t===void 0||bt(r.kinds??"*",t)));function Or(n,e,t){let r=js(n,e,t);return r.some(o=>o.roles==="*")?[]:[...new Set(r.flatMap(o=>o.roles))].sort()}function Er(n,e,t){return n?t.filter(r=>{let o=T(e).id;return Pr(r).some(i=>xe(n,e,r.name,i,void 0,o,void 0,()=>[o??[]].flat()).ok)}):t}var Pr=n=>n.subject&&n.subject.kinds!=="*"?n.subject.kinds:[void 0];var ee=class extends Error{constructor(t,r="refused"){super(t);this.sentence=t;this.reason=r;this.name="ActRefusal"}};var In=class{constructor(e,t,r){this.present=e;this.timeline=t;this.unversioned=r}nodes=new Map;edges=new Map;touching=new Map;seq=Number.MAX_SAFE_INTEGER;wrote=new Map;begin(e){this.seq=e,this.wrote.clear()}writerOf(e){return t=>{let r=`${e}\0${t}`;return this.wrote.has(r)?this.wrote.get(r):this.timeline?.writers?.writerAt(e,t,this.seq)}}note(e,t){let r=e.op==="add-node"?e.node.id:e.op==="patch-node"?e.id:"";if(r===""||this.unversioned?.has(r))return;let o=e.op==="add-node"?Object.keys(e.node):Object.keys(e.after);for(let i of o)i!=="id"&&i!=="kind"&&this.wrote.set(`${r}\0${i}`,t(r,i))}node(e){return this.nodes.has(e)?this.nodes.get(e)??void 0:this.present.getNode(e)}setNode(e,t){this.nodes.set(e,t)}setEdge(e,t){let r=z(e);this.edges.set(r,t?e:null);for(let o of[e.from,e.to]){let i=this.touching.get(o);i||this.touching.set(o,i=new Set),i.add(r)}}incident(e){let t=new Map;for(let r of[...this.present.outEdges(e),...this.present.inEdges(e)]){let o=z(r);this.edges.has(o)||t.set(o,r)}for(let r of this.touching.get(e)??[]){let o=this.edges.get(r);o&&t.set(r,o)}return[...t.values()]}undo(e){switch(e.op){case"add-node":this.setNode(e.node.id,null);return;case"remove-node":this.setNode(e.node.id,e.node);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Ts(t,e.before));return}case"add-edge":this.setEdge(e.edge,!1);return;case"remove-edge":this.setEdge(e.edge,!0);return}}apply(e){switch(e.op){case"add-node":this.setNode(e.node.id,e.node);return;case"remove-node":for(let t of this.incident(e.node.id))this.setEdge(t,!1);this.setNode(e.node.id,null);return;case"patch-node":{if(this.unversioned?.has(e.id))return;let t=this.node(e.id);if(!t)return;this.setNode(e.id,Ts(t,e.after));return}case"add-edge":this.setEdge(e.edge,!0);return;case"remove-edge":this.setEdge(e.edge,!1);return}}};function Ts(n,e){let t={...n};for(let[r,o]of Object.entries(e))Fe(o)?delete t[r]:t[r]=o;return t}var fu=n=>n.op==="add-node"||n.op==="remove-node"?n.node.id:n.op==="patch-node"?n.id:void 0;function zr(n,e,t,r){let o=c=>{let p=e.node(c);return p?t.served(p,e.writerOf(c))!==void 0:t.sees?.(c)??!1},i=fu(n);if(i===void 0){let c=n.edge,p=t.edgeClean(c)&&o(c.from)&&o(c.to);return e.apply(n),{primitives:p?[n]:[],faithful:!0}}let s=e.node(i),a=s?t.served(s,e.writerOf(i)):void 0;e.apply(n),e.note(n,r);let d=e.node(i),f=d?t.served(d,e.writerOf(i)):void 0;if(!a&&!f)return{primitives:[],faithful:!1};if(!a&&f){let c=e.incident(i).filter(u=>t.edgeClean(u)&&o(u.from===i?u.to:u.from)).map(u=>({op:"add-edge",edge:u})),p=n.op==="add-node"&&f===n.node&&c.length===0;return{primitives:p?[n]:[{op:"add-node",node:f},...c],faithful:p}}if(a&&!f){let c=n.op==="remove-node"&&a===s;return{primitives:c?[n]:[{op:"remove-node",node:a}],faithful:c}}if(n.op==="patch-node"){let c=(u,l)=>g=>g in u==(l!==void 0&&g in l);if(Object.keys(n.after).every(u=>c(a,s)(u)&&c(f,d)(u)))return{primitives:[n],faithful:!0};let p=u=>Object.fromEntries(Object.keys(n.after).map(l=>[l,l in u?u[l]:pe]));return{primitives:[{op:"patch-node",id:i,before:p(a),after:p(f)}],faithful:!1}}return{primitives:[{op:"remove-node",node:a},{op:"add-node",node:f}],faithful:!1}}function Ds(n,e,t){if(n.length===0)return[];let r=e.log.all(),o=r[0]?.seq??0,i=n.every(u=>r[u.seq-o]?.id===u.id),s=new In(e.present,e);if(!i)return s.begin(e.log.length??o+r.length),n.map(u=>{let l=T(u.author).id,g=u.primitives.map(h=>zr(h,s,t,()=>l));return{op:u,primitives:g.flatMap(h=>h.primitives),faithful:g.every(h=>h.faithful)}});let a=new Set(n.map(u=>u.seq)),d=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY;for(let u of a)u<d&&(d=u),u>f&&(f=u);d-=o,f-=o;let c=pu(r,d,e.present,t),p=c?new In(e.present,e,c.unversioned):s;for(let u=r.length-1;u>=d;u--){let l=r[u].primitives;for(let g=l.length-1;g>=0;g--)p.undo(l[g])}return hu(n,r,d,f,a,p,c?.judge??t,e)}function pu(n,e,t,r){let{sees:o,names:i}=r;if(!o||!i)return;let s=new Set,a=new Set,d=new Set,f=(p,u)=>{s.has(p)||a.has(p)||(o(p)?i(u)?(a.add(p),d.delete(p)):d.add(p):(s.add(p),d.delete(p)))};for(let p=e;p<n.length;p++)for(let u of n[p].primitives)u.op==="add-node"||u.op==="remove-node"?f(u.node.id,u.node):u.op==="patch-node"&&(f(u.id,u.before),f(u.id,u.after));for(let p of d){let u=t.getNode(p);u&&i(u)&&(d.delete(p),a.add(p))}return{unversioned:new Set([...d,...s]),judge:{...r,served:(p,u)=>d.has(p.id)?p:s.has(p.id)?void 0:r.served(p,u)}}}function hu(n,e,t,r,o,i,s,a){let d=new Map;for(let f=t;f<=r;f++){let c=e[f];if(i.begin(c.seq),!o.has(c.seq)){for(let l of c.primitives)i.apply(l);continue}let p=(l,g)=>a.writers?.writerAt(l,g,c.seq+1),u=c.primitives.map(l=>zr(l,i,s,p));d.set(c.seq,{op:c,primitives:u.flatMap(l=>l.primitives),faithful:u.every(l=>l.faithful)})}return n.map(f=>d.get(f.seq))}function By(n,e,t,r){let o=new In(e.present,e);return o.begin(e.log.length??e.log.all().length),n.flatMap(i=>zr(i,o,t,()=>r).primitives)}var Zs="A change you cannot see",Ls={kind:"system",id:"withheld",name:"Someone"};function en(n){return n.withheld===!0}var jn=$e,Cs=(n,e)=>Object.entries(n).some(([t,r])=>t!=="id"&&t!=="kind"&&j(r,e));function Gs(n){if(typeof n!="function")return n;let e=n,t=r=>e(r.id)&&!Cs(r,e)?r:void 0;return{sees:e,shows:e,served:t,servedWith:t,optional:()=>!1,kindOf:()=>{}}}function j(n,e){if(typeof n=="string")return!e(n);if(n===null||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0;t<n.length;t++)if(j(n[t],e))return!0;return!1}for(let t in n)if(Object.hasOwn(n,t)&&(!e(t)||j(n[t],e)))return!0;return!1}function Bs(n,e){let t=r=>!e(r);return n.primitives.some(r=>jn(r).some(t))||[...n.writes,...n.reads].some(t)||n.mutation!==null&&j(n.mutation.args,e)}function gu(n,e){if(jn(n).every(e.shows))switch(n.op){case"add-node":{let t=e.served(n.node);return t?t===n.node?n:{op:"add-node",node:t}:void 0}case"remove-node":{let t=n.node;return Cs(t,e.sees)?{op:"remove-node",node:Object.fromEntries(Object.entries(t).filter(([r,o])=>r==="id"||r==="kind"||!j(o,e.sees)))}:n}case"patch-node":{let t=e.kindOf(n.id),r={};for(let[i,s]of Object.entries(n.after))if(!j(s,e.sees))r[i]=s;else if(t!==void 0&&e.optional(t,i))r[i]=pe;else return;let o=Object.fromEntries(Object.entries(n.before).filter(([,i])=>!j(i,e.sees)));return{op:"patch-node",id:n.id,before:o,after:r}}case"add-edge":case"remove-edge":return j(n.edge,e.sees)?void 0:n}}function Mr(n,e,t){let r=Gs(e),o=i=>r.shows(i)&&Ks(r,i);return{id:n.id,seq:n.seq,batch:n.batch,author:Ls,intent:Zs,mutation:null,primitives:t??n.primitives.flatMap(i=>{let s=gu(i,r);return s?[s]:[]}),reads:n.reads.filter(o),writes:n.writes.filter(o),at:n.at,...n.undoes!==void 0?{undoes:n.undoes}:{},withheld:!0}}function nn(n,e){let t=Gs(e);if(t.hides?.()===!1)return[...n];let r=t.pin?.()??t;if(r.redact)return r.redact(n);if(r.timeline){let o={served:(i,s)=>r.servedWith(i,s),edgeClean:i=>!j(i,r.sees),sees:r.sees,names:i=>j(i,r.sees)};return Ds(n,r.timeline,o).map(({op:i,primitives:s,faithful:a})=>(!i.withheld&&a?Fs(i,r,s):void 0)??Mr(i,r,s))}return n.map(o=>(!o.withheld&&!Bs(o,r.shows)?Fs(o,r):void 0)??Mr(o,r))}function Fs(n,e,t){let r=n.inverse??n.primitives;if(t&&t.length<n.primitives.length){if(!t.length)return;r=r.filter(h=>jn(h).every(e.shows));let{inverse:l,...g}=n;n={...g,primitives:t}}let o=l=>e.sees(l)&&Ks(e,l),i=n.reads.filter(o),s=new Set(n.primitives.flatMap(jn)),a=n.writes.filter(l=>o(l)||e.sees(l)&&s.has(l)),d=i.length===n.reads.length&&a.length===n.writes.length?n:{...n,reads:i,writes:a},f=e.actor!==void 0&&T(n.author).id===e.actor;if(!f&&n.described?.some(l=>!e.sees(l)))return;if(!j(n,e.sees))return d;let c=new Set,p=l=>{if(typeof l=="string")c.add(l);else if(Array.isArray(l))for(let g of l)p(g);else if(l!==null&&typeof l=="object")for(let[g,h]of Object.entries(l))c.add(g),p(h)};t&&p(t);let u=l=>e.sees(l)||c.has(l);if(!j(r,u))return f&&n.mutation&&p(n.mutation.args),j({...d,primitives:[],inverse:[]},f?u:e.sees)?void 0:d}function Ks(n,e){return n.timeline===void 0||n.kindOf(e)!==void 0}var Pe=class extends N{constructor(t){super(t.message);this.check=t;this.name="UndoBlockedError"}get blockedBy(){return this.check.blockedBy}};function Tn(n,e){let t=new Set(e),r=n.undoneIds(),o=n.all().filter(l=>t.has(l.batch)&&!r.has(l.id)),i=[...n.epochs()].reverse().find(l=>l.horizon);if(i){let l=new Set(n.all().map(h=>h.batch)),g=e.filter(h=>!l.has(h));if(g.length>0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:`Cannot undo ${g.map(h=>`batch ${h}`).join(", ")}: it is not after the undo horizon at op ${i.seq}${i.at?` (${i.at})`:""}. What was done before the horizon is archived, and undo does not reach behind it.`}}if(o.length===0)return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"missing",message:e.length===0?"No batch given to undo":`Nothing live to undo in ${e.join(", ")} \u2014 already undone, or never applied`};if(o.some(en))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],reason:"forbidden",message:o.every(en)?"Cannot undo a change you cannot see: only somebody who can see it can take it back.":"Cannot undo this here: part of it is a change you cannot see, and only somebody who can see it can take it back."};if(o.some(l=>l.enabledModules!==void 0))return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:"Cannot undo turning a module off or on: it is changed by turning the module the other way."};let s=new Set;for(let l of o)for(let g of l.writes)s.add(g);let a=Math.min(...o.map(l=>l.seq)),d=n.epochs().find(l=>l.change!==void 0&&l.seq>a);if(d){let l=o.find(g=>g.seq<d.seq);return{ok:!1,ops:o,blockedBy:[],includeBatches:[],message:`Cannot undo "${l.intent}": ${l.intent===d.change?"it changed the declaration":`it was done before the declaration changed (${d.change})`}, and undo does not reach back across that change.`}}let f=new Map(n.all().map(l=>[l.id,l.seq])),c=[];for(let l of n.all()){if(l.seq<=a||t.has(l.batch)||r.has(l.id)||l.undoes!==void 0&&(f.get(l.undoes)??-1)>a)continue;let g=l.reads.filter(h=>s.has(h));g.length>0&&c.push({op:l,overlap:g})}if(c.length===0)return{ok:!0,ops:o};let p=c.filter(l=>!en(l.op)).map(l=>`"${l.op.intent}" (op ${l.op.id}, read ${l.overlap.join(", ")})`).join("; ");if(c.some(l=>en(l.op)))return{ok:!1,ops:o,blockedBy:c,includeBatches:[],message:`Cannot undo on its own \u2014 ${p?`a later operation depends on it: ${p}; and `:""}a later change you cannot see depends on it, which only somebody who can see it can take back.`};let u=[...new Set(c.map(l=>l.op.batch))];return{ok:!1,ops:o,blockedBy:c,includeBatches:u,message:`Cannot undo on its own \u2014 a later operation depends on it: ${p}. Include ${u.map(l=>`batch ${l}`).join(", ")} to undo them together.`}}function Vs(n){return[...n].sort((e,t)=>t.seq-e.seq).flatMap(e=>Re(e))}var ze=class extends Error{refusal;constructor(e){super(e.message),this.name="PermissionDeniedError",this.refusal=e}};function mu(n){let e=n instanceof Error?n.message:String(n);if(n instanceof ze){let t=n.refusal.wouldNeed;return{reason:"forbidden",sentence:e,...t.length>0?{wouldNeed:[...t]}:{}}}return n instanceof B?{reason:"missing",sentence:e}:n instanceof ee?{reason:n.reason,sentence:n.sentence}:n instanceof Pe?{reason:n.check.reason??"invalid",sentence:e}:{reason:"invalid",sentence:e}}var re=class extends N{constructor(t,r){super(`Invalid arguments for mutation "${t}"`,r.map(o=>`${o.path.map(String).join(".")||"(root)"}: ${o.message}`).join("; "));this.mutation=t;this.issues=r;this.name="InvalidArguments"}};function ab(n){let e=/^(edit|remove|archive|unarchive|merge|leave-alone|allow-tidying|skip|detach|split)-(.+)$/.exec(n);return e?{act:e[1],kind:e[2]}:void 0}var Ws=["connect","disconnect"],qs=n=>n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`),Hs=(n,e,t)=>`${n}-${e}-${qs(t)}`;function db(n,e){let t=/^(connect|disconnect)-(.+)$/.exec(n);if(t){for(let[r,o]of e)if(t[2].startsWith(`${r}-`)){for(let i of o)if(t[2]===`${r}-${qs(i)}`)return{act:t[1],kind:r,relation:i}}}}var Us=n=>`${/^[aeiou]/i.test(n)?"an":"a"} ${n}`;function Ys(n,e){let t=e.also?` (${e.also})`:"";return{title:`${e.one?`${n==="connect"?"Set":"Clear"} the ${e.to}`:`${n==="connect"?"Link":"Unlink"} ${Us(e.to)}`}${t}`,fromTheOtherEnd:`${n==="connect"?"Link":"Unlink"} ${Us(e.from)}${t}`}}var yu=n=>`Op "${n.id}" has seq ${n.seq}, so the log begins at seq ${n.seq}: a log that begins past 0 begins at its undo horizon, and none was given (a checkpoint epoch, or { horizon })`,tn=class n{ops=[];marks=[];start=0;get length(){return this.start+this.ops.length}get horizon(){return this.start}all(){return this.ops}opsFrom(e){return this.ops.slice(Math.max(0,e-this.start))}append(e){if(e.seq!==this.length)throw new Error(this.length===0&&e.seq>0?yu(e):`Op "${e.id}" has seq ${e.seq} but the log is ${this.length} long`);this.ops.push(hn(e))}static from(e,t=[],r={}){let o=new n,i=[...t].reverse().find(d=>d.horizon),s=r.horizon??i?.seq??0;if(!Number.isInteger(s)||s<0)throw new Error(`A log cannot begin at seq ${s}`);if(i&&r.horizon!==void 0&&i.seq!==r.horizon)throw new Error(`A log said to begin at seq ${r.horizon} has its checkpoint at seq ${i.seq}`);let a=e[0];if(a&&s>0&&a.seq!==s)throw new Error(`A log compacted at seq ${s} begins with op "${a.id}" at seq ${a.seq}`);o.start=s;for(let d of e)o.append(d);for(let d of t)o.markEpoch(d);return o}replace(e,t=[],r={}){let o=n.from(e,t,r);this.ops=o.ops,this.marks=o.marks,this.start=o.start}epochs(){return this.marks}lastEpoch(){return this.marks.at(-1)}markEpoch(e){if(!Number.isInteger(e.seq)||e.seq<0||e.seq>this.length)throw new Error(`An epoch at seq ${e.seq} starts past the end of a log ${this.length} long`);if(e.seq<this.start)throw new Error(`An epoch at seq ${e.seq} is behind the horizon at seq ${this.start}: it went to the archive with the ops before it`);let t=this.lastEpoch();if(t&&e.seq<t.seq)throw new Error(`An epoch at seq ${e.seq} comes before the last one, at seq ${t.seq}`);this.marks.push(e)}truncate(e){if(!Number.isInteger(e)||e<this.start||e>this.length)throw new Error(`Cannot cut a log ${this.length} long back to ${e}`);let t=this.lastEpoch();if(t&&t.seq>e)throw new Error(`Cannot cut the log back to ${e}: an epoch begins at seq ${t.seq}`);return this.ops.splice(e-this.start)}checkpointAt(e,t,r={}){if(!Number.isInteger(t)||t<this.start||t>this.length)throw new Error(`No checkpoint at seq ${t}: this log holds seqs ${this.start} to ${this.length}`);let o=[...this.marks].reverse().find(a=>a.seq<=t);if(o?.seq===t)return{...o,horizon:!0};let i=this.fold(e,{...r,...o?{from:o}:{},to:t}).snapshot(),s=this.ops[t-1-this.start]?.at??o?.at;return{seq:t,base:i,...o?.version!==void 0?{version:o.version}:{},...s!==void 0?{at:s}:{},horizon:!0}}compact(e){if(!Number.isInteger(e.seq)||e.seq<this.start||e.seq>this.length)throw new Error(`Cannot compact at seq ${e.seq}: this log holds seqs ${this.start} to ${this.length}`);let t=this.ops.slice(0,e.seq-this.start),r=this.marks.filter(o=>o.seq<e.seq);return this.ops=this.ops.slice(e.seq-this.start),this.marks=[{...e,horizon:!0},...this.marks.filter(o=>o.seq>e.seq)],this.start=e.seq,{ops:t,epochs:r}}get(e){return this.ops.find(t=>t.id===e)}live(){let e=this.undoneIds();return this.ops.filter(t=>!e.has(t.id))}undoneIds(){return Me(this.ops)}opsInBatch(e){return this.ops.filter(t=>t.batch===e)}batches(){return Nr(this.ops,this.undoneIds())}fold(e,t={}){let r=t.from?.seq??0;if(r<this.start)throw new Error(t.from?`An epoch at seq ${r} is behind the horizon at seq ${this.start}: fold from the checkpoint`:`A log compacted at seq ${this.start} does not fold from empty: fold from its checkpoint`);let o=t.from?.base??{nodes:[],edges:[]},i=W.from(e,o,t.validate!==void 0?{validate:t.validate}:{}),s=t.to??this.length;for(let a of this.ops.slice(r-this.start,Math.max(0,s-this.start)))bu(i,a);return i}toJSON(){return[...this.ops]}};function bu(n,e){if(e.undoes!==void 0){n.applyPrimitives(e.primitives,{restoring:!0});return}try{n.applyPrimitives(e.primitives)}catch{n.applyPrimitives(e.primitives,{restoring:!0})}}function Me(n){let e=new Map;for(let r of n){if(!r.undoes)continue;let o=e.get(r.undoes);o?o.push(r.id):e.set(r.undoes,[r.id])}let t=new Map;for(let r=n.length-1;r>=0;r--){let o=n[r],i=e.get(o.id)??[];t.set(o.id,!i.some(s=>t.get(s)===!0))}return new Set(n.filter(r=>t.get(r.id)===!1).map(r=>r.id))}function Nr(n,e){let t=[],r=new Map;for(let o of n){let i=r.get(o.batch);i?i.push(o):(r.set(o.batch,[o]),t.push(o.batch))}return t.map(o=>{let i=r.get(o)??[],s=i[0];return{id:o,author:s.author,intent:s.batchIntent??s.intent,at:s.at,...s.lineage?{lineage:s.lineage}:{},ops:i,undone:i.every(a=>e.has(a.id))}})}function Ir(n){return n?.automated===!0&&n.kind!=="human"&&n.kind!=="rule"}var Xs=n=>n?.[Mn]===!0,vu=(n,e)=>Xs(("graph"in n?n.graph:n).getNode(e));function Js(n,e,t){let r=n.tryDefinition(e);return t===void 0?r?.tidying:r?.edges?.[t]?.tidying}var Qs=n=>JSON.stringify(n.map(e=>[e.name,e.args]),(e,t)=>t&&typeof t=="object"&&!Array.isArray(t)?Object.fromEntries(Object.entries(t).sort()):t);function ea(n,e){let t=xu(n);return[e,...e.map(r=>[r])].map(r=>t.get(Qs(r))).find(Boolean)}function xu(n){let e=Me(n),t=new Map(n.map(o=>[o.id,o])),r=new Map;for(let o of n){let i=o.undoes!==void 0&&!e.has(o.id)&&!o.withheld?t.get(o.undoes):void 0,s=i?.suggests??(i?.mutation&&(i.lineage||o.undoneLineage)?[i.mutation]:[]);if(s.length>0)for(let a of[s,...s.map(d=>[d])])r.set(Qs(a),o)}return r}function na(n,e,t,r,o={}){let i=o.declaration!==!1,s=(a,d)=>`${r} may not ${a}: ${d}.`;for(let a of t){let d="edge"in a?a.edge:void 0,f=(d?[d.from,d.to]:["id"in a?a.id:a.node.id]).map(c=>e.getNode(c)??("node"in a?a.node:void 0));for(let c of f){if(!c)continue;if(Xs(c))return s(`change \u201C${F(n.tryDefinition(c.kind),c)}\u201D`,"a person said to leave it alone");if(!i)continue;let p=Js(n,c.kind);if(p==="never")return s(`change ${ne(n,c.kind)} on its own`,"the app says they are never tidied");if(d&&p==="no-links")return s(`link or unlink ${ne(n,c.kind)} on its own`,"the app says they are never linked automatically")}if(d&&i&&f[0]&&Js(n,f[0].kind,d.kind)==="never")return s(`${a.op==="add-edge"?"make":"break"} a \u201C${d.kind}\u201D link on its own`,"the app says that relation is never tidied")}}function wu(n,e){if(!e||n.length===0)return null;let t=e.roles,r=o=>t?o.wouldNeed.some(i=>t.includes(i)):o.wouldNeed.length>0;return n.every(({refusal:o})=>r(o))?e:null}var vt={scene:0,overview:10,rail:20,popover:30,dialog:40,toast:50},ku={plots:0,stage:1,tag:2,ties:2,lines:3,tieLabels:4,occupants:6,seatMarks:7,zoom:8,card:10,opened:11},Su={under:0,raised:1,over:2},jr=n=>`--graview-layer-${n}`,$u=n=>`var(${jr(n)}, ${vt[n]})`;function Ru(){return Object.keys(vt).map(n=>` ${jr(n)}: ${vt[n]};`).join(`
4
+ `)}function _u(n){let e=n.onBehalfOf??n;return{kind:e.kind,...e.id!==void 0?{id:e.id}:{},...e.name!==void 0?{name:e.name}:{},...e.roles!==void 0?{roles:e.roles}:{}}}function ta(){return`sub_${(globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}${Math.random().toString(36).slice(2)}`).replace(/-/g,"").slice(0,20)}`}function ra(n){return{...n,id:n.id??ta(),at:n.at??new Date().toISOString()}}function Au(n=[]){let e=[...n],t=new Set,r=()=>{for(let o of t)o()};return{list:o=>o===void 0?e:e.filter(i=>i.who.id===o),add(o){let i=ra(o);return e=[...e.filter(s=>s.id!==i.id),i],r(),i},remove(o){let i=e.length;e=e.filter(a=>a.id!==o);let s=e.length<i;return s&&r(),s},onChange(o){return t.add(o),()=>t.delete(o)}}}var Tr=(n,e)=>`${n}\0${e}`,oa=new WeakMap;function Ou(n,e){let t=new Map;for(let[o,i]of Object.entries(e??{}))for(let[s,a]of Object.entries(i))t.set(Tr(o,s),[{seq:n-1,by:a}]);return{base:n,end:n,read:[],fields:t,written:[],seqOf:new Map,writers:{writerAt:(o,i,s)=>{let a=t.get(Tr(o,i));if(!a)return;let d=0,f=a.length;for(;d<f;){let c=d+f>>1;a[c].seq<s?d=c+1:f=c}return d===0?void 0:a[d-1].by}}}}function Eu(n){if(n.op==="add-node")return[n.node.id,Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind")];if(n.op==="patch-node")return[n.id,Object.keys(n.after).filter(e=>!Fe(n.after[e]))]}function Pu(n,e){let t=n.end,r=T(e.author).id,o=e.undoes!==void 0?n.seqOf.get(e.undoes):void 0,i=[];for(let s of e.primitives){let a=Eu(s);if(!a)continue;let[d,f]=a;for(let c of f){let p=e.undoes===void 0?r:o!==void 0?n.writers.writerAt(d,c,o):void 0,u=Tr(d,c),l=n.fields.get(u);l||n.fields.set(u,l=[]),l.push({seq:t,by:p}),i.push(u)}}n.written.push({seq:t,keys:i}),n.seqOf.set(e.id,t),n.read.push(e),n.end++}function zu(n,e){for(;n.written.length>0&&n.written.at(-1).seq>=e;){let{keys:t}=n.written.pop();for(let r of t)n.fields.get(r)?.pop()}for(let t of n.read.slice(e-n.base))n.seqOf.delete(t.id);n.read.length=e-n.base,n.end=e}function Dn(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=oa.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&zu(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||oa.set(n,o=Ou(r,r>0?[...n.epochs?.()??[]].reverse().find(i=>i.horizon)?.writers:void 0));for(let i=o.end;i<t;i++)Pu(o,e[i-r]);return o.writers}function ia(n,e,t,r){let o=Dn(n),i={};for(let s of t)for(let a in s){if(!Object.hasOwn(s,a)||a==="id"||a==="kind"||!r(s[a]))continue;let d=o.writerAt(s.id,a,e);d!==void 0&&((i[s.id]??={})[a]=d)}return i}var Ne={served:new WeakSet},Fn=n=>n.fields!==void 0||(n.hide?.length??0)>0,we=n=>Ne.on===!0||Ne.served.has(n);var Dr=new WeakMap;function Mu(n,e){let t=new Map(Object.entries(e?.removed??{})),r=new Map(Object.entries(e?.creators??{})),o=n===0||e?.removed!==void 0;return{base:n,end:n,read:[],kinds:t,creators:r,entries:[],records:{kindOf:i=>t.get(i),creatorOf:i=>r.get(i),knowsAll:o}}}function Nu(n,e){let t=n.end;for(let r of e.primitives){if(r.op!=="add-node"&&r.op!=="remove-node")continue;let{id:o,kind:i}=r.node;if(n.kinds.has(o)||(n.kinds.set(o,i),n.entries.push({seq:t,id:o,creator:!1})),r.op!=="add-node"||n.creators.has(o)||e.undoes!==void 0)continue;let s=T(e.author).id;s!==void 0&&(n.creators.set(o,s),n.entries.push({seq:t,id:o,creator:!0}))}n.read.push(e),n.end++}function Iu(n,e){for(;n.entries.length>0&&n.entries.at(-1).seq>=e;){let t=n.entries.pop();(t.creator?n.creators:n.kinds).delete(t.id)}n.read.length=e-n.base,n.end=e}function oe(n){let e=n.all(),t=typeof n.length=="number"?n.length:e.length,r=t-e.length,o=Dr.get(n);if(o&&o.base<=r&&r<=o.end){let i=Math.min(o.end,t);for(;i>r&&e[i-1-r]!==o.read[i-1-o.base];)i--;i===r&&r>o.base&&i<o.end?o=void 0:(i<o.end&&Iu(o,i),r>o.base&&(o.read=o.read.slice(r-o.base),o.base=r))}else o=void 0;o||Dr.set(n,o=Mu(r,r>0?ju(n,r):void 0));for(let i=o.end;i<t;i++)Nu(o,e[i-r]);return o.records}function ju(n,e){let t=[...n.epochs?.()??[]].reverse().find(r=>r.horizon);return t?.seq===e?t:void 0}function sa(n,e,t){oe(n);let r=Dr.get(n),o=[new Set,new Set];for(let a=r.entries.length-1;a>=0&&r.entries[a].seq>=e;a--)o[+r.entries[a].creator].add(r.entries[a].id);let i={},s={};for(let[a,d]of r.creators)o[1].has(a)||(i[a]=d);for(let[a,d]of r.kinds)!o[0].has(a)&&!t(a)&&(s[a]=d);return r.records.knowsAll?{creators:i,removed:s}:{creators:i}}function rn(n,e,t,r,o,i=Ne.on===!0){if(!n?.sees?.length||q(e))return!0;let s=n.sees.filter(a=>a.kinds.includes(t.kind)&&(i||!Fn(a)));return s.length===0?!1:(e=T(e),s.some(a=>{if(!ve(a,e))return!1;if(!a.own&&!a.via)return!0;let d=e.id;if(d===void 0)return!1;let f=c=>c.id===d;return a.via?r.out(t.id,a.via).some(f)||r.in(t.id,a.via).some(f):t.id===d||r.out(t.id).some(f)||r.in(t.id).some(f)||o?.creatorOf(t.id)===d}))}var Zr=new Set;function xt(n,e){return q(e)?Zr:n.modules?.disabledKinds??Zr}function on(n,e){return q(e)?!1:(n.policy?.sees?.length??0)>0||xt(n,e).size>0}function ua(n,e){if(!on(n,e))return()=>!0;let t=n.modules?.disabledKinds??Zr,r=n.policy?.sees??[],o=T(e),i=we(n),s=d=>!t.has(d)&&(r.length===0||r.some(f=>f.kinds.includes(d)&&ve(f,o)&&!f.own&&!f.via&&(i||!Fn(f)))),a=n.schema.kinds.every(s);return d=>a||d!==void 0&&s(d)}function Zn(n,e){return t=>{let r=xt(n,e);if(!n.policy?.sees?.length&&r.size===0)return!0;let o=oe(n.log),i=n.graph.getNode(t);if(i)return!r.has(i.kind)&&rn(n.policy,e,i,n.graph,o,we(n));let s=o.kindOf(t)??la(n,o,t);return s===void 0?!0:!r.has(s)&&rn(n.policy,e,{id:t,kind:s},{out:()=>[],in:()=>[]},o,we(n))}}var Tu={out:()=>[],in:()=>[]};function la(n,e,t){if(e.knowsAll||Ne.served.has(n))return;let r=t.indexOf(":");if(r<=0)return;let o=t.slice(0,r);return n.schema?.tryDefinition(o)?o:void 0}function Du(n,e,t=new Map,r){let o=xt(n,e);if(!n.policy?.sees?.length&&o.size===0)return()=>!0;let i=oe(n.log);return s=>{let a=t.get(s);if(a!==void 0)return a;let d,f=n.graph.getNode(s);if(f)d=!o.has(f.kind)&&rn(n.policy,e,f,n.graph,i,we(n));else{let c=i.kindOf(s)??la(n,i,s);if(c===void 0)return r?.add(s),!0;d=!o.has(c)&&rn(n.policy,e,{id:s,kind:c},Tu,i,we(n))}return t.set(s,d),d}}function Fu(n){let e=new Map;return(t,r)=>{let o=`${t}\0${r}`,i=e.get(o);if(i===void 0){let s=n?.tryDefinition(t)?.fields?.shape,a=s?.[r];i=s!==void 0&&(a===void 0||a.safeParse?.(void 0).success===!0),e.set(o,i)}return i}}function Cr(n,e){return fa(n,e).lens}var Lr=()=>({judged:new Map,shown:new Map});function fa(n,e){let t=Fu(n.schema),r=q(e)?void 0:T(e).id,o=()=>n.log.length??n.log.all().length,i=new WeakMap,s=n.graph,a=(c,p,u,l,g)=>{let h=(v,$)=>{if(!c(v.id))return;let R;for(let L in v)if(!(!Object.hasOwn(v,L)||L==="id"||L==="kind"||!j(v[L],c))&&!(r!==void 0&&$(L)===r)){if(!t(v.kind,L))return;(R??=[]).push(L)}if(!R)return v;let _=R.join("\0"),P=i.get(v);if(P?.without===_)return P.node;let E=Object.fromEntries(Object.entries(v).filter(([L])=>!R.includes(L)));return i.set(v,{without:_,node:E}),E},b=v=>{let $=u();return h(v,R=>p().writerAt(v.id,R,$))},y=new WeakMap,S=g?v=>{let $=y.get(v);return $||y.set(v,$={node:b(v)}),$.node}:b,A=v=>{if(!c(v))return!1;let $=s.getNode(v);return $===void 0||S($)!==void 0},m=g?.shown??new Map,k=g?v=>{let $=m.get(v);return $===void 0&&m.set(v,$=A(v)),$}:A,w=s.outEdges&&s.inEdges?{present:{getNode:v=>s.getNode(v),outEdges:v=>s.outEdges(v),inEdges:v=>s.inEdges(v)},log:n.log,get writers(){return p()}}:void 0,x={sees:c,shows:k,served:S,servedWith:h,optional:t,kindOf:l,...r!==void 0?{actor:r}:{},...w?{timeline:w}:{},hides:()=>on(n,e),pin:g?()=>x:()=>d(Lr())};return Ne.lens?.(x,n,e)??x};function d(c){let p,u=o(),l=oe(n.log);return a(Du(n,e,c.judged,c.unnamed),()=>p??=Dn(n.log),()=>u,g=>s.getNode(g)?.kind??l.kindOf(g),c)}return{lens:a(Zn(n,e),()=>Dn(n.log),o,c=>s.getNode(c)?.kind??oe(n.log).kindOf(c)),pinWith:d}}var aa=new WeakMap,da=new WeakMap,Zu=n=>{let e=new Set;for(let t of n)for(let r of t.primitives)r.op==="add-node"||r.op==="remove-node"?e.add(r.node.id):r.op==="patch-node"?e.add(r.id):(e.add(r.edge.from),e.add(r.edge.to));return e};function Lu(n,e){if(!on(n,e))return n.log.all();let t=n.log.all(),r=n.log.length??t.length,o=r-t.length,i=[...xt(n,e)].sort().join("\0"),s=pa(e),a=aa.get(n.log);a||aa.set(n.log,a=new Map);let d=a.get(s),{pinWith:f}=fa(n,e),c=da.get(n.log);c||da.set(n.log,c=new Set);let p=d!==void 0&&d.horizon===o&&d.off===i&&d.length<=r&&(d.length===o||t[d.length-1-o]===d.last);if(d&&p){if(d.length===r)return d.ops;let g=t.slice(d.length-o),h=f(Lr()),b=!0,y=Zu(g);for(let S of y){let A=d.judgments.judged.get(S),m=d.judgments.shown.get(S);if(A!==void 0&&h.sees(S)!==A||m!==void 0&&h.shows(S)!==m){b=!1;break}}if(b){for(let S of y)if(c.has(S)){b=!1;break}}if(b){let S=[...d.ops,...nn(g,f(d.judgments))],A={horizon:o,off:i,length:r,last:t.at(-1),ops:S,judgments:d.judgments};return a.set(s,A),S}}let u={...Lr(),unnamed:c},l=nn(t,f(u));return a.set(s,{horizon:o,off:i,length:r,last:t.at(-1),ops:l,judgments:u}),l}function Cu(n,e,t){return(t.subjectId===void 0||!e(t.subjectId)||n.shows(t.subjectId))&&t.nodeIds.every(r=>!e(r)||n.shows(r))&&!j(t,n.sees)}function Gr(n,e){return{all:()=>n,undoneIds:()=>Me(n),epochs:e}}var ca=new WeakMap;function pa(n){let e=q(n)?n:T(n);return`${n.kind}|${e.id??""}|${(e.roles??[]).join(",")}|${n.onBehalfOf?"for":""}`}var Fr=(n,e)=>{let t=Reflect.get(n,e,n);return typeof t=="function"?t.bind(n):t},Gu=Symbol.for("@graview/core:seat");function Ln(n,e){if(!on(n,e))return n;let t=pa(e),r=ca.get(n);r||ca.set(n,r=new Map);let o=r.get(t);if(o)return o;let i=n.graph,s=Cr(n,e),a=m=>{let k=R=>R===void 0?void 0:m.served(R),w=R=>k(R)!==void 0,x=R=>w(i.getNode(R));return{served:k,seenNode:w,seenId:x,seenEdge:R=>x(R.from)&&x(R.to)&&!j(R,m.sees),servedAll:R=>R.flatMap(_=>k(_)??[])}},{served:d,seenId:f}=a(s),c=()=>a(s.pin?.()??s),p=(m,k)=>{let w=Dn(n.log),x=s.pin?.()??s,v=m.nodes.flatMap(R=>x.servedWith(R,_=>w.writerAt(R.id,_,k))??[]),$=new Set(v.map(R=>R.id));return{nodes:v,edges:m.edges.filter(R=>$.has(R.from)&&$.has(R.to)&&!j(R,x.sees))}},u=m=>{let{removed:k,writers:w,...x}=m,v=p(m.base,m.seq);if(!m.creators)return{...x,base:v};let $=new Set(v.nodes.map(_=>_.id)),R=Object.fromEntries(Object.entries(m.creators).filter(([_,P])=>$.has(_)&&!j(P,s.sees)));return{...x,base:v,creators:R}},l=m=>m&&u(m),g=()=>Lu(n,e),h=()=>Gr(g(),()=>n.log.epochs()),b=new Proxy(i,{get(m,k){switch(k){case"getNode":return w=>d(m.getNode(w));case"has":return f;case"allNodes":case"nodesOfKind":return(...w)=>c().servedAll(m[k](...w));case"count":return(...w)=>c().servedAll(m.nodesOfKind(...w)).length;case"allEdges":case"edgesOfKind":case"outEdges":case"inEdges":return(...w)=>m[k](...w).filter(c().seenEdge);case"out":case"in":case"neighbors":return(w,...x)=>{let v=c();return v.seenId(w)?v.servedAll(m[k](w,...x)):[]};case"snapshot":return()=>{let w=m.snapshot(),x=c();return{...w,nodes:x.servedAll(w.nodes),edges:w.edges.filter(x.seenEdge)}};case"size":{let w=c();return{nodes:w.servedAll(m.allNodes({archived:"all"})).length,edges:m.allEdges({archived:"all"}).filter(w.seenEdge).length}}default:return Fr(m,k)}}}),y=()=>{let m=g();return Nr(m,Me(m))},S=new Proxy(n.log,{get(m,k){switch(k){case"all":case"toJSON":return()=>[...g()];case"epochs":return()=>m.epochs().map(u);case"lastEpoch":return()=>l(m.lastEpoch());case"live":return()=>{let w=g(),x=Me(w);return w.filter(v=>!x.has(v.id))};case"get":return w=>g().find(x=>x.id===w);case"opsInBatch":return w=>g().filter(x=>x.batch===w);case"batches":return y;default:return Fr(m,k)}}}),A=new Proxy(n,{get(m,k){switch(k){case Gu:return{store:m,principal:e};case"graph":return b;case"log":return S;case"snapshot":return b.snapshot;case"batches":return y;case"canUndo":return w=>Tn(h(),typeof w=="string"?[w]:w);case"violations":return w=>m.violations(w,b).filter(x=>Cu(s,v=>i.has(v),x));case"findings":return()=>m.findings().filter(w=>(w.id.includes("->")?w.id.split("->").map((v,$)=>$===0?v.slice(v.indexOf(":")+1):v):[w.id]).every(v=>!i.has(v)||f(v))&&!j(w,s.sees));case"wouldChange":return w=>m.wouldChange(w,e);case"preview":return(w,x,v)=>m.preview(w,x,{author:e,...v});case"seenBy":return w=>Ln(m,w);case"seenFor":return e;case"checkpoint":return w=>l(m.checkpoint(w));default:return Fr(m,k)}}});return r.set(t,A),A}var Br=new Set;function Kr(n,e){if(!n||e===void 0)return{enabled:new Set(Object.keys(n??{})),disabledKinds:Br,disabledMutations:Br,disabledInvariants:Br,administered:ha(n,new Set(Object.keys(n??{})))};let t=new Set,r=a=>{if(!(t.has(a)||!(a in n))){t.add(a);for(let d of n[a]?.requires??[])r(d)}};for(let a of e)r(a);for(let[a,d]of Object.entries(n))d.required&&r(a);let o=new Set,i=new Set,s=new Set;for(let[a,d]of Object.entries(n))if(!t.has(a)){for(let f of d.kinds??[])o.add(f);for(let f of d.mutations??[])i.add(f);for(let f of d.invariants??[])s.add(f)}for(let a of t){let d=n[a];for(let f of d?.kinds??[])o.delete(f);for(let f of d?.mutations??[])i.delete(f);for(let f of d?.invariants??[])s.delete(f)}return{enabled:t,disabledKinds:o,disabledMutations:i,disabledInvariants:s,administered:ha(n,t)}}function ha(n,e){let t=new Map;for(let[r,o]of Object.entries(n??{}))e.has(r)&&o.visibility==="admin"&&t.set(r,o);return t}function ga(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().trim().replace(/\s+/g," ")}var wt=class{constructor(e){this.graph=e;for(let t of e.allNodes({archived:"all"}))this.file(t);e.subscribe(t=>this.follow(t))}kinds=new Map;filed=new Map;labelOf(e){return this.filed.get(e)?.label}lookup(e,t){let r=ga(t);if(r.length===0)return{exact:[],prefix:[]};let o=e.includes("*")?[...this.kinds.values()]:e.flatMap(a=>this.kinds.get(a)??[]),i=[],s=[];for(let a of o)for(let d=Vr(a.sorted,r);d<a.sorted.length&&a.sorted[d].startsWith(r);d+=1){let f=[...a.ids.get(a.sorted[d])??[]];s.push(...f),a.sorted[d]===r&&i.push(...f)}return{exact:i,prefix:s}}follow(e){for(let t of e.removedNodes)this.unfile(t.id);for(let t of e.changedNodes)this.unfile(t.after.id),this.file(t.after);for(let t of e.addedNodes)this.file(t)}file(e){let t=F(this.graph.schema.tryDefinition(e.kind),e),r=ga(t);this.filed.set(e.id,{kind:e.kind,key:r,label:t});let o=this.kinds.get(e.kind);o||this.kinds.set(e.kind,o={ids:new Map,sorted:[]});let i=o.ids.get(r);i?i.add(e.id):(o.ids.set(r,new Set([e.id])),o.sorted.splice(Vr(o.sorted,r),0,r))}unfile(e){let t=this.filed.get(e);if(!t)return;this.filed.delete(e);let r=this.kinds.get(t.kind),o=r?.ids.get(t.key);if(!r||!o||(o.delete(e),o.size>0))return;r.ids.delete(t.key);let i=Vr(r.sorted,t.key);r.sorted[i]===t.key&&r.sorted.splice(i,1)}};function Vr(n,e){let t=0,r=n.length;for(;t<r;){let o=t+r>>>1;n[o]<e?t=o+1:r=o}return t}function Bu(n,e){return e.includes("*")?"record":e.map(t=>K(n.tryDefinition(t),t)).join(" or ")}function ma(n,e,t,r){let o=Bu(n,e.kinds);if(r.length===0)return{ok:!1,reason:"none",candidates:r,message:`There is no ${o} called "${t}".`};let i=r.slice(0,10).map(a=>`${a.label} (${a.id})`),s=r.length>i.length?`, and ${r.length-i.length} more`:"";return{ok:!1,reason:"ambiguous",candidates:r,message:`"${t}" names more than one ${o}: ${i.join(", ")}${s}. Pass the id of the one you mean as ${e.name}.`}}var ba=Symbol.for("@graview/core:node-ref"),ya=n=>typeof n=="object"&&n!==null?n[ba]:void 0;function ke(n="*"){return Ku(D().check($n(1)),n)}function Ku(n,e){let t=Object.freeze(e==="*"?["*"]:[...e]),r=o=>{o&&Object.defineProperty(o,ba,{value:t,enumerable:!0,configurable:!0})};return r(n),r(I(n)),n}function Ur(n){if(typeof n!="object"||n===null)return;let e=ya(n);if(e)return e;let t=I(n),r=ya(t);if(r)return r;let o=t?.innerType;return o?Ur(o):void 0}function Cn(n){let e=n.shape;if(!e)return[];let t=[];for(let[r,o]of Object.entries(e)){let i=Ur(o);i&&t.push({name:r,kinds:i,optional:o.safeParse(void 0).success})}return t}function Wr(n){if(n===null||typeof n!="object")return JSON.stringify(n)??"null";if(Array.isArray(n))return`[${n.map(r=>r===void 0?"null":Wr(r)).join(",")}]`;let e=n;return`{${Object.keys(e).filter(r=>e[r]!==void 0).sort().map(r=>`${JSON.stringify(r)}:${Wr(e[r])}`).join(",")}}`}var va=(n,e)=>n.key<e.key?-1:n.key>e.key?1:0;function Vu(n){let e=n.nodes.map(r=>({key:r.id,value:r})).sort(va),t=n.edges.map(r=>({key:z(r),value:{kind:r.kind,from:r.from,to:r.to}})).sort(va);return Wr({nodes:e.map(r=>r.value),edges:t.map(r=>r.value)})}function sn(n){return`sha256:${wa(Vu(n))}`}function xa(n,e,t,r={}){let o=r.validate??!0,i=r.base??{nodes:[],edges:[]},s=sn(t),a=W.from(n,i,{validate:o});for(let[h,b]of e.entries())try{a.applyPrimitives(b.primitives)}catch(y){let S=e[h-1];return{ok:!1,expected:sn(a.snapshot()),actual:s,...S?{divergedAfter:S.id}:{},reason:`The log does not fold: op "${b.id}" (${b.intent}) could not be applied. ${y instanceof Error?y.message:String(y)}`}}let d=sn(a.snapshot());if(d===s)return{ok:!0,hash:s};let f=h=>{let b=W.from(n,i,{validate:o});for(let y=0;y<=h;y++)b.applyPrimitives(e[y].primitives);return sn(b.snapshot())},c=h=>{try{let b=W.from(n,t,{validate:o});for(let y=e.length-1;y>h;y--)b.applyPrimitives(Re(e[y]));return sn(b.snapshot())}catch{return}},p=h=>{let b=c(h);return b!==void 0&&b!==f(h)},u=-1,l=e.length-1;for(;u<l;){let h=Math.floor((u+l)/2);p(h)?l=h:u=h+1}let g=l>=0?e[l]:void 0;return{ok:!1,expected:d,actual:s,...g?{divergedAfter:g.id}:{},reason:g?`The graph and the fold of its log part after op "${g.id}" (${g.intent}).`:"The graph and the fold of its log disagree before any op: the base it folds from does not match."}}var Uu=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Wu=new TextEncoder,qu=new Uint32Array(64),Hu=new Uint32Array(8),kt=Array.from({length:256},(n,e)=>e.toString(16).padStart(2,"0"));function wa(n){let e=Wu.encode(n),t=e.length*8,r=new Uint8Array(e.length+9+63>>6<<6);r.set(e),r[e.length]=128;let o=new DataView(r.buffer);o.setUint32(r.length-8,Math.floor(t/2**32)),o.setUint32(r.length-4,t>>>0);let i=Hu;i[0]=1779033703,i[1]=3144134277,i[2]=1013904242,i[3]=2773480762,i[4]=1359893119,i[5]=2600822924,i[6]=528734635,i[7]=1541459225;let s=qu;for(let d=0;d<r.length;d+=64){for(let y=0;y<16;y++)s[y]=o.getUint32(d+y*4);for(let y=16;y<64;y++){let S=s[y-15],A=s[y-2],m=(S>>>7|S<<25)^(S>>>18|S<<14)^S>>>3,k=(A>>>17|A<<15)^(A>>>19|A<<13)^A>>>10;s[y]=s[y-16]+m+s[y-7]+k>>>0}let f=i[0],c=i[1],p=i[2],u=i[3],l=i[4],g=i[5],h=i[6],b=i[7];for(let y=0;y<64;y++){let S=(l>>>6|l<<26)^(l>>>11|l<<21)^(l>>>25|l<<7),A=l&g^~l&h,m=b+S+A+Uu[y]+s[y]>>>0,k=(f>>>2|f<<30)^(f>>>13|f<<19)^(f>>>22|f<<10),w=f&c^f&p^c&p,x=k+w>>>0;b=h,h=g,g=l,l=u+m>>>0,u=p,p=c,c=f,f=m+x>>>0}i[0]=i[0]+f>>>0,i[1]=i[1]+c>>>0,i[2]=i[2]+p>>>0,i[3]=i[3]+u>>>0,i[4]=i[4]+l>>>0,i[5]=i[5]+g>>>0,i[6]=i[6]+h>>>0,i[7]=i[7]+b>>>0}let a="";for(let d=0;d<8;d++){let f=i[d];a+=kt[f>>>24]+kt[f>>>16&255]+kt[f>>>8&255]+kt[f&255]}return a}var Gn=class{constructor(e){this.inner=e}seen=new Set;reads(){return[...this.seen]}markAll(e){for(let t of e)this.seen.add(t.id);return e}markEdges(e){for(let t of e)this.seen.add(t.from),this.seen.add(t.to);return e}getNode(e){return this.seen.add(e),this.inner.getNode(e)}has(e){return this.seen.add(e),this.inner.has(e)}allNodes(e){return this.markAll(this.inner.allNodes(e))}allEdges(e){return this.markEdges(this.inner.allEdges(e))}nodesOfKind(e,t){return this.markAll(this.inner.nodesOfKind(e,t))}edgesOfKind(e,t){return this.markEdges(this.inner.edgesOfKind(e,t))}out(e,t,r){return this.seen.add(e),this.markAll(this.inner.out(e,t,r))}in(e,t,r){return this.seen.add(e),this.markAll(this.inner.in(e,t,r))}neighbors(e,t){return this.seen.add(e),this.markAll(this.inner.neighbors(e,t))}};function Yu(n,e){return{...e,name:n}}function qr(n){if(!n.creates?.length)return!1;let e=n.input.shape;return e===void 0||!("id"in e)}function Ra(n){let e=n.input,t=e._zod?.def;if(t?.type!=="object"||t.catchall!==void 0||!e.shape)return;let r=Object.keys(e.shape);return qr(n)?[...r,"id"]:r}var ka=(n,e)=>`does not take ${n.map(t=>`"${t}"`).join(", ")}; it takes ${e.length>0?e.map(t=>`"${t}"`).join(", "):"nothing"}`;function Ju(n){if(typeof n!="object"||n===null)return;let e=n.id;if(e!==void 0){if(typeof e!="string"||e.trim().length===0)throw new N("An id must be a non-empty string",`Got ${JSON.stringify(e)}.`);return e}}function Xu(n){let{id:e,...t}=n;return t}function Sa(n){return n.normalize("NFKD").replace(/\p{M}/gu,"").toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")||"item"}function _a(n){let e=2166136261;for(let t=0;t<n.length;t++)e=Math.imul(e^n.charCodeAt(t),16777619);return(e>>>0).toString(36).padStart(7,"0")}function Qu(n,e){if(e.limited&&e.me===void 0)return $a(n,e.held);let t=e.limited?`${n}.${_a(e.me)}`:n,r=t;for(let o=2;e.seen(r);o++)r=`${t}-${o}`;return e.held(r)?$a(t,e.held):r}function $a(n,e){let t;do t=`${n}-${Math.floor(Math.random()*36**6).toString(36).padStart(6,"0")}`;while(e(t));return t}function an(n,e,t,r={}){let o=qr(e)?Ju(t):void 0,i=o===void 0?t:Xu(t),s=Ra(e);if(s&&typeof i=="object"&&i!==null&&!Array.isArray(i)){let m=Object.keys(i).filter(k=>!s.includes(k)&&i[k]!==void 0);if(m.length>0)throw new re(e.name,[{path:[],message:ka(m,s)}])}let a=e.input.safeParse(i);if(!a.success){let m=Object.keys(e.input.shape??{});throw new re(e.name,a.error.issues.map(k=>k.code==="unrecognized_keys"&&m.length>0?{...k,message:ka(k.keys,m)}:k))}let d=a.data,f=new Gn(r.seen??n),c=[],p=new Set,u=m=>f.has(m)||n.has(m)||p.has(m),l,g=m=>{let k=new Set([...n.outEdges(m),...n.inEdges(m)]);for(let w of k)f.getNode(w.from),f.getNode(w.to),c.push({op:"remove-edge",edge:w});return k},h={graph:f,schema:n.schema,me:r.me,emit(m){c.push(m)},addNode(m){c.push({op:"add-node",node:m})},removeNode(m){let k=f.getNode(m)&&n.getNode(m);if(!k)throw new B(m,`Cannot remove missing node "${m}"`);g(m),c.push({op:"remove-node",node:k})},patchNode(m,k){let w=f.getNode(m)&&n.getNode(m);if(!w)throw new B(m,`Cannot patch missing node "${m}"`);let x={},v={};for(let[$,R]of Object.entries(k)){let _=w[$];JSON.stringify(_)===JSON.stringify(R)&&!r.keepUnchanged?.(R,$,w)||(x[$]=_,v[$]=R)}Object.keys(v).length!==0&&c.push({op:"patch-node",id:m,before:x,after:v})},archiveNode:m=>h.patchNode(m,{[Je]:!0}),unarchiveNode:m=>h.patchNode(m,{[Je]:void 0}),mergeNode(m,k){let w=f.getNode(k)&&n.getNode(k);if(!w)throw new B(k,`Cannot merge into missing node "${k}"`);if(m===k||Ee(w))throw new N(m===k?"Cannot merge a record into itself":"Cannot merge into an archived record");let x=new Set([...n.outEdges(k),...n.inEdges(k)].map(z));for(let v of g(m)){let $={kind:v.kind,from:v.from===m?k:v.from,to:v.to===m?k:v.to};$.from!==$.to&&!x.has(z($))&&(x.add(z($)),c.push({op:"add-edge",edge:$}))}h.archiveNode(m),l=k},addEdge(m){c.push({op:"add-edge",edge:m})},removeEdge(m){c.push({op:"remove-edge",edge:m})},setSingleSource(m,k,w){n.inEdges(k,m).some(x=>x.from===w)||c.push({op:"add-edge",edge:{kind:m,from:w,to:k}});for(let x of n.inEdges(k,m))f.getNode(x.from),x.from!==w&&c.push({op:"remove-edge",edge:x})},freshId(m,k){if(o!==void 0&&!p.has(o)){if(r.seesInFull&&!r.seesInFull())throw new N(`"${e.name}" makes its own id here`,"Leave id out: the answer says the id it made.");if(u(o))throw new N(`Id "${o}" is already taken`,`"${e.name}" was asked to make a node with that id, and the graph has one. Pick another, or leave id out and let the act mint one.`);return p.add(o),o}let w=k?`${k}:${Sa(m)}`:Sa(m),v=Qu(w,{seen:$=>(r.seen?r.seen.has($):n.has($))||p.has($),held:u,limited:r.seesInFull!==void 0&&!r.seesInFull(k),me:r.me});return p.add(v),v}};e.apply(h,d);let b=r.check?.(c,e),y=new Set(c.flatMap($e)),S=new Gn(r.seen??n),A=e.describe?.(d,S)??`${e.name}(${Object.entries(d).map(([m,k])=>`${m}=${JSON.stringify(k)}`).join(", ")})`;return{primitives:c,reads:[...new Set([...f.reads(),...S.reads()])],...e.describe?{described:[...S.reads(),...b??[]]}:{},writes:[...y],intent:A,...l!==void 0?{mergedInto:l}:{}}}var Aa=Symbol.for("@graview/core:amount"),Yb=(n,e)=>(Object.defineProperty(I(n),Aa,{value:e,enumerable:!0}),n);function Hr(n,e=!0){let t=I(n);return t?.[Aa]??(e&&t?.innerType?Hr(t.innerType):void 0)}function Oa(n,e={}){let t=Number.isInteger(n),r={maximumFractionDigits:t?0:2,minimumFractionDigits:t?0:2};try{return se(n,e.locale,e.currency?{style:"currency",currency:e.currency,...r}:r)}catch{return se(n,e.locale,r)}}function Ea(n,{format:e,unit:t,currency:r,locale:o}){let i=/^[A-Z]{3}$/.test(t??"");return e==="money"||!e&&i?Oa(n,{...o?{locale:o}:{},...(i?t:r)?{currency:i?t:r}:{}}):e==="percent"?se(n,o,{style:"percent",maximumFractionDigits:0}):se(n,o)+(t?` ${t}`:"")}var el=Symbol.for("@graview/core:typed-field");function Yr(n){let e=I(n);return e?e[el]??Yr(e.innerType):void 0}var nl=/^[("'“‘]*(?:(?:[a-z]{1,3}\.){2,}|(?:dr|mr|mrs|ms|mx|st|mt|vs|jr|sr|prof|no|fig|approx)\.)$/i;function tl(n){for(let e of n.matchAll(/[.!?](?=\s|$)/g)){let t=n.slice(0,e.index+1),r=/\S+$/.exec(t)?.[0]??"";if(!(e[0]==="."&&nl.test(r))&&!(t.split(" ").length<3&&e.index+1<n.length))return t}}function Pa(n,e=140){let t=n.replace(/^[#>\s]+|\*\*|`|\](\([^)\s]*\))?|\[/gm,"").replace(/\s+/g," ").trim(),r=tl(t);return r&&r.length<=e?r:t.length<=e?t:`${(t.slice(0,e+1).replace(/\s+\S*$/,"")||t.slice(0,e)).replace(/[\s,;:.—-]+$/,"")}\u2026`}function rl(n){let e=n.fields.shape;return Object.keys(e).flatMap(t=>{let r=pt(e[t])?Pn(t):void 0;return r&&e[r]?[r]:[]})}var ol=[["skip","Skip this one","Leave one day out of the series; the rest stay as they are.","Skip {} on "],["detach","Change just this one","Make one day of the series a record of its own, to change apart from the rest.","Change {} only on "],["split","Change from here","End the series the day before, and start it again from that day with what changes.","Change {} from "]];function za(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=rl(o);if(i.length===0)continue;let s=o.kind,a=o.fields.shape,d=Object.keys(a).filter(c=>!(c in(o.fixed??{}))),f=c=>F(o,c);for(let[c,p,u,l]of ol){let g=`${c}-${s}`;t.has(g)||r.push({name:g,derived:{kind:s,act:c},title:p,description:u,subject:{kinds:[s],arg:"id"},writes:i.map(He),...c==="skip"?{}:{creates:[s]},input:We({id:ke([s]),on:D().check(Rn(/^\d{4}-\d{2}-\d{2}$/,"a day, like 2026-10-21")),...i.length>1?{field:Q(ls(i))}:{},...c==="skip"?{}:Object.fromEntries(d.map(h=>[h,Q(a[h])]))}),describe:(h,b)=>l.replace("{}",f(b.getNode(String(h.id))??{id:h.id}))+ge(String(h.on)),apply(h,b){let y=h.graph.getNode(String(b.id)),S=String(b.field??i[0]),A=y?.[S],m=y?.[He(S)],k=String(b.on);if(typeof A!="string"||!Ye(m))throw new ee(`${f(y??{id:b.id})} does not repeat`,"refused");let w=qe(A,m,{from:k,to:k})[0];if(!w)throw new ee(`${f(y)} does not fall on ${ge(k)}`,"refused");let x=String(y.id),v=Object.fromEntries(d.filter(Y=>b[Y]!==void 0).map(Y=>[Y,b[Y]])),$=He(S),R=Y=>{let Ao=Object.fromEntries(Object.entries({...y,...Y,...v}).filter(([Hn,Dt])=>Dt!=null&&Hn!=="id")),Oo=h.freshId(f(Ao));h.addNode({...Ao,id:Oo,kind:s});for(let Hn of Object.keys(o.edges??{}))for(let Dt of h.graph.out(x,Hn))h.addEdge({kind:Hn,from:Oo,to:Dt.id})};if(c!=="split"){h.patchNode(x,{[$]:{...m,except:[...new Set([...m.except??[],k])].sort()}}),c==="detach"&&R({[S]:w,[$]:null});return}if(Object.keys(v).length===0)throw new ee(`Nothing to change: give ${f(y)} from ${ge(k)} something new`,"invalid");if(k<=A.slice(0,10))return h.patchNode(x,v);let _=new Date(Date.parse(`${k}T00:00:00Z`)-864e5).toISOString().slice(0,10),P=m.count?qe(A,{...m,except:[]},{to:_}).length:0,{count:E,except:L,...Ro}=m,_o=Y=>L?.some(Y)?{except:L.filter(Y)}:{};h.patchNode(x,{[$]:{...Ro,until:_,..._o(Y=>Y<k),...E?{count:P}:{}}}),R({[S]:w,[$]:{...Ro,..._o(Y=>Y>=k),...E?{count:E-P}:{},continues:x}})}})}}return r}function Ma(n,e){let t=new Set(e.map(d=>d.name)),r=e.filter(d=>!d.derived),o=new Set(r.flatMap(d=>d.connects??[])),i=new Set(r.flatMap(d=>d.severs??[])),s=[],a=(d,f)=>{let c=d.getNode(String(f));return c?F(n.tryDefinition(c.kind),c):String(f)};for(let d of n.definitions){let f=d.kind,c=Object.entries(d.edges??{}),p=u=>u.to==="*"?"record":u.to.map(l=>K(n.tryDefinition(l),l)).join(" or ");for(let[u,l]of c){let g=p(l),h=l.cardinality==="one",b=c.some(([A,m])=>A!==u&&p(m)===g),y={to:g,from:K(d,f),one:h,also:b?C(u).toLowerCase():void 0},S=y.from;for(let A of Ws){let m=Hs(A,f,u);if(t.has(m)||l.acts==="none"||(A==="connect"?o.has(u):i.has(u)||l.appendOnly))continue;let{title:k,fromTheOtherEnd:w}=Ys(A,y),x=l.description?`: ${l.description.replace(/\.$/,"")}`:"";s.push({name:m,derived:{kind:f,act:A,relation:u},title:k,fromTheOtherEnd:w,description:A==="connect"?`Link this ${S} to ${/^[aeiou]/i.test(g)?"an":"a"} ${g}${x}.${h?" It has one, so this replaces the one it has.":""}`:`Take away the link between this ${S} and ${/^[aeiou]/i.test(g)?"an":"a"} ${g}${x}. Undo puts it back.`,subject:{kinds:[f],arg:"id"},...A==="connect"?{connects:[u]}:{severs:[u],destructive:!0},idempotent:!0,input:We({id:ke([f]),to:ke(l.to==="*"?"*":l.to)}),describe:(v,$)=>A==="disconnect"?`Unlink ${a($,v.id)} from ${a($,v.to)}`:h?`Set the ${g} of ${a($,v.id)} to ${a($,v.to)}`:`Link ${a($,v.id)} to ${a($,v.to)}`,apply(v,$){let R=String($.id),_=String($.to);for(let E of[R,_])if(!v.graph.getNode(E))throw new ee(`there is no record "${E}"`,"invalid");let P=v.graph.out(R,u).some(E=>E.id===_);if(A==="disconnect"){if(!P)throw new ee(`${a(v.graph,R)} is not linked to ${a(v.graph,_)}`,"invalid");v.removeEdge({kind:u,from:R,to:_});return}if(h)for(let E of v.graph.out(R,u))E.id!==_&&v.removeEdge({kind:u,from:R,to:E.id});P||v.addEdge({kind:u,from:R,to:_})}})}}}return s}function Na(n){let e=n.fields.shape;return Object.keys(e).filter(t=>!(t in(n.fixed??{})))}function Jr(n,e){let t=e.subject;return t?t.kinds==="*"?n.kinds:t.kinds:[]}function Xr(n,e){let t=n.subject;if(!t||!n.writes&&n.creates?.length)return[];let r=new Set(Object.keys(e.fields.shape));if(n.writes)return n.writes.filter(s=>r.has(s));let o=n.input.shape??{},i=new Set(Cn(n.input).map(s=>s.name));return Object.keys(o).filter(s=>s!==t.arg&&r.has(s)&&!i.has(s))}function Ia(n,e){let t=new Map,r=(o,i,s)=>{let a=t.get(o)??new Map;a.get(i)?.includes(s)||(a.set(i,[...a.get(i)??[],s]),t.set(o,a))};for(let o of e){for(let i of Jr(n,o)){let s=n.tryDefinition(i);if(s)for(let a of Xr(o,s))r(i,a,o.name)}for(let[i,s]of Object.entries(o.writesOther??{})){let a=n.tryDefinition(i)?.fields.shape;if(a)for(let d of s)d in a&&r(i,d,o.name)}}return t}function ja(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=Ia(n,e).get(t);return Na(r).filter(i=>!o?.has(i))}var Ta=n=>`edit-${n}`;function Da(n,e,t){let r=n.tryDefinition(t);if(!r)return[];let o=new Set;for(let i of e)i.derived||((i.creates??[]).includes(t)&&o.add(i.name),Jr(n,i).includes(t)&&Xr(i,r).length>0&&o.add(i.name));return[...o]}function Fa(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=Ta(i);if(t.has(s))continue;let a=ja(n,e,i);if(a.length===0)continue;let d=o.fields.shape,f=K(o,i),c=a.map(p=>nt(o,p).toLowerCase());r.push({name:s,derived:{kind:i,act:"edit"},idempotent:!0,title:`Change the ${f}`,description:`Change what was set when this ${f} was made: ${c.join(", ")}.`,subject:{kinds:[i],arg:"id"},writes:a,input:We({id:ke([i]),...Object.fromEntries(a.map(p=>[p,Q(al(d[p]))]))}),describe:(p,u)=>il(o,d,a,p,u),apply(p,u){let l={};for(let g of a){let h=u[g];h!==void 0&&(l[g]=h)}if(Object.keys(l).length===0)throw new ee(`Nothing to change \u2014 give at least one of ${c.join(", ")} a value.`,"invalid");p.patchNode(u.id,l)}})}return r}function il(n,e,t,r,o){let i=o.getNode(r.id),s=i?F(n,i):"a record",a=t.filter(d=>r[d]!==void 0).map((d,f)=>{let c=r[d],p=Pn(d),u=p!==void 0&&p in e,l=nt(n,u?p:d);return`the ${l===l.toUpperCase()?l:l.charAt(0).toLowerCase()+l.slice(1)}${f===0?` of ${s}`:""} to ${u?c?`repeat ${sl(c)}`:"stop repeating":Za(n,e[d],d,c)}`});return a.length===0?`Changed nothing on ${s}`:`Changed ${a.length>1?`${a.slice(0,-1).join(", ")} and ${a.at(-1)}`:a[0]}`}var sl=n=>`every ${(n.interval??1)>1?`${n.interval} ${n.every}s`:n.every}`;function Za(n,e,t,r){if(r===null||r===""||Array.isArray(r)&&r.length===0)return"nothing";let o=n.display?.format?.[t];try{if(o)return String(o(r))}catch{}if(An(r).length>0)return An(r).map(i=>i.name).join(", ");if(On(e))return Array.isArray(r)&&r.length>1?`${r.length} linked records`:"a linked record";if(Array.isArray(r))return r.map(i=>Za(n,e,t,i)).join(", ");if(typeof r=="boolean")return r?"yes":"no";if(typeof r=="number"){let i=Hr(e);return i?Ea(r,i):Yr(e)==="duration"?`${r>=60?`${Math.floor(r/60)} h `:""}${r%60||r<60?`${r%60} min`:""}`.trim():String(r)}if(typeof r!="string")return"a new value";if(Ce.test(r))return ge(r);if(Jn.test(r))return Ct(r);for(let i=I(e);i;i=I(i.innerType))if(i.type==="enum")return C(r);return`\u201C${Pa(r,60)}\u201D`}function al(n){let e=n;for(let t=0;t<4;t++){let r=e._zod?.def;if((r?.type==="default"||r?.type==="prefault")&&r.innerType)e=r.innerType;else break}return e}function La(n,e){return n.filter(t=>!t.derived&&(t.creates??[]).includes(e)).map(t=>t.name)}function St(n,e,t){if(!t.derived)return;let r=t.derived.act;return r==="edit"||r==="skip"||r==="detach"||r==="split"||r==="connect"||r==="disconnect"?Da(n,e,t.derived.kind):La(e,t.derived.kind)}function dl(n,e){let t=new Set(e.map(o=>o.name)),r=[];for(let o of n.definitions){let i=o.kind,s=K(o,i),a=(f,c)=>{let p=f.getNode(String(c));return p?F(o,p):String(c)},d=ke([i]);for(let[f,c,p,u]of[["remove","Remove",`Remove the ${s}`,`Take this ${s} out of the graph, with every tie it has. Undo puts it back.`],["archive","Archive",`Archive the ${s}`,`Set this ${s} aside, with its ties and history kept.`],["unarchive","Bring back","Bring it back",`Bring this archived ${s} back.`],["merge","Merge",`Merge into another ${s}`,`The other takes this ${s}'s ties, and this one is archived.`],["leave-alone","Leave alone","Leave this one alone",`Nothing automated changes this ${s}: tidying passes it by until you allow it again.`],["allow-tidying","Allow tidying of","Allow tidying again",`Let tidying change this ${s} again.`]]){let l=`${f}-${i}`,g=f==="leave-alone"||f==="allow-tidying";t.has(l)||!g&&f!=="remove"&&o.archives===!1||g&&o.tidying==="never"||r.push({name:l,derived:{kind:i,act:f},title:p,description:u,subject:{kinds:[i],arg:"id"},...f==="remove"?{destructive:!0}:{},idempotent:!0,input:Ue(f==="merge"?{id:d,into:d}:{id:d}),describe:(h,b)=>{let y=f==="remove"&&b.getNode(String(h.id)),S=y?new Set(Object.values(y).flatMap(A=>An(A).map(m=>m.href))).size:0;return`${c} ${a(b,h.id)}${f==="merge"?` into ${a(b,h.into)}`:""}${S?` and its ${S} file${S>1?"s":""}`:""}`},apply:g?(h,b)=>h.patchNode(String(b.id),{[Mn]:f==="leave-alone"?!0:void 0}):(h,b)=>h[`${f}Node`](b.id,b.into)})}}return r}function Qr(n,e){return[...Fa(n,e),...dl(n,e),...za(n,e),...Ma(n,e)]}var cl=n=>({$made:n}),$t=n=>typeof n=="object"&&n!==null&&Object.keys(n).join()==="$made"&&Number.isInteger(n.$made)&&n.$made>=0,ul=(n,e)=>Object.fromEntries(Object.entries(n.args??{}).map(([t,r])=>[t,Array.isArray(r)?r.map(e):e(r)])),Ca=n=>Object.values(n.args??{}).some(e=>$t(e)||Array.isArray(e)&&e.some($t)),Ga=(n,e,t)=>({...n,args:ul(n,r=>{if(!$t(r))return r;let o=r.$made<t?e[r.$made]:void 0;if(o===void 0)throw new Error(`\u201C${n.name}\u201D names the record call ${r.$made+1} makes, and no call before it made that record.`);return o})});var ll=500,eo=120;function Bn(n){if(n===void 0)return;let{basis:e,confidence:t,model:r,suggestion:o,interaction:i}=n??{},s=typeof e=="string"?e.trim():"",a=typeof r=="string"?r.trim():"";if(!s||s.length>ll||t!==void 0&&!(typeof t=="number"&&t>=0&&t<=1)||r!==void 0&&!(a&&a.length<=eo)||o!==void 0&&!(typeof o=="string"&&o.length>0&&o.length<=eo)||i!==void 0&&!(typeof i=="string"&&i.length>0&&i.length<=eo))throw new N("A lineage is { basis: 1\u2013500 characters, confidence?: 0\u20131, model?: 1\u2013120 characters, suggestion?: an op id, interaction?: an AI interaction's id }");return{basis:s,...t!==void 0?{confidence:t}:{},...a?{model:a}:{},...typeof o=="string"?{suggestion:o}:{},...typeof i=="string"?{interaction:i}:{}}}var dn="keep-link";function Ba(n){let e=(t,r)=>{let o=t.getNode(r);return o?F(n.tryDefinition(o.kind),o):r};return{name:dn,title:"Keep this link",input:Ue({kind:D(),from:D(),to:D()}),describe:(t,r)=>`Keep the link from ${e(r,t.from)} to ${e(r,t.to)}`,apply(t,r){let{kind:o,from:i,to:s}=r;if(!t.graph.getNode(i)||!t.graph.getNode(s)){let a=z({kind:o,from:i,to:s});throw new B(a,`Cannot remove missing edge ${a}`)}t.removeEdge({kind:o,from:i,to:s}),t.addEdge({kind:o,from:i,to:s})}}}var Ka=(n,e)=>[...n].filter(t=>!t.derived&&t.name!==dn&&typeof e=="string"&&(t.connects?.includes(e)||t.severs?.includes(e))).map(t=>t.name);var Va=["kind-unknown","node-shape","edge-dangling","edge-disallowed","rule-error","rule-budget"];function Ua(n,e){let t=gt(n,e);return t&&[...t.fields].filter(Boolean)}function fl(n,e,t){return n.tryDefinition(e)?.fields?.shape?.[t]}function Rt(n,e){try{return F(n.tryDefinition(e.kind),e)}catch{return typeof e.label=="string"?e.label:"A record"}}var pl=n=>`${n.kind}:${n.from}->${n.to}`,_t=(n,e)=>n<e?-1:n>e?1:0;function Wa(n,e,t={}){let{schema:r}=n,o=[],i=new Map;for(let u of e.nodes)i.has(u.id)||i.set(u.id,u);let s=u=>e.edges.filter(l=>l.from===u||l.to===u),a=u=>({action:"drop",primitives:[...s(u.id).filter(l=>i.has(l.from)&&i.has(l.to)).map(l=>({op:"remove-edge",edge:l})),{op:"remove-node",node:u}]}),d=new Set;for(let u of[...i.values()].sort((l,g)=>_t(l.id,g.id))){if(!r.tryDefinition(u.kind)){d.add(u.id),o.push({code:"kind-unknown",id:u.id,message:`${Rt(r,u)} is a kind of record this app no longer has`,repair:a(u)});continue}let l=Ua(r,u);if(l===void 0)continue;let g=Rt(r,u),h=new Map,b=l.length>0;for(let y of l){if(y==="id"||y==="kind"){b=!1;continue}let S=fl(r,u.kind,y),A=S?S.safeParse(void 0):{success:!0,data:void 0},m=r.tryDefinition(u.kind)?.defaults;!A.success&&S&&m&&Object.hasOwn(m,y)&&(A=S.safeParse(m[y])),A.success?A.data===void 0?h.set(y,{action:"clear",value:pe}):h.set(y,{action:"coerce",value:A.data}):b=!1}if(b){let y={...u};for(let[S,A]of h)A.value===pe?delete y[S]:y[S]=A.value;Ua(r,y)!==void 0&&(b=!1)}if(l.length===0){o.push({code:"node-shape",id:u.id,message:`${g} does not fit what ${u.kind} declares`,repair:a(u)});continue}for(let y of l){let S=h.get(y),A=b&&S?{action:S.action,primitives:[{op:"patch-node",id:u.id,before:{[y]:u[y]===void 0?pe:u[y]},after:{[y]:S.value}}]}:a(u);o.push({code:"node-shape",id:u.id,detail:y,message:`${g}: ${C(y)} does not fit what ${u.kind} declares`,repair:A})}}let f=new Set,c=[];for(let u of[...e.edges].sort((l,g)=>_t(z(l),z(g)))){if(f.has(z(u)))continue;f.add(z(u));let l=pl(u),g=i.get(u.from),h=i.get(u.to);if(!g||!h){o.push({code:"edge-dangling",id:l,message:"A link points at a record that is not there",repair:{action:"drop",primitives:[{op:"remove-edge",edge:u}]}});continue}c.push(u),!(d.has(g.id)||d.has(h.id))&&(r.edgeAllowed(u.kind,g.kind,h.kind)||o.push({code:"edge-disallowed",id:l,message:`${Rt(r,g)} \u2192 ${Rt(r,h)}: this app does not allow that link between them`,repair:{action:"drop",primitives:[{op:"remove-edge",edge:u}]}}))}let p=n.invariants??[];if(p.length>0){let u=W.from(r,{nodes:[...i.values()],edges:c},{validate:!1}),l=new Set,g;try{g=Qe(u,p,t.invariantOptions??{})}catch{g=[{invariant:"rules",status:"could-not-judge",label:"The rules",message:"The rules could not be judged",nodeIds:[],repairs:[]}]}for(let h of g){let b=h.status==="could-not-judge"?"rule-error":h.status==="over-budget"?"rule-budget":void 0;if(!b)continue;let y=h.subjectId??h.invariant,S=`${b}|${y}|${h.invariant}`;l.has(S)||(l.add(S),o.push({code:b,id:y,detail:h.invariant,message:h.message}))}}return o.sort((u,l)=>Va.indexOf(u.code)-Va.indexOf(l.code)||_t(u.id,l.id)||_t(u.detail??"",l.detail??""))}var Kn=()=>globalThis.__graviewWatch;function qa(n){Kn()?.store?.(n)}function At(n){n!==void 0&&Kn()?.learn?.({ids:[n],words:[]})}function Ha(n,e){Kn()?.refused?.({...n,...e===void 0?{}:{author:e}})}function no(n,e){let t=Kn();if(!t?.refusedInput)return;let r=n.issues.map(o=>`${o.path.map(String).join(".")}: ${o.message}`).join("; ");t.refusedInput({mutation:n.mutation,message:r,...e===void 0?{}:{author:e}})}function hl(n,e){n instanceof re&&no(n,e)}function gl(n,e,t){Kn()?.seat?.(n,e,t)}function ro(n,e){if(typeof n=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(n))return n;let t=new Date(n).getTime();if(Number.isNaN(t))throw new Error(`Not a day: ${String(n)}`);return H(e,t)}var to=15*6e4;function Ya(n=Date.now(),e){let t=new Date(n).getTime(),r=Xn(e),o=H(r,t),i=new Date(Date.parse(`${o}T00:00:00Z`));if(i.setUTCDate(i.getUTCDate()+1),!r)return i.getTime()-t;let s=Po(i.toISOString().slice(0,10),0,r);for(;H(r,s)===o;)s+=to;for(;H(r,s-to)!==o;)s-=to;return s-t}function ml(n,e){let t,r=()=>{t=setTimeout(()=>{let o=n.tick(new Date);r(),e?.(o)},Ya(Date.now(),n.timeZone)+1e3),t.unref?.()};return r(),()=>clearTimeout(t)}var Ot=class extends N{constructor(e){super(`This is the app as it stood${e.at?` at ${e.at}`:" at the start"}: the past is read, never changed`),this.name="PastError"}},oo="preview",Z=(n,e)=>e===void 0?{}:{[n]:e},Ie={kind:"human"},Ja={kind:"system"},Qa={kind:"system",id:"modules",name:"Modules"},Xa=n=>n.mutation===null&&n.undoes===void 0;function io(n,e){return`${n.invariant}|${n.subjectId??""}|${n.line||e?.has(n.invariant)?n.label:n.message}`}var yl=new Set(["remove","archive","unarchive","merge"]),bl={has:()=>!0},ed=n=>new Set(n.filter(e=>e.shape).map(e=>e.name));function nd(n,e,t){let r=ed(n),o=p=>io(p,r),i=new Set(e.map(o)),s=new Set(t.map(o)),a=t.filter(p=>!i.has(o(p))),d=e.filter(p=>!s.has(o(p)));if(a.length===0||d.length===0)return{introduces:a,resolves:d};let f=p=>p.subjectId&&io(p,bl),c=d.map(f);return{introduces:a.filter(p=>{let u=f(p)?c.indexOf(f(p)):-1;return u<0||(c[u]=null,!1)}),resolves:d.filter((p,u)=>c[u]!==null)}}var cn=class extends Error{constructor(t,r){super(`Op "${t.id}" (${t.intent}) could not be applied: ${r instanceof Error?r.message:String(r)}`,{cause:r});this.op=t;this.name="ReceiveError"}},Et=class extends N{constructor(t,r){super(`Unknown mutation "${t}"`,`Registered: ${r.join(", ")||"(none)"}`);this.mutation=t;this.name="UnknownMutationError"}};function vl(){let n=globalThis.crypto,e=new Uint8Array(6);if(n?.getRandomValues)n.getRandomValues(e);else for(let t=0;t<e.length;t++)e[t]=Math.floor(Math.random()*256);return[...e].map(t=>t.toString(36).padStart(2,"0")).join("")}var so=class n{schema;graph;log;mutations=new Map;keeper;invariants;invariantOptions;policy;intelligence;may=new Map;by;declaredModules;startingModules;projected;nextId;now;validate;mintBatch;batchTag;counter=0;opCount=0;quiet=0;rehearsing=!1;suggesting=!1;ticked;timeZone;past;pastEvery;listeners=new Set;constructor(e){this.pastEvery=Math.max(1,e.pastEvery??64),this.past=e.past,this.schema=e.schema,this.invariants=e.invariants??[],this.invariantOptions=e.invariantOptions??{},this.timeZone=e.timeZone,this.timeZone&&(this.ticked={day:H(this.timeZone),on:H(this.timeZone)}),this.policy=e.policy,this.by=e.principal??Ie,this.intelligence=e.intelligence??[];for(let i of e.intelligence??[])i.may&&this.may.set(i.name,new Set(i.may));this.declaredModules=e.modules,this.startingModules=e.enabledModules,this.nextId=e.ids??(()=>`op${++this.opCount}`),this.now=e.now??(()=>new Date().toISOString()),this.validate=e.validate??!0;let t=vl();this.batchTag=e.batchIds?void 0:t,this.mintBatch=e.batchIds??(i=>`${i}:${t}:${++this.counter}`);for(let i of e.past?[]:e.mutations??[]){if(this.mutations.has(i.name))throw new N(`Duplicate mutation "${i.name}"`);this.mutations.set(i.name,i)}for(let i of e.past?[]:Qr(e.schema,e.mutations??[]))this.mutations.set(i.name,i);!e.past&&!this.mutations.has(dn)&&(this.keeper=Ba(e.schema),this.mutations.set(dn,this.keeper));let r=Z("horizon",e.horizon),o={validate:this.validate};if(e.log){this.log=tn.from(e.log,e.epochs,r);let i=this.log.lastEpoch();this.graph=e.snapshot?W.from(e.schema,e.snapshot,o):this.log.fold(e.schema,{...o,...i?{from:i}:{}})}else this.log=tn.from([],e.epochs??(e.snapshot?[{seq:e.horizon??0,base:e.snapshot}]:[]),r),this.graph=W.from(e.schema,e.snapshot??{nodes:[],edges:[]},o);e.past||(this.countPastTheLog(),qa(this))}stillNow(){if(this.past)throw new Ot(this.past)}countPastTheLog(){let e=t=>{let r=/(\d+)$/.exec(t);return r?Number(r[1]):0};for(let t of this.log.all())this.counter=Math.max(this.counter,e(t.batch)),this.opCount=Math.max(this.opCount,e(t.id));this.log.horizon>0&&(this.opCount=Math.max(this.opCount,this.log.length))}get modules(){let e=this.log.all(),t=e.at(-1)?.id,r=this.projected;if(r&&r.length===e.length&&r.last===t)return r.projection;let o,i=0;r&&r.length<=e.length&&(r.length===0||e[r.length-1]?.id===r.last)&&(o=r.said,i=r.length);for(let a=e.length-1;a>=i;a--){let d=e[a].enabledModules;if(d!==void 0){o=d;break}}let s=r&&o===r.said?r.projection:Kr(this.declaredModules,o??this.startingModules);return this.projected={projection:s,length:e.length,last:t,said:o},s}setEnabledModules(e,t={}){this.stillNow();let r=this.modules.enabled,o=Kr(this.declaredModules,e).enabled,i=[...r].filter(c=>!o.has(c)),s=[...o].filter(c=>!r.has(c));if(i.length===0&&s.length===0)return;let a=c=>c.map(p=>{let u=this.declaredModules?.[p]?.kinds??[];return u.length>0?u.map(l=>ne(this.schema,l)).join(", "):p}).join(", "),d=[i.length>0?`Turn off ${a(i)}`:"",s.length>0?`turn on ${a(s)}`:""].filter(Boolean).join("; "),f={id:this.nextId(),seq:this.log.length,batch:t.batch??this.mintBatch("batch"),author:Qa,intent:vn(d),mutation:null,primitives:[],reads:[],writes:[],at:this.now(),...Z("via",t.via),enabledModules:[...o].sort()};return this.log.append(f),this.notify(Nn,[f]),f}mutation(e){let t=this.mutations.get(e);if(!t)throw new Et(e,[...this.mutations.keys()]);if(this.mutationDisabled(t))throw new N(`Mutation "${e}" belongs to a module this workspace has turned off`,`Enabled modules: ${[...this.modules.enabled].join(", ")||"(none)"}`);return t}mutationDisabled(e){return this.modules.disabledMutations.has(e.name)?!0:e.derived!==void 0&&this.modules.disabledKinds.has(e.derived.kind)}allMutations(){return[...this.mutations.values()].filter(e=>e!==this.keeper&&!this.mutationDisabled(e))}viaOf(e,t){if(e!==void 0&&e===this.keeper){let r=Ka(this.mutations.values(),t?.args.kind);if(r.length>0)return r;let o=[...this.mutations.values()];return[...new Set(o.filter(i=>i.derived?.relation===t?.args.kind).flatMap(i=>St(this.schema,o,i)??[]))]}if(e?.derived)return St(this.schema,[...this.mutations.values()],e)}moved(e,t){return nd(this.allInvariants(),e,t)}allInvariants(){return this.invariants.filter(e=>this.invariantEnabled(e))}invariantEnabled(e){if(this.modules.disabledInvariants.has(e.name))return!1;if(e.scope!=="graph"){let t=e.scope.kind;if(this.modules.disabledKinds.has(t))return!1}return!0}permits(e,t=Ie){if(this.past)return{ok:!1,refusal:{mutation:e.name,wouldNeed:[],message:"Nothing changes while you look back."}};let r=this.refusesAgent(e,t)??this.namesTurnedOff(e,t);if(r)return{ok:!1,refusal:r};let o=this.mutations.get(e.name),i=o?.subject&&e.args[o.subject.arg];return xe(this.policy,t,e.name,this.subjectKindOf(e,t),this.viaOf(o,e),typeof i=="string"?i:void 0,this.words,()=>{let s=T(t).id,a=this.namedIn(e,!1);try{for(let d of an(this.graph,o,e.args,this.sighted(t)).primitives)"edge"in d&&d.edge.from!==s&&d.edge.to!==s&&a.push(d.edge.to)}catch{}return a},o?.derived&&(()=>oe(this.log).creatorOf(i)),o?.derived!==void 0&&yl.has(o.derived.act))}namedIn(e,t=!0){let r=this.mutations.get(e.name);if(!r)return[];let o=r.subject?.arg;return[...t&&o?[e.args[o]]:[],...Cn(r.input).flatMap(s=>s.name===o?[]:[e.args[s.name]])].flat().filter(s=>typeof s=="string")}refuse(e,t,r=!this.rehearsing){throw r&&Ha(e,t),new ze(e)}get words(){return{act:e=>this.mutations.get(e)?.title,noun:e=>K(this.schema.tryDefinition(e),e)}}refusesAgent(e,t){if(t.kind!=="agent"||t.id===void 0)return;let r=this.may.get(t.id);if(!r||r.has(e.name))return;let o=s=>`\u201C${this.mutations.get(s)?.title??s}\u201D`,i=[...r].map(o);return{mutation:e.name,message:`${t.id} may not ${o(e.name)} here: it was declared able to ${i.length===0?"do nothing else":i.join(", ")}.`,wouldNeed:[]}}namesTurnedOff(e,t=Ja){let r=this.modules.disabledKinds;if(r.size===0||!q(t))return;let o=this.mutations.get(e.name);if(!(!o||!this.namedIn(e).some(i=>r.has(this.graph.getNode(i)?.kind))))return{mutation:e.name,message:`\u201C${o.title??e.name}\u201D names a record of a module this workspace has turned off.`,wouldNeed:[]}}sighted(e){let t={me:e&&T(e).id};if(e===void 0||!on(this,e))return t;let r=Zn(this,e);return{...t,seen:Ln(this,e).graph,keepUnchanged:o=>j(o,r),seesInFull:ua(this,e)}}missingFor(e,t=Ie){let r=this.mutations.get(e.name),o=new Set(this.namedIn(e));if(!r||o.size===0)return;let i=Ln(this,t).graph;for(let s of o)if(!i.has(s))return new B(s,`\u201C${r.title??e.name}\u201D names a record that is not there.`)}mayAdminister(e,t=Ie){let r=this.modules.administered.get(e);return r?(r.mutations??[]).some(o=>{let i=this.mutations.get(o);return!!i&&Pr(i).some(s=>xe(this.policy,t,o,s,this.viaOf(i)).ok)}):!1}seenBy(e){return Ln(this,e)}sees(e,t){return this.graph.has(t)&&Zn(this,e)(t)}labels;resolveRef(e,t,r=Ie){let o=(this.policy?.sees?.length??0)>0,i=u=>!o||this.sees(r,u),s=this.graph.getNode(t);if(this.labels??=new wt(this.graph),s&&i(t))return{ok:!0,id:t,label:this.labels.labelOf(t)??t,by:"id"};let a=this.labels.lookup(e.kinds,t),d=u=>{let l=u.filter(g=>!this.graph.isArchived(g));return l.length?l:u},f=d(a.exact.filter(i)),c=f.length>0,p=(c?f:d(a.prefix.filter(i))).map(u=>({id:u,kind:this.graph.getNode(u).kind,label:this.labels.labelOf(u)??u})).sort((u,l)=>u.label<l.label?-1:u.label>l.label?1:u.id<l.id?-1:1);return p.length===1?{ok:!0,id:p[0].id,label:p[0].label,by:c?"label":"prefix"}:ma(this.schema,e,t,p)}kindsKeptFrom(e=Ie){let t=new Set;for(let[o,i]of this.modules.administered)if(!this.mayAdminister(o,e))for(let s of i.kinds??[])t.add(s);let r=this.policy?.sees??[];if(r.length>0&&!q(e)){let o=new Set(this.permittedMutations(e).flatMap(s=>s.creates??[])),i=we(this);for(let s of this.schema.kinds)!r.some(d=>d.kinds.includes(s)&&ve(d,e)&&(!d.own&&!d.via||e.id!==void 0)&&(i||!Fn(d)))&&!o.has(s)&&t.add(s)}return t}permittedMutations(e=Ie){let t=this.allMutations(),r=Er(this.policy,e,t.filter(i=>!i.derived)),o=t.filter(i=>i.derived!==void 0&&xe(this.policy,e,i.name,i.derived.kind,this.viaOf(i),T(e).id).ok);return[...r,...o]}subjectKindOf(e,t=Ja){let o=this.mutations.get(e.name)?.subject;if(!o)return;let i=e.args[o.arg];if(typeof i!="string")return o.kinds!=="*"&&o.kinds.length===1?o.kinds[0]:void 0;if(!(!q(t)&&!Zn(this,t)(i)))return this.graph.getNode(i)?.kind}today(){return this.pinned()??(this.ticked&&this.ticked.on===H(this.timeZone)?this.ticked.day:void 0)??(this.timeZone?H(this.timeZone):void 0)}pinned(){let e=this.invariantOptions.context,t=this.invariantOptions.today??e?.today;return typeof t=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(t)?t:void 0}judging(e){let t=this.today(),r=ks(this.graph),o=e??this.invariantOptions.context,i=r&&!(o&&"linked"in o)?{...o,linked:r}:e,s=i??o,a=this.timeZone&&t!==void 0&&e===void 0&&!(s&&"today"in s)?{...s,today:t}:i;return{...this.invariantOptions,...a===void 0?{}:{context:a},...t===void 0?{}:{today:t}}}tick(e=new Date){let t=this.pinned();if(t!==void 0)return{day:t,was:t,appeared:[],cleared:[]};let r=ro(e,this.timeZone),o=H(this.timeZone);this.ticked&&(this.ticked={day:this.ticked.day,on:o});let i=this.today(),s=this.violations();this.ticked={day:r,on:o};let a=this.moved(s,this.violations());if(r!==i&&!this.rehearsing&&this.quiet===0)for(let d of this.listeners)d(Nn,[]);return{day:r,...i===void 0?{}:{was:i},appeared:a.introduces,cleared:a.resolves}}reread(){if(!(this.rehearsing||this.quiet>0))for(let e of this.listeners)e(Nn,[])}violations(e,t=this.graph){return Qe(t,this.allInvariants(),this.judging(e)).map(r=>this.asking(r))}required=new Map;asking(e){if(!e.repairs.some(o=>o.missing===void 0))return e;let t=!1,r=e.repairs.map(o=>{if(o.missing!==void 0)return o;let i=this.requiredOf(o.mutation).filter(s=>o.args?.[s]===void 0);return i.length===0?o:(t=!0,{...o,missing:i})});return t?{...e,repairs:r}:e}requiredOf(e){let t=this.required.get(e);if(t)return t;let r=this.mutations.get(e)?.input?.shape??{},o=Object.entries(r).filter(([,i])=>typeof i?.safeParse=="function"&&!i.safeParse(void 0).success).map(([i])=>i);return this.required.set(e,o),o}wouldChange(e,t){try{return an(this.graph,this.mutation(e.name),e.args,this.sighted(t)).primitives.length>0}catch{return!0}}preview(e,t,r={}){let o=this.mutation(e.name),i=an(this.graph,o,e.args,this.sighted(r.author));return this.previewPrimitives(i.primitives,{reads:i.reads,writes:i.writes,intent:i.intent,context:t})}previewAll(e,t={}){let{context:r,...o}=t;return{...this.rehearsal().applying(e,o,r),kept:!1}}rehearsal(){let e=Object.assign(Object.create(n.prototype),this),t=0;return Object.assign(e,{graph:W.from(this.schema,this.graph.snapshot(),{validate:this.validate}),log:tn.from(this.log.all(),this.log.epochs(),{horizon:this.log.horizon}),listeners:new Set,labels:void 0,nextId:()=>`${oo}:${++t}`,mintBatch:()=>oo,rehearsing:!0}),e}previewPrimitives(e,t){let r=this.violations(t.context),o=W.from(this.schema,this.graph.snapshot()),i=o.applyPrimitives(e,{restoring:t.restoring===!0}),s=Qe(o,this.allInvariants(),this.judging(t.context));return{diff:i,primitives:e,reads:t.reads,writes:t.writes,intent:t.intent,...this.moved(r,s),violationsAfter:s}}apply(e,t={}){return this.applyAll([e],t)}applyAll(e,t={}){return this.applying(e,t)}applying(e,t,r){this.stillNow();let o=t.batch??this.mintBatch("batch"),i=t.author??this.by,s=Bn(t.lineage),a=[],d=[],f=new Set,c=new Set,p=[],u=this.violations(r),l=this.graph.snapshot(),g=this.log.length,h=w=>{let x=this.policy?this.permits(w,i):void 0;x&&!x.ok&&this.refuse(x.refusal,i.id)},b=w=>{let x=this.refusesAgent(w,i)??this.namesTurnedOff(w,i);x&&this.refuse(x,i.id)},y=e.map(Ca);e.forEach((w,x)=>y[x]||h(w)),e.forEach((w,x)=>y[x]||b(w));let S=Ir(i);S&&this.refuseDeclined(e,i),this.rehearsing||At(i.id);let A=[];try{for(let[w,x]of e.entries()){let v=y[w]?Ga(x,A,w):x;y[w]&&(h(v),b(v));let $=this.mutation(v.name),R=this.missingFor(v,i);if(R)throw R;let _;try{_=an(this.graph,$,v.args,this.sighted(i))}catch(E){throw E instanceof re&&!this.rehearsing&&no(E,i.id),E}if(S){let E=na(this.schema,this.graph,_.primitives,this.authorName(i),{declaration:!this.suggesting});E&&this.refuse({mutation:v.name,message:E,wouldNeed:[]},i.id)}if(_.primitives.length===0)continue;A[w]=_.primitives.find(E=>E.op==="add-node")?.node.id;let P={id:this.nextId(),seq:this.log.length,batch:o,author:i,intent:$.describe!==void 0?_.intent:t.intent??_.intent,...Z("batchIntent",t.intent),mutation:v,primitives:_.primitives.map(Yn),reads:_.reads,writes:_.writes,...$.describe!==void 0&&_.described&&_.described.length>0?{described:_.described}:{},...Z("mergedInto",_.mergedInto),at:this.now(),...Z("via",t.via),...Z("lineage",s)};this.graph.applyPrimitives(P.primitives),this.log.append(P),a.push(P),d.push(...P.primitives);for(let E of P.reads)f.add(E);for(let E of P.writes)c.add(E);p.push(P.intent)}}catch(w){throw this.putBack(l,g),w}let m=be(l,this.graph.snapshot(),d);this.admitted(t,a,d,m,l,g);let k=this.violations(r);return this.notify(m,a),{batch:o,ops:a,diff:m,primitives:d,reads:[...f],writes:[...c],intent:t.intent??p.join("; "),...this.moved(u,k),violationsAfter:k}}receive(e,t={}){this.stillNow();let r=new Set(this.log.all().map(d=>d.id)),o=e.filter(d=>!r.has(d.id));if(o.length===0)return[];let i=this.graph.snapshot(),s=[];if(!t.applied)for(let d of o)try{this.graph.applyPrimitives(d.primitives,{restoring:d.undoes!==void 0})}catch(f){throw this.graph.load(i),new cn(d,f)}let a=this.log.length;for(let[d,f]of o.entries()){let c=hn({...f,seq:a+d});this.log.append(c),s.push(c)}return this.notify(be(i,this.graph.snapshot(),o.flatMap(d=>d.primitives)),s),s}append(e,t={}){if(this.stillNow(),e.length===0)return[];let r=new Set(this.log.all().map(a=>a.id)),o,i=e.map((a,d)=>{let f=a.primitives.map(Yn),c={id:a.id??this.nextId(),seq:this.log.length+d,batch:a.batch??t.batch??(o??=this.mintBatch("batch")),author:a.author,intent:a.intent,...Z("batchIntent",a.batchIntent),mutation:a.mutation??null,primitives:f,reads:a.reads??[],writes:a.writes??[...new Set(f.flatMap($e))],at:a.at??this.now(),...Z("undoes",a.undoes),...Z("via",a.via),...Z("lineage",Bn(a.lineage))};if(r.has(c.id))throw new N(`Op "${c.id}" (${c.intent}) is already in the log`,"A host-made op needs an id of its own; leave `id` out and the store mints one.");return r.add(c.id),c}),s=this.graph.snapshot();for(let a of i)try{this.graph.applyPrimitives(a.primitives,{restoring:a.undoes!==void 0})}catch(d){throw this.graph.load(s),new cn(a,d)}for(let a of i)this.log.append(a);for(let a of i)At(a.author.id);return this.notify(be(s,this.graph.snapshot(),i.flatMap(a=>a.primitives)),i),i}applyPrimitives(e,t={}){this.stillNow();let r=t.batch??this.mintBatch("batch"),o=t.author??this.by,i=this.violations(),s=this.graph.snapshot(),a=t.intent??"Apply a change",d=Bn(t.lineage),f=e.map(Yn),c=[];if(f.length>0){let l={id:this.nextId(),seq:this.log.length,batch:r,author:o,intent:a,mutation:null,primitives:f,reads:[],writes:[...new Set(f.flatMap($e))],at:this.now(),...Z("via",t.via),...Z("lineage",d)};this.graph.applyPrimitives(l.primitives),this.log.append(l),c.push(l),At(o.id)}let p=this.violations(),u=be(s,this.graph.snapshot(),f);return this.notify(u,c),{batch:r,ops:c,diff:u,primitives:f,reads:[],writes:c[0]?.writes??[],intent:a,...this.moved(i,p),violationsAfter:p}}findings(){return Wa({schema:this.schema,invariants:this.allInvariants()},this.graph.snapshot(),{invariantOptions:this.invariantOptions})}batches(){return this.log.batches()}canUndo(e){return Tn(this.log,typeof e=="string"?[e]:e)}previewUndo(e,t){let r=this.canUndo(e);if(!r.ok)return{ok:!1,check:r};let o=Vs(r.ops),i=new Set;for(let s of r.ops)for(let a of s.writes)i.add(a);return{ok:!0,check:r,...this.previewPrimitives(o,{reads:[...new Set(r.ops.flatMap(s=>[...s.reads]))],writes:[...i],intent:`Undo: ${r.ops.map(s=>s.intent).join("; ")}`,restoring:r.ops.every(Xa),...t===void 0?{}:{context:t}})}}undo(e,t={}){return this.undoing(e,t)}undoing(e,t){this.stillNow();let r=typeof e=="string"?[e]:e,o=t.author??this.by,i=(this.policy?.sees?.length??0)>0&&!q(o);if(i){let h=Tn(Gr(nn(this.log.all(),Cr(this,o)),()=>this.log.epochs()),r);if(!h.ok)throw new Pe(h)}let s=this.canUndo(r);if(!s.ok)throw new Pe(i?{ok:!1,ops:[],blockedBy:[],includeBatches:[],message:"Cannot undo on its own \u2014 a later change you cannot see depends on it, which only somebody who can see it can take back."}:s);let a=t.batch??this.mintBatch("undo"),d=Bn(t.lineage);if(this.policy)for(let h of s.ops){if(!h.mutation)continue;let b=T(h.author).id,y=A=>JSON.stringify(A).includes(JSON.stringify(b)),S=b!==void 0&&b!==T(o).id&&!q(o)&&!y(h.mutation.args)&&y(h.primitives)?{ok:!1,refusal:{mutation:h.mutation.name,wouldNeed:[],message:"it was done as somebody else."}}:this.permits(h.mutation,o);S.ok||this.refuse({...S.refusal,message:`Not permitted to undo "${h.intent}": ${S.refusal.message}`},o.id,!0)}let f=this.graph.snapshot(),c=this.violations(),p=[],u=this.log.length;for(let h of[...s.ops].sort((b,y)=>y.seq-b.seq)){let b={id:this.nextId(),seq:this.log.length,batch:a,author:o,intent:`Undo: ${h.intent}`,...Z("batchIntent",t.intent),mutation:null,primitives:Re(h),reads:h.reads,writes:h.writes,at:this.now(),undoes:h.id,...Z("via",t.via),...Z("lineage",d),...Z("undoneLineage",h.lineage)};this.graph.applyPrimitives(b.primitives,{restoring:Xa(h)}),this.log.append(b),p.push(b)}let l=be(f,this.graph.snapshot(),p.flatMap(h=>[...h.primitives]));this.admitted(t,p,p.flatMap(h=>[...h.primitives]),l,f,u);let g=this.violations();return this.notify(l,p),{batch:a,ops:p,diff:l,primitives:p.flatMap(h=>[...h.primitives]),reads:[...new Set(p.flatMap(h=>[...h.reads]))],writes:[...new Set(p.flatMap(h=>[...h.writes]))],intent:t.intent??p.map(h=>h.intent).join("; "),...this.moved(c,g),violationsAfter:g}}authorName(e){return zn(e,{graph:this.graph,schema:this.schema})}refuseDeclined(e,t){let r=ea(this.log.all(),e);r&&this.refuse({mutation:e[0].name,message:`${this.authorName(t)} may not make this again: a person declined it on ${r.at.slice(0,10)}.`,wouldNeed:[]},t.id)}putBack(e,t){this.graph.load(e),this.log.length>t&&this.log.truncate(t)}admitted(e,t,r,o,i,s){if(!e.admit||t.length===0)return;let a=this.graph.size;try{e.admit({ops:t,primitives:r,added:{nodes:o.addedNodes.length,edges:o.addedEdges.length},removed:{nodes:o.removedNodes.length,edges:o.removedEdges.length},changed:{nodes:o.changedNodes.length},nodesAfter:a.nodes,edgesAfter:a.edges})}catch(d){throw this.putBack(i,s),d}}redo(e,t={}){return this.undo(e,t)}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(e,t){if(!(this.quiet>0)&&!(t.length===0&&Ps(e)))for(let r of this.listeners)r(e,t)}rebase(e){this.stillNow();let t=new Set([...e.pending,...e.drop??[]]),r=this.log.all(),o=r.findIndex(h=>t.has(h.batch)),i=r.slice(o<0?r.length:o),s=this.log.horizon+(o<0?r.length:o),a=i.find(h=>!t.has(h.batch));if(a)throw new N(`Cannot rebase: op "${a.id}" (${a.intent}) comes after a pending batch and is neither pending nor dropped`,"While anything is pending, land the server's ops through rebase, so the log stays confirmed ops then pending ones.");let d=this.log.lastEpoch();if(d&&d.seq>s)throw new N(`Cannot rebase across an epoch: one begins at seq ${d.seq}, after pending op "${i[0].id}"`);let f=this.graph.snapshot(),c=[],p=[],u=[];this.quiet++;try{for(let b of[...i].reverse())this.graph.applyPrimitives(Re(b),{restoring:!0,inPlace:!0});this.log.truncate(s);let h=new Set(this.log.all().map(b=>b.id));for(let b of e.confirmed){if(h.has(b.id))continue;try{this.graph.applyPrimitives(b.primitives,{restoring:b.undoes!==void 0})}catch(S){throw new cn(b,S)}let y=hn({...b,seq:this.log.length});this.log.append(y),h.add(b.id),c.push(y)}for(let b of e.pending){let y=i.filter(S=>S.batch===b);if(y.length!==0)try{p.push(...this.replay(b,y))}catch(S){u.push({batch:b,error:S})}}}catch(h){this.log.truncate(s);for(let b of i)this.log.append(b);throw this.graph.load(f),h}finally{this.quiet--}let l=Xe(f,this.graph.snapshot()),g=[...c,...p];return this.notify(l,g),{diff:l,confirmed:c,pending:p,refused:u}}adopt(e){this.stillNow();let t=new Set(e.drop??[]),r=(e.pending??[]).filter(l=>!t.has(l)),o=this.log.all(),i=this.graph.snapshot(),s={ops:[...o],epochs:[...this.log.epochs()],horizon:this.log.horizon},a=new Set(o.map(l=>l.id)),d=new Map(r.map(l=>[l,o.filter(g=>g.batch===l)]));if(e.log.length>0)this.log.replace(e.log,e.epochs,Z("horizon",e.horizon));else{let l=e.horizon??0;this.log.replace([],e.epochs??[{seq:l,base:e.snapshot}],{horizon:l})}let f=[],c=[];this.quiet++;try{this.graph.load(e.snapshot),this.projected=void 0,this.countPastTheLog();for(let l of r){let g=d.get(l)??[];if(g.length!==0)try{f.push(...this.replay(l,g))}catch(h){c.push({batch:l,error:h})}}}catch(l){throw this.log.replace(s.ops,s.epochs,{horizon:s.horizon}),this.graph.load(i),this.projected=void 0,l}finally{this.quiet--}let p=this.log.all().filter(l=>!a.has(l.id)&&!f.includes(l)),u=Xe(i,this.graph.snapshot());return this.notify(u,[...p,...f]),{diff:u,adopted:p,pending:f,refused:c}}replay(e,t){let r=t[0],o={author:r.author,batch:e,...Z("intent",r.batchIntent),...Z("via",r.via),...Z("lineage",r.lineage)};if(r.undoes!==void 0){let i=t.map(a=>this.log.get(a.undoes??"")),s=t.find((a,d)=>i[d]===void 0);if(s)throw new N(`What "${s.intent}" took back is no longer in the log`);return this.undoing([...new Set(i.map(a=>a.batch))],o).ops}return t.every(i=>i.mutation!==null)?this.applying(t.map(i=>i.mutation),o).ops:this.append(t.map(({seq:i,...s})=>s))}snapshot(){return this.graph.snapshot()}verify(){let e=this.log.lastEpoch();return xa(this.schema,this.log.opsFrom(e?.seq??0),this.graph.snapshot(),{validate:this.validate,...e?{base:e.base}:{}})}checkpoint(e={}){let t=this.log.all(),r;if(e.seq!==void 0)r=e.seq;else{let h=this.log.length-(e.keepOps??1e3),y=Date.parse(e.now??this.now())-(e.keepDays??90)*864e5,S=t.find(m=>Date.parse(m.at)>y),A=S?S.seq:this.log.length;r=Math.min(h,A)}for(r=Math.min(Math.max(r,this.log.horizon),this.log.length);r>this.log.horizon&&r<this.log.length&&t[r-this.log.horizon].batch===t[r-1-this.log.horizon].batch;)r--;if(r<=this.log.horizon)return;let o=this.verify();if(!o.ok)throw new N(`Cannot compact a store that does not verify: ${o.reason}`);let{creators:i,removed:s,writers:a,...d}=this.log.checkpointAt(this.schema,r,{validate:this.validate}),f=new Set(d.base.nodes.map(h=>h.id)),{creators:c,removed:p}=sa(this.log,r,h=>f.has(h)),u=oe(this.log),l=ia(this.log,r,d.base.nodes,h=>j(h,b=>!f.has(b)&&u.kindOf(b)===void 0)),g=h=>h&&Object.keys(h).length>0;return{...d,...g(c)&&{creators:c},...p&&{removed:p},...g(l)&&{writers:l}}}compact(e){return this.stillNow(),this.log.compact(e)}};var xl=n=>`lens:${n}`,wl={hidden:[],removed:[],may:{views:!1,lenses:!1}};function kl(n,e,t){return n.name!==void 0&&e.may.views?"view":n.declared&&e.may.lenses&&t.lens?"lens":null}var td=["full","summary","glyph"],Vn="view:",co=(n,e)=>n.as===e.as&&(n.over??[n.kind]).includes(e.kind),Sl=n=>n.filter((e,t)=>!n.slice(0,t).some(r=>co(r,e)));function fe(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function Un(n,e){return`/${fe(n.tryDefinition(e)?.plural??`${e}s`)}`}function $l(n,e,t){return`${Un(n,e)}/${encodeURIComponent(t)}`}function Rl(n,e){return`/places/${encodeURIComponent(n)}${e?`?of=${encodeURIComponent(e)}`:""}`}function rd(n,e){return e.some(t=>t.as===n.as&&!co(n,t))}function _l(n,e,t){return rd(n,e)?`${n.title} \xB7 ${(t.tryDefinition(n.kind)?.plural??`${n.kind}s`).toLowerCase()}`:n.title}var je=(n,e,t="")=>`${n}|${e.cardinality}|${e.fidelity}|${t}`;function ao(n){switch(n){case"full":return["full","summary","glyph"];case"summary":return["summary","full","glyph"];case"glyph":return["glyph","summary","full"]}}function Al(n){let e=new Map,t=[],r=[],o,i,s={arrange(a){return a!==void 0&&(o=a),s},arrangement:()=>o,home(a){return a!==void 0&&(i=a),s},homeView:()=>i,register(a,d,f,c){let p={...c?.over?.[1]?{over:c.over}:{},...c?.hidden?{hidden:!0}:{},...c?.name?{name:c.name}:{},...c?.declared?{declared:!0}:{}},u={kind:a,cardinality:d.cardinality,fidelity:d.fidelity,view:f,...c?.title?{title:c.title}:{},...c?.across?{across:c.across}:{},...c?.beside?{beside:!0}:{},...p};if(r.push(u),!c?.beside&&!p.hidden&&e.set(je(a,d),u),c?.title){let l=fe(c.title);e.set(je(a,d,l),u),d.cardinality==="many"&&!t.some(g=>g.kind===a&&g.as===l)&&t.push({kind:a,title:c.title,as:l,...c.across?{across:c.across}:{},...p,...c.lens?{lens:c.lens}:{},...c.reads?.length?{reads:c.reads}:{}})}return s},places:()=>t,forget(a,d){for(let c of td)e.delete(je(a,{cardinality:"many",fidelity:c},d));let f=t.findIndex(c=>c.kind===a&&c.as===d);return f>=0&&t.splice(f,1),s},lookup(a,d){return e.get(je(a,d))?.view},resolve(a,d,f){if(f)for(let c of ao(d.fidelity)){let p=e.get(je(a,{cardinality:d.cardinality,fidelity:c},f));if(p)return p}for(let c of ao(d.fidelity)){let p=e.get(je(a,{cardinality:d.cardinality,fidelity:c}));if(p)return p}if(d.cardinality==="one")for(let c of ao(d.fidelity)){let p=e.get(je(a,{cardinality:"many",fidelity:c}));if(p)return p}},registrations:()=>r,all(){return[...e.values()]},kindsWithViews(){return[...new Set([...e.values()].map(a=>a.kind))]}};return s}var Ol=["day","week","month","year","decade"];function od(n){let e={};n.q&&n.q.trim().length>0&&(e.query=n.q);let t=$r(n.archived);if(t&&(e.archived=t),n.sort){let[r,o]=n.sort.split(":");r&&(e.sort={by:r,direction:o==="desc"?"desc":"asc"})}if(n.filter){let r=[];for(let o of n.filter.split(",")){let i=o.indexOf(":");i<=0||r.push({key:o.slice(0,i),value:o.slice(i+1)})}r.length>0&&(e.filter=r)}if(n.group){let[r,o]=n.group.split(":");r&&(e.group={by:r,...Ol.includes(o)?{bucket:o}:{}})}return e}function uo(n){if(typeof n=="string"&&n.length>0)return{by:n,direction:"asc"};if(typeof n!="object"||n===null)return;let{by:e,direction:t}=n;if(!(typeof e!="string"||e.length===0))return{by:e,direction:t==="desc"?"desc":"asc"}}function Pt(n,e,t){let r=uo(n);if(!r)return'an order is a field, like "released", or { "by": "released", "direction": "asc" | "desc" }';let o=typeof n=="object"&&n!==null?n.direction:void 0;if(o!==void 0&&o!=="asc"&&o!=="desc")return`an order runs "asc" or "desc", not "${String(o)}"`;if(r.by!=="label"&&!e.includes(r.by))return`${t} has no field "${r.by}" to order by (it has ${e.length>0?e.map(i=>`"${i}"`).join(", "):"none"}, and "label", its name)`}function El(n,e,t){let r=uo(e);if(!r)return n;let o=r.direction==="desc"?-1:1;return n.map((i,s)=>({item:i,at:s,value:t(i,r.by)})).sort((i,s)=>{let a=(i.value===void 0||i.value===null||i.value===""?1:0)-(s.value===void 0||s.value===null||s.value===""?1:0);if(a!==0)return a;if(i.value===s.value||i.value===void 0||i.value===null)return i.at-s.at;let d=typeof i.value=="number"&&typeof s.value=="number"?i.value-s.value:String(i.value).localeCompare(String(s.value),void 0,{numeric:!0});return d===0?i.at-s.at:d*o}).map(i=>i.item)}var Wn={timeline:{binds:"fields",requiredRoles:["start","end"],options:["columns","extent","tick","minWindow","arranging"]},calendar:{binds:"fields",requiredRoles:["start"],options:["today","range","weekStartsOn","perCell","horizon","arranging","search","filters"]},coverage:{binds:"entities",requiredRoles:["rows","columns","link"],options:["rowRef","rowGroup","groupOrder","requiredGroups","requiredVia","badge","columnGroup","sort","columnSort","search","filters"]},board:{binds:"entities",requiredRoles:["slots","x","y","fill"],options:["fillFrom","slotCode","zones","aspect","emptyLabel","pickTarget","arranging","arrange"]},plan:{binds:"entities",requiredRoles:["regions","outline"],options:["hues","aspect","undrawnLabel","strayLabel","draw","place","help"]},reach:{binds:"nothing",requiredRoles:[],options:[]},blocks:{binds:"nothing",requiredRoles:[],options:["blocks"]},columns:{binds:"fields",requiredRoles:["column"],options:["sort","search","filters","move","collapsed","cap","hidden"]}},Pl=20,sd=Object.keys(Wn),zl=(n,e,t,r=Wn[n].options)=>({message:`The ${n} lens takes no option "${e}", so "${t}" ignores it.`,fix:r.length?`Use one of: ${r.join(", ")}.`:`The ${n} lens takes no options; drop it.`}),ad=n=>Object.hasOwn(Wn,n);function lo(n,e,t){let r=n[e],o=Array.isArray(r)?r.filter(i=>typeof i=="string"&&t(i)):[];o.length>0?n[e]=o:delete n[e]}var un=n=>typeof n=="object"&&n!==null&&!Array.isArray(n);function id(n,e,t){let r=n.tryDefinition(e)?.fields.shape,o=I(r?.[t]);for(;o&&(o.type==="optional"||o.type==="default"||o.type==="nullable"||o.type==="prefault");)o=I(o.innerType);return o?.type!=="enum"?[]:(o.entries?Object.values(o.entries):o.values??[]).filter(s=>typeof s=="string")}function Ml(n){let e=[],t=[],r=[],o=new Set(n.schema.kinds),i=new Set;for(let d of o)for(let f of Object.keys(n.schema.tryDefinition(d)?.edges??{}))i.add(f);let s=d=>Object.keys(n.schema.tryDefinition(d)?.fields.shape??{}),a=new Map;return(n.lenses??[]).forEach((d,f)=>{let c=`lenses.${f}`,p=typeof d.title=="string"&&d.title.trim().length>0?d.title.trim():void 0,u=(x,v)=>{t.push({index:f,name:d.name,...p?{title:p}:{},why:x}),v&&r.push({severity:"warning",...v})};if(!ad(d.name)){p?u(`"${d.name}" is not a lens this framework draws`,{code:"lens-not-shipped",path:`${c}.name`,message:`"${p}" names the lens "${d.name}", which the framework does not ship, so nothing draws it.`,fix:`Name one of ${sd.join(", ")} \u2014 or register the view yourself and drop the title.`}):u("it is a lens this app wrote, drawn by the app's own views");return}if(!p)return u("it has no title, so it is bindings the checker holds and no place");let l=Wn[d.name],g=un(d.options)?d.options:{};if(d.options!==void 0&&!un(d.options))return u("its options are not an object",{code:"lens-options-not-an-object",path:`${c}.options`,message:`"${p}" has options that are not an object.`,fix:'Write them as { "<option>": <value> }, or drop them.'});for(let x of Object.keys(g))l.options.includes(x)||r.push({severity:"warning",code:"lens-option-unknown",path:`${c}.options.${x}`,...zl(d.name,x,p,l.options)});let h={};for(let x of l.options)g[x]!==void 0&&(h[x]=g[x]);d.arrangedBy&&(h.arrangedBy=od(d.arrangedBy));let b=un(d.bindings)?d.bindings:{},y=[],S,A=(x,v,$)=>u(v,{code:"lens-cannot-draw",path:x,message:`"${p}" cannot draw: ${v}.`,fix:$});if(l.binds==="fields"){let x=Object.keys(b).filter($=>un(b[$])),v=x.filter($=>!o.has($));if(x.length===0)return A(`${c}.bindings`,"it binds no kind",`Bind a kind's fields: "bindings": { "<kind>": { ${l.requiredRoles.map($=>`"${$}": "<field>"`).join(", ")} } }.`);if(v.length>0)return;if(h.bindings=b,y=x,d.name==="timeline"){let $=g.columns;if(Array.isArray($))h.columns=$.map(R=>typeof R=="string"?{id:R,label:R}:R);else{let R=x.flatMap(P=>{let E=b[P],L=typeof E.column=="string"?E.column:typeof E.columns=="string"?E.columns:void 0;return L?id(n.schema,P,L):[]}),_=[...new Set(R)];if(_.length===0)return A(`${c}.options.columns`,"it has no columns \u2014 no option names them and no `column` role is bound to a field of set values",'Bind "column" to a field whose values are the columns, or say "columns": ["mon", "tue", \u2026].');h.columns=_.map(P=>({id:P,label:P.toUpperCase()}))}h.extent===void 0&&(h.extent=1440)}if(d.name==="columns"){if(h.sort!==void 0){let R=x.map(_=>Pt(h.sort,s(_),_)).find(Boolean);R&&(r.push({severity:"warning",code:"lens-sort",path:`${c}.options.sort`,message:`"${p}" cannot order its cards: ${R}.`,fix:'Write { "by": "<a field>", "direction": "asc" }, or drop it.'}),delete h.sort)}let $=new Set;for(let R of x){let _=b[R].column;if(typeof _!="string"||!s(R).includes(_))return;let P=id(n.schema,R,_);if(P.length===0)return A(`${c}.bindings.${R}.column`,`its column field "${_}" is not a choice`,`Bind "column" to a choice field of ${R}, like a status.`);for(let E of P)$.add(E)}typeof h.move!="boolean"&&delete h.move,Number.isInteger(h.cap)&&h.cap>=1&&h.cap<=500||delete h.cap;for(let R of["collapsed","hidden"])lo(h,R,_=>$.has(_))}if(d.name==="calendar"&&h.today!==void 0&&!(typeof h.today=="string"&&/^\d{4}-\d{2}-\d{2}$/.test(h.today)))return A(`${c}.options.today`,"its today is not a date",'Write it as "YYYY-MM-DD", or leave it out and the calendar opens on the day it is drawn.');if(d.name==="calendar"&&h.horizon!==void 0){let $=h.horizon,R=E=>E===void 0||Number.isInteger(E)&&E>=1&&E<=9999,_=typeof $=="number"?{years:$,title:"Years"}:$;un(_)&&Number.isInteger(_.years)&&_.years>=1&&_.years<=200&&typeof _.title=="string"&&_.title.trim().length>0&&R(_.from)&&R(_.to)&&Object.keys(_).every(E=>["years","title","from","to"].includes(E))&&!(typeof _.from=="number"&&typeof _.to=="number"&&_.to<_.from)?h.horizon=_:(delete h.horizon,r.push({severity:"warning",code:"lens-horizon",path:`${c}.options.horizon`,message:`"${p}" has a horizon that is not a span of years, so it offers no span of years.`,fix:'Write { "years": 30, "title": "The career" } \u2014 "from" and "to" (years, like 1962 and 2023) only to pin its ends, which otherwise reach the first and last of its records.'}))}if(d.name==="calendar"&&h.range!==void 0&&!["day","week","month","quarter","year","years","agenda"].includes(h.range))return A(`${c}.options.range`,`its range "${String(h.range)}" is not one a calendar opens at`,"Use one of: day, week, month, quarter, year, agenda.")}else if(l.binds==="entities"){let x=R=>{let _=b[R];if(un(_)){if(typeof _.kind=="string")return _.kind;if(typeof _.edge=="string")return _.edge;if(Array.isArray(_.path))return{path:_.path};if(typeof _.field=="string")return _.field}};for(let R of l.requiredRoles)if(x(R)===void 0)return;let v=d.name==="coverage"?"rows":d.name==="board"?"slots":"regions",$=x(v);if(!o.has($))return;if(d.name==="coverage"){let R=x("columns");if(!o.has(R))return;let _=x("link");if(typeof _=="string"&&!i.has(_))return;Object.assign(h,{rows:$,columns:R,link:_}),R!==$&&(S=R);for(let[P,E]of[["sort",$],["columnSort",R]]){if(h[P]===void 0)continue;let L=Pt(h[P],s(E),E);L&&(r.push({severity:"warning",code:"lens-sort",path:`${c}.options.${P}`,message:`"${p}" cannot order its ${P==="sort"?"rows":"columns"}: ${L}.`,fix:`Write { "by": "<a field of ${E}>", "direction": "asc" }, or drop it.`}),delete h[P])}}else if(d.name==="board"){Object.assign(h,{slots:$,x:x("x"),y:x("y"),fill:x("fill")});for(let R of["x","y"])if(!s($).includes(h[R]))return}else{Object.assign(h,{regions:$,outline:x("outline")});for(let R of["markers","at","within","nests","regionKind","markerKind"]){let _=x(R);typeof _=="string"&&(h[R]=_)}}y=[$]}else if(d.name==="blocks"){if(!d.on)return A(`${c}.on`,"it does not say which kind it stands on",'Say "on": "<the kind it is a place of>".');if(!Array.isArray(h.blocks)||h.blocks.length===0)return A(`${c}.options.blocks`,"it has no blocks to draw",`Say "options": { "blocks": [{ "headline": "\u2026" }, { "list": "all('<kind>')", "as": "card" }] }.`)}else{let x=["user","person","member"].find(v=>o.has(v));if(!d.on&&!x)return A(`${c}.on`,"it does not say which kind it stands on",'Say "on": "<the kind whose records are the people>".');y=x?[x]:[]}if(d.on!==void 0){if(typeof d.on!="string"||!o.has(d.on))return A(`${c}.on`,`it stands on "${String(d.on)}", which is not a kind`,`Use one of: ${[...o].join(", ")}.`);if(y=[d.on],d.name==="coverage"){let x=[h.rows,h.columns].find(v=>v!==d.on);S=typeof x=="string"?x:void 0}}let m=typeof h.rows=="string"?h.rows:y[0];if(m!==void 0){let x=["label",...s(m)],v=new Set(["is",...x,...Object.keys(n.schema.tryDefinition(m)?.edges??{})]);lo(h,"search",$=>x.includes($)),lo(h,"filters",$=>v.has($.split(".")[0]))}let k=fe(p);if(k.length===0)return A(`${c}.title`,"its title has no letters or digits to make an address of","Give it a title a person would say.");for(let x of y){let v=`${x}|${k}`;if(a.has(v))return u(`another lens on ${x} is already called "${p}"`,{code:"lens-title-taken",path:`${c}.title`,message:`"${p}" is the title of lenses.${a.get(v)} too, on the same kind, so one address would name two pictures.`,fix:"Give each its own title."})}for(let x of y)a.set(`${x}|${k}`,f);let w=d.create;w!==void 0&&typeof w!="boolean"&&r.push({severity:"warning",code:"lens-create",path:`${c}.create`,message:`"${p}" says create ${JSON.stringify(w)}, which is neither true nor false, so its page keeps the forms that begin its kind.`,fix:'Say "create": false to leave them off, or drop it.'}),e.push({index:f,lens:d.name,title:p,as:k,kinds:y,...S?{across:S}:{},options:h,...d.hidden===!0?{hidden:!0}:{},...w===!1?{create:!1}:{}})}),{drawn:e,undrawn:t,findings:r}}var Nl=6;function Il(n,e,t=[]){let r=n.kinds,o=s=>Object.values(n.tryDefinition(s)?.edges??{}).map(a=>(a.to==="*"?r:a.to).filter(d=>d!==s)),i=new Set(r.flatMap(s=>o(s).flat()));return new Set([...e?.hide??[],...t,...r.filter(s=>!i.has(s)&&o(s).length>0&&o(s).every(a=>a.length>=2))])}function jl(n,e,t){if(!n?.primary)return;let r=new Set(n.primary.map(fe));return{kinds:new Set(e.kinds.filter(o=>r.has(fe(o))||r.has(Un(e,o).slice(1)))),places:new Set(t.filter(o=>r.has(o.as)||r.has(fe(o.title))||o.name!==void 0&&n.primary.includes(Vn+o.name)).map(o=>`${o.kind}|${o.as}`))}}var dd="overview",Tl=`/places/${dd}`;function Dl(n){let e=n?.scene?.trim();return e||"Scene"}function Fl(n){let e=n?.pages?.trim();return e||"Pages"}function Zl(n,e){if(!e||e.length===0)return n;let t=e.filter(r=>n.includes(r));return[...new Set(t),...n.filter(r=>!t.includes(r))]}function cd(n){return n.startsWith(Vn)&&n.slice(Vn.length).trim()||void 0}function Ll(n,e,t){let r=[],o=new Set;for(let i of e??[]){let s=cd(i),a=s===void 0?void 0:t.find(d=>d.name===s&&n.includes(d.kind));a?r.some(d=>d.view===a)||r.push({kind:a.kind,view:a}):s===void 0&&n.includes(i)&&!o.has(i)&&(o.add(i),r.push({kind:i}))}for(let i of n)o.has(i)||r.push({kind:i});return r}function Cl(n,e,t){if(n===void 0)return;let r=n.trim();if(r==="")return;if(r.toLowerCase()==="home"||r==="/")return{to:"home"};let o=fe(r),i=t.find(d=>d.title===r||Vn+d.name===r)??t.find(d=>d.as===o);if(i)return{to:"place",place:i};let s=e.kinds,a=s.find(d=>d===r)??s.find(d=>Un(e,d).slice(1)===o);return a?{to:"kind",kind:a}:void 0}function fo(n){let e=(n??"").replace(/\/+$/,"");return e===""?"":e.startsWith("/")?e:`/${e}`}function Gl(n,e={}){let t=typeof n=="string"?n:n.address,r=fo(e.basePath),o=t.startsWith("/")?t:`/${t}`;return r===""?o:o==="/"?r:o.startsWith("/?")||o.startsWith("/#")?`${r}${o.slice(1)}`:`${r}${o}`}function Bl(n,e){let t=fo(e);if(t==="")return n.startsWith("/")?n:`/${n}`;if(!n.toLowerCase().startsWith(t.toLowerCase()))return null;let r=n.slice(t.length);return r===""||r==="/"?"/":r.startsWith("/")?r:null}var ud=Symbol.for("@graview/core:app-link"),Kl=n=>(Object.defineProperty(I(n),ud,{value:1,enumerable:!0}),n);function ld(n){let e=I(n);return!!e&&(e[ud]===1||ld(e.innerType))}var Kx=()=>Kl(D().check(mr(500),Rn(ut,"another app's address")));var zt=(n,e)=>`${e.kind}\0${e.id??""}\0${n.address}\0${n.kind}\0${n.id}`;function Vl(n,e,t=()=>{}){let r=new Map,o=new Map,i=s=>{let a=zt(s,e),d=r.get(a);return d||(d=Promise.resolve().then(()=>n.resolve(s,e)).then(f=>Ul(f)?f:null,()=>null).then(f=>(r.get(a)===d&&(o.set(a,f),t(s)),f)),r.set(a,d)),d};return{read(s){let a=zt(s,e);if(o.has(a)){let d=o.get(a);return d===null?{unread:!0}:"denied"in d?{denied:!0}:{record:d}}return i(s),{unread:!0}},ask:i,answered:s=>o.get(zt(s,e)),forget(s){if(!s){r.clear(),o.clear();return}let a=zt(s,e);r.delete(a),o.delete(a)}}}function Ul(n){if(n===null)return!0;if(typeof n!="object"||n===void 0)return!1;if(n.denied===!0)return!0;let e=n;return typeof e.label=="string"&&typeof e.id=="string"&&typeof e.kind=="string"&&typeof e.fields=="object"&&e.fields!==null}var Wl={snapshot:1,op:2};var ql=1;var Mt=(n,e)=>`${n}\0${e}`;function ho(n){return n.op==="add-node"?Object.keys(n.node).filter(e=>e!=="id"&&e!=="kind").map(e=>[n.node.id,e]):n.op==="patch-node"?Object.keys(n.after).map(e=>[n.id,e]):[]}var po=class n{revs=new Map;floor;constructor(e=0){this.floor=Math.max(0,Math.floor(e))-1}static of(e,t={}){let r=new n(t.horizon);return r.note(e),r}note(e){for(let t of e)for(let r of t.primitives)for(let[o,i]of ho(r)){let s=Mt(o,i);(this.revs.get(s)??this.floor)<t.seq&&this.revs.set(s,t.seq)}}of(e,t){return this.revs.get(Mt(e,t))??this.floor}baseFor(e,t=new Set){let r=new Set,o=new Map;for(let i of e)for(let s of i.primitives)if(s.op==="add-node"&&r.add(s.node.id),!(s.op!=="patch-node"||r.has(s.id)||t.has(s.id)))for(let a of Object.keys(s.after)){let d=Mt(s.id,a);t.has(d)||o.has(d)||o.set(d,{node:s.id,field:a,rev:this.of(s.id,a)})}return[...o.values()]}stale(e){return e.filter(t=>this.of(t.node,t.field)>t.rev)}};function Hl(n){let e=new Set;for(let t of n)for(let r of t.primitives){r.op==="add-node"&&e.add(r.node.id);for(let[o,i]of ho(r))e.add(Mt(o,i))}return e}var Yl=/^#([0-9a-f]{3,8})$/i,Jl=/(rgba?|hsla?)\(([^)]+)\)/gi;function Xl(n){let e=Yl.exec(n.trim());if(!e)return null;let t=e[1];if((t.length===3||t.length===4)&&(t=[...t].map(i=>i+i).join("")),t.length!==6&&t.length!==8)return null;let r=Number.parseInt(t.slice(0,6),16),o=t.length===8?Number.parseInt(t.slice(6,8),16)/255:1;return{r:r>>16&255,g:r>>8&255,b:r&255,a:o}}function Ql(n){let e=n.slice(0,n.indexOf("(")).toLowerCase(),r=n.slice(n.indexOf("(")+1,n.lastIndexOf(")")).split(/[,\s/]+/).filter(Boolean).map(d=>d.endsWith("%")?Number.parseFloat(d)/100:Number.parseFloat(d));if(r.some(Number.isNaN))return null;if(e.startsWith("rgb")){let[d,f,c,p]=r;return d===void 0||f===void 0||c===void 0?null:{r:d,g:f,b:c,a:p??1}}let[o,i,s,a]=r;return o===void 0||i===void 0||s===void 0?null:{...pd(o,i>1?i/100:i,s>1?s/100:s),a:a??1}}function mo(n){let e=n.r/255,t=n.g/255,r=n.b/255,o=Math.max(e,t,r),i=Math.min(e,t,r),s=(o+i)/2;if(o===i)return{h:0,s:0,l:s};let a=o-i,d=a/(1-Math.abs(2*s-1));return{h:((o===e?60*((t-r)/a%6):o===t?60*((r-e)/a+2):60*((e-t)/a+4))+360)%360,s:d,l:s}}function yo(n,e,t){return{...pd(n,e,t),a:1}}function pd(n,e,t){let r=(1-Math.abs(2*t-1))*e,o=(n%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),[s,a,d]=o<1?[r,i,0]:o<2?[i,r,0]:o<3?[0,r,i]:o<4?[0,i,r]:o<5?[i,0,r]:[r,0,i],f=t-r/2;return{r:Math.round((s+f)*255),g:Math.round((a+f)*255),b:Math.round((d+f)*255)}}function ln(n){let e=[];for(let t of n.matchAll(Jl)){let r=Ql(t[0]);r&&e.push(r)}for(let t of n.matchAll(/#[0-9a-fA-F]{3,8}\b/g)){let r=Xl(t[0]);r&&e.push(r)}return e}function bo(n,e){let t=n.a+e.a*(1-n.a);if(t===0)return{r:0,g:0,b:0,a:0};let r=(o,i)=>(o*n.a+i*e.a*(1-n.a))/t;return{r:r(n.r,e.r),g:r(n.g,e.g),b:r(n.b,e.b),a:t}}function go(n){let e=n/255;return e<=.03928?e/12.92:((e+.055)/1.055)**2.4}function fd(n){return .2126*go(n.r)+.7152*go(n.g)+.0722*go(n.b)}function fn(n,e){let[t,r]=[fd(n),fd(e)].sort((o,i)=>i-o);return(t+.05)/(r+.05)}var Nt=(n,e)=>`rgba(${Math.round(n.r)}, ${Math.round(n.g)}, ${Math.round(n.b)}, ${e})`,hd={r:0,g:0,b:0,a:1},It={r:255,g:255,b:255,a:1};function jt(n){let e=ln(n.accent)[0];if(!e)return{ok:!1,missing:["accent"],why:`"${n.accent}" is not a color this can read. Use a hex, rgb() or hsl() value.`};let t={},r=new Set,o=[],i=mo(e);for(let s of["dark","light"]){let a=n.base[s],d=ln(a.ground)[0]??(s==="dark"?hd:It),f=bo(ln(a.panel)[0]??It,d),c=rf(i,[f,d],s,4.5);c?Math.abs(c.l-i.l)>tf&&(r.add(`accent (${s})`),o.push(`reaching 4.5:1 on the ${s} panel would move the accent's lightness by ${Math.round(Math.abs(c.l-i.l)*100)} points, which is far enough that it stops being the same color \u2014 supply one for ${s}`)):(r.add(`accent (${s})`),o.push(`no lightness of this hue clears 4.5:1 as text on the ${s} panel, so ${s} needs an accent of its own`));let p=c??i,u=yo(p.h,p.s,p.l),l=n.accentInk?.[s]??(fn(It,u)>=fn(hd,u)?"#ffffff":"#000000"),g=fn(ln(l)[0]??It,u);g+.005<4.5&&(r.add(`accentInk (${s})`),o.push(`neither black nor white clears 4.5:1 on the accent (best ${g.toFixed(2)}:1), so text on a filled button has to be given`)),t[s]={...a,accent:Nt(u,1),accentDim:Nt(u,s==="dark"?.35:.22),accentInk:l,glow:Nt(u,s==="dark"?.28:.1),edgeBright:Nt(u,ef(u,f,s==="dark"?.55:.42,3)),...n.warn?.[s]?{warn:n.warn[s]}:{}};let h=ln(t[s].warn)[0];h&&nf(mo(h).h,p.h)<25&&(r.add(`warn (${s})`),o.push(`the warning color shares the accent's hue in ${s}, so "something is broken" looks like "this is selected"`))}return r.size>0?{ok:!1,missing:[...r].sort(),why:o.join("; ")}:{ok:!0,schemes:t}}function ef(n,e,t,r){for(let o=Math.round(t*100);o<=100;o++){let i=o/100;if(fn(bo({...n,a:i},e),e)>=r)return i}return 1}function nf(n,e){let t=Math.abs(n-e)%360;return t>180?360-t:t}var tf=.3;function rf(n,e,t,r){let o=t==="dark";for(let i=0;i<=100;i++){let s=o?n.l+i/100:n.l-i/100,a=o?n.l-i/100:n.l+i/100;for(let d of[s,a])if(!(d<0||d>1)&&e.every(f=>fn(yo(n.h,n.s,d),f)>=r))return{...n,l:d}}return null}function of(n,e){let t=e?.[n];if(t!==void 0)return(t%360+360)%360;let r=2166136261;for(let o=0;o<n.length;o++)r^=n.charCodeAt(o),r=Math.imul(r,16777619);return(r>>>0)%360}var Te=Object.freeze({navy:"#001769",turquoise:"#00e5b9",paper:"#f7f7f2",ink:"#18213a",muted:"#586174"}),vo="Montserrat",xo=Object.freeze({display:550,body:450,label:600}),wo=Object.freeze({display:600,body:400,label:600}),sf="-0.025em",af=Object.freeze({minWidth:140,clearSpace:.5,microMax:24,regularMin:32,microBelow:28});var gd={ground:"#0a0f1f",groundDeep:"#060914",wash:"none",panel:"rgba(19, 27, 52, 0.96)",panelMuted:"rgba(14, 21, 42, 0.94)",panelWarning:"rgba(48, 33, 18, 0.95)",edge:"rgba(164, 178, 222, 0.18)",edgeBright:"rgba(154, 171, 255, 0.6)",ink:"#eef0f6",inkMuted:"#aab2c6",inkFaint:"#97a0b6",accent:"#9aabff",accentDim:"rgba(154, 171, 255, 0.32)",accentInk:Te.navy,warn:"#f0a868",good:"#8fdcaa",bad:"#ffa3a3",glow:"rgba(154, 171, 255, 0.18)",bar:"rgba(10, 15, 31, 0.96)",float:"rgba(16, 23, 45, 0.98)",liftLow:"0 14px 36px -22px #000",liftHigh:"0 28px 64px -30px #000",tintAlpha:.2,tintLightness:52,gridAlpha:.35},md={ground:Te.paper,groundDeep:"#efefe8",wash:"none",panel:"#ffffff",panelMuted:"#fafaf6",panelWarning:"#fdf4ea",edge:"rgba(24, 33, 58, 0.12)",edgeBright:"rgba(0, 23, 105, 0.6)",ink:Te.ink,inkMuted:Te.muted,inkFaint:"#626b7d",accent:Te.navy,accentDim:"rgba(0, 23, 105, 0.16)",accentInk:"#ffffff",warn:"#9a5312",good:"#1b6436",bad:"#a1232d",glow:"rgba(0, 23, 105, 0.08)",bar:"rgba(255, 255, 255, 0.96)",float:"#ffffff",liftLow:"0 1px 2px rgba(24,33,58,0.06), 0 8px 24px -12px rgba(24,33,58,0.16)",liftHigh:"0 2px 6px rgba(24,33,58,0.08), 0 24px 56px -24px rgba(24,33,58,0.26)",tintAlpha:.16,tintLightness:46,gridAlpha:.5},pn={dark:gd,light:md};var Se=Object.freeze({radius:8,density:1,radiusSmall:.72,radiusSmallFloor:2,pad:15,padSmall:10,gap:7}),De=Object.freeze({body:`"${vo}", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif`,mono:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'});function df(n){let e=n?.shape?.radius??Se.radius,t=n?.shape?.density??Se.density;return Object.freeze({radius:e,radiusSmall:Math.max(Se.radiusSmallFloor,Math.round(e*Se.radiusSmall)),pad:Math.round(Se.pad*t),padSmall:Math.round(Se.padSmall*t),gap:Math.round(Se.gap*t)})}function cf(n){let e=n?.typography?.body??De.body,t=n?.typography?.display??e,o=e===De.body&&t===De.body?xo:wo,i=n?.typography?.weights;return Object.freeze({body:e,display:t,mono:n?.typography?.mono??De.mono,weights:Object.freeze({display:i?.display??o.display,body:i?.body??o.body,label:i?.label??o.label})})}var iw=Object.freeze({light:Object.freeze({roof:Object.freeze({saturation:48,lightness:82}),right:Object.freeze({saturation:40,lightness:66}),left:Object.freeze({saturation:34,lightness:55}),roofEdge:"rgba(255,255,255,0.75)",plot:Object.freeze({saturation:45,lightness:58,alpha:.12}),plotEdge:Object.freeze({saturation:40,lightness:48,alpha:.55})}),dark:Object.freeze({roof:Object.freeze({saturation:42,lightness:32}),right:Object.freeze({saturation:40,lightness:21}),left:Object.freeze({saturation:38,lightness:13}),roofEdge:"rgba(255,255,255,0.14)",plot:Object.freeze({saturation:45,lightness:48,alpha:.2}),plotEdge:Object.freeze({saturation:40,lightness:62,alpha:.55})})});function bd(n){return/^\s*(<\?xml[^>]*>\s*)?(<!--[\s\S]*?-->\s*)*(<!DOCTYPE svg[^>]*>\s*)?<svg[\s>/]/i.test(n)}var vd="http://www.w3.org/2000/svg",uf=["http://www.w3.org/1999/xhtml","http://www.w3.org/1998/Math/MathML",vd],lf=new Set("svg g defs symbol use title desc path rect circle ellipse line polyline polygon text tspan textPath linearGradient radialGradient stop pattern clipPath mask marker image filter feBlend feColorMatrix feComponentTransfer feComposite feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feMerge feMergeNode feMorphology feOffset feTile feTurbulence".split(" ")),ff=new Set(["title","desc"]),qn="it embeds a page or media",pf={script:"it has a script in it",foreignobject:"it embeds HTML (foreignObject)",iframe:qn,embed:qn,object:qn,audio:qn,video:qn,style:"it has a style sheet in it; a mark is styled by its attributes",a:"it links to something (an <a> element)"},hf={amp:"&",lt:"<",gt:">",quot:'"',apos:"'"};function gf(n){let e=!1,t=n.replace(/&(#x[0-9a-f]+|#[0-9]+|[a-z][a-z0-9]*);?/gi,(r,o)=>{if(o[0]==="#"){let s=o[1]==="x"||o[1]==="X"?parseInt(o.slice(2),16):parseInt(o.slice(1),10);return s>0&&s<=1114111?String.fromCodePoint(s):"\uFFFD"}let i=hf[o.toLowerCase()];return i===void 0&&(e=!0),i??""});return e?null:t}function mf(n){if(/\\|@|expression\s*\(|(?:image-set|cross-fade|image|element|src)\s*\(/i.test(n))return!1;for(let[,e]of n.matchAll(/url\s*\(\s*["']?\s*([^)]*)/gi))if(!e.startsWith("#"))return!1;return!0}function yf(n,e,t){let r=gf(t);if(r===null)return"it declares XML entities";let o=(e.includes(":")?e.slice(e.indexOf(":")+1):e).toLowerCase();if(o.startsWith("on"))return"it has an event handler (an on\u2026 attribute)";if(e==="xml:base")return"it loads or links to something outside itself";if(e==="xmlns")return r===vd?null:"it changes what its elements are (another xmlns)";if(e.startsWith("xmlns:"))return uf.includes(r)?"it changes what its elements are (another xmlns)":null;if(o==="href"||o==="src"){let i=r.replace(/[\u0000- ]+/g,"");return i.startsWith("#")||n==="image"&&/^data:image\/(png|jpe?g|gif|webp|avif);/i.test(i)?null:"it loads or links to something outside itself"}return mf(r)?null:o==="style"?"its style loads something outside itself":"it loads or links to something outside itself"}var yd=/^\s+([A-Za-z_][A-Za-z0-9_.:-]*)\s*=\s*(?:"([^"<]*)"|'([^'<]*)')/;function xd(n){if(/<!ENTITY/i.test(n))return"it declares XML entities";if(/<!\[CDATA\[/i.test(n))return"it has a CDATA section, which the page and the picture read differently";let e=[],t=!1,r=/^\s*(<\?xml\s[^?<>]*\?>)?/.exec(n)[0].length;for(;r<n.length;){let o=n.slice(r),i=/^[^<]+/.exec(o);if(i){if(e.length===0&&i[0].trim()!=="")return"it is not one SVG: there is text outside it";r+=i[0].length;continue}if(o.startsWith("<!--")){let l=o.indexOf("-->",4);if(l<0)return"it has a comment that never ends";let g=o.slice(4,l);if(/^-?>/.test(g)||g.includes("--")||g.includes("<!")||g.endsWith("-"))return"it has a comment the page and the picture read differently";r+=l+3;continue}if(/^<!DOCTYPE/i.test(o)){let l=/^<!DOCTYPE\s+svg\b[^<>[\]]*>/i.exec(o);if(!l||e.length>0||t)return"it declares XML entities";r+=l[0].length;continue}let s=/^<\/([A-Za-z][A-Za-z0-9_.:-]*)\s*>/.exec(o);if(s){if(e.pop()!==s[1])return`it is not one SVG: </${s[1]}> closes what is not open`;e.length===0&&(t=!0),r+=s[0].length;continue}let a=/^<([A-Za-z][A-Za-z0-9_.:-]*)/.exec(o);if(!a)return"it is not one SVG: it has markup a picture cannot hold";let d=a[1],f=pf[d.toLowerCase()];if(f)return f;if(t)return`it is not one SVG: <${d}> comes after it ends`;if(e.length===0&&d!=="svg")return"it is not one SVG";if(d.includes(":"))return`it has an element of another kind (<${d}>)`;if(!lf.has(d))return`it has a <${d}> element, which a picture does not need`;let c=e[e.length-1];if(c&&ff.has(c))return`it has an element inside a <${c}>, which the page reads as HTML`;let p=a[0].length;for(let l=yd.exec(o.slice(p));l;l=yd.exec(o.slice(p))){let g=yf(d,l[1],l[2]??l[3]??"");if(g)return g;p+=l[0].length}let u=/^\s*(\/?)>/.exec(o.slice(p));if(!u)return/(?:^|[\s/"'])on[a-z]+\s*=/i.test(o.slice(p,p+400))?"it has an event handler (an on\u2026 attribute)":`it is not one SVG: <${d}>'s attributes are not each quoted and apart`;u[1]!=="/"?e.push(d):e.length===0&&(t=!0),r+=p+u[0].length}return e.length>0?`it is not one SVG: <${e[e.length-1]}> is never closed`:t?null:"it is not one SVG"}function wd(n){if(n){if(!bd(n)){if(/^\s*</.test(n))return;let e=/^\s*([a-z][a-z0-9+.-]*):/i.exec(n)?.[1]?.toLowerCase();return e===void 0||e==="http"||e==="https"||e==="data"&&/^\s*data:image\//i.test(n)?n:void 0}return xd(n)===null?`data:image/svg+xml,${encodeURIComponent(n.trim())}`:void 0}}var Tt;function bf(){if(Tt===void 0)try{Tt=new RegExp("^\\p{RGI_Emoji}$","v")}catch{Tt=null}return Tt}function vf(n){return/\p{Extended_Pictographic}|\p{Regional_Indicator}|⃣/u.test(n)}function ko(n){if(typeof n!="string"||n.trim()==="")return"it is empty; give one emoji, like \u{1F3E1}";let e=[...new Intl.Segmenter("en",{granularity:"grapheme"}).segment(n)].map(o=>o.segment),t=e.filter(vf).length;if(t===0)return"it is not an emoji; give one emoji, like \u{1F3E1}";if(e.length>1)return t===e.length?`it is ${e.length} emoji, and a mark is one`:"it has other characters beside the emoji; give the emoji alone";let r=bf();return r&&!r.test(n)?"it is not one of the standard emoji every emoji set draws":null}function So(n){return typeof n=="object"&&n!==null&&typeof n.emoji=="string"?n.emoji:void 0}function kd(n){return`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><text x="50" y="50" dy=".35em" font-size="88" text-anchor="middle">${n}</text></svg>`}function xf(n){let e=n?.favicon;if(typeof e=="object"&&e!==null){let t=So(e);return t!==void 0&&ko(t)===null?`data:image/svg+xml,${encodeURIComponent(kd(t))}`:void 0}return wd(e)}function wf(n){let e=n?.logo;return typeof e=="string"?e===""?void 0:{light:e}:e&&typeof e.light=="string"&&e.light!==""?e:void 0}function kf(n){if(n?.logo)return;let e=So(n?.favicon);return e!==void 0&&ko(e)===null?e:void 0}var Sd={"system-sans":'ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',"system-serif":'ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, Cambria, "Times New Roman", serif',"system-mono":De.mono},Sf=["serif","sans-serif","monospace","cursive","fantasy","system-ui","math","emoji","-apple-system","BlinkMacSystemFont"],$d=["Georgia","Times New Roman","Times","Iowan Old Style","Palatino","Palatino Linotype","Charter","Cambria","Baskerville","Optima","Helvetica","Helvetica Neue","Arial","Verdana","Segoe UI","Roboto","Avenir","Avenir Next","Gill Sans","Menlo","Monaco","Consolas","SF Mono","SFMono-Regular","Courier New"];var $f=n=>new Set(n.map(e=>e.toLowerCase()));function Rf(n){return $f([...Sf,...$d]).has(n.toLowerCase())||n.toLowerCase().startsWith("ui-")}function _f(n){return Sd[n]??n}function fw(n){let e=jt({accent:n,base:pn});return e.ok||!e.missing.every(t=>t.startsWith("warn"))?e:jt({accent:n,base:pn,warn:{light:pn.light.bad,dark:pn.dark.bad}})}function Af(n,e,t){if(t.rows===0)return;let r=ne(n,e.rows).toLowerCase(),o=ne(n,e.columns).toLowerCase(),i=e.rows===e.columns,s=i?`link ${r} to each other`:`link ${r} to ${o}`;if(t.columns===0)return`No ${o} yet: ${s}.`;if(t.cells>0||typeof e.link=="object"&&e.link!==null)return;let a=K(n.tryDefinition(e.rows),e.rows);return i?`No ${a} is linked to another yet: ${s}.`:`No ${a} is linked to ${Ge(K(n.tryDefinition(e.columns),e.columns))} yet: ${s}.`}var ie={connectors:{all:{route:"curve",visible:!0},byEdge:{}},captions:{visible:!0},grid:{visible:!0,size:64},lattice:{visible:!0,size:46},tags:{visible:!0},emphasis:{rest:.34,dim:.12},marks:{flag:"\u26A0"}};function Of(n){return n?{connectors:{all:{...ie.connectors.all,...n.connectors?.all??{}},byEdge:{...ie.connectors.byEdge,...n.connectors?.byEdge??{}}},captions:{...ie.captions,...n.captions??{}},grid:{...ie.grid,...n.grid??{}},lattice:{...ie.lattice,...n.lattice??{}},tags:{...ie.tags,...n.tags??{}},emphasis:{...ie.emphasis,...n.emphasis??{}},marks:{...ie.marks,...n.marks??{}}}:ie}function Ef(n,e){return{...n.connectors.all,...n.connectors.byEdge[e]??{}}}function Pf(n){return[` --graview-kit-grid: ${n.grid.visible?1:0};`,` --graview-kit-grid-size: ${n.grid.size}px;`,` --graview-kit-lattice: ${n.lattice.visible?1:0};`,` --graview-kit-lattice-size: ${n.lattice.size}px;`,` --graview-kit-tags: ${n.tags.visible?"inline-flex":"none"};`,` --graview-kit-captions: ${n.captions.visible?"block":"none"};`,` --graview-kit-rest: ${n.emphasis.rest};`,` --graview-kit-dim: ${n.emphasis.dim};`,` --graview-kit-flag: "${n.marks.flag.replace(/"/g,"'")}";`].join(`
5
+ `)}function zf(n,e,t){let r=new Set([e]);for(let[o,i]of t.entries()){let s=n.edge(i);if(!s)return{ok:!1,at:o};let a=s.from,d=s.to==="*"?n.kinds:s.to,f=new Set;for(let c of r){if(a.includes(c))for(let p of d)f.add(p);if(s.to==="*"||d.includes(c))for(let p of a)f.add(p)}if(f.size===0)return{ok:!1,at:o};r=f}return{ok:!0,reached:r}}function Mf(n){let e=n.name??"";return e&&n.onBehalfOfName?`${e}, for ${n.onBehalfOfName}`:e}function $o(n,e,t=2500){return n.held==="socket"?!0:n.until!==void 0?e<Date.parse(n.until):e-Date.parse(n.at)<t}function Nf(n){return`${n.kind}:${n.id??""}:${n.session??""}`}function If(n,e,t,r=2500,o){let i=new Map;for(let[s,a]of n)$o(a,t,r)&&i.set(s,a);for(let s of e){if(!$o(s,t,r)){i.delete(s.participant);continue}let a=i.get(s.participant);(!a||Date.parse(a.at)<=Date.parse(s.at))&&i.set(s.participant,s)}return o!==void 0&&i.delete(o),i}function jf(n,e){return!n||!e?n===e:n.participant===e.participant&&n.kind===e.kind&&n.name===e.name&&n.onBehalfOf===e.onBehalfOf&&n.onBehalfOfName===e.onBehalfOfName&&n.until===e.until&&n.held===e.held&&n.hue===e.hue&&n.stop===e.stop&&(n.over??null)===(e.over??null)&&(n.robot?.at??null)===(e.robot?.at??null)&&(n.robot?.mode??null)===(e.robot?.mode??null)}export{Ve as a,ns as b,ts as c,kc as d,mr as e,$n as f,Rn as g,D as h,Ug as i,Wg as j,_n as k,qg as l,Hg as m,Yg as n,yr as o,Jg as p,Ue as q,We as r,Xg as s,Qg as t,em as u,ls as v,fs as w,Q as x,nm as y,dt as z,tm as A,rm as B,I as C,Cc as D,Zt as E,Ce as F,Jn as G,Tf as H,H as I,Rd as J,_d as K,Eo as L,Qn as M,Ad as N,ge as O,Lt as P,Po as Q,Ct as R,Pd as S,zd as T,se as U,Md as V,Nd as W,Id as X,jd as Y,Td as Z,vn as _,No as $,Fd as aa,Bt as ba,F as ca,Zd as da,C as ea,Ld as fa,ne as ga,Cd as ha,Gd as ia,nt as ja,Ge as ka,K as la,Gc as ma,ct as na,xr as oa,ps as pa,hs as qa,gs as ra,Bc as sa,An as ta,ys as ua,oy as va,lt as wa,ld as xa,Kx as ya,qc as za,Yc as Aa,xs as Ba,Jc as Ca,dy as Da,On as Ea,Xc as Fa,eu as Ga,cy as Ha,uy as Ia,nu as Ja,ks as Ka,Vl as La,ft as Ma,tu as Na,He as Oa,Pn as Pa,pt as Qa,py as Ra,Ye as Sa,qe as Ta,Es as Ua,iu as Va,zn as Wa,Ee as Xa,yy as Ya,$r as Za,ht as _a,su as $a,z as ab,N as bb,W as cb,cu as db,yt as eb,Ny as fb,uu as gb,lu as hb,Wl as ib,ql as jb,T as kb,q as lb,ve as mb,xe as nb,By as ob,Zs as pb,en as qb,j as rb,nn as sb,ze as tb,ee as ub,mu as vb,re as wb,Yu as xb,qr as yb,Ra as zb,an as Ab,Yb as Bb,Hr as Cb,Oa as Db,Ea as Eb,Yr as Fb,ke as Gb,Ur as Hb,Cn as Ib,tl as Jb,Pa as Kb,ab as Lb,db as Mb,Jr as Nb,Xr as Ob,Ia as Pb,Fa as Qb,cl as Rb,$t as Sb,Me as Tb,po as Ub,Hl as Vb,dn as Wb,Ir as Xb,Xs as Yb,vu as Zb,wu as _b,of as $b,vo as ac,sf as bc,pn as cc,De as dc,df as ec,cf as fc,bd as gc,xd as hc,wd as ic,xf as jc,wf as kc,kf as lc,Rf as mc,_f as nc,fw as oc,El as pc,Af as qc,Of as rc,Ef as sc,Pf as tc,ku as uc,Su as vc,$u as wc,Ru as xc,Ne as yc,Fn as zc,oe as Ac,Dn as Bc,on as Cc,Zn as Dc,Cr as Ec,Ln as Fc,_u as Gc,Au as Hc,zf as Ic,hl as Jc,gl as Kc,wa as Lc,ml as Mc,nd as Nc,cn as Oc,so as Pc,xl as Qc,wl as Rc,kl as Sc,td as Tc,co as Uc,Sl as Vc,fe as Wc,Un as Xc,$l as Yc,Rl as Zc,rd as _c,_l as $c,Al as ad,od as bd,Wn as cd,Pl as dd,sd as ed,ad as fd,Ml as gd,Nl as hd,Il as id,jl as jd,dd as kd,Tl as ld,Dl as md,Fl as nd,Zl as od,Ll as pd,Cl as qd,fo as rd,Gl as sd,Bl as td,Mf as ud,Nf as vd,If as wd,jf as xd};