@dbml/parse 9.0.0-optional-ref.10 → 9.0.0-optional-ref.11

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.
@@ -1,28 +1,28 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Symbol(`PASS_THROUGH`),t=Symbol(`UNHANDLED`),n=class e{static create(t,n,r,i){return new e(t,n,r,i)}constructor(e,t,n,r){this.value=e,this.errors=t??[],this.warnings=n,this.infos=r}filter(t){return this.value===t?new e(void 0,this.errors,this.warnings,this.infos):this}hasValue(e){return this.value===e}getFiltered(e){return this.value===e?void 0:this.value}getValue(){return this.value}getErrors(){return this.errors}getWarnings(){return this.warnings??[]}getInfos(){return this.infos??[]}chainFiltered(t,n){if(this.value===n)return new e(void 0,this.errors,this.warnings,this.infos);let r=t(this.value),i=[...this.errors,...r.errors],a=[...this.getWarnings(),...r.getWarnings()],o=[...this.getInfos(),...r.getInfos()];return new e(r.value,i,a,o)}chain(t){let n=t(this.value),r=[...this.errors,...n.errors],i=[...this.getWarnings(),...n.getWarnings()],a=[...this.getInfos(),...n.getInfos()];return new e(n.value,r,i,a)}mapFiltered(t,n){return this.value===n?new e(void 0,this.errors,this.warnings,this.infos):new e(t(this.value),this.errors,this.warnings,this.infos)}map(t){return new e(t(this.value),this.errors,this.warnings,this.infos)}},r=function(e){return e.Table=`table`,e.Enum=`enum`,e.Ref=`ref`,e.Note=`note`,e.Project=`project`,e.Indexes=`indexes`,e.TableGroup=`tablegroup`,e.TablePartial=`tablepartial`,e.Checks=`checks`,e.Records=`records`,e.DiagramView=`diagramview`,e.DiagramViewTables=`tables`,e.DiagramViewNotes=`notes`,e.DiagramViewTableGroups=`tablegroups`,e.DiagramViewSchemas=`schemas`,e}({}),i=function(e){return e.Color=`color`,e.HeaderColor=`headercolor`,e.Note=`note`,e.PK=`pk`,e.PrimaryKey=`primary key`,e.Unique=`unique`,e.Ref=`ref`,e.NotNull=`not null`,e.Null=`null`,e.Increment=`increment`,e.Default=`default`,e.Name=`name`,e.Type=`type`,e.Check=`check`,e.Update=`update`,e.Delete=`delete`,e.Inactive=`inactive`,e}({}),a=typeof global==`object`&&global&&global.Object===Object&&global,o=typeof self==`object`&&self&&self.Object===Object&&self,s=a||o||Function(`return this`)(),c=s.Symbol,l=Object.prototype,u=l.hasOwnProperty,d=l.toString,f=c?c.toStringTag:void 0;function p(e){var t=u.call(e,f),n=e[f];try{e[f]=void 0;var r=!0}catch{}var i=d.call(e);return r&&(t?e[f]=n:delete e[f]),i}var m=Object.prototype.toString;function ee(e){return m.call(e)}var te=`[object Null]`,ne=`[object Undefined]`,re=c?c.toStringTag:void 0;function ie(e){return e==null?e===void 0?ne:te:re&&re in Object(e)?p(e):ee(e)}function ae(e){return typeof e==`object`&&!!e}var oe=`[object Symbol]`;function se(e){return typeof e==`symbol`||ae(e)&&ie(e)==oe}function ce(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var le=Array.isArray,ue=1/0,de=c?c.prototype:void 0,fe=de?de.toString:void 0;function pe(e){if(typeof e==`string`)return e;if(le(e))return ce(e,pe)+``;if(se(e))return fe?fe.call(e):``;var t=e+``;return t==`0`&&1/e==-ue?`-0`:t}var me=/\s/;function he(e){for(var t=e.length;t--&&me.test(e.charAt(t)););return t}var ge=/^\s+/;function _e(e){return e&&e.slice(0,he(e)+1).replace(ge,``)}function ve(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var ye=NaN,be=/^[-+]0x[0-9a-f]+$/i,xe=/^0b[01]+$/i,Se=/^0o[0-7]+$/i,Ce=parseInt;function we(e){if(typeof e==`number`)return e;if(se(e))return ye;if(ve(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=ve(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=_e(e);var n=xe.test(e);return n||Se.test(e)?Ce(e.slice(2),n?2:8):be.test(e)?ye:+e}var Te=1/0,Ee=17976931348623157e292;function De(e){return e?(e=we(e),e===Te||e===-Te?(e<0?-1:1)*Ee:e===e?e:0):e===0?e:0}function Oe(e){var t=De(e),n=t%1;return t===t?n?t-n:t:0}function ke(e){return e}var Ae=`[object AsyncFunction]`,je=`[object Function]`,Me=`[object GeneratorFunction]`,Ne=`[object Proxy]`;function Pe(e){if(!ve(e))return!1;var t=ie(e);return t==je||t==Me||t==Ae||t==Ne}var Fe=s[`__core-js_shared__`],Ie=function(){var e=/[^.]+$/.exec(Fe&&Fe.keys&&Fe.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function Le(e){return!!Ie&&Ie in e}var Re=Function.prototype.toString;function ze(e){if(e!=null){try{return Re.call(e)}catch{}try{return e+``}catch{}}return``}var Be=/[\\^$.*+?()[\]{}|]/g,Ve=/^\[object .+?Constructor\]$/,He=Function.prototype,Ue=Object.prototype,We=He.toString,Ge=Ue.hasOwnProperty,Ke=RegExp(`^`+We.call(Ge).replace(Be,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function qe(e){return!ve(e)||Le(e)?!1:(Pe(e)?Ke:Ve).test(ze(e))}function Je(e,t){return e?.[t]}function Ye(e,t){var n=Je(e,t);return qe(n)?n:void 0}var Xe=Ye(s,`WeakMap`);function Ze(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Qe(){}var $e=800,et=16,tt=Date.now;function nt(e){var t=0,n=0;return function(){var r=tt(),i=et-(r-n);if(n=r,i>0){if(++t>=$e)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function rt(e){return function(){return e}}var it=function(){try{var e=Ye(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),at=nt(it?function(e,t){return it(e,`toString`,{configurable:!0,enumerable:!1,value:rt(t),writable:!0})}:ke);function ot(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function st(e){return e!==e}function ct(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}function lt(e,t,n){return t===t?ct(e,t,n):ot(e,st,n)}function ut(e,t){return!!(e!=null&&e.length)&&lt(e,t,0)>-1}var dt=9007199254740991,ft=/^(?:0|[1-9]\d*)$/;function pt(e,t){var n=typeof e;return t??=dt,!!t&&(n==`number`||n!=`symbol`&&ft.test(e))&&e>-1&&e%1==0&&e<t}function mt(e,t,n){t==`__proto__`&&it?it(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function ht(e,t){return e===t||e!==e&&t!==t}var gt=Math.max;function _t(e,t,n){return t=gt(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=gt(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=r[i];return s[t]=n(o),Ze(e,this,s)}}function vt(e,t){return at(_t(e,t,ke),e+``)}var yt=9007199254740991;function bt(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=yt}function xt(e){return e!=null&&bt(e.length)&&!Pe(e)}var St=Object.prototype;function Ct(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||St)}function wt(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var Tt=`[object Arguments]`;function Et(e){return ae(e)&&ie(e)==Tt}var Dt=Object.prototype,Ot=Dt.hasOwnProperty,kt=Dt.propertyIsEnumerable,At=Et(function(){return arguments}())?Et:function(e){return ae(e)&&Ot.call(e,`callee`)&&!kt.call(e,`callee`)};function jt(){return!1}var Mt=typeof exports==`object`&&exports&&!exports.nodeType&&exports,Nt=Mt&&typeof module==`object`&&module&&!module.nodeType&&module,Pt=Nt&&Nt.exports===Mt?s.Buffer:void 0,Ft=(Pt?Pt.isBuffer:void 0)||jt,It=`[object Arguments]`,Lt=`[object Array]`,Rt=`[object Boolean]`,zt=`[object Date]`,Bt=`[object Error]`,Vt=`[object Function]`,Ht=`[object Map]`,Ut=`[object Number]`,Wt=`[object Object]`,Gt=`[object RegExp]`,Kt=`[object Set]`,qt=`[object String]`,Jt=`[object WeakMap]`,Yt=`[object ArrayBuffer]`,Xt=`[object DataView]`,Zt=`[object Float32Array]`,Qt=`[object Float64Array]`,$t=`[object Int8Array]`,en=`[object Int16Array]`,tn=`[object Int32Array]`,nn=`[object Uint8Array]`,rn=`[object Uint8ClampedArray]`,an=`[object Uint16Array]`,on=`[object Uint32Array]`,sn={};sn[Zt]=sn[Qt]=sn[$t]=sn[en]=sn[tn]=sn[nn]=sn[rn]=sn[an]=sn[on]=!0,sn[It]=sn[Lt]=sn[Yt]=sn[Rt]=sn[Xt]=sn[zt]=sn[Bt]=sn[Vt]=sn[Ht]=sn[Ut]=sn[Wt]=sn[Gt]=sn[Kt]=sn[qt]=sn[Jt]=!1;function cn(e){return ae(e)&&bt(e.length)&&!!sn[ie(e)]}function ln(e){return function(t){return e(t)}}var un=typeof exports==`object`&&exports&&!exports.nodeType&&exports,dn=un&&typeof module==`object`&&module&&!module.nodeType&&module,fn=dn&&dn.exports===un&&a.process,pn=function(){try{return dn&&dn.require&&dn.require(`util`).types||fn&&fn.binding&&fn.binding(`util`)}catch{}}(),mn=pn&&pn.isTypedArray,hn=mn?ln(mn):cn,gn=Object.prototype.hasOwnProperty;function _n(e,t){var n=le(e),r=!n&&At(e),i=!n&&!r&&Ft(e),a=!n&&!r&&!i&&hn(e),o=n||r||i||a,s=o?wt(e.length,String):[],c=s.length;for(var l in e)(t||gn.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||pt(l,c)))&&s.push(l);return s}function vn(e,t){return function(n){return e(t(n))}}var yn=vn(Object.keys,Object),bn=Object.prototype.hasOwnProperty;function xn(e){if(!Ct(e))return yn(e);var t=[];for(var n in Object(e))bn.call(e,n)&&n!=`constructor`&&t.push(n);return t}function Sn(e){return xt(e)?_n(e):xn(e)}function Cn(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var wn=Object.prototype.hasOwnProperty;function Tn(e){if(!ve(e))return Cn(e);var t=Ct(e),n=[];for(var r in e)r==`constructor`&&(t||!wn.call(e,r))||n.push(r);return n}function En(e){return xt(e)?_n(e,!0):Tn(e)}var Dn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,On=/^\w*$/;function kn(e,t){if(le(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||se(e)?!0:On.test(e)||!Dn.test(e)||t!=null&&e in Object(t)}var An=Ye(Object,`create`);function jn(){this.__data__=An?An(null):{},this.size=0}function Mn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=+!!t,t}var Nn=`__lodash_hash_undefined__`,Pn=Object.prototype.hasOwnProperty;function Fn(e){var t=this.__data__;if(An){var n=t[e];return n===Nn?void 0:n}return Pn.call(t,e)?t[e]:void 0}var In=Object.prototype.hasOwnProperty;function Ln(e){var t=this.__data__;return An?t[e]!==void 0:In.call(t,e)}var Rn=`__lodash_hash_undefined__`;function zn(e,t){var n=this.__data__;return this.size+=+!this.has(e),n[e]=An&&t===void 0?Rn:t,this}function Bn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Bn.prototype.clear=jn,Bn.prototype.delete=Mn,Bn.prototype.get=Fn,Bn.prototype.has=Ln,Bn.prototype.set=zn;function Vn(){this.__data__=[],this.size=0}function Hn(e,t){for(var n=e.length;n--;)if(ht(e[n][0],t))return n;return-1}var Un=Array.prototype.splice;function Wn(e){var t=this.__data__,n=Hn(t,e);return n<0?!1:(n==t.length-1?t.pop():Un.call(t,n,1),--this.size,!0)}function Gn(e){var t=this.__data__,n=Hn(t,e);return n<0?void 0:t[n][1]}function Kn(e){return Hn(this.__data__,e)>-1}function qn(e,t){var n=this.__data__,r=Hn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Jn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Jn.prototype.clear=Vn,Jn.prototype.delete=Wn,Jn.prototype.get=Gn,Jn.prototype.has=Kn,Jn.prototype.set=qn;var Yn=Ye(s,`Map`);function Xn(){this.size=0,this.__data__={hash:new Bn,map:new(Yn||Jn),string:new Bn}}function Zn(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}function Qn(e,t){var n=e.__data__;return Zn(t)?n[typeof t==`string`?`string`:`hash`]:n.map}function $n(e){var t=Qn(this,e).delete(e);return this.size-=+!!t,t}function er(e){return Qn(this,e).get(e)}function tr(e){return Qn(this,e).has(e)}function nr(e,t){var n=Qn(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function rr(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}rr.prototype.clear=Xn,rr.prototype.delete=$n,rr.prototype.get=er,rr.prototype.has=tr,rr.prototype.set=nr;var ir=`Expected a function`;function ar(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(ir);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ar.Cache||rr),n}ar.Cache=rr;var or=500;function sr(e){var t=ar(e,function(e){return n.size===or&&n.clear(),e}),n=t.cache;return t}var cr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,lr=/\\(\\)?/g,ur=sr(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(cr,function(e,n,r,i){t.push(r?i.replace(lr,`$1`):n||e)}),t});function dr(e){return e==null?``:pe(e)}function fr(e,t){return le(e)?e:kn(e,t)?[e]:ur(dr(e))}var pr=1/0;function mr(e){if(typeof e==`string`||se(e))return e;var t=e+``;return t==`0`&&1/e==-pr?`-0`:t}function hr(e,t){t=fr(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[mr(t[n++])];return n&&n==r?e:void 0}function gr(e,t,n){var r=e==null?void 0:hr(e,t);return r===void 0?n:r}function _r(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var vr=c?c.isConcatSpreadable:void 0;function yr(e){return le(e)||At(e)||!!(vr&&e&&e[vr])}function br(e,t,n,r,i){var a=-1,o=e.length;for(n||=yr,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?br(s,t-1,n,r,i):_r(i,s):r||(i[i.length]=s)}return i}function xr(e){return e!=null&&e.length?br(e,1):[]}function Sr(){this.__data__=new Jn,this.size=0}function Cr(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function wr(e){return this.__data__.get(e)}function Tr(e){return this.__data__.has(e)}var Er=200;function Dr(e,t){var n=this.__data__;if(n instanceof Jn){var r=n.__data__;if(!Yn||r.length<Er-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new rr(r)}return n.set(e,t),this.size=n.size,this}function Or(e){var t=this.__data__=new Jn(e);this.size=t.size}Or.prototype.clear=Sr,Or.prototype.delete=Cr,Or.prototype.get=wr,Or.prototype.has=Tr,Or.prototype.set=Dr;function kr(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}function Ar(){return[]}var jr=Object.prototype.propertyIsEnumerable,Mr=Object.getOwnPropertySymbols,Nr=Mr?function(e){return e==null?[]:(e=Object(e),kr(Mr(e),function(t){return jr.call(e,t)}))}:Ar;function Pr(e,t,n){var r=t(e);return le(e)?r:_r(r,n(e))}function Fr(e){return Pr(e,Sn,Nr)}var Ir=Ye(s,`DataView`),Lr=Ye(s,`Promise`),Rr=Ye(s,`Set`),zr=`[object Map]`,Br=`[object Object]`,Vr=`[object Promise]`,Hr=`[object Set]`,Ur=`[object WeakMap]`,Wr=`[object DataView]`,Gr=ze(Ir),Kr=ze(Yn),qr=ze(Lr),Jr=ze(Rr),Yr=ze(Xe),Xr=ie;(Ir&&Xr(new Ir(new ArrayBuffer(1)))!=Wr||Yn&&Xr(new Yn)!=zr||Lr&&Xr(Lr.resolve())!=Vr||Rr&&Xr(new Rr)!=Hr||Xe&&Xr(new Xe)!=Ur)&&(Xr=function(e){var t=ie(e),n=t==Br?e.constructor:void 0,r=n?ze(n):``;if(r)switch(r){case Gr:return Wr;case Kr:return zr;case qr:return Vr;case Jr:return Hr;case Yr:return Ur}return t});var Zr=Xr,Qr=s.Uint8Array;function $r(e){for(var t=-1,n=e==null?0:e.length,r=0,i=[];++t<n;){var a=e[t];a&&(i[r++]=a)}return i}var ei=`__lodash_hash_undefined__`;function ti(e){return this.__data__.set(e,ei),this}function ni(e){return this.__data__.has(e)}function ri(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new rr;++t<n;)this.add(e[t])}ri.prototype.add=ri.prototype.push=ti,ri.prototype.has=ni;function ii(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function ai(e,t){return e.has(t)}var oi=1,si=2;function ci(e,t,n,r,i,a){var o=n&oi,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&si?new ri:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],ee=t[d];if(r)var te=o?r(ee,m,d,t,e,a):r(m,ee,d,e,t,a);if(te!==void 0){if(te)continue;f=!1;break}if(p){if(!ii(t,function(e,t){if(!ai(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===ee||i(m,ee,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}function li(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function ui(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var di=1,fi=2,pi=`[object Boolean]`,mi=`[object Date]`,hi=`[object Error]`,gi=`[object Map]`,_i=`[object Number]`,vi=`[object RegExp]`,yi=`[object Set]`,bi=`[object String]`,xi=`[object Symbol]`,Si=`[object ArrayBuffer]`,Ci=`[object DataView]`,wi=c?c.prototype:void 0,Ti=wi?wi.valueOf:void 0;function Ei(e,t,n,r,i,a,o){switch(n){case Ci:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Si:return!(e.byteLength!=t.byteLength||!a(new Qr(e),new Qr(t)));case pi:case mi:case _i:return ht(+e,+t);case hi:return e.name==t.name&&e.message==t.message;case vi:case bi:return e==t+``;case gi:var s=li;case yi:var c=r&di;if(s||=ui,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=fi,o.set(e,t);var u=ci(s(e),s(t),r,i,a,o);return o.delete(e),u;case xi:if(Ti)return Ti.call(e)==Ti.call(t)}return!1}var Di=1,Oi=Object.prototype.hasOwnProperty;function ki(e,t,n,r,i,a){var o=n&Di,s=Fr(e),c=s.length;if(c!=Fr(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Oi.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var ee=e[u],te=t[u];if(r)var ne=o?r(te,ee,u,t,e,a):r(ee,te,u,e,t,a);if(!(ne===void 0?ee===te||i(ee,te,n,r,a):ne)){p=!1;break}m||=u==`constructor`}if(p&&!m){var re=e.constructor,ie=t.constructor;re!=ie&&`constructor`in e&&`constructor`in t&&!(typeof re==`function`&&re instanceof re&&typeof ie==`function`&&ie instanceof ie)&&(p=!1)}return a.delete(e),a.delete(t),p}var Ai=1,ji=`[object Arguments]`,Mi=`[object Array]`,Ni=`[object Object]`,Pi=Object.prototype.hasOwnProperty;function Fi(e,t,n,r,i,a){var o=le(e),s=le(t),c=o?Mi:Zr(e),l=s?Mi:Zr(t);c=c==ji?Ni:c,l=l==ji?Ni:l;var u=c==Ni,d=l==Ni,f=c==l;if(f&&Ft(e)){if(!Ft(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new Or,o||hn(e)?ci(e,t,n,r,i,a):Ei(e,t,c,n,r,i,a);if(!(n&Ai)){var p=u&&Pi.call(e,`__wrapped__`),m=d&&Pi.call(t,`__wrapped__`);if(p||m){var ee=p?e.value():e,te=m?t.value():t;return a||=new Or,i(ee,te,n,r,a)}}return f?(a||=new Or,ki(e,t,n,r,i,a)):!1}function Ii(e,t,n,r,i){return e===t?!0:e==null||t==null||!ae(e)&&!ae(t)?e!==e&&t!==t:Fi(e,t,n,r,Ii,i)}var Li=1,Ri=2;function zi(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new Or;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?Ii(u,l,Li|Ri,r,d):f))return!1}}return!0}function Bi(e){return e===e&&!ve(e)}function Vi(e){for(var t=Sn(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,Bi(i)]}return t}function Hi(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function Ui(e){var t=Vi(e);return t.length==1&&t[0][2]?Hi(t[0][0],t[0][1]):function(n){return n===e||zi(n,e,t)}}function Wi(e,t){return e!=null&&t in Object(e)}function Gi(e,t,n){t=fr(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=mr(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&bt(i)&&pt(o,i)&&(le(e)||At(e)))}function Ki(e,t){return e!=null&&Gi(e,t,Wi)}var qi=1,Ji=2;function Yi(e,t){return kn(e)&&Bi(t)?Hi(mr(e),t):function(n){var r=gr(n,e);return r===void 0&&r===t?Ki(n,e):Ii(t,r,qi|Ji)}}function Xi(e){return function(t){return t?.[e]}}function Zi(e){return function(t){return hr(t,e)}}function Qi(e){return kn(e)?Xi(mr(e)):Zi(e)}function $i(e){return typeof e==`function`?e:e==null?ke:typeof e==`object`?le(e)?Yi(e[0],e[1]):Ui(e):Qi(e)}function ea(e,t,n,r){for(var i=-1,a=e==null?0:e.length;++i<a;){var o=e[i];t(r,o,n(o),e)}return r}function ta(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var na=ta();function ra(e,t){return e&&na(e,t,Sn)}function ia(e,t){return function(n,r){if(n==null)return n;if(!xt(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var aa=ia(ra);function oa(e,t,n,r){return aa(e,function(e,i,a){t(r,e,n(e),a)}),r}function sa(e,t){return function(n,r){var i=le(n)?ea:oa,a=t?t():{};return i(n,e,$i(r,2),a)}}function ca(e){return ae(e)&&xt(e)}function la(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}var ua=200;function da(e,t,n,r){var i=-1,a=ut,o=!0,s=e.length,c=[],l=t.length;if(!s)return c;n&&(t=ce(t,ln(n))),r?(a=la,o=!1):t.length>=ua&&(a=ai,o=!1,t=new ri(t));outer:for(;++i<s;){var u=e[i],d=n==null?u:n(u);if(u=r||u!==0?u:0,o&&d===d){for(var f=l;f--;)if(t[f]===d)continue outer;c.push(u)}else a(t,d,r)||c.push(u)}return c}var fa=vt(function(e,t){return ca(e)?da(e,br(t,1,ca,!0)):[]});function h(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function pa(e){return typeof e==`function`?e:ke}function ma(e,t){var n=[];return aa(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function ha(e,t){return(le(e)?kr:ma)(e,$i(t,3))}var ga=Math.max,_a=Math.min;function va(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return n!==void 0&&(i=Oe(n),i=n<0?ga(r+i,0):_a(i,r-1)),ot(e,$i(t,3),i,!0)}function ya(e){return e&&e.length?e[0]:void 0}function ba(e,t){var n=-1,r=xt(e)?Array(e.length):[];return aa(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function xa(e,t){return(le(e)?ce:ba)(e,$i(t,3))}function Sa(e,t){return br(xa(e,t),1)}function Ca(e,t){return e==null?e:na(e,pa(t),En)}var wa=Object.prototype.hasOwnProperty,Ta=sa(function(e,t,n){wa.call(e,n)?e[n].push(t):mt(e,n,[t])}),Ea=`[object Map]`,Da=`[object Set]`,Oa=Object.prototype.hasOwnProperty;function ka(e){if(e==null)return!0;if(xt(e)&&(le(e)||typeof e==`string`||typeof e.splice==`function`||Ft(e)||hn(e)||At(e)))return!e.length;var t=Zr(e);if(t==Ea||t==Da)return!e.size;if(Ct(e))return!xn(e).length;for(var n in e)if(Oa.call(e,n))return!1;return!0}var Aa=sa(function(e,t,n){mt(e,n,t)}),g=sa(function(e,t,n){e[+!n].push(t)},function(){return[[],[]]}),ja=Rr&&1/ui(new Rr([,-0]))[1]==1/0?function(e){return new Rr(e)}:Qe,Ma=200;function Na(e,t,n){var r=-1,i=ut,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=la;else if(a>=Ma){var l=t?null:ja(e);if(l)return ui(l);o=!1,i=ai,c=new ri}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}function Pa(e){return e&&e.length?Na(e):[]}function Fa(e,t){return e&&e.length?Na(e,$i(t,2)):[]}var Ia=Math.max;function La(e){if(!(e&&e.length))return[];var t=0;return e=kr(e,function(e){if(ca(e))return t=Ia(e.length,t),!0}),wt(t,function(t){return ce(e,Xi(t))})}var Ra=vt(La),_=function(e){return e.SPACE=`<space>`,e.TAB=`<tab>`,e.NEWLINE=`<newline>`,e.COMMA=`<comma>`,e.LPAREN=`<lparen>`,e.RPAREN=`<rparen>`,e.LBRACE=`<lbrace>`,e.RBRACE=`<rbrace>`,e.LBRACKET=`<lbracket>`,e.RBRACKET=`<rbracket>`,e.LANGLE=`<langle>`,e.RANGLE=`<rangle>`,e.OP=`<op>`,e.EOF=`<eof>`,e.NUMERIC_LITERAL=`<number>`,e.STRING_LITERAL=`<string>`,e.COLOR_LITERAL=`<color>`,e.FUNCTION_EXPRESSION=`<function-expression>`,e.QUOTED_STRING=`<variable>`,e.IDENTIFIER=`<identifier>`,e.SEMICOLON=`<semicolon>`,e.COLON=`<colon>`,e.SINGLE_LINE_COMMENT=`<single-line-comment>`,e.MULTILINE_COMMENT=`<multiline-comment>`,e.WILDCARD=`<wildcard>`,e}({});function za(e){switch(e.kind){case`<newline>`:case`<space>`:case`<tab>`:case`<single-line-comment>`:case`<multiline-comment>`:return!0;default:return!1}}function Ba(e){if(!e)return!1;switch(e){case`+`:case`-`:case`/`:case`%`:case`<`:case`>`:case`=`:case`!`:case`?`:case`.`:case`&`:case`|`:case`~`:return!0;default:return!1}}function Va(e){return e!==void 0&&e.kind===`<op>`}var Ha=class e{constructor(e,t,n,r,i,a){this.kind=e,this.filepath=t,this.startPos=n,this.endPos=r,this.value=i,this.leadingTrivia=[],this.trailingTrivia=[],this.leadingInvalid=[],this.trailingInvalid=[],this.isInvalid=a,this.start=n.offset,this.end=r.offset}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}};function Ua(e){return e.trailingTrivia.find(({kind:e})=>e===_.NEWLINE)!==void 0}function Wa(e,t){return t.leadingTrivia.find(({kind:e})=>e===_.NEWLINE)!==void 0||Ua(e)}function Ga(e){return e.trailingTrivia.find(({kind:e})=>[_.SPACE,_.TAB].includes(e))!==void 0}function Ka(e){return e.trailingTrivia.length===0?e.end:Ka(h(e.trailingTrivia))}function qa(e){return e.leadingTrivia.length===0?e.start:qa(e.leadingTrivia[0])}function Ja(e){return[_.SINGLE_LINE_COMMENT,_.MULTILINE_COMMENT].includes(e.kind)}function Ya(e){return e?.kind===_.IDENTIFIER&&e.value.toLowerCase()===`as`}function Xa(e){return e?.kind===_.IDENTIFIER&&e.value.toLowerCase()===`use`}function Za(e){return e?.kind===_.IDENTIFIER&&e.value.toLowerCase()===`from`}function Qa(e){return e?.kind===_.IDENTIFIER&&e.value.toLowerCase()===`reuse`}function $a(e){return!!e?.isInvalid}var eo=class{constructor(e){this.generator=e}create(e,t,n){return new e(t,this.generator.nextId(),n)}},to=/^[A-Za-z]:\//;function no(e=``){return e&&e.replace(/\\/g,`/`).replace(to,e=>e.toUpperCase())}var ro=/^[/\\]{2}/,io=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,ao=/^[A-Za-z]:$/,oo=/^\/([A-Za-z]:)?$/,so=/.(\.[^./]+|\.)$/,co=function(e){if(e.length===0)return`.`;e=no(e);let t=e.match(ro),n=mo(e),r=e[e.length-1]===`/`;return e=po(e,!n),e.length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),ao.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!mo(e)?`/${e}`:e)},lo=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;e&&r?t+=n.slice(1):t+=e||r?n:`/${n}`}else t+=n;return co(t)};function uo(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}var fo=function(...e){e=e.map(e=>no(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:uo();!i||i.length===0||(t=`${i}/${t}`,n=mo(i))}return t=po(t,!n),n&&!mo(t)?`/${t}`:t.length>0?t:`.`};function po(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}var mo=function(e){return io.test(e)},ho=function(e){if(e===`..`)return``;let t=so.exec(no(e));return t&&t[1]||``},go=function(e,t){let n=fo(e).replace(oo,`$1`).split(`/`),r=fo(t).replace(oo,`$1`).split(`/`);if(r[0][1]===`:`&&n[0][1]===`:`&&n[0]!==r[0])return r.join(`/`);let i=[...n];for(let e of i){if(r[0]!==e)break;n.shift(),r.shift()}return[...n.map(()=>`..`),...r].join(`/`)},_o=function(e){let t=no(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&ao.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(mo(e)?`/`:`.`)},vo=function(e,t){let n=no(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},yo=/^[a-zA-Z]:\//,bo=class e{constructor(e,t={}){let n=co(e);if(!mo(n))throw Error(`FilePath requires an absolute path, got: "${e}"`);this.path=n,this.protocol=t.protocol}intern(){return this.protocol,`filepath@${this.path}`}static from(t){return new e(t)}static resolve(t,n){return new e(fo(t,n))}static fromUri(t){try{let n=new URL(t);return new e(co(n.host?`/${n.host}${n.pathname}`:n.pathname),{protocol:n.protocol})}catch{return new e(co(t))}}get absolute(){return this.path}get dirname(){return _o(this.path)}get basename(){return vo(this.path)}get extname(){return ho(this.path)}resolve(t){return new e(fo(this.dirname,t))}join(...t){return new e(lo(this.path,...t))}relativeTo(e){let t=go(e,this.path);return!t.startsWith(`./`)&&!t.startsWith(`../`)&&![`.`,`..`].includes(t)?`./${t}`:t}toString(){return this.path}equals(e){return this.path===e.path}isParentOf(e){if(this.path===e.path)return!1;let t=this.path.endsWith(`/`)?this.path:`${this.path}/`;return e.path.startsWith(t)}toUri(e={}){let t=e.protocol||this.protocol;if(!t)return this.path;let n=yo.test(this.path)?`${t}:///`:`${t}://`;return new URL(n+this.path).href}static isRelative(e){return!mo(co(e))}};function xo(e,t){if(!bo.isRelative(t))return;let n=bo.resolve(e.dirname,t);return n.absolute.endsWith(`.dbml`)?n:bo.from(n.absolute+`.dbml`)}var So=[`null`,`true`,`false`],Co=`none`,wo=`.dbml`,To=[`-`,`+`],v=`public`,Eo=bo.from(`/main.dbml`),Do={mysql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`,`mediumint`]),postgres:new Set([`int`,`integer`,`smallint`,`bigint`,`serial`,`bigserial`,`smallserial`]),mssql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`]),oracle:new Set([`int`,`integer`,`smallint`]),snowflake:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`])},Oo={mysql:new Set([`decimal`,`numeric`,`float`,`double`,`real`]),postgres:new Set([`decimal`,`numeric`,`real`,`float`,`double precision`]),mssql:new Set([`decimal`,`numeric`,`real`,`float`]),oracle:new Set([`number`,`decimal`,`numeric`,`float`,`real`]),snowflake:new Set([`number`,`decimal`,`numeric`,`float`,`double`,`real`])},ko={mysql:new Set([`bool`,`boolean`,`bit`]),postgres:new Set([`bool`,`boolean`]),mssql:new Set([`bit`]),oracle:new Set([]),snowflake:new Set([`boolean`])},Ao={mysql:new Set([`varchar`,`char`,`text`,`tinytext`,`mediumtext`,`longtext`,`string`]),postgres:new Set([`varchar`,`char`,`character`,`character varying`,`text`,`string`]),mssql:new Set([`varchar`,`char`,`nvarchar`,`nchar`,`text`,`ntext`,`string`]),oracle:new Set([`varchar`,`varchar2`,`char`,`nvarchar2`,`nchar`,`string`]),snowflake:new Set([`varchar`,`char`,`text`,`string`])},jo={mysql:new Set([`binary`,`varbinary`,`blob`,`tinyblob`,`mediumblob`,`longblob`]),postgres:new Set([`bytea`]),mssql:new Set([`binary`,`varbinary`]),oracle:new Set([`blob`,`raw`]),snowflake:new Set([`binary`,`varbinary`])},Mo={mysql:new Set([`date`,`datetime`,`timestamp`,`time`]),postgres:new Set([`date`,`timestamp`,`timestamptz`,`timestamp with time zone`,`timestamp without time zone`,`time`,`timetz`,`time with time zone`,`time without time zone`]),mssql:new Set([`date`,`datetime`,`datetime2`,`smalldatetime`,`time`]),oracle:new Set([`date`,`timestamp`,`timestamp with time zone`,`timestamp with local time zone`]),snowflake:new Set([`date`,`datetime`,`timestamp`,`time`])},No={mysql:new Set([]),postgres:new Set([`serial`,`smallserial`,`bigserial`]),mssql:new Set([]),oracle:new Set([]),snowflake:new Set([])};function Po(e){return e.toLowerCase().trim().replace(/\s+/g,` `)}function Fo(e,t){let n=Po(e);return t?Do[t].has(n):Object.values(Do).some(e=>e.has(n))}function Io(e,t){let n=Po(e);return t?Oo[t].has(n):Object.values(Oo).some(e=>e.has(n))}function Lo(e,t){return Fo(e,t)||Io(e,t)}function Ro(e,t){let n=Po(e);return t?ko[t].has(n):Object.values(ko).some(e=>e.has(n))}function zo(e,t){let n=Po(e);return t?Ao[t].has(n):Object.values(Ao).some(e=>e.has(n))}function Bo(e,t){let n=Po(e);return t?jo[t].has(n):Object.values(jo).some(e=>e.has(n))}function Vo(e,t){let n=Po(e);return t?Mo[t].has(n):Object.values(Mo).some(e=>e.has(n))}function Ho(e,t){let n=Po(e);return t?No[t].has(n):Object.values(No).some(e=>e.has(n))}function Uo(e,t){if(t)return`string`;if(Fo(e))return`integer`;if(Io(e))return`real`;if(Ro(e))return`bool`;if(zo(e))return`string`;let n=Po(e);return n===`date`?`date`:n===`time`||n===`timetz`||n===`time with time zone`||n===`time without time zone`?`time`:Vo(e)?`datetime`:e}var Wo=class extends Error{},Go=class extends Wo{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Ko=class extends Wo{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},qo=class extends Wo{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Jo=class extends Wo{},Yo=class extends Wo{constructor(e){super(`Invalid unit ${e}`)}},Xo=class extends Wo{},Zo=class extends Wo{constructor(){super(`Zone is an abstract class`)}},y=`numeric`,Qo=`short`,$o=`long`,es={year:y,month:y,day:y},ts={year:y,month:Qo,day:y},ns={year:y,month:Qo,day:y,weekday:Qo},rs={year:y,month:$o,day:y},is={year:y,month:$o,day:y,weekday:$o},as={hour:y,minute:y},os={hour:y,minute:y,second:y},ss={hour:y,minute:y,second:y,timeZoneName:Qo},cs={hour:y,minute:y,second:y,timeZoneName:$o},ls={hour:y,minute:y,hourCycle:`h23`},us={hour:y,minute:y,second:y,hourCycle:`h23`},ds={hour:y,minute:y,second:y,hourCycle:`h23`,timeZoneName:Qo},fs={hour:y,minute:y,second:y,hourCycle:`h23`,timeZoneName:$o},ps={year:y,month:y,day:y,hour:y,minute:y},ms={year:y,month:y,day:y,hour:y,minute:y,second:y},hs={year:y,month:Qo,day:y,hour:y,minute:y},gs={year:y,month:Qo,day:y,hour:y,minute:y,second:y},_s={year:y,month:Qo,day:y,weekday:Qo,hour:y,minute:y},vs={year:y,month:$o,day:y,hour:y,minute:y,timeZoneName:Qo},ys={year:y,month:$o,day:y,hour:y,minute:y,second:y,timeZoneName:Qo},bs={year:y,month:$o,day:y,weekday:$o,hour:y,minute:y,timeZoneName:$o},xs={year:y,month:$o,day:y,weekday:$o,hour:y,minute:y,second:y,timeZoneName:$o},Ss=class{get type(){throw new Zo}get name(){throw new Zo}get ianaName(){return this.name}get isUniversal(){throw new Zo}offsetName(e,t){throw new Zo}formatOffset(e,t){throw new Zo}offset(e){throw new Zo}equals(e){throw new Zo}get isValid(){throw new Zo}},Cs=null,ws=class e extends Ss{static get instance(){return Cs===null&&(Cs=new e),Cs}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ul(e,t,n)}formatOffset(e,t){return ml(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},Ts=new Map;function Es(e){let t=Ts.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,era:`short`}),Ts.set(e,t)),t}var Ds={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Os(e,t){let n=e.format(t).replace(/\u200E/g,``),[,r,i,a,o,s,c,l]=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n);return[a,r,i,o,s,c,l]}function ks(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=Ds[t];t===`era`?r[a]=i:x(a)||(r[a]=parseInt(i,10))}return r}var As=new Map,js=class e extends Ss{static create(t){let n=As.get(t);return n===void 0&&As.set(t,n=new e(t)),n}static resetCache(){As.clear(),Ts.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat(`en-US`,{timeZone:e}).format(),!0}catch{return!1}}constructor(t){super(),this.zoneName=t,this.valid=e.isValidZone(t)}get type(){return`iana`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ul(e,t,n,this.name)}formatOffset(e,t){return ml(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=Es(this.name),[r,i,a,o,s,c,l]=n.formatToParts?ks(n,t):Os(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=ol({year:r,month:i,day:a,hour:s===24?0:s,minute:c,second:l,millisecond:0}),d=+t,f=d%1e3;return d-=f>=0?f:1e3+f,(u-d)/(60*1e3)}equals(e){return e.type===`iana`&&e.name===this.name}get isValid(){return this.valid}},Ms={};function Ns(e,t={}){let n=JSON.stringify([e,t]),r=Ms[n];return r||(r=new Intl.ListFormat(e,t),Ms[n]=r),r}var Ps=new Map;function Fs(e,t={}){let n=JSON.stringify([e,t]),r=Ps.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),Ps.set(n,r)),r}var Is=new Map;function Ls(e,t={}){let n=JSON.stringify([e,t]),r=Is.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),Is.set(n,r)),r}var Rs=new Map;function zs(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=Rs.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),Rs.set(i,a)),a}var Bs=null;function Vs(){return Bs||(Bs=new Intl.DateTimeFormat().resolvedOptions().locale,Bs)}var Hs=new Map;function Us(e){let t=Hs.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),Hs.set(e,t)),t}var Ws=new Map;function Gs(e){let t=Ws.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...tc,...t}),Ws.set(e,t)}return t}function Ks(e){let t=e.indexOf(`-x-`);t!==-1&&(e=e.substring(0,t));let n=e.indexOf(`-u-`);if(n===-1)return[e];{let t,r;try{t=Fs(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=Fs(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function qs(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function Js(e){let t=[];for(let n=1;n<=12;n++){let r=C.utc(2009,n,1);t.push(e(r))}return t}function Ys(e){let t=[];for(let n=1;n<=7;n++){let r=C.utc(2016,11,13+n);t.push(e(r))}return t}function Xs(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function Zs(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||Us(e.locale).numberingSystem===`latn`}var Qs=class{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:i,...a}=n;if(!t||Object.keys(a).length>0){let t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=Ls(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return Qc(this.floor?Math.floor(e):nl(e,3),this.padTo)}},$s=class{constructor(e,t,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type===`fixed`){let t=-1*(e.offset/60),n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;e.offset!==0&&js.create(n).valid?(r=n,this.dt=e):(r=`UTC`,this.dt=e.offset===0?e:e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type===`system`?this.dt=e:e.zone.type===`iana`?(this.dt=e,r=e.zone.name):(r=`UTC`,this.dt=e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone);let i={...this.opts};i.timeZone=i.timeZone||r,this.dtf=Fs(t,i)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(``):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(e=>{if(e.type===`timeZoneName`){let t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}else return e}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},ec=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&Uc()&&(this.rtf=zs(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):Nl(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},tc={firstDay:1,minimalDays:4,weekend:[6,7]},b=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,n,r,i,a=!1){let o=t||xc.defaultLocale;return new e(o||(a?`en-US`:Vs()),n||xc.defaultNumberingSystem,r||xc.defaultOutputCalendar,Yc(i)||xc.defaultWeekSettings,o)}static resetCache(){Bs=null,Ps.clear(),Is.clear(),Rs.clear(),Hs.clear(),Ws.clear()}static fromObject({locale:t,numberingSystem:n,outputCalendar:r,weekSettings:i}={}){return e.create(t,n,r,i)}constructor(e,t,n,r,i){let[a,o,s]=Ks(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=qs(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached??=Zs(this),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem===`latn`)&&(this.outputCalendar===null||this.outputCalendar===`gregory`);return e&&t?`en`:`intl`}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,Yc(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Xs(this,e,yl,()=>{let n=this.intl===`ja`||this.intl.startsWith(`ja-`);t&=!n;let r=t?{month:e,day:`numeric`}:{month:e},i=t?`format`:`standalone`;if(!this.monthsCache[i][e]){let t=n?e=>this.dtFormatter(e,r).format():e=>this.extract(e,r,`month`);this.monthsCache[i][e]=Js(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return Xs(this,e,Cl,()=>{let n=t?{weekday:e,year:`numeric`,month:`long`,day:`numeric`}:{weekday:e},r=t?`format`:`standalone`;return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=Ys(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return Xs(this,void 0,()=>wl,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[C.utc(2016,11,13,9),C.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return Xs(this,e,Ol,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[C.utc(-40,1,1),C.utc(2017,1,1)].map(e=>this.extract(e,t,`era`))),this.eraCache[e]})}extract(e,t,n){let r=this.dtFormatter(e,t).formatToParts().find(e=>e.type.toLowerCase()===n);return r?r.value:null}numberFormatter(e={}){return new Qs(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new $s(e,this.intl,t)}relFormatter(e={}){return new ec(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Ns(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||Us(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:Wc()?Gs(this.locale):tc}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},nc=null,rc=class e extends Ss{static get utcInstance(){return nc===null&&(nc=new e(0)),nc}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new e(dl(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${ml(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${ml(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return ml(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type===`fixed`&&e.fixed===this.fixed}get isValid(){return!0}},ic=class extends Ss{constructor(e){super(),this.zoneName=e}get type(){return`invalid`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return``}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function ac(e,t){if(x(e)||e===null)return t;if(e instanceof Ss)return e;if(Vc(e)){let n=e.toLowerCase();return n==="default"?t:n===`local`||n===`system`?ws.instance:n===`utc`||n===`gmt`?rc.utcInstance:rc.parseSpecifier(n)||js.create(e)}else if(zc(e))return rc.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new ic(e)}var oc={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},sc={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},cc=oc.hanidec.replace(/[\[|\]]/g,``).split(``);function lc(e){let t=parseInt(e,10);if(isNaN(t)){t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(e[n].search(oc.hanidec)!==-1)t+=cc.indexOf(e[n]);else for(let e in sc){let[n,i]=sc[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var uc=new Map;function dc(){uc.clear()}function fc({numberingSystem:e},t=``){let n=e||`latn`,r=uc.get(n);r===void 0&&(r=new Map,uc.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${oc[n]}${t}`),r.set(t,i)),i}var pc=()=>Date.now(),mc=`system`,hc=null,gc=null,_c=null,vc=60,yc,bc=null,xc=class{static get now(){return pc}static set now(e){pc=e}static set defaultZone(e){mc=e}static get defaultZone(){return ac(mc,ws.instance)}static get defaultLocale(){return hc}static set defaultLocale(e){hc=e}static get defaultNumberingSystem(){return gc}static set defaultNumberingSystem(e){gc=e}static get defaultOutputCalendar(){return _c}static set defaultOutputCalendar(e){_c=e}static get defaultWeekSettings(){return bc}static set defaultWeekSettings(e){bc=Yc(e)}static get twoDigitCutoffYear(){return vc}static set twoDigitCutoffYear(e){vc=e%100}static get throwOnInvalid(){return yc}static set throwOnInvalid(e){yc=e}static resetCaches(){b.resetCache(),js.resetCache(),C.resetCache(),dc()}},Sc=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},Cc=[0,31,59,90,120,151,181,212,243,273,304,334],wc=[0,31,60,91,121,152,182,213,244,274,305,335];function Tc(e,t){return new Sc(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Ec(e,t,n){let r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let i=r.getUTCDay();return i===0?7:i}function Dc(e,t,n){return n+(rl(e)?wc:Cc)[t-1]}function Oc(e,t){let n=rl(e)?wc:Cc,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function kc(e,t){return(e-t+7)%7+1}function Ac(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=Dc(r,i,a),s=kc(Ec(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=cl(l,t,n)):c>cl(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...hl(e)}}function jc(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=kc(Ec(r,1,t),n),s=il(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=il(l)):c>s?(l=r+1,c-=il(r)):l=r;let{month:u,day:d}=Oc(l,c);return{year:l,month:u,day:d,...hl(e)}}function Mc(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:Dc(t,n,r),...hl(e)}}function Nc(e){let{year:t,ordinal:n}=e,{month:r,day:i}=Oc(t,n);return{year:t,month:r,day:i,...hl(e)}}function Pc(e,t){if(!x(e.localWeekday)||!x(e.localWeekNumber)||!x(e.localWeekYear)){if(!x(e.weekday)||!x(e.weekNumber)||!x(e.weekYear))throw new Jo(`Cannot mix locale-based week fields with ISO-based week fields`);return x(e.localWeekday)||(e.weekday=e.localWeekday),x(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),x(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function Fc(e,t=4,n=1){let r=Bc(e.weekYear),i=Xc(e.weekNumber,1,cl(e.weekYear,t,n)),a=Xc(e.weekday,1,7);return r?i?a?!1:Tc(`weekday`,e.weekday):Tc(`week`,e.weekNumber):Tc(`weekYear`,e.weekYear)}function Ic(e){let t=Bc(e.year),n=Xc(e.ordinal,1,il(e.year));return t?n?!1:Tc(`ordinal`,e.ordinal):Tc(`year`,e.year)}function Lc(e){let t=Bc(e.year),n=Xc(e.month,1,12),r=Xc(e.day,1,al(e.year,e.month));return t?n?r?!1:Tc(`day`,e.day):Tc(`month`,e.month):Tc(`year`,e.year)}function Rc(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=Xc(t,0,23)||t===24&&n===0&&r===0&&i===0,o=Xc(n,0,59),s=Xc(r,0,59),c=Xc(i,0,999);return a?o?s?c?!1:Tc(`millisecond`,i):Tc(`second`,r):Tc(`minute`,n):Tc(`hour`,t)}function x(e){return e===void 0}function zc(e){return typeof e==`number`}function Bc(e){return typeof e==`number`&&e%1==0}function Vc(e){return typeof e==`string`}function Hc(e){return Object.prototype.toString.call(e)===`[object Date]`}function Uc(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function Wc(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function Gc(e){return Array.isArray(e)?e:[e]}function Kc(e,t,n){if(e.length!==0)return e.reduce((e,r)=>{let i=[t(r),r];return e&&n(e[0],i[0])===e[0]?e:i},null)[1]}function qc(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function Jc(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Yc(e){if(e==null)return null;if(typeof e!=`object`)throw new Xo(`Week settings must be an object`);if(!Xc(e.firstDay,1,7)||!Xc(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!Xc(e,1,7)))throw new Xo(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Xc(e,t,n){return Bc(e)&&e>=t&&e<=n}function Zc(e,t){return e-t*Math.floor(e/t)}function Qc(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function $c(e){if(!(x(e)||e===null||e===``))return parseInt(e,10)}function el(e){if(!(x(e)||e===null||e===``))return parseFloat(e)}function tl(e){if(!(x(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function nl(e,t,n=`round`){let r=10**t;switch(n){case`expand`:return e>0?Math.ceil(e*r)/r:Math.floor(e*r)/r;case`trunc`:return Math.trunc(e*r)/r;case`round`:return Math.round(e*r)/r;case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:throw RangeError(`Value rounding ${n} is out of range`)}}function rl(e){return e%4==0&&(e%100!=0||e%400==0)}function il(e){return rl(e)?366:365}function al(e,t){let n=Zc(t-1,12)+1,r=e+(t-n)/12;return n===2?rl(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function ol(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function sl(e,t,n){return-kc(Ec(e,1,t),n)+t-1}function cl(e,t=4,n=1){let r=sl(e,t,n),i=sl(e+1,t,n);return(il(e)-r+i)/7}function ll(e){return e>99?e:e>xc.twoDigitCutoffYear?1900+e:2e3+e}function ul(e,t,n,r=null){let i=new Date(e),a={hourCycle:`h23`,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};r&&(a.timeZone=r);let o={timeZoneName:t,...a},s=new Intl.DateTimeFormat(n,o).formatToParts(i).find(e=>e.type.toLowerCase()===`timezonename`);return s?s.value:null}function dl(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);let r=parseInt(t,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function fl(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new Xo(`Invalid unit value ${e}`);return t}function pl(e,t){let n={};for(let r in e)if(Jc(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=fl(i)}return n}function ml(e,t){let n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?`+`:`-`;switch(t){case`short`:return`${i}${Qc(n,2)}:${Qc(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${Qc(n,2)}${Qc(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function hl(e){return qc(e,[`hour`,`minute`,`second`,`millisecond`])}var gl=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],_l=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],vl=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function yl(e){switch(e){case`narrow`:return[...vl];case`short`:return[..._l];case`long`:return[...gl];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`];case`2-digit`:return[`01`,`02`,`03`,`04`,`05`,`06`,`07`,`08`,`09`,`10`,`11`,`12`];default:return null}}var bl=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],xl=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],Sl=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function Cl(e){switch(e){case`narrow`:return[...Sl];case`short`:return[...xl];case`long`:return[...bl];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var wl=[`AM`,`PM`],Tl=[`Before Christ`,`Anno Domini`],El=[`BC`,`AD`],Dl=[`B`,`A`];function Ol(e){switch(e){case`narrow`:return[...Dl];case`short`:return[...El];case`long`:return[...Tl];default:return null}}function kl(e){return wl[e.hour<12?0:1]}function Al(e,t){return Cl(t)[e.weekday-1]}function jl(e,t){return yl(t)[e.month-1]}function Ml(e,t){return Ol(t)[e.year<0?0:1]}function Nl(e,t,n=`always`,r=!1){let i={years:[`year`,`yr.`],quarters:[`quarter`,`qtr.`],months:[`month`,`mo.`],weeks:[`week`,`wk.`],days:[`day`,`day`,`days`],hours:[`hour`,`hr.`],minutes:[`minute`,`min.`],seconds:[`second`,`sec.`]},a=[`hours`,`minutes`,`seconds`].indexOf(e)===-1;if(n===`auto`&&a){let n=e===`days`;switch(t){case 1:return n?`tomorrow`:`next ${i[e][0]}`;case-1:return n?`yesterday`:`last ${i[e][0]}`;case 0:return n?`today`:`this ${i[e][0]}`}}let o=Object.is(t,-0)||t<0,s=Math.abs(t),c=s===1,l=i[e],u=r?c?l[1]:l[2]||l[1]:c?i[e][0]:e;return o?`${s} ${u} ago`:`in ${s} ${u}`}function Pl(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var Fl={D:es,DD:ts,DDD:rs,DDDD:is,t:as,tt:os,ttt:ss,tttt:cs,T:ls,TT:us,TTT:ds,TTTT:fs,f:ps,ff:hs,fff:vs,ffff:bs,F:ms,FF:gs,FFF:ys,FFFF:xs},Il=class e{static create(t,n={}){return new e(t,n)}static parseFormat(e){let t=null,n=``,r=!1,i=[];for(let a=0;a<e.length;a++){let o=e.charAt(a);o===`'`?((n.length>0||r)&&i.push({literal:r||/^\s+$/.test(n),val:n===``?`'`:n}),t=null,n=``,r=!r):r||o===t?n+=o:(n.length>0&&i.push({literal:/^\s+$/.test(n),val:n}),n=o,t=o)}return n.length>0&&i.push({literal:r||/^\s+$/.test(n),val:n}),i}static macroTokenToFormatOpts(e){return Fl[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0,n=void 0){if(this.opts.forceSimple)return Qc(e,t);let r={...this.opts};return t>0&&(r.padTo=t),n&&(r.signDisplay=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(t,n){let r=this.loc.listingMode()===`en`,i=this.loc.outputCalendar&&this.loc.outputCalendar!==`gregory`,a=(e,n)=>this.loc.extract(t,e,n),o=e=>t.isOffsetFixed&&t.offset===0&&e.allowZ?`Z`:t.isValid?t.zone.formatOffset(t.ts,e.format):``,s=()=>r?kl(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?jl(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?Al(t,e):a(n?{weekday:e}:{weekday:e,month:`long`,day:`numeric`},`weekday`),u=n=>{let r=e.macroTokenToFormatOpts(n);return r?this.formatWithSystemDefault(t,r):n},d=e=>r?Ml(t,e):a({era:e},`era`);return Pl(e.parseFormat(n),e=>{switch(e){case`S`:return this.num(t.millisecond);case`u`:case`SSS`:return this.num(t.millisecond,3);case`s`:return this.num(t.second);case`ss`:return this.num(t.second,2);case`uu`:return this.num(Math.floor(t.millisecond/10),2);case`uuu`:return this.num(Math.floor(t.millisecond/100));case`m`:return this.num(t.minute);case`mm`:return this.num(t.minute,2);case`h`:return this.num(t.hour%12==0?12:t.hour%12);case`hh`:return this.num(t.hour%12==0?12:t.hour%12,2);case`H`:return this.num(t.hour);case`HH`:return this.num(t.hour,2);case`Z`:return o({format:`narrow`,allowZ:this.opts.allowZ});case`ZZ`:return o({format:`short`,allowZ:this.opts.allowZ});case`ZZZ`:return o({format:`techie`,allowZ:this.opts.allowZ});case`ZZZZ`:return t.zone.offsetName(t.ts,{format:`short`,locale:this.loc.locale});case`ZZZZZ`:return t.zone.offsetName(t.ts,{format:`long`,locale:this.loc.locale});case`z`:return t.zoneName;case`a`:return s();case`d`:return i?a({day:`numeric`},`day`):this.num(t.day);case`dd`:return i?a({day:`2-digit`},`day`):this.num(t.day,2);case`c`:return this.num(t.weekday);case`ccc`:return l(`short`,!0);case`cccc`:return l(`long`,!0);case`ccccc`:return l(`narrow`,!0);case`E`:return this.num(t.weekday);case`EEE`:return l(`short`,!1);case`EEEE`:return l(`long`,!1);case`EEEEE`:return l(`narrow`,!1);case`L`:return i?a({month:`numeric`,day:`numeric`},`month`):this.num(t.month);case`LL`:return i?a({month:`2-digit`,day:`numeric`},`month`):this.num(t.month,2);case`LLL`:return c(`short`,!0);case`LLLL`:return c(`long`,!0);case`LLLLL`:return c(`narrow`,!0);case`M`:return i?a({month:`numeric`},`month`):this.num(t.month);case`MM`:return i?a({month:`2-digit`},`month`):this.num(t.month,2);case`MMM`:return c(`short`,!1);case`MMMM`:return c(`long`,!1);case`MMMMM`:return c(`narrow`,!1);case`y`:return i?a({year:`numeric`},`year`):this.num(t.year);case`yy`:return i?a({year:`2-digit`},`year`):this.num(t.year.toString().slice(-2),2);case`yyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,4);case`yyyyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,6);case`G`:return d(`short`);case`GG`:return d(`long`);case`GGGGG`:return d(`narrow`);case`kk`:return this.num(t.weekYear.toString().slice(-2),2);case`kkkk`:return this.num(t.weekYear,4);case`W`:return this.num(t.weekNumber);case`WW`:return this.num(t.weekNumber,2);case`n`:return this.num(t.localWeekNumber);case`nn`:return this.num(t.localWeekNumber,2);case`ii`:return this.num(t.localWeekYear.toString().slice(-2),2);case`iiii`:return this.num(t.localWeekYear,4);case`o`:return this.num(t.ordinal);case`ooo`:return this.num(t.ordinal,3);case`q`:return this.num(t.quarter);case`qq`:return this.num(t.quarter,2);case`X`:return this.num(Math.floor(t.ts/1e3));case`x`:return this.num(t.ts);default:return u(e)}})}formatDurationFromString(t,n){let r=this.opts.signMode===`negativeLargestOnly`?-1:1,i=e=>{switch(e[0]){case`S`:return`milliseconds`;case`s`:return`seconds`;case`m`:return`minutes`;case`h`:return`hours`;case`d`:return`days`;case`w`:return`weeks`;case`M`:return`months`;case`y`:return`years`;default:return null}},a=(e,t)=>n=>{let a=i(n);if(a){let i=t.isNegativeDuration&&a!==t.largestUnit?r:1,o;return o=this.opts.signMode===`negativeLargestOnly`&&a!==t.largestUnit?`never`:this.opts.signMode===`all`?`always`:`auto`,this.num(e.get(a)*i,n.length,o)}else return n},o=e.parseFormat(n),s=o.reduce((e,{literal:t,val:n})=>t?e:e.concat(n),[]),c=t.shiftTo(...s.map(i).filter(e=>e));return Pl(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},Ll=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Rl(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function zl(...e){return t=>e.reduce(([e,n,r],i)=>{let[a,o,s]=i(t,r);return[{...e,...a},o||n,s]},[{},null,1]).slice(0,2)}function Bl(e,...t){if(e==null)return[null,null];for(let[n,r]of t){let t=n.exec(e);if(t)return r(t)}return[null,null]}function Vl(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=$c(t[n+i]);return[r,null,n+i]}}var Hl=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,Ul=`(?:${Hl.source}?(?:\\[(${Ll.source})\\])?)?`,Wl=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Gl=RegExp(`${Wl.source}${Ul}`),Kl=RegExp(`(?:[Tt]${Gl.source})?`),ql=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,Jl=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Yl=/(\d{4})-?(\d{3})/,Xl=Vl(`weekYear`,`weekNumber`,`weekDay`),Zl=Vl(`year`,`ordinal`),Ql=/(\d{4})-(\d\d)-(\d\d)/,$l=RegExp(`${Wl.source} ?(?:${Hl.source}|(${Ll.source}))?`),eu=RegExp(`(?: ${$l.source})?`);function tu(e,t,n){let r=e[t];return x(r)?n:$c(r)}function nu(e,t){return[{year:tu(e,t),month:tu(e,t+1,1),day:tu(e,t+2,1)},null,t+3]}function ru(e,t){return[{hours:tu(e,t,0),minutes:tu(e,t+1,0),seconds:tu(e,t+2,0),milliseconds:tl(e[t+3])},null,t+4]}function iu(e,t){let n=!e[t]&&!e[t+1],r=dl(e[t+1],e[t+2]);return[{},n?null:rc.instance(r),t+3]}function au(e,t){return[{},e[t]?js.create(e[t]):null,t+1]}var ou=RegExp(`^T?${Wl.source}$`),su=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function cu(e){let[t,n,r,i,a,o,s,c,l]=e,u=t[0]===`-`,d=c&&c[0]===`-`,f=(e,t=!1)=>e!==void 0&&(t||e&&u)?-e:e;return[{years:f(el(n)),months:f(el(r)),weeks:f(el(i)),days:f(el(a)),hours:f(el(o)),minutes:f(el(s)),seconds:f(el(c),c===`-0`),milliseconds:f(tl(l),d)}]}var lu={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function uu(e,t,n,r,i,a,o){let s={year:t.length===2?ll($c(t)):$c(t),month:_l.indexOf(n)+1,day:$c(r),hour:$c(i),minute:$c(a)};return o&&(s.second=$c(o)),e&&(s.weekday=e.length>3?bl.indexOf(e)+1:xl.indexOf(e)+1),s}var du=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function fu(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=uu(t,i,r,n,a,o,s),p;return p=c?lu[c]:l?0:dl(u,d),[f,new rc(p)]}function pu(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var mu=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,hu=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,gu=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function _u(e){let[,t,n,r,i,a,o,s]=e;return[uu(t,i,r,n,a,o,s),rc.utcInstance]}function vu(e){let[,t,n,r,i,a,o,s]=e;return[uu(t,s,n,r,i,a,o),rc.utcInstance]}var yu=Rl(ql,Kl),bu=Rl(Jl,Kl),xu=Rl(Yl,Kl),Su=Rl(Gl),Cu=zl(nu,ru,iu,au),wu=zl(Xl,ru,iu,au),Tu=zl(Zl,ru,iu,au),Eu=zl(ru,iu,au);function Du(e){return Bl(e,[yu,Cu],[bu,wu],[xu,Tu],[Su,Eu])}function Ou(e){return Bl(pu(e),[du,fu])}function ku(e){return Bl(e,[mu,_u],[hu,_u],[gu,vu])}function Au(e){return Bl(e,[su,cu])}var ju=zl(ru);function Mu(e){return Bl(e,[ou,ju])}var Nu=Rl(Ql,eu),Pu=Rl($l),Fu=zl(ru,iu,au);function Iu(e){return Bl(e,[Nu,Cu],[Pu,Fu])}var Lu=`Invalid Duration`,Ru={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},zu={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...Ru},Bu=146097/400,Vu=146097/4800,Hu={years:{quarters:4,months:12,weeks:Bu/7,days:Bu,hours:Bu*24,minutes:Bu*24*60,seconds:Bu*24*60*60,milliseconds:Bu*24*60*60*1e3},quarters:{months:3,weeks:Bu/28,days:Bu/4,hours:Bu*24/4,minutes:Bu*24*60/4,seconds:Bu*24*60*60/4,milliseconds:Bu*24*60*60*1e3/4},months:{weeks:Vu/7,days:Vu,hours:Vu*24,minutes:Vu*24*60,seconds:Vu*24*60*60,milliseconds:Vu*24*60*60*1e3},...Ru},Uu=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],Wu=Uu.slice(0).reverse();function Gu(e,t,n=!1){return new Yu({values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix})}function Ku(e,t){let n=t.milliseconds??0;for(let r of Wu.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function qu(e,t){let n=Ku(e,t)<0?-1:1;Uu.reduceRight((r,i)=>{if(x(t[i]))return r;if(r){let a=t[r]*n,o=e[i][r],s=Math.floor(a/o);t[i]+=s*n,t[r]-=s*o*n}return i},null),Uu.reduce((n,r)=>{if(x(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function Ju(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var Yu=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?Hu:zu;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||b.create(),this.conversionAccuracy=t?`longterm`:`casual`,this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,n){return e.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(typeof t!=`object`||!t)throw new Xo(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:pl(t,e.normalizeUnit),loc:b.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(zc(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new Xo(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=Au(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){let[r]=Mu(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new Xo(`need to specify a reason the Duration is invalid`);let r=t instanceof Sc?t:new Sc(t,n);if(xc.throwOnInvalid)throw new qo(r);return new e({invalid:r})}static normalizeUnit(e){let t={year:`years`,years:`years`,quarter:`quarters`,quarters:`quarters`,month:`months`,months:`months`,week:`weeks`,weeks:`weeks`,day:`days`,days:`days`,hour:`hours`,hours:`hours`,minute:`minutes`,minutes:`minutes`,second:`seconds`,seconds:`seconds`,millisecond:`milliseconds`,milliseconds:`milliseconds`}[e&&e.toLowerCase()];if(!t)throw new Yo(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let n={...t,floor:t.round!==!1&&t.floor!==!1};return this.isValid?Il.create(this.loc,n).formatDurationFromString(this,e):Lu}toHuman(e={}){if(!this.isValid)return Lu;let t=e.showZeros!==!1,n=Uu.map(n=>{let r=this.values[n];return x(r)||r===0&&!t?null:this.loc.numberFormatter({style:`unit`,unitDisplay:`long`,...e,unit:n.slice(0,-1)}).format(r)}).filter(e=>e);return this.loc.listFormatter({type:`conjunction`,style:e.listStyle||`narrow`,...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e=`P`;return this.years!==0&&(e+=this.years+`Y`),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+`M`),this.weeks!==0&&(e+=this.weeks+`W`),this.days!==0&&(e+=this.days+`D`),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+=`T`),this.hours!==0&&(e+=this.hours+`H`),this.minutes!==0&&(e+=this.minutes+`M`),(this.seconds!==0||this.milliseconds!==0)&&(e+=nl(this.seconds+this.milliseconds/1e3,3)+`S`),e===`P`&&(e+=`T0S`),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:`extended`,...e,includeOffset:!1},C.fromMillis(t,{zone:`UTC`}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Ku(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t),r={};for(let e of Uu)(Jc(n.values,e)||Jc(this.values,e))&&(r[e]=n.get(e)+this.get(e));return Gu(this,{values:r},!0)}minus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let n of Object.keys(this.values))t[n]=fl(e(this.values[n],n));return Gu(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...pl(t,e.normalizeUnit)};return Gu(this,{values:n})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:r}={}){let i={loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:r,conversionAccuracy:n};return Gu(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return qu(this.matrix,e),Gu(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=Ju(this.normalize().shiftToAll().toObject());return Gu(this,{values:e},!0)}shiftTo(...t){if(!this.isValid||t.length===0)return this;t=t.map(t=>e.normalizeUnit(t));let n={},r={},i=this.toObject(),a;for(let e of Uu)if(t.indexOf(e)>=0){a=e;let t=0;for(let n in r)t+=this.matrix[n][e]*r[n],r[n]=0;zc(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else zc(i[e])&&(r[e]=i[e]);for(let e in r)r[e]!==0&&(n[a]+=e===a?r[e]:r[e]/this.matrix[a][e]);return qu(this.matrix,n),Gu(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo(`years`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`):this}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return Gu(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=Ju(this.values);return Gu(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(e,t){return e===void 0||e===0?t===void 0||t===0:e===t}for(let n of Uu)if(!t(this.values[n],e.values[n]))return!1;return!0}},Xu=`Invalid Interval`;function Zu(e,t){return!e||!e.isValid?Qu.invalid(`missing or invalid start`):!t||!t.isValid?Qu.invalid(`missing or invalid end`):t<e?Qu.invalid(`end before start`,`The end of an interval must be after its start, but you had start=${e.toISO()} and end=${t.toISO()}`):null}var Qu=class e{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(t,n=null){if(!t)throw new Xo(`need to specify a reason the Interval is invalid`);let r=t instanceof Sc?t:new Sc(t,n);if(xc.throwOnInvalid)throw new Ko(r);return new e({invalid:r})}static fromDateTimes(t,n){let r=ef(t),i=ef(n);return Zu(r,i)??new e({start:r,end:i})}static after(t,n){let r=Yu.fromDurationLike(n),i=ef(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=Yu.fromDurationLike(n),i=ef(t);return e.fromDateTimes(i.minus(r),i)}static fromISO(t,n){let[r,i]=(t||``).split(`/`,2);if(r&&i){let t,a;try{t=C.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=C.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=Yu.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=Yu.fromISO(r,n);if(t.isValid)return e.before(o,t)}}return e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e=`milliseconds`){return this.isValid?this.toDuration(e).get(e):NaN}count(e=`milliseconds`,t){if(!this.isValid)return NaN;let n=this.start.startOf(e,t),r;return r=t?.useLocaleWeeks?this.end.reconfigure({locale:n.locale}):this.end,r=r.startOf(e,t),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:t,end:n}={}){return this.isValid?e.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];let n=t.map(ef).filter(e=>this.contains(e)).sort((e,t)=>e.toMillis()-t.toMillis()),r=[],{s:i}=this,a=0;for(;i<this.e;){let t=n[a]||this.e,o=+t>+this.e?this.e:t;r.push(e.fromDateTimes(i,o)),i=o,a+=1}return r}splitBy(t){let n=Yu.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as(`milliseconds`)===0)return[];let{s:r}=this,i=1,a,o=[];for(;r<this.e;){let t=this.start.plus(n.mapUnits(e=>e*i));a=+t>+this.e?this.e:t,o.push(e.fromDateTimes(r,a)),r=a,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(t){if(!this.isValid)return this;let n=this.s>t.s?this.s:t.s,r=this.e<t.e?this.e:t.e;return n>=r?null:e.fromDateTimes(n,r)}union(t){if(!this.isValid)return this;let n=this.s<t.s?this.s:t.s,r=this.e>t.e?this.e:t.e;return e.fromDateTimes(n,r)}static merge(e){let[t,n]=e.sort((e,t)=>e.s-t.s).reduce(([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n],[[],null]);return n&&t.push(n),t}static xor(t){let n=null,r=0,i=[],a=t.map(e=>[{time:e.s,type:`s`},{time:e.e,type:`e`}]),o=Array.prototype.concat(...a).sort((e,t)=>e.time-t.time);for(let t of o)r+=t.type===`s`?1:-1,r===1?n=t.time:(n&&+n!=+t.time&&i.push(e.fromDateTimes(n,t.time)),n=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(e=>this.intersection(e)).filter(e=>e&&!e.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Xu}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=es,t={}){return this.isValid?Il.create(this.s.loc.clone(t),e).formatInterval(this):Xu}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Xu}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Xu}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Xu}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Xu}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Yu.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},$u=class{static hasDST(e=xc.defaultZone){let t=C.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return js.isValidZone(e)}static normalizeZone(e){return ac(e,xc.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||b.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||b.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||b.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||b.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||b.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||b.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||b.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return b.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return b.create(t,null,`gregory`).eras(e)}static features(){return{relative:Uc(),localeWeek:Wc()}}};function ed(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(Yu.fromMillis(r).as(`days`))}function td(e,t,n){let r=[[`years`,(e,t)=>t.year-e.year],[`quarters`,(e,t)=>t.quarter-e.quarter+(t.year-e.year)*4],[`months`,(e,t)=>t.month-e.month+(t.year-e.year)*12],[`weeks`,(e,t)=>{let n=ed(e,t);return(n-n%7)/7}],[`days`,ed]],i={},a=e,o,s;for(let[c,l]of r)n.indexOf(c)>=0&&(o=c,i[c]=l(e,t),s=a.plus(i),s>t?(i[c]--,e=a.plus(i),e>t&&(s=e,i[c]--,e=a.plus(i))):e=s);return[e,i,s,o]}function nd(e,t,n,r){let[i,a,o,s]=td(e,t,n),c=t-i,l=n.filter(e=>[`hours`,`minutes`,`seconds`,`milliseconds`].indexOf(e)>=0);l.length===0&&(o<t&&(o=i.plus({[s]:1})),o!==i&&(a[s]=(a[s]||0)+c/(o-i)));let u=Yu.fromObject(a,r);return l.length>0?Yu.fromMillis(c,r).shiftTo(...l).plus(u):u}var rd=`missing Intl.DateTimeFormat.formatToParts support`;function S(e,t=e=>e){return{regex:e,deser:([e])=>t(lc(e))}}var id=`[ \xA0]`,ad=new RegExp(id,`g`);function od(e){return e.replace(/\./g,`\\.?`).replace(ad,id)}function sd(e){return e.replace(/\./g,``).replace(ad,` `).toLowerCase()}function cd(e,t){return e===null?null:{regex:RegExp(e.map(od).join(`|`)),deser:([n])=>e.findIndex(e=>sd(n)===sd(e))+t}}function ld(e,t){return{regex:e,deser:([,e,t])=>dl(e,t),groups:t}}function ud(e){return{regex:e,deser:([e])=>e}}function dd(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function fd(e,t){let n=fc(t),r=fc(t,`{2}`),i=fc(t,`{3}`),a=fc(t,`{4}`),o=fc(t,`{6}`),s=fc(t,`{1,2}`),c=fc(t,`{1,3}`),l=fc(t,`{1,6}`),u=fc(t,`{1,9}`),d=fc(t,`{2,4}`),f=fc(t,`{4,6}`),p=e=>({regex:RegExp(dd(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return cd(t.eras(`short`),0);case`GG`:return cd(t.eras(`long`),0);case`y`:return S(l);case`yy`:return S(d,ll);case`yyyy`:return S(a);case`yyyyy`:return S(f);case`yyyyyy`:return S(o);case`M`:return S(s);case`MM`:return S(r);case`MMM`:return cd(t.months(`short`,!0),1);case`MMMM`:return cd(t.months(`long`,!0),1);case`L`:return S(s);case`LL`:return S(r);case`LLL`:return cd(t.months(`short`,!1),1);case`LLLL`:return cd(t.months(`long`,!1),1);case`d`:return S(s);case`dd`:return S(r);case`o`:return S(c);case`ooo`:return S(i);case`HH`:return S(r);case`H`:return S(s);case`hh`:return S(r);case`h`:return S(s);case`mm`:return S(r);case`m`:return S(s);case`q`:return S(s);case`qq`:return S(r);case`s`:return S(s);case`ss`:return S(r);case`S`:return S(c);case`SSS`:return S(i);case`u`:return ud(u);case`uu`:return ud(s);case`uuu`:return S(n);case`a`:return cd(t.meridiems(),0);case`kkkk`:return S(a);case`kk`:return S(d,ll);case`W`:return S(s);case`WW`:return S(r);case`E`:case`c`:return S(n);case`EEE`:return cd(t.weekdays(`short`,!1),1);case`EEEE`:return cd(t.weekdays(`long`,!1),1);case`ccc`:return cd(t.weekdays(`short`,!0),1);case`cccc`:return cd(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return ld(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return ld(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return ud(/[a-z_+-/]{1,256}?/i);case` `:return ud(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:rd};return m.token=e,m}var pd={year:{"2-digit":`yy`,numeric:`yyyyy`},month:{numeric:`M`,"2-digit":`MM`,short:`MMM`,long:`MMMM`},day:{numeric:`d`,"2-digit":`dd`},weekday:{short:`EEE`,long:`EEEE`},dayperiod:`a`,dayPeriod:`a`,hour12:{numeric:`h`,"2-digit":`hh`},hour24:{numeric:`H`,"2-digit":`HH`},minute:{numeric:`m`,"2-digit":`mm`},second:{numeric:`s`,"2-digit":`ss`},timeZoneName:{long:`ZZZZZ`,short:`ZZZ`}};function md(e,t,n){let{type:r,value:i}=e;if(r===`literal`){let e=/^\s+$/.test(i);return{literal:!e,val:e?` `:i}}let a=t[r],o=r;r===`hour`&&(o=t.hour12==null?t.hourCycle==null?n.hour12?`hour12`:`hour24`:t.hourCycle===`h11`||t.hourCycle===`h12`?`hour12`:`hour24`:t.hour12?`hour12`:`hour24`);let s=pd[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function hd(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function gd(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(Jc(n,i)){let a=n[i],o=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(r.slice(t,t+o))),t+=o}return[r,e]}else return[r,{}]}function _d(e){let t=e=>{switch(e){case`S`:return`millisecond`;case`s`:return`second`;case`m`:return`minute`;case`h`:case`H`:return`hour`;case`d`:return`day`;case`o`:return`ordinal`;case`L`:case`M`:return`month`;case`y`:return`year`;case`E`:case`c`:return`weekday`;case`W`:return`weekNumber`;case`k`:return`weekYear`;case`q`:return`quarter`;default:return null}},n=null,r;return x(e.z)||(n=js.create(e.z)),x(e.Z)||(n||=new rc(e.Z),r=e.Z),x(e.q)||(e.M=(e.q-1)*3+1),x(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),x(e.u)||(e.S=tl(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var vd=null;function yd(){return vd||=C.fromMillis(1555555555555),vd}function bd(e,t){if(e.literal)return e;let n=Td(Il.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function xd(e,t){return Array.prototype.concat(...e.map(e=>bd(e,t)))}var Sd=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=xd(Il.parseFormat(t),e),this.units=this.tokens.map(t=>fd(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=hd(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=gd(e,this.regex,this.handlers),[r,i,a]=n?_d(n):[null,null,void 0];if(Jc(n,`a`)&&Jc(n,`H`))throw new Jo(`Can't include meridiem when specifying 24-hour format`);return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:r,zone:i,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function Cd(e,t,n){return new Sd(e,n).explainFromTokens(t)}function wd(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=Cd(e,t,n);return[r,i,a,o]}function Td(e,t){if(!e)return null;let n=Il.create(t,e).dtFormatter(yd()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>md(t,e,i))}var Ed=`Invalid DateTime`,Dd=864e13;function Od(e){return new Sc(`unsupported zone`,`the zone "${e.name}" is not supported`)}function kd(e){return e.weekData===null&&(e.weekData=Ac(e.c)),e.weekData}function Ad(e){return e.localWeekData===null&&(e.localWeekData=Ac(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function jd(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new C({...n,...t,old:n})}function Md(e,t,n){let r=e-t*60*1e3,i=n.offset(r);if(t===i)return[r,t];r-=(i-t)*60*1e3;let a=n.offset(r);return i===a?[r,i]:[e-Math.min(i,a)*60*1e3,Math.max(i,a)]}function Nd(e,t){e+=t*60*1e3;let n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Pd(e,t,n){return Md(ol(e),t,n)}function Fd(e,t){let n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,a={...e.c,year:r,month:i,day:Math.min(e.c.day,al(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=Yu.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as(`milliseconds`),[s,c]=Md(ol(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function Id(e,t,n,r,i,a){let{setZone:o,zone:s}=n;if(e&&Object.keys(e).length!==0||t){let r=t||s,i=C.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return C.invalid(new Sc(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function Ld(e,t,n=!0){return e.isValid?Il.create(b.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Rd(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=Qc(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=Qc(e.c.month),n===`month`)return i;i+=`-`}else if(i+=Qc(e.c.month),n===`month`)return i;return i+=Qc(e.c.day),i}function zd(e,t,n,r,i,a,o){let s=!n||e.c.millisecond!==0||e.c.second!==0,c=``;switch(o){case`day`:case`month`:case`year`:break;default:if(c+=Qc(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=Qc(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=Qc(e.c.second))}else{if(c+=Qc(e.c.minute),o===`minute`)break;s&&(c+=Qc(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=Qc(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=Qc(Math.trunc(-e.o/60)),c+=`:`,c+=Qc(Math.trunc(-e.o%60))):(c+=`+`,c+=Qc(Math.trunc(e.o/60)),c+=`:`,c+=Qc(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var Bd={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Vd={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Hd={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Ud=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],Wd=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],Gd=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function Kd(e){let t={year:`year`,years:`year`,month:`month`,months:`month`,day:`day`,days:`day`,hour:`hour`,hours:`hour`,minute:`minute`,minutes:`minute`,quarter:`quarter`,quarters:`quarter`,second:`second`,seconds:`second`,millisecond:`millisecond`,milliseconds:`millisecond`,weekday:`weekday`,weekdays:`weekday`,weeknumber:`weekNumber`,weeksnumber:`weekNumber`,weeknumbers:`weekNumber`,weekyear:`weekYear`,weekyears:`weekYear`,ordinal:`ordinal`}[e.toLowerCase()];if(!t)throw new Yo(e);return t}function qd(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return Kd(e)}}function Jd(e){if(Qd===void 0&&(Qd=xc.now()),e.type!==`iana`)return e.offset(Qd);let t=e.name,n=$d.get(t);return n===void 0&&(n=e.offset(Qd),$d.set(t,n)),n}function Yd(e,t){let n=ac(t.zone,xc.defaultZone);if(!n.isValid)return C.invalid(Od(n));let r=b.fromObject(t),i,a;if(x(e.year))i=xc.now();else{for(let t of Ud)x(e[t])&&(e[t]=Bd[t]);let t=Lc(e)||Rc(e);if(t)return C.invalid(t);let r=Jd(n);[i,a]=Pd(e,r,n)}return new C({ts:i,zone:n,loc:r,o:a})}function Xd(e,t,n){let r=x(n.round)?!0:n.round,i=x(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=nl(e,r||n.calendary?0:2,n.calendary?`round`:i),t.loc.clone(n).relFormatter(n).format(e,a)),o=r=>n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r);if(n.unit)return a(o(n.unit),n.unit);for(let e of n.units){let t=o(e);if(Math.abs(t)>=1)return a(t,e)}return a(e>t?-0:0,n.units[n.units.length-1])}function Zd(e){let t={},n;return e.length>0&&typeof e[e.length-1]==`object`?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}var Qd,$d=new Map,C=class e{constructor(e){let t=e.zone||xc.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Sc(`invalid input`):null)||(t.isValid?null:Od(t));this.ts=x(e.ts)?xc.now():e.ts;let r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[r,i]=[e.old.c,e.old.o];else{let a=zc(e.o)&&!e.old?e.o:t.offset(this.ts);r=Nd(this.ts,a),n=Number.isNaN(r.year)?new Sc(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||b.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[e,t]=Zd(arguments),[n,r,i,a,o,s,c]=t;return Yd({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=Zd(arguments),[n,r,i,a,o,s,c]=t;return e.zone=rc.utcInstance,Yd({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=Hc(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=ac(n.zone,xc.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:b.fromObject(n)}):e.invalid(Od(i))}static fromMillis(t,n={}){if(!zc(t))throw new Xo(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`);return t<-864e13||t>Dd?e.invalid(`Timestamp out of range`):new e({ts:t,zone:ac(n.zone,xc.defaultZone),loc:b.fromObject(n)})}static fromSeconds(t,n={}){if(zc(t))return new e({ts:t*1e3,zone:ac(n.zone,xc.defaultZone),loc:b.fromObject(n)});throw new Xo(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=ac(n.zone,xc.defaultZone);if(!r.isValid)return e.invalid(Od(r));let i=b.fromObject(n),a=pl(t,qd),{minDaysInFirstWeek:o,startOfWeek:s}=Pc(a,i),c=xc.now(),l=x(n.specificOffset)?r.offset(c):n.specificOffset,u=!x(a.ordinal),d=!x(a.year),f=!x(a.month)||!x(a.day),p=d||f,m=a.weekYear||a.weekNumber;if((p||u)&&m)throw new Jo(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(f&&u)throw new Jo(`Can't mix ordinal dates with month/day`);let ee=m||a.weekday&&!p,te,ne,re=Nd(c,l);ee?(te=Wd,ne=Vd,re=Ac(re,o,s)):u?(te=Gd,ne=Hd,re=Mc(re)):(te=Ud,ne=Bd);let ie=!1;for(let e of te){let t=a[e];x(t)?ie?a[e]=ne[e]:a[e]=re[e]:ie=!0}let ae=(ee?Fc(a,o,s):u?Ic(a):Lc(a))||Rc(a);if(ae)return e.invalid(ae);let[oe,se]=Pd(ee?jc(a,o,s):u?Nc(a):a,l,r),ce=new e({ts:oe,zone:r,o:se,loc:i});return a.weekday&&p&&t.weekday!==ce.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${a.weekday} and a date of ${ce.toISO()}`):ce.isValid?ce:e.invalid(ce.invalid)}static fromISO(e,t={}){let[n,r]=Du(e);return Id(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=Ou(e);return Id(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=ku(e);return Id(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(x(t)||x(n))throw new Xo(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,s,c,l]=wd(b.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return l?e.invalid(l):Id(o,s,r,`format ${n}`,t,c)}static fromString(t,n,r={}){return e.fromFormat(t,n,r)}static fromSQL(e,t={}){let[n,r]=Iu(e);return Id(n,r,t,`SQL`,e)}static invalid(t,n=null){if(!t)throw new Xo(`need to specify a reason the DateTime is invalid`);let r=t instanceof Sc?t:new Sc(t,n);if(xc.throwOnInvalid)throw new Go(r);return new e({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=Td(e,b.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return xd(Il.parseFormat(e),b.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){Qd=void 0,$d.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?kd(this).weekYear:NaN}get weekNumber(){return this.isValid?kd(this).weekNumber:NaN}get weekday(){return this.isValid?kd(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Ad(this).weekday:NaN}get localWeekNumber(){return this.isValid?Ad(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Ad(this).weekYear:NaN}get ordinal(){return this.isValid?Mc(this.c).ordinal:NaN}get monthShort(){return this.isValid?$u.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?$u.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?$u.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?$u.weekdays(`long`,{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:`short`,locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:`long`,locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,t=6e4,n=ol(this.c),r=this.zone.offset(n-e),i=this.zone.offset(n+e),a=this.zone.offset(n-r*t),o=this.zone.offset(n-i*t);if(a===o)return[this];let s=n-a*t,c=n-o*t,l=Nd(s,a),u=Nd(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[jd(this,{ts:s}),jd(this,{ts:c})]:[this]}get isInLeapYear(){return rl(this.year)}get daysInMonth(){return al(this.year,this.month)}get daysInYear(){return this.isValid?il(this.year):NaN}get weeksInWeekYear(){return this.isValid?cl(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?cl(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=Il.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(rc.instance(e),t)}toLocal(){return this.setZone(xc.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=ac(t,xc.defaultZone),t.equals(this.zone))return this;if(t.isValid){let e=this.ts;if(n||r){let n=t.offset(this.ts),r=this.toObject();[e]=Pd(r,n,t)}return jd(this,{ts:e,zone:t})}else return e.invalid(Od(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return jd(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=pl(e,qd),{minDaysInFirstWeek:n,startOfWeek:r}=Pc(t,this.loc),i=!x(t.weekYear)||!x(t.weekNumber)||!x(t.weekday),a=!x(t.ordinal),o=!x(t.year),s=!x(t.month)||!x(t.day),c=o||s,l=t.weekYear||t.weekNumber;if((c||a)&&l)throw new Jo(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(s&&a)throw new Jo(`Can't mix ordinal dates with month/day`);let u;i?u=jc({...Ac(this.c,n,r),...t},n,r):x(t.ordinal)?(u={...this.toObject(),...t},x(t.day)&&(u.day=Math.min(al(u.year,u.month),u.day))):u=Nc({...Mc(this.c),...t});let[d,f]=Pd(u,this.o,this.zone);return jd(this,{ts:d,o:f})}plus(e){if(!this.isValid)return this;let t=Yu.fromDurationLike(e);return jd(this,Fd(this,t))}minus(e){if(!this.isValid)return this;let t=Yu.fromDurationLike(e).negate();return jd(this,Fd(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=Yu.normalizeUnit(e);switch(r){case`years`:n.month=1;case`quarters`:case`months`:n.day=1;case`weeks`:case`days`:n.hour=0;case`hours`:n.minute=0;case`minutes`:n.second=0;case`seconds`:n.millisecond=0;break}if(r===`weeks`)if(t){let e=this.loc.getStartOfWeek(),{weekday:t}=this;t<e&&(n.weekNumber=this.weekNumber-1),n.weekday=e}else n.weekday=1;return r===`quarters`&&(n.month=(Math.ceil(this.month/3)-1)*3+1),this.set(n)}endOf(e,t){return this.isValid?this.plus({[e]:1}).startOf(e,t).minus(1):this}toFormat(e,t={}){return this.isValid?Il.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):Ed}toLocaleString(e=es,t={}){return this.isValid?Il.create(this.loc.clone(t),e).formatDateTime(this):Ed}toLocaleParts(e={}){return this.isValid?Il.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e=`extended`,suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:i=!1,precision:a=`milliseconds`}={}){if(!this.isValid)return null;a=Kd(a);let o=e===`extended`,s=Rd(this,o,a);return Ud.indexOf(a)>=3&&(s+=`T`),s+=zd(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?Rd(this,e===`extended`,Kd(t)):null}toISOWeekDate(){return Ld(this,`kkkk-'W'WW-c`)}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:i=!1,format:a=`extended`,precision:o=`milliseconds`}={}){return this.isValid?(o=Kd(o),(r&&Ud.indexOf(o)>=3?`T`:``)+zd(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return Ld(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return Ld(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?Rd(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let r=`HH:mm:ss.SSS`;return(t||e)&&(n&&(r+=` `),t?r+=`z`:e&&(r+=`ZZ`)),Ld(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Ed}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t=`milliseconds`,n={}){if(!this.isValid||!e.isValid)return Yu.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=Gc(t).map(Yu.normalizeUnit),a=e.valueOf()>this.valueOf(),o=nd(a?this:e,a?e:this,i,r);return a?o.negate():o}diffNow(t=`milliseconds`,n={}){return this.diff(e.now(),t,n)}until(e){return this.isValid?Qu.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;let r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(t,n)<=r&&r<=i.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(t={}){if(!this.isValid)return null;let n=t.base||e.fromObject({},{zone:this.zone}),r=t.padding?this<n?-t.padding:t.padding:0,i=[`years`,`months`,`days`,`hours`,`minutes`,`seconds`],a=t.unit;return Array.isArray(t.unit)&&(i=t.unit,a=void 0),Xd(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?Xd(t.base||e.fromObject({},{zone:this.zone}),this,{...t,numeric:`auto`,units:[`years`,`months`,`days`],calendary:!0}):null}static min(...t){if(!t.every(e.isDateTime))throw new Xo(`min requires all arguments be DateTimes`);return Kc(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new Xo(`max requires all arguments be DateTimes`);return Kc(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return Cd(b.fromOpts({locale:r,numberingSystem:i,defaultToEN:!0}),e,t)}static fromStringExplain(t,n,r={}){return e.fromFormatExplain(t,n,r)}static buildFormatParser(e,t={}){let{locale:n=null,numberingSystem:r=null}=t;return new Sd(b.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(x(t)||x(n))throw new Xo(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=b.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new Xo(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${n.locale}`);let{result:s,zone:c,specificOffset:l,invalidReason:u}=n.explainFromTokens(t);return u?e.invalid(u):Id(s,c,r,`format ${n.format}`,t,l)}static get DATE_SHORT(){return es}static get DATE_MED(){return ts}static get DATE_MED_WITH_WEEKDAY(){return ns}static get DATE_FULL(){return rs}static get DATE_HUGE(){return is}static get TIME_SIMPLE(){return as}static get TIME_WITH_SECONDS(){return os}static get TIME_WITH_SHORT_OFFSET(){return ss}static get TIME_WITH_LONG_OFFSET(){return cs}static get TIME_24_SIMPLE(){return ls}static get TIME_24_WITH_SECONDS(){return us}static get TIME_24_WITH_SHORT_OFFSET(){return ds}static get TIME_24_WITH_LONG_OFFSET(){return fs}static get DATETIME_SHORT(){return ps}static get DATETIME_SHORT_WITH_SECONDS(){return ms}static get DATETIME_MED(){return hs}static get DATETIME_MED_WITH_SECONDS(){return gs}static get DATETIME_MED_WITH_WEEKDAY(){return _s}static get DATETIME_FULL(){return vs}static get DATETIME_FULL_WITH_SECONDS(){return ys}static get DATETIME_HUGE(){return bs}static get DATETIME_HUGE_WITH_SECONDS(){return xs}};function ef(e){if(C.isDateTime(e))return e;if(e&&e.valueOf&&zc(e.valueOf()))return C.fromJSDate(e);if(e&&typeof e==`object`)return C.fromObject(e);throw new Xo(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function tf(e){if(e===`*`)return{min:1,max:`*`};let[t,n]=e.split(`..`),r=Number(t);return n===void 0?{min:r,max:r}:{min:r,max:n===`*`?`*`:Number(n)}}var nf=new Set([`-`,`<>`,`>`,`<`,`-?`,`?-`,`?-?`,`?>`,`>?`,`?>?`,`?<`,`<?`,`?<?`,`?<>`,`<>?`,`?<>?`]),rf=`1`,af=`0..1`,of=`*`,sf=`0..*`;function cf(e){switch(e){case`-`:return[`1`,`1`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`<`:return[`1`,`*`];case`-?`:return[`1`,af];case`?-`:return[af,`1`];case`?-?`:return[af,af];case`?>`:return[sf,`1`];case`>?`:return[`*`,af];case`?>?`:return[sf,af];case`?<`:return[af,`*`];case`<?`:return[`1`,sf];case`?<?`:return[af,sf];case`?<>`:return[sf,`*`];case`<>?`:return[`*`,sf];case`?<>?`:return[sf,sf];default:return}}function lf(e){return tf(e).max===1}function uf(e){return tf(e).max===`*`}function df(e){return e.replace(/\?/g,``)}function ff(e,t){let{min:n,max:r}=tf(e),{min:i,max:a}=tf(t);if(n===1&&r===1){if(i===1&&a===1)return`-`;if(i===0&&a===1)return`-?`;if(i===0&&a===`*`)return`<?`;if(i>=1&&a===`*`)return`<`}if(n===0&&r===1){if(i===1&&a===1)return`?-`;if(i===0&&a===1)return`?-?`;if(i===0&&a===`*`)return`?<?`;if(i>=1&&a===`*`)return`?<`}if(n===0&&r===`*`){if(i===1&&a===1)return`?>`;if(i===0&&a===1)return`?>?`;if(i===0&&a===`*`)return`?<>?`;if(i>=1&&a===`*`)return`?<>`}if(n>=1&&r===`*`){if(i===1&&a===1)return`>`;if(i===0&&a===1)return`>?`;if(i===0&&a===`*`)return`<>?`;if(i>=1&&a===`*`)return`<>`}return`<>`}function pf(e){let{min:t,max:n}=tf(e);return t===0?e:n===`*`?sf:af}function mf(e){let{min:t,max:n}=tf(e);return t>=1?e:n===`*`?`*`:`1`}function hf(e){let{min:t,max:n}=tf(e);return n===`*`?e:t===0?sf:`*`}var w=function(e){return e[e.UNKNOWN_SYMBOL=1e3]=`UNKNOWN_SYMBOL`,e[e.UNEXPECTED_SYMBOL=1001]=`UNEXPECTED_SYMBOL`,e[e.UNEXPECTED_EOF=1002]=`UNEXPECTED_EOF`,e[e.UNEXPECTED_NEWLINE=1003]=`UNEXPECTED_NEWLINE`,e[e.UNKNOWN_TOKEN=1004]=`UNKNOWN_TOKEN`,e[e.UNEXPECTED_TOKEN=1005]=`UNEXPECTED_TOKEN`,e[e.UNEXPECTED_ELEMENT_DECLARATION=1006]=`UNEXPECTED_ELEMENT_DECLARATION`,e[e.MISSING_SPACES=1007]=`MISSING_SPACES`,e[e.UNKNOWN_PREFIX_OP=1008]=`UNKNOWN_PREFIX_OP`,e[e.INVALID_OPERAND=1009]=`INVALID_OPERAND`,e[e.EMPTY_ATTRIBUTE_NAME=1010]=`EMPTY_ATTRIBUTE_NAME`,e[e.INVALID_ESCAPE_SEQUENCE=1011]=`INVALID_ESCAPE_SEQUENCE`,e[e.INVALID_NAME=3e3]=`INVALID_NAME`,e[e.UNEXPECTED_NAME=3001]=`UNEXPECTED_NAME`,e[e.NAME_NOT_FOUND=3002]=`NAME_NOT_FOUND`,e[e.DUPLICATE_NAME=3003]=`DUPLICATE_NAME`,e[e.INVALID_ALIAS=3004]=`INVALID_ALIAS`,e[e.UNEXPECTED_ALIAS=3005]=`UNEXPECTED_ALIAS`,e[e.UNEXPECTED_SETTINGS=3006]=`UNEXPECTED_SETTINGS`,e[e.INVALID_SETTINGS=3007]=`INVALID_SETTINGS`,e[e.UNEXPECTED_SIMPLE_BODY=3008]=`UNEXPECTED_SIMPLE_BODY`,e[e.UNEXPECTED_COMPLEX_BODY=3009]=`UNEXPECTED_COMPLEX_BODY`,e[e.INVALID_TABLE_CONTEXT=3010]=`INVALID_TABLE_CONTEXT`,e[e.UNKNOWN_TABLE_SETTING=3011]=`UNKNOWN_TABLE_SETTING`,e[e.DUPLICATE_TABLE_SETTING=3012]=`DUPLICATE_TABLE_SETTING`,e[e.INVALID_TABLEGROUP_CONTEXT=3013]=`INVALID_TABLEGROUP_CONTEXT`,e[e.INVALID_TABLEGROUP_ELEMENT_NAME=3014]=`INVALID_TABLEGROUP_ELEMENT_NAME`,e[e.DUPLICATE_TABLEGROUP_ELEMENT_NAME=3015]=`DUPLICATE_TABLEGROUP_ELEMENT_NAME`,e[e.DUPLICATE_TABLEGROUP_FIELD_NAME=3016]=`DUPLICATE_TABLEGROUP_FIELD_NAME`,e[e.INVALID_TABLEGROUP_FIELD=3017]=`INVALID_TABLEGROUP_FIELD`,e[e.EMPTY_TABLE=3018]=`EMPTY_TABLE`,e[e.INVALID_COLUMN=3019]=`INVALID_COLUMN`,e[e.INVALID_COLUMN_NAME=3020]=`INVALID_COLUMN_NAME`,e[e.UNKNOWN_COLUMN_SETTING=3021]=`UNKNOWN_COLUMN_SETTING`,e[e.INVALID_COLUMN_TYPE=3022]=`INVALID_COLUMN_TYPE`,e[e.DUPLICATE_COLUMN_NAME=3023]=`DUPLICATE_COLUMN_NAME`,e[e.DUPLICATE_COLUMN_SETTING=3024]=`DUPLICATE_COLUMN_SETTING`,e[e.INVALID_COLUMN_SETTING_VALUE=3025]=`INVALID_COLUMN_SETTING_VALUE`,e[e.INVALID_ENUM_CONTEXT=3026]=`INVALID_ENUM_CONTEXT`,e[e.INVALID_ENUM_ELEMENT_NAME=3027]=`INVALID_ENUM_ELEMENT_NAME`,e[e.INVALID_ENUM_ELEMENT=3028]=`INVALID_ENUM_ELEMENT`,e[e.DUPLICATE_ENUM_ELEMENT_NAME=3029]=`DUPLICATE_ENUM_ELEMENT_NAME`,e[e.UNKNOWN_ENUM_ELEMENT_SETTING=3030]=`UNKNOWN_ENUM_ELEMENT_SETTING`,e[e.DUPLICATE_ENUM_ELEMENT_SETTING=3031]=`DUPLICATE_ENUM_ELEMENT_SETTING`,e[e.INVALID_ENUM_ELEMENT_SETTING=3032]=`INVALID_ENUM_ELEMENT_SETTING`,e[e.EMPTY_ENUM=3033]=`EMPTY_ENUM`,e[e.INVALID_REF_CONTEXT=3034]=`INVALID_REF_CONTEXT`,e[e.UNKNOWN_REF_SETTING=3035]=`UNKNOWN_REF_SETTING`,e[e.DUPLICATE_REF_SETTING=3036]=`DUPLICATE_REF_SETTING`,e[e.INVALID_REF_SETTING_VALUE=3037]=`INVALID_REF_SETTING_VALUE`,e[e.INVALID_REF_RELATIONSHIP=3038]=`INVALID_REF_RELATIONSHIP`,e[e.INVALID_REF_FIELD=3039]=`INVALID_REF_FIELD`,e[e.EMPTY_REF=3040]=`EMPTY_REF`,e[e.REF_REDEFINED=3041]=`REF_REDEFINED`,e[e.INVALID_NOTE_CONTEXT=3042]=`INVALID_NOTE_CONTEXT`,e[e.INVALID_NOTE=3043]=`INVALID_NOTE`,e[e.NOTE_REDEFINED=3044]=`NOTE_REDEFINED`,e[e.NOTE_CONTENT_REDEFINED=3045]=`NOTE_CONTENT_REDEFINED`,e[e.EMPTY_NOTE=3046]=`EMPTY_NOTE`,e[e.UNKNOWN_NOTE_SETTING=3047]=`UNKNOWN_NOTE_SETTING`,e[e.DUPLICATE_NOTE_SETTING=3048]=`DUPLICATE_NOTE_SETTING`,e[e.INVALID_NOTE_SETTING_VALUE=3049]=`INVALID_NOTE_SETTING_VALUE`,e[e.INVALID_INDEXES_CONTEXT=3050]=`INVALID_INDEXES_CONTEXT`,e[e.INVALID_INDEXES_FIELD=3051]=`INVALID_INDEXES_FIELD`,e[e.INVALID_INDEX=3052]=`INVALID_INDEX`,e[e.UNKNOWN_INDEX_SETTING=3053]=`UNKNOWN_INDEX_SETTING`,e[e.DUPLICATE_INDEX_SETTING=3054]=`DUPLICATE_INDEX_SETTING`,e[e.UNEXPECTED_INDEX_SETTING_VALUE=3055]=`UNEXPECTED_INDEX_SETTING_VALUE`,e[e.INVALID_INDEX_SETTING_VALUE=3056]=`INVALID_INDEX_SETTING_VALUE`,e[e.INVALID_PROJECT_CONTEXT=3057]=`INVALID_PROJECT_CONTEXT`,e[e.PROJECT_REDEFINED=3058]=`PROJECT_REDEFINED`,e[e.INVALID_PROJECT_FIELD=3059]=`INVALID_PROJECT_FIELD`,e[e.INVALID_CUSTOM_CONTEXT=3060]=`INVALID_CUSTOM_CONTEXT`,e[e.INVALID_CUSTOM_ELEMENT_VALUE=3061]=`INVALID_CUSTOM_ELEMENT_VALUE`,e[e.INVALID_ELEMENT_IN_SIMPLE_BODY=3062]=`INVALID_ELEMENT_IN_SIMPLE_BODY`,e[e.INVALID_TABLE_PARTIAL_CONTEXT=3063]=`INVALID_TABLE_PARTIAL_CONTEXT`,e[e.INVALID_TABLE_PARTIAL_ELEMENT_NAME=3064]=`INVALID_TABLE_PARTIAL_ELEMENT_NAME`,e[e.INVALID_TABLE_PARTIAL_SETTING_VALUE=3065]=`INVALID_TABLE_PARTIAL_SETTING_VALUE`,e[e.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME=3066]=`DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_SETTING=3067]=`DUPLICATE_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_PARTIAL_INJECTION=3068]=`INVALID_TABLE_PARTIAL_INJECTION`,e[e.INVALID_TABLE_PARTIAL_INJECTION_OP=3069]=`INVALID_TABLE_PARTIAL_INJECTION_OP`,e[e.INVALID_TABLE_PARTIAL_INJECTION_NAME=3070]=`INVALID_TABLE_PARTIAL_INJECTION_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME=3071]=`DUPLICATE_TABLE_PARTIAL_INJECTION_NAME`,e[e.UNKNOWN_TABLE_PARTIAL_SETTING=3072]=`UNKNOWN_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_SETTING_VALUE=3073]=`INVALID_TABLE_SETTING_VALUE`,e[e.INVALID_CHECKS_CONTEXT=3074]=`INVALID_CHECKS_CONTEXT`,e[e.INVALID_CHECKS_FIELD=3075]=`INVALID_CHECKS_FIELD`,e[e.INVALID_CHECK=3076]=`INVALID_CHECK`,e[e.UNKNOWN_CHECK_SETTING=3077]=`UNKNOWN_CHECK_SETTING`,e[e.DUPLICATE_CHECK_SETTING=3078]=`DUPLICATE_CHECK_SETTING`,e[e.INVALID_CHECK_SETTING_VALUE=3079]=`INVALID_CHECK_SETTING_VALUE`,e[e.INVALID_RECORDS_CONTEXT=3080]=`INVALID_RECORDS_CONTEXT`,e[e.INVALID_RECORDS_NAME=3081]=`INVALID_RECORDS_NAME`,e[e.INVALID_RECORDS_FIELD=3082]=`INVALID_RECORDS_FIELD`,e[e.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS=3083]=`DUPLICATE_COLUMN_REFERENCES_IN_RECORDS`,e[e.DUPLICATE_RECORDS_FOR_TABLE=3084]=`DUPLICATE_RECORDS_FOR_TABLE`,e[e.INVALID_USE_CONTEXT=3085]=`INVALID_USE_CONTEXT`,e[e.INVALID_USE_SPECIFIER_KIND=3086]=`INVALID_USE_SPECIFIER_KIND`,e[e.INVALID_USE_SPECIFIER_NAME=3087]=`INVALID_USE_SPECIFIER_NAME`,e[e.INVALID_DIAGRAMVIEW_CONTEXT=3088]=`INVALID_DIAGRAMVIEW_CONTEXT`,e[e.DUPLICATE_DIAGRAMVIEW_NAME=3089]=`DUPLICATE_DIAGRAMVIEW_NAME`,e[e.INVALID_DIAGRAMVIEW_FIELD=3090]=`INVALID_DIAGRAMVIEW_FIELD`,e[e.DUPLICATE_DIAGRAMVIEW_FIELD=3091]=`DUPLICATE_DIAGRAMVIEW_FIELD`,e[e.BINDING_ERROR=4e3]=`BINDING_ERROR`,e[e.NONEXISTENT_MODULE=4001]=`NONEXISTENT_MODULE`,e[e.UNSUPPORTED=5e3]=`UNSUPPORTED`,e[e.CIRCULAR_REF=5001]=`CIRCULAR_REF`,e[e.SAME_ENDPOINT=5002]=`SAME_ENDPOINT`,e[e.UNEQUAL_FIELDS_BINARY_REF=5003]=`UNEQUAL_FIELDS_BINARY_REF`,e[e.CONFLICTING_SETTING=5004]=`CONFLICTING_SETTING`,e[e.TABLE_REAPPEAR_IN_TABLEGROUP=5005]=`TABLE_REAPPEAR_IN_TABLEGROUP`,e}({}),T=class e extends Error{constructor(t,n,r){super(n),this.code=t,this.diagnostic=n,this.nodeOrToken=r,this.start=r.start,this.end=r.end,this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}toWarning(){return new gf(this.code,this.message,this.nodeOrToken)}get filepath(){return this.nodeOrToken.filepath}},gf=class extends Error{constructor(e,t,n){super(t),this.code=e,this.diagnostic=t,this.nodeOrToken=n,this.start=n.start,this.end=n.end,this.name=this.constructor.name,Object.setPrototypeOf(this,T.prototype)}get filepath(){return this.nodeOrToken.filepath}},_f=class e extends Error{constructor(t,n,r,i){super(n),this.code=t,this.diagnostic=n,this.nodeOrToken=r,this.start=r.start,this.end=r.end,this.quickFixes=i?.quickFixes,this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}get filepath(){return this.nodeOrToken.filepath}};function vf(e){return!!e.match(/(\p{L}|_|\p{M})/gu)}function yf(e){if(!e)return!1;let t=e[0];return t>=`0`&&t<=`9`}function bf(e){let[t]=e;return yf(t)||vf(t)&&t.toLowerCase()>=`a`&&t.toLowerCase()<=`f`}function xf(e){return vf(e)||yf(e)}function Sf(e){let t=M(e);return t!==void 0&&t.length>0}function Cf(e){return wf(e)}function wf(e){return e instanceof fm&&e.expression instanceof dm}function Tf(e){return!!e.bodyColon}function Ef(e){return e instanceof V&&e.op?.value===`~`&&O(e.expression)}function Df(e){return e!==void 0&&nf.has(e)}function Of(e){if(!(e instanceof fm)||!(e.expression instanceof lm)||e.expression.literal?.kind!==_.COLOR_LITERAL)return!1;let t=e.expression.literal.value;if(t.length!==4&&t.length!==7||t[0]!==`#`)return!1;for(let e=1;e<t.length;e+=1)if(!bf(t[e]))return!1;return!0}function kf(e){if(D(e)||Af(e)||Ff(e)&&[`true`,`false`,`null`].includes(e.expression.variable.value.toLowerCase())||e instanceof V&&To.includes(e.op?.value)&&Af(e.expression)||e instanceof am)return!0;if(!e||!If(e))return!1;let t=ep(e);return t.length===2||t.length===3}function Af(e){return e instanceof V?To.includes(e.op.value)?Af(e.expression):!1:e instanceof fm&&e.expression instanceof lm&&e.expression.literal?.kind===_.NUMERIC_LITERAL}function jf(e){if(!(e instanceof V)||!Df(e.op?.value))return!1;let t=M(e.expression);return t!==void 0&&t.length>0}function Mf(e){return e instanceof om&&e.elementList.every(O)}function Nf(e){if(!(e instanceof G||k(e)||e instanceof fm||e instanceof mm))return!1;for(;e instanceof G||e instanceof mm;)if(e instanceof G){if(e.callee===void 0||e.argumentList===void 0||!e.argumentList.elementList.every(e=>Af(e)||D(e)||Ff(e)))return!1;e=e.callee}else if(e instanceof mm){if(e.array===void 0||e.indexer===void 0||!e.indexer.elementList.every(e=>!e.colon&&!e.value&&Af(e.name)))return!1;e=e.array}let t=M(e);return t!==void 0&&t.length>0}function E(e){let t={},r=[];return e?(e.elementList.forEach(e=>{if(!e.name)return;if(e.name instanceof fm){r.push(new T(w.INVALID_SETTINGS,`A setting name must be a stream of identifiers`,e.name));return}let n=Xf(e.name)?.toLowerCase();if(!n)return;let i=t[n];i?i.push(e):t[n]=[e]}),new n(t,r)):new n(t)}function D(e){return e instanceof fm&&(e.expression instanceof dm&&e.expression.variable instanceof Ha&&e.expression.variable.kind===_.QUOTED_STRING||e.expression instanceof lm&&e.expression.literal?.kind===_.STRING_LITERAL)}function O(e){return e instanceof fm&&e.expression instanceof dm&&e.expression.variable instanceof Ha}function Pf(e){return e?e instanceof um:!1}function Ff(e){return e instanceof fm&&e.expression instanceof dm&&e.expression.variable?.kind===_.IDENTIFIER}function k(e){return e instanceof rm&&e.leftExpression instanceof L&&e.rightExpression instanceof L&&e.op?.value===`.`}function If(e){return O(e)?!0:k(e)&&O(e.rightExpression)&&If(e.leftExpression)}function A(e,t){return e instanceof z&&e.isKind(t)}function Lf(e){return e instanceof $p}function Rf(e,t){return e instanceof em&&(t===void 0||e.isKind(t))}function zf(e){return e instanceof R}function j(e,...t){return e instanceof H&&e.parent instanceof z&&e.parent.isKind(...t)}function Bf(e,t){let n=e.parent;return n instanceof z&&n.isKind(t)&&!!n.body&&n.body.strictlyContains(e)}function Vf(e,t){let n=e.parentOfKind(H);if(!n||t<0)return!1;if(t===0)return n.callee?n.callee.containsEq(e):!1;let r=n.args[t-1];return r?r.containsEq(e):!1}function Hf(e){return!!e.parentOfKind(W)}function Uf(e,t){let n=e.parentOfKind(B);return!n||(n.name instanceof fm?P(n.name):Xf(n.name))?.toLowerCase()!==t?!1:!!n.value?.containsEq(e)}function Wf(e){return!(e instanceof rm)||!Df(e.op?.value)?!1:tp(e.leftExpression)!==void 0&&tp(e.rightExpression)!==void 0}function Gf(e){let t=tp(e.leftExpression),n=tp(e.rightExpression);if(t===void 0||n===void 0)return!1;let{tupleElements:r}=t,{tupleElements:i}=n;return r?.length===i?.length}function Kf(e){return e instanceof fm&&e.expression instanceof dm||e instanceof am}function qf(e){if(O(e))return e;if(k(e)){let t=e.rightExpression;if(t&&O(t))return t}}function Jf(e){let t=e.parentNode;return!k(t)||t.rightExpression!==e?!1:!(k(t.parentNode)&&t.parentNode.leftExpression===t)}function Yf(e){if(O(e))return e.expression.variable}function Xf(e){if(e===void 0)return;let t=e.identifiers.map(e=>e.value).join(` `);if(t!==``)return t}function Zf(e){if(!(e instanceof z))return;let t=M(e?.name);return t===void 0?void 0:t.join(`.`)}function Qf(e){return e.elementList.length===0}function $f(e){return e?.body?e.body instanceof U?e.body.body:[e.body]:[]}function ep(e){if(!e)return;if(!k(e))return[e];let t=ep(e.leftExpression);if(t)return t.push(e.rightExpression),t}function M(e){if(e===void 0)return;let t=ep(e);if(!t)return;let n=[];for(let e of t){let t=P(e);if(typeof t!=`string`)return;n.push(t)}return n}function tp(e){if(e===void 0)return;let t=ep(e);if(!t||t.length===0)return;let n=[];if(!O(h(t))){let e=t.pop();if(Mf(e))n=e.elementList;else return}let r=t;if(r.every(O))return{variables:r,tupleElements:n}}function np(e){if(Kf(e))return e instanceof am?{functional:[e],nonFunctional:[]}:{functional:[],nonFunctional:[e]};if(e instanceof om&&e.elementList.every(Kf))return{functional:e.elementList.filter(e=>e instanceof am),nonFunctional:e.elementList.filter(O)}}function N(e){if(D(e))return e.expression instanceof dm?e?.expression?.variable?.value:e.expression.literal.value}function rp(e){return e instanceof fm&&e.expression instanceof lm&&e.expression.literal?.kind===_.NUMERIC_LITERAL?Number(e.expression.literal.value):null}function ip(e){if(!(e instanceof G)||!e.callee)return;let t=ep(e.callee);if(!t||t.length===0||!t.every(O))return;let n=[];return Mf(e.argumentList)&&(n=[...e.argumentList.elementList]),{variables:t,args:n}}function P(e){if(O(e))return e.expression.variable.value}function ap(e){let t=e?.expression.variable?.value;return t===void 0?void 0:t}function op(e){return Ff(e)?e.expression.variable?.value?.toLowerCase()===`null`:e instanceof pm}function sp(e){return N(e)===``}function cp(e){return e instanceof am}function lp(e){let t=rp(e);if(t!==null)return t;if(Af(e)&&e instanceof V&&e.expression){let t=e.op?.value,n=rp(e.expression);if(n!==null)return t===`-`?-n:n}return null}function up(e){if(e==null)return null;if(typeof e==`number`)return e;if(typeof e==`string`){let t=Number(e);return isNaN(t)?null:t}if(typeof e==`boolean`)return+!!e;let t=lp(e);if(t!==null)return t;let n=N(e);if(n!==void 0){let e=Number(n);if(!isNaN(e))return e}return null}function dp(e){if(e==null)return null;if(typeof e==`number`)return Number.isInteger(e)?e:null;if(typeof e==`string`){let t=Number(e);return isNaN(t)||!Number.isInteger(t)?null:t}if(typeof e==`boolean`)return+!!e;let t=lp(e);if(t!==null)return Number.isInteger(t)?t:null;let n=N(e);if(n!==void 0){let e=Number(n);if(!isNaN(e)&&Number.isInteger(e))return e}return null}var fp=[`true`,`yes`,`y`,`t`,`1`],pp=[`false`,`no`,`n`,`f`,`0`];function mp(e){if(e==null)return null;if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===0?!1:e===1?!0:null;if(typeof e==`string`){let t=e.toLowerCase();return fp.includes(t)?!0:pp.includes(t)?!1:null}if(Ff(e)){let t=e.expression.variable?.value?.toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}let t=rp(e);if(t===0)return!1;if(t===1)return!0;let n=N(e)?.toLowerCase();if(n){if(fp.includes(n))return!0;if(pp.includes(n))return!1}return null}function hp(e){if(e==null)return null;if(typeof e==`string`)return e;let t=M(e);return t?h(t):N(e)??null}function gp(e){if(e==null)return null;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return e.toString();let t=N(e)??null??up(e)??mp(e);return t===null?null:t.toString()}var _p=[`yyyy-MM-dd`,`M/d/yyyy`,`d MMM yyyy`,`MMM d, yyyy`],vp=[`yyyy-MM-dd HH:mm:ss`,`yyyy-MM-dd HH:mm:ss.SSS`,`yyyy-MM-dd HH:mm:ss.SSSZZ`,`yyyy-MM-dd HH:mm:ssZZ`],yp=[`HH:mm:ss`,`HH:mm:ssZZ`,`HH:mm:ss.SSS`,`HH:mm:ss.SSSZZ`];function bp(e){if(e==null)return null;let t=typeof e==`string`?e:N(e)??null;if(t===null)return null;for(let e of yp){let n=C.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISOTime({suppressMilliseconds:!0,includeOffset:r(n)})}for(let e of _p){let n=C.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISODate()}for(let e of vp){let n=C.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)})}let n=C.fromISO(t,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)});return null;function r(e){return e.zone.type!==`system`}}function xp(e){return e instanceof V?`${e.op?.value}${xp(e.expression)}`:e.expression.literal.value}function Sp(e){return e instanceof V?e.op?.value===`-`?-Sp(e.expression):Sp(e.expression):Number.parseFloat(e.expression.literal.value)}function F(e){return{start:{offset:e.startPos.offset,line:e.startPos.line+1,column:e.startPos.column+1},end:{offset:e.endPos.offset,line:e.endPos.line+1,column:e.endPos.column+1},filepath:e.filepath}}function Cp(e){let t=e.split(`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Symbol(`PASS_THROUGH`),t=Symbol(`UNHANDLED`),n=class e{static create(t,n,r,i){return new e(t,n,r,i)}constructor(e,t,n,r){this.value=e,this.errors=t??[],this.warnings=n,this.infos=r}filter(t){return this.value===t?new e(void 0,this.errors,this.warnings,this.infos):this}hasValue(e){return this.value===e}getFiltered(e){return this.value===e?void 0:this.value}getValue(){return this.value}getErrors(){return this.errors}getWarnings(){return this.warnings??[]}getInfos(){return this.infos??[]}chainFiltered(t,n){if(this.value===n)return new e(void 0,this.errors,this.warnings,this.infos);let r=t(this.value),i=[...this.errors,...r.errors],a=[...this.getWarnings(),...r.getWarnings()],o=[...this.getInfos(),...r.getInfos()];return new e(r.value,i,a,o)}chain(t){let n=t(this.value),r=[...this.errors,...n.errors],i=[...this.getWarnings(),...n.getWarnings()],a=[...this.getInfos(),...n.getInfos()];return new e(n.value,r,i,a)}mapFiltered(t,n){return this.value===n?new e(void 0,this.errors,this.warnings,this.infos):new e(t(this.value),this.errors,this.warnings,this.infos)}map(t){return new e(t(this.value),this.errors,this.warnings,this.infos)}},r=function(e){return e.Table=`table`,e.Enum=`enum`,e.Ref=`ref`,e.Note=`note`,e.Project=`project`,e.Indexes=`indexes`,e.TableGroup=`tablegroup`,e.TablePartial=`tablepartial`,e.Checks=`checks`,e.Records=`records`,e.DiagramView=`diagramview`,e.DiagramViewTables=`tables`,e.DiagramViewNotes=`notes`,e.DiagramViewTableGroups=`tablegroups`,e.DiagramViewSchemas=`schemas`,e}({}),i=function(e){return e.Color=`color`,e.HeaderColor=`headercolor`,e.Note=`note`,e.PK=`pk`,e.PrimaryKey=`primary key`,e.Unique=`unique`,e.Ref=`ref`,e.NotNull=`not null`,e.Null=`null`,e.Increment=`increment`,e.Default=`default`,e.Name=`name`,e.Type=`type`,e.Check=`check`,e.Update=`update`,e.Delete=`delete`,e.Inactive=`inactive`,e}({}),a=typeof global==`object`&&global&&global.Object===Object&&global,o=typeof self==`object`&&self&&self.Object===Object&&self,s=a||o||Function(`return this`)(),c=s.Symbol,l=Object.prototype,u=l.hasOwnProperty,d=l.toString,f=c?c.toStringTag:void 0;function p(e){var t=u.call(e,f),n=e[f];try{e[f]=void 0;var r=!0}catch{}var i=d.call(e);return r&&(t?e[f]=n:delete e[f]),i}var m=Object.prototype.toString;function ee(e){return m.call(e)}var te=`[object Null]`,ne=`[object Undefined]`,re=c?c.toStringTag:void 0;function ie(e){return e==null?e===void 0?ne:te:re&&re in Object(e)?p(e):ee(e)}function ae(e){return typeof e==`object`&&!!e}var oe=`[object Symbol]`;function se(e){return typeof e==`symbol`||ae(e)&&ie(e)==oe}function ce(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n<r;)i[n]=t(e[n],n,e);return i}var le=Array.isArray,ue=1/0,de=c?c.prototype:void 0,fe=de?de.toString:void 0;function pe(e){if(typeof e==`string`)return e;if(le(e))return ce(e,pe)+``;if(se(e))return fe?fe.call(e):``;var t=e+``;return t==`0`&&1/e==-ue?`-0`:t}var me=/\s/;function he(e){for(var t=e.length;t--&&me.test(e.charAt(t)););return t}var ge=/^\s+/;function _e(e){return e&&e.slice(0,he(e)+1).replace(ge,``)}function ve(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var ye=NaN,be=/^[-+]0x[0-9a-f]+$/i,xe=/^0b[01]+$/i,Se=/^0o[0-7]+$/i,Ce=parseInt;function we(e){if(typeof e==`number`)return e;if(se(e))return ye;if(ve(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=ve(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=_e(e);var n=xe.test(e);return n||Se.test(e)?Ce(e.slice(2),n?2:8):be.test(e)?ye:+e}var Te=1/0,Ee=17976931348623157e292;function De(e){return e?(e=we(e),e===Te||e===-Te?(e<0?-1:1)*Ee:e===e?e:0):e===0?e:0}function Oe(e){var t=De(e),n=t%1;return t===t?n?t-n:t:0}function ke(e){return e}var Ae=`[object AsyncFunction]`,je=`[object Function]`,Me=`[object GeneratorFunction]`,Ne=`[object Proxy]`;function Pe(e){if(!ve(e))return!1;var t=ie(e);return t==je||t==Me||t==Ae||t==Ne}var Fe=s[`__core-js_shared__`],Ie=function(){var e=/[^.]+$/.exec(Fe&&Fe.keys&&Fe.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function Le(e){return!!Ie&&Ie in e}var Re=Function.prototype.toString;function ze(e){if(e!=null){try{return Re.call(e)}catch{}try{return e+``}catch{}}return``}var Be=/[\\^$.*+?()[\]{}|]/g,Ve=/^\[object .+?Constructor\]$/,He=Function.prototype,Ue=Object.prototype,We=He.toString,Ge=Ue.hasOwnProperty,Ke=RegExp(`^`+We.call(Ge).replace(Be,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function qe(e){return!ve(e)||Le(e)?!1:(Pe(e)?Ke:Ve).test(ze(e))}function Je(e,t){return e?.[t]}function Ye(e,t){var n=Je(e,t);return qe(n)?n:void 0}var Xe=Ye(s,`WeakMap`);function Ze(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function Qe(){}var $e=800,et=16,tt=Date.now;function nt(e){var t=0,n=0;return function(){var r=tt(),i=et-(r-n);if(n=r,i>0){if(++t>=$e)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function rt(e){return function(){return e}}var it=function(){try{var e=Ye(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),at=nt(it?function(e,t){return it(e,`toString`,{configurable:!0,enumerable:!1,value:rt(t),writable:!0})}:ke);function ot(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a<i;)if(t(e[a],a,e))return a;return-1}function st(e){return e!==e}function ct(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}function lt(e,t,n){return t===t?ct(e,t,n):ot(e,st,n)}function ut(e,t){return!!(e!=null&&e.length)&&lt(e,t,0)>-1}var dt=9007199254740991,ft=/^(?:0|[1-9]\d*)$/;function pt(e,t){var n=typeof e;return t??=dt,!!t&&(n==`number`||n!=`symbol`&&ft.test(e))&&e>-1&&e%1==0&&e<t}function mt(e,t,n){t==`__proto__`&&it?it(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function ht(e,t){return e===t||e!==e&&t!==t}var gt=Math.max;function _t(e,t,n){return t=gt(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=gt(r.length-t,0),o=Array(a);++i<a;)o[i]=r[t+i];i=-1;for(var s=Array(t+1);++i<t;)s[i]=r[i];return s[t]=n(o),Ze(e,this,s)}}function vt(e,t){return at(_t(e,t,ke),e+``)}var yt=9007199254740991;function bt(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=yt}function xt(e){return e!=null&&bt(e.length)&&!Pe(e)}var St=Object.prototype;function Ct(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||St)}function wt(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var Tt=`[object Arguments]`;function Et(e){return ae(e)&&ie(e)==Tt}var Dt=Object.prototype,Ot=Dt.hasOwnProperty,kt=Dt.propertyIsEnumerable,At=Et(function(){return arguments}())?Et:function(e){return ae(e)&&Ot.call(e,`callee`)&&!kt.call(e,`callee`)};function jt(){return!1}var Mt=typeof exports==`object`&&exports&&!exports.nodeType&&exports,Nt=Mt&&typeof module==`object`&&module&&!module.nodeType&&module,Pt=Nt&&Nt.exports===Mt?s.Buffer:void 0,Ft=(Pt?Pt.isBuffer:void 0)||jt,It=`[object Arguments]`,Lt=`[object Array]`,Rt=`[object Boolean]`,zt=`[object Date]`,Bt=`[object Error]`,Vt=`[object Function]`,Ht=`[object Map]`,Ut=`[object Number]`,Wt=`[object Object]`,Gt=`[object RegExp]`,Kt=`[object Set]`,qt=`[object String]`,Jt=`[object WeakMap]`,Yt=`[object ArrayBuffer]`,Xt=`[object DataView]`,Zt=`[object Float32Array]`,Qt=`[object Float64Array]`,$t=`[object Int8Array]`,en=`[object Int16Array]`,tn=`[object Int32Array]`,nn=`[object Uint8Array]`,rn=`[object Uint8ClampedArray]`,an=`[object Uint16Array]`,on=`[object Uint32Array]`,h={};h[Zt]=h[Qt]=h[$t]=h[en]=h[tn]=h[nn]=h[rn]=h[an]=h[on]=!0,h[It]=h[Lt]=h[Yt]=h[Rt]=h[Xt]=h[zt]=h[Bt]=h[Vt]=h[Ht]=h[Ut]=h[Wt]=h[Gt]=h[Kt]=h[qt]=h[Jt]=!1;function sn(e){return ae(e)&&bt(e.length)&&!!h[ie(e)]}function cn(e){return function(t){return e(t)}}var ln=typeof exports==`object`&&exports&&!exports.nodeType&&exports,un=ln&&typeof module==`object`&&module&&!module.nodeType&&module,dn=un&&un.exports===ln&&a.process,fn=function(){try{return un&&un.require&&un.require(`util`).types||dn&&dn.binding&&dn.binding(`util`)}catch{}}(),pn=fn&&fn.isTypedArray,mn=pn?cn(pn):sn,hn=Object.prototype.hasOwnProperty;function gn(e,t){var n=le(e),r=!n&&At(e),i=!n&&!r&&Ft(e),a=!n&&!r&&!i&&mn(e),o=n||r||i||a,s=o?wt(e.length,String):[],c=s.length;for(var l in e)(t||hn.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||pt(l,c)))&&s.push(l);return s}function _n(e,t){return function(n){return e(t(n))}}var vn=_n(Object.keys,Object),yn=Object.prototype.hasOwnProperty;function bn(e){if(!Ct(e))return vn(e);var t=[];for(var n in Object(e))yn.call(e,n)&&n!=`constructor`&&t.push(n);return t}function xn(e){return xt(e)?gn(e):bn(e)}function Sn(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var Cn=Object.prototype.hasOwnProperty;function wn(e){if(!ve(e))return Sn(e);var t=Ct(e),n=[];for(var r in e)r==`constructor`&&(t||!Cn.call(e,r))||n.push(r);return n}function Tn(e){return xt(e)?gn(e,!0):wn(e)}var En=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Dn=/^\w*$/;function On(e,t){if(le(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||se(e)?!0:Dn.test(e)||!En.test(e)||t!=null&&e in Object(t)}var kn=Ye(Object,`create`);function An(){this.__data__=kn?kn(null):{},this.size=0}function jn(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=+!!t,t}var Mn=`__lodash_hash_undefined__`,Nn=Object.prototype.hasOwnProperty;function Pn(e){var t=this.__data__;if(kn){var n=t[e];return n===Mn?void 0:n}return Nn.call(t,e)?t[e]:void 0}var Fn=Object.prototype.hasOwnProperty;function In(e){var t=this.__data__;return kn?t[e]!==void 0:Fn.call(t,e)}var Ln=`__lodash_hash_undefined__`;function Rn(e,t){var n=this.__data__;return this.size+=+!this.has(e),n[e]=kn&&t===void 0?Ln:t,this}function zn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}zn.prototype.clear=An,zn.prototype.delete=jn,zn.prototype.get=Pn,zn.prototype.has=In,zn.prototype.set=Rn;function Bn(){this.__data__=[],this.size=0}function Vn(e,t){for(var n=e.length;n--;)if(ht(e[n][0],t))return n;return-1}var Hn=Array.prototype.splice;function Un(e){var t=this.__data__,n=Vn(t,e);return n<0?!1:(n==t.length-1?t.pop():Hn.call(t,n,1),--this.size,!0)}function Wn(e){var t=this.__data__,n=Vn(t,e);return n<0?void 0:t[n][1]}function Gn(e){return Vn(this.__data__,e)>-1}function Kn(e,t){var n=this.__data__,r=Vn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function qn(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}qn.prototype.clear=Bn,qn.prototype.delete=Un,qn.prototype.get=Wn,qn.prototype.has=Gn,qn.prototype.set=Kn;var Jn=Ye(s,`Map`);function Yn(){this.size=0,this.__data__={hash:new zn,map:new(Jn||qn),string:new zn}}function Xn(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}function Zn(e,t){var n=e.__data__;return Xn(t)?n[typeof t==`string`?`string`:`hash`]:n.map}function Qn(e){var t=Zn(this,e).delete(e);return this.size-=+!!t,t}function $n(e){return Zn(this,e).get(e)}function er(e){return Zn(this,e).has(e)}function tr(e,t){var n=Zn(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function nr(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}nr.prototype.clear=Yn,nr.prototype.delete=Qn,nr.prototype.get=$n,nr.prototype.has=er,nr.prototype.set=tr;var rr=`Expected a function`;function ir(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(rr);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(ir.Cache||nr),n}ir.Cache=nr;var ar=500;function or(e){var t=ir(e,function(e){return n.size===ar&&n.clear(),e}),n=t.cache;return t}var sr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,cr=/\\(\\)?/g,lr=or(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(sr,function(e,n,r,i){t.push(r?i.replace(cr,`$1`):n||e)}),t});function ur(e){return e==null?``:pe(e)}function dr(e,t){return le(e)?e:On(e,t)?[e]:lr(ur(e))}var fr=1/0;function pr(e){if(typeof e==`string`||se(e))return e;var t=e+``;return t==`0`&&1/e==-fr?`-0`:t}function mr(e,t){t=dr(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[pr(t[n++])];return n&&n==r?e:void 0}function hr(e,t,n){var r=e==null?void 0:mr(e,t);return r===void 0?n:r}function gr(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var _r=c?c.isConcatSpreadable:void 0;function vr(e){return le(e)||At(e)||!!(_r&&e&&e[_r])}function yr(e,t,n,r,i){var a=-1,o=e.length;for(n||=vr,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?yr(s,t-1,n,r,i):gr(i,s):r||(i[i.length]=s)}return i}function br(e){return e!=null&&e.length?yr(e,1):[]}function xr(){this.__data__=new qn,this.size=0}function Sr(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function Cr(e){return this.__data__.get(e)}function wr(e){return this.__data__.has(e)}var Tr=200;function Er(e,t){var n=this.__data__;if(n instanceof qn){var r=n.__data__;if(!Jn||r.length<Tr-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new nr(r)}return n.set(e,t),this.size=n.size,this}function Dr(e){var t=this.__data__=new qn(e);this.size=t.size}Dr.prototype.clear=xr,Dr.prototype.delete=Sr,Dr.prototype.get=Cr,Dr.prototype.has=wr,Dr.prototype.set=Er;function Or(e,t){for(var n=-1,r=e==null?0:e.length,i=0,a=[];++n<r;){var o=e[n];t(o,n,e)&&(a[i++]=o)}return a}function kr(){return[]}var Ar=Object.prototype.propertyIsEnumerable,jr=Object.getOwnPropertySymbols,Mr=jr?function(e){return e==null?[]:(e=Object(e),Or(jr(e),function(t){return Ar.call(e,t)}))}:kr;function Nr(e,t,n){var r=t(e);return le(e)?r:gr(r,n(e))}function Pr(e){return Nr(e,xn,Mr)}var Fr=Ye(s,`DataView`),Ir=Ye(s,`Promise`),Lr=Ye(s,`Set`),Rr=`[object Map]`,zr=`[object Object]`,Br=`[object Promise]`,Vr=`[object Set]`,Hr=`[object WeakMap]`,Ur=`[object DataView]`,Wr=ze(Fr),Gr=ze(Jn),Kr=ze(Ir),qr=ze(Lr),Jr=ze(Xe),Yr=ie;(Fr&&Yr(new Fr(new ArrayBuffer(1)))!=Ur||Jn&&Yr(new Jn)!=Rr||Ir&&Yr(Ir.resolve())!=Br||Lr&&Yr(new Lr)!=Vr||Xe&&Yr(new Xe)!=Hr)&&(Yr=function(e){var t=ie(e),n=t==zr?e.constructor:void 0,r=n?ze(n):``;if(r)switch(r){case Wr:return Ur;case Gr:return Rr;case Kr:return Br;case qr:return Vr;case Jr:return Hr}return t});var Xr=Yr,Zr=s.Uint8Array;function Qr(e){for(var t=-1,n=e==null?0:e.length,r=0,i=[];++t<n;){var a=e[t];a&&(i[r++]=a)}return i}var $r=`__lodash_hash_undefined__`;function ei(e){return this.__data__.set(e,$r),this}function ti(e){return this.__data__.has(e)}function ni(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new nr;++t<n;)this.add(e[t])}ni.prototype.add=ni.prototype.push=ei,ni.prototype.has=ti;function ri(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function ii(e,t){return e.has(t)}var ai=1,oi=2;function si(e,t,n,r,i,a){var o=n&ai,s=e.length,c=t.length;if(s!=c&&!(o&&c>s))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&oi?new ni:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],ee=t[d];if(r)var te=o?r(ee,m,d,t,e,a):r(m,ee,d,e,t,a);if(te!==void 0){if(te)continue;f=!1;break}if(p){if(!ri(t,function(e,t){if(!ii(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===ee||i(m,ee,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}function ci(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}function li(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var ui=1,di=2,fi=`[object Boolean]`,pi=`[object Date]`,mi=`[object Error]`,hi=`[object Map]`,gi=`[object Number]`,_i=`[object RegExp]`,vi=`[object Set]`,yi=`[object String]`,bi=`[object Symbol]`,xi=`[object ArrayBuffer]`,Si=`[object DataView]`,Ci=c?c.prototype:void 0,wi=Ci?Ci.valueOf:void 0;function Ti(e,t,n,r,i,a,o){switch(n){case Si:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case xi:return!(e.byteLength!=t.byteLength||!a(new Zr(e),new Zr(t)));case fi:case pi:case gi:return ht(+e,+t);case mi:return e.name==t.name&&e.message==t.message;case _i:case yi:return e==t+``;case hi:var s=ci;case vi:var c=r&ui;if(s||=li,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=di,o.set(e,t);var u=si(s(e),s(t),r,i,a,o);return o.delete(e),u;case bi:if(wi)return wi.call(e)==wi.call(t)}return!1}var Ei=1,Di=Object.prototype.hasOwnProperty;function Oi(e,t,n,r,i,a){var o=n&Ei,s=Pr(e),c=s.length;if(c!=Pr(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Di.call(t,u)))return!1}var d=a.get(e),f=a.get(t);if(d&&f)return d==t&&f==e;var p=!0;a.set(e,t),a.set(t,e);for(var m=o;++l<c;){u=s[l];var ee=e[u],te=t[u];if(r)var ne=o?r(te,ee,u,t,e,a):r(ee,te,u,e,t,a);if(!(ne===void 0?ee===te||i(ee,te,n,r,a):ne)){p=!1;break}m||=u==`constructor`}if(p&&!m){var re=e.constructor,ie=t.constructor;re!=ie&&`constructor`in e&&`constructor`in t&&!(typeof re==`function`&&re instanceof re&&typeof ie==`function`&&ie instanceof ie)&&(p=!1)}return a.delete(e),a.delete(t),p}var ki=1,Ai=`[object Arguments]`,ji=`[object Array]`,Mi=`[object Object]`,Ni=Object.prototype.hasOwnProperty;function Pi(e,t,n,r,i,a){var o=le(e),s=le(t),c=o?ji:Xr(e),l=s?ji:Xr(t);c=c==Ai?Mi:c,l=l==Ai?Mi:l;var u=c==Mi,d=l==Mi,f=c==l;if(f&&Ft(e)){if(!Ft(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new Dr,o||mn(e)?si(e,t,n,r,i,a):Ti(e,t,c,n,r,i,a);if(!(n&ki)){var p=u&&Ni.call(e,`__wrapped__`),m=d&&Ni.call(t,`__wrapped__`);if(p||m){var ee=p?e.value():e,te=m?t.value():t;return a||=new Dr,i(ee,te,n,r,a)}}return f?(a||=new Dr,Oi(e,t,n,r,i,a)):!1}function Fi(e,t,n,r,i){return e===t?!0:e==null||t==null||!ae(e)&&!ae(t)?e!==e&&t!==t:Pi(e,t,n,r,Fi,i)}var Ii=1,Li=2;function Ri(e,t,n,r){var i=n.length,a=i,o=!r;if(e==null)return!a;for(e=Object(e);i--;){var s=n[i];if(o&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){s=n[i];var c=s[0],l=e[c],u=s[1];if(o&&s[2]){if(l===void 0&&!(c in e))return!1}else{var d=new Dr;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?Fi(u,l,Ii|Li,r,d):f))return!1}}return!0}function zi(e){return e===e&&!ve(e)}function Bi(e){for(var t=xn(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,zi(i)]}return t}function Vi(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function Hi(e){var t=Bi(e);return t.length==1&&t[0][2]?Vi(t[0][0],t[0][1]):function(n){return n===e||Ri(n,e,t)}}function Ui(e,t){return e!=null&&t in Object(e)}function Wi(e,t,n){t=dr(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=pr(t[r]);if(!(a=e!=null&&n(e,o)))break;e=e[o]}return a||++r!=i?a:(i=e==null?0:e.length,!!i&&bt(i)&&pt(o,i)&&(le(e)||At(e)))}function Gi(e,t){return e!=null&&Wi(e,t,Ui)}var Ki=1,qi=2;function Ji(e,t){return On(e)&&zi(t)?Vi(pr(e),t):function(n){var r=hr(n,e);return r===void 0&&r===t?Gi(n,e):Fi(t,r,Ki|qi)}}function Yi(e){return function(t){return t?.[e]}}function Xi(e){return function(t){return mr(t,e)}}function Zi(e){return On(e)?Yi(pr(e)):Xi(e)}function Qi(e){return typeof e==`function`?e:e==null?ke:typeof e==`object`?le(e)?Ji(e[0],e[1]):Hi(e):Zi(e)}function $i(e,t,n,r){for(var i=-1,a=e==null?0:e.length;++i<a;){var o=e[i];t(r,o,n(o),e)}return r}function ea(e){return function(t,n,r){for(var i=-1,a=Object(t),o=r(t),s=o.length;s--;){var c=o[e?s:++i];if(n(a[c],c,a)===!1)break}return t}}var ta=ea();function na(e,t){return e&&ta(e,t,xn)}function ra(e,t){return function(n,r){if(n==null)return n;if(!xt(n))return e(n,r);for(var i=n.length,a=t?i:-1,o=Object(n);(t?a--:++a<i)&&r(o[a],a,o)!==!1;);return n}}var ia=ra(na);function aa(e,t,n,r){return ia(e,function(e,i,a){t(r,e,n(e),a)}),r}function oa(e,t){return function(n,r){var i=le(n)?$i:aa,a=t?t():{};return i(n,e,Qi(r,2),a)}}function sa(e){return ae(e)&&xt(e)}function ca(e,t,n){for(var r=-1,i=e==null?0:e.length;++r<i;)if(n(t,e[r]))return!0;return!1}var la=200;function ua(e,t,n,r){var i=-1,a=ut,o=!0,s=e.length,c=[],l=t.length;if(!s)return c;n&&(t=ce(t,cn(n))),r?(a=ca,o=!1):t.length>=la&&(a=ii,o=!1,t=new ni(t));outer:for(;++i<s;){var u=e[i],d=n==null?u:n(u);if(u=r||u!==0?u:0,o&&d===d){for(var f=l;f--;)if(t[f]===d)continue outer;c.push(u)}else a(t,d,r)||c.push(u)}return c}var da=vt(function(e,t){return sa(e)?ua(e,yr(t,1,sa,!0)):[]});function g(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function fa(e){return typeof e==`function`?e:ke}function pa(e,t){var n=[];return ia(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}function ma(e,t){return(le(e)?Or:pa)(e,Qi(t,3))}var ha=Math.max,ga=Math.min;function _a(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return n!==void 0&&(i=Oe(n),i=n<0?ha(r+i,0):ga(i,r-1)),ot(e,Qi(t,3),i,!0)}function va(e){return e&&e.length?e[0]:void 0}function ya(e,t){var n=-1,r=xt(e)?Array(e.length):[];return ia(e,function(e,i,a){r[++n]=t(e,i,a)}),r}function ba(e,t){return(le(e)?ce:ya)(e,Qi(t,3))}function xa(e,t){return yr(ba(e,t),1)}function Sa(e,t){return e==null?e:ta(e,fa(t),Tn)}var Ca=Object.prototype.hasOwnProperty,wa=oa(function(e,t,n){Ca.call(e,n)?e[n].push(t):mt(e,n,[t])}),Ta=`[object Map]`,Ea=`[object Set]`,Da=Object.prototype.hasOwnProperty;function Oa(e){if(e==null)return!0;if(xt(e)&&(le(e)||typeof e==`string`||typeof e.splice==`function`||Ft(e)||mn(e)||At(e)))return!e.length;var t=Xr(e);if(t==Ta||t==Ea)return!e.size;if(Ct(e))return!bn(e).length;for(var n in e)if(Da.call(e,n))return!1;return!0}var ka=oa(function(e,t,n){mt(e,n,t)}),_=oa(function(e,t,n){e[+!n].push(t)},function(){return[[],[]]}),Aa=Lr&&1/li(new Lr([,-0]))[1]==1/0?function(e){return new Lr(e)}:Qe,ja=200;function Ma(e,t,n){var r=-1,i=ut,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=ca;else if(a>=ja){var l=t?null:Aa(e);if(l)return li(l);o=!1,i=ii,c=new ni}else c=t?[]:s;outer:for(;++r<a;){var u=e[r],d=t?t(u):u;if(u=n||u!==0?u:0,o&&d===d){for(var f=c.length;f--;)if(c[f]===d)continue outer;t&&c.push(d),s.push(u)}else i(c,d,n)||(c!==s&&c.push(d),s.push(u))}return s}function Na(e){return e&&e.length?Ma(e):[]}function Pa(e,t){return e&&e.length?Ma(e,Qi(t,2)):[]}var Fa=Math.max;function Ia(e){if(!(e&&e.length))return[];var t=0;return e=Or(e,function(e){if(sa(e))return t=Fa(e.length,t),!0}),wt(t,function(t){return ce(e,Yi(t))})}var La=vt(Ia),v=function(e){return e.SPACE=`<space>`,e.TAB=`<tab>`,e.NEWLINE=`<newline>`,e.COMMA=`<comma>`,e.LPAREN=`<lparen>`,e.RPAREN=`<rparen>`,e.LBRACE=`<lbrace>`,e.RBRACE=`<rbrace>`,e.LBRACKET=`<lbracket>`,e.RBRACKET=`<rbracket>`,e.LANGLE=`<langle>`,e.RANGLE=`<rangle>`,e.OP=`<op>`,e.EOF=`<eof>`,e.NUMERIC_LITERAL=`<number>`,e.STRING_LITERAL=`<string>`,e.COLOR_LITERAL=`<color>`,e.FUNCTION_EXPRESSION=`<function-expression>`,e.QUOTED_STRING=`<variable>`,e.IDENTIFIER=`<identifier>`,e.SEMICOLON=`<semicolon>`,e.COLON=`<colon>`,e.SINGLE_LINE_COMMENT=`<single-line-comment>`,e.MULTILINE_COMMENT=`<multiline-comment>`,e.WILDCARD=`<wildcard>`,e}({});function Ra(e){switch(e.kind){case`<newline>`:case`<space>`:case`<tab>`:case`<single-line-comment>`:case`<multiline-comment>`:return!0;default:return!1}}function za(e){if(!e)return!1;switch(e){case`+`:case`-`:case`/`:case`%`:case`<`:case`>`:case`=`:case`!`:case`?`:case`.`:case`&`:case`|`:case`~`:return!0;default:return!1}}function Ba(e){return e!==void 0&&e.kind===`<op>`}var Va=class e{constructor(e,t,n,r,i,a){this.kind=e,this.filepath=t,this.startPos=n,this.endPos=r,this.value=i,this.leadingTrivia=[],this.trailingTrivia=[],this.leadingInvalid=[],this.trailingInvalid=[],this.isInvalid=a,this.start=n.offset,this.end=r.offset}static create(t,n,r,i,a,o){return new e(t,n,r,i,a,o)}};function Ha(e){return e.trailingTrivia.find(({kind:e})=>e===v.NEWLINE)!==void 0}function Ua(e,t){return t.leadingTrivia.find(({kind:e})=>e===v.NEWLINE)!==void 0||Ha(e)}function Wa(e){return e.trailingTrivia.find(({kind:e})=>[v.SPACE,v.TAB].includes(e))!==void 0}function Ga(e){return e.trailingTrivia.length===0?e.end:Ga(g(e.trailingTrivia))}function Ka(e){return e.leadingTrivia.length===0?e.start:Ka(e.leadingTrivia[0])}function qa(e){return[v.SINGLE_LINE_COMMENT,v.MULTILINE_COMMENT].includes(e.kind)}function Ja(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`as`}function Ya(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`use`}function Xa(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`from`}function Za(e){return e?.kind===v.IDENTIFIER&&e.value.toLowerCase()===`reuse`}function Qa(e){return!!e?.isInvalid}var $a=class{constructor(e){this.generator=e}create(e,t,n){return new e(t,this.generator.nextId(),n)}},eo=/^[A-Za-z]:\//;function to(e=``){return e&&e.replace(/\\/g,`/`).replace(eo,e=>e.toUpperCase())}var no=/^[/\\]{2}/,ro=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,io=/^[A-Za-z]:$/,ao=/^\/([A-Za-z]:)?$/,oo=/.(\.[^./]+|\.)$/,so=function(e){if(e.length===0)return`.`;e=to(e);let t=e.match(no),n=po(e),r=e[e.length-1]===`/`;return e=fo(e,!n),e.length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),io.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!po(e)?`/${e}`:e)},co=function(...e){let t=``;for(let n of e)if(n)if(t.length>0){let e=t[t.length-1]===`/`,r=n[0]===`/`;e&&r?t+=n.slice(1):t+=e||r?n:`/${n}`}else t+=n;return so(t)};function lo(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}var uo=function(...e){e=e.map(e=>to(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:lo();!i||i.length===0||(t=`${i}/${t}`,n=po(i))}return t=fo(t,!n),n&&!po(t)?`/${t}`:t.length>0?t:`.`};function fo(e,t){let n=``,r=0,i=-1,a=0,o=null;for(let s=0;s<=e.length;++s){if(s<e.length)o=e[s];else if(o===`/`)break;else o=`/`;if(o===`/`){if(!(i===s-1||a===1))if(a===2){if(n.length<2||r!==2||n[n.length-1]!==`.`||n[n.length-2]!==`.`){if(n.length>2){let e=n.lastIndexOf(`/`);e===-1?(n=``,r=0):(n=n.slice(0,e),r=n.length-1-n.lastIndexOf(`/`)),i=s,a=0;continue}else if(n.length>0){n=``,r=0,i=s,a=0;continue}}t&&(n+=n.length>0?`/..`:`..`,r=2)}else n.length>0?n+=`/${e.slice(i+1,s)}`:n=e.slice(i+1,s),r=s-i-1;i=s,a=0}else o===`.`&&a!==-1?++a:a=-1}return n}var po=function(e){return ro.test(e)},mo=function(e){if(e===`..`)return``;let t=oo.exec(to(e));return t&&t[1]||``},ho=function(e,t){let n=uo(e).replace(ao,`$1`).split(`/`),r=uo(t).replace(ao,`$1`).split(`/`);if(r[0][1]===`:`&&n[0][1]===`:`&&n[0]!==r[0])return r.join(`/`);let i=[...n];for(let e of i){if(r[0]!==e)break;n.shift(),r.shift()}return[...n.map(()=>`..`),...r].join(`/`)},go=function(e){let t=to(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&io.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(po(e)?`/`:`.`)},_o=function(e,t){let n=to(e).split(`/`),r=``;for(let e=n.length-1;e>=0;e--){let t=n[e];if(t){r=t;break}}return t&&r.endsWith(t)?r.slice(0,-t.length):r},vo=/^[a-zA-Z]:\//,yo=class e{constructor(e,t={}){let n=so(e);if(!po(n))throw Error(`FilePath requires an absolute path, got: "${e}"`);this.path=n,this.protocol=t.protocol}intern(){return this.protocol,`filepath@${this.path}`}static from(t){return new e(t)}static resolve(t,n){return new e(uo(t,n))}static fromUri(t){try{let n=new URL(t);return new e(so(n.host?`/${n.host}${n.pathname}`:n.pathname),{protocol:n.protocol})}catch{return new e(so(t))}}get absolute(){return this.path}get dirname(){return go(this.path)}get basename(){return _o(this.path)}get extname(){return mo(this.path)}resolve(t){return new e(uo(this.dirname,t))}join(...t){return new e(co(this.path,...t))}relativeTo(e){let t=ho(e,this.path);return!t.startsWith(`./`)&&!t.startsWith(`../`)&&![`.`,`..`].includes(t)?`./${t}`:t}toString(){return this.path}equals(e){return this.path===e.path}isParentOf(e){if(this.path===e.path)return!1;let t=this.path.endsWith(`/`)?this.path:`${this.path}/`;return e.path.startsWith(t)}toUri(e={}){let t=e.protocol||this.protocol;if(!t)return this.path;let n=vo.test(this.path)?`${t}:///`:`${t}://`;return new URL(n+this.path).href}static isRelative(e){return!po(so(e))}};function bo(e,t){if(!yo.isRelative(t))return;let n=yo.resolve(e.dirname,t);return n.absolute.endsWith(`.dbml`)?n:yo.from(n.absolute+`.dbml`)}var xo=[`null`,`true`,`false`],So=`none`,Co=`.dbml`,wo=[`-`,`+`],y=`public`,To=yo.from(`/main.dbml`),Eo={mysql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`,`mediumint`]),postgres:new Set([`int`,`integer`,`smallint`,`bigint`,`serial`,`bigserial`,`smallserial`]),mssql:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`]),oracle:new Set([`int`,`integer`,`smallint`]),snowflake:new Set([`int`,`integer`,`smallint`,`bigint`,`tinyint`])},Do={mysql:new Set([`decimal`,`numeric`,`float`,`double`,`real`]),postgres:new Set([`decimal`,`numeric`,`real`,`float`,`double precision`]),mssql:new Set([`decimal`,`numeric`,`real`,`float`]),oracle:new Set([`number`,`decimal`,`numeric`,`float`,`real`]),snowflake:new Set([`number`,`decimal`,`numeric`,`float`,`double`,`real`])},Oo={mysql:new Set([`bool`,`boolean`,`bit`]),postgres:new Set([`bool`,`boolean`]),mssql:new Set([`bit`]),oracle:new Set([]),snowflake:new Set([`boolean`])},ko={mysql:new Set([`varchar`,`char`,`text`,`tinytext`,`mediumtext`,`longtext`,`string`]),postgres:new Set([`varchar`,`char`,`character`,`character varying`,`text`,`string`]),mssql:new Set([`varchar`,`char`,`nvarchar`,`nchar`,`text`,`ntext`,`string`]),oracle:new Set([`varchar`,`varchar2`,`char`,`nvarchar2`,`nchar`,`string`]),snowflake:new Set([`varchar`,`char`,`text`,`string`])},Ao={mysql:new Set([`binary`,`varbinary`,`blob`,`tinyblob`,`mediumblob`,`longblob`]),postgres:new Set([`bytea`]),mssql:new Set([`binary`,`varbinary`]),oracle:new Set([`blob`,`raw`]),snowflake:new Set([`binary`,`varbinary`])},jo={mysql:new Set([`date`,`datetime`,`timestamp`,`time`]),postgres:new Set([`date`,`timestamp`,`timestamptz`,`timestamp with time zone`,`timestamp without time zone`,`time`,`timetz`,`time with time zone`,`time without time zone`]),mssql:new Set([`date`,`datetime`,`datetime2`,`smalldatetime`,`time`]),oracle:new Set([`date`,`timestamp`,`timestamp with time zone`,`timestamp with local time zone`]),snowflake:new Set([`date`,`datetime`,`timestamp`,`time`])},Mo={mysql:new Set([]),postgres:new Set([`serial`,`smallserial`,`bigserial`]),mssql:new Set([]),oracle:new Set([]),snowflake:new Set([])};function No(e){return e.toLowerCase().trim().replace(/\s+/g,` `)}function Po(e,t){let n=No(e);return t?Eo[t].has(n):Object.values(Eo).some(e=>e.has(n))}function Fo(e,t){let n=No(e);return t?Do[t].has(n):Object.values(Do).some(e=>e.has(n))}function Io(e,t){return Po(e,t)||Fo(e,t)}function Lo(e,t){let n=No(e);return t?Oo[t].has(n):Object.values(Oo).some(e=>e.has(n))}function Ro(e,t){let n=No(e);return t?ko[t].has(n):Object.values(ko).some(e=>e.has(n))}function zo(e,t){let n=No(e);return t?Ao[t].has(n):Object.values(Ao).some(e=>e.has(n))}function Bo(e,t){let n=No(e);return t?jo[t].has(n):Object.values(jo).some(e=>e.has(n))}function Vo(e,t){let n=No(e);return t?Mo[t].has(n):Object.values(Mo).some(e=>e.has(n))}function Ho(e,t){if(t)return`string`;if(Po(e))return`integer`;if(Fo(e))return`real`;if(Lo(e))return`bool`;if(Ro(e))return`string`;let n=No(e);return n===`date`?`date`:n===`time`||n===`timetz`||n===`time with time zone`||n===`time without time zone`?`time`:Bo(e)?`datetime`:e}var Uo=class extends Error{},Wo=class extends Uo{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Go=class extends Uo{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Ko=class extends Uo{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},qo=class extends Uo{},Jo=class extends Uo{constructor(e){super(`Invalid unit ${e}`)}},Yo=class extends Uo{},Xo=class extends Uo{constructor(){super(`Zone is an abstract class`)}},b=`numeric`,Zo=`short`,Qo=`long`,$o={year:b,month:b,day:b},es={year:b,month:Zo,day:b},ts={year:b,month:Zo,day:b,weekday:Zo},ns={year:b,month:Qo,day:b},rs={year:b,month:Qo,day:b,weekday:Qo},is={hour:b,minute:b},as={hour:b,minute:b,second:b},os={hour:b,minute:b,second:b,timeZoneName:Zo},ss={hour:b,minute:b,second:b,timeZoneName:Qo},cs={hour:b,minute:b,hourCycle:`h23`},ls={hour:b,minute:b,second:b,hourCycle:`h23`},us={hour:b,minute:b,second:b,hourCycle:`h23`,timeZoneName:Zo},ds={hour:b,minute:b,second:b,hourCycle:`h23`,timeZoneName:Qo},fs={year:b,month:b,day:b,hour:b,minute:b},ps={year:b,month:b,day:b,hour:b,minute:b,second:b},ms={year:b,month:Zo,day:b,hour:b,minute:b},hs={year:b,month:Zo,day:b,hour:b,minute:b,second:b},gs={year:b,month:Zo,day:b,weekday:Zo,hour:b,minute:b},_s={year:b,month:Qo,day:b,hour:b,minute:b,timeZoneName:Zo},vs={year:b,month:Qo,day:b,hour:b,minute:b,second:b,timeZoneName:Zo},ys={year:b,month:Qo,day:b,weekday:Qo,hour:b,minute:b,timeZoneName:Qo},bs={year:b,month:Qo,day:b,weekday:Qo,hour:b,minute:b,second:b,timeZoneName:Qo},xs=class{get type(){throw new Xo}get name(){throw new Xo}get ianaName(){return this.name}get isUniversal(){throw new Xo}offsetName(e,t){throw new Xo}formatOffset(e,t){throw new Xo}offset(e){throw new Xo}equals(e){throw new Xo}get isValid(){throw new Xo}},Ss=null,Cs=class e extends xs{static get instance(){return Ss===null&&(Ss=new e),Ss}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ll(e,t,n)}formatOffset(e,t){return pl(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},ws=new Map;function Ts(e){let t=ws.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(`en-US`,{hour12:!1,timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`,second:`2-digit`,era:`short`}),ws.set(e,t)),t}var Es={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Ds(e,t){let n=e.format(t).replace(/\u200E/g,``),[,r,i,a,o,s,c,l]=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n);return[a,r,i,o,s,c,l]}function Os(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=Es[t];t===`era`?r[a]=i:S(a)||(r[a]=parseInt(i,10))}return r}var ks=new Map,As=class e extends xs{static create(t){let n=ks.get(t);return n===void 0&&ks.set(t,n=new e(t)),n}static resetCache(){ks.clear(),ws.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat(`en-US`,{timeZone:e}).format(),!0}catch{return!1}}constructor(t){super(),this.zoneName=t,this.valid=e.isValidZone(t)}get type(){return`iana`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return ll(e,t,n,this.name)}formatOffset(e,t){return pl(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=Ts(this.name),[r,i,a,o,s,c,l]=n.formatToParts?Os(n,t):Ds(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=al({year:r,month:i,day:a,hour:s===24?0:s,minute:c,second:l,millisecond:0}),d=+t,f=d%1e3;return d-=f>=0?f:1e3+f,(u-d)/(60*1e3)}equals(e){return e.type===`iana`&&e.name===this.name}get isValid(){return this.valid}},js={};function Ms(e,t={}){let n=JSON.stringify([e,t]),r=js[n];return r||(r=new Intl.ListFormat(e,t),js[n]=r),r}var Ns=new Map;function Ps(e,t={}){let n=JSON.stringify([e,t]),r=Ns.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),Ns.set(n,r)),r}var Fs=new Map;function Is(e,t={}){let n=JSON.stringify([e,t]),r=Fs.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),Fs.set(n,r)),r}var Ls=new Map;function Rs(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=Ls.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),Ls.set(i,a)),a}var zs=null;function Bs(){return zs||(zs=new Intl.DateTimeFormat().resolvedOptions().locale,zs)}var Vs=new Map;function Hs(e){let t=Vs.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),Vs.set(e,t)),t}var Us=new Map;function Ws(e){let t=Us.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...ec,...t}),Us.set(e,t)}return t}function Gs(e){let t=e.indexOf(`-x-`);t!==-1&&(e=e.substring(0,t));let n=e.indexOf(`-u-`);if(n===-1)return[e];{let t,r;try{t=Ps(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=Ps(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function Ks(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function qs(e){let t=[];for(let n=1;n<=12;n++){let r=w.utc(2009,n,1);t.push(e(r))}return t}function Js(e){let t=[];for(let n=1;n<=7;n++){let r=w.utc(2016,11,13+n);t.push(e(r))}return t}function Ys(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function Xs(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||Hs(e.locale).numberingSystem===`latn`}var Zs=class{constructor(e,t,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:r,floor:i,...a}=n;if(!t||Object.keys(a).length>0){let t={useGrouping:!1,...n};n.padTo>0&&(t.minimumIntegerDigits=n.padTo),this.inf=Is(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return Zc(this.floor?Math.floor(e):tl(e,3),this.padTo)}},Qs=class{constructor(e,t,n){this.opts=n,this.originalZone=void 0;let r;if(this.opts.timeZone)this.dt=e;else if(e.zone.type===`fixed`){let t=-1*(e.offset/60),n=t>=0?`Etc/GMT+${t}`:`Etc/GMT${t}`;e.offset!==0&&As.create(n).valid?(r=n,this.dt=e):(r=`UTC`,this.dt=e.offset===0?e:e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type===`system`?this.dt=e:e.zone.type===`iana`?(this.dt=e,r=e.zone.name):(r=`UTC`,this.dt=e.setZone(`UTC`).plus({minutes:e.offset}),this.originalZone=e.zone);let i={...this.opts};i.timeZone=i.timeZone||r,this.dtf=Ps(t,i)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(``):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(e=>{if(e.type===`timeZoneName`){let t=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...e,value:t}}else return e}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},$s=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&Hc()&&(this.rtf=Rs(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):Ml(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},ec={firstDay:1,minimalDays:4,weekend:[6,7]},x=class e{static fromOpts(t){return e.create(t.locale,t.numberingSystem,t.outputCalendar,t.weekSettings,t.defaultToEN)}static create(t,n,r,i,a=!1){let o=t||bc.defaultLocale;return new e(o||(a?`en-US`:Bs()),n||bc.defaultNumberingSystem,r||bc.defaultOutputCalendar,Jc(i)||bc.defaultWeekSettings,o)}static resetCache(){zs=null,Ns.clear(),Fs.clear(),Ls.clear(),Vs.clear(),Us.clear()}static fromObject({locale:t,numberingSystem:n,outputCalendar:r,weekSettings:i}={}){return e.create(t,n,r,i)}constructor(e,t,n,r,i){let[a,o,s]=Gs(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=Ks(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached??=Xs(this),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),t=(this.numberingSystem===null||this.numberingSystem===`latn`)&&(this.outputCalendar===null||this.outputCalendar===`gregory`);return e&&t?`en`:`intl`}clone(t){return!t||Object.getOwnPropertyNames(t).length===0?this:e.create(t.locale||this.specifiedLocale,t.numberingSystem||this.numberingSystem,t.outputCalendar||this.outputCalendar,Jc(t.weekSettings)||this.weekSettings,t.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,t=!1){return Ys(this,e,vl,()=>{let n=this.intl===`ja`||this.intl.startsWith(`ja-`);t&=!n;let r=t?{month:e,day:`numeric`}:{month:e},i=t?`format`:`standalone`;if(!this.monthsCache[i][e]){let t=n?e=>this.dtFormatter(e,r).format():e=>this.extract(e,r,`month`);this.monthsCache[i][e]=qs(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return Ys(this,e,Sl,()=>{let n=t?{weekday:e,year:`numeric`,month:`long`,day:`numeric`}:{weekday:e},r=t?`format`:`standalone`;return this.weekdaysCache[r][e]||(this.weekdaysCache[r][e]=Js(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return Ys(this,void 0,()=>Cl,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[w.utc(2016,11,13,9),w.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return Ys(this,e,Dl,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[w.utc(-40,1,1),w.utc(2017,1,1)].map(e=>this.extract(e,t,`era`))),this.eraCache[e]})}extract(e,t,n){let r=this.dtFormatter(e,t).formatToParts().find(e=>e.type.toLowerCase()===n);return r?r.value:null}numberFormatter(e={}){return new Zs(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Qs(e,this.intl,t)}relFormatter(e={}){return new $s(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Ms(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||Hs(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:Uc()?Ws(this.locale):ec}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},tc=null,nc=class e extends xs{static get utcInstance(){return tc===null&&(tc=new e(0)),tc}static instance(t){return t===0?e.utcInstance:new e(t)}static parseSpecifier(t){if(t){let n=t.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new e(ul(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${pl(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${pl(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return pl(this.fixed,t)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type===`fixed`&&e.fixed===this.fixed}get isValid(){return!0}},rc=class extends xs{constructor(e){super(),this.zoneName=e}get type(){return`invalid`}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return``}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function ic(e,t){if(S(e)||e===null)return t;if(e instanceof xs)return e;if(Bc(e)){let n=e.toLowerCase();return n==="default"?t:n===`local`||n===`system`?Cs.instance:n===`utc`||n===`gmt`?nc.utcInstance:nc.parseSpecifier(n)||As.create(e)}else if(Rc(e))return nc.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new rc(e)}var ac={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},oc={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},sc=ac.hanidec.replace(/[\[|\]]/g,``).split(``);function cc(e){let t=parseInt(e,10);if(isNaN(t)){t=``;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(e[n].search(ac.hanidec)!==-1)t+=sc.indexOf(e[n]);else for(let e in oc){let[n,i]=oc[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var lc=new Map;function uc(){lc.clear()}function dc({numberingSystem:e},t=``){let n=e||`latn`,r=lc.get(n);r===void 0&&(r=new Map,lc.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${ac[n]}${t}`),r.set(t,i)),i}var fc=()=>Date.now(),pc=`system`,mc=null,hc=null,gc=null,_c=60,vc,yc=null,bc=class{static get now(){return fc}static set now(e){fc=e}static set defaultZone(e){pc=e}static get defaultZone(){return ic(pc,Cs.instance)}static get defaultLocale(){return mc}static set defaultLocale(e){mc=e}static get defaultNumberingSystem(){return hc}static set defaultNumberingSystem(e){hc=e}static get defaultOutputCalendar(){return gc}static set defaultOutputCalendar(e){gc=e}static get defaultWeekSettings(){return yc}static set defaultWeekSettings(e){yc=Jc(e)}static get twoDigitCutoffYear(){return _c}static set twoDigitCutoffYear(e){_c=e%100}static get throwOnInvalid(){return vc}static set throwOnInvalid(e){vc=e}static resetCaches(){x.resetCache(),As.resetCache(),w.resetCache(),uc()}},xc=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},Sc=[0,31,59,90,120,151,181,212,243,273,304,334],Cc=[0,31,60,91,121,152,182,213,244,274,305,335];function wc(e,t){return new xc(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function Tc(e,t,n){let r=new Date(Date.UTC(e,t-1,n));e<100&&e>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);let i=r.getUTCDay();return i===0?7:i}function Ec(e,t,n){return n+(nl(e)?Cc:Sc)[t-1]}function Dc(e,t){let n=nl(e)?Cc:Sc,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function Oc(e,t){return(e-t+7)%7+1}function kc(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=Ec(r,i,a),s=Oc(Tc(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=sl(l,t,n)):c>sl(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...ml(e)}}function Ac(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=Oc(Tc(r,1,t),n),s=rl(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=rl(l)):c>s?(l=r+1,c-=rl(r)):l=r;let{month:u,day:d}=Dc(l,c);return{year:l,month:u,day:d,...ml(e)}}function jc(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:Ec(t,n,r),...ml(e)}}function Mc(e){let{year:t,ordinal:n}=e,{month:r,day:i}=Dc(t,n);return{year:t,month:r,day:i,...ml(e)}}function Nc(e,t){if(!S(e.localWeekday)||!S(e.localWeekNumber)||!S(e.localWeekYear)){if(!S(e.weekday)||!S(e.weekNumber)||!S(e.weekYear))throw new qo(`Cannot mix locale-based week fields with ISO-based week fields`);return S(e.localWeekday)||(e.weekday=e.localWeekday),S(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),S(e.localWeekYear)||(e.weekYear=e.localWeekYear),delete e.localWeekday,delete e.localWeekNumber,delete e.localWeekYear,{minDaysInFirstWeek:t.getMinDaysInFirstWeek(),startOfWeek:t.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function Pc(e,t=4,n=1){let r=zc(e.weekYear),i=Yc(e.weekNumber,1,sl(e.weekYear,t,n)),a=Yc(e.weekday,1,7);return r?i?a?!1:wc(`weekday`,e.weekday):wc(`week`,e.weekNumber):wc(`weekYear`,e.weekYear)}function Fc(e){let t=zc(e.year),n=Yc(e.ordinal,1,rl(e.year));return t?n?!1:wc(`ordinal`,e.ordinal):wc(`year`,e.year)}function Ic(e){let t=zc(e.year),n=Yc(e.month,1,12),r=Yc(e.day,1,il(e.year,e.month));return t?n?r?!1:wc(`day`,e.day):wc(`month`,e.month):wc(`year`,e.year)}function Lc(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=Yc(t,0,23)||t===24&&n===0&&r===0&&i===0,o=Yc(n,0,59),s=Yc(r,0,59),c=Yc(i,0,999);return a?o?s?c?!1:wc(`millisecond`,i):wc(`second`,r):wc(`minute`,n):wc(`hour`,t)}function S(e){return e===void 0}function Rc(e){return typeof e==`number`}function zc(e){return typeof e==`number`&&e%1==0}function Bc(e){return typeof e==`string`}function Vc(e){return Object.prototype.toString.call(e)===`[object Date]`}function Hc(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function Uc(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function Wc(e){return Array.isArray(e)?e:[e]}function Gc(e,t,n){if(e.length!==0)return e.reduce((e,r)=>{let i=[t(r),r];return e&&n(e[0],i[0])===e[0]?e:i},null)[1]}function Kc(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function qc(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Jc(e){if(e==null)return null;if(typeof e!=`object`)throw new Yo(`Week settings must be an object`);if(!Yc(e.firstDay,1,7)||!Yc(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!Yc(e,1,7)))throw new Yo(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function Yc(e,t,n){return zc(e)&&e>=t&&e<=n}function Xc(e,t){return e-t*Math.floor(e/t)}function Zc(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function Qc(e){if(!(S(e)||e===null||e===``))return parseInt(e,10)}function $c(e){if(!(S(e)||e===null||e===``))return parseFloat(e)}function el(e){if(!(S(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function tl(e,t,n=`round`){let r=10**t;switch(n){case`expand`:return e>0?Math.ceil(e*r)/r:Math.floor(e*r)/r;case`trunc`:return Math.trunc(e*r)/r;case`round`:return Math.round(e*r)/r;case`floor`:return Math.floor(e*r)/r;case`ceil`:return Math.ceil(e*r)/r;default:throw RangeError(`Value rounding ${n} is out of range`)}}function nl(e){return e%4==0&&(e%100!=0||e%400==0)}function rl(e){return nl(e)?366:365}function il(e,t){let n=Xc(t-1,12)+1,r=e+(t-n)/12;return n===2?nl(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function al(e){let t=Date.UTC(e.year,e.month-1,e.day,e.hour,e.minute,e.second,e.millisecond);return e.year<100&&e.year>=0&&(t=new Date(t),t.setUTCFullYear(e.year,e.month-1,e.day)),+t}function ol(e,t,n){return-Oc(Tc(e,1,t),n)+t-1}function sl(e,t=4,n=1){let r=ol(e,t,n),i=ol(e+1,t,n);return(rl(e)-r+i)/7}function cl(e){return e>99?e:e>bc.twoDigitCutoffYear?1900+e:2e3+e}function ll(e,t,n,r=null){let i=new Date(e),a={hourCycle:`h23`,year:`numeric`,month:`2-digit`,day:`2-digit`,hour:`2-digit`,minute:`2-digit`};r&&(a.timeZone=r);let o={timeZoneName:t,...a},s=new Intl.DateTimeFormat(n,o).formatToParts(i).find(e=>e.type.toLowerCase()===`timezonename`);return s?s.value:null}function ul(e,t){let n=parseInt(e,10);Number.isNaN(n)&&(n=0);let r=parseInt(t,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function dl(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new Yo(`Invalid unit value ${e}`);return t}function fl(e,t){let n={};for(let r in e)if(qc(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=dl(i)}return n}function pl(e,t){let n=Math.trunc(Math.abs(e/60)),r=Math.trunc(Math.abs(e%60)),i=e>=0?`+`:`-`;switch(t){case`short`:return`${i}${Zc(n,2)}:${Zc(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${Zc(n,2)}${Zc(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function ml(e){return Kc(e,[`hour`,`minute`,`second`,`millisecond`])}var hl=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],gl=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],_l=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function vl(e){switch(e){case`narrow`:return[..._l];case`short`:return[...gl];case`long`:return[...hl];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`,`8`,`9`,`10`,`11`,`12`];case`2-digit`:return[`01`,`02`,`03`,`04`,`05`,`06`,`07`,`08`,`09`,`10`,`11`,`12`];default:return null}}var yl=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],bl=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],xl=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function Sl(e){switch(e){case`narrow`:return[...xl];case`short`:return[...bl];case`long`:return[...yl];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var Cl=[`AM`,`PM`],wl=[`Before Christ`,`Anno Domini`],Tl=[`BC`,`AD`],El=[`B`,`A`];function Dl(e){switch(e){case`narrow`:return[...El];case`short`:return[...Tl];case`long`:return[...wl];default:return null}}function Ol(e){return Cl[e.hour<12?0:1]}function kl(e,t){return Sl(t)[e.weekday-1]}function Al(e,t){return vl(t)[e.month-1]}function jl(e,t){return Dl(t)[e.year<0?0:1]}function Ml(e,t,n=`always`,r=!1){let i={years:[`year`,`yr.`],quarters:[`quarter`,`qtr.`],months:[`month`,`mo.`],weeks:[`week`,`wk.`],days:[`day`,`day`,`days`],hours:[`hour`,`hr.`],minutes:[`minute`,`min.`],seconds:[`second`,`sec.`]},a=[`hours`,`minutes`,`seconds`].indexOf(e)===-1;if(n===`auto`&&a){let n=e===`days`;switch(t){case 1:return n?`tomorrow`:`next ${i[e][0]}`;case-1:return n?`yesterday`:`last ${i[e][0]}`;case 0:return n?`today`:`this ${i[e][0]}`}}let o=Object.is(t,-0)||t<0,s=Math.abs(t),c=s===1,l=i[e],u=r?c?l[1]:l[2]||l[1]:c?i[e][0]:e;return o?`${s} ${u} ago`:`in ${s} ${u}`}function Nl(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var Pl={D:$o,DD:es,DDD:ns,DDDD:rs,t:is,tt:as,ttt:os,tttt:ss,T:cs,TT:ls,TTT:us,TTTT:ds,f:fs,ff:ms,fff:_s,ffff:ys,F:ps,FF:hs,FFF:vs,FFFF:bs},Fl=class e{static create(t,n={}){return new e(t,n)}static parseFormat(e){let t=null,n=``,r=!1,i=[];for(let a=0;a<e.length;a++){let o=e.charAt(a);o===`'`?((n.length>0||r)&&i.push({literal:r||/^\s+$/.test(n),val:n===``?`'`:n}),t=null,n=``,r=!r):r||o===t?n+=o:(n.length>0&&i.push({literal:/^\s+$/.test(n),val:n}),n=o,t=o)}return n.length>0&&i.push({literal:r||/^\s+$/.test(n),val:n}),i}static macroTokenToFormatOpts(e){return Pl[e]}constructor(e,t){this.opts=t,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,t){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...t}).format()}dtFormatter(e,t={}){return this.loc.dtFormatter(e,{...this.opts,...t})}formatDateTime(e,t){return this.dtFormatter(e,t).format()}formatDateTimeParts(e,t){return this.dtFormatter(e,t).formatToParts()}formatInterval(e,t){return this.dtFormatter(e.start,t).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,t){return this.dtFormatter(e,t).resolvedOptions()}num(e,t=0,n=void 0){if(this.opts.forceSimple)return Zc(e,t);let r={...this.opts};return t>0&&(r.padTo=t),n&&(r.signDisplay=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(t,n){let r=this.loc.listingMode()===`en`,i=this.loc.outputCalendar&&this.loc.outputCalendar!==`gregory`,a=(e,n)=>this.loc.extract(t,e,n),o=e=>t.isOffsetFixed&&t.offset===0&&e.allowZ?`Z`:t.isValid?t.zone.formatOffset(t.ts,e.format):``,s=()=>r?Ol(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?Al(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?kl(t,e):a(n?{weekday:e}:{weekday:e,month:`long`,day:`numeric`},`weekday`),u=n=>{let r=e.macroTokenToFormatOpts(n);return r?this.formatWithSystemDefault(t,r):n},d=e=>r?jl(t,e):a({era:e},`era`);return Nl(e.parseFormat(n),e=>{switch(e){case`S`:return this.num(t.millisecond);case`u`:case`SSS`:return this.num(t.millisecond,3);case`s`:return this.num(t.second);case`ss`:return this.num(t.second,2);case`uu`:return this.num(Math.floor(t.millisecond/10),2);case`uuu`:return this.num(Math.floor(t.millisecond/100));case`m`:return this.num(t.minute);case`mm`:return this.num(t.minute,2);case`h`:return this.num(t.hour%12==0?12:t.hour%12);case`hh`:return this.num(t.hour%12==0?12:t.hour%12,2);case`H`:return this.num(t.hour);case`HH`:return this.num(t.hour,2);case`Z`:return o({format:`narrow`,allowZ:this.opts.allowZ});case`ZZ`:return o({format:`short`,allowZ:this.opts.allowZ});case`ZZZ`:return o({format:`techie`,allowZ:this.opts.allowZ});case`ZZZZ`:return t.zone.offsetName(t.ts,{format:`short`,locale:this.loc.locale});case`ZZZZZ`:return t.zone.offsetName(t.ts,{format:`long`,locale:this.loc.locale});case`z`:return t.zoneName;case`a`:return s();case`d`:return i?a({day:`numeric`},`day`):this.num(t.day);case`dd`:return i?a({day:`2-digit`},`day`):this.num(t.day,2);case`c`:return this.num(t.weekday);case`ccc`:return l(`short`,!0);case`cccc`:return l(`long`,!0);case`ccccc`:return l(`narrow`,!0);case`E`:return this.num(t.weekday);case`EEE`:return l(`short`,!1);case`EEEE`:return l(`long`,!1);case`EEEEE`:return l(`narrow`,!1);case`L`:return i?a({month:`numeric`,day:`numeric`},`month`):this.num(t.month);case`LL`:return i?a({month:`2-digit`,day:`numeric`},`month`):this.num(t.month,2);case`LLL`:return c(`short`,!0);case`LLLL`:return c(`long`,!0);case`LLLLL`:return c(`narrow`,!0);case`M`:return i?a({month:`numeric`},`month`):this.num(t.month);case`MM`:return i?a({month:`2-digit`},`month`):this.num(t.month,2);case`MMM`:return c(`short`,!1);case`MMMM`:return c(`long`,!1);case`MMMMM`:return c(`narrow`,!1);case`y`:return i?a({year:`numeric`},`year`):this.num(t.year);case`yy`:return i?a({year:`2-digit`},`year`):this.num(t.year.toString().slice(-2),2);case`yyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,4);case`yyyyyy`:return i?a({year:`numeric`},`year`):this.num(t.year,6);case`G`:return d(`short`);case`GG`:return d(`long`);case`GGGGG`:return d(`narrow`);case`kk`:return this.num(t.weekYear.toString().slice(-2),2);case`kkkk`:return this.num(t.weekYear,4);case`W`:return this.num(t.weekNumber);case`WW`:return this.num(t.weekNumber,2);case`n`:return this.num(t.localWeekNumber);case`nn`:return this.num(t.localWeekNumber,2);case`ii`:return this.num(t.localWeekYear.toString().slice(-2),2);case`iiii`:return this.num(t.localWeekYear,4);case`o`:return this.num(t.ordinal);case`ooo`:return this.num(t.ordinal,3);case`q`:return this.num(t.quarter);case`qq`:return this.num(t.quarter,2);case`X`:return this.num(Math.floor(t.ts/1e3));case`x`:return this.num(t.ts);default:return u(e)}})}formatDurationFromString(t,n){let r=this.opts.signMode===`negativeLargestOnly`?-1:1,i=e=>{switch(e[0]){case`S`:return`milliseconds`;case`s`:return`seconds`;case`m`:return`minutes`;case`h`:return`hours`;case`d`:return`days`;case`w`:return`weeks`;case`M`:return`months`;case`y`:return`years`;default:return null}},a=(e,t)=>n=>{let a=i(n);if(a){let i=t.isNegativeDuration&&a!==t.largestUnit?r:1,o;return o=this.opts.signMode===`negativeLargestOnly`&&a!==t.largestUnit?`never`:this.opts.signMode===`all`?`always`:`auto`,this.num(e.get(a)*i,n.length,o)}else return n},o=e.parseFormat(n),s=o.reduce((e,{literal:t,val:n})=>t?e:e.concat(n),[]),c=t.shiftTo(...s.map(i).filter(e=>e));return Nl(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},Il=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function Ll(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function Rl(...e){return t=>e.reduce(([e,n,r],i)=>{let[a,o,s]=i(t,r);return[{...e,...a},o||n,s]},[{},null,1]).slice(0,2)}function zl(e,...t){if(e==null)return[null,null];for(let[n,r]of t){let t=n.exec(e);if(t)return r(t)}return[null,null]}function Bl(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=Qc(t[n+i]);return[r,null,n+i]}}var Vl=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,Hl=`(?:${Vl.source}?(?:\\[(${Il.source})\\])?)?`,Ul=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Wl=RegExp(`${Ul.source}${Hl}`),Gl=RegExp(`(?:[Tt]${Wl.source})?`),Kl=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ql=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Jl=/(\d{4})-?(\d{3})/,Yl=Bl(`weekYear`,`weekNumber`,`weekDay`),Xl=Bl(`year`,`ordinal`),Zl=/(\d{4})-(\d\d)-(\d\d)/,Ql=RegExp(`${Ul.source} ?(?:${Vl.source}|(${Il.source}))?`),$l=RegExp(`(?: ${Ql.source})?`);function eu(e,t,n){let r=e[t];return S(r)?n:Qc(r)}function tu(e,t){return[{year:eu(e,t),month:eu(e,t+1,1),day:eu(e,t+2,1)},null,t+3]}function nu(e,t){return[{hours:eu(e,t,0),minutes:eu(e,t+1,0),seconds:eu(e,t+2,0),milliseconds:el(e[t+3])},null,t+4]}function ru(e,t){let n=!e[t]&&!e[t+1],r=ul(e[t+1],e[t+2]);return[{},n?null:nc.instance(r),t+3]}function iu(e,t){return[{},e[t]?As.create(e[t]):null,t+1]}var au=RegExp(`^T?${Ul.source}$`),ou=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function su(e){let[t,n,r,i,a,o,s,c,l]=e,u=t[0]===`-`,d=c&&c[0]===`-`,f=(e,t=!1)=>e!==void 0&&(t||e&&u)?-e:e;return[{years:f($c(n)),months:f($c(r)),weeks:f($c(i)),days:f($c(a)),hours:f($c(o)),minutes:f($c(s)),seconds:f($c(c),c===`-0`),milliseconds:f(el(l),d)}]}var cu={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function lu(e,t,n,r,i,a,o){let s={year:t.length===2?cl(Qc(t)):Qc(t),month:gl.indexOf(n)+1,day:Qc(r),hour:Qc(i),minute:Qc(a)};return o&&(s.second=Qc(o)),e&&(s.weekday=e.length>3?yl.indexOf(e)+1:bl.indexOf(e)+1),s}var uu=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function du(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=lu(t,i,r,n,a,o,s),p;return p=c?cu[c]:l?0:ul(u,d),[f,new nc(p)]}function fu(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var pu=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,mu=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,hu=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function gu(e){let[,t,n,r,i,a,o,s]=e;return[lu(t,i,r,n,a,o,s),nc.utcInstance]}function _u(e){let[,t,n,r,i,a,o,s]=e;return[lu(t,s,n,r,i,a,o),nc.utcInstance]}var vu=Ll(Kl,Gl),yu=Ll(ql,Gl),bu=Ll(Jl,Gl),xu=Ll(Wl),Su=Rl(tu,nu,ru,iu),Cu=Rl(Yl,nu,ru,iu),wu=Rl(Xl,nu,ru,iu),Tu=Rl(nu,ru,iu);function Eu(e){return zl(e,[vu,Su],[yu,Cu],[bu,wu],[xu,Tu])}function Du(e){return zl(fu(e),[uu,du])}function Ou(e){return zl(e,[pu,gu],[mu,gu],[hu,_u])}function ku(e){return zl(e,[ou,su])}var Au=Rl(nu);function ju(e){return zl(e,[au,Au])}var Mu=Ll(Zl,$l),Nu=Ll(Ql),Pu=Rl(nu,ru,iu);function Fu(e){return zl(e,[Mu,Su],[Nu,Pu])}var Iu=`Invalid Duration`,Lu={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Ru={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...Lu},zu=146097/400,Bu=146097/4800,Vu={years:{quarters:4,months:12,weeks:zu/7,days:zu,hours:zu*24,minutes:zu*24*60,seconds:zu*24*60*60,milliseconds:zu*24*60*60*1e3},quarters:{months:3,weeks:zu/28,days:zu/4,hours:zu*24/4,minutes:zu*24*60/4,seconds:zu*24*60*60/4,milliseconds:zu*24*60*60*1e3/4},months:{weeks:Bu/7,days:Bu,hours:Bu*24,minutes:Bu*24*60,seconds:Bu*24*60*60,milliseconds:Bu*24*60*60*1e3},...Lu},Hu=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],Uu=Hu.slice(0).reverse();function Wu(e,t,n=!1){return new Ju({values:n?t.values:{...e.values,...t.values||{}},loc:e.loc.clone(t.loc),conversionAccuracy:t.conversionAccuracy||e.conversionAccuracy,matrix:t.matrix||e.matrix})}function Gu(e,t){let n=t.milliseconds??0;for(let r of Uu.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function Ku(e,t){let n=Gu(e,t)<0?-1:1;Hu.reduceRight((r,i)=>{if(S(t[i]))return r;if(r){let a=t[r]*n,o=e[i][r],s=Math.floor(a/o);t[i]+=s*n,t[r]-=s*o*n}return i},null),Hu.reduce((n,r)=>{if(S(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function qu(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var Ju=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?Vu:Ru;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||x.create(),this.conversionAccuracy=t?`longterm`:`casual`,this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(t,n){return e.fromObject({milliseconds:t},n)}static fromObject(t,n={}){if(typeof t!=`object`||!t)throw new Yo(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:fl(t,e.normalizeUnit),loc:x.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(Rc(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new Yo(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=ku(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static fromISOTime(t,n){let[r]=ju(t);return r?e.fromObject(r,n):e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static invalid(t,n=null){if(!t)throw new Yo(`need to specify a reason the Duration is invalid`);let r=t instanceof xc?t:new xc(t,n);if(bc.throwOnInvalid)throw new Ko(r);return new e({invalid:r})}static normalizeUnit(e){let t={year:`years`,years:`years`,quarter:`quarters`,quarters:`quarters`,month:`months`,months:`months`,week:`weeks`,weeks:`weeks`,day:`days`,days:`days`,hour:`hours`,hours:`hours`,minute:`minutes`,minutes:`minutes`,second:`seconds`,seconds:`seconds`,millisecond:`milliseconds`,milliseconds:`milliseconds`}[e&&e.toLowerCase()];if(!t)throw new Jo(e);return t}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,t={}){let n={...t,floor:t.round!==!1&&t.floor!==!1};return this.isValid?Fl.create(this.loc,n).formatDurationFromString(this,e):Iu}toHuman(e={}){if(!this.isValid)return Iu;let t=e.showZeros!==!1,n=Hu.map(n=>{let r=this.values[n];return S(r)||r===0&&!t?null:this.loc.numberFormatter({style:`unit`,unitDisplay:`long`,...e,unit:n.slice(0,-1)}).format(r)}).filter(e=>e);return this.loc.listFormatter({type:`conjunction`,style:e.listStyle||`narrow`,...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e=`P`;return this.years!==0&&(e+=this.years+`Y`),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+`M`),this.weeks!==0&&(e+=this.weeks+`W`),this.days!==0&&(e+=this.days+`D`),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+=`T`),this.hours!==0&&(e+=this.hours+`H`),this.minutes!==0&&(e+=this.minutes+`M`),(this.seconds!==0||this.milliseconds!==0)&&(e+=tl(this.seconds+this.milliseconds/1e3,3)+`S`),e===`P`&&(e+=`T0S`),e}toISOTime(e={}){if(!this.isValid)return null;let t=this.toMillis();return t<0||t>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:`extended`,...e,includeOffset:!1},w.fromMillis(t,{zone:`UTC`}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?Gu(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t),r={};for(let e of Hu)(qc(n.values,e)||qc(this.values,e))&&(r[e]=n.get(e)+this.get(e));return Wu(this,{values:r},!0)}minus(t){if(!this.isValid)return this;let n=e.fromDurationLike(t);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;let t={};for(let n of Object.keys(this.values))t[n]=dl(e(this.values[n],n));return Wu(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...fl(t,e.normalizeUnit)};return Wu(this,{values:n})}reconfigure({locale:e,numberingSystem:t,conversionAccuracy:n,matrix:r}={}){let i={loc:this.loc.clone({locale:e,numberingSystem:t}),matrix:r,conversionAccuracy:n};return Wu(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return Ku(this.matrix,e),Wu(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=qu(this.normalize().shiftToAll().toObject());return Wu(this,{values:e},!0)}shiftTo(...t){if(!this.isValid||t.length===0)return this;t=t.map(t=>e.normalizeUnit(t));let n={},r={},i=this.toObject(),a;for(let e of Hu)if(t.indexOf(e)>=0){a=e;let t=0;for(let n in r)t+=this.matrix[n][e]*r[n],r[n]=0;Rc(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else Rc(i[e])&&(r[e]=i[e]);for(let e in r)r[e]!==0&&(n[a]+=e===a?r[e]:r[e]/this.matrix[a][e]);return Ku(this.matrix,n),Wu(this,{values:n},!0)}shiftToAll(){return this.isValid?this.shiftTo(`years`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`):this}negate(){if(!this.isValid)return this;let e={};for(let t of Object.keys(this.values))e[t]=this.values[t]===0?0:-this.values[t];return Wu(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=qu(this.values);return Wu(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function t(e,t){return e===void 0||e===0?t===void 0||t===0:e===t}for(let n of Hu)if(!t(this.values[n],e.values[n]))return!1;return!0}},Yu=`Invalid Interval`;function Xu(e,t){return!e||!e.isValid?Zu.invalid(`missing or invalid start`):!t||!t.isValid?Zu.invalid(`missing or invalid end`):t<e?Zu.invalid(`end before start`,`The end of an interval must be after its start, but you had start=${e.toISO()} and end=${t.toISO()}`):null}var Zu=class e{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(t,n=null){if(!t)throw new Yo(`need to specify a reason the Interval is invalid`);let r=t instanceof xc?t:new xc(t,n);if(bc.throwOnInvalid)throw new Go(r);return new e({invalid:r})}static fromDateTimes(t,n){let r=$d(t),i=$d(n);return Xu(r,i)??new e({start:r,end:i})}static after(t,n){let r=Ju.fromDurationLike(n),i=$d(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=Ju.fromDurationLike(n),i=$d(t);return e.fromDateTimes(i.minus(r),i)}static fromISO(t,n){let[r,i]=(t||``).split(`/`,2);if(r&&i){let t,a;try{t=w.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=w.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=Ju.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=Ju.fromISO(r,n);if(t.isValid)return e.before(o,t)}}return e.invalid(`unparsable`,`the input "${t}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e=`milliseconds`){return this.isValid?this.toDuration(e).get(e):NaN}count(e=`milliseconds`,t){if(!this.isValid)return NaN;let n=this.start.startOf(e,t),r;return r=t?.useLocaleWeeks?this.end.reconfigure({locale:n.locale}):this.end,r=r.startOf(e,t),Math.floor(r.diff(n,e).get(e))+(r.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:t,end:n}={}){return this.isValid?e.fromDateTimes(t||this.s,n||this.e):this}splitAt(...t){if(!this.isValid)return[];let n=t.map($d).filter(e=>this.contains(e)).sort((e,t)=>e.toMillis()-t.toMillis()),r=[],{s:i}=this,a=0;for(;i<this.e;){let t=n[a]||this.e,o=+t>+this.e?this.e:t;r.push(e.fromDateTimes(i,o)),i=o,a+=1}return r}splitBy(t){let n=Ju.fromDurationLike(t);if(!this.isValid||!n.isValid||n.as(`milliseconds`)===0)return[];let{s:r}=this,i=1,a,o=[];for(;r<this.e;){let t=this.start.plus(n.mapUnits(e=>e*i));a=+t>+this.e?this.e:t,o.push(e.fromDateTimes(r,a)),r=a,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(t){if(!this.isValid)return this;let n=this.s>t.s?this.s:t.s,r=this.e<t.e?this.e:t.e;return n>=r?null:e.fromDateTimes(n,r)}union(t){if(!this.isValid)return this;let n=this.s<t.s?this.s:t.s,r=this.e>t.e?this.e:t.e;return e.fromDateTimes(n,r)}static merge(e){let[t,n]=e.sort((e,t)=>e.s-t.s).reduce(([e,t],n)=>t?t.overlaps(n)||t.abutsStart(n)?[e,t.union(n)]:[e.concat([t]),n]:[e,n],[[],null]);return n&&t.push(n),t}static xor(t){let n=null,r=0,i=[],a=t.map(e=>[{time:e.s,type:`s`},{time:e.e,type:`e`}]),o=Array.prototype.concat(...a).sort((e,t)=>e.time-t.time);for(let t of o)r+=t.type===`s`?1:-1,r===1?n=t.time:(n&&+n!=+t.time&&i.push(e.fromDateTimes(n,t.time)),n=null);return e.merge(i)}difference(...t){return e.xor([this].concat(t)).map(e=>this.intersection(e)).filter(e=>e&&!e.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Yu}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=$o,t={}){return this.isValid?Fl.create(this.s.loc.clone(t),e).formatInterval(this):Yu}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Yu}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Yu}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Yu}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:Yu}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Ju.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},Qu=class{static hasDST(e=bc.defaultZone){let t=w.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return As.isValidZone(e)}static normalizeZone(e){return ic(e,bc.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||x.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||x.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||x.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||x.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||x.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||x.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||x.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return x.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return x.create(t,null,`gregory`).eras(e)}static features(){return{relative:Hc(),localeWeek:Uc()}}};function $u(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(Ju.fromMillis(r).as(`days`))}function ed(e,t,n){let r=[[`years`,(e,t)=>t.year-e.year],[`quarters`,(e,t)=>t.quarter-e.quarter+(t.year-e.year)*4],[`months`,(e,t)=>t.month-e.month+(t.year-e.year)*12],[`weeks`,(e,t)=>{let n=$u(e,t);return(n-n%7)/7}],[`days`,$u]],i={},a=e,o,s;for(let[c,l]of r)n.indexOf(c)>=0&&(o=c,i[c]=l(e,t),s=a.plus(i),s>t?(i[c]--,e=a.plus(i),e>t&&(s=e,i[c]--,e=a.plus(i))):e=s);return[e,i,s,o]}function td(e,t,n,r){let[i,a,o,s]=ed(e,t,n),c=t-i,l=n.filter(e=>[`hours`,`minutes`,`seconds`,`milliseconds`].indexOf(e)>=0);l.length===0&&(o<t&&(o=i.plus({[s]:1})),o!==i&&(a[s]=(a[s]||0)+c/(o-i)));let u=Ju.fromObject(a,r);return l.length>0?Ju.fromMillis(c,r).shiftTo(...l).plus(u):u}var nd=`missing Intl.DateTimeFormat.formatToParts support`;function C(e,t=e=>e){return{regex:e,deser:([e])=>t(cc(e))}}var rd=`[ \xA0]`,id=new RegExp(rd,`g`);function ad(e){return e.replace(/\./g,`\\.?`).replace(id,rd)}function od(e){return e.replace(/\./g,``).replace(id,` `).toLowerCase()}function sd(e,t){return e===null?null:{regex:RegExp(e.map(ad).join(`|`)),deser:([n])=>e.findIndex(e=>od(n)===od(e))+t}}function cd(e,t){return{regex:e,deser:([,e,t])=>ul(e,t),groups:t}}function ld(e){return{regex:e,deser:([e])=>e}}function ud(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function dd(e,t){let n=dc(t),r=dc(t,`{2}`),i=dc(t,`{3}`),a=dc(t,`{4}`),o=dc(t,`{6}`),s=dc(t,`{1,2}`),c=dc(t,`{1,3}`),l=dc(t,`{1,6}`),u=dc(t,`{1,9}`),d=dc(t,`{2,4}`),f=dc(t,`{4,6}`),p=e=>({regex:RegExp(ud(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return sd(t.eras(`short`),0);case`GG`:return sd(t.eras(`long`),0);case`y`:return C(l);case`yy`:return C(d,cl);case`yyyy`:return C(a);case`yyyyy`:return C(f);case`yyyyyy`:return C(o);case`M`:return C(s);case`MM`:return C(r);case`MMM`:return sd(t.months(`short`,!0),1);case`MMMM`:return sd(t.months(`long`,!0),1);case`L`:return C(s);case`LL`:return C(r);case`LLL`:return sd(t.months(`short`,!1),1);case`LLLL`:return sd(t.months(`long`,!1),1);case`d`:return C(s);case`dd`:return C(r);case`o`:return C(c);case`ooo`:return C(i);case`HH`:return C(r);case`H`:return C(s);case`hh`:return C(r);case`h`:return C(s);case`mm`:return C(r);case`m`:return C(s);case`q`:return C(s);case`qq`:return C(r);case`s`:return C(s);case`ss`:return C(r);case`S`:return C(c);case`SSS`:return C(i);case`u`:return ld(u);case`uu`:return ld(s);case`uuu`:return C(n);case`a`:return sd(t.meridiems(),0);case`kkkk`:return C(a);case`kk`:return C(d,cl);case`W`:return C(s);case`WW`:return C(r);case`E`:case`c`:return C(n);case`EEE`:return sd(t.weekdays(`short`,!1),1);case`EEEE`:return sd(t.weekdays(`long`,!1),1);case`ccc`:return sd(t.weekdays(`short`,!0),1);case`cccc`:return sd(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return cd(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return cd(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return ld(/[a-z_+-/]{1,256}?/i);case` `:return ld(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:nd};return m.token=e,m}var fd={year:{"2-digit":`yy`,numeric:`yyyyy`},month:{numeric:`M`,"2-digit":`MM`,short:`MMM`,long:`MMMM`},day:{numeric:`d`,"2-digit":`dd`},weekday:{short:`EEE`,long:`EEEE`},dayperiod:`a`,dayPeriod:`a`,hour12:{numeric:`h`,"2-digit":`hh`},hour24:{numeric:`H`,"2-digit":`HH`},minute:{numeric:`m`,"2-digit":`mm`},second:{numeric:`s`,"2-digit":`ss`},timeZoneName:{long:`ZZZZZ`,short:`ZZZ`}};function pd(e,t,n){let{type:r,value:i}=e;if(r===`literal`){let e=/^\s+$/.test(i);return{literal:!e,val:e?` `:i}}let a=t[r],o=r;r===`hour`&&(o=t.hour12==null?t.hourCycle==null?n.hour12?`hour12`:`hour24`:t.hourCycle===`h11`||t.hourCycle===`h12`?`hour12`:`hour24`:t.hour12?`hour12`:`hour24`);let s=fd[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function md(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function hd(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(qc(n,i)){let a=n[i],o=a.groups?a.groups+1:1;!a.literal&&a.token&&(e[a.token.val[0]]=a.deser(r.slice(t,t+o))),t+=o}return[r,e]}else return[r,{}]}function gd(e){let t=e=>{switch(e){case`S`:return`millisecond`;case`s`:return`second`;case`m`:return`minute`;case`h`:case`H`:return`hour`;case`d`:return`day`;case`o`:return`ordinal`;case`L`:case`M`:return`month`;case`y`:return`year`;case`E`:case`c`:return`weekday`;case`W`:return`weekNumber`;case`k`:return`weekYear`;case`q`:return`quarter`;default:return null}},n=null,r;return S(e.z)||(n=As.create(e.z)),S(e.Z)||(n||=new nc(e.Z),r=e.Z),S(e.q)||(e.M=(e.q-1)*3+1),S(e.h)||(e.h<12&&e.a===1?e.h+=12:e.h===12&&e.a===0&&(e.h=0)),e.G===0&&e.y&&(e.y=-e.y),S(e.u)||(e.S=el(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var _d=null;function vd(){return _d||=w.fromMillis(1555555555555),_d}function yd(e,t){if(e.literal)return e;let n=wd(Fl.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function bd(e,t){return Array.prototype.concat(...e.map(e=>yd(e,t)))}var xd=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=bd(Fl.parseFormat(t),e),this.units=this.tokens.map(t=>dd(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=md(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=hd(e,this.regex,this.handlers),[r,i,a]=n?gd(n):[null,null,void 0];if(qc(n,`a`)&&qc(n,`H`))throw new qo(`Can't include meridiem when specifying 24-hour format`);return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:t,matches:n,result:r,zone:i,specificOffset:a}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function Sd(e,t,n){return new xd(e,n).explainFromTokens(t)}function Cd(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=Sd(e,t,n);return[r,i,a,o]}function wd(e,t){if(!e)return null;let n=Fl.create(t,e).dtFormatter(vd()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>pd(t,e,i))}var Td=`Invalid DateTime`,Ed=864e13;function Dd(e){return new xc(`unsupported zone`,`the zone "${e.name}" is not supported`)}function Od(e){return e.weekData===null&&(e.weekData=kc(e.c)),e.weekData}function kd(e){return e.localWeekData===null&&(e.localWeekData=kc(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function Ad(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new w({...n,...t,old:n})}function jd(e,t,n){let r=e-t*60*1e3,i=n.offset(r);if(t===i)return[r,t];r-=(i-t)*60*1e3;let a=n.offset(r);return i===a?[r,i]:[e-Math.min(i,a)*60*1e3,Math.max(i,a)]}function Md(e,t){e+=t*60*1e3;let n=new Date(e);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function Nd(e,t,n){return jd(al(e),t,n)}function Pd(e,t){let n=e.o,r=e.c.year+Math.trunc(t.years),i=e.c.month+Math.trunc(t.months)+Math.trunc(t.quarters)*3,a={...e.c,year:r,month:i,day:Math.min(e.c.day,il(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=Ju.fromObject({years:t.years-Math.trunc(t.years),quarters:t.quarters-Math.trunc(t.quarters),months:t.months-Math.trunc(t.months),weeks:t.weeks-Math.trunc(t.weeks),days:t.days-Math.trunc(t.days),hours:t.hours,minutes:t.minutes,seconds:t.seconds,milliseconds:t.milliseconds}).as(`milliseconds`),[s,c]=jd(al(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function Fd(e,t,n,r,i,a){let{setZone:o,zone:s}=n;if(e&&Object.keys(e).length!==0||t){let r=t||s,i=w.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return w.invalid(new xc(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function Id(e,t,n=!0){return e.isValid?Fl.create(x.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function Ld(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=Zc(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=Zc(e.c.month),n===`month`)return i;i+=`-`}else if(i+=Zc(e.c.month),n===`month`)return i;return i+=Zc(e.c.day),i}function Rd(e,t,n,r,i,a,o){let s=!n||e.c.millisecond!==0||e.c.second!==0,c=``;switch(o){case`day`:case`month`:case`year`:break;default:if(c+=Zc(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=Zc(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=Zc(e.c.second))}else{if(c+=Zc(e.c.minute),o===`minute`)break;s&&(c+=Zc(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=Zc(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=Zc(Math.trunc(-e.o/60)),c+=`:`,c+=Zc(Math.trunc(-e.o%60))):(c+=`+`,c+=Zc(Math.trunc(e.o/60)),c+=`:`,c+=Zc(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var zd={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Bd={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},Vd={ordinal:1,hour:0,minute:0,second:0,millisecond:0},Hd=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],Ud=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],Wd=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function Gd(e){let t={year:`year`,years:`year`,month:`month`,months:`month`,day:`day`,days:`day`,hour:`hour`,hours:`hour`,minute:`minute`,minutes:`minute`,quarter:`quarter`,quarters:`quarter`,second:`second`,seconds:`second`,millisecond:`millisecond`,milliseconds:`millisecond`,weekday:`weekday`,weekdays:`weekday`,weeknumber:`weekNumber`,weeksnumber:`weekNumber`,weeknumbers:`weekNumber`,weekyear:`weekYear`,weekyears:`weekYear`,ordinal:`ordinal`}[e.toLowerCase()];if(!t)throw new Jo(e);return t}function Kd(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return Gd(e)}}function qd(e){if(Zd===void 0&&(Zd=bc.now()),e.type!==`iana`)return e.offset(Zd);let t=e.name,n=Qd.get(t);return n===void 0&&(n=e.offset(Zd),Qd.set(t,n)),n}function Jd(e,t){let n=ic(t.zone,bc.defaultZone);if(!n.isValid)return w.invalid(Dd(n));let r=x.fromObject(t),i,a;if(S(e.year))i=bc.now();else{for(let t of Hd)S(e[t])&&(e[t]=zd[t]);let t=Ic(e)||Lc(e);if(t)return w.invalid(t);let r=qd(n);[i,a]=Nd(e,r,n)}return new w({ts:i,zone:n,loc:r,o:a})}function Yd(e,t,n){let r=S(n.round)?!0:n.round,i=S(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=tl(e,r||n.calendary?0:2,n.calendary?`round`:i),t.loc.clone(n).relFormatter(n).format(e,a)),o=r=>n.calendary?t.hasSame(e,r)?0:t.startOf(r).diff(e.startOf(r),r).get(r):t.diff(e,r).get(r);if(n.unit)return a(o(n.unit),n.unit);for(let e of n.units){let t=o(e);if(Math.abs(t)>=1)return a(t,e)}return a(e>t?-0:0,n.units[n.units.length-1])}function Xd(e){let t={},n;return e.length>0&&typeof e[e.length-1]==`object`?(t=e[e.length-1],n=Array.from(e).slice(0,e.length-1)):n=Array.from(e),[t,n]}var Zd,Qd=new Map,w=class e{constructor(e){let t=e.zone||bc.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new xc(`invalid input`):null)||(t.isValid?null:Dd(t));this.ts=S(e.ts)?bc.now():e.ts;let r=null,i=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(t))[r,i]=[e.old.c,e.old.o];else{let a=Rc(e.o)&&!e.old?e.o:t.offset(this.ts);r=Md(this.ts,a),n=Number.isNaN(r.year)?new xc(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||x.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=r,this.o=i,this.isLuxonDateTime=!0}static now(){return new e({})}static local(){let[e,t]=Xd(arguments),[n,r,i,a,o,s,c]=t;return Jd({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=Xd(arguments),[n,r,i,a,o,s,c]=t;return e.zone=nc.utcInstance,Jd({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=Vc(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=ic(n.zone,bc.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:x.fromObject(n)}):e.invalid(Dd(i))}static fromMillis(t,n={}){if(!Rc(t))throw new Yo(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`);return t<-864e13||t>Ed?e.invalid(`Timestamp out of range`):new e({ts:t,zone:ic(n.zone,bc.defaultZone),loc:x.fromObject(n)})}static fromSeconds(t,n={}){if(Rc(t))return new e({ts:t*1e3,zone:ic(n.zone,bc.defaultZone),loc:x.fromObject(n)});throw new Yo(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=ic(n.zone,bc.defaultZone);if(!r.isValid)return e.invalid(Dd(r));let i=x.fromObject(n),a=fl(t,Kd),{minDaysInFirstWeek:o,startOfWeek:s}=Nc(a,i),c=bc.now(),l=S(n.specificOffset)?r.offset(c):n.specificOffset,u=!S(a.ordinal),d=!S(a.year),f=!S(a.month)||!S(a.day),p=d||f,m=a.weekYear||a.weekNumber;if((p||u)&&m)throw new qo(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(f&&u)throw new qo(`Can't mix ordinal dates with month/day`);let ee=m||a.weekday&&!p,te,ne,re=Md(c,l);ee?(te=Ud,ne=Bd,re=kc(re,o,s)):u?(te=Wd,ne=Vd,re=jc(re)):(te=Hd,ne=zd);let ie=!1;for(let e of te){let t=a[e];S(t)?ie?a[e]=ne[e]:a[e]=re[e]:ie=!0}let ae=(ee?Pc(a,o,s):u?Fc(a):Ic(a))||Lc(a);if(ae)return e.invalid(ae);let[oe,se]=Nd(ee?Ac(a,o,s):u?Mc(a):a,l,r),ce=new e({ts:oe,zone:r,o:se,loc:i});return a.weekday&&p&&t.weekday!==ce.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${a.weekday} and a date of ${ce.toISO()}`):ce.isValid?ce:e.invalid(ce.invalid)}static fromISO(e,t={}){let[n,r]=Eu(e);return Fd(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=Du(e);return Fd(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=Ou(e);return Fd(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(S(t)||S(n))throw new Yo(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,s,c,l]=Cd(x.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return l?e.invalid(l):Fd(o,s,r,`format ${n}`,t,c)}static fromString(t,n,r={}){return e.fromFormat(t,n,r)}static fromSQL(e,t={}){let[n,r]=Fu(e);return Fd(n,r,t,`SQL`,e)}static invalid(t,n=null){if(!t)throw new Yo(`need to specify a reason the DateTime is invalid`);let r=t instanceof xc?t:new xc(t,n);if(bc.throwOnInvalid)throw new Wo(r);return new e({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=wd(e,x.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return bd(Fl.parseFormat(e),x.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){Zd=void 0,Qd.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Od(this).weekYear:NaN}get weekNumber(){return this.isValid?Od(this).weekNumber:NaN}get weekday(){return this.isValid?Od(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?kd(this).weekday:NaN}get localWeekNumber(){return this.isValid?kd(this).weekNumber:NaN}get localWeekYear(){return this.isValid?kd(this).weekYear:NaN}get ordinal(){return this.isValid?jc(this.c).ordinal:NaN}get monthShort(){return this.isValid?Qu.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Qu.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Qu.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Qu.weekdays(`long`,{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:`short`,locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:`long`,locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,t=6e4,n=al(this.c),r=this.zone.offset(n-e),i=this.zone.offset(n+e),a=this.zone.offset(n-r*t),o=this.zone.offset(n-i*t);if(a===o)return[this];let s=n-a*t,c=n-o*t,l=Md(s,a),u=Md(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[Ad(this,{ts:s}),Ad(this,{ts:c})]:[this]}get isInLeapYear(){return nl(this.year)}get daysInMonth(){return il(this.year,this.month)}get daysInYear(){return this.isValid?rl(this.year):NaN}get weeksInWeekYear(){return this.isValid?sl(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?sl(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=Fl.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(nc.instance(e),t)}toLocal(){return this.setZone(bc.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=ic(t,bc.defaultZone),t.equals(this.zone))return this;if(t.isValid){let e=this.ts;if(n||r){let n=t.offset(this.ts),r=this.toObject();[e]=Nd(r,n,t)}return Ad(this,{ts:e,zone:t})}else return e.invalid(Dd(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return Ad(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=fl(e,Kd),{minDaysInFirstWeek:n,startOfWeek:r}=Nc(t,this.loc),i=!S(t.weekYear)||!S(t.weekNumber)||!S(t.weekday),a=!S(t.ordinal),o=!S(t.year),s=!S(t.month)||!S(t.day),c=o||s,l=t.weekYear||t.weekNumber;if((c||a)&&l)throw new qo(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(s&&a)throw new qo(`Can't mix ordinal dates with month/day`);let u;i?u=Ac({...kc(this.c,n,r),...t},n,r):S(t.ordinal)?(u={...this.toObject(),...t},S(t.day)&&(u.day=Math.min(il(u.year,u.month),u.day))):u=Mc({...jc(this.c),...t});let[d,f]=Nd(u,this.o,this.zone);return Ad(this,{ts:d,o:f})}plus(e){if(!this.isValid)return this;let t=Ju.fromDurationLike(e);return Ad(this,Pd(this,t))}minus(e){if(!this.isValid)return this;let t=Ju.fromDurationLike(e).negate();return Ad(this,Pd(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=Ju.normalizeUnit(e);switch(r){case`years`:n.month=1;case`quarters`:case`months`:n.day=1;case`weeks`:case`days`:n.hour=0;case`hours`:n.minute=0;case`minutes`:n.second=0;case`seconds`:n.millisecond=0;break}if(r===`weeks`)if(t){let e=this.loc.getStartOfWeek(),{weekday:t}=this;t<e&&(n.weekNumber=this.weekNumber-1),n.weekday=e}else n.weekday=1;return r===`quarters`&&(n.month=(Math.ceil(this.month/3)-1)*3+1),this.set(n)}endOf(e,t){return this.isValid?this.plus({[e]:1}).startOf(e,t).minus(1):this}toFormat(e,t={}){return this.isValid?Fl.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):Td}toLocaleString(e=$o,t={}){return this.isValid?Fl.create(this.loc.clone(t),e).formatDateTime(this):Td}toLocaleParts(e={}){return this.isValid?Fl.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e=`extended`,suppressSeconds:t=!1,suppressMilliseconds:n=!1,includeOffset:r=!0,extendedZone:i=!1,precision:a=`milliseconds`}={}){if(!this.isValid)return null;a=Gd(a);let o=e===`extended`,s=Ld(this,o,a);return Hd.indexOf(a)>=3&&(s+=`T`),s+=Rd(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?Ld(this,e===`extended`,Gd(t)):null}toISOWeekDate(){return Id(this,`kkkk-'W'WW-c`)}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:t=!1,includeOffset:n=!0,includePrefix:r=!1,extendedZone:i=!1,format:a=`extended`,precision:o=`milliseconds`}={}){return this.isValid?(o=Gd(o),(r&&Hd.indexOf(o)>=3?`T`:``)+Rd(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return Id(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return Id(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?Ld(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:t=!1,includeOffsetSpace:n=!0}={}){let r=`HH:mm:ss.SSS`;return(t||e)&&(n&&(r+=` `),t?r+=`z`:e&&(r+=`ZZ`)),Id(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Td}[Symbol.for(`nodejs.util.inspect.custom`)](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let t={...this.c};return e.includeConfig&&(t.outputCalendar=this.outputCalendar,t.numberingSystem=this.loc.numberingSystem,t.locale=this.loc.locale),t}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,t=`milliseconds`,n={}){if(!this.isValid||!e.isValid)return Ju.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=Wc(t).map(Ju.normalizeUnit),a=e.valueOf()>this.valueOf(),o=td(a?this:e,a?e:this,i,r);return a?o.negate():o}diffNow(t=`milliseconds`,n={}){return this.diff(e.now(),t,n)}until(e){return this.isValid?Zu.fromDateTimes(this,e):this}hasSame(e,t,n){if(!this.isValid)return!1;let r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(t,n)<=r&&r<=i.endOf(t,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(t={}){if(!this.isValid)return null;let n=t.base||e.fromObject({},{zone:this.zone}),r=t.padding?this<n?-t.padding:t.padding:0,i=[`years`,`months`,`days`,`hours`,`minutes`,`seconds`],a=t.unit;return Array.isArray(t.unit)&&(i=t.unit,a=void 0),Yd(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?Yd(t.base||e.fromObject({},{zone:this.zone}),this,{...t,numeric:`auto`,units:[`years`,`months`,`days`],calendary:!0}):null}static min(...t){if(!t.every(e.isDateTime))throw new Yo(`min requires all arguments be DateTimes`);return Gc(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new Yo(`max requires all arguments be DateTimes`);return Gc(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return Sd(x.fromOpts({locale:r,numberingSystem:i,defaultToEN:!0}),e,t)}static fromStringExplain(t,n,r={}){return e.fromFormatExplain(t,n,r)}static buildFormatParser(e,t={}){let{locale:n=null,numberingSystem:r=null}=t;return new xd(x.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(S(t)||S(n))throw new Yo(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=x.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new Yo(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${n.locale}`);let{result:s,zone:c,specificOffset:l,invalidReason:u}=n.explainFromTokens(t);return u?e.invalid(u):Fd(s,c,r,`format ${n.format}`,t,l)}static get DATE_SHORT(){return $o}static get DATE_MED(){return es}static get DATE_MED_WITH_WEEKDAY(){return ts}static get DATE_FULL(){return ns}static get DATE_HUGE(){return rs}static get TIME_SIMPLE(){return is}static get TIME_WITH_SECONDS(){return as}static get TIME_WITH_SHORT_OFFSET(){return os}static get TIME_WITH_LONG_OFFSET(){return ss}static get TIME_24_SIMPLE(){return cs}static get TIME_24_WITH_SECONDS(){return ls}static get TIME_24_WITH_SHORT_OFFSET(){return us}static get TIME_24_WITH_LONG_OFFSET(){return ds}static get DATETIME_SHORT(){return fs}static get DATETIME_SHORT_WITH_SECONDS(){return ps}static get DATETIME_MED(){return ms}static get DATETIME_MED_WITH_SECONDS(){return hs}static get DATETIME_MED_WITH_WEEKDAY(){return gs}static get DATETIME_FULL(){return _s}static get DATETIME_FULL_WITH_SECONDS(){return vs}static get DATETIME_HUGE(){return ys}static get DATETIME_HUGE_WITH_SECONDS(){return bs}};function $d(e){if(w.isDateTime(e))return e;if(e&&e.valueOf&&Rc(e.valueOf()))return w.fromJSDate(e);if(e&&typeof e==`object`)return w.fromObject(e);throw new Yo(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function ef(e){if(e===`*`)return{min:1,max:`*`};let[t,n]=e.split(`..`),r=Number(t);return n===void 0?{min:r,max:r}:{min:r,max:n===`*`?`*`:Number(n)}}var tf=new Set([`-`,`<>`,`>`,`<`,`-?`,`?-`,`?-?`,`?>`,`>?`,`?>?`,`?<`,`<?`,`?<?`,`?<>`,`<>?`,`?<>?`]),nf=`1`,rf=`0..1`,af=`*`,of=`0..*`;function sf(e){switch(e){case`-`:return[`1`,`1`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`<`:return[`1`,`*`];case`-?`:return[`1`,rf];case`?-`:return[rf,`1`];case`?-?`:return[rf,rf];case`?>`:return[of,`1`];case`>?`:return[`*`,rf];case`?>?`:return[of,rf];case`?<`:return[rf,`*`];case`<?`:return[`1`,of];case`?<?`:return[rf,of];case`?<>`:return[of,`*`];case`<>?`:return[`*`,of];case`?<>?`:return[of,of];default:return}}function cf(e){return ef(e).max===1}function lf(e){return ef(e).max===`*`}function uf(e){return ef(e).min===0}function df(e){return ef(e).min>=1}function ff(e){return e.replace(/\?/g,``)}function pf(e,t){let{min:n,max:r}=ef(e),{min:i,max:a}=ef(t);if(n===1&&r===1){if(i===1&&a===1)return`-`;if(i===0&&a===1)return`-?`;if(i===0&&a===`*`)return`<?`;if(i>=1&&a===`*`)return`<`}if(n===0&&r===1){if(i===1&&a===1)return`?-`;if(i===0&&a===1)return`?-?`;if(i===0&&a===`*`)return`?<?`;if(i>=1&&a===`*`)return`?<`}if(n===0&&r===`*`){if(i===1&&a===1)return`?>`;if(i===0&&a===1)return`?>?`;if(i===0&&a===`*`)return`?<>?`;if(i>=1&&a===`*`)return`?<>`}if(n>=1&&r===`*`){if(i===1&&a===1)return`>`;if(i===0&&a===1)return`>?`;if(i===0&&a===`*`)return`<>?`;if(i>=1&&a===`*`)return`<>`}return`<>`}function mf(e){let{min:t,max:n}=ef(e);return t===0?e:n===`*`?of:rf}function hf(e){let{min:t,max:n}=ef(e);return t>=1?e:n===`*`?`*`:`1`}function gf(e){let{min:t,max:n}=ef(e);return n===`*`?e:t===0?of:`*`}var T=function(e){return e[e.UNKNOWN_SYMBOL=1e3]=`UNKNOWN_SYMBOL`,e[e.UNEXPECTED_SYMBOL=1001]=`UNEXPECTED_SYMBOL`,e[e.UNEXPECTED_EOF=1002]=`UNEXPECTED_EOF`,e[e.UNEXPECTED_NEWLINE=1003]=`UNEXPECTED_NEWLINE`,e[e.UNKNOWN_TOKEN=1004]=`UNKNOWN_TOKEN`,e[e.UNEXPECTED_TOKEN=1005]=`UNEXPECTED_TOKEN`,e[e.UNEXPECTED_ELEMENT_DECLARATION=1006]=`UNEXPECTED_ELEMENT_DECLARATION`,e[e.MISSING_SPACES=1007]=`MISSING_SPACES`,e[e.UNKNOWN_PREFIX_OP=1008]=`UNKNOWN_PREFIX_OP`,e[e.INVALID_OPERAND=1009]=`INVALID_OPERAND`,e[e.EMPTY_ATTRIBUTE_NAME=1010]=`EMPTY_ATTRIBUTE_NAME`,e[e.INVALID_ESCAPE_SEQUENCE=1011]=`INVALID_ESCAPE_SEQUENCE`,e[e.INVALID_NAME=3e3]=`INVALID_NAME`,e[e.UNEXPECTED_NAME=3001]=`UNEXPECTED_NAME`,e[e.NAME_NOT_FOUND=3002]=`NAME_NOT_FOUND`,e[e.DUPLICATE_NAME=3003]=`DUPLICATE_NAME`,e[e.INVALID_ALIAS=3004]=`INVALID_ALIAS`,e[e.UNEXPECTED_ALIAS=3005]=`UNEXPECTED_ALIAS`,e[e.UNEXPECTED_SETTINGS=3006]=`UNEXPECTED_SETTINGS`,e[e.INVALID_SETTINGS=3007]=`INVALID_SETTINGS`,e[e.UNEXPECTED_SIMPLE_BODY=3008]=`UNEXPECTED_SIMPLE_BODY`,e[e.UNEXPECTED_COMPLEX_BODY=3009]=`UNEXPECTED_COMPLEX_BODY`,e[e.INVALID_TABLE_CONTEXT=3010]=`INVALID_TABLE_CONTEXT`,e[e.UNKNOWN_TABLE_SETTING=3011]=`UNKNOWN_TABLE_SETTING`,e[e.DUPLICATE_TABLE_SETTING=3012]=`DUPLICATE_TABLE_SETTING`,e[e.INVALID_TABLEGROUP_CONTEXT=3013]=`INVALID_TABLEGROUP_CONTEXT`,e[e.INVALID_TABLEGROUP_ELEMENT_NAME=3014]=`INVALID_TABLEGROUP_ELEMENT_NAME`,e[e.DUPLICATE_TABLEGROUP_ELEMENT_NAME=3015]=`DUPLICATE_TABLEGROUP_ELEMENT_NAME`,e[e.DUPLICATE_TABLEGROUP_FIELD_NAME=3016]=`DUPLICATE_TABLEGROUP_FIELD_NAME`,e[e.INVALID_TABLEGROUP_FIELD=3017]=`INVALID_TABLEGROUP_FIELD`,e[e.EMPTY_TABLE=3018]=`EMPTY_TABLE`,e[e.INVALID_COLUMN=3019]=`INVALID_COLUMN`,e[e.INVALID_COLUMN_NAME=3020]=`INVALID_COLUMN_NAME`,e[e.UNKNOWN_COLUMN_SETTING=3021]=`UNKNOWN_COLUMN_SETTING`,e[e.INVALID_COLUMN_TYPE=3022]=`INVALID_COLUMN_TYPE`,e[e.DUPLICATE_COLUMN_NAME=3023]=`DUPLICATE_COLUMN_NAME`,e[e.DUPLICATE_COLUMN_SETTING=3024]=`DUPLICATE_COLUMN_SETTING`,e[e.INVALID_COLUMN_SETTING_VALUE=3025]=`INVALID_COLUMN_SETTING_VALUE`,e[e.INVALID_ENUM_CONTEXT=3026]=`INVALID_ENUM_CONTEXT`,e[e.INVALID_ENUM_ELEMENT_NAME=3027]=`INVALID_ENUM_ELEMENT_NAME`,e[e.INVALID_ENUM_ELEMENT=3028]=`INVALID_ENUM_ELEMENT`,e[e.DUPLICATE_ENUM_ELEMENT_NAME=3029]=`DUPLICATE_ENUM_ELEMENT_NAME`,e[e.UNKNOWN_ENUM_ELEMENT_SETTING=3030]=`UNKNOWN_ENUM_ELEMENT_SETTING`,e[e.DUPLICATE_ENUM_ELEMENT_SETTING=3031]=`DUPLICATE_ENUM_ELEMENT_SETTING`,e[e.INVALID_ENUM_ELEMENT_SETTING=3032]=`INVALID_ENUM_ELEMENT_SETTING`,e[e.EMPTY_ENUM=3033]=`EMPTY_ENUM`,e[e.INVALID_REF_CONTEXT=3034]=`INVALID_REF_CONTEXT`,e[e.UNKNOWN_REF_SETTING=3035]=`UNKNOWN_REF_SETTING`,e[e.DUPLICATE_REF_SETTING=3036]=`DUPLICATE_REF_SETTING`,e[e.INVALID_REF_SETTING_VALUE=3037]=`INVALID_REF_SETTING_VALUE`,e[e.INVALID_REF_RELATIONSHIP=3038]=`INVALID_REF_RELATIONSHIP`,e[e.INVALID_REF_FIELD=3039]=`INVALID_REF_FIELD`,e[e.EMPTY_REF=3040]=`EMPTY_REF`,e[e.REF_REDEFINED=3041]=`REF_REDEFINED`,e[e.INVALID_NOTE_CONTEXT=3042]=`INVALID_NOTE_CONTEXT`,e[e.INVALID_NOTE=3043]=`INVALID_NOTE`,e[e.NOTE_REDEFINED=3044]=`NOTE_REDEFINED`,e[e.NOTE_CONTENT_REDEFINED=3045]=`NOTE_CONTENT_REDEFINED`,e[e.EMPTY_NOTE=3046]=`EMPTY_NOTE`,e[e.UNKNOWN_NOTE_SETTING=3047]=`UNKNOWN_NOTE_SETTING`,e[e.DUPLICATE_NOTE_SETTING=3048]=`DUPLICATE_NOTE_SETTING`,e[e.INVALID_NOTE_SETTING_VALUE=3049]=`INVALID_NOTE_SETTING_VALUE`,e[e.INVALID_INDEXES_CONTEXT=3050]=`INVALID_INDEXES_CONTEXT`,e[e.INVALID_INDEXES_FIELD=3051]=`INVALID_INDEXES_FIELD`,e[e.INVALID_INDEX=3052]=`INVALID_INDEX`,e[e.UNKNOWN_INDEX_SETTING=3053]=`UNKNOWN_INDEX_SETTING`,e[e.DUPLICATE_INDEX_SETTING=3054]=`DUPLICATE_INDEX_SETTING`,e[e.UNEXPECTED_INDEX_SETTING_VALUE=3055]=`UNEXPECTED_INDEX_SETTING_VALUE`,e[e.INVALID_INDEX_SETTING_VALUE=3056]=`INVALID_INDEX_SETTING_VALUE`,e[e.INVALID_PROJECT_CONTEXT=3057]=`INVALID_PROJECT_CONTEXT`,e[e.PROJECT_REDEFINED=3058]=`PROJECT_REDEFINED`,e[e.INVALID_PROJECT_FIELD=3059]=`INVALID_PROJECT_FIELD`,e[e.INVALID_CUSTOM_CONTEXT=3060]=`INVALID_CUSTOM_CONTEXT`,e[e.INVALID_CUSTOM_ELEMENT_VALUE=3061]=`INVALID_CUSTOM_ELEMENT_VALUE`,e[e.INVALID_ELEMENT_IN_SIMPLE_BODY=3062]=`INVALID_ELEMENT_IN_SIMPLE_BODY`,e[e.INVALID_TABLE_PARTIAL_CONTEXT=3063]=`INVALID_TABLE_PARTIAL_CONTEXT`,e[e.INVALID_TABLE_PARTIAL_ELEMENT_NAME=3064]=`INVALID_TABLE_PARTIAL_ELEMENT_NAME`,e[e.INVALID_TABLE_PARTIAL_SETTING_VALUE=3065]=`INVALID_TABLE_PARTIAL_SETTING_VALUE`,e[e.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME=3066]=`DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_SETTING=3067]=`DUPLICATE_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_PARTIAL_INJECTION=3068]=`INVALID_TABLE_PARTIAL_INJECTION`,e[e.INVALID_TABLE_PARTIAL_INJECTION_OP=3069]=`INVALID_TABLE_PARTIAL_INJECTION_OP`,e[e.INVALID_TABLE_PARTIAL_INJECTION_NAME=3070]=`INVALID_TABLE_PARTIAL_INJECTION_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME=3071]=`DUPLICATE_TABLE_PARTIAL_INJECTION_NAME`,e[e.UNKNOWN_TABLE_PARTIAL_SETTING=3072]=`UNKNOWN_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_SETTING_VALUE=3073]=`INVALID_TABLE_SETTING_VALUE`,e[e.INVALID_CHECKS_CONTEXT=3074]=`INVALID_CHECKS_CONTEXT`,e[e.INVALID_CHECKS_FIELD=3075]=`INVALID_CHECKS_FIELD`,e[e.INVALID_CHECK=3076]=`INVALID_CHECK`,e[e.UNKNOWN_CHECK_SETTING=3077]=`UNKNOWN_CHECK_SETTING`,e[e.DUPLICATE_CHECK_SETTING=3078]=`DUPLICATE_CHECK_SETTING`,e[e.INVALID_CHECK_SETTING_VALUE=3079]=`INVALID_CHECK_SETTING_VALUE`,e[e.INVALID_RECORDS_CONTEXT=3080]=`INVALID_RECORDS_CONTEXT`,e[e.INVALID_RECORDS_NAME=3081]=`INVALID_RECORDS_NAME`,e[e.INVALID_RECORDS_FIELD=3082]=`INVALID_RECORDS_FIELD`,e[e.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS=3083]=`DUPLICATE_COLUMN_REFERENCES_IN_RECORDS`,e[e.DUPLICATE_RECORDS_FOR_TABLE=3084]=`DUPLICATE_RECORDS_FOR_TABLE`,e[e.INVALID_USE_CONTEXT=3085]=`INVALID_USE_CONTEXT`,e[e.INVALID_USE_SPECIFIER_KIND=3086]=`INVALID_USE_SPECIFIER_KIND`,e[e.INVALID_USE_SPECIFIER_NAME=3087]=`INVALID_USE_SPECIFIER_NAME`,e[e.INVALID_DIAGRAMVIEW_CONTEXT=3088]=`INVALID_DIAGRAMVIEW_CONTEXT`,e[e.DUPLICATE_DIAGRAMVIEW_NAME=3089]=`DUPLICATE_DIAGRAMVIEW_NAME`,e[e.INVALID_DIAGRAMVIEW_FIELD=3090]=`INVALID_DIAGRAMVIEW_FIELD`,e[e.DUPLICATE_DIAGRAMVIEW_FIELD=3091]=`DUPLICATE_DIAGRAMVIEW_FIELD`,e[e.BINDING_ERROR=4e3]=`BINDING_ERROR`,e[e.NONEXISTENT_MODULE=4001]=`NONEXISTENT_MODULE`,e[e.UNSUPPORTED=5e3]=`UNSUPPORTED`,e[e.CIRCULAR_REF=5001]=`CIRCULAR_REF`,e[e.SAME_ENDPOINT=5002]=`SAME_ENDPOINT`,e[e.UNEQUAL_FIELDS_BINARY_REF=5003]=`UNEQUAL_FIELDS_BINARY_REF`,e[e.CONFLICTING_SETTING=5004]=`CONFLICTING_SETTING`,e[e.TABLE_REAPPEAR_IN_TABLEGROUP=5005]=`TABLE_REAPPEAR_IN_TABLEGROUP`,e}({}),E=class e extends Error{constructor(t,n,r){super(n),this.code=t,this.diagnostic=n,this.nodeOrToken=r,this.start=r.start,this.end=r.end,this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}toWarning(){return new _f(this.code,this.message,this.nodeOrToken)}get filepath(){return this.nodeOrToken.filepath}},_f=class extends Error{constructor(e,t,n){super(t),this.code=e,this.diagnostic=t,this.nodeOrToken=n,this.start=n.start,this.end=n.end,this.name=this.constructor.name,Object.setPrototypeOf(this,E.prototype)}get filepath(){return this.nodeOrToken.filepath}},vf=class e extends Error{constructor(t,n,r,i){super(n),this.code=t,this.diagnostic=n,this.nodeOrToken=r,this.start=r.start,this.end=r.end,this.quickFixes=i?.quickFixes,this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}get filepath(){return this.nodeOrToken.filepath}};function yf(e){return!!e.match(/(\p{L}|_|\p{M})/gu)}function bf(e){if(!e)return!1;let t=e[0];return t>=`0`&&t<=`9`}function xf(e){let[t]=e;return bf(t)||yf(t)&&t.toLowerCase()>=`a`&&t.toLowerCase()<=`f`}function Sf(e){return yf(e)||bf(e)}function Cf(e){let t=N(e);return t!==void 0&&t.length>0}function wf(e){return Tf(e)}function Tf(e){return e instanceof mm&&e.expression instanceof pm}function Ef(e){return!!e.bodyColon}function Df(e){return e instanceof H&&e.op?.value===`~`&&k(e.expression)}function Of(e){return e!==void 0&&tf.has(e)}function kf(e){if(!(e instanceof mm)||!(e.expression instanceof dm)||e.expression.literal?.kind!==v.COLOR_LITERAL)return!1;let t=e.expression.literal.value;if(t.length!==4&&t.length!==7||t[0]!==`#`)return!1;for(let e=1;e<t.length;e+=1)if(!xf(t[e]))return!1;return!0}function Af(e){if(O(e)||jf(e)||If(e)&&[`true`,`false`,`null`].includes(e.expression.variable.value.toLowerCase())||e instanceof H&&wo.includes(e.op?.value)&&jf(e.expression)||e instanceof om)return!0;if(!e||!Lf(e))return!1;let t=tp(e);return t.length===2||t.length===3}function jf(e){return e instanceof H?wo.includes(e.op.value)?jf(e.expression):!1:e instanceof mm&&e.expression instanceof dm&&e.expression.literal?.kind===v.NUMERIC_LITERAL}function Mf(e){if(!(e instanceof H)||!Of(e.op?.value))return!1;let t=N(e.expression);return t!==void 0&&t.length>0}function Nf(e){return e instanceof sm&&e.elementList.every(k)}function Pf(e){if(!(e instanceof um||A(e)||e instanceof mm||e instanceof gm))return!1;for(;e instanceof um||e instanceof gm;)if(e instanceof um){if(e.callee===void 0||e.argumentList===void 0||!e.argumentList.elementList.every(e=>jf(e)||O(e)||If(e)))return!1;e=e.callee}else if(e instanceof gm){if(e.array===void 0||e.indexer===void 0||!e.indexer.elementList.every(e=>!e.colon&&!e.value&&jf(e.name)))return!1;e=e.array}let t=N(e);return t!==void 0&&t.length>0}function D(e){let t={},r=[];return e?(e.elementList.forEach(e=>{if(!e.name)return;if(e.name instanceof mm){r.push(new E(T.INVALID_SETTINGS,`A setting name must be a stream of identifiers`,e.name));return}let n=Zf(e.name)?.toLowerCase();if(!n)return;let i=t[n];i?i.push(e):t[n]=[e]}),new n(t,r)):new n(t)}function O(e){return e instanceof mm&&(e.expression instanceof pm&&e.expression.variable instanceof Va&&e.expression.variable.kind===v.QUOTED_STRING||e.expression instanceof dm&&e.expression.literal?.kind===v.STRING_LITERAL)}function k(e){return e instanceof mm&&e.expression instanceof pm&&e.expression.variable instanceof Va}function Ff(e){return e?e instanceof fm:!1}function If(e){return e instanceof mm&&e.expression instanceof pm&&e.expression.variable?.kind===v.IDENTIFIER}function A(e){return e instanceof im&&e.leftExpression instanceof R&&e.rightExpression instanceof R&&e.op?.value===`.`}function Lf(e){return k(e)?!0:A(e)&&k(e.rightExpression)&&Lf(e.leftExpression)}function j(e,t){return e instanceof B&&e.isKind(t)}function Rf(e){return e instanceof em}function zf(e,t){return e instanceof tm&&(t===void 0||e.isKind(t))}function Bf(e){return e instanceof z}function M(e,...t){return e instanceof U&&e.parent instanceof B&&e.parent.isKind(...t)}function Vf(e,t){let n=e.parent;return n instanceof B&&n.isKind(t)&&!!n.body&&n.body.strictlyContains(e)}function Hf(e,t){let n=e.parentOfKind(U);if(!n||t<0)return!1;if(t===0)return n.callee?n.callee.containsEq(e):!1;let r=n.args[t-1];return r?r.containsEq(e):!1}function Uf(e){return!!e.parentOfKind(G)}function Wf(e,t){let n=e.parentOfKind(V);return!n||(n.name instanceof mm?F(n.name):Zf(n.name))?.toLowerCase()!==t?!1:!!n.value?.containsEq(e)}function Gf(e){return!(e instanceof im)||!Of(e.op?.value)?!1:np(e.leftExpression)!==void 0&&np(e.rightExpression)!==void 0}function Kf(e){let t=np(e.leftExpression),n=np(e.rightExpression);if(t===void 0||n===void 0)return!1;let{tupleElements:r}=t,{tupleElements:i}=n;return r?.length===i?.length}function qf(e){return e instanceof mm&&e.expression instanceof pm||e instanceof om}function Jf(e){if(k(e))return e;if(A(e)){let t=e.rightExpression;if(t&&k(t))return t}}function Yf(e){let t=e.parentNode;return!A(t)||t.rightExpression!==e?!1:!(A(t.parentNode)&&t.parentNode.leftExpression===t)}function Xf(e){if(k(e))return e.expression.variable}function Zf(e){if(e===void 0)return;let t=e.identifiers.map(e=>e.value).join(` `);if(t!==``)return t}function Qf(e){if(!(e instanceof B))return;let t=N(e?.name);return t===void 0?void 0:t.join(`.`)}function $f(e){return e.elementList.length===0}function ep(e){return e?.body?e.body instanceof W?e.body.body:[e.body]:[]}function tp(e){if(!e)return;if(!A(e))return[e];let t=tp(e.leftExpression);if(t)return t.push(e.rightExpression),t}function N(e){if(e===void 0)return;let t=tp(e);if(!t)return;let n=[];for(let e of t){let t=F(e);if(typeof t!=`string`)return;n.push(t)}return n}function np(e){if(e===void 0)return;let t=tp(e);if(!t||t.length===0)return;let n=[];if(!k(g(t))){let e=t.pop();if(Nf(e))n=e.elementList;else return}let r=t;if(r.every(k))return{variables:r,tupleElements:n}}function rp(e){if(qf(e))return e instanceof om?{functional:[e],nonFunctional:[]}:{functional:[],nonFunctional:[e]};if(e instanceof sm&&e.elementList.every(qf))return{functional:e.elementList.filter(e=>e instanceof om),nonFunctional:e.elementList.filter(k)}}function P(e){if(O(e))return e.expression instanceof pm?e?.expression?.variable?.value:e.expression.literal.value}function ip(e){return e instanceof mm&&e.expression instanceof dm&&e.expression.literal?.kind===v.NUMERIC_LITERAL?Number(e.expression.literal.value):null}function ap(e){if(!(e instanceof um)||!e.callee)return;let t=tp(e.callee);if(!t||t.length===0||!t.every(k))return;let n=[];return Nf(e.argumentList)&&(n=[...e.argumentList.elementList]),{variables:t,args:n}}function F(e){if(k(e))return e.expression.variable.value}function op(e){let t=e?.expression.variable?.value;return t===void 0?void 0:t}function sp(e){return If(e)?e.expression.variable?.value?.toLowerCase()===`null`:e instanceof hm}function cp(e){return P(e)===``}function lp(e){return e instanceof om}function up(e){let t=ip(e);if(t!==null)return t;if(jf(e)&&e instanceof H&&e.expression){let t=e.op?.value,n=ip(e.expression);if(n!==null)return t===`-`?-n:n}return null}function dp(e){if(e==null)return null;if(typeof e==`number`)return e;if(typeof e==`string`){let t=Number(e);return isNaN(t)?null:t}if(typeof e==`boolean`)return+!!e;let t=up(e);if(t!==null)return t;let n=P(e);if(n!==void 0){let e=Number(n);if(!isNaN(e))return e}return null}function fp(e){if(e==null)return null;if(typeof e==`number`)return Number.isInteger(e)?e:null;if(typeof e==`string`){let t=Number(e);return isNaN(t)||!Number.isInteger(t)?null:t}if(typeof e==`boolean`)return+!!e;let t=up(e);if(t!==null)return Number.isInteger(t)?t:null;let n=P(e);if(n!==void 0){let e=Number(n);if(!isNaN(e)&&Number.isInteger(e))return e}return null}var pp=[`true`,`yes`,`y`,`t`,`1`],mp=[`false`,`no`,`n`,`f`,`0`];function hp(e){if(e==null)return null;if(typeof e==`boolean`)return e;if(typeof e==`number`)return e===0?!1:e===1?!0:null;if(typeof e==`string`){let t=e.toLowerCase();return pp.includes(t)?!0:mp.includes(t)?!1:null}if(If(e)){let t=e.expression.variable?.value?.toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}let t=ip(e);if(t===0)return!1;if(t===1)return!0;let n=P(e)?.toLowerCase();if(n){if(pp.includes(n))return!0;if(mp.includes(n))return!1}return null}function gp(e){if(e==null)return null;if(typeof e==`string`)return e;let t=N(e);return t?g(t):P(e)??null}function _p(e){if(e==null)return null;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return e.toString();let t=P(e)??null??dp(e)??hp(e);return t===null?null:t.toString()}var vp=[`yyyy-MM-dd`,`M/d/yyyy`,`d MMM yyyy`,`MMM d, yyyy`],yp=[`yyyy-MM-dd HH:mm:ss`,`yyyy-MM-dd HH:mm:ss.SSS`,`yyyy-MM-dd HH:mm:ss.SSSZZ`,`yyyy-MM-dd HH:mm:ssZZ`],bp=[`HH:mm:ss`,`HH:mm:ssZZ`,`HH:mm:ss.SSS`,`HH:mm:ss.SSSZZ`];function xp(e){if(e==null)return null;let t=typeof e==`string`?e:P(e)??null;if(t===null)return null;for(let e of bp){let n=w.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISOTime({suppressMilliseconds:!0,includeOffset:r(n)})}for(let e of vp){let n=w.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISODate()}for(let e of yp){let n=w.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)})}let n=w.fromISO(t,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)});return null;function r(e){return e.zone.type!==`system`}}function Sp(e){return e instanceof H?`${e.op?.value}${Sp(e.expression)}`:e.expression.literal.value}function Cp(e){return e instanceof H?e.op?.value===`-`?-Cp(e.expression):Cp(e.expression):Number.parseFloat(e.expression.literal.value)}function I(e){return{start:{offset:e.startPos.offset,line:e.startPos.line+1,column:e.startPos.column+1},end:{offset:e.endPos.offset,line:e.endPos.line+1,column:e.endPos.column+1},filepath:e.filepath}}function wp(e){let t=e.split(`
2
2
  `),n=t.slice(t.findIndex(e=>e.trimStart()!==``)),r=n.filter(e=>e.trimStart());if(r.length===0)return n.join(`
3
3
  `);let i=Math.min(...r.map(e=>e.length-e.trimStart().length));return n.map(e=>e.slice(i)).join(`
4
- `)}function wp(e){let t=M(e);return!t||t.length===0?{schemaName:[],name:``}:{name:t[t.length-1],schemaName:t.slice(0,-1)}}function Tp(e){if(e instanceof fm&&e.expression instanceof lm&&e.expression.literal?.kind===_.COLOR_LITERAL)return e.expression.literal.value;if(Ff(e)&&P(e)?.toLowerCase()===`none`)return Co}function Ep(e){if(e){if(D(e)){let t=N(e);if(t!==void 0)return{value:t,type:`string`}}if(Af(e))return{type:`number`,value:Sp(e)};if(Ff(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof am&&e.value)return{value:e.value.value,type:`expression`};if(If(e)){let t=ep(e)?.at(-1),n=t?P(t):void 0;if(n!==void 0)return{value:n,type:`string`}}}}function Dp(e,t){let r=``,i=null;if(t instanceof G){if(i=(t.argumentList?.elementList??[]).map(e=>Af(e)?xp(e):D(e)?N(e):P(e)).join(`,`),r=`(${i})`,!t.callee)return new n({schemaName:null,type_name:``,args:i});t=t.callee}for(;t instanceof G||t instanceof mm;)if(t instanceof G){if(r=`(${(t.argumentList?.elementList??[]).map(e=>Af(e)?xp(e):D(e)?N(e):P(e)).join(`,`)})${r}`,!t.callee)break;t=t.callee}else if(t instanceof mm){if(r=`${`[${(t.indexer?.elementList??[]).map(e=>e?.name?.expression?.literal?.value??``).join(`,`)}]`}${r}`,!t.array)break;t=t.array}let{name:a,schemaName:o}=wp(t);return o.length>1?new n({schemaName:o[0]??null,type_name:`${a}${r}`,args:i},[new T(w.UNSUPPORTED,`Nested schema is not supported`,t)]):new n({schemaName:o.length===0?null:o[0],type_name:`${a}${r}`,args:i})}var I=function(e){return e.Schema=`Schema`,e.Table=`Table`,e.Column=`Column`,e.TableGroup=`TableGroup`,e.TableGroupField=`TableGroup field`,e.Enum=`Enum`,e.EnumField=`Enum field`,e.StickyNote=`Note`,e.TablePartial=`TablePartial`,e.PartialInjection=`PartialInjection`,e.DiagramView=`DiagramView`,e.DiagramViewTopLevelWildcard=`DiagramView top-level wildcard`,e.DiagramViewTable=`DiagramView table`,e.DiagramViewTableGroup=`DiagramView tablegroup`,e.DiagramViewNote=`DiagramView note`,e.DiagramViewSchema=`DiagramView schema`,e.Program=`Program`,e}({}),Op={Table:`Table`,Enum:`Enum`,TableGroup:`TableGroup`,TablePartial:`TablePartial`,Note:`Note`,Schema:`Schema`},kp=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},Ap=class{constructor({kind:e,declaration:t,name:n},r,i){this.id=r,this.kind=e,this.declaration=t,this.filepath=i,this.name=n}get originalFilepath(){return this.originalSymbol.filepath}intern(){return`symbol@${this.filepath.intern()}:${this.id}`}isKind(...e){return e.includes(this.kind)}canonicalName(e,t){return e.canonicalName(t,this).getValue()}interpretedName(e,t){if(!t)return{schema:null,name:this.name??``};let n=this.canonicalName(e,t);return n?{schema:n.schema===`public`?null:n.schema,name:n.name}:{schema:null,name:this.name??``}}settings(e){if(this.declaration)return e.nodeSettings(this.declaration).getFiltered(t)}get token(){if(this.declaration)return F(this.declaration)}references(e){return e.symbolReferences(this)}metadata(e){return e.symbolMetadata(this)}members(e){let n=e.symbolMembers(this);return n.hasValue(t)?[]:n.getValue()}},jp=class e extends Ap{constructor({name:e,parent:t},n,r){super({kind:`Schema`},n,r),this.name=e??``,this.parent=t}get canBeImported(){return!0}get originalSymbol(){return this}get qualifiedName(){return this.parent?[...this.parent.qualifiedName,this.name]:[this.name]}isPublicSchema(){return this.qualifiedName.join(`.`)===v}inNestedSchema(t,n){let r=this.members(t);if(r.some(e=>e.originalSymbol===n.originalSymbol))return!0;for(let i of r)if(i instanceof e&&i.inNestedSchema(t,n))return!0;return!1}},Mp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`Enum`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Np=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`Enum field`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=Cp(N(i));if(a)return{value:a,token:F(r)}}},Pp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`Table`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}schema(e){let t=this.canonicalName(e,this.filepath);return t?t.schema===`public`?null:t.schema:null}columns(e){return this.mergedColumns(e).filter(e=>!(e instanceof Xp))}mergedColumns(e){return this.members(e).filter(e=>e.isKind(`Column`))}partialInjections(e){return this.members(e).filter(e=>e.isKind(`PartialInjection`))}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=Cp(N(i));if(a)return{value:a,token:F(r)}}headercolor(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.[i.HeaderColor]?.length?Tp(n[i.HeaderColor].at(0)?.value):void 0}refs(e){return this.metadata(e).filter(e=>e.kind===gm.Ref)}checks(e){return this.metadata(e).filter(e=>e.kind===gm.TableChecks)}indexes(e){return this.metadata(e).filter(e=>e.kind===gm.Indexes)}records(e){return this.metadata(e).filter(e=>e.kind===gm.Records)}resolvedPartials(e){return this.partialInjections(e).flatMap(n=>{if(!(n.declaration instanceof H)||!Ef(n.declaration.callee))return[];let r=n.declaration.callee.expression;if(!r)return[];let i=e.nodeReferee(r).getFiltered(t);return i?[i]:[]})}mergedIndexes(e){let t=this.indexes(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===gm.Indexes));return[...t,...n]}mergedChecks(e){let t=this.checks(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===gm.TableChecks));return[...t,...n]}mergedHeadercolor(e){let n=this.headercolor(e);for(let r of this.resolvedPartials(e)){if(!r.declaration)continue;let a=e.nodeSettings(r.declaration).getFiltered(t);a?.[i.HeaderColor]?.length&&(n=Tp(a[i.HeaderColor].at(0)?.value))}return n}mergedNote(e){let n=n=>{if(!n.declaration)return;let r=e.nodeSettings(n.declaration).getFiltered(t);if(!r?.note?.length)return;let i=r.note[0],a=i?.value;if(!a)return;let o=Cp(N(a));if(o)return{value:o,token:F(i)}},r=n(this);for(let t of this.resolvedPartials(e)){let e=n(t);e&&(r=e)}return r}},Fp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`Column`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}qualifiedName(e){let n=this.declaration?.parentOfKind(z);if(n){let r=e.nodeSymbol(n).getFiltered(t);if(r){let{schema:t,name:n}=r.interpretedName(e,this.filepath);return t?`${t}.${n}.${this.name}`:`${n}.${this.name}`}}return this.name??``}pk(e){if(!this.declaration)return!1;let n=e.nodeSettings(this.declaration).getFiltered(t);return!!(n?.[i.PK]?.length||n?.[i.PrimaryKey]?.length)}isUniqueSet(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Unique]?.length:!1}unique(e){return this.declaration?this.isUniqueSet(e)||this.pk(e)||this.increment(e):!1}nullable(e){return this.declaration?!(this.pk(e)||this.increment(e)||this.isInPkIndex(e)||e.nodeSettings(this.declaration).getFiltered(t)?.[i.NotNull]?.length):!0}isInPkIndex(e){if(!this.declaration||!this.name)return!1;let n=this.declaration.parentOfKind(z);if(!n)return!1;let r=e.nodeSymbol(n).getFiltered(t);if(!(r instanceof Pp))return!1;for(let t of r.mergedIndexes(e)){let n=e.interpretMetadata(t,this.filepath).getValue();if(!(!n||!Array.isArray(n))){for(let e of n)if(e.pk&&e.columns.some(e=>e.value===this.name))return!0}}return!1}isNotNullSet(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(n?.[i.NotNull]?.length)return!0;if(n?.[i.Null]?.length)return!1}isIncrementSet(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Increment]?.length:!1}increment(e){return this.isIncrementSet(e)||Ho(this.type(e)?.name??``)}default(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t)?.[i.Default]?.at(0)?.value;if(n)return Ep(n)}type(e){if(!(this.declaration instanceof H))return;let n=Dp(e,this.declaration.args[0]).getValue();if(!n)return;let r=n.args?n.args.split(`,`).map(e=>{let t=Number(e);return Number.isNaN(t)?e:t}):void 0,i=[],a=/\[([^\]]*)\]/g,o,s=n.type_name;for(;(o=a.exec(s))!==null;){let e=o[1];if(e===``)i.push(void 0);else{let t=Number(e);i.push(Number.isNaN(t)?e:t)}}let c=s.replace(/\[[^\]]*\]/g,``),l=e.nodeReferee(this.declaration.args[0]).getFiltered(t);return{name:c,enumSymbol:l instanceof Mp?l:void 0,args:r?.length?r:void 0,schema:n.schemaName??void 0,array:i.length?i:void 0}}checks(e){return this.metadata(e).filter(e=>e.kind===gm.TableChecks)}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=Cp(N(i));if(a)return{value:a,token:F(r)}}},Ip=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`TableGroup`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}fields(e){return this.members(e).filter(e=>e.isKind(`TableGroup field`))}color(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.color?.length?Tp(n.color.at(0)?.value):void 0}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=Cp(N(i));if(a)return{value:a,token:F(r)}}},Lp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`TableGroup field`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Rp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`Note`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},zp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`TablePartial`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Bp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`PartialInjection`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Vp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Hp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView top-level wildcard`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Up=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView table`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Wp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView tablegroup`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Gp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView note`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Kp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView schema`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},qp=class extends Ap{constructor({declaration:e,name:t},n,r){super({kind:`Program`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}inNestedSchema(e,t){let n=this.members(e);if(n.some(e=>e.originalSymbol===t.originalSymbol))return!0;for(let r of n)if(r instanceof jp&&r.inNestedSchema(e,t))return!0;return!1}},Jp=class extends Ap{constructor({kind:e,declaration:t,aliasedSymbol:n,name:r},i,a){super({kind:e,declaration:t,name:r},i,a),this.aliasedSymbol=n}get canBeImported(){return this.aliasedSymbol.canBeImported}get originalSymbol(){return this.aliasedSymbol.originalSymbol}},Yp=class extends Ap{constructor({kind:e,declaration:t,useSpecifierDeclaration:n,usedSymbol:r,name:i},a,o){super({kind:e,declaration:t,name:i},a,o),this.useSpecifierDeclaration=n,this.usedSymbol=r}get canBeImported(){let e=this.useSpecifierDeclaration?.parentOfKind($p);return!e||e.isReuse}get originalSymbol(){return this.usedSymbol?this.usedSymbol.originalSymbol:this}},Xp=class extends Fp{constructor({declaration:e,name:t,injectionDeclaration:n},r,i){super({declaration:e,name:t},r,i),this.injectionDeclaration=n,this.name=t}},Zp=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},L=class{constructor(e,t,n,r){this.id=e,this.kind=t,this.filepath=n;let i=r.find(e=>e!==void 0&&!Number.isNaN(e.start));i?(this.startPos=i.startPos,this.fullStart=i instanceof Ha?qa(i):i.fullStart):(this.startPos={offset:NaN,column:NaN,line:NaN},this.fullStart=NaN);let a=[...r].reverse().find(e=>e!==void 0&&!Number.isNaN(e.end));a?(this.endPos=a.endPos,this.fullEnd=a instanceof Ha?Ka(a):a.fullEnd):(this.endPos={offset:NaN,column:NaN,line:NaN},this.fullEnd=NaN),this.start=this.startPos.offset,this.end=this.endPos.offset}intern(){return`node@${this.filepath.intern()}:${this.id}`}get parent(){let e=this.parentNode;for(;e;){if(e instanceof z||e instanceof R)return e;e=e.parentNode}}parentOfKind(e){let t=this;for(;t;){if(t instanceof e)return t;t=t.parentNode}}strictlyContains(e){if(typeof e==`number`)return this.start<e&&this.end>e;let{start:t,end:n}=e,r=this.start<t,i=r||this.start===t,a=this.end>n,o=a||this.end===n;return r&&o||i&&a}containsEq(e){if(typeof e==`number`)return this.start<=e&&this.end>=e;let{start:t,end:n}=e;return this.start<=t&&this.end>=n}},Qp=function(e){return e.PROGRAM=`<program>`,e.ELEMENT_DECLARATION=`<element-declaration>`,e.USE_DECLARATION=`<use-declaration>`,e.USE_SPECIFIER=`<use-specifier>`,e.USE_SPECIFIER_LIST=`<use-specifier-list>`,e.ATTRIBUTE=`<attribute>`,e.IDENTIFIER_STREAM=`<identifier-stream>`,e.LITERAL=`<literal>`,e.VARIABLE=`<variable>`,e.PREFIX_EXPRESSION=`<prefix-expression>`,e.INFIX_EXPRESSION=`<infix-expression>`,e.POSTFIX_EXPRESSION=`<postfix-expression>`,e.FUNCTION_EXPRESSION=`<function-expression>`,e.FUNCTION_APPLICATION=`<function-application>`,e.BLOCK_EXPRESSION=`<block-expression>`,e.LIST_EXPRESSION=`<list-expression>`,e.TUPLE_EXPRESSION=`<tuple-expression>`,e.CALL_EXPRESSION=`<call-expression>`,e.PRIMARY_EXPRESSION=`<primary-expression>`,e.GROUP_EXPRESSION=`<group-expression>`,e.COMMA_EXPRESSION=`<comma-expression>`,e.EMPTY=`<dummy>`,e.ARRAY=`<array>`,e.WILDCARD=`<wildcard>`,e}({}),R=class extends L{constructor({body:e=[],eof:t,source:n},r,i){super(r,`<program>`,i,[...e,t]),this.source=n,this.body=e,this.eof=t}get declarations(){return this.body.filter(e=>e.kind===`<element-declaration>`)}get uses(){return this.body.filter(e=>e.kind===`<use-declaration>`)}},$p=class extends L{constructor({useKeyword:e,specifiers:t,fromKeyword:n,importPath:r},i,a){super(i,`<use-declaration>`,a,[e,t,n,r]),this.useKeyword=e,this.specifiers=t,this.fromKeyword=n,this.importPath=r}get isReuse(){return Qa(this.useKeyword)}},em=class extends L{constructor({importKind:e,name:t,asKeyword:n,alias:r},i,a){super(i,`<use-specifier>`,a,[e,t,n,r]),this.importKind=e,this.name=t,this.asKeyword=n,this.alias=r}isKind(...e){return this.importKind?.value!==void 0&&e.map(e=>e.toLowerCase()).includes(this.importKind.value.toLowerCase())}getSymbolKind(){let e=this.importKind?.value?.toLowerCase();if(e!==void 0)return Object.values(I).find(t=>t.toLowerCase()===e)}},tm=class extends L{constructor({openBrace:e,specifiers:t=[],closeBrace:n},r,i){super(r,`<use-specifier-list>`,i,[e,...t,n]),this.openBrace=e,this.specifiers=t,this.closeBrace=n}},z=class e extends L{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c,l){if(super(c,`<element-declaration>`,l,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof H||s instanceof e))throw Error(`If an element has a simple body, it must be a function application node`);this.type=t,this.name=n,this.as=r,this.alias=i,this.attributeList=a,this.bodyColon=o,this.body=s}isKind(...e){return e.some(e=>this.type?.value.toLowerCase()===e)}getElementKind(){return Object.values(r).find(e=>this.isKind(e))}},nm=class extends L{constructor({identifiers:e=[]},t,n){super(t,`<identifier-stream>`,n,e||[]),this.identifiers=e}},B=class extends L{constructor({name:e,colon:t,value:n},r,i){super(r,`<attribute>`,i,[e,t,n]),this.name=e,this.value=n,this.colon=t}},V=class extends L{constructor({op:e,expression:t},n,r){super(n,`<prefix-expression>`,r,[e,t]),this.op=e,this.expression=t}},rm=class extends L{constructor({op:e,leftExpression:t,rightExpression:n},r,i){super(r,`<infix-expression>`,i,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},im=class extends L{constructor({op:e,expression:t},n,r){super(n,`<postfix-expression>`,r,[t,e]),this.op=e,this.expression=t}},am=class extends L{constructor({value:e},t,n){super(t,`<function-expression>`,n,[e]),this.value=e}},H=class extends L{constructor({callee:e,args:t=[]},n,r){super(n,`<function-application>`,r,[e,...t]),this.callee=e,this.args=t}},U=class extends L{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r,i){super(r,`<block-expression>`,i,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},W=class extends L{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i,a){super(i,`<list-expression>`,a,[e,...hm(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},om=class extends L{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i,a){super(i,`<tuple-expression>`,a,[e,...hm(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},sm=class extends L{constructor({elementList:e=[],commaList:t=[]},n,r){super(n,`<comma-expression>`,r,[...hm(e,t)]),this.elementList=e,this.commaList=t}},cm=class extends om{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r,i){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r,i),this.kind=`<group-expression>`}},G=class extends L{constructor({callee:e,argumentList:t},n,r){super(n,`<call-expression>`,r,[e,t]),this.callee=e,this.argumentList=t}},lm=class extends L{constructor({literal:e},t,n){super(t,`<literal>`,n,[e]),this.literal=e}},um=class extends L{constructor({token:e},t,n){super(t,`<wildcard>`,n,[e]),this.token=e}},dm=class extends L{constructor({variable:e},t,n){super(t,`<variable>`,n,[e]),this.variable=e}},fm=class extends L{constructor({expression:e},t,n){super(t,`<primary-expression>`,n,[e]),this.expression=e}},pm=class extends L{constructor({prevToken:e},t,n){let r=Ha.create(_.SPACE,n,e.endPos,e.endPos,` `,!1);super(t,`<dummy>`,n,[r])}},mm=class extends L{constructor({expression:e,indexer:t},n,r){super(n,`<array>`,r,[e,t]),this.array=e,this.indexer=t}};function hm(e,t){if(!e||e.length===0)return t||[];if(!t||t.length===0)return e||[];let[n]=e,[r]=t;return(n.start<r.start?xr(Ra(e,t)):xr(Ra(t,e))).filter(e=>e!==null)}var gm=function(e){return e.Ref=`ref`,e.PartialRef=`partial ref`,e.TableChecks=`table checks`,e.Indexes=`indexes`,e.Records=`records`,e.Project=`project`,e}({}),_m=class e{static{this.id=0}constructor(t){this.declaration=t,this.id=++e.id}intern(){return`metadata@${this.declaration.filepath.intern()}:${this.id}`}},vm=class extends _m{constructor(e){super(e),this.kind=`ref`}container(e){let n=this.declaration.parentOfKind(z);if(n?.isKind(r.Table))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(this.declaration instanceof z){let t=$f(this.declaration)[0];if(!(t instanceof H))return[];let n=t.callee;return n instanceof rm?wm(e,n.leftExpression):[]}if(this.declaration instanceof B){let n=this.declaration.parentOfKind(H);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}return[]}rightColumns(e){if(this.declaration instanceof z){let t=$f(this.declaration)[0];if(!(t instanceof H))return[];let n=t.callee;return n instanceof rm?wm(e,n.rightExpression):[]}if(this.declaration instanceof B){let t=this.declaration.value;return t instanceof V?wm(e,t.expression):[]}return[]}leftTable(e){if(this.declaration instanceof z){let t=$f(this.declaration)[0];if(!(t instanceof H))return;let n=t.callee;return n instanceof rm?Tm(e,n.leftExpression):void 0}if(this.declaration instanceof B)return this.container(e)}rightTable(e){if(this.declaration instanceof z){let t=$f(this.declaration)[0];if(!(t instanceof H))return;let n=t.callee;return n instanceof rm?Tm(e,n.rightExpression):void 0}if(this.declaration instanceof B){let t=this.declaration.value;return t instanceof V?Tm(e,t.expression)??this.container(e):void 0}}op(e){return this.opToken()?.value}opToken(){if(this.declaration instanceof z){let e=$f(this.declaration)[0];if(!(e instanceof H))return;let t=e.callee;return t instanceof rm?t.op:void 0}if(this.declaration instanceof B){let e=this.declaration.value;return e instanceof V?e.op:void 0}}cardinalities(e){let t=this.op(e);return t?cf(t):void 0}leftCardinality(e){let t=this.cardinalities(e);return t?tf(t[0]):void 0}rightCardinality(e){let t=this.cardinalities(e);return t?tf(t[1]):void 0}active(e){if(!(this.declaration instanceof z))return!0;let n=$f(this.declaration)[0];return n?!e.nodeSettings(n).getFiltered(t)?.[i.Inactive]?.length:!0}leftToken(){if(this.declaration instanceof z){let e=$f(this.declaration)[0];if(e instanceof H){let t=e.callee;if(t instanceof rm&&t.leftExpression)return t.leftExpression}}if(this.declaration instanceof B){let e=this.declaration.parentOfKind(H);if(e)return e}return this.declaration}rightToken(){if(this.declaration instanceof z){let e=$f(this.declaration)[0];if(e instanceof H){let t=e.callee;if(t instanceof rm&&t.rightExpression)return t.rightExpression}}return this.declaration instanceof B,this.declaration}owners(e){let n=this.leftTable(e),r=this.rightTable(e);if(!n||!r)return[];let i=this.declaration.filepath;return e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>e.reachableFiles(t.filepath).some(e=>e.equals(i))&&t.inNestedSchema(e,n)&&t.inNestedSchema(e,r))}},ym=class extends _m{constructor(e){super(e),this.kind=`partial ref`}container(e){let n=this.declaration.parentOfKind(z);if(n?.isKind(r.TablePartial))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(!(this.declaration instanceof B))return[];let n=this.declaration.parentOfKind(H);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}rightColumns(e){if(!(this.declaration instanceof B))return[];let t=this.declaration.value;return t instanceof V?wm(e,t.expression):[]}leftTablePartial(e){if(this.declaration instanceof B)return this.container(e)}rightTable(e){if(!(this.declaration instanceof B))return;let t=this.declaration.value;if(t instanceof V)return Tm(e,t.expression)??this.container(e)}op(e){return this.opToken()?.value}opToken(){if(!(this.declaration instanceof B))return;let e=this.declaration.value;if(e instanceof V)return e.op}cardinalities(e){let t=this.op(e);return t?cf(t):void 0}leftCardinality(e){let t=this.cardinalities(e);return t?tf(t[0]):void 0}rightCardinality(e){let t=this.cardinalities(e);return t?tf(t[1]):void 0}leftToken(){if(this.declaration instanceof B){let e=this.declaration.parentOfKind(H);if(e)return e}return this.declaration}rightToken(){return this.declaration instanceof B,this.declaration}owners(e){let n=this.leftTablePartial(e),r=this.rightTable(e);return!n||!r?[]:e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>t.inNestedSchema(e,n)&&t.inNestedSchema(e,r))}},bm=class extends _m{constructor(e){super(e),this.kind=`table checks`,this.ownerTable=e.parentNode?.parentOfKind(z)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},xm=class extends _m{constructor(e){super(e),this.kind=`indexes`,this.ownerTable=e.parentNode?.parentOfKind(z)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},Sm=class extends _m{constructor(e){super(e),this.kind=`records`}table(e){let n=this.declaration,i=n.parent;if(i instanceof z&&i.isKind(r.Table))return e.nodeSymbol(i).getFiltered(t);let a=n.name;if(!(a instanceof G))return;let o=ip(a);if(!o)return;let s=o.variables.at(-1);if(s)return e.nodeReferee(s).getFiltered(t)?.originalSymbol}owners(e){let n=this.table(e);return n?e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>t.inNestedSchema(e,n)):[]}},Cm=class extends _m{constructor(e){super(e),this.kind=`project`}owners(e){let n=this.declaration.filepath,r=e.parseFile(n).getValue().ast,i=e.nodeSymbol(r).getFiltered(t);return i?[i]:[]}};function wm(e,n){if(!n)return[];let r=tp(n);return r?(r.tupleElements.length>0?r.tupleElements:r.variables.at(-1)?[r.variables.at(-1)]:[]).flatMap(n=>{let r=e.nodeReferee(n).getFiltered(t);return r?[r]:[]}):[]}function Tm(e,n){if(!n)return;let r=tp(n);if(!r)return;let i=r.tupleElements.length>0?r.variables.at(-1):r.variables.at(-2);if(i)return e.nodeReferee(i).getFiltered(t)}var Em=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return[]}},Dm=class{constructor(e,t){this.compiler=e,this.declarationNode=t}interpret(){let e=this.declarationNode.body;return e instanceof U?new n(e.body.flatMap(e=>{if(!(e instanceof H))return[];let t=F(e),n=e.callee instanceof am?e.callee.value?.value??``:``,r,a=e.args.find(e=>e instanceof W);return a&&(r=N(E(a).getValue()[i.Name]?.at(0)?.value)),{expression:n,name:r,token:t}})):new n([])}},Om={nodeMetadata(t,i){if(A(i,r.Checks)){let t=i.parent;return!t||!A(t,r.Table)&&!A(t,r.TablePartial)?n.create(e):n.create(new bm(i))}return n.create(e)},bindNode(t,i){return A(i,r.Checks)?n.create(void 0,new Em(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===gm.TableChecks?r.declaration instanceof z?new Dm(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function km(e,t,n){let r=t,i=e;if(i instanceof G&&i.argumentList&&(r=[i.argumentList,...r],i=i.callee),!i||!Ff(i)||r.length===0)return;let a=[...r],o=Yf(i),s=a.pop();if(!(s instanceof U))return;let c=h(a)instanceof W?a.pop():void 0;if(a.length===3){let e=Yf(a[1]);return!e||!Ya(e)?void 0:n.create(z,{type:o,name:a[0],as:e,alias:a[2],attributeList:c,body:s})}if(a.length===1)return n.create(z,{type:o,name:a[0],attributeList:c,body:s});if(a.length===0)return n.create(z,{type:o,attributeList:c,body:s})}function K(e){e&&(e instanceof Ha?Am(e):jm(e))}function Am(e){e.kind!==_.EOF&&(e.isInvalid=!0)}function jm(e){if(e instanceof z)K(e.type),K(e.name),K(e.as),K(e.alias),K(e.bodyColon),K(e.attributeList),K(e.body);else if(e instanceof nm)e.identifiers.forEach(K);else if(e instanceof B)K(e.name),K(e.colon),K(e.value);else if(e instanceof V)K(e.op),K(e.expression);else if(e instanceof rm)K(e.leftExpression),K(e.op),K(e.rightExpression);else if(e instanceof im)K(e.op),K(e.expression);else if(e instanceof U)K(e.blockOpenBrace),e.body.forEach(K),K(e.blockCloseBrace);else if(e instanceof W)K(e.listOpenBracket),e.commaList.forEach(K),e.elementList.forEach(K),K(e.listCloseBracket);else if(e instanceof om)K(e.tupleOpenParen),e.commaList.forEach(K),e.elementList.forEach(K),K(e.tupleCloseParen);else if(e instanceof sm)e.commaList.forEach(K),e.elementList.forEach(K);else if(e instanceof G)K(e.callee),K(e.argumentList);else if(e instanceof H)K(e.callee),e.args.forEach(K);else if(e instanceof fm)K(e.expression);else if(e instanceof am)K(e.value);else if(e instanceof dm)K(e.variable);else if(e instanceof lm)K(e.literal);else if(e instanceof cm)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof mm)K(e.array),K(e.indexer);else if(e instanceof R)e.body.forEach(K),K(e.eof);else if(!(e instanceof pm))if(e instanceof $p)K(e.useKeyword),K(e.specifiers),K(e.fromKeyword),K(e.importPath);else if(e instanceof tm)K(e.openBrace),e.specifiers.forEach(K),K(e.closeBrace);else if(e instanceof em)K(e.importKind),K(e.name),K(e.asKeyword),K(e.alias);else if(e instanceof um)K(e.token);else throw Error(`Unreachable case in markInvalidNode`)}function Mm(...e){return e.filter(e=>e!==void 0)}function Nm(e){if(e instanceof R)return Mm(...e.body,e.eof);if(e instanceof z)return Mm(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof B)return Mm(e.name,e.colon,e.value);if(e instanceof nm)return e.identifiers;if(e instanceof lm)return e.literal?[e.literal]:[];if(e instanceof dm)return Mm(e.variable);if(e instanceof V)return Mm(e.op,e.expression);if(e instanceof rm)return Mm(e.leftExpression,e.op,e.rightExpression);if(e instanceof im)return Mm(e.expression,e.op);if(e instanceof am)return Mm(e.value);if(e instanceof H)return Mm(e.callee,...e.args);if(e instanceof U)return Mm(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof W)return Mm(e.listOpenBracket,...Pm(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof om)return Mm(e.tupleOpenParen,...Pm(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof sm)return Mm(...Pm(e.elementList,e.commaList));if(e instanceof G)return Mm(e.callee,e.argumentList);if(e instanceof fm)return Mm(e.expression);if(e instanceof mm)return Mm(e.array,e.indexer);if(e instanceof pm)return[];if(e instanceof $p)return Mm(e.useKeyword,e.specifiers,e.fromKeyword,e.importPath);if(e instanceof tm)return Mm(e.openBrace,...e.specifiers,e.closeBrace);if(e instanceof em)return Mm(e.importKind,e.name,e.asKeyword,e.alias);if(e instanceof um)return Mm(e.token);throw e instanceof cm?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Pm(e,t){let n=[],r=Math.min(e.length,t.length);for(let i=0;i<r;i+=1)n.push(e[i],t[i]);return n.push(...e.slice(r),...t.slice(r)),n}function Fm(e,t){return e.reachableFiles(t.filepath).every(t=>e.bindFile(t).getErrors().length===0)}function Im(e){if(!e)return[];if(O(e))return[{variables:[e],tupleElements:[]}];if(e instanceof rm){let t=tp(e);return t?[t]:[...Im(e.leftExpression),...Im(e.rightExpression)]}if(e instanceof V||e instanceof im)return Im(e.expression);if(e instanceof om){let t=tp(e);return t?[t]:e.elementList.flatMap(Im)}return[]}function Lm(e,n){let r=n.parentNode;if(!r||!k(r)||r.rightExpression!==n)return;let i=r.leftExpression;for(;k(i);)i=i.rightExpression;return e.nodeReferee(i).getFiltered(t)??void 0}var Rm=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof U?this.bindBody(this.declarationNode.body):[]}bindBody(e){let[,t]=g(e.body,e=>e instanceof H);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>!e.type||!(e.body instanceof U)?[]:e.isKind(r.DiagramViewTables)?this.bindTableReferences(e.body):e.isKind(r.DiagramViewNotes)?this.bindNoteReferences(e.body):e.isKind(r.DiagramViewTableGroups)?this.bindTableGroupReferences(e.body):e.isKind(r.DiagramViewSchemas)?this.bindSchemaReferences(e.body):[])}bindTableReferences(e){let[t]=g(e.body,e=>e instanceof H);return t.flatMap(e=>!e.callee||Pf(e.callee)?[]:[e.callee,...e.args].flatMap(Im).flatMap(e=>{let t=e.variables.pop();if(!t)return[];let n=e.variables.pop();return[...n?this.compiler.nodeReferee(n).getErrors():[],...this.compiler.nodeReferee(t).getErrors()]}))}bindNoteReferences(e){let[t]=g(e.body,e=>e instanceof H);return t.flatMap(e=>!e.callee||Pf(e.callee)?[]:Im(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindTableGroupReferences(e){let[t]=g(e.body,e=>e instanceof H);return t.flatMap(e=>!e.callee||Pf(e.callee)?[]:Im(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindSchemaReferences(e){let[t]=g(e.body,e=>e instanceof H);return t.flatMap(e=>!e.callee||Pf(e.callee)?[]:Im(e.callee).flatMap(e=>e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors())))}},zm=class{constructor(e,t,n,r){this.diagramViewWildcards=new Set,this.diagramViewExplicitlySet=new Set,this.compiler=e,this.declarationNode=t,this.symbol=n,this.filepath=r??t.filepath,this.diagramView={visibleEntities:{tables:null,stickyNotes:null,tableGroups:null,schemas:null}}}interpret(){let e=[];this.diagramView.token=this.symbol.token;let{name:t,schema:r}=this.symbol.interpretedName(this.compiler,this.filepath);return this.diagramView.name=t,this.diagramView.schemaName=r,this.declarationNode.body instanceof U&&e.push(...this.interpretBody(this.declarationNode.body)),this.expandDiagramViewWildcards(),new n(this.diagramView,e)}interpretBody(e){if(e.body.length===1){let t=e.body[0];if(t instanceof H&&Pf(t.callee))return this.diagramView.visibleEntities={tables:[],stickyNotes:[],tableGroups:[],schemas:[]},this.diagramViewWildcards=new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`]),this.diagramViewExplicitlySet=new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`]),[]}let[t]=g(e.body,e=>e instanceof z),n=new Set;for(let e of t){let t=e.type?.value.toLowerCase();t&&n.add(t),e.body instanceof U&&this.interpretSubBlock(e.body,t)}let i=this.diagramView.visibleEntities;return(n.has(`tables`)&&i.tables!==null||n.has(`tablegroups`)&&i.tableGroups!==null||n.has(`schemas`)&&i.schemas!==null)&&(n.has(`tables`)||(i.tables=[]),n.has(`tablegroups`)||(i.tableGroups=[]),n.has(`schemas`)||(i.schemas=[])),n.has(r.DiagramViewTables)&&this.diagramViewExplicitlySet.add(`tables`),n.has(r.DiagramViewTableGroups)&&this.diagramViewExplicitlySet.add(`tableGroups`),n.has(r.DiagramViewSchemas)&&this.diagramViewExplicitlySet.add(`schemas`),n.has(r.DiagramViewNotes)&&this.diagramViewExplicitlySet.add(`stickyNotes`),[]}interpretSubBlock(e,n){if(!n)return;if(e.body.some(e=>e instanceof H&&Pf(e.callee))){let e=this.diagramViewWildcards;switch(n){case r.DiagramViewTables:this.diagramView.visibleEntities.tables=[],e.add(`tables`);break;case r.DiagramViewNotes:this.diagramView.visibleEntities.stickyNotes=[],e.add(`stickyNotes`);break;case r.DiagramViewTableGroups:this.diagramView.visibleEntities.tableGroups=[],e.add(`tableGroups`);break;case r.DiagramViewSchemas:this.diagramView.visibleEntities.schemas=[],e.add(`schemas`);break}return}if(e.body.length===0)return;let i=[];for(let n of e.body){if(!(n instanceof H))continue;let e=n.callee&&qf(n.callee),r=e&&this.compiler.nodeReferee(e).getFiltered(t);if(r?.declaration instanceof z){let e=M(r.declaration.name)??[];if(e.length>0){let t=e[e.length-1],n=e.length>1?e.slice(0,-1).join(`.`):v;i.push({name:t,schemaName:n});continue}}let a=M(n.callee)??[];if(a.length===0)continue;let o=a[a.length-1],s=a.length>1?a[0]:v;i.push({name:o,schemaName:s})}switch(n){case r.DiagramViewTables:this.diagramView.visibleEntities.tables=i.length>0?i:null;break;case r.DiagramViewNotes:this.diagramView.visibleEntities.stickyNotes=i.length>0?i.map(e=>({name:e.name})):null;break;case r.DiagramViewTableGroups:this.diagramView.visibleEntities.tableGroups=i.length>0?i.map(e=>({name:e.name})):null;break;case r.DiagramViewSchemas:this.diagramView.visibleEntities.schemas=i.length>0?i.map(e=>({name:e.name})):null;break}}expandDiagramViewWildcards(){let e=this.diagramView.visibleEntities,t=this.diagramViewWildcards;if(!(!t||!e)){if(t.has(`tables`)||t.has(`schemas`)){e.tables=[],e.tableGroups=[],e.schemas=[];return}t.has(`tableGroups`)&&e.tableGroups&&e.tableGroups.length===0&&(e.tableGroups=this.getAllTableGroupNames())}}getAllTableGroupNames(){let e=this.compiler.parseFile(this.declarationNode.filepath).getValue().ast,n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n)return[];let r=this.compiler.symbolMembers(n).getFiltered(t);return r?Fa(r.filter(e=>e.isKind(I.TableGroup)),e=>e.originalSymbol.intern()).flatMap(e=>e.name===void 0?[]:{name:e.name}):[]}};function Bm(e){return e==null?e:Array.isArray(e)?e.map(String).join(`\0`):typeof e==`object`&&`intern`in e?e.intern():e}var Vm=function(e){return e.Table=`table`,e}({}),Hm={getDuplicateError(e,t,n){return new T(w.DUPLICATE_NAME,`DiagramView '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t,n){return new T(w.DUPLICATE_DIAGRAMVIEW_FIELD,`Duplicate ${t} ${e}`,n)}},Um={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return A(a,r.DiagramView)?new n(i.symbolFactory.create(Vp,{declaration:a,name:o},a.filepath)):j(a,r.DiagramView)&&a instanceof um?new n(i.symbolFactory.create(Hp,{declaration:a,name:o},a.filepath)):j(a,r.DiagramViewNotes)?new n(i.symbolFactory.create(Gp,{declaration:a,name:o},a.filepath)):j(a,r.DiagramViewTables)?new n(i.symbolFactory.create(Up,{declaration:a,name:o},a.filepath)):j(a,r.DiagramViewTableGroups)?new n(i.symbolFactory.create(Wp,{declaration:a,name:o},a.filepath)):j(a,r.DiagramViewSchemas)?new n(i.symbolFactory.create(Kp,{declaration:a,name:o},a.filepath)):n.create(e)},nodeReferee(i,a){if(a.parent&&Hf(a))return n.create(e);let o=Wm(a);if(!o)return n.create(e);let s=i.parseFile(a.filepath).getValue().ast,c=i.nodeSymbol(s).getFiltered(t);return c?o.isKind(r.DiagramViewTables)?Gm(i,c,a):o.isKind(r.DiagramViewNotes)?Km(i,c,a,I.StickyNote):o.isKind(r.DiagramViewTableGroups)?Km(i,c,a,I.TableGroup):o.isKind(r.DiagramViewSchemas)?qm(i,c,a):n.create(e):n.create(void 0)},symbolMembers(i,a){if(!a.isKind(I.DiagramView))return n.create(e);if(!a.declaration)return n.create([]);let o=a.declaration;if(!A(o,r.DiagramView))return n.create([]);let s=[],c=[];for(let e of $f(o))if(e instanceof H){let n=i.nodeSymbol(e).getFiltered(t);n&&c.push(n)}else e instanceof z&&c.push(...$f(e).flatMap(e=>i.nodeSymbol(e).getFiltered(t)??[]));let l=new Map;for(let e of c){if(!e.isKind(I.DiagramViewSchema,I.DiagramViewTableGroup,I.DiagramViewTable,I.DiagramViewNote)||!e.declaration)continue;let n=(i.nodeFullname(e.declaration).getFiltered(t)||[]).map(kg).join(`.`),r=`${e.kind}:${n}`;if(n!==void 0){let t=e.declaration,i=l.get(r);i?(s.push(Hm.getFieldDuplicateError(n,e.kind,i)),s.push(Hm.getFieldDuplicateError(n,e.kind,t))):l.set(r,t)}}return n.create(c,s)},bindNode(i,a){if(!A(a,r.DiagramView))return n.create(e);let o=new Rm(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Vp?r.declaration instanceof z?new zm(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function Wm(e){let t=e.parentOfKind(H);if(!t)return;let n=t.parentNode;if(!(n instanceof U))return;let i=n.parentNode;if(!(i instanceof z)||!i.isKind(r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewTableGroups,r.DiagramViewSchemas))return;let a=i.parentNode;if(!(a instanceof U))return;let o=a.parentNode;if(!(!(o instanceof z)||!o.isKind(r.DiagramView)))return i}function Gm(e,r,i){let a=ap(i);if(a===void 0)return n.create(void 0);if(k(i.parentNode)){let t=Lm(e,i);if(t){if(t.isKind(I.Schema)){let r=Jf(i),o=e.lookupMembers(t,r?I.Table:I.Schema,a);return o?n.create(o):new n(void 0,[new T(w.BINDING_ERROR,`Could not find ${r?`table`:`schema`} '${a}'`,i)])}return new n(void 0)}let o=e.lookupMembers(r,I.Schema,a);return o?n.create(o):new n(void 0,[new T(w.BINDING_ERROR,`Could not find schema '${a}'`,i)])}let o=e.symbolMembers(r).getFiltered(t)||[];for(let e of o){let t=e.name;if(e.isKind(I.Table)&&a===t)return n.create(e)}let s=e.lookupMembers(r,I.Table,a);return s?n.create(s):new n(void 0,[new T(w.BINDING_ERROR,`Could not find table '${a}'`,i)])}function Km(e,t,r,i){let a=ap(r);if(a===void 0)return n.create(void 0);let o=e.lookupMembers(t,i,a);return o?n.create(o):new n(void 0,[new T(w.BINDING_ERROR,`Could not find ${i===I.StickyNote?`note`:`tablegroup`} '${a}'`,r)])}function qm(e,t,r){let i=ap(r);if(i===void 0)return n.create(void 0);let a=e.lookupMembers(t,I.Schema,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Could not find schema '${i}'`,r)])}var Jm=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof U?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof H)return[];let t=e.body.filter(e=>e instanceof z);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Ym=class{constructor(e,t,n){this.compiler=e,this.declarationNode=t.declaration,this.symbol=t,this.filepath=n,this.enum={values:[]}}interpret(){this.enum.token=F(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody(this.declarationNode.body)];return n.create(this.enum,e)}interpretName(){let{name:e,schema:t}=this.symbol.interpretedName(this.compiler,this.filepath);return this.enum.name=e,this.enum.schemaName=t,[]}interpretBody(e){return e.body.flatMap(e=>{let t=e,n={};n.token=F(t),n.name=P(t.callee);let r=E(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:Cp(N(r.value)),token:F(r)},this.enum.values.push(n),[]})}},Xm={getDuplicateError(e,t,n){return new T(w.DUPLICATE_NAME,`Enum '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new T(w.DUPLICATE_COLUMN_NAME,`Duplicate enum field '${e}'`,t)}},Zm={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return A(a,r.Enum)?new n(i.symbolFactory.create(Mp,{declaration:a,name:o},a.filepath)):j(a,r.Enum)?new n(i.symbolFactory.create(Np,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(I.Enum))return n.create(e);let a=i.declaration;if(!(a instanceof z))return new n([]);let o=$f(a),s=[],c=[];for(let e of o){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(s.push(i),c.push(...n.getErrors()))}let l=new Map;for(let e of s){if(!e.isKind(I.EnumField)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration,r=l.get(t);r?(c.push(Xm.getFieldDuplicateError(t,r)),c.push(Xm.getFieldDuplicateError(t,n))):l.set(t,n)}}return new n(s,c)},bindNode(i,a){if(!A(a,r.Enum))return n.create(e);let o=new Jm(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Mp?new Ym(t,r,i).interpret():n.create(e)}},Qm=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof z)||!this.declarationNode.parent.isKind(r.Table)&&!this.declarationNode.parent.isKind(r.TablePartial)||!(this.declarationNode.body instanceof U)?[]:this.bindBody(this.declarationNode.body)}get ownerContainerKind(){return this.declarationNode.parent.isKind(r.TablePartial)?`TablePartial`:`Table`}bindBody(e){if(!e)return[];if(e instanceof H)return this.bindFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let n=M(this.declarationNode.parent.name)?.join(`.`)??`<unnamed>`;return[e.callee,...e.args].flatMap(Im).flatMap(e=>e.variables.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=ap(e);if(r===void 0)return[];let i=this.compiler.nodeReferee(e);return!i.getValue()||i.hasValue(t)?new T(w.BINDING_ERROR,`No column named '${r}' inside ${this.ownerContainerKind} '${n}'`,e):[]})})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},$m=class{constructor(e,t){this.compiler=e,this.node=t}interpret(){let e=this.node.body;return e instanceof U?new n(e.body.flatMap(e=>{if(!(e instanceof H)||!e.callee)return[];let n=[],r=F(e),a=[e.callee,...e.args],o,s,c,l,u;h(a)instanceof W&&a.pop();let d=this.compiler.nodeSettings(e).getFiltered(t);if(d){o=!!d[i.PK]?.length||void 0,s=!!d[i.Unique]?.length||void 0,c=N(d[i.Name]?.at(0)?.value);let e=d[i.Note]?.at(0);if(e){let t=N(e.value);t!==void 0&&(l={value:t,token:F(e)})}u=P(d[i.Type]?.at(0)?.value)}let f=a.flatMap(e=>{if(!(e instanceof G))return e;let t=[],n=e;for(;n instanceof G&&(n.argumentList&&t.push(n.argumentList),n.callee);)n=n.callee;return t.push(n),t});for(let e of f){let t=np(e);if(t){for(let e of t.functional)n.push({value:e.value?.value??``,type:`expression`,token:F(e)});for(let e of t.nonFunctional)n.push({value:ap(e)??``,type:`column`,token:F(e)})}}return[{columns:n,pk:o,unique:s,name:c,note:l,type:u,token:r}]})):new n([])}},eh={nodeMetadata(t,i){if(!A(i,r.Indexes))return n.create(e);let a=i.parent;return!a||!A(a,r.Table)&&!A(a,r.TablePartial)?n.create(e):n.create(new xm(i))},nodeReferee(i,a){if(!O(a)||Hf(a))return n.create(e);let o=a;for(;o&&!A(o,r.Indexes);)o=o.parent;if(!o)return n.create(e);let s=o.parent;if(!s||!A(s,r.Table)&&!A(s,r.TablePartial))return n.create(e);let c=i.nodeSymbol(s).getFiltered(t);if(!c)return new n(void 0);let l=O(a)?a.expression.variable?.value??``:``,u=i.lookupMembers(c,I.Column,l);if(u)return n.create(u);let d=A(s,r.TablePartial)?`TablePartial`:`Table`;return new n(void 0,[new T(w.BINDING_ERROR,`Column '${l}' does not exist in ${d} 'public.${c.name}'`,a)])},bindNode(t,i){return A(i,r.Indexes)?n.create(void 0,new Qm(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===gm.Indexes?r.declaration instanceof z?new $m(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function th(e,n){let r=ep(n);if(!r||r.length===0)return;let i=r[r.length-1];if(i instanceof om){let n=[];for(let r of i.elementList){let i=e.nodeReferee(r).getFiltered(t);if(!i)return;n.push(i.originalSymbol)}return n}let a=r[r.length-1];if(!a||a instanceof om)return;let o=e.nodeReferee(a).getFiltered(t);if(o)return[o.originalSymbol]}function nh(e,t,n,r){let i=e.map(e=>e.intern()).sort().join(`,`),a=t.map(e=>e.intern()).sort().join(`,`);if(i===a)return[new T(w.SAME_ENDPOINT,`Two endpoints are the same`,n)];let o=i<a?`${i}-${a}`:`${a}-${i}`,s=r.get(o);return s?[new T(w.CIRCULAR_REF,`References with same endpoints exist`,n),new T(w.CIRCULAR_REF,`References with same endpoints exist`,s)]:(r.set(o,n),[])}var rh=class{constructor(e,t){this.compiler=t,this.ast=e}resolve(){let e=[],i=this.compiler.reachableFiles(this.ast.filepath);for(let n of i){let{ast:i}=this.compiler.parseFile(n).getFiltered(t)||{ast:void 0};if(!i)continue;let a=i.body.filter(e=>e instanceof z&&e.isKind(r.Project));a.length>1&&a.forEach(t=>e.push(new T(w.PROJECT_REDEFINED,`Only one project can exist`,t)));for(let t of i.body)if(t instanceof z&&t.type){let n=t;e.push(...this.compiler.bindNode(n).getErrors())}else e.push(...this.compiler.bindNode(t).getErrors())}let a=this.compiler.nodeSymbol(this.ast).getFiltered(t);return a&&e.push(...ih(this.compiler,a)),e.push(...this.checkDuplicateRefs()),e.push(...this.checkTableGroups()),new n(void 0,e)}checkDuplicateRefs(){let e=[],n=new Map,i=this.compiler.reachableFiles(this.ast.filepath);for(let a of i){let i=this.compiler.parseFile(a).getFiltered(t);if(!i)continue;let{ast:o}=i;for(let t of o.body){if(!(t instanceof z)||!t.type)continue;let i=t;A(i,r.Ref)&&e.push(...this.checkStandaloneRefs(i,n)),A(i,r.Table)&&e.push(...this.checkInlineRefs(i,n)),A(i,r.TablePartial)&&e.push(...this.checkTablePartialSelfRefs(i))}}return e}checkStandaloneRefs(e,t){let n=[];for(let r of $f(e)){if(!(r instanceof H)||!r.callee||!Wf(r.callee))continue;let i=r.callee;if(!i.leftExpression||!i.rightExpression)continue;let a=th(this.compiler,i.leftExpression),o=th(this.compiler,i.rightExpression);!a||!o||n.push(...nh(a,o,e,t))}return n}checkInlineRefs(e,n){let r=[];for(let a of $f(e)){if(!(a instanceof H)||!a.callee)continue;let e=this.compiler.nodeSymbol(a).getFiltered(t);if(!e)continue;let o=this.compiler.nodeSettings(a).getFiltered(t);if(!o)continue;let s=o[i.Ref];if(!(!s||s.length===0))for(let t of s){let i=t.value;if(!(i instanceof V)||!i.op||!Df(i.op.value)||!i.expression)continue;let a=th(this.compiler,i.expression);if(!a)continue;let o=[e.originalSymbol];r.push(...nh(o,a,t,n))}}return r}checkTablePartialSelfRefs(e){let n=[];for(let r of $f(e)){if(!(r instanceof H)||!r.callee)continue;let e=P(r.callee);if(!e)continue;let a=this.compiler.nodeSettings(r).getFiltered(t);if(!a)continue;let o=a[i.Ref];if(!(!o||o.length===0))for(let t of o){let r=t.value;r instanceof V&&(!r.op||!Df(r.op.value)||r.expression&&O(r.expression)&&r.expression.expression.variable?.value===e&&n.push(new T(w.SAME_ENDPOINT,`Two endpoints are the same`,t)))}}return n}checkTableGroups(){let e=[],n=new Map,i=this.compiler.reachableFiles(this.ast.filepath);for(let a of i){let i=this.compiler.parseFile(a).getFiltered(t);if(!i)continue;let{ast:o}=i;for(let i of o.body){if(!(i instanceof z)||!i.type)continue;let a=i;if(!A(a,r.TableGroup))continue;let o=a.name?M(a.name):void 0,s=o?o.join(`.`):`<unknown>`,c=$f(a);for(let r of c){if(!(r instanceof H)||!r.callee)continue;let i=ep(r.callee);if(!i||i.length===0)continue;let a=i[i.length-1],o=this.compiler.nodeReferee(a).getFiltered(t)?.originalSymbol;if(!o)continue;let c=n.get(o.id);if(c){let t=M(r.callee),n=t?t.join(`.`):`<unknown>`;e.push(new T(w.TABLE_REAPPEAR_IN_TABLEGROUP,`Table "${n}" already appears in group "${c.groupName}"`,r))}else n.set(o.id,{groupName:s,node:r})}}}return e}};function ih(e,n,r=new Set){if(r.has(n.id))return[];r.add(n.id);let i=e.symbolMembers(n),a=[...i.getErrors()],o=i.getFiltered(t);if(!o)return a;for(let t of o)t instanceof jp&&a.push(...ih(e,t,r));return a}function ah(e,t,n){t.isKind(I.Table)?e.externals.tables.push(n):t.isKind(I.Enum)?e.externals.enums.push(n):t.isKind(I.TableGroup)?e.externals.tableGroups.push(n):t.isKind(I.TablePartial)?e.externals.tablePartials.push(n):t.isKind(I.StickyNote)&&e.externals.notes.push(n)}function oh(e){return e.values.map(t=>{let n={};return e.columns.forEach((e,r)=>{n[e]=t[r]}),n})}function sh(e,t){return e?`${e}.${t}`:`${v}.${t}`}function ch(e,t,n){return n.map(n=>{let r=t[n.name??``]?.value;if(r==null){let t=n.default(e);if(t)return JSON.stringify(t.value)}return JSON.stringify(r)}).join(`|`)}function lh(e,t,n){return n.some(n=>{let r=t[n.name??``]?.value;return r==null&&n.default(e)?!1:r==null})}function uh(e,t,n){return e?`${e}.${t}.${n}`:`${t}.${n}`}function dh(e,t,n){return n.length===1?uh(e,t,n[0]):`(${n.map(n=>uh(e,t,n)).join(`, `)})`}function fh(e,t,n){let r=n.map(n=>{let r=n.name??``,i=t[r]===void 0?n.default(e)?.value:t[r].value;return JSON.stringify(i)}).join(`, `);return n.length===1?r:`(${r})`}function ph(e,t){let n=t.filter(t=>e[t]).map(t=>e[t]);return n.length>0?n:Object.values(e).filter(Boolean)}function mh(e,t,n){let{token:r}=t,i=e.nodeAtPosition(r.filepath,r.start.offset)??e.parse.ast(r.filepath);return new gf(w.INVALID_RECORDS_FIELD,n,i)}var hh=e=>e>1?`Composite PK`:`PK`;function gh(e,t,n,r){return ka(r.values)?[]:Sa(xh(t,e),i=>_h(e,t,n,i,r))}function _h(e,t,n,r,i){let a=oh(i),o=bh(e,t,n,r,i);if(!ka(o))return o;let s=r.filter(t=>!t.increment(e)&&!t.default(e)),[c,l]=g(a,t=>lh(e,t,s)),u=vh(e,t,s.map(e=>e.name??``),c),d=r.some(t=>t.increment(e))?[]:yh(e,t,r,l);return[...u,...d]}function vh(e,t,n,r){if(ka(r))return[];let i=t.schema(e),a=t.name??``,o=`NULL in ${hh(n.length)}: ${dh(i,a,n)} cannot be NULL`;return Sa(r,t=>ph(t,n).map(t=>mh(e,t,o)))}function yh(e,t,n,r){let i=n.map(e=>e.name??``),a=t.schema(e),o=t.name??``;return Sa(ha(Ta(r,t=>ch(e,t,n)),e=>e.length>1),t=>{let r=hh(i.length),s=dh(a,o,i);return Sa(t,t=>{let a=`Duplicate ${r}: ${s} = ${fh(e,t,n)}`;return ph(t,i).map(t=>mh(e,t,a))})})}function bh(e,t,n,r,i){let a=r.map(e=>e.name??``),o=new Set(i.columns),s=t.schema(e),c=t.name??``,l=fa(a,Array.from(o));if(ka(l))return[];let u=new Set(l),d=r.filter(e=>u.has(e.name??``)).filter(t=>!t.increment(e)&&!t.default(e)).map(e=>e.name??``);if(ka(d))return[];let f=`${hh(d.length)}: Column ${dh(s,c,d)} is missing from record and has no default value`;return i.values.map(()=>new gf(w.INVALID_RECORDS_FIELD,f,n))}function xh(e,t){let n=e.mergedColumns(t),r=Aa(n,e=>e.name??``);return[...n.filter(e=>e.pk(t)).map(e=>[e]),...e.mergedIndexes(t).flatMap(e=>{let n=t.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(n)?n.filter(e=>e.pk).map(e=>$r(e.columns.map(e=>r[e.value]))):[]})]}function Sh(e,t,n){if(ka(n.values))return[];let r=oh(n);return Sa(Ch(e,t),n=>wh(e,t,n,r))}function Ch(e,t){let n=t.mergedColumns(e),r=Aa(n,e=>e.name??``);return[...n.filter(t=>t.isUniqueSet(e)).map(e=>[e]),...t.mergedIndexes(e).flatMap(t=>{let n=e.interpretMetadata(t,t.declaration.filepath).getValue();return Array.isArray(n)?n.filter(e=>e.unique).map(e=>$r(e.columns.map(e=>r[e.value]))):[]})]}function wh(e,t,n,r){let i=n.map(e=>e.name??``);return Sa(ha(Ta(r.filter(t=>!lh(e,t,n)),t=>ch(e,t,n)),e=>e.length>1),r=>{let a=n.length>1?`Composite UNIQUE`:`UNIQUE`,o=dh(t.schema(e),t.name??``,i);return Sa(r,t=>{let r=`Duplicate ${a}: ${o} = ${fh(e,t,n)}`;return ph(t,i).map(t=>mh(e,t,r))})})}function Th(e,t,n){let r=new Map;for(let i of e.values()){let{name:e,schema:a}=i.tableSymbol.interpretedName(t,n);r.set(sh(a,e),i)}return r}function Eh(e,t,n,r){let i=Th(n,e,r),a=new Set;for(let[e,t]of i)t.record&&!ka(t.record.values)&&a.add(e);return Sa(t.filter(e=>e.endpoints?e.endpoints.some(e=>a.has(sh(e.schemaName,e.tableName))):!1),t=>Dh(e,t,i,r))}function Dh(e,t,n,r){if(!t.endpoints)return[];let[i,a]=t.endpoints,o=n.get(sh(i.schemaName,i.tableName)),s=n.get(sh(a.schemaName,a.tableName));if(!o||!s)return[];let c=o.tableSymbol.mergedColumns(e).filter(e=>typeof e.name==`string`&&i.fieldNames.includes(e.name)),l=s.tableSymbol.mergedColumns(e).filter(e=>typeof e.name==`string`&&a.fieldNames.includes(e.name)),{min:u,max:d}=tf(i.relation),{min:f,max:p}=tf(a.relation),m=(d===1||d!==`*`&&p!==`*`)&&f===0,ee=p===1&&u===0;return[...m?[]:Oh(e,o,c,s,l,a.relation,r),...ee?[]:Oh(e,s,l,o,c,i.relation,r)]}function Oh(e,t,n,r,i,a,o){if(!t.record||ka(t.record.values))return[];let{min:s}=tf(a),c=$r(n.map(e=>e.name)),l=$r(i.map(e=>e.name)),u=s===0,d=oh(t.record),f=r.record?oh(r.record):[],p=new Set(f.map(t=>ch(e,t,i))),m=t.tableSymbol.interpretedName(e,o),ee=r.tableSymbol.interpretedName(e,o);return Sa(d,t=>{if(lh(e,t,n)){if(u)return[];let r=`FK violation: ${dh(m.schema,m.name,c)} = ${fh(e,t,n)} must not be null`;return ph(t,c).map(t=>mh(e,t,r))}let r=ch(e,t,n);if(p.has(r))return[];let i=dh(m.schema,m.name,c),a=dh(ee.schema,ee.name,l),o=`FK violation: ${i} = ${fh(e,t,n)} does not exist in ${a}`;return ph(t,c).map(t=>mh(e,t,o))})}function kh(e,t){if(e instanceof H){let n=e.args.find(e=>e instanceof W);if(n){let e=n.end-1;return{start:e,end:e,newText:`, ${t}`}}}return{start:e.end,end:e.end,newText:` [${t}]`}}function Ah(e,t,n){let r=jh(n,e,t);if(!r)return;let{settingsList:i,settingIndex:a}=r,o=i.elementList??[];if(o.length===1){let e=i.start;for(;e>0&&n[e-1]===` `;)e--;return{start:e,end:i.end,newText:``}}let s=o[a];if(a===0){let e=o[a+1];return{start:s.start,end:e.start,newText:``}}return{start:o[a-1].end,end:s.end,newText:``}}function jh(e,t,n){if(!(t instanceof H)&&!(t instanceof z))return;let r=t instanceof H?t.args.find(e=>e instanceof W):t.attributeList;if(!r)return;let i=r.elementList??[],a=i.findIndex(t=>{if(!(t instanceof B))return!1;let r=e.substring(t.start,t.end).trim();return r===n||r.startsWith(`${n}:`)});if(a!==-1)return{settingsList:r,settingNode:i[a],settingIndex:a}}function Mh(e,t,n,r){let{allowOtherColFix:i=!0,allowOwnColFix:a=!0}=r??{},o=t.op(e),s=t.opToken(),c=t.cardinalities(e);if(!o||!s||!c)return[];let l=n===`left`?c[0]:c[1],u=tf(l),d=n===`left`?c[1]:c[0],f=tf(d),p=n===`left`?t.leftColumns(e):t.rightColumns(e),m=n===`left`?t.rightColumns(e):t.leftColumns(e),ee=n===`left`?t.leftToken():t.rightToken(),te=n===`left`?t.rightToken():t.leftToken(),ne=[],re=f.max===`*`||u.max===1&&f.max===1&&n===`left`;if(u.min>=1&&re&&m.length>0&&m.every(t=>t.nullable(e))){let t=m.map(t=>t.qualifiedName(e)).join(`, `),r=m.length===1?`Column '${t}' is nullable but operator '${o}' requires it to be NOT NULL`:`Columns (${t}) are all nullable but operator '${o}' requires at least one to be NOT NULL`,a=[s&&Ph(s,pf(l),d,n,`Make '${t}' optional in the ref`),...i?m.map(t=>Fh(t,e)).filter(e=>!!e):[]].filter(e=>!!e);ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,te,{quickFixes:a}));for(let e of m)e.declaration&&ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:a}))}if(u.min===0&&re&&m.length>0&&m.every(t=>t.nullable(e)===!1)){let t=m.map(t=>t.qualifiedName(e)).join(`, `),r=m.length===1?`Column '${t}' is NOT NULL but operator '${o}' allows it to be optional`:`Columns (${t}) are NOT NULL but operator '${o}' allows them to be optional`,a=[s&&Ph(s,mf(l),d,n,`Make '${t}' required in the ref`),...i?m.map(t=>Ih(t,e)).filter(e=>!!e):[]].filter(e=>!!e);ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,te,{quickFixes:a}));for(let e of m)e.declaration&&ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:a}))}if(u.max===`*`&&Lh(e,p)){let t=p.map(t=>t.qualifiedName(e)).join(`, `),r=p.length===1?`Column '${t}' is unique but operator '${o}' allows many`:`Columns (${t}) have a unique index but operator '${o}' allows many`,i=[s&&Ph(s,`1`,d,n,`Make '${t}' one in the ref`)].filter(e=>!!e);ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,ee,{quickFixes:i}));for(let e of p)e.declaration&&ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:i}))}if(u.max===1&&!Lh(e,p)){let t=p.map(t=>t.qualifiedName(e)).join(`, `),r=p.length===1?`Column '${t}' should be unique or primary key for operator '${o}'`:`Columns (${t}) should have a composite unique index for operator '${o}'`,i=[s&&Ph(s,hf(l),d,n,`Make '${t}' many in the ref`),a&&p.length===1&&Rh(p[0],e)].filter(e=>!!e);ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,ee,{quickFixes:i}));for(let e of p)e.declaration&&ne.push(new _f(w.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:i}))}return ne}function Nh(e,t){return[...Mh(e,t,`right`,{allowOtherColFix:!1}),...Mh(e,t,`left`,{allowOwnColFix:!1})]}function Ph(e,t,n,r,i){let a=ff(r===`left`?t:n,r===`right`?t:n);return{title:`${i} (change operator to '${a}')`,filepath:e.filepath,edits:[{start:e.start,end:e.end,newText:a}]}}function Fh(e,t){if(!e.declaration||e.pk(t)||e.increment(t)||e.isNotNullSet(t))return;let n=t.getSource(e.declaration.filepath);if(!n)return;let r=e.qualifiedName(t),i=Ah(e.declaration,`null`,n);if(i)return{title:`Mark '${r}' as NOT NULL`,filepath:e.declaration.filepath,edits:[i]};let a=kh(e.declaration,`not null`);if(a)return{title:`Mark '${r}' as NOT NULL`,filepath:e.declaration.filepath,edits:[a]}}function Ih(e,t){if(!e.declaration)return;let n=t.getSource(e.declaration.filepath);if(!n)return;let r=Ah(e.declaration,`not null`,n);if(r)return{title:`Mark '${e.qualifiedName(t)}' as NULL`,filepath:e.declaration.filepath,edits:[r]}}function Lh(e,n){if(n.length===0)return!1;if(n.length===1)return n[0].unique(e);let r=n[0].declaration?.parentOfKind(z);if(!r)return!1;let i=e.nodeSymbol(r).getFiltered(t);if(!i)return!1;let a=i.mergedIndexes(e),o=new Set(n.map(e=>e.name));for(let t of a){let r=e.interpretMetadata(t,n[0].filepath).getValue();if(!(!r||!Array.isArray(r))){for(let e of r)if(!(!e.unique&&!e.pk)&&e.columns.length===o.size&&e.columns.every(e=>o.has(e.value)))return!0}}return!1}function Rh(e,t){if(!e.declaration||e.isUniqueSet(t)||e.pk(t))return;let n=kh(e.declaration,`unique`);if(n)return{title:`Mark '${e.qualifiedName(t)}' as UNIQUE`,filepath:e.declaration.filepath,edits:[n]}}var zh=class{constructor(e,t,n){this.errors=[],this.warnings=[],this.infos=[],this.compiler=e,this.programSymbol=t,this.programNode=t.declaration,this.filepath=n,this.db={schemas:[],tables:[],notes:[],refs:[],enums:[],tableGroups:[],aliases:[],tablePartials:[],records:[],diagramViews:[],token:F(this.programNode),externals:{tables:[],enums:[],tableGroups:[],tablePartials:[],notes:[]}}}interpret(){return this.interpretAllSymbols(),this.interpretAllMetadata(),this.interpretAllAliases(),this.validatePartialRefs(),this.warnings.push(...this.validateRecords()),new n(this.db,this.errors,this.warnings,this.infos)}interpretAllSymbols(){for(let e of this.programSymbol.declaration.declarations){let n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n||n instanceof Yp)continue;let r=this.compiler.interpretSymbol(n,this.filepath);if(r.hasValue(t))continue;this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings()),this.infos.push(...r.getInfos());let i=r.getValue();i&&this.pushElement(n,i)}let e=new Set,n=(this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[]).filter(e=>e instanceof jp);for(;n.length>0;){let r=n.shift(),i=this.compiler.symbolMembers(r).getFiltered(t)??[];for(let t of i){if(t instanceof jp){n.push(t);continue}if(!(t instanceof Yp))continue;let r=t.originalSymbol.intern();e.has(r)||(e.add(r),this.interpretUseSymbol(t))}}}interpretUseSymbol(e){let n=e.originalSymbol,r=this.compiler.interpretSymbol(n,this.filepath);if(!r.hasValue(t)){this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings()),this.infos.push(...r.getInfos());let t=r.getValue();t&&this.pushElement(e,t)}let i=n instanceof Pp?n.interpretedName(this.compiler,n.filepath):{name:n.name??``,schema:null},a=n instanceof Pp?n.interpretedName(this.compiler,this.filepath):{name:e.name??n.name??``,schema:null},o={name:i.name,schemaName:i.schema,filepath:n.filepath,visibleNames:[{schemaName:a.schema,name:a.name}]};ah(this.db,e,o)}interpretAllMetadata(){let e=this.compiler.symbolMetadata(this.programSymbol)??[],n=new Set,r=new Map;for(let t of e){if(!(t instanceof Sm))continue;let e=t.table(this.compiler);if(!e)continue;let n=e.originalSymbol.intern(),i=r.get(n);i?i.count++:r.set(n,{count:1,tableName:e.name??``})}for(let i of e){let e=this.compiler.interpretMetadata(i,this.filepath);if(e.hasValue(t))continue;this.errors.push(...e.getErrors()),this.warnings.push(...e.getWarnings()),this.infos.push(...e.getInfos());let a=e.getValue();if(a!==void 0)switch(i.kind){case gm.Ref:{let e=a,[t,r]=e.endpoints??[];if(t&&r){let e=[t.schemaName,t.tableName,t.fieldNames.join(`,`),r.schemaName,r.tableName,r.fieldNames.join(`,`)].join(`|`),a=[r.schemaName,r.tableName,r.fieldNames.join(`,`),t.schemaName,t.tableName,t.fieldNames.join(`,`)].join(`|`);if(n.has(e)||n.has(a)){this.errors.push(new T(w.SAME_ENDPOINT,`Ref with same endpoints already exists`,i.declaration));break}n.add(e)}this.db.refs.push(e);break}case gm.Records:if(i instanceof Sm){let e=i.table(this.compiler)?.originalSymbol.intern()??``,t=e?r.get(e):void 0;if(t&&t.count>1){this.errors.push(new T(w.DUPLICATE_RECORDS_FOR_TABLE,`Duplicate Records blocks for the same Table '${t.tableName}' - A Table can only have one Records block`,i.declaration));break}}this.db.records.push(a);break;case gm.Project:this.db.project=a;break;default:break}}}interpretAllAliases(){let e=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let t of e){if(!(t instanceof Jp)||!t.isKind(I.Table))continue;let{name:e,schema:n}=t.originalSymbol.interpretedName(this.compiler,this.filepath),r={name:t.name,kind:Vm.Table,value:{tableName:e,schemaName:n}};this.db.aliases.push(r)}}validateRecords(){let e=[],n=new Map,r=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let e of r){if(!(e instanceof jp))continue;let r=this.compiler.symbolMembers(e).getFiltered(t)??[];for(let e of r){if(!e.isKind(I.Table))continue;let t=e.originalSymbol;if(!(t instanceof Pp))continue;let r=t.intern();n.has(r)||n.set(r,{tableSymbol:t,record:void 0,recordBlock:t.declaration})}}let i=this.compiler.symbolMetadata(this.programSymbol);for(let r of i){if(!(r instanceof Sm))continue;let i=r.table(this.compiler);if(!(i instanceof Pp))continue;let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))continue;let o=a.getValue();if(!o)continue;e.push(...gh(this.compiler,i,r.declaration,o)),e.push(...Sh(this.compiler,i,o));let s=i.originalSymbol.intern(),c=n.get(s);c?c.record=o:n.set(s,{tableSymbol:i,record:o,recordBlock:r.declaration})}let a=this.collectPartialRefs(n);return e.push(...Eh(this.compiler,[...this.db.refs,...a],n,this.filepath)),e}validatePartialRefs(){let e=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof ym);for(let t of e)this.infos.push(...Nh(this.compiler,t))}collectPartialRefs(e){let t=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof ym),n=[];for(let{tableSymbol:r}of e.values())for(let e of r.resolvedPartials(this.compiler))for(let i of t){if(i.leftTablePartial(this.compiler)?.originalSymbol!==e.originalSymbol)continue;let t=i.leftColumns(this.compiler),a=i.rightTable(this.compiler),o=i.rightColumns(this.compiler),s=i.op(this.compiler);if(!a||!s||t.length===0||o.length===0)continue;let c=r.mergedColumns(this.compiler);if(!t.some(e=>c.some(t=>t instanceof Xp&&t.declaration===e.declaration)))continue;let l=cf(s);if(!l)continue;let u=a instanceof zp&&a.originalSymbol===e.originalSymbol?r:a,d=r.interpretedName(this.compiler,this.filepath),f=u.interpretedName(this.compiler,this.filepath),p={schemaName:d.schema,tableName:d.name,fieldNames:t.map(e=>e.name??``),relation:l[0],token:F(i.leftToken())},m={schemaName:f.schema,tableName:f.name,fieldNames:o.map(e=>e.name??``),relation:l[1],token:F(i.rightToken())};n.push({token:F(i.declaration),endpoints:[p,m]})}return n}pushElement(e,t){if(!Array.isArray(t))switch(e.kind){case I.Table:this.db.tables.push(t);break;case I.Enum:this.db.enums.push(t);break;case I.TableGroup:this.db.tableGroups.push(t);break;case I.TablePartial:this.db.tablePartials.push(t);break;case I.StickyNote:this.db.notes.push(t);break;case I.DiagramView:this.db.diagramViews.push(t);break;default:break}}},Bh={nodeSymbol(t,r){return zf(r)?n.create(t.symbolFactory.create(qp,{declaration:r,name:r.filepath.absolute},r.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(I.Program))return n.create(e);if(!(i.declaration instanceof R))return n.create([]);let a=new Map;for(let e of r.reachableFiles(i.filepath)){let{schemaMembers:t}=r.usableMembers(e).getValue();for(let e of t)a.has(e.name)||a.set(e.name,e)}let o=a.get(v);if(!o)return n.create([...a.values()]);let s=r.symbolMembers(o).getFiltered(t)?.filter(e=>!e.isKind(I.Schema));return s?n.create([...a.values(),...s]):n.create([...a.values()])},bindNode(t,r){return zf(r)?new rh(r,t).resolve():n.create(e)},interpretSymbol(t,r,i){if(!(r instanceof qp))return n.create(e);if(!(r.declaration instanceof R))return n.create(void 0);if(!Fm(t,r.declaration)){let e=t.reachableFiles(i).flatMap(e=>t.bindFile(e).getErrors());return n.create(void 0,e)}return new zh(t,r,i).interpret()}},Vh=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof U?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof H)return[];let t=e.body.filter(e=>e instanceof z);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Hh=class{constructor(e,t,n){this.declarationNode=t,this.compiler=e,this.filepath=n,this.project={enums:[],refs:[],tableGroups:[],tables:[],tablePartials:[]}}interpret(){this.project.token=F(this.declarationNode);let e=[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)];return new n(this.project,e)}interpretName(e){if(!e)return this.project.name=null,[];let{name:t}=wp(e);return this.project.name=t,[]}interpretSubElement(e){let r=this.compiler.nodeSymbol(e).getFiltered(t);if(r){let e=this.compiler.interpretSymbol(r,this.filepath);if(!e.hasValue(t))return e}return n.create(void 0)}interpretBody(e){return e.body.flatMap(e=>{let t=e;switch(t.getElementKind()){case r.Table:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tables?.push(e.getValue()),e.getErrors()}case r.TableGroup:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tableGroups?.push(e.getValue()),e.getErrors()}case r.Enum:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.enums?.push(e.getValue()),e.getErrors()}case r.Note:{let e=t.body instanceof U?t.body.body[0]?.callee:t.body?.callee,n=e?N(e):void 0;return n&&(this.project.note={value:Cp(n),token:F(t)}),[]}case r.TablePartial:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tablePartials?.push(e.getValue()),e.getErrors()}default:return this.project[t.type.value.toLowerCase()]=N(t.body.callee),[]}})}},Uh={nodeMetadata(t,i){return A(i,r.Project)?n.create(new Cm(i)):n.create(e)},bindNode(t,i){return A(i,r.Project)?n.create(void 0,new Vh(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return!(r instanceof Cm)||!(r.declaration instanceof z)?n.create(e):new Hh(t,r.declaration,i).interpret()}},Wh=class{constructor(e,t){this.compiler=e,this.declarationNode=t,this.boundColumns=new Map}bind(){let e=[];return this.declarationNode.name&&e.push(...this.bindRecordsName(this.declarationNode.name)),this.declarationNode.body instanceof U&&e.push(...this.bindBody(this.declarationNode.body)),e}bindRecordsName(e){return this.declarationNode.parent instanceof R?this.bindTopLevelName(e):this.bindInsideTableName(e)}bindTopLevelName(e){let n=ip(e);if(!n)return[];let r=n.variables.pop(),i=n.variables;if(!r)return[];let a=this.compiler.nodeReferee(r).getErrors();if(a.length>0)return a;let o=this.compiler.nodeReferee(r).getFiltered(t);if(!o)return[];let s=Zf(o.declaration)??`<invalid name>`,c=i.flatMap(e=>this.compiler.nodeReferee(e).getErrors());for(let e of n.args){let n=ap(e)??`<unnamed>`,r=this.compiler.nodeReferee(e).getFiltered(t);if(!r){c.push(new T(w.BINDING_ERROR,`Column '${n}' does not exist in Table '${s}'`,e));continue}let i=this.boundColumns.get(r);i&&(c.push(new T(w.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,i)),c.push(new T(w.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,e))),this.boundColumns.set(r,e)}return c}bindInsideTableName(e){let n=this.declarationNode.parent;if(!(n instanceof z)||!n.isKind(r.Table)||!this.compiler.nodeSymbol(n).getFiltered(t)||!Mf(e))return[];let i=Zf(n)??`<invalid name>`,a=[];for(let n of e.elementList){let e=ap(n)??`<unnamed>`;if(!this.compiler.nodeReferee(n).getFiltered(t)){a.push(new T(w.BINDING_ERROR,`Column '${e}' does not exist in Table '${i}'`,n));continue}}return a}bindBody(e){if(!e)return[];if(e instanceof H)return this.bindDataRow(e);let t=e.body.filter(e=>e instanceof H),n=e.body.filter(e=>e instanceof z);return[...this.bindDataRows(t),...this.bindSubElements(n)]}bindDataRows(e){return e.flatMap(e=>this.bindDataRow(e))}bindDataRow(e){return e.callee?(e.callee instanceof sm?e.callee.elementList:[e.callee]).flatMap(Im).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();return!t||!n?[]:[...e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors()),...n?this.compiler.nodeReferee(n).getErrors():[],...this.compiler.nodeReferee(t).getErrors()]}):[]}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Gh=class{constructor(e,t,n){this.compiler=e,this.metadata=t,this.element=t.declaration,this.filepath=n}interpret(){let e=[],t=[],r=Kh(this.element,this.compiler,this.filepath);if(!r||r.columns.length===0)return new n(void 0,e);let i=[];for(let n of this.element.body.body){let a=qh(n,r.columns,this.compiler);e.push(...a.getErrors()),t.push(...a.getWarnings());let o=a.getValue();o.row&&i.push(o.row)}let a=F(this.element);return new n({schemaName:r.schemaName,tableName:r.tableName,columns:r.columns.map(e=>e.name??``),values:i,token:a},e,t)}};function Kh(e,n,i){let a=e.name,o=e.parent;if(o instanceof z&&o.isKind(r.Table)){let e=n.nodeSymbol(o).getFiltered(t);if(!(e instanceof Pp))return;let r=e.mergedColumns(n),s=e.interpretedName(n,i),c=s.schema,l=s.name;return a?{schemaName:c,tableName:l,columns:a.elementList.flatMap(e=>r.find(t=>t.name===P(e))||[])}:{schemaName:c,tableName:l,columns:r}}let s=ip(a);if(!s)return;let c=s.variables.map(e=>e.expression.variable?.value??``),l=c.at(-1)??``,u=c.length>1?c.slice(0,-1).join(`.`):void 0,d=n.parseFile(e.filepath).getValue().ast,f=n.nodeSymbol(d).getFiltered(t);if(!f)return;let p;if(u){let e=n.lookupMembers(f,I.Schema,u);e&&(p=n.lookupMembers(e,I.Table,l))}if(p||=n.lookupMembers(f,I.Table,l),!p)return;let m=p.originalSymbol;if(!(m instanceof Pp))return;let ee=m.mergedColumns(n),te=s.args.map(e=>ee.find(t=>t.name===P(e))).filter(Boolean),ne=m.interpretedName(n,i);return{schemaName:ne.schema,tableName:ne.name,columns:te}}function qh(e,t,r){let i=[],a=[],o={},s=e.callee instanceof sm?e.callee.elementList:[e.callee];if(s.length!==t.length)return i.push(new T(w.INVALID_RECORDS_FIELD,`Expected ${t.length} values but got ${s.length}`,e)),new n({row:null,columnNodes:{}},i,a);let c=[];for(let e=0;e<t.length;e++){let n=s[e],l=t[e];o[l.name??``]=n;let u=Yh(n,l,r);i.push(...u.getErrors()),a.push(...u.getWarnings());let d=u.getValue();c.push(d??{value:null,type:`expression`,token:F(n)})}return new n({row:c,columnNodes:o},i,a)}function Jh(e){return e instanceof am&&e.value?.value||``}function Yh(e,t,r){let i=F(e),a=t.type(r),o=(a?.name??``).split(`(`)[0],s=!!a?.enumSymbol,c=t.increment(r),l=t.isNotNullSet(r)===!0,u=t.default(r),d=t.name??``,f=Uo(o,s),p=gp(e),m=p===null?Jh(e):p,ee=p===null?`expression`:f;if(e instanceof am)return new n({value:e.value?.value||``,type:`expression`,token:i},[],[]);if(op(e)||sp(e)&&!zo(o)){let t=u&&u.value.toString().toLowerCase()!==`null`,r=Ho(o);return l&&!t&&!c&&!r?new n({value:null,type:f,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`NULL not allowed for non-nullable column '${d}' without default and increment`,e)]):new n({value:null,type:f,token:i},[],[])}if(s){let a=t.type(r)?.enumSymbol,o=a?a.members(r).filter(e=>e.isKind(I.EnumField)).map(e=>e.name).filter(Boolean):[],s=N(e);return s===void 0&&(s=O(e)?e.expression.variable.value:void 0),o.includes(s)?new n({value:s,type:f,token:i},[],[]):new n({value:s,type:f,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Invalid enum value for column '${d}'`,e)])}if(Fo(o)||Io(o)||Ho(o)){let t=lp(e);if(t===null)return new n({value:m,type:ee,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Invalid numeric value for column '${d}'`,e)]);if(Fo(o)&&!Number.isInteger(t))return new n({value:Math.floor(t),type:f,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Invalid integer value ${t} for column '${d}': expected integer, got decimal`,e)]);let r=Io(o)&&a?.args?.length?{precision:Number(a.args[0]),scale:a.args.length>=2?Number(a.args[1]):0}:void 0;if(Io(o)&&r){let{precision:a,scale:o}=r,s=t.toString().split(`.`),c=s[0].replace(/^-/,``),l=s[1]||``,u=c.length+l.length,p=l.length;if(u>a)return new n({value:t,type:f,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Numeric value ${t} for column '${d}' exceeds precision: expected at most ${a} total digits, got ${u}`,e)]);if(p>o)return new n({value:t,type:f,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Numeric value ${t} for column '${d}' exceeds scale: expected at most ${o} decimal digits, got ${p}`,e)])}return new n({value:t,type:f,token:i},[],[])}if(Ro(o)){let t=mp(e);return t===null?new n({value:m,type:ee,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Invalid boolean value for column '${d}'`,e)]):new n({value:t,type:f,token:i},[],[])}if(Vo(o)){let t=bp(e);return t===null?new n({value:m,type:ee,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Invalid datetime value for column '${d}', expected valid datetime format (e.g., 'YYYY-MM-DD', 'HH:MM:SS', 'YYYY-MM-DD HH:MM:SS', 'MM/DD/YYYY', 'D MMM YYYY', or 'MMM D, YYYY')`,e)]):new n({value:t,type:f,token:i},[],[])}if(zo(o)){let t=gp(e);if(t===null)return new n({value:m,type:ee,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`Invalid string value for column '${d}'`,e)]);let r=a?.args?.length?Number(a.args[0]):void 0;if(r&&!Number.isNaN(r)){let a=r,o=new TextEncoder().encode(t).length;if(o>a)return new n({value:t,type:f,token:i},[],[new gf(w.INVALID_RECORDS_FIELD,`String value for column '${d}' exceeds maximum length: expected at most ${a} bytes (UTF-8), got ${o} bytes`,e)])}return new n({value:t,type:`string`,token:i},[],[])}return new n({value:m,type:ee,token:i},[],[])}var Xh={nodeMetadata(t,i){if(!A(i,r.Records))return n.create(e);let a=i.parent;if(a&&A(a,r.Table))return n.create(new Sm(i));let o=i.name;return o instanceof G&&o.callee?n.create(new Sm(i)):n.create(e)},nodeReferee(i,a){if(!O(a))return n.create(e);let o=a.parentOfKind(z);if(!o?.isKind(r.Records))return n.create(e);let s=i.parseFile(a.filepath).getValue().ast,c=i.nodeSymbol(s).getFiltered(t);if(!c)return n.create(void 0);let l=a.parentOfKind(om);if(l?.parentNode===o)return Zh(i,o,a);let u=a.parentOfKind(G);return u?.parentNode===o&&l?.parentNode===u?Qh(i,u,a):u?.parentNode===o&&u.callee?.containsEq(a)?$h(i,c,a):tg(i,c,a)},bindNode(t,i){return A(i,r.Records)?n.create(void 0,new Wh(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof Sm?r.declaration instanceof z?new Gh(t,r,i).interpret():n.create(void 0):n.create(e)}};function Zh(e,i,a){let o=i.parent;if(o instanceof z&&o.isKind(r.Table)){let n=e.nodeSymbol(o).getFiltered(t);if(n)return eg(e,n,a)}return new n(void 0)}function Qh(e,r,i){if(r.callee){let n;if(O(r.callee))n=e.nodeReferee(r.callee).getFiltered(t);else{let i=ep(r.callee);if(i&&i.length>0){let r=i[i.length-1];n=e.nodeReferee(r).getFiltered(t)}}if(n)return eg(e,n,i)}return new n(void 0)}function $h(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``;if(!k(r.parentNode)){let a=e.lookupMembers(t,[I.Table,I.Schema],i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Table '${i}' does not exist in Schema 'public'`,r)])}let a=Lm(e,r);if(!a){let a=e.lookupMembers(t,[I.Table,I.Schema],i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Table or schema '${i}' does not exist`,r)])}if(a.isKind(I.Schema)){let t=e.lookupMembers(a,[I.Table,I.Schema],i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table or schema '${i}' does not exist`,r)])}return new n(void 0)}function eg(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``,a=e.lookupMembers(t,I.Column,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Column '${i}' does not exist in Table 'public.${t.name}'`,r)])}function tg(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``;if(!k(r.parentNode))return new n(void 0);let a=Lm(e,r);if(a){if(a.isKind(I.Schema)){let t=e.lookupMembers(a,[I.Enum,I.Schema],i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(I.Enum)){let t=e.lookupMembers(a,I.EnumField,i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(k(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,I.Schema,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,I.Enum,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var ng=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof R)&&!this.declarationNode.parent?.isKind(r.Project)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof H)return this.bindFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Im).flatMap(e=>{let t=e.tupleElements.length?e.tupleElements:e.variables.pop(),n=e.variables.pop();return!t||!n?[]:(Array.isArray(t)||(t=[t]),[...e.variables,n,...t].flatMap(e=>this.compiler.nodeReferee(e).getErrors()))}):[])}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},rg=class{constructor(e,t,n){this.compiler=e,this.filepath=n,this.metadata=t,this.declarationNode=t.declaration,this.ref={}}interpret(){this.ref.token=F(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody()],{infos:t}=this.validateRefConstraints();return n.create(this.ref,e,void 0,t)}interpretName(){if(!(this.declarationNode instanceof z))return[];let e=[],t=M(this.declarationNode.name)??[];return this.ref.name=t.pop()||null,t.length>1&&e.push(new T(w.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name)),this.ref.schemaName=t.join(`.`)||null,e}interpretBody(){let e=this.metadata.op(this.compiler),t=this.metadata.leftColumns(this.compiler),n=this.metadata.leftTable(this.compiler),r=this.metadata.rightColumns(this.compiler),i=this.metadata.rightTable(this.compiler);if(Ra(t,r).every(([e,t])=>e?.originalSymbol===t?.originalSymbol))return[new T(w.SAME_ENDPOINT,`Two endpoints are the same`,this.declarationNode)];let a=cf(e),o=n?.interpretedName(this.compiler,this.filepath),s=i?.interpretedName(this.compiler,this.filepath),c=F(this.metadata.leftToken()),l=F(this.metadata.rightToken());if(this.ref.endpoints=this.declarationNode instanceof z?[{schemaName:o?.schema??null,tableName:o?.name??``,fieldNames:t.map(e=>e.name??``),relation:a[0],token:c},{schemaName:s?.schema??null,tableName:s?.name??``,fieldNames:r.map(e=>e.name??``),relation:a[1],token:l}]:[{schemaName:s?.schema??null,tableName:s?.name??``,fieldNames:r.map(e=>e.name??``),relation:a[1],token:l},{schemaName:o?.schema??null,tableName:o?.name??``,fieldNames:t.map(e=>e.name??``),relation:a[0],token:c}],!(this.declarationNode instanceof z))return[];let u=$f(this.declarationNode)[0];if(u.args[0]){let e=E(u.args[0]).getValue(),t=e.delete?.at(0)?.value;this.ref.onDelete=t instanceof nm?Xf(t):P(t);let n=e.update?.at(0)?.value;this.ref.onUpdate=n instanceof nm?Xf(n):P(n),this.ref.color=e.color?.length?Tp(e.color?.at(0)?.value):void 0,this.ref.inactive=e.inactive?.length?!0:void 0}return[]}validateRefConstraints(){return this.metadata.cardinalities(this.compiler)?{infos:[...Mh(this.compiler,this.metadata,`right`),...Mh(this.compiler,this.metadata,`left`)]}:{infos:[]}}};function ig(e){let t=e.parent;for(;t;){if(t instanceof z&&t.isKind(r.Ref))return t.body?.containsEq(e)??!1;t=t.parent}return!1}var ag={nodeReferee(r,i){if(!O(i)&&!k(i)||!ig(i)||i.parentOfKind(B))return n.create(e);let a=r.parseFile(i.filepath).getValue().ast,o=r.nodeSymbol(a).getValue();return o===t?n.create(void 0):sg(r,o,i)},nodeMetadata(t,a){if(A(a,r.Ref)){let t=$f(a)[0];if(!(t instanceof H)||!t.callee)return n.create(e);let r=t.callee;return!(r instanceof rm)||!r.op?n.create(e):n.create(new vm(a))}if(a instanceof B){if(!(a.name instanceof nm)||Xf(a.name)?.toLowerCase()!==i.Ref)return n.create(e);let t=a.parent;return t instanceof z&&t.isKind(r.TablePartial)?n.create(new ym(a)):n.create(new vm(a))}return n.create(e)},bindNode(t,i){return A(i,r.Ref)?n.create(void 0,new ng(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof vm?new rg(t,r,i).interpret():n.create(e)}};function og(e,n){let r=e.symbolMembers(n).getFiltered(t);if(r)return r.find(e=>e instanceof jp&&e.isPublicSchema())}function sg(e,r,i){if(!O(i))return new n(void 0);let a=ap(i)??``;if(!k(i.parentNode)){let r=i.parentNode;if(r&&k(r.parentNode)&&r.parentNode.rightExpression===r){let o=r.parentNode.leftExpression,s=k(o)?o.rightExpression??o:o,c=e.nodeReferee(s).getFiltered(t);if(c?.isKind(I.Table)){let r=e.lookupMembers(c,I.Column,a);if(r)return n.create(r);let o=c.declaration?e.nodeFullname(c.declaration).getFiltered(t)?.join(`.`)??c.name:c.name;return new n(void 0,[new T(w.BINDING_ERROR,`Column '${a}' does not exist in Table '${o}'`,i)])}}return n.create(void 0)}let o=Lm(e,i);if(o){if(o.isKind(I.Schema)){let t=e.lookupMembers(o,[I.Table,I.Schema],a);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}if(o.isKind(I.Table)){let r=e.lookupMembers(o,I.Column,a);return r?n.create(r):new n(void 0,[new T(w.BINDING_ERROR,`Column '${a}' does not exist in Table '${o.declaration?e.nodeFullname(o.declaration).getFiltered(t)?.join(`.`)??o.name:o.name}'`,i)])}return new n(void 0)}let s=i.parentNode;if(s.leftExpression===i){if(k(s.parentNode)&&s.parentNode.leftExpression===s){let t=e.lookupMembers(r,I.Schema,a);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}let t=og(e,r);if(t){let r=e.lookupMembers(t,I.Table,a);if(r)return n.create(r)}let o=e.lookupMembers(r,I.Table,a);return o?n.create(o):new n(void 0,[new T(w.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}return new n(void 0)}var cg={visibleName(e,n){let r=n instanceof L?n:n.useSpecifierDeclaration instanceof em?n.useSpecifierDeclaration:n.declaration;if(r instanceof em&&n instanceof Ap&&r.getSymbolKind()!==n.kind&&(r=n.declaration),!r)return;let i=e.nodeAlias(r).getFiltered(t);return i===void 0?e.nodeFullname(r).getFiltered(t):[i]}},lg={nodeSymbol(r,i){if(!Rf(i)||!i.name)return n.create(e);let a=i.getSymbolKind();if(a===void 0||a===I.Schema)return n.create(e);let o=r.nodeReferee(i.name).getFiltered(t);return o&&!o.canBeImported?n.create(e):n.create(r.symbolFactory.create(Yp,{useSpecifierDeclaration:i,declaration:o?.declaration,usedSymbol:o,kind:a,name:cg.visibleName(r,i)?.at(-1)},i.filepath),o===void 0?[new T(w.BINDING_ERROR,`Failed to resolve the import of ${a} '${(M(i.name)||[]).map(kg).join(`.`)}'`,i)]:[])},symbolMembers(r,i){if(!(i instanceof Yp))return n.create(e);let a=r.symbolMembers(i.originalSymbol).getFiltered(t);return n.create(a??[])},nodeReferee(r,i){if(!O(i)&&!If(i))return n.create(e);let a=i.parentOfKind(em);if(!a)return n.create(e);let o=a.name===i||k(a.name)&&a.name.rightExpression===i?a.getSymbolKind():I.Schema;if(o===void 0)return n.create(void 0);let s=M(i.parentOfKind(rm)),c=P(i)??s?.at(-1);if(c===void 0)return n.create(void 0);let l=i.parentOfKind($p);if(l?.importPath?.value===void 0)return n.create(void 0);let u=xo(i.filepath,l.importPath.value);if(!u)return n.create(void 0,[new T(w.BINDING_ERROR,`Import path must be relative, got '${l.importPath.value}'`,i)]);if(!r.layout.exists(u))return n.create(void 0,[new T(w.NONEXISTENT_MODULE,`${o} '${s?.join(`.`)??c}' does not exist in file ${u.toString()}. Does the file exist?`,i)]);let d=i.parentOfKind(rm)?.leftExpression;if(d&&d!==i){let e=r.nodeReferee(d).getFiltered(t);if(!e)return n.create(void 0);let a=r.lookupMembers(e,o,c);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Could not find ${o} '${c}'`,i)])}let f=ug(r,u,c,o);return f?n.create(f):n.create(void 0,[new T(w.BINDING_ERROR,`${o} '${c}' does not exist in file ${u.toString()}`,i)])},bindNode(t,r){if(Lf(r)){let e=[];if(r.importPath?.value){let n=xo(r.filepath,r.importPath.value);n?t.layout.exists(n)||e.push(new T(w.NONEXISTENT_MODULE,`Failed to resolve the non-existent file '${r.importPath.value}'`,r.importPath)):e.push(new T(w.BINDING_ERROR,`Import path must be relative, got '${r.importPath.value}'`,r.importPath))}if(r.specifiers){let n=t.bindNode(r.specifiers);e.push(...n.getErrors())}return new n(void 0,e)}return r instanceof tm?new n(void 0,r.specifiers.flatMap(e=>t.bindNode(e).getErrors())):Rf(r)?r.name?new n(void 0,t.nodeReferee(r.name).getErrors()):new n(void 0):n.create(e)},interpretSymbol(r,i,a){if(!(i instanceof Yp))return n.create(e);if(!i.usedSymbol)return n.create(void 0);let o=r.interpretSymbol(i.usedSymbol,a);if(o.hasValue(t))return n.create(void 0);let s=o.getValue();if(!s||Array.isArray(s))return o;let c=i.name;return c&&`name`in s?n.create({...s,name:c}):n.create(s)}};function ug(e,n,r,i,a=new Set){if(!n||a.has(n.intern()))return;a.add(n.intern());let o=e.usableMembers(n).getFiltered(t);if(!o)return;let s=o.nonSchemaMembers.find(e=>e.name===r&&e.isKind(i));if(s)return s;let c=o.schemaMembers.find(e=>e.name===r);if(c?.isKind(I.Schema))return c;for(let t of o.reuses.selective)if(M(t.alias??t.name)?.at(-1)===r){let o=t.parentOfKind($p);if(o?.importPath?.value){let s=ug(e,xo(n,o.importPath.value),M(t.name)?.at(-1)??r,i,a);if(s)return s}}for(let{importPath:t}of o.reuses.wildcard){let n=ug(e,t,r,i,a);if(n)return n}}function dg(e){if(e instanceof bo){let{ast:n}=this.parseFile(e).getValue(),r=this.nodeSymbol(n).getFiltered(t);return this.usableMembers(r)}let r=e.filepath,i=pg(this,r),{nonSchemaMembers:a,schemaMembers:o}=e instanceof qp?mg(this,e,i):hg(this,e,i);return new n({nonSchemaMembers:a,schemaMembers:o,reuses:{selective:i.selectiveReuses,wildcard:i.wildcardReuses},uses:{selective:i.selectiveUses,wildcard:i.wildcardUses}},i.parseResult.getErrors(),i.parseResult.getWarnings())}function fg(e,n,r){let i=n.qualifiedName,a;if(a=r instanceof em?cg.visibleName(e,r):e.nodeFullname(r).getFiltered(t),!a)return{kind:`none`};let o=r instanceof em&&r.getSymbolKind()===I.Schema?a:a.length<=1?[v]:a.slice(0,-1);return o.length<i.length||!i.every((e,t)=>e===o[t])?{kind:`none`}:o.length===i.length?{kind:`direct`}:{kind:`child`,schemaName:o[i.length]}}function pg(e,t){let n=e.parseFile(t),{ast:r}=n.getValue(),i=[],a=[],o=[],s=[];for(let e of r.body){if(!(e instanceof $p)||!e.specifiers||!e.importPath)continue;let n=xo(t,e.importPath.value);n&&(e.isReuse?e.specifiers instanceof um?i.push({importPath:n,node:e.specifiers}):a.push(...e.specifiers.specifiers):e.specifiers instanceof um?o.push({importPath:n,node:e.specifiers}):s.push(...e.specifiers.specifiers))}return{ast:r,parseResult:n,selectiveReuses:a,wildcardReuses:i,selectiveUses:s,wildcardUses:o}}function mg(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=n.filepath,c=new Map([[v,e.symbolFactory.create(jp,{name:v},s)]]);for(let n of i.declarations){let r=e.nodeFullname(n).getFiltered(t)||[],i=r.length<=1?v:r[0];c.has(i)||c.set(i,e.symbolFactory.create(jp,{name:i},s))}gg(e,[...a,...o],c,s);for(let t of e.reachableFiles(s))for(let n of vg(e,t))c.has(n)||c.set(n,e.symbolFactory.create(jp,{name:n},s));let l=[...c.values()],u=[],d=l.find(e=>e.isPublicSchema());if(d){let n=e.usableMembers(d).getFiltered(t);n&&u.push(...n.nonSchemaMembers)}return{nonSchemaMembers:u,schemaMembers:l}}function hg(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=[],c=new Map;for(let r of i.body){if(!(r instanceof z))continue;let i=fg(e,n,r),a=e.nodeAlias(r).getFiltered(t),o=e.nodeSymbol(r).getFiltered(t);if(a!==void 0&&n.isPublicSchema()&&o&&s.push(e.symbolFactory.create(Jp,{kind:o.kind,declaration:r,aliasedSymbol:o,name:a},n.filepath)),i.kind!==`none`)if(i.kind===`direct`){let n=e.nodeSymbol(r).getFiltered(t);if(!n)continue;s.push(n)}else c.has(i.schemaName)||c.set(i.schemaName,e.symbolFactory.create(jp,{name:i.schemaName,parent:n},n.filepath))}_g(e,[...a,...o],n,c);let l=n.qualifiedName;for(let t of e.reachableFiles(n.filepath))for(let r of yg(e,t,l))c.has(r)||c.set(r,e.symbolFactory.create(jp,{name:r,parent:n},n.filepath));return{nonSchemaMembers:s,schemaMembers:[...c.values()]}}function gg(e,t,n,r){for(let i of t){if(i.getSymbolKind()!==I.Schema)continue;let t=cg.visibleName(e,i)?.at(0);t!==void 0&&!n.has(t)&&n.set(t,e.symbolFactory.create(jp,{name:t},r))}}function _g(e,t,n,r){let i=n.qualifiedName;for(let a of t){if(a.getSymbolKind()!==I.Schema)continue;let t=cg.visibleName(e,a);if(!t||t.length<=i.length||!i.every((e,n)=>e===t[n]))continue;let o=t[i.length];o&&!r.has(o)&&r.set(o,e.symbolFactory.create(jp,{name:o,parent:n},n.filepath))}}function vg(e,n){let{ast:r}=e.parseFile(n).getValue(),i=[];for(let n of r.declarations){let r=e.nodeFullname(n).getFiltered(t)||[],a=r.length<=1?v:r[0];i.push(a)}let a=pg(e,n);for(let t of[...a.selectiveUses,...a.selectiveReuses]){if(t.getSymbolKind()!==I.Schema)continue;let n=cg.visibleName(e,t)?.at(0);n!==void 0&&i.push(n)}return i}function yg(e,n,r){let{ast:i}=e.parseFile(n).getValue(),a=[];for(let n of i.declarations){let i=e.nodeFullname(n).getFiltered(t)||[],o=i.length<=1?[v]:i.slice(0,-1);o.length>r.length&&r.every((e,t)=>e===o[t])&&a.push(o[r.length])}let o=pg(e,n);for(let t of[...o.selectiveUses,...o.selectiveReuses]){if(t.getSymbolKind()!==I.Schema)continue;let n=cg.visibleName(e,t);!n||n.length<=r.length||r.every((e,t)=>e===n[t])&&a.push(n[r.length])}return a}var bg=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof U?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof H)return this.bindFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return(e=>e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];if(h(n)instanceof W){let e=E(h(n)).getValue();t.push(...e.ref?.flatMap(e=>e.value?this.bindInlineRef(e.value):[])||[]),t.push(...e.default?.flatMap(e=>e.value?this.tryToBindEnumFieldRef(e.value):[])||[]),n.pop()}return n[1]&&this.tryToBindColumnType(n[1]),t}))(e.filter(e=>!Ef(e.callee)))}tryToBindColumnType(e){let t=tp(e);if(!t)return;let n=t.variables.pop();n&&this.compiler.nodeReferee(n).getErrors()}tryToBindEnumFieldRef(e){if(D(e))return[];if(O(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&So.includes(t))return[]}let t=tp(e);if(!t){if(k(e)){let t=e,n=[];return t.leftExpression&&n.push(...this.compiler.nodeReferee(t.leftExpression).getErrors()),t.rightExpression&&n.push(...this.compiler.nodeReferee(t.rightExpression).getErrors()),n}return[]}let n=t.variables.pop(),r=t.variables.pop();if(!n||!r)return[];let i=[],a=t.variables;for(let e of a)i.push(...this.compiler.nodeReferee(e).getErrors());return i.push(...this.compiler.nodeReferee(r).getErrors()),i.push(...this.compiler.nodeReferee(n).getErrors()),i}bindInlineRef(e){return Im(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;if(n){let e=[];for(let t of r)e.push(...this.compiler.nodeReferee(t).getErrors());return e.push(...this.compiler.nodeReferee(n).getErrors()),e.push(...this.compiler.nodeReferee(t).getErrors()),e}return this.compiler.nodeReferee(t).getErrors()})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},xg=class{constructor(e,t,n,r){this.compiler=e,this.declarationNode=t,this.symbol=n,this.filepath=r,this.table={name:void 0,schemaName:void 0,alias:null,fields:[],token:void 0,indexes:[],partials:[],checks:[]},this.pkColumns=[]}interpret(){this.table.token=this.symbol?.token??F(this.declarationNode);let e=[];if(this.symbol){let{name:e,schema:t}=this.symbol.interpretedName(this.compiler,this.filepath);this.table.name=e,this.table.schemaName=t}else e.push(...this.interpretName(this.declarationNode.name));let t=[...e,...this.interpretAlias(this.declarationNode.alias),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.table.indexes.push({columns:this.pkColumns.map(({name:e,token:t})=>({value:e,type:`column`,token:t})),token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1},filepath:this.declarationNode.filepath},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),n.create(this.table,t)}interpretName(e){let{name:t,schemaName:n}=wp(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new T(w.UNSUPPORTED,`Nested schema is not supported`,e)]):(this.table.name=t,this.table.schemaName=n.length?n[0]:null,[])}interpretAlias(e){if(!e)return[];let t=ap(e);return t&&(this.table.alias=t),[]}interpretSettingList(e){let t=E(e).getValue();this.table.headerColor=t[i.HeaderColor]?.length?Tp(t[i.HeaderColor]?.at(0)?.value):void 0;let[n]=t[i.Note]||[];return this.table.note=n&&{value:Cp(N(n?.value)),token:F(n)},[]}interpretBody(e){let[t,n]=g(e.body,e=>e instanceof H);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.getElementKind()){case r.Note:return this.table.note={value:Cp(N(e.body instanceof U?e.body.body[0].callee:e.body.callee)),token:F(e)},[];case r.Indexes:return this.interpretIndexes(e);case r.Checks:return this.interpretChecks(e);case r.Records:return[];default:return[]}})}interpretInjection(e,n){let r=[],i={order:n,token:F(e)};i.name=P(e.expression)||``;let a=e.expression?this.compiler.nodeReferee(e.expression).getFiltered(t):void 0,o=this.compiler.parseFile(this.filepath).getValue().ast,s=this.compiler.nodeSymbol(o).getFiltered(t);if(a&&!s.inNestedSchema(this.compiler,a)){let n=this.compiler.nodeSymbol(this.declarationNode).getFiltered(t),o=n?(this.compiler.symbolUses(n).getFiltered(t)??[]).find(e=>e.filepath.equals(this.filepath)):void 0;r.push(new T(w.UNSUPPORTED,`TablePartial ${i.name} from '${a.filepath}' should be imported. Currently, importing a table that uses a table partial requires that table partial to also be in scope.`,o?.useSpecifierDeclaration??e))}return this.table.partials.push(i),r}interpretFields(e){let n=this.symbol??this.compiler.nodeSymbol(this.declarationNode).getFiltered(t),r=(n?this.compiler.symbolMembers(n).getFiltered(t)??[]:[]).filter(e=>e.isKind(I.Column)).length?[]:[new T(w.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],i=e.flatMap((e,t)=>Ef(e.callee)?this.interpretInjection(e.callee,t):this.interpretColumn(e));return[...r,...i]}interpretColumn(e){let n=[],r={},a=this.compiler.nodeSymbol(e).getFiltered(t);r.name=ap(e.callee),r.token=F(e);let o=Dp(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||!1,r.unique=a?.isUniqueSet(this.compiler)||!1,r.increment=a?.isIncrementSet(this.compiler)||void 0,r.not_null=a?.isNotNullSet(this.compiler),r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let s=this.compiler.nodeSettings(e).getFiltered(t)??{},c=this.compiler.parseFile(this.filepath).getValue().ast,l=this.compiler.nodeSymbol(c).getFiltered(t);return r.inline_refs=(s[i.Ref]||[]).flatMap(e=>{let r=this.compiler.nodeMetadata(e).getFiltered(t);if(!r)return[];let i=r.owners(this.compiler);if(l&&i.length>0&&!i.some(e=>e===l))return[];let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))return[];n.push(...a.getErrors());let o=a.getValue();if(!o?.endpoints?.[0])return[];let s=o.endpoints[0],c=r.op(this.compiler);return c?{schemaName:s.schemaName,tableName:s.tableName,fieldNames:s.fieldNames,relation:c,token:s.token}:[]}),r.checks=(s[i.Check]||[]).map(e=>({token:F(e),expression:e.value.value.value})),this.table.fields.push(r),r.pk&&this.pkColumns.push(r),n}interpretIndexes(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.table.indexes.push(...i):i&&this.table.indexes.push(i),r.getErrors()}interpretChecks(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.table.checks.push(...i):i&&this.table.checks.push(i),r.getErrors()}},Sg={getDuplicateError(e,t,n){return new T(w.DUPLICATE_NAME,`Table '${e}' already exists in schema '${t}'`,n)},getColumnDuplicateError(e,t){return new T(w.DUPLICATE_COLUMN_NAME,`Duplicate column '${e}'`,t)},getPartialInjectionDuplicateError(e,t){return new T(w.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${e}'`,t)}},Cg={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return A(a,r.Table)?new n(i.symbolFactory.create(Pp,{declaration:a,name:o},a.filepath)):j(a,r.Table)?Ef(a.callee)?new n(i.symbolFactory.create(Bp,{declaration:a,name:o},a.filepath)):new n(i.symbolFactory.create(Fp,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(I.Table))return n.create(e);let a=i.declaration;if(!(a instanceof z))return new n([]);let o=$f(a),s=[],c=[];for(let e of o){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(s.push(i),c.push(...n.getErrors()))}let l=new Map;for(let e of s){if(!e.isKind(I.Column,I.PartialInjection)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof z&&e.declaration.name?e.declaration.name:e.declaration,r=l.get(t);r?e.isKind(I.Column)?(c.push(Sg.getColumnDuplicateError(e.name,r)),c.push(Sg.getColumnDuplicateError(e.name,n))):(c.push(Sg.getPartialInjectionDuplicateError(e.name,r)),c.push(Sg.getPartialInjectionDuplicateError(e.name,n))):l.set(t,n)}}let u=[];for(let e=0;e<s.length;e++){let n=s[e];if(!(n.declaration instanceof H)||!Ef(n.declaration.callee))continue;let i=n.declaration.callee.expression,o=P(i);if(i===void 0||o===void 0)continue;let l=r.nodeReferee(i).getFiltered(t);if(!l){c.push(new T(w.BINDING_ERROR,`TablePartial '${o}' does not exist in Schema 'public'`,i||a));continue}let d=r.symbolMembers(l).getFiltered(t);if(d){let t=d.flatMap(e=>{if(!e.declaration)return[];let t=e.name;return t===void 0?e:r.symbolFactory.create(Xp,{kind:I.Column,injectionDeclaration:n.declaration,declaration:e.declaration,name:t},a.filepath)});u.push({index:e,partialMembers:t})}}for(let e=u.length-1;e>=0;e--){let{index:t,partialMembers:n}=u[e];s.splice(t,0,...n)}let d=new Set(s.filter(e=>e.isKind(I.Column)&&!(e instanceof Xp)).map(e=>e.name));return new n(Fa([...s.filter(e=>!(e instanceof Xp&&d.has(e.name)))].reverse(),e=>e.isKind(I.Column)?e.name:e).reverse(),c)},nodeReferee(a,o){if(!Bf(o,r.Table))return n.create(e);let s=a.parseFile(o.filepath).getValue().ast,c=a.nodeSymbol(s).getValue();return c===t?n.create(void 0):O(o)&&o.parentNode instanceof V&&o.parentNode.op?.value===`~`?wg(a,c,o):Vf(o,1)?Tg(a,c,o):Uf(o,i.Ref)?Eg(a,c,o):Vf(o,0)?n.create(e):Dg(a,c,o)},bindNode(i,a){if(!A(a,r.Table))return n.create(e);let o=new bg(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Pp?r.declaration instanceof z?new xg(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function wg(e,r,i){let a=P(i)??``,o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof jp&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,I.TablePartial,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,I.TablePartial,a);return s?n.create(s):new n(void 0,[new T(w.BINDING_ERROR,`TablePartial '${a}' does not exist in Schema 'public'`,i)])}function Tg(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``;if(!k(r.parentNode))return n.create(e.lookupMembers(t,I.Enum,i));let a=Lm(e,r);if(a){if(a.isKind(I.Schema)){let t=Jf(r),o=e.lookupMembers(a,t?I.Enum:I.Schema,i);return o?n.create(o):new n(void 0,[new T(w.BINDING_ERROR,t?`Enum '${i}' does not exist in Schema 'public'`:`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,I.Schema,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Eg(e,i,a){if(!O(a))return new n(void 0);let o=ap(a)??``;if(!k(a.parentNode)){let s=a.parent,c=s instanceof z&&s.isKind(r.Table)?e.nodeSymbol(s).getFiltered(t):void 0;if(c){let t=e.lookupMembers(c,I.Column,o);if(t)return n.create(t)}let l=e.lookupMembers(i,I.Column,o);return l?n.create(l):new n(void 0,[new T(w.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${c?.name??``}'`,a)])}let s=Lm(e,a);if(s){if(s.isKind(I.Schema)){let t=e.lookupMembers(s,[I.Table,I.Schema],o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(I.Table)){let t=e.lookupMembers(s,I.Column,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${s.name}'`,a)])}return new n(void 0)}let c=a.parentNode;if(c.leftExpression===a){if(k(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,I.Schema,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,I.Table,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function Dg(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``;if(!k(r.parentNode))return So.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,I.Enum,i));let a=Lm(e,r);if(a){if(a.isKind(I.Schema)){let t=e.lookupMembers(a,[I.Enum,I.Schema],i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(I.Enum)){let t=e.lookupMembers(a,I.EnumField,i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(k(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,I.Schema,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,I.Enum,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Og(e){return e?e.split(``).every(e=>vf(e)||yf(e))&&!yf(e[0]):!1}function kg(e){return Og(e)?e:`"${jg(e)}"`}function Ag(e){let t=``,n=0,r={n:`
5
- `,t:` `,r:`\r`,b:`\b`,f:`\f`,v:`\v`,0:`\0`,"\\":`\\`,'"':`"`,"'":`'`,"`":"`"};for(;n<e.length;)if(e[n]===`\\`&&n+1<e.length){let i=e[n+1];if(i===`u`&&n+5<e.length){let r=e.slice(n+2,n+6);if(/^[0-9a-fA-F]{4}$/.test(r)){t+=String.fromCharCode(parseInt(r,16)),n+=6;continue}}i in r?(t+=r[i],n+=2):(t+=i,n+=2)}else t+=e[n],n++;return t}function jg(e){let t=``;for(let n=0;n<e.length;n++){let r=e[n];switch(r){case`\\`:t+=`\\\\`;break;case`"`:t+=`\\"`;break;case`'`:t+=`\\'`;break;case`
6
- `:t+=`\\n`;break;case` `:t+=`\\t`;break;case`\r`:t+=`\\r`;break;case`\b`:t+=`\\b`;break;case`\f`:t+=`\\f`;break;case`\v`:t+=`\\v`;break;case`\0`:t+=`\\0`;break;default:t+=r}}return t}function Mg(e){if(e==null)return`null`;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return String(e);if(typeof e==`string`)return`'${jg(e)}'`;let{value:t,type:n}=e;if(t==null||Ro(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(Ro(n)){let e=mp(t);return e===null?`\`${t}\``:e?`true`:`false`}if(Lo(n)){let e=up(t);return e===null?`\`${t}\``:String(e)}if(Vo(n)){let e=bp(t);return e===null?`\`${t}\``:`'${jg(e)}'`}let r=gp(t);return r===null?`\`${t}\``:`'${jg(r)}'`}function Ng(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?Ag(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function Pg(e,t){let n=new Set,r=[];for(let i of t)for(let t of e.reachableFiles(i))n.has(t.intern())||(n.add(t.intern()),r.push(t));return r}function Fg(e){let r=[],i=[],a=[];e.bindProject();for(let n of e.parseProject().values()){i.push(...n.getErrors()),a.push(...n.getWarnings());let o=e.nodeSymbol(n.getValue().ast).getFiltered(t);if(!o)continue;let s=e.symbolMembers(o);i.push(...s.getErrors()),a.push(...s.getWarnings());for(let n of s.getFiltered(t)??[])if(r.push(n),n instanceof jp&&n.isKind(I.Schema)){let o=e.symbolMembers(n);i.push(...o.getErrors()),a.push(...o.getWarnings()),r.push(...o.getFiltered(t)??[])}}return new n(r,i,a)}var Ig=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof U?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof H)return this.bindFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Im).flatMap(e=>{let n=e.variables.pop();if(!n)return[];let r=this.compiler.nodeReferee(n),i=r.getFiltered(t);return i instanceof Yp?[...r.getErrors(),new T(w.BINDING_ERROR,`TableGroup cannot reference imported table '${i.name}'`,n)]:r.getErrors()}):[])}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Lg=class{constructor(e,t,n){this.compiler=e,this.symbol=t,this.declarationNode=t.declaration,this.filepath=n,this.tableGroup={tables:[]}}interpret(){let e=[];return this.tableGroup.token=F(this.declarationNode),e.push(...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)),n.create(this.tableGroup,e)}interpretName(e){let t=[],{name:n,schemaName:r}=wp(e);return r.length>=2&&(this.tableGroup.name=n,this.tableGroup.schemaName=r.join(`.`),t.push(new T(w.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name))),this.tableGroup.name=n,this.tableGroup.schemaName=r[0]||null,t}interpretBody(e){let[t,n]=g(e.body,e=>e instanceof H);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.getElementKind()){case r.Note:this.tableGroup.note={value:Cp(N(e.body instanceof U?e.body.body[0].callee:e.body.callee)),token:F(e)};break;default:break}return[]})}interpretFields(e){let n=[];return this.tableGroup.tables=e.map(e=>{let r=e.callee?this.compiler.nodeReferee(e.callee).getFiltered(t):void 0;if(r?.isKind(I.Table)){let{name:e,schema:t}=r.interpretedName(this.compiler,this.filepath);return{name:e,schemaName:t}}let i=M(e.callee);return i.length>2&&n.push(new T(w.UNSUPPORTED,`Nested schema is not supported`,e)),{name:i.pop(),schemaName:i.join(`.`)||null}}),n}interpretSettingList(e){let t=E(e).getValue();this.tableGroup.color=t.color?.length?Tp(t.color?.at(0)?.value):void 0;let[n]=t.note||[];return this.tableGroup.note=n&&{value:Cp(N(n?.value)),token:F(n)},[]}},Rg={getDuplicateError(e,t,n){return new T(w.DUPLICATE_NAME,`TableGroup '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new T(w.DUPLICATE_NAME,`Duplicate TableGroupField '${e}'`,t)}},zg={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t),s=o?.at(-1);return A(a,r.TableGroup)?new n(i.symbolFactory.create(Ip,{declaration:a,name:s},a.filepath)):j(a,r.TableGroup)?new n(i.symbolFactory.create(Lp,{declaration:a,name:o?.map(kg).join(`.`)},a.filepath)):n.create(e)},symbolMembers(r,i){if(i.isKind(I.TableGroup)){let e=i.declaration;if(!(e instanceof z))return new n([]);let a=$f(e),o=[],s=[];for(let e of a){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(o.push(i),s.push(...n.getErrors()))}let c=new Map;for(let e of o){if(!e.isKind(I.TableGroupField)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof z&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(Rg.getFieldDuplicateError(e.name,r)),s.push(Rg.getFieldDuplicateError(e.name,n))):c.set(t,n)}}return new n(o,s)}return i.isKind(I.TableGroupField)?new n([]):n.create(e)},nodeReferee(i,a){if(!O(a)||!Bf(a,r.TableGroup)||a.parent&&Hf(a))return n.create(e);let o=i.parseFile(a.filepath).getValue().ast,s=i.nodeSymbol(o).getValue();return s===t?n.create(void 0):Bg(i,s,a)},bindNode(i,a){if(!A(a,r.TableGroup))return n.create(e);let o=new Ig(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,i,a){let o=i.declaration;return!A(o,r.TableGroup)||!(i instanceof Ip)?n.create(e):Fm(t,o)?new Lg(t,i,a).interpret():n.create(void 0)}};function Bg(e,r,i){let a=ap(i)??``;if(!k(i.parentNode)){let o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof jp&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,I.Table,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,I.Table,a);return s?n.create(s):new n(void 0,[new T(w.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}let o=Lm(e,i);if(o){if(o.isKind(I.Schema)){let t=e.lookupMembers(o,[I.Table,I.Schema],a);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}return new n(void 0)}let s=e.lookupMembers(r,I.Schema,a);return s?n.create(s):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}var Vg=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof U?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof H)return this.bindFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];if(h(n)instanceof W){let e=E(h(n)).getValue();t.push(...e.ref?.flatMap(e=>e.value?this.bindInlineRef(e.value):[])||[]),n.pop()}return n[1]&&this.tryToBindColumnType(n[1]),t})}tryToBindColumnType(e){let t=tp(e);if(!t)return[];let n=t.variables.pop();return n?this.compiler.nodeReferee(n).getErrors():[]}bindInlineRef(e){return Im(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];if(n){let r=[],i=e.variables;for(let e of i)r.push(...this.compiler.nodeReferee(e).getErrors());let a=this.compiler.nodeReferee(n);return r.push(...a.getErrors()),a.getValue()&&r.push(...this.compiler.nodeReferee(t).getErrors()),r}return this.compiler.nodeReferee(t).getErrors()})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Hg=class{constructor(e,t,n){this.compiler=e,this.declarationNode=t.declaration,this.symbol=t,this.filepath=n,this.tablePartial={name:void 0,fields:[],token:void 0,indexes:[],checks:[]},this.pkColumns=[]}interpret(){this.tablePartial.token=this.symbol?.token??F(this.declarationNode),this.symbol?this.tablePartial.name=this.symbol.interpretedName(this.compiler,this.filepath).name:this.interpretName(this.declarationNode.name);let e=[...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.tablePartial.indexes.push({columns:this.pkColumns.map(({name:e,token:t})=>({value:e,type:`column`,token:t})),pk:!0,token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1},filepath:this.declarationNode.filepath}}),this.pkColumns.forEach(e=>{e.pk=!1})),new n(this.tablePartial,e)}interpretName(e){let{name:t}=wp(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=E(e).getValue(),n=ya(t[i.HeaderColor]);this.tablePartial.headerColor=n?Tp(n.value):void 0;let[r]=t[i.Note]||[];return this.tablePartial.note=r&&{value:Cp(N(r?.value)),token:F(r)},[]}interpretBody(e){let[t,n]=g(e.body,e=>e instanceof H);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.getElementKind()){case r.Note:return this.tablePartial.note={value:Cp(N(e.body instanceof U?e.body.body[0].callee:e.body.callee)),token:F(e)},[];case r.Indexes:return this.interpretIndexes(e);case r.Checks:return this.interpretChecks(e);default:return[]}})}interpretFields(e){return e.flatMap(e=>this.interpretColumn(e))}interpretColumn(e){let n=[],r={},a=this.compiler.nodeSymbol(e).getFiltered(t);r.name=ap(e.callee)??``,r.token=F(e);let o=Dp(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||void 0,r.unique=a?.isUniqueSet(this.compiler)||void 0,r.increment=a?.isIncrementSet(this.compiler)||void 0,r.not_null=a?.isNotNullSet(this.compiler),r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let s=this.compiler.nodeSettings(e).getFiltered(t)??{},c=this.compiler.parseFile(this.filepath).getValue().ast,l=this.compiler.nodeSymbol(c).getFiltered(t);return r.inline_refs=(s[i.Ref]||[]).flatMap(e=>{let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!(n instanceof ym))return[];let r=n.owners(this.compiler);if(l&&r.length>0&&!r.some(e=>e===l))return[];let i=n.op(this.compiler);if(!i)return[];let a=n.rightTable(this.compiler),o=n.rightColumns(this.compiler);if(!a||o.length===0)return[];let s=a.interpretedName(this.compiler,this.filepath);return{schemaName:s.schema,tableName:s.name,fieldNames:o.map(e=>e.name??``),relation:i,token:F(n.rightToken())}}),r.checks=(s[i.Check]||[]).map(e=>({token:F(e),expression:e.value.value.value})),this.tablePartial.fields?.push(r),r.pk&&this.pkColumns.push(r),n}interpretIndexes(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.tablePartial.indexes?.push(...i):i&&this.tablePartial.indexes?.push(i),r.getErrors()}interpretChecks(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.tablePartial.checks?.push(...i):i&&this.tablePartial.checks?.push(i),r.getErrors()}},Ug={getDuplicateError(e,t,n){return new T(w.DUPLICATE_NAME,`TablePartial '${e}' already exists in schema '${t}'`,n)}},Wg={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return A(a,r.TablePartial)?new n(i.symbolFactory.create(zp,{declaration:a,name:o},a.filepath)):j(a,r.TablePartial)?new n(i.symbolFactory.create(Fp,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(i,a){if(a.isKind(I.TablePartial)){let e=a.declaration;if(!(e instanceof z))return new n([]);let r=$f(e),o=[],s=[];for(let e of r){let n=i.nodeSymbol(e),r=n.getFiltered(t);r&&(o.push(r),s.push(...n.getErrors()))}let c=new Map;for(let e of o){if(!e.isKind(I.Column)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration instanceof z&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(Sg.getColumnDuplicateError(t,r)),s.push(Sg.getColumnDuplicateError(t,n))):c.set(t,n)}}return new n(o,s)}return a.isKind(I.Column)&&A(a.declaration?.parent,r.TablePartial)?new n([]):n.create(e)},nodeReferee(a,o){if(!O(o)&&!k(o)||!Bf(o,r.TablePartial))return n.create(e);let s=a.parseFile(o.filepath).getValue().ast,c=a.nodeSymbol(s).getValue();return c===t?n.create(void 0):Vf(o,1)?Gg(a,c,o):Uf(o,i.Ref)?Kg(a,c,o):qg(a,c,o)},bindNode(i,a){if(!A(a,r.TablePartial))return n.create(e);let o=new Vg(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof zp?r.declaration instanceof z?new Hg(t,r,i).interpret():n.create(void 0):n.create(e)}};function Gg(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``;if(!k(r.parentNode))return n.create(e.lookupMembers(t,I.Enum,i));let a=Lm(e,r);if(a){if(a.isKind(I.Schema)){let t=e.lookupMembers(a,[I.Enum,I.Schema],i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,I.Schema,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Kg(e,i,a){if(!O(a))return new n(void 0);let o=ap(a)??``;if(!k(a.parentNode)){let s=a.parent;if(s instanceof z&&s.isKind(r.TablePartial)){let r=e.nodeSymbol(s).getFiltered(t);if(r){let t=e.lookupMembers(r,I.Column,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Column '${o}' does not exist in TablePartial '${r.name}'`,a)])}}let c=e.lookupMembers(i,I.Column,o);return c?n.create(c):new n(void 0,[new T(w.BINDING_ERROR,`Column '${o}' does not exist`,a)])}let s=Lm(e,a);if(s){if(s.isKind(I.Schema)){let t=e.lookupMembers(s,[I.Table,I.Schema],o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(I.Table)){let t=e.lookupMembers(s,I.Column,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${s.name}'`,a)])}return new n(void 0)}let c=a.parentNode;if(c.leftExpression===a){if(k(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,I.Schema,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,I.Table,o);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function qg(e,t,r){if(!O(r))return new n(void 0);let i=ap(r)??``;if(!k(r.parentNode))return So.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,I.Enum,i));let a=Lm(e,r);if(a){if(a.isKind(I.Schema)){let t=e.lookupMembers(a,[I.Enum,I.Schema],i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(I.Enum)){let t=e.lookupMembers(a,I.EnumField,i);return t?n.create(t):new n(void 0,[new T(w.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(k(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,I.Schema,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,I.Enum,i);return a?n.create(a):new n(void 0,[new T(w.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var Jg={symbolMembers(r,i){if(!i.isKind(I.Schema)||!(i instanceof jp))return n.create(e);let a=i.qualifiedName,o=r.usableMembers(i).getFiltered(t);if(!o)return n.create([]);let s=[...o.nonSchemaMembers],c=new Map(o.schemaMembers.map(e=>[e.name,e])),l=[];for(let e of o.reuses.selective){let n=Xg(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...Zg(r,i,e))}for(let{importPath:e,node:t}of o.reuses.wildcard)s.push(...$g(r,i,e,t,c));for(let e of o.uses.selective){let n=Xg(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...Zg(r,i,e))}for(let{importPath:e,node:t}of o.uses.wildcard)s.push(...$g(r,i,e,t,c));s.push(...c.values());let u=[...s];{let e=s.filter(e=>e.isKind(I.TableGroup));if(!i.isPublicSchema()){let n=r.usableMembers(i.filepath).getFiltered(t)?.schemaMembers.find(e=>e.isPublicSchema());if(n){let i=r.symbolMembers(n).getFiltered(t);i&&e.push(...i.filter(e=>e.isKind(I.TableGroup)))}}for(let t of e)u.push(...t_(r,i,t))}let d=new Set,f=u.filter(e=>{if(e instanceof Yp&&e.isKind(I.Schema))return!1;let t=`${e.originalSymbol.intern()}:${e.name??``}`;return d.has(t)?!1:(d.add(t),!0)}),p=new Map;for(let e of f){let t=`${e.kind}:${e.name}`;if(p.get(t)){if(e.isKind(I.Schema))continue;let t=e instanceof Yp?e.useSpecifierDeclaration??e.declaration:e.declaration instanceof z&&e.declaration.name?e.declaration.name:e.declaration;t&&e.name!==void 0&&l.push(Yg(e.kind,e.name,a.join(`.`),t))}else p.set(t,e)}return new n(f,l)}};function Yg(e,t,n,r){switch(e){case I.Table:return Sg.getDuplicateError(t,n,r);case I.Enum:return Xm.getDuplicateError(t,n,r);case I.TablePartial:return Ug.getDuplicateError(t,n,r);case I.TableGroup:return Rg.getDuplicateError(t,n,r);case I.DiagramView:return Hm.getDuplicateError(t,n,r);default:return new T(w.DUPLICATE_NAME,`Duplicate ${e} '${t}' in schema '${n}'`,r)}}function Xg(e,r,i,a){let o=fg(e,r,i);if(o.kind===`none`)return n.create(void 0);if(o.kind===`direct`){let r=e.nodeSymbol(i);return r.hasValue(t)?n.create(void 0):r}return a.has(o.schemaName)||a.set(o.schemaName,e.symbolFactory.create(jp,{name:o.schemaName,parent:r},r.filepath)),n.create(void 0)}function Zg(e,n,r,i=new Set){if(r.getSymbolKind()!==I.Schema||!r.name)return[];let a=e.nodeReferee(r.name).getFiltered(t);if(!a||!a.isKind(I.Schema))return[];let o=cg.visibleName(e,r),s=n.qualifiedName;return!o||o.length!==s.length||!o.every((e,t)=>e===s[t])?[]:Qg(e,n,r,a,i)}function Qg(e,n,r,i,a){let o=i.intern();if(a.has(o))return[];a.add(o);let s=e.usableMembers(i).getFiltered(t);if(!s)return[];let c=s.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Yp,{kind:t.kind,declaration:t.originalSymbol.declaration,usedSymbol:t.originalSymbol,useSpecifierDeclaration:r,name:t.name},n.filepath));for(let t of[...c])t.isKind(I.TableGroup)&&c.push(...t_(e,n,t));for(let i of s.reuses.selective)if(c.push(...Zg(e,n,i,a)),fg(e,n,i).kind===`direct`){let a=e.nodeSymbol(i).getFiltered(t);a&&a.canBeImported&&c.push(e.symbolFactory.create(Yp,{kind:a.kind,declaration:a.originalSymbol.declaration,usedSymbol:a.originalSymbol,useSpecifierDeclaration:r,name:a.name},n.filepath))}for(let{importPath:t}of s.reuses.wildcard){let i=e_(e,t,n.qualifiedName);i&&c.push(...Qg(e,n,r,i,a))}return c}function $g(e,n,r,i,a,o=new Set){if(o.has(r))return[];o.add(r);let s=e_(e,r,n.qualifiedName);if(!s)return[];let c=e.usableMembers(s).getFiltered(t);if(!c)return[];let l=c.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Yp,{kind:t.kind,declaration:t.declaration,usedSymbol:t,useSpecifierDeclaration:i,name:t.name},n.filepath));for(let t of c.schemaMembers)a.has(t.name)||a.set(t.name,e.symbolFactory.create(jp,{name:t.name},n.filepath));let{reuses:{selective:u,wildcard:d}}=c;for(let r of u){let i=Xg(e,n,r,a).getFiltered(t);i&&l.push(i),l.push(...Zg(e,n,r))}for(let{importPath:t}of d)l.push(...$g(e,n,t,i,a,o));return l}function e_(e,n,r){if(r.length===0)return;let i=e.usableMembers(n).getFiltered(t);if(!i)return;let{schemaMembers:a}=i,o,s=[...r];for(;s.length>0;){let t=s.shift();if(o=a.find(e=>e.name===t),!o)return;let n=e.usableMembers(o).getValue();({schemaMembers:a}=n)}return o}function t_(e,n,r){if(!r.isKind(I.TableGroup)||!(r instanceof Yp))return[];let i=r.originalSymbol,a=e.symbolMembers(i).getFiltered(t);if(!a)return[];let o=n.qualifiedName,s=[];for(let t of a){if(!t.isKind(I.TableGroupField)||!t.declaration)continue;let n=t.declaration.callee;if(!n)continue;let i=M(n);if(!i||i.length===0)continue;let a=i.length<=1?[v]:i.slice(0,-1);if(a.length!==o.length||!o.every((e,t)=>e===a[t]))continue;let c=t.declaration.filepath,l=n_(e,c,i);l&&s.push(e.symbolFactory.create(Yp,{kind:I.Table,declaration:l.declaration,usedSymbol:l,useSpecifierDeclaration:void 0,name:l.name},r.filepath))}return s}function n_(e,n,r){if(r.length===1){let i=e.usableMembers(n).getFiltered(t);return i?i.nonSchemaMembers.find(e=>e.isKind(I.Table)&&e.name===r[0]):void 0}let i=r[0],a=r[r.length-1],o=e.usableMembers(n).getFiltered(t);if(!o)return;let s=o.schemaMembers.find(e=>e.name===i);if(!s)return;let c=e.usableMembers(s).getFiltered(t);if(c)return c.nonSchemaMembers.find(e=>e.isKind(I.Table)&&e.name===a)}var r_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof H)return[];let t=e.body.filter(e=>e instanceof z);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},i_=class{constructor(e,t,n){this.compiler=e,this.symbol=t,this.declarationNode=t.declaration,this.filepath=n,this.note={name:void 0,content:void 0,token:void 0}}interpret(){this.note.token=F(this.declarationNode);let e=[...this.interpretName(),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return n.create(this.note,e)}interpretName(){let{name:e}=this.symbol.interpretedName(this.compiler,this.filepath);return this.note.name=e,[]}interpretSettingList(e){let t=E(e).getValue();return t.color?.length&&(this.note.color=Tp(t.color.at(0)?.value)),[]}interpretBody(e){let[t,n]=g(e.body,e=>e instanceof H);return t.length!==1||n.length>0?[new T(w.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=N(e.callee)??``;return this.note.content=Cp(t),[]}},a_=[Cg,Zm,Xh,eh,Om,ag,Uh,zg,Wg,{nodeSymbol(i,a){return!A(a,r.Note)||!(a.parentNode instanceof R)?n.create(e):new n(i.symbolFactory.create(Rp,{declaration:a,name:i.nodeFullname(a).getFiltered(t)?.at(-1)},a.filepath))},symbolMembers(t,r){return r.isKind(I.StickyNote)?new n([]):n.create(e)},bindNode(t,i){return A(i,r.Note)?n.create(void 0,new r_(t,i).bind()):n.create(e)},interpretSymbol(t,r,i){return r instanceof Rp?r.declaration instanceof z?new i_(t,r,i).interpret():n.create(void 0):n.create(e)}},lg,Jg,Um,Bh];function o_(t,...r){for(let i of a_){let a=i[t];if(a){let t=a(...r);if(t instanceof n&&!t.hasValue(e))return t}}return n.create(e)}function s_(r){let i=o_(`nodeSymbol`,this,r);return i.hasValue(e)?n.create(t):i}function c_(r){let i=o_(`symbolMembers`,this,r);return i.hasValue(e)?n.create(t):i}function l_(r){let i=o_(`nodeReferee`,this,r);return i.hasValue(e)?n.create(t):i}function u_(r){let i=o_(`bindNode`,this,r);return i.hasValue(e)?n.create(t):i}function d_(r){let i=o_(`nodeMetadata`,this,r);return i.hasValue(e)?n.create(t):i}function f_(r,i){let a=o_(`interpretSymbol`,this,r,i);return a.hasValue(e)?n.create(t):a}function p_(r,i){let a=o_(`interpretMetadata`,this,r,i);return a.hasValue(e)?n.create(t):a}var m_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=new T(w.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof R?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new T(w.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new T(w.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof H)return[new T(w.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];return h(n)instanceof W&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof am))&&t.push(new T(w.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=E(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`name`:t.length>1&&t.forEach(t=>n.push(new T(w.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{D(t.value)||n.push(new T(w.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new T(w.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},h_={validateNode(t,i){if(!A(i,r.Checks))return n.create(e);let a=new m_(t,i);return n.create(void 0,a.validate())},nodeFullname(t,i){return A(i,r.Checks)?i.name?new n(void 0,[new T(w.UNEXPECTED_NAME,`A Checks shouldn't have a name`,i.name)]):new n(void 0):n.create(e)},nodeAlias(t,i){return A(i,r.Checks)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.Checks)?i.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}},g_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z&&this.declarationNode.parent.isKind(r.Project)?[]:[new T(w.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]}validateName(e){return e?[new T(w.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new T(w.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new T(w.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof U)return[new T(w.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return D(e.callee)||t.push(new T(w.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e)),e.args.length>0&&t.push(...e.args.map(e=>new T(w.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}};function __(e){return e instanceof z&&!!e.type?.value}var v_={validateNode(t,r){if(!__(r))return n.create(e);let i=new g_(t,r);return n.create(void 0,i.validate())},nodeFullname(t,r){return __(r)?r.name?new n(void 0,[new T(w.UNEXPECTED_NAME,`A custom field shouldn't have a name`,r.name)]):new n(void 0):n.create(e)},nodeAlias(t,r){return __(r)?r.alias?new n(void 0,[new T(w.UNEXPECTED_NAME,`A custom field shouldn't have an alias`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return __(r)?r.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`A custom field shouldn't have a setting list`,r.attributeList)]):new n({}):n.create(e)}},y_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){let e=[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList)],t=this.validateBody(this.declarationNode.body);return e.push(...t.errors),{errors:e,warnings:t.warnings}}validateContext(){return this.declarationNode.parent instanceof z?[new T(w.INVALID_DIAGRAMVIEW_CONTEXT,`DiagramView must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?wf(e)?[]:[new T(w.INVALID_NAME,`A DiagramView name must be a single identifier`,e)]:[new T(w.NAME_NOT_FOUND,`A DiagramView must have a name`,this.declarationNode)]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`A DiagramView shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=E(e),n=t.getErrors(),r=t.getValue();for(let e of Object.keys(r))n.push(...r[e].map(t=>new T(w.UNEXPECTED_SETTINGS,`Unknown '${e}' setting for DiagramView`,t)));return n}validateBody(e){if(!e)return{errors:[],warnings:[]};if(e instanceof H)return{errors:[new T(w.UNEXPECTED_SIMPLE_BODY,`A DiagramView's body must be a block`,e)],warnings:[]};let[t,n]=g(e.body,e=>e instanceof H),r=this.validateSubElements(n);return{errors:[...this.validateFields(t),...r.errors],warnings:r.warnings}}validateFields(e){return e.flatMap(e=>Pf(e.callee)?e.args.length>0?e.args.map(e=>new T(w.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)):[]:[new T(w.INVALID_DIAGRAMVIEW_FIELD,`Fields are not allowed at DiagramView level. Use Tables, Notes, TableGroups, or Schemas blocks instead.`,e)])}validateSubElements(e){let t=[],n=[],r=[`tables`,`notes`,`tablegroups`,`schemas`];for(let i of e){if(!i.type)continue;let e=i.type.value.toLowerCase();if(!r.includes(e)){t.push(new T(w.INVALID_DIAGRAMVIEW_FIELD,`Unknown block type "${i.type.value}" in DiagramView. Allowed: Tables, Notes, TableGroups, Schemas`,i));continue}let a=this.validateSubBlock(i);t.push(...a.errors),n.push(...a.warnings)}return{errors:t,warnings:n}}validateSubBlock(e){let t=[],n=[];if(Tf(e))return t.push(new T(w.UNEXPECTED_SIMPLE_BODY,`${e.type?.value} body must be a block`,e.bodyColon)),{errors:t,warnings:n};if(!e.body||!(e.body instanceof U))return{errors:t,warnings:n};let r=e.body,i=r.body.some(e=>e instanceof H&&Pf(e.callee)),a=r.body.some(e=>e instanceof H&&!Pf(e.callee));return i&&a&&n.push(new gf(w.INVALID_DIAGRAMVIEW_FIELD,`Wildcard (*) combined with specific items in ${e.type?.value} block. Specific items will be ignored.`,e)),t.push(...this.validateSubBlockFields(e)),{errors:t,warnings:n}}validateSubBlockFields(e){let t=[];if(!e.body||!(e.body instanceof U))return t;let n=e.body.body.filter(e=>e instanceof H);for(let e of n)Pf(e.callee)||(e.args.length>0||!M(e.callee))&&t.push(...e.args.map(e=>new T(w.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)));return t}},b_={validateNode(t,i){if(!A(i,r.DiagramView))return n.create(e);let{errors:a,warnings:o}=new y_(t,i).validate();return n.create(void 0,a,o)},nodeFullname(t,i){if(A(i,r.DiagramView)){if(!i.name)return new n(void 0,[new T(w.NAME_NOT_FOUND,`A DiagramView must have a name`,i)]);let e=M(i.name);return e?new n(e):new n(void 0)}else if(j(i,r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewSchemas,r.DiagramViewTableGroups)){let e=M(i.callee);return e?(e.length===1&&j(i,r.DiagramViewTables)&&e.unshift(v),new n(e)):new n(void 0)}return new n(e)},nodeAlias(t,i){return A(i,r.DiagramView)?new n(void 0):n.create(e)}},x_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z?[new T(w.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof um?[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as an Enum name`,e)]:Sf(e)?[]:[new T(w.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new T(w.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new T(w.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof H)return this.validateFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new T(w.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)];let t=[];for(let n of e){n.callee&&!O(n.callee)&&t.push(new T(w.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,n.callee));let e=[...n.args];h(e)instanceof W?(t.push(...this.validateFieldSettings(h(e))),e.pop()):e[0]instanceof W&&(t.push(...this.validateFieldSettings(e[0])),e.shift()),e.length>0&&t.push(...e.map(e=>new T(w.INVALID_ENUM_ELEMENT,`An Enum must have only a field and optionally a setting list`,e)))}return t}validateFieldSettings(e){let t=E(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];if(t)switch(e){case i.Note:t.length>1&&t.forEach(e=>n.push(new T(w.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{D(e.value)||n.push(new T(w.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new T(w.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},S_={validateNode(t,i){return A(i,r.Enum)?n.create(void 0,new x_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(A(i,r.Enum)){if(!i.name)return new n(void 0,[new T(w.NAME_NOT_FOUND,`An Enum must have a name`,i)]);if(!Sf(i.name))return new n(void 0,[new T(w.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,i.name)]);let e=M(i.name);return e?.length===1&&e.unshift(v),new n(e)}if(j(i,r.Enum)){let e=P(i.callee);return new n(e===void 0?void 0:[e])}return n.create(e)},nodeAlias(t,i){return A(i,r.Enum)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,i.alias)]):new n(void 0):j(i,r.Enum)?new n(void 0):n.create(e)},nodeSettings(t,a){if(A(a,r.Enum))return a.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,a.attributeList)]):new n({});if(j(a,r.Enum)){let e=[...a.args],t;if(h(e)instanceof W?t=h(e):e[0]instanceof W&&(t=e[0]),!t)return new n({});let r=E(t),o=r.getErrors(),s=r.getValue(),c={};for(let[e,t]of Object.entries(s))switch(e){case i.Note:t.length>1&&t.forEach(e=>o.push(new T(w.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{D(e.value)||o.push(new T(w.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new T(w.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}},C_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=new T(w.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof R?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new T(w.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new T(w.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof H)return[new T(w.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];return h(n)instanceof W&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof G;)e.argumentList&&np(e.argumentList)===void 0&&t.push(new T(w.INVALID_INDEXES_FIELD,`An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such`,e.argumentList)),e=e.callee;np(e)===void 0&&t.push(new T(w.INVALID_INDEXES_FIELD,`An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such`,e))}),t})}validateFieldSetting(e){let t=E(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`note`:case`name`:t.length>1&&t.forEach(t=>n.push(new T(w.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{D(t.value)||n.push(new T(w.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new T(w.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&n.push(new T(w.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new T(w.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{O(e.value)||n.push(new T(w.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new T(w.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},w_={validateNode(t,i){return A(i,r.Indexes)?n.create(void 0,new C_(t,i).validate()):n.create(e)},nodeFullname(t,i){return A(i,r.Indexes)?i.name?new n(void 0,[new T(w.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,i.name)]):new n(void 0):j(i,r.Indexes)?new n(void 0):n.create(e)},nodeAlias(t,i){return A(i,r.Indexes)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,i.alias)]):new n(void 0):j(i,r.Indexes)?new n(void 0):n.create(e)},nodeSettings(t,a){if(A(a,r.Indexes))return a.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,a.attributeList)]):new n({});if(j(a,r.Indexes)){let e=[a.callee,...a.args],t;if(h(e)instanceof W&&(t=h(e)),!t)return new n({});let r=E(t),o=r.getErrors(),s=r.getValue(),c={};for(let[e,t]of Object.entries(s))switch(e){case i.Note:case i.Name:t.length>1&&t.forEach(t=>o.push(new T(w.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{D(t.value)||o.push(new T(w.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))}),c[e]=t;break;case i.Unique:case i.PK:t.length>1&&t.forEach(t=>o.push(new T(w.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&o.push(new T(w.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))}),c[e]=t;break;case i.Type:t.length>1&&t.forEach(e=>o.push(new T(w.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{O(e.value)||o.push(new T(w.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new T(w.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}},T_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=this.declarationNode.parent;return!(e instanceof R)&&!(e instanceof z&&e.isKind(r.Table,r.TableGroup,r.TablePartial,r.Project))?[new T(w.INVALID_NOTE_CONTEXT,`A Note can only appear inside a Table, a TableGroup, a TablePartial or a Project. Sticky note can only appear at the global scope.`,this.declarationNode)]:[]}validateName(e){return this.compiler.nodeFullname(this.declarationNode).getErrors()}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,e)]:[]}isStickyNote(){return this.declarationNode.parent instanceof R}validateSettingList(e){if(!e)return[];if(!this.isStickyNote())return[new T(w.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)];let t=E(e),n=t.getErrors();return Ca(t.getValue(),(e,t)=>{switch(t){case i.Color:e.length>1&&n.push(...e.map(e=>new T(w.DUPLICATE_NOTE_SETTING,`'color' can only appear once`,e))),e.forEach(e=>{let t=Ff(e.value)&&e.value.expression.variable.value.toLowerCase()===`none`;!Of(e.value)&&!t&&n.push(new T(w.INVALID_NOTE_SETTING_VALUE,`'color' must be a color literal or 'none'`,e.value||e.name))});break;default:n.push(...e.map(e=>new T(w.UNKNOWN_NOTE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof H)return this.validateFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new T(w.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new T(w.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),D(e[0].callee)||t.push(new T(w.INVALID_NOTE,`A Note content must be a quoted string`,e[0])),e[0].args.length>0&&t.push(...e[0].args.map(e=>new T(w.INVALID_NOTE,`A Note can only contain one quoted string`,e))),t)}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},E_={validateNode(t,i){return A(i,r.Note)?n.create(void 0,new T_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(!A(i,r.Note))return n.create(e);if(!(i.parent instanceof R))return i.name?new n(void 0,[new T(w.UNEXPECTED_NAME,`A Note shouldn't have a name`,i.name)]):new n(void 0);if(!i.name)return new n(void 0,[new T(w.INVALID_NAME,`Sticky note must have a name`,i)]);if(i.name instanceof um)return new n(void 0,[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a Note name`,i.name)]);let a=M(i.name);return a===void 0?new n(void 0,[new T(w.INVALID_NAME,`Invalid name for sticky note `,i)]):new n(a)},nodeAlias(t,i){return A(i,r.Note)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.Note)?i.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}},D_=class{constructor(e,t){this.ast=t,this.compiler=e}validate(){let e=[],t=[];for(let n of this.ast.body){let r=this.compiler.validateNode(n);e.push(...r.getErrors()),t.push(...r.getWarnings())}return new n(this.ast,e,t)}},O_={validateNode(t,r){return zf(r)?n.create(void 0,new D_(t,r).validate().getErrors()):n.create(e)},nodeFullname(t,r){return zf(r)?new n(void 0):n.create(e)},nodeAlias(t,r){return zf(r)?new n(void 0):n.create(e)},nodeSettings(t,r){return zf(r)?new n({}):n.create(e)}},k_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name).getErrors(),...this.validateAlias(this.declarationNode.alias).getErrors(),...this.validateSettingList(this.declarationNode.attributeList).getErrors(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z?[new T(w.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?wf(e)?new n(M(e)):new n(void 0,[new T(w.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,e)]):new n(void 0)}validateAlias(e){return e?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]):new n(void 0)}validateSettingList(e){return e?new n({},[new T(w.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]):new n({})}validateBody(e){if(!e)return[];if(e instanceof H)return[new T(w.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=g(e.body,e=>e instanceof H);return[...t.map(e=>new T(w.INVALID_PROJECT_FIELD,`A Project can not have inline fields`,e)),...this.validateSubElements(n)]}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},A_={validateNode(t,i){return A(i,r.Project)?n.create(void 0,new k_(t,i).validate()):n.create(e)},nodeFullname(t,i){return A(i,r.Project)?i.name?wf(i.name)?new n(M(i.name)):new n(void 0,[new T(w.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):j(i,r.Project)?new n(void 0):n.create(e)},nodeAlias(t,i){return A(i,r.Project)&&i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,i.alias)]):j(i,r.Project)?new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.Project)?i.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,i.attributeList)]):new n({}):j(i,r.Project)?new n({}):n.create(e)}},j_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=this.declarationNode.parent;return e instanceof R||e instanceof z&&e.isKind(r.Table)?[]:[new T(w.INVALID_RECORDS_CONTEXT,`Records can only appear at top-level or inside a Table`,this.declarationNode)]}validateName(e){return e instanceof um?[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,e)]:this.declarationNode.parent instanceof R?this.validateTopLevelName(e):this.validateInsideTableName(e)}validateTopLevelName(e){if(!(e instanceof G))return[new T(w.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,e||this.declarationNode.type||this.declarationNode)];let t=[];return(!e.callee||!Sf(e.callee))&&t.push(new T(w.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,e.callee||e)),(!e.argumentList||!Mf(e.argumentList))&&t.push(new T(w.INVALID_RECORDS_NAME,`Records column list must be simple column names`,e.argumentList||e)),t}validateInsideTableName(e){return e&&!Mf(e)?[new T(w.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,e)]:[]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`Records cannot have an alias`,e)]:[]}validateSettingList(e){return e?[new T(w.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof H)return this.validateDataRow(e);let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateDataRows(t),...this.validateSubElements(n)]}validateDataRows(e){return e.flatMap(e=>this.validateDataRow(e))}validateDataRow(e){let t=[];if(!e.callee||e.args.length>0)return t.push(new T(w.INVALID_RECORDS_FIELD,`Invalid record row structure`,e)),t;if(e.callee instanceof sm)for(let n of e.callee.elementList)this.isValidRecordValue(n)||t.push(new T(w.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,n));else this.isValidRecordValue(e.callee)||t.push(new T(w.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,e.callee));return t}isValidRecordValue(e){if(e instanceof pm||Af(e)||D(e)||e instanceof am)return!0;if(O(e)){let t=e.expression.variable.value.toLowerCase();return So.includes(t)}if(k(e)){let t=M(e);return t!==void 0&&t.length>0}return!1}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},M_={validateNode(t,i){return A(i,r.Records)?n.create(void 0,new j_(t,i).validate()):n.create(e)},nodeFullname(i,a){if(A(a,r.Records)){if(a.name instanceof um)return new n(void 0,[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,a.name)]);if(a.parent instanceof R){if(!(a.name instanceof G))return new n(void 0,[new T(w.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,a.name||a.type||a)]);let e=[];(!a.name.callee||!Sf(a.name.callee))&&e.push(new T(w.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,a.name.callee||a.name)),(!a.name.argumentList||!Mf(a.name.argumentList))&&e.push(new T(w.INVALID_RECORDS_NAME,`Records column list must be simple column names`,a.name.argumentList||a.name));let t=M(a.name.callee);return t?.length===1&&t.unshift(v),new n(t,e)}else{let e=a.parent&&i.nodeFullname(a.parent).getFiltered(t);return a.name&&!Mf(a.name)?new n(e,[new T(w.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,a.name)]):new n(e)}}return j(a,r.Records)?new n(void 0):n.create(e)},nodeAlias(t,i){return A(i,r.Records)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`Records cannot have an alias`,i.alias)]):new n(void 0):j(i,r.Records)?new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.Records)?i.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,i.attributeList)]):new n({}):j(i,r.Records)?new n({}):n.create(e)}},N_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof R?[]:[new T(w.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?e instanceof um?[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a Ref name`,e)]:wf(e)?[]:[new T(w.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new T(w.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof H)return this.validateFields([e]);let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new T(w.EMPTY_REF,`A Ref must have at least one field`,this.declarationNode)];let t=[];return e.length>1&&t.push(...e.slice(1).map(e=>new T(w.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!Wf(e.callee)&&t.push(new T(w.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&Wf(e.callee)){let n=tp(e.callee.leftExpression)??{variables:[],tupleElements:[]},r=n.variables.length+Math.min(n.tupleElements.length,1),i=tp(e.callee.rightExpression)??{variables:[],tupleElements:[]},a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new T(w.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new T(w.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!Gf(e.callee)&&t.push(new T(w.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(h(n)instanceof W){let e=this.validateFieldSettings(h(n));t.push(...e),n.pop()}else n[0]instanceof W&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new T(w.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){return F_(e).getErrors()}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};function P_(e){if(!(O(e)&&e.expression.variable.kind!==_.QUOTED_STRING)&&!(e instanceof nm))return!1;let t;if(t=e instanceof nm?Xf(e)||``:e.expression.variable.value,t)switch(t.toLowerCase()){case`cascade`:case`no action`:case`set null`:case`set default`:case`restrict`:return!0;default:return!1}return!1}function F_(e){let t=E(e),r=t.getErrors(),a=t.getValue(),o={};for(let[e,t]of Object.entries(a))switch(e){case i.Delete:case i.Update:t.length>1&&t.forEach(t=>r.push(new T(w.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{P_(t.value)||r.push(new T(w.INVALID_REF_SETTING_VALUE,`'${e}' can only have values "cascade", "no action", "set null", "set default" or "restrict"`,t))}),o[e]=t;break;case i.Color:t.length>1&&r.push(...t.map(e=>new T(w.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Of(e.value)||r.push(new T(w.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))}),o[e]=t;break;case i.Inactive:t.length>1&&r.push(...t.map(e=>new T(w.DUPLICATE_REF_SETTING,`'inactive' can only appear once`,e))),t.forEach(e=>{e.value&&r.push(new T(w.INVALID_REF_SETTING_VALUE,`'inactive' cannot have a value`,e))}),o[e]=t;break;default:t.forEach(t=>r.push(new T(w.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}return new n(o,r)}var I_={validateNode(t,i){return A(i,r.Ref)?n.create(void 0,new N_(t,i).validate()):n.create(e)},nodeFullname(t,i){return A(i,r.Ref)?i.name?wf(i.name)?new n(M(i.name)):new n(void 0,[new T(w.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):j(i,r.Ref)?new n(void 0):n.create(e)},nodeAlias(t,i){return A(i,r.Ref)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,i.alias)]):new n(void 0):j(i,r.Ref)?new n(void 0):n.create(e)},nodeSettings(t,i){if(A(i,r.Ref))return i.attributeList?new n({},[new T(w.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,i.attributeList)]):new n({});if(j(i,r.Ref)){let e=[...i.args],t;return h(e)instanceof W?t=h(e):e[0]instanceof W&&(t=e[0]),t?F_(t):new n({})}return n.create(e)}},L_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z?[new T(w.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof mm?[new T(w.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:e instanceof um?[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a Table name`,e)]:Sf(e)?[]:[new T(w.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new T(w.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?Cf(e)?[]:[new T(w.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=E(e),n=t.getErrors();return Ca(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Of(e.value)||n.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&n.push(...e.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{D(e.value)||n.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new T(w.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof H)return[new T(w.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=e=>{let t=[];if(!e.callee)return[];e.args.length===0&&t.push(new T(w.INVALID_COLUMN,`A column must have a type`,e.callee)),O(e.callee)||t.push(new T(w.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Nf(e.args[0])&&t.push(new T(w.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t},n=e=>{let t=[];return e.callee?(Ef(e.callee)||t.push(new T(w.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection should be of the form ~<table-partial>`,e.callee)),e.args.length&&t.push(...e.args.map(e=>new T(w.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t):[]};return e.flatMap(e=>e.callee instanceof V&&e.callee.op?.value===`~`?n(e):t(e))}validateFieldSetting(e){if(!e.slice(0,-1).every(Ff)||!e.slice(-1).every(e=>Ff(e)||e instanceof W))return e.map(e=>new T(w.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let t;h(e)instanceof W&&(t=e.pop());let n=E(t),r=n.getErrors(),a=n.getValue();e.forEach(e=>{let t=(P(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){r.push(new T(w.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}a[t]===void 0?a[t]=[e]:a[t].push(e)});let o=a[i.PK]||[],s=a[i.PrimaryKey]||[];return o.length>=1&&s.length>=1&&r.push(...[...o,...s].map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Ca(a,(e,t)=>{switch(t){case i.Note:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{D(e.value)||r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{jf(e.value)||r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=a[i.Null]||[];e.length>=1&&t.length>=1&&r.push(...[...e,...t].map(e=>new T(w.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{kf(e.value)||r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'default' must be an enum value, a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof am||r.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new T(w.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),r}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new T(w.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function R_(e){let t=E(e),r=t.getErrors(),a=t.getValue();return Ca(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Of(e.value)||r.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{D(e.value)||r.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new T(w.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function z_(e){if(!e.slice(0,-1).every(Ff)||!e.slice(-1).every(e=>Ff(e)||e instanceof W))return new n({},e.map(e=>new T(w.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e)));if(e.length===0)return new n({});let t;h(e)instanceof W&&(t=e.pop());let r=E(t),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(P(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new T(w.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}o[t]===void 0?o[t]=[e]:o[t].push(e)});let s=o[i.PK]||[],c=o[i.PrimaryKey]||[];return s.length>=1&&c.length>=1&&a.push(...[...s,...c].map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Ca(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{D(e.value)||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{jf(e.value)||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=o[i.Null]||[];e.length>=1&&t.length>=1&&a.push(...[...e,...t].map(e=>new T(w.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{kf(e.value)||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'default' must be an enum value, a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof am||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new T(w.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(o,a)}var B_={validateNode(t,i){return A(i,r.Table)?n.create(void 0,new L_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(A(i,r.Table)){if(!i.name)return new n(void 0,[new T(w.NAME_NOT_FOUND,`A Table must have a name`,i)]);if(i.name instanceof mm)return new n(void 0,[new T(w.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,i.name)]);let e=M(i.name);return e?.length===1&&e.unshift(v),new n(e)}if(j(i,r.Table)){if(Ef(i.callee)){let e=P(i.callee.expression);return new n(e?[e]:void 0)}let e=P(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return A(i,r.Table)?i.alias?Cf(i.alias)?new n(P(i.alias)):new n(void 0,[new T(w.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,i.alias)]):new n(void 0):j(i,r.Table)?new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.Table)?i.attributeList?R_(i.attributeList):new n({}):j(i,r.Table)?z_(i.args.slice(1)):n.create(e)}},V_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z?[new T(w.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof um?[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a TableGroup name`,e)]:wf(e)?[]:[new T(w.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new T(w.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=E(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`color`:t.length>1&&n.push(...t.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Of(e.value)||n.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))});break;case`note`:t.length>1&&n.push(...t.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!D(e.value)).forEach(e=>{n.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...t.map(t=>new T(w.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return n}validateBody(e){if(!e)return[];if(e instanceof H)return[new T(w.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&M(e.callee)===void 0&&t.push(new T(w.INVALID_TABLEGROUP_FIELD,`A TableGroup field must be of the form <table> or <schema>.<table>`,e.callee)),e.args.length>0&&t.push(...e.args.map(e=>new T(w.INVALID_TABLEGROUP_FIELD,`A TableGroup field should only have a single Table name`,e))),t})}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new T(w.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function H_(e){let t=E(e),r=t.getErrors(),i=t.getValue(),a={};for(let[e,t]of Object.entries(i))switch(e){case`color`:t.length>1&&r.push(...t.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Of(e.value)||r.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))}),a[e]=t;break;case`note`:t.length>1&&r.push(...t.map(e=>new T(w.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!D(e.value)).forEach(e=>{r.push(new T(w.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))}),a[e]=t;break;default:r.push(...t.map(t=>new T(w.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return new n(a,r)}var U_={validateNode(t,i){return A(i,r.TableGroup)?n.create(void 0,new V_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(A(i,r.TableGroup))return i.name?wf(i.name)?new n(M(i.name)):new n(void 0,[new T(w.INVALID_NAME,`A TableGroup name must be a single identifier`,i.name)]):new n(void 0,[new T(w.NAME_NOT_FOUND,`A TableGroup must have a name`,i)]);if(j(i,r.TableGroup)){let e=M(i.callee);return e?.length===1&&e.unshift(v),new n(e)}return n.create(e)},nodeAlias(t,i){return A(i,r.TableGroup)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,i.alias)]):new n(void 0):j(i,r.TableGroup)?new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.TableGroup)?H_(i.attributeList):j(i,r.TableGroup)?new n({}):n.create(e)}},W_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z?[new T(w.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof um?[new T(w.INVALID_NAME,`Wildcard (*) is not allowed as a TablePartial name`,e)]:wf(e)?[]:[new T(w.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new T(w.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new T(w.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=E(e),n=t.getErrors();return Ca(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new T(w.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Of(e.value)||n.push(new T(w.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&n.push(...e.map(e=>new T(w.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{D(e.value)||n.push(new T(w.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new T(w.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof H)return[new T(w.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=g(e.body,e=>e instanceof H);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[];e.args.length===0&&t.push(new T(w.INVALID_COLUMN,`A column must have a type`,e.callee)),O(e.callee)||t.push(new T(w.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Nf(e.args[0])&&t.push(new T(w.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t})}validateFieldSetting(e){let t=h(e);if(!e.slice(0,-1).every(Ff)||!(Ff(t)||t instanceof W))return e.map(e=>new T(w.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let n;h(e)instanceof W&&(n=e.pop());let r=E(n),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(P(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new T(w.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}o[t]===void 0?o[t]=[e]:o[t].push(e)});let s=o[i.PK]||[],c=o[i.PrimaryKey]||[];return s.length>=1&&c.length>=1&&a.push(...[...s,...c].map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Ca(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{D(e.value)||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{jf(e.value)||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=o[i.Null]||[];e.length>=1&&n.length>=1&&a.push(...[...e,...n].map(e=>new T(w.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&a.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{kf(e.value)||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof am||a.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new T(w.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),a}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new T(w.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function G_(e){let t=E(e),r=t.getErrors(),a=t.getValue();return Ca(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Of(e.value)||r.push(new T(w.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&r.push(...e.map(e=>new T(w.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{D(e.value)||r.push(new T(w.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new T(w.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function K_(e){let t=h(e);if(e.length>0&&(!e.slice(0,-1).every(Ff)||!(Ff(t)||t instanceof W)))return new n({},e.map(e=>new T(w.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e)));if(e.length===0)return new n({});let r;h(e)instanceof W&&(r=e.pop());let a=E(r),o=a.getErrors(),s=a.getValue();e.forEach(e=>{let t=(P(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){o.push(new T(w.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}s[t]===void 0?s[t]=[e]:s[t].push(e)});let c=s[i.PK]||[],l=s[i.PrimaryKey]||[];return c.length>=1&&l.length>=1&&o.push(...[...c,...l].map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Ca(s,(e,t)=>{switch(t){case i.Note:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{D(e.value)||o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{jf(e.value)||o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=s[i.Null]||[];e.length>=1&&n.length>=1&&o.push(...[...e,...n].map(e=>new T(w.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof B&&e.value!==void 0&&o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&o.push(...e.map(e=>new T(w.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{kf(e.value)||o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof am||o.push(new T(w.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>o.push(new T(w.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(s,o)}var q_={validateNode(t,i){return A(i,r.TablePartial)?n.create(void 0,new W_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(A(i,r.TablePartial))return i.name?wf(i.name)?new n(M(i.name)):new n(void 0,[new T(w.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,i.name)]):new n(void 0,[new T(w.NAME_NOT_FOUND,`A TablePartial must have a name`,i)]);if(j(i,r.TablePartial)){let e=P(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return A(i,r.TablePartial)?i.alias?new n(void 0,[new T(w.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,i.alias)]):new n(P(i.alias)):j(i,r.TablePartial)?new n(void 0):n.create(e)},nodeSettings(t,i){return A(i,r.TablePartial)?G_(i.attributeList):j(i,r.TablePartial)?K_(i.args.slice(1)):n.create(e)}},J_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateBody()]}validateContext(){return this.declarationNode.parent instanceof R?[]:[new T(w.INVALID_USE_CONTEXT,`'use' must appear at the top level`,this.declarationNode)]}validateBody(){let e=[];if(this.declarationNode.importPath&&!bo.isRelative(this.declarationNode.importPath.value)&&e.push(new T(w.INVALID_USE_SPECIFIER_NAME,`Import path must be a relative path (starting with './' or '../')`,this.declarationNode.importPath)),this.declarationNode.specifiers instanceof um)return[];for(let t of this.declarationNode.specifiers?.specifiers||[])e.push(...this.validateSpecifier(t));return e}validateSpecifier(e){let t=[];return e.importKind===void 0?t.push(new T(w.INVALID_USE_SPECIFIER_KIND,`A use specifier must have a type (e.g. table, enum)`,e)):e.isKind(...Object.values(Op))||t.push(new T(w.INVALID_USE_SPECIFIER_KIND,`'${e.importKind.value}' is not a valid specifier type`,e.importKind)),[...t,...this.compiler.nodeFullname(e).getErrors(),...this.compiler.nodeAlias(e).getErrors()]}},Y_=[B_,S_,M_,w_,h_,I_,A_,U_,q_,E_,b_,O_,{validateNode(t,r){return r instanceof $p?n.create(void 0,new J_(t,r).validate()):n.create(e)},nodeFullname(t,r){if(!Rf(r))return n.create(e);let i=M(r.name);return!i||i.length===0?n.create(void 0,[new T(w.INVALID_NAME,`Use specifiers must have a valid name (simple name or schema-qualified name)`,r)]):r.isKind(Op.TableGroup)&&i.length>1?n.create(i,[new T(w.INVALID_USE_SPECIFIER_NAME,`A TableGroup name must be a simple name`,r)]):r.isKind(Op.TablePartial)&&i.length>1?n.create(i,[new T(w.INVALID_USE_SPECIFIER_NAME,`A TablePartial name must be a simple name`,r)]):r.isKind(Op.Note)&&i.length>1?n.create(i,[new T(w.INVALID_USE_SPECIFIER_NAME,`A Sticky note name must be a simple name`,r)]):(i.length===1&&!r.isKind(Op.Schema)&&i.unshift(v),new n(i))},nodeAlias(t,r){return Rf(r)?r.alias?Cf(r.alias)?new n(P(r.alias)):new n(void 0,[new T(w.INVALID_ALIAS,`Use aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return r instanceof $p?n.create({}):n.create(e)}},v_];function X_(t,...r){for(let n of Y_){let i=n[t];if(i){let t=i(...r);if(!t.hasValue(e))return t}}return n.create(e)}function Z_(r){let i=X_(`validateNode`,this,r);return i.hasValue(e)?n.create(t):i}function Q_(r){let i=X_(`nodeSettings`,this,r);return i.hasValue(e)?n.create(t):i}function $_(r){let i=X_(`nodeFullname`,this,r);return i.hasValue(e)?n.create(t):i}function ev(r){let i=X_(`nodeAlias`,this,r);return i.hasValue(e)?n.create(t):i}var tv=typeof document<`u`&&document.location&&document.location.hash.indexOf(`pseudo=true`)>=0;function nv(e,t){let n;return n=t.length===0?e:e.replace(/\{(\d+)\}/g,(e,n)=>{let r=t[n[0]],i=e;return typeof r==`string`?i=r:(typeof r==`number`||typeof r==`boolean`||r==null)&&(i=String(r)),i}),tv&&(n=`[`+n.replace(/[aouei]/g,`$&$&`)+`]`),n}function rv(e,t,...n){return nv(t,n)}var iv=!1,av=!1,ov=!1,sv=!1,cv=void 0,lv=typeof self==`object`?self:typeof global==`object`?global:{},uv=void 0;lv.vscode!==void 0&&lv.vscode.process!==void 0?uv=lv.vscode.process:typeof process<`u`&&(uv=process);var dv=typeof uv?.versions?.electron==`string`&&uv?.type===`renderer`;if(typeof navigator==`object`&&!dv)cv=navigator.userAgent,iv=cv.indexOf(`Windows`)>=0,av=cv.indexOf(`Macintosh`)>=0,(cv.indexOf(`Macintosh`)>=0||cv.indexOf(`iPad`)>=0||cv.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,ov=cv.indexOf(`Linux`)>=0,cv?.indexOf(`Mobi`),sv=!0,rv({key:`ensureLoaderPluginIsLoaded`,comment:[`{Locked}`]},`_`),navigator.language;else if(typeof uv==`object`){iv=uv.platform===`win32`,av=uv.platform===`darwin`,ov=uv.platform===`linux`,ov&&uv.env.SNAP&&uv.env.SNAP_REVISION,uv.env.CI||uv.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=uv.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.availableLanguages[`*`],t.locale,t.osLocale,t._translationsConfigFile}catch{}}else console.error(`Unable to resolve platform.`);var fv=iv,pv=av;sv&&lv.importScripts;var mv=cv,hv=typeof lv.postMessage==`function`&&!lv.importScripts;(()=>{if(hv){let e=[];lv.addEventListener(`message`,t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,r=e.length;n<r;n++){let r=e[n];if(r.id===t.data.vscodeScheduleAsyncWork){e.splice(n,1),r.callback();return}}});let t=0;return n=>{let r=++t;e.push({id:r,callback:n}),lv.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})();var gv=!!(mv&&mv.indexOf(`Chrome`)>=0);mv&&mv.indexOf(`Firefox`),!gv&&mv&&mv.indexOf(`Safari`),mv&&mv.indexOf(`Edg/`),mv&&mv.indexOf(`Android`);var _v;if(lv.vscode!==void 0&&lv.vscode.process!==void 0){let e=lv.vscode.process;_v={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else _v=typeof process<`u`?{get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:{get platform(){return fv?`win32`:pv?`darwin`:`linux`},get arch(){},get env(){return{}},cwd(){return`/`}};var vv=_v.cwd,yv=_v.env,bv=_v.platform,xv=65,Sv=97,Cv=90,wv=122,Tv=46,Ev=47,Dv=92,Ov=58,kv=63,Av=class extends Error{constructor(e,t,n){let r;typeof t==`string`&&t.indexOf(`not `)===0?(r=`must not be`,t=t.replace(/^not /,``)):r=`must be`;let i=`The "${e}" ${e.indexOf(`.`)===-1?`argument`:`property`} ${r} of type ${t}`;i+=`. Received type ${typeof n}`,super(i),this.code=`ERR_INVALID_ARG_TYPE`}};function jv(e,t){if(typeof e!=`object`||!e)throw new Av(t,`Object`,e)}function Mv(e,t){if(typeof e!=`string`)throw new Av(t,`string`,e)}var Nv=bv===`win32`;function q(e){return e===Ev||e===Dv}function Pv(e){return e===Ev}function Fv(e){return e>=xv&&e<=Cv||e>=Sv&&e<=wv}function Iv(e,t,n,r){let i=``,a=0,o=-1,s=0,c=0;for(let l=0;l<=e.length;++l){if(l<e.length)c=e.charCodeAt(l);else if(r(c))break;else c=Ev;if(r(c)){if(!(o===l-1||s===1))if(s===2){if(i.length<2||a!==2||i.charCodeAt(i.length-1)!==Tv||i.charCodeAt(i.length-2)!==Tv){if(i.length>2){let e=i.lastIndexOf(n);e===-1?(i=``,a=0):(i=i.slice(0,e),a=i.length-1-i.lastIndexOf(n)),o=l,s=0;continue}else if(i.length!==0){i=``,a=0,o=l,s=0;continue}}t&&(i+=i.length>0?`${n}..`:`..`,a=2)}else i.length>0?i+=`${n}${e.slice(o+1,l)}`:i=e.slice(o+1,l),a=l-o-1;o=l,s=0}else c===Tv&&s!==-1?++s:s=-1}return i}function Lv(e,t){jv(t,`pathObject`);let n=t.dir||t.root,r=t.base||`${t.name||``}${t.ext||``}`;return n?n===t.root?`${n}${r}`:`${n}${e}${r}`:r}var Rv={resolve(...e){let t=``,n=``,r=!1;for(let i=e.length-1;i>=-1;i--){let a;if(i>=0){if(a=e[i],Mv(a,`path`),a.length===0)continue}else t.length===0?a=vv():(a=yv[`=${t}`]||vv(),(a===void 0||a.slice(0,2).toLowerCase()!==t.toLowerCase()&&a.charCodeAt(2)===Dv)&&(a=`${t}\\`));let o=a.length,s=0,c=``,l=!1,u=a.charCodeAt(0);if(o===1)q(u)&&(s=1,l=!0);else if(q(u))if(l=!0,q(a.charCodeAt(1))){let e=2,t=e;for(;e<o&&!q(a.charCodeAt(e));)e++;if(e<o&&e!==t){let n=a.slice(t,e);for(t=e;e<o&&q(a.charCodeAt(e));)e++;if(e<o&&e!==t){for(t=e;e<o&&!q(a.charCodeAt(e));)e++;(e===o||e!==t)&&(c=`\\\\${n}\\${a.slice(t,e)}`,s=e)}}}else s=1;else Fv(u)&&a.charCodeAt(1)===Ov&&(c=a.slice(0,2),s=2,o>2&&q(a.charCodeAt(2))&&(l=!0,s=3));if(c.length>0)if(t.length>0){if(c.toLowerCase()!==t.toLowerCase())continue}else t=c;if(r){if(t.length>0)break}else if(n=`${a.slice(s)}\\${n}`,r=l,l&&t.length>0)break}return n=Iv(n,!r,`\\`,q),r?`${t}\\${n}`:`${t}${n}`||`.`},normalize(e){Mv(e,`path`);let t=e.length;if(t===0)return`.`;let n=0,r,i=!1,a=e.charCodeAt(0);if(t===1)return Pv(a)?`\\`:e;if(q(a))if(i=!0,q(e.charCodeAt(1))){let i=2,a=i;for(;i<t&&!q(e.charCodeAt(i));)i++;if(i<t&&i!==a){let o=e.slice(a,i);for(a=i;i<t&&q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&!q(e.charCodeAt(i));)i++;if(i===t)return`\\\\${o}\\${e.slice(a)}\\`;i!==a&&(r=`\\\\${o}\\${e.slice(a,i)}`,n=i)}}}else n=1;else Fv(a)&&e.charCodeAt(1)===Ov&&(r=e.slice(0,2),n=2,t>2&&q(e.charCodeAt(2))&&(i=!0,n=3));let o=n<t?Iv(e.slice(n),!i,`\\`,q):``;return o.length===0&&!i&&(o=`.`),o.length>0&&q(e.charCodeAt(t-1))&&(o+=`\\`),r===void 0?i?`\\${o}`:o:i?`${r}\\${o}`:`${r}${o}`},isAbsolute(e){Mv(e,`path`);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return q(n)||t>2&&Fv(n)&&e.charCodeAt(1)===Ov&&q(e.charCodeAt(2))},join(...e){if(e.length===0)return`.`;let t,n;for(let r=0;r<e.length;++r){let i=e[r];Mv(i,`path`),i.length>0&&(t===void 0?t=n=i:t+=`\\${i}`)}if(t===void 0)return`.`;let r=!0,i=0;if(typeof n==`string`&&q(n.charCodeAt(0))){++i;let e=n.length;e>1&&q(n.charCodeAt(1))&&(++i,e>2&&(q(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i<t.length&&q(t.charCodeAt(i));)i++;i>=2&&(t=`\\${t.slice(i)}`)}return Rv.normalize(t)},relative(e,t){if(Mv(e,`from`),Mv(t,`to`),e===t)return``;let n=Rv.resolve(e),r=Rv.resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===Dv;)i++;let a=e.length;for(;a-1>i&&e.charCodeAt(a-1)===Dv;)a--;let o=a-i,s=0;for(;s<t.length&&t.charCodeAt(s)===Dv;)s++;let c=t.length;for(;c-1>s&&t.charCodeAt(c-1)===Dv;)c--;let l=c-s,u=o<l?o:l,d=-1,f=0;for(;f<u;f++){let n=e.charCodeAt(i+f);if(n!==t.charCodeAt(s+f))break;n===Dv&&(d=f)}if(f!==u){if(d===-1)return r}else{if(l>u){if(t.charCodeAt(s+f)===Dv)return r.slice(s+f+1);if(f===2)return r.slice(s+f)}o>u&&(e.charCodeAt(i+f)===Dv?d=f:f===2&&(d=3)),d===-1&&(d=0)}let p=``;for(f=i+d+1;f<=a;++f)(f===a||e.charCodeAt(f)===Dv)&&(p+=p.length===0?`..`:`\\..`);return s+=d,p.length>0?`${p}${r.slice(s,c)}`:(r.charCodeAt(s)===Dv&&++s,r.slice(s,c))},toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=Rv.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===Dv){if(t.charCodeAt(1)===Dv){let e=t.charCodeAt(2);if(e!==kv&&e!==Tv)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(Fv(t.charCodeAt(0))&&t.charCodeAt(1)===Ov&&t.charCodeAt(2)===Dv)return`\\\\?\\${t}`;return e},dirname(e){Mv(e,`path`);let t=e.length;if(t===0)return`.`;let n=-1,r=0,i=e.charCodeAt(0);if(t===1)return q(i)?e:`.`;if(q(i)){if(n=r=1,q(e.charCodeAt(1))){let i=2,a=i;for(;i<t&&!q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&!q(e.charCodeAt(i));)i++;if(i===t)return e;i!==a&&(n=r=i+1)}}}}else Fv(i)&&e.charCodeAt(1)===Ov&&(n=t>2&&q(e.charCodeAt(2))?3:2,r=n);let a=-1,o=!0;for(let n=t-1;n>=r;--n)if(q(e.charCodeAt(n))){if(!o){a=n;break}}else o=!1;if(a===-1){if(n===-1)return`.`;a=n}return e.slice(0,a)},basename(e,t){t!==void 0&&Mv(t,`ext`),Mv(e,`path`);let n=0,r=-1,i=!0,a;if(e.length>=2&&Fv(e.charCodeAt(0))&&e.charCodeAt(1)===Ov&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return``;let o=t.length-1,s=-1;for(a=e.length-1;a>=n;--a){let c=e.charCodeAt(a);if(q(c)){if(!i){n=a+1;break}}else s===-1&&(i=!1,s=a+1),o>=0&&(c===t.charCodeAt(o)?--o===-1&&(r=a):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}for(a=e.length-1;a>=n;--a)if(q(e.charCodeAt(a))){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){Mv(e,`path`);let t=0,n=-1,r=0,i=-1,a=!0,o=0;e.length>=2&&e.charCodeAt(1)===Ov&&Fv(e.charCodeAt(0))&&(t=r=2);for(let s=e.length-1;s>=t;--s){let t=e.charCodeAt(s);if(q(t)){if(!a){r=s+1;break}continue}i===-1&&(a=!1,i=s+1),t===Tv?n===-1?n=s:o!==1&&(o=1):n!==-1&&(o=-1)}return n===-1||i===-1||o===0||o===1&&n===i-1&&n===r+1?``:e.slice(n,i)},format:Lv.bind(null,`\\`),parse(e){Mv(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.length,r=0,i=e.charCodeAt(0);if(n===1)return q(i)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(q(i)){if(r=1,q(e.charCodeAt(1))){let t=2,i=t;for(;t<n&&!q(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&q(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&!q(e.charCodeAt(t));)t++;t===n?r=t:t!==i&&(r=t+1)}}}}else if(Fv(i)&&e.charCodeAt(1)===Ov){if(n<=2)return t.root=t.dir=e,t;if(r=2,q(e.charCodeAt(2))){if(n===3)return t.root=t.dir=e,t;r=3}}r>0&&(t.root=e.slice(0,r));let a=-1,o=r,s=-1,c=!0,l=e.length-1,u=0;for(;l>=r;--l){if(i=e.charCodeAt(l),q(i)){if(!c){o=l+1;break}continue}s===-1&&(c=!1,s=l+1),i===Tv?a===-1?a=l:u!==1&&(u=1):a!==-1&&(u=-1)}return s!==-1&&(a===-1||u===0||u===1&&a===s-1&&a===o+1?t.base=t.name=e.slice(o,s):(t.name=e.slice(o,a),t.base=e.slice(o,s),t.ext=e.slice(a,s))),o>0&&o!==r?t.dir=e.slice(0,o-1):t.dir=t.root,t},sep:`\\`,delimiter:`;`,win32:null,posix:null},zv=(()=>{if(Nv){let e=/\\/g;return()=>{let t=vv().replace(e,`/`);return t.slice(t.indexOf(`/`))}}return()=>vv()})(),Bv={resolve(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:zv();Mv(i,`path`),i.length!==0&&(t=`${i}/${t}`,n=i.charCodeAt(0)===Ev)}return t=Iv(t,!n,`/`,Pv),n?`/${t}`:t.length>0?t:`.`},normalize(e){if(Mv(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ev,n=e.charCodeAt(e.length-1)===Ev;return e=Iv(e,!t,`/`,Pv),e.length===0?t?`/`:n?`./`:`.`:(n&&(e+=`/`),t?`/${e}`:e)},isAbsolute(e){return Mv(e,`path`),e.length>0&&e.charCodeAt(0)===Ev},join(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];Mv(r,`path`),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:Bv.normalize(t)},relative(e,t){if(Mv(e,`from`),Mv(t,`to`),e===t||(e=Bv.resolve(e),t=Bv.resolve(t),e===t))return``;let n=e.length,r=n-1,i=t.length-1,a=r<i?r:i,o=-1,s=0;for(;s<a;s++){let n=e.charCodeAt(1+s);if(n!==t.charCodeAt(1+s))break;n===Ev&&(o=s)}if(s===a)if(i>a){if(t.charCodeAt(1+s)===Ev)return t.slice(1+s+1);if(s===0)return t.slice(1+s)}else r>a&&(e.charCodeAt(1+s)===Ev?o=s:s===0&&(o=0));let c=``;for(s=1+o+1;s<=n;++s)(s===n||e.charCodeAt(s)===Ev)&&(c+=c.length===0?`..`:`/..`);return`${c}${t.slice(1+o)}`},toNamespacedPath(e){return e},dirname(e){if(Mv(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ev,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===Ev){if(!r){n=t;break}}else r=!1;return n===-1?t?`/`:`.`:t&&n===1?`//`:e.slice(0,n)},basename(e,t){t!==void 0&&Mv(t,`ext`),Mv(e,`path`);let n=0,r=-1,i=!0,a;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return``;let o=t.length-1,s=-1;for(a=e.length-1;a>=0;--a){let c=e.charCodeAt(a);if(c===Ev){if(!i){n=a+1;break}}else s===-1&&(i=!1,s=a+1),o>=0&&(c===t.charCodeAt(o)?--o===-1&&(r=a):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}for(a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===Ev){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){Mv(e,`path`);let t=-1,n=0,r=-1,i=!0,a=0;for(let o=e.length-1;o>=0;--o){let s=e.charCodeAt(o);if(s===Ev){if(!i){n=o+1;break}continue}r===-1&&(i=!1,r=o+1),s===Tv?t===-1?t=o:a!==1&&(a=1):t!==-1&&(a=-1)}return t===-1||r===-1||a===0||a===1&&t===r-1&&t===n+1?``:e.slice(t,r)},format:Lv.bind(null,`/`),parse(e){Mv(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===Ev,r;n?(t.root=`/`,r=1):r=0;let i=-1,a=0,o=-1,s=!0,c=e.length-1,l=0;for(;c>=r;--c){let t=e.charCodeAt(c);if(t===Ev){if(!s){a=c+1;break}continue}o===-1&&(s=!1,o=c+1),t===Tv?i===-1?i=c:l!==1&&(l=1):i!==-1&&(l=-1)}if(o!==-1){let r=a===0&&n?1:a;i===-1||l===0||l===1&&i===o-1&&i===a+1?t.base=t.name=e.slice(r,o):(t.name=e.slice(r,i),t.base=e.slice(r,o),t.ext=e.slice(i,o))}return a>0?t.dir=e.slice(0,a-1):n&&(t.dir=`/`),t},sep:`/`,delimiter:`:`,win32:null,posix:null};Bv.win32=Rv.win32=Rv,Bv.posix=Rv.posix=Bv,Nv?Rv.normalize:Bv.normalize,Nv?Rv.resolve:Bv.resolve,Nv?Rv.relative:Bv.relative,Nv?Rv.dirname:Bv.dirname,Nv?Rv.basename:Bv.basename,Nv?Rv.extname:Bv.extname,Nv?Rv.sep:Bv.sep;var Vv=/^\w[\w\d+.-]*$/,Hv=/^\//,Uv=/^\/\//;function Wv(e,t){if(!e.scheme&&t)throw Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!Vv.test(e.scheme))throw Error(`[UriError]: Scheme contains illegal characters.`);if(e.path){if(e.authority){if(!Hv.test(e.path))throw Error(`[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character`)}else if(Uv.test(e.path))throw Error(`[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")`)}}function Gv(e,t){return!e&&!t?`file`:e}function Kv(e,t){switch(e){case`https`:case`http`:case`file`:t?t[0]!==qv&&(t=qv+t):t=qv;break}return t}var J=``,qv=`/`,Jv=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,Yv=class e{static isUri(t){return t instanceof e?!0:t?typeof t.authority==`string`&&typeof t.fragment==`string`&&typeof t.path==`string`&&typeof t.query==`string`&&typeof t.scheme==`string`&&typeof t.fsPath==`string`&&typeof t.with==`function`&&typeof t.toString==`function`:!1}constructor(e,t,n,r,i,a=!1){typeof e==`object`?(this.scheme=e.scheme||J,this.authority=e.authority||J,this.path=e.path||J,this.query=e.query||J,this.fragment=e.fragment||J):(this.scheme=Gv(e,a),this.authority=t||J,this.path=Kv(this.scheme,n||J),this.query=r||J,this.fragment=i||J,Wv(this,a))}get fsPath(){return ty(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:a}=e;return t===void 0?t=this.scheme:t===null&&(t=J),n===void 0?n=this.authority:n===null&&(n=J),r===void 0?r=this.path:r===null&&(r=J),i===void 0?i=this.query:i===null&&(i=J),a===void 0?a=this.fragment:a===null&&(a=J),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&a===this.fragment?this:new Zv(t,n,r,i,a)}static parse(e,t=!1){let n=Jv.exec(e);return n?new Zv(n[2]||J,ay(n[4]||J),ay(n[5]||J),ay(n[7]||J),ay(n[9]||J),t):new Zv(J,J,J,J,J)}static file(e){let t=J;if(fv&&(e=e.replace(/\\/g,qv)),e[0]===qv&&e[1]===qv){let n=e.indexOf(qv,2);n===-1?(t=e.substring(2),e=qv):(t=e.substring(2,n),e=e.substring(n)||qv)}return new Zv(`file`,t,e,J,J)}static from(e,t){return new Zv(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(t,...n){if(!t.path)throw Error(`[UriError]: cannot call joinPath on URI without path`);let r;return r=fv&&t.scheme===`file`?e.file(Rv.join(ty(t,!0),...n)).path:Bv.join(t.path,...n),t.with({path:r})}toString(e=!1){return ny(this,e)}toJSON(){return this}static revive(t){if(!t||t instanceof e)return t;{let e=new Zv(t);return e._formatted=t.external??null,e._fsPath=t._sep===Xv?t.fsPath??null:null,e}}},Xv=fv?1:void 0,Zv=class extends Yv{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||=ty(this,!1),this._fsPath}toString(e=!1){return e?ny(this,!0):(this._formatted||=ny(this,!1),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Xv),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}},Qv={58:`%3A`,47:`%2F`,63:`%3F`,35:`%23`,91:`%5B`,93:`%5D`,64:`%40`,33:`%21`,36:`%24`,38:`%26`,39:`%27`,40:`%28`,41:`%29`,42:`%2A`,43:`%2B`,44:`%2C`,59:`%3B`,61:`%3D`,32:`%20`};function $v(e,t,n){let r,i=-1;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||o===45||o===46||o===95||o===126||t&&o===47||n&&o===91||n&&o===93||n&&o===58)i!==-1&&(r+=encodeURIComponent(e.substring(i,a)),i=-1),r!==void 0&&(r+=e.charAt(a));else{r===void 0&&(r=e.substr(0,a));let t=Qv[o];t===void 0?i===-1&&(i=a):(i!==-1&&(r+=encodeURIComponent(e.substring(i,a)),i=-1),r+=t)}}return i!==-1&&(r+=encodeURIComponent(e.substring(i))),r===void 0?e:r}function ey(e){let t;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r===35||r===63?(t===void 0&&(t=e.substr(0,n)),t+=Qv[r]):t!==void 0&&(t+=e[n])}return t===void 0?e:t}function ty(e,t){let n;return n=e.authority&&e.path.length>1&&e.scheme===`file`?`//${e.authority}${e.path}`:e.path.charCodeAt(0)===47&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&e.path.charCodeAt(2)===58?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,fv&&(n=n.replace(/\//g,`\\`)),n}function ny(e,t){let n=t?ey:$v,r=``,{scheme:i,authority:a,path:o,query:s,fragment:c}=e;if(i&&(r+=i,r+=`:`),(a||i===`file`)&&(r+=qv,r+=qv),a){let e=a.indexOf(`@`);if(e!==-1){let t=a.substr(0,e);a=a.substr(e+1),e=t.lastIndexOf(`:`),e===-1?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=`:`,r+=n(t.substr(e+1),!1,!0)),r+=`@`}a=a.toLowerCase(),e=a.lastIndexOf(`:`),e===-1?r+=n(a,!1,!0):(r+=n(a.substr(0,e),!1,!0),r+=a.substr(e))}if(o){if(o.length>=3&&o.charCodeAt(0)===47&&o.charCodeAt(2)===58){let e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&o.charCodeAt(1)===58){let e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}r+=n(o,!0,!1)}return s&&(r+=`?`,r+=n(s,!1,!1)),c&&(r+=`#`,r+=t?c:$v(c,!1,!1)),r}function ry(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+ry(e.substr(3)):e}}var iy=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function ay(e){return e.match(iy)?e.replace(iy,e=>ry(e)):e}var Y=function(e){return e[e.Function=1]=`Function`,e[e.Constructor=2]=`Constructor`,e[e.Field=3]=`Field`,e[e.Variable=4]=`Variable`,e[e.Class=5]=`Class`,e[e.Struct=6]=`Struct`,e[e.Interface=7]=`Interface`,e[e.Module=8]=`Module`,e[e.Property=9]=`Property`,e[e.Event=10]=`Event`,e[e.Operator=11]=`Operator`,e[e.Unit=12]=`Unit`,e[e.Value=13]=`Value`,e[e.Constant=14]=`Constant`,e[e.Enum=15]=`Enum`,e[e.EnumMember=16]=`EnumMember`,e[e.Keyword=17]=`Keyword`,e[e.Text=18]=`Text`,e[e.Color=19]=`Color`,e[e.File=20]=`File`,e[e.Reference=21]=`Reference`,e[e.Customcolor=22]=`Customcolor`,e[e.Folder=23]=`Folder`,e[e.TypeParameter=24]=`TypeParameter`,e[e.User=25]=`User`,e[e.Issue=26]=`Issue`,e[e.Snippet=27]=`Snippet`,e}({}),X=function(e){return e[e.None=0]=`None`,e[e.KeepWhitespace=1]=`KeepWhitespace`,e[e.InsertAsSnippet=4]=`InsertAsSnippet`,e}({}),oy=function(e){return e[e.Hint=1]=`Hint`,e[e.Info=2]=`Info`,e[e.Warning=4]=`Warning`,e[e.Error=8]=`Error`,e}({});function sy(e,t){return e.getOffsetAt(t)}function cy(e,t){let{startPos:n,endPos:r}=t;return{startLineNumber:n.line+1,startColumn:n.column+1,endLineNumber:r.line+1,endColumn:r.column+1}}var ly=class{constructor(e){this.compiler=e}provideCodeActions(e,t,n,r){if(!n.markers.length)return;let i=bo.fromUri(String(e.uri)),a=this.compiler.interpretProject().getInfos().filter(e=>e.quickFixes?.length&&e.filepath.equals(i));if(!a.length)return;let o=[];for(let t of n.markers)for(let n of a){let r=cy(e,n.nodeOrToken);if(!(r.startLineNumber!==t.startLineNumber||r.startColumn!==t.startColumn||r.endLineNumber!==t.endLineNumber||r.endColumn!==t.endColumn))for(let r of n.quickFixes??[])o.push(this.quickFixToCodeAction(r,e,t))}let s=Fa(o,e=>{let t=e.diagnostics?.[0];return`${e.title}@${t?.startLineNumber}:${t?.startColumn}`});if(s.length)return{actions:s,dispose(){}}}quickFixToCodeAction(e,t,n){let r=Yv.parse(e.filepath.toUri({protocol:t.uri.scheme})),i={edits:e.edits.map(e=>{let n=t.getPositionAt(e.start),i=t.getPositionAt(e.end);return{resource:r,textEdit:{range:{startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:i.lineNumber,endColumn:i.column},text:e.newText},versionId:t.getVersionId()}})};return{title:e.title,kind:`quickfix`,edit:i,diagnostics:[n]}}},uy=class{constructor(e){this.compiler=e}provideDefinition(e,n){let{uri:r}=e,i=bo.fromUri(String(e.uri)),a=sy(e,n),o=[...this.compiler.container.stack(i,a)];for(;o.length!==0;){let e=o.pop();if(!e)continue;let n=this.compiler.nodeReferee(e).getFiltered(t);if(!n)continue;let i;if(n.declaration&&[Qp.PRIMARY_EXPRESSION,Qp.VARIABLE].includes(e.kind)&&({declaration:i}=n),i){let{startPos:e,endPos:t}=i,n=r;return r&&i.filepath&&(n=Yv.parse(i.filepath.toUri({protocol:r.scheme}))),[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}]}}return[]}},dy=class{constructor(e){this.compiler=e}provideDiagnostics(e){return[...this.provideErrors(e),...this.provideWarnings(e),...this.provideInfos(e)]}provideErrors(e){return e?this.compiler.parse.errors(e).map(e=>this.createDiagnostic(e,`error`)):this.compiler.interpretProject().getErrors().map(e=>this.createDiagnostic(e,`error`))}provideWarnings(e){return e?this.compiler.parse.warnings(e).map(e=>this.createDiagnostic(e,`warning`)):this.compiler.interpretProject().getWarnings().map(e=>this.createDiagnostic(e,`warning`))}provideInfos(e){return e?this.compiler.interpretFile(e).getInfos().map(e=>this.createDiagnostic(e,`info`)):this.compiler.interpretProject().getInfos().map(e=>this.createDiagnostic(e,`info`))}provideMarkers(e){return this.provideDiagnostics(e).filter(t=>t.filepath.equals(e)).map(e=>({severity:this.getSeverityValue(e.type),message:e.text,startLineNumber:e.startRow,startColumn:e.startColumn,endLineNumber:e.endRow,endColumn:e.endColumn,code:e.code?String(e.code):void 0}))}createDiagnostic(e,t){let n=e.nodeOrToken,r=n.startPos,i=n.endPos;return{type:t,text:e.diagnostic,startRow:r.line+1,startColumn:r.column+1,endRow:i.line+1,endColumn:i.column+1,code:e.code,filepath:e.filepath}}getSeverityValue(e){return e===`error`?oy.Error:e===`warning`?oy.Warning:oy.Info}},fy=class{constructor(e){this.compiler=e}provideReferences(e,n){let{uri:r}=e,i=bo.fromUri(String(r)),a=sy(e,n);this.compiler.bindProject();let o=[...this.compiler.container.stack(i,a)];for(;o.length!==0;){let e=o.pop();if(e&&[Qp.ELEMENT_DECLARATION,Qp.FUNCTION_APPLICATION,Qp.PRIMARY_EXPRESSION].includes(e?.kind)){let n=this.compiler.nodeSymbol(e).getFiltered(t)??this.compiler.nodeReferee(e).getFiltered(t),i=n?this.compiler.symbolReferences(n):void 0;if(i&&i.length>0)return i.map(e=>{let t=r;return r&&e.filepath&&(t=Yv.parse(e.filepath.toUri({protocol:r.scheme}))),{range:{startColumn:e.startPos.column+1,startLineNumber:e.startPos.line+1,endColumn:e.endPos.column+1,endLineNumber:e.endPos.line+1},uri:t}})}}return[]}};function py(e,t){return e>=t.start&&e<t.end}function my(e,t){let n=t.bodyColon?.start??t.body?.start;return n===void 0?e>=t.start&&e<=t.end:e>=t.start&&e<n}function hy(e,t){let n=[],r=e.parseFile(t).getValue()?.ast;if(!r)return n;for(let e of r.uses){let t=e.importPath?.value??``,r=[];if(e.specifiers instanceof tm)for(let t of e.specifiers.specifiers){let e,n;if(t.name?(e=t.importKind?.value,n=P(t.name)):t.importKind&&(n=t.importKind.value??void 0),n){let i=t.alias?P(t.alias):void 0;r.push({kind:e,name:n,alias:i})}}else e.specifiers instanceof um&&r.push({name:`*`});r.length===0&&!(e.specifiers instanceof um)||n.push({startOffset:e.fullStart,endOffset:e.fullEnd,sourceFile:t,specifiers:r,node:e})}return n}function gy(e,t,n,r,i,a){let o=hy(e,i),s=r.relativeTo(i.dirname).replace(/\.dbml$/,``),c=o.findIndex(e=>e.sourceFile===s),l=`${n} ${t}`;if(c!==-1){let e=o[c];return e.specifiers.some(e=>e.name===t)?{topInsert:``}:{topInsert:_y(Pa([...e.specifiers.filter(e=>e.name!==`*`).map(e=>`${e.kind??n} ${e.name}${e.alias?` as ${e.alias}`:``}`),l]),s,`
7
- `),removeRange:vy(a,e.startOffset,e.endOffset)}}return{topInsert:_y([l],s,`
8
- `)}}function _y(e,t,n){return`use {${n}${e.map(e=>` ${e}`).join(n)}${n}} from '${t}'${n}${n}`}function vy(e,t,n){let r=e.lastIndexOf(`
4
+ `)}function Tp(e){let t=N(e);return!t||t.length===0?{schemaName:[],name:``}:{name:t[t.length-1],schemaName:t.slice(0,-1)}}function Ep(e){if(e instanceof mm&&e.expression instanceof dm&&e.expression.literal?.kind===v.COLOR_LITERAL)return e.expression.literal.value;if(If(e)&&F(e)?.toLowerCase()===`none`)return So}function Dp(e){if(e){if(O(e)){let t=P(e);if(t!==void 0)return{value:t,type:`string`}}if(jf(e))return{type:`number`,value:Cp(e)};if(If(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof om&&e.value)return{value:e.value.value,type:`expression`};if(Lf(e)){let t=tp(e)?.at(-1),n=t?F(t):void 0;if(n!==void 0)return{value:n,type:`string`}}}}function Op(e,t){let r=``,i=null;if(t instanceof um){if(i=(t.argumentList?.elementList??[]).map(e=>jf(e)?Sp(e):O(e)?P(e):F(e)).join(`,`),r=`(${i})`,!t.callee)return new n({schemaName:null,type_name:``,args:i});t=t.callee}for(;t instanceof um||t instanceof gm;)if(t instanceof um){if(r=`(${(t.argumentList?.elementList??[]).map(e=>jf(e)?Sp(e):O(e)?P(e):F(e)).join(`,`)})${r}`,!t.callee)break;t=t.callee}else if(t instanceof gm){if(r=`${`[${(t.indexer?.elementList??[]).map(e=>e?.name?.expression?.literal?.value??``).join(`,`)}]`}${r}`,!t.array)break;t=t.array}let{name:a,schemaName:o}=Tp(t);return o.length>1?new n({schemaName:o[0]??null,type_name:`${a}${r}`,args:i},[new E(T.UNSUPPORTED,`Nested schema is not supported`,t)]):new n({schemaName:o.length===0?null:o[0],type_name:`${a}${r}`,args:i})}var L=function(e){return e.Schema=`Schema`,e.Table=`Table`,e.Column=`Column`,e.TableGroup=`TableGroup`,e.TableGroupField=`TableGroup field`,e.Enum=`Enum`,e.EnumField=`Enum field`,e.StickyNote=`Note`,e.TablePartial=`TablePartial`,e.PartialInjection=`PartialInjection`,e.DiagramView=`DiagramView`,e.DiagramViewTopLevelWildcard=`DiagramView top-level wildcard`,e.DiagramViewTable=`DiagramView table`,e.DiagramViewTableGroup=`DiagramView tablegroup`,e.DiagramViewNote=`DiagramView note`,e.DiagramViewSchema=`DiagramView schema`,e.Program=`Program`,e}({}),kp={Table:`Table`,Enum:`Enum`,TableGroup:`TableGroup`,TablePartial:`TablePartial`,Note:`Note`,Schema:`Schema`},Ap=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},jp=class{constructor({kind:e,declaration:t,name:n},r,i){this.id=r,this.kind=e,this.declaration=t,this.filepath=i,this.name=n}get originalFilepath(){return this.originalSymbol.filepath}intern(){return`symbol@${this.filepath.intern()}:${this.id}`}isKind(...e){return e.includes(this.kind)}canonicalName(e,t){return e.canonicalName(t,this).getValue()}interpretedName(e,t){if(!t)return{schema:null,name:this.name??``};let n=this.canonicalName(e,t);return n?{schema:n.schema===`public`?null:n.schema,name:n.name}:{schema:null,name:this.name??``}}settings(e){if(this.declaration)return e.nodeSettings(this.declaration).getFiltered(t)}get token(){if(this.declaration)return I(this.declaration)}references(e){return e.symbolReferences(this)}metadata(e){return e.symbolMetadata(this)}members(e){let n=e.symbolMembers(this);return n.hasValue(t)?[]:n.getValue()}},Mp=class e extends jp{constructor({name:e,parent:t},n,r){super({kind:`Schema`},n,r),this.name=e??``,this.parent=t}get canBeImported(){return!0}get originalSymbol(){return this}get qualifiedName(){return this.parent?[...this.parent.qualifiedName,this.name]:[this.name]}isPublicSchema(){return this.qualifiedName.join(`.`)===y}inNestedSchema(t,n){let r=this.members(t);if(r.some(e=>e.originalSymbol===n.originalSymbol))return!0;for(let i of r)if(i instanceof e&&i.inNestedSchema(t,n))return!0;return!1}},Np=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`Enum`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Pp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`Enum field`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wp(P(i));if(a)return{value:a,token:I(r)}}},Fp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`Table`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}schema(e){let t=this.canonicalName(e,this.filepath);return t?t.schema===`public`?null:t.schema:null}columns(e){return this.mergedColumns(e).filter(e=>!(e instanceof Zp))}mergedColumns(e){return this.members(e).filter(e=>e.isKind(`Column`))}partialInjections(e){return this.members(e).filter(e=>e.isKind(`PartialInjection`))}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wp(P(i));if(a)return{value:a,token:I(r)}}headercolor(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.[i.HeaderColor]?.length?Ep(n[i.HeaderColor].at(0)?.value):void 0}refs(e){return this.metadata(e).filter(e=>e.kind===vm.Ref)}checks(e){return this.metadata(e).filter(e=>e.kind===vm.TableChecks)}indexes(e){return this.metadata(e).filter(e=>e.kind===vm.Indexes)}records(e){return this.metadata(e).filter(e=>e.kind===vm.Records)}resolvedPartials(e){return this.partialInjections(e).flatMap(n=>{if(!(n.declaration instanceof U)||!Df(n.declaration.callee))return[];let r=n.declaration.callee.expression;if(!r)return[];let i=e.nodeReferee(r).getFiltered(t);return i?[i]:[]})}mergedIndexes(e){let t=this.indexes(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===vm.Indexes));return[...t,...n]}mergedChecks(e){let t=this.checks(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===vm.TableChecks));return[...t,...n]}mergedHeadercolor(e){let n=this.headercolor(e);for(let r of this.resolvedPartials(e)){if(!r.declaration)continue;let a=e.nodeSettings(r.declaration).getFiltered(t);a?.[i.HeaderColor]?.length&&(n=Ep(a[i.HeaderColor].at(0)?.value))}return n}mergedNote(e){let n=n=>{if(!n.declaration)return;let r=e.nodeSettings(n.declaration).getFiltered(t);if(!r?.note?.length)return;let i=r.note[0],a=i?.value;if(!a)return;let o=wp(P(a));if(o)return{value:o,token:I(i)}},r=n(this);for(let t of this.resolvedPartials(e)){let e=n(t);e&&(r=e)}return r}},Ip=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`Column`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}qualifiedName(e){let n=this.declaration?.parentOfKind(B);if(n){let r=e.nodeSymbol(n).getFiltered(t);if(r){let{schema:t,name:n}=r.interpretedName(e,this.filepath);return t?`${t}.${n}.${this.name}`:`${n}.${this.name}`}}return this.name??``}pk(e){if(!this.declaration)return!1;let n=e.nodeSettings(this.declaration).getFiltered(t);return!!(n?.[i.PK]?.length||n?.[i.PrimaryKey]?.length)}isUniqueSet(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Unique]?.length:!1}unique(e){return this.declaration?this.isUniqueSet(e)||this.pk(e)||this.increment(e):!1}nullable(e){return this.declaration?!(this.pk(e)||this.increment(e)||this.isInPkIndex(e)||e.nodeSettings(this.declaration).getFiltered(t)?.[i.NotNull]?.length):!0}isInPkIndex(e){if(!this.declaration||!this.name)return!1;let n=this.declaration.parentOfKind(B);if(!n)return!1;let r=e.nodeSymbol(n).getFiltered(t);if(!(r instanceof Fp))return!1;for(let t of r.mergedIndexes(e)){let n=e.interpretMetadata(t,this.filepath).getValue();if(!(!n||!Array.isArray(n))){for(let e of n)if(e.pk&&e.columns.some(e=>e.value===this.name))return!0}}return!1}isNotNullSet(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(n?.[i.NotNull]?.length)return!0;if(n?.[i.Null]?.length)return!1}isIncrementSet(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Increment]?.length:!1}increment(e){return this.isIncrementSet(e)||Vo(this.type(e)?.name??``)}default(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t)?.[i.Default]?.at(0)?.value;if(n)return Dp(n)}type(e){if(!(this.declaration instanceof U))return;let n=Op(e,this.declaration.args[0]).getValue();if(!n)return;let r=n.args?n.args.split(`,`).map(e=>{let t=Number(e);return Number.isNaN(t)?e:t}):void 0,i=[],a=/\[([^\]]*)\]/g,o,s=n.type_name;for(;(o=a.exec(s))!==null;){let e=o[1];if(e===``)i.push(void 0);else{let t=Number(e);i.push(Number.isNaN(t)?e:t)}}let c=s.replace(/\[[^\]]*\]/g,``),l=e.nodeReferee(this.declaration.args[0]).getFiltered(t);return{name:c,enumSymbol:l instanceof Np?l:void 0,args:r?.length?r:void 0,schema:n.schemaName??void 0,array:i.length?i:void 0}}checks(e){return this.metadata(e).filter(e=>e.kind===vm.TableChecks)}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wp(P(i));if(a)return{value:a,token:I(r)}}},Lp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`TableGroup`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}fields(e){return this.members(e).filter(e=>e.isKind(`TableGroup field`))}color(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.color?.length?Ep(n.color.at(0)?.value):void 0}note(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(!n?.note?.length)return;let r=n.note[0],i=r?.value;if(!i)return;let a=wp(P(i));if(a)return{value:a,token:I(r)}}},Rp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`TableGroup field`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},zp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`Note`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Bp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`TablePartial`,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Vp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`PartialInjection`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Hp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Up=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView top-level wildcard`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Wp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView table`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Gp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView tablegroup`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Kp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView note`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},qp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`DiagramView schema`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Jp=class extends jp{constructor({declaration:e,name:t},n,r){super({kind:`Program`,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}inNestedSchema(e,t){let n=this.members(e);if(n.some(e=>e.originalSymbol===t.originalSymbol))return!0;for(let r of n)if(r instanceof Mp&&r.inNestedSchema(e,t))return!0;return!1}},Yp=class extends jp{constructor({kind:e,declaration:t,aliasedSymbol:n,name:r},i,a){super({kind:e,declaration:t,name:r},i,a),this.aliasedSymbol=n}get canBeImported(){return this.aliasedSymbol.canBeImported}get originalSymbol(){return this.aliasedSymbol.originalSymbol}},Xp=class extends jp{constructor({kind:e,declaration:t,useSpecifierDeclaration:n,usedSymbol:r,name:i},a,o){super({kind:e,declaration:t,name:i},a,o),this.useSpecifierDeclaration=n,this.usedSymbol=r}get canBeImported(){let e=this.useSpecifierDeclaration?.parentOfKind(em);return!e||e.isReuse}get originalSymbol(){return this.usedSymbol?this.usedSymbol.originalSymbol:this}},Zp=class extends Ip{constructor({declaration:e,name:t,injectionDeclaration:n},r,i){super({declaration:e,name:t},r,i),this.injectionDeclaration=n,this.name=t}},Qp=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},R=class{constructor(e,t,n,r){this.id=e,this.kind=t,this.filepath=n;let i=r.find(e=>e!==void 0&&!Number.isNaN(e.start));i?(this.startPos=i.startPos,this.fullStart=i instanceof Va?Ka(i):i.fullStart):(this.startPos={offset:NaN,column:NaN,line:NaN},this.fullStart=NaN);let a=[...r].reverse().find(e=>e!==void 0&&!Number.isNaN(e.end));a?(this.endPos=a.endPos,this.fullEnd=a instanceof Va?Ga(a):a.fullEnd):(this.endPos={offset:NaN,column:NaN,line:NaN},this.fullEnd=NaN),this.start=this.startPos.offset,this.end=this.endPos.offset}intern(){return`node@${this.filepath.intern()}:${this.id}`}get parent(){let e=this.parentNode;for(;e;){if(e instanceof B||e instanceof z)return e;e=e.parentNode}}parentOfKind(e){let t=this;for(;t;){if(t instanceof e)return t;t=t.parentNode}}strictlyContains(e){if(typeof e==`number`)return this.start<e&&this.end>e;let{start:t,end:n}=e,r=this.start<t,i=r||this.start===t,a=this.end>n,o=a||this.end===n;return r&&o||i&&a}containsEq(e){if(typeof e==`number`)return this.start<=e&&this.end>=e;let{start:t,end:n}=e;return this.start<=t&&this.end>=n}},$p=function(e){return e.PROGRAM=`<program>`,e.ELEMENT_DECLARATION=`<element-declaration>`,e.USE_DECLARATION=`<use-declaration>`,e.USE_SPECIFIER=`<use-specifier>`,e.USE_SPECIFIER_LIST=`<use-specifier-list>`,e.ATTRIBUTE=`<attribute>`,e.IDENTIFIER_STREAM=`<identifier-stream>`,e.LITERAL=`<literal>`,e.VARIABLE=`<variable>`,e.PREFIX_EXPRESSION=`<prefix-expression>`,e.INFIX_EXPRESSION=`<infix-expression>`,e.POSTFIX_EXPRESSION=`<postfix-expression>`,e.FUNCTION_EXPRESSION=`<function-expression>`,e.FUNCTION_APPLICATION=`<function-application>`,e.BLOCK_EXPRESSION=`<block-expression>`,e.LIST_EXPRESSION=`<list-expression>`,e.TUPLE_EXPRESSION=`<tuple-expression>`,e.CALL_EXPRESSION=`<call-expression>`,e.PRIMARY_EXPRESSION=`<primary-expression>`,e.GROUP_EXPRESSION=`<group-expression>`,e.COMMA_EXPRESSION=`<comma-expression>`,e.EMPTY=`<dummy>`,e.ARRAY=`<array>`,e.WILDCARD=`<wildcard>`,e}({}),z=class extends R{constructor({body:e=[],eof:t,source:n},r,i){super(r,`<program>`,i,[...e,t]),this.source=n,this.body=e,this.eof=t}get declarations(){return this.body.filter(e=>e.kind===`<element-declaration>`)}get uses(){return this.body.filter(e=>e.kind===`<use-declaration>`)}},em=class extends R{constructor({useKeyword:e,specifiers:t,fromKeyword:n,importPath:r},i,a){super(i,`<use-declaration>`,a,[e,t,n,r]),this.useKeyword=e,this.specifiers=t,this.fromKeyword=n,this.importPath=r}get isReuse(){return Za(this.useKeyword)}},tm=class extends R{constructor({importKind:e,name:t,asKeyword:n,alias:r},i,a){super(i,`<use-specifier>`,a,[e,t,n,r]),this.importKind=e,this.name=t,this.asKeyword=n,this.alias=r}isKind(...e){return this.importKind?.value!==void 0&&e.map(e=>e.toLowerCase()).includes(this.importKind.value.toLowerCase())}getSymbolKind(){let e=this.importKind?.value?.toLowerCase();if(e!==void 0)return Object.values(L).find(t=>t.toLowerCase()===e)}},nm=class extends R{constructor({openBrace:e,specifiers:t=[],closeBrace:n},r,i){super(r,`<use-specifier-list>`,i,[e,...t,n]),this.openBrace=e,this.specifiers=t,this.closeBrace=n}},B=class e extends R{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c,l){if(super(c,`<element-declaration>`,l,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof U||s instanceof e))throw Error(`If an element has a simple body, it must be a function application node`);this.type=t,this.name=n,this.as=r,this.alias=i,this.attributeList=a,this.bodyColon=o,this.body=s}isKind(...e){return e.some(e=>this.type?.value.toLowerCase()===e)}getElementKind(){return Object.values(r).find(e=>this.isKind(e))}},rm=class extends R{constructor({identifiers:e=[]},t,n){super(t,`<identifier-stream>`,n,e||[]),this.identifiers=e}},V=class extends R{constructor({name:e,colon:t,value:n},r,i){super(r,`<attribute>`,i,[e,t,n]),this.name=e,this.value=n,this.colon=t}},H=class extends R{constructor({op:e,expression:t},n,r){super(n,`<prefix-expression>`,r,[e,t]),this.op=e,this.expression=t}},im=class extends R{constructor({op:e,leftExpression:t,rightExpression:n},r,i){super(r,`<infix-expression>`,i,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},am=class extends R{constructor({op:e,expression:t},n,r){super(n,`<postfix-expression>`,r,[t,e]),this.op=e,this.expression=t}},om=class extends R{constructor({value:e},t,n){super(t,`<function-expression>`,n,[e]),this.value=e}},U=class extends R{constructor({callee:e,args:t=[]},n,r){super(n,`<function-application>`,r,[e,...t]),this.callee=e,this.args=t}},W=class extends R{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r,i){super(r,`<block-expression>`,i,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},G=class extends R{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i,a){super(i,`<list-expression>`,a,[e,..._m(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},sm=class extends R{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i,a){super(i,`<tuple-expression>`,a,[e,..._m(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},cm=class extends R{constructor({elementList:e=[],commaList:t=[]},n,r){super(n,`<comma-expression>`,r,[..._m(e,t)]),this.elementList=e,this.commaList=t}},lm=class extends sm{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r,i){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r,i),this.kind=`<group-expression>`}},um=class extends R{constructor({callee:e,argumentList:t},n,r){super(n,`<call-expression>`,r,[e,t]),this.callee=e,this.argumentList=t}},dm=class extends R{constructor({literal:e},t,n){super(t,`<literal>`,n,[e]),this.literal=e}},fm=class extends R{constructor({token:e},t,n){super(t,`<wildcard>`,n,[e]),this.token=e}},pm=class extends R{constructor({variable:e},t,n){super(t,`<variable>`,n,[e]),this.variable=e}},mm=class extends R{constructor({expression:e},t,n){super(t,`<primary-expression>`,n,[e]),this.expression=e}},hm=class extends R{constructor({prevToken:e},t,n){let r=Va.create(v.SPACE,n,e.endPos,e.endPos,` `,!1);super(t,`<dummy>`,n,[r])}},gm=class extends R{constructor({expression:e,indexer:t},n,r){super(n,`<array>`,r,[e,t]),this.array=e,this.indexer=t}};function _m(e,t){if(!e||e.length===0)return t||[];if(!t||t.length===0)return e||[];let[n]=e,[r]=t;return(n.start<r.start?br(La(e,t)):br(La(t,e))).filter(e=>e!==null)}var vm=function(e){return e.Ref=`ref`,e.PartialRef=`partial ref`,e.TableChecks=`table checks`,e.Indexes=`indexes`,e.Records=`records`,e.Project=`project`,e}({}),ym=class e{static{this.id=0}constructor(t){this.declaration=t,this.id=++e.id}intern(){return`metadata@${this.declaration.filepath.intern()}:${this.id}`}},bm=class extends ym{constructor(e){super(e),this.kind=`ref`}container(e){let n=this.declaration.parentOfKind(B);if(n?.isKind(r.Table))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(this.declaration instanceof B){let t=ep(this.declaration)[0];if(!(t instanceof U))return[];let n=t.callee;return n instanceof im?Em(e,n.leftExpression):[]}if(this.declaration instanceof V){let n=this.declaration.parentOfKind(U);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}return[]}rightColumns(e){if(this.declaration instanceof B){let t=ep(this.declaration)[0];if(!(t instanceof U))return[];let n=t.callee;return n instanceof im?Em(e,n.rightExpression):[]}if(this.declaration instanceof V){let t=this.declaration.value;return t instanceof H?Em(e,t.expression):[]}return[]}leftTable(e){if(this.declaration instanceof B){let t=ep(this.declaration)[0];if(!(t instanceof U))return;let n=t.callee;return n instanceof im?Dm(e,n.leftExpression):void 0}if(this.declaration instanceof V)return this.container(e)}rightTable(e){if(this.declaration instanceof B){let t=ep(this.declaration)[0];if(!(t instanceof U))return;let n=t.callee;return n instanceof im?Dm(e,n.rightExpression):void 0}if(this.declaration instanceof V){let t=this.declaration.value;return t instanceof H?Dm(e,t.expression)??this.container(e):void 0}}op(e){return this.opToken()?.value}opToken(){if(this.declaration instanceof B){let e=ep(this.declaration)[0];if(!(e instanceof U))return;let t=e.callee;return t instanceof im?t.op:void 0}if(this.declaration instanceof V){let e=this.declaration.value;return e instanceof H?e.op:void 0}}cardinalities(e){let t=this.op(e);return t?sf(t):void 0}leftCardinality(e){let t=this.cardinalities(e);return t?ef(t[0]):void 0}rightCardinality(e){let t=this.cardinalities(e);return t?ef(t[1]):void 0}active(e){if(!(this.declaration instanceof B))return!0;let n=ep(this.declaration)[0];return n?!e.nodeSettings(n).getFiltered(t)?.[i.Inactive]?.length:!0}leftToken(){if(this.declaration instanceof B){let e=ep(this.declaration)[0];if(e instanceof U){let t=e.callee;if(t instanceof im&&t.leftExpression)return t.leftExpression}}if(this.declaration instanceof V){let e=this.declaration.parentOfKind(U);if(e)return e}return this.declaration}rightToken(){if(this.declaration instanceof B){let e=ep(this.declaration)[0];if(e instanceof U){let t=e.callee;if(t instanceof im&&t.rightExpression)return t.rightExpression}}return this.declaration instanceof V,this.declaration}owners(e){let n=this.leftTable(e),r=this.rightTable(e);if(!n||!r)return[];let i=this.declaration.filepath;return e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>e.reachableFiles(t.filepath).some(e=>e.equals(i))&&t.inNestedSchema(e,n)&&t.inNestedSchema(e,r))}},xm=class extends ym{constructor(e){super(e),this.kind=`partial ref`}container(e){let n=this.declaration.parentOfKind(B);if(n?.isKind(r.TablePartial))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(!(this.declaration instanceof V))return[];let n=this.declaration.parentOfKind(U);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}rightColumns(e){if(!(this.declaration instanceof V))return[];let t=this.declaration.value;return t instanceof H?Em(e,t.expression):[]}leftTablePartial(e){if(this.declaration instanceof V)return this.container(e)}rightTable(e){if(!(this.declaration instanceof V))return;let t=this.declaration.value;if(t instanceof H)return Dm(e,t.expression)??this.container(e)}op(e){return this.opToken()?.value}opToken(){if(!(this.declaration instanceof V))return;let e=this.declaration.value;if(e instanceof H)return e.op}cardinalities(e){let t=this.op(e);return t?sf(t):void 0}leftCardinality(e){let t=this.cardinalities(e);return t?ef(t[0]):void 0}rightCardinality(e){let t=this.cardinalities(e);return t?ef(t[1]):void 0}leftToken(){if(this.declaration instanceof V){let e=this.declaration.parentOfKind(U);if(e)return e}return this.declaration}rightToken(){return this.declaration instanceof V,this.declaration}owners(e){let n=this.leftTablePartial(e),r=this.rightTable(e);return!n||!r?[]:e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>t.inNestedSchema(e,n)&&t.inNestedSchema(e,r))}},Sm=class extends ym{constructor(e){super(e),this.kind=`table checks`,this.ownerTable=e.parentNode?.parentOfKind(B)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},Cm=class extends ym{constructor(e){super(e),this.kind=`indexes`,this.ownerTable=e.parentNode?.parentOfKind(B)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},wm=class extends ym{constructor(e){super(e),this.kind=`records`}table(e){let n=this.declaration,i=n.parent;if(i instanceof B&&i.isKind(r.Table))return e.nodeSymbol(i).getFiltered(t);let a=n.name;if(!(a instanceof um))return;let o=ap(a);if(!o)return;let s=o.variables.at(-1);if(s)return e.nodeReferee(s).getFiltered(t)?.originalSymbol}owners(e){let n=this.table(e);return n?e.reachableFiles().flatMap(n=>e.nodeSymbol(e.parseFile(n).getValue().ast).getFiltered(t)||[]).filter(t=>t.inNestedSchema(e,n)):[]}},Tm=class extends ym{constructor(e){super(e),this.kind=`project`}owners(e){let n=this.declaration.filepath,r=e.parseFile(n).getValue().ast,i=e.nodeSymbol(r).getFiltered(t);return i?[i]:[]}};function Em(e,n){if(!n)return[];let r=np(n);return r?(r.tupleElements.length>0?r.tupleElements:r.variables.at(-1)?[r.variables.at(-1)]:[]).flatMap(n=>{let r=e.nodeReferee(n).getFiltered(t);return r?[r]:[]}):[]}function Dm(e,n){if(!n)return;let r=np(n);if(!r)return;let i=r.tupleElements.length>0?r.variables.at(-1):r.variables.at(-2);if(i)return e.nodeReferee(i).getFiltered(t)}var Om=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return[]}},km=class{constructor(e,t){this.compiler=e,this.declarationNode=t}interpret(){let e=this.declarationNode.body;return e instanceof W?new n(e.body.flatMap(e=>{if(!(e instanceof U))return[];let t=I(e),n=e.callee instanceof om?e.callee.value?.value??``:``,r,a=e.args.find(e=>e instanceof G);return a&&(r=P(D(a).getValue()[i.Name]?.at(0)?.value)),{expression:n,name:r,token:t}})):new n([])}},Am={nodeMetadata(t,i){if(j(i,r.Checks)){let t=i.parent;return!t||!j(t,r.Table)&&!j(t,r.TablePartial)?n.create(e):n.create(new Sm(i))}return n.create(e)},bindNode(t,i){return j(i,r.Checks)?n.create(void 0,new Om(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===vm.TableChecks?r.declaration instanceof B?new km(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function jm(e,t,n){let r=t,i=e;if(i instanceof um&&i.argumentList&&(r=[i.argumentList,...r],i=i.callee),!i||!If(i)||r.length===0)return;let a=[...r],o=Xf(i),s=a.pop();if(!(s instanceof W))return;let c=g(a)instanceof G?a.pop():void 0;if(a.length===3){let e=Xf(a[1]);return!e||!Ja(e)?void 0:n.create(B,{type:o,name:a[0],as:e,alias:a[2],attributeList:c,body:s})}if(a.length===1)return n.create(B,{type:o,name:a[0],attributeList:c,body:s});if(a.length===0)return n.create(B,{type:o,attributeList:c,body:s})}function K(e){e&&(e instanceof Va?Mm(e):Nm(e))}function Mm(e){e.kind!==v.EOF&&(e.isInvalid=!0)}function Nm(e){if(e instanceof B)K(e.type),K(e.name),K(e.as),K(e.alias),K(e.bodyColon),K(e.attributeList),K(e.body);else if(e instanceof rm)e.identifiers.forEach(K);else if(e instanceof V)K(e.name),K(e.colon),K(e.value);else if(e instanceof H)K(e.op),K(e.expression);else if(e instanceof im)K(e.leftExpression),K(e.op),K(e.rightExpression);else if(e instanceof am)K(e.op),K(e.expression);else if(e instanceof W)K(e.blockOpenBrace),e.body.forEach(K),K(e.blockCloseBrace);else if(e instanceof G)K(e.listOpenBracket),e.commaList.forEach(K),e.elementList.forEach(K),K(e.listCloseBracket);else if(e instanceof sm)K(e.tupleOpenParen),e.commaList.forEach(K),e.elementList.forEach(K),K(e.tupleCloseParen);else if(e instanceof cm)e.commaList.forEach(K),e.elementList.forEach(K);else if(e instanceof um)K(e.callee),K(e.argumentList);else if(e instanceof U)K(e.callee),e.args.forEach(K);else if(e instanceof mm)K(e.expression);else if(e instanceof om)K(e.value);else if(e instanceof pm)K(e.variable);else if(e instanceof dm)K(e.literal);else if(e instanceof lm)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof gm)K(e.array),K(e.indexer);else if(e instanceof z)e.body.forEach(K),K(e.eof);else if(!(e instanceof hm))if(e instanceof em)K(e.useKeyword),K(e.specifiers),K(e.fromKeyword),K(e.importPath);else if(e instanceof nm)K(e.openBrace),e.specifiers.forEach(K),K(e.closeBrace);else if(e instanceof tm)K(e.importKind),K(e.name),K(e.asKeyword),K(e.alias);else if(e instanceof fm)K(e.token);else throw Error(`Unreachable case in markInvalidNode`)}function Pm(...e){return e.filter(e=>e!==void 0)}function Fm(e){if(e instanceof z)return Pm(...e.body,e.eof);if(e instanceof B)return Pm(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof V)return Pm(e.name,e.colon,e.value);if(e instanceof rm)return e.identifiers;if(e instanceof dm)return e.literal?[e.literal]:[];if(e instanceof pm)return Pm(e.variable);if(e instanceof H)return Pm(e.op,e.expression);if(e instanceof im)return Pm(e.leftExpression,e.op,e.rightExpression);if(e instanceof am)return Pm(e.expression,e.op);if(e instanceof om)return Pm(e.value);if(e instanceof U)return Pm(e.callee,...e.args);if(e instanceof W)return Pm(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof G)return Pm(e.listOpenBracket,...Im(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof sm)return Pm(e.tupleOpenParen,...Im(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof cm)return Pm(...Im(e.elementList,e.commaList));if(e instanceof um)return Pm(e.callee,e.argumentList);if(e instanceof mm)return Pm(e.expression);if(e instanceof gm)return Pm(e.array,e.indexer);if(e instanceof hm)return[];if(e instanceof em)return Pm(e.useKeyword,e.specifiers,e.fromKeyword,e.importPath);if(e instanceof nm)return Pm(e.openBrace,...e.specifiers,e.closeBrace);if(e instanceof tm)return Pm(e.importKind,e.name,e.asKeyword,e.alias);if(e instanceof fm)return Pm(e.token);throw e instanceof lm?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Im(e,t){let n=[],r=Math.min(e.length,t.length);for(let i=0;i<r;i+=1)n.push(e[i],t[i]);return n.push(...e.slice(r),...t.slice(r)),n}function Lm(e,t){return e.reachableFiles(t.filepath).every(t=>e.bindFile(t).getErrors().length===0)}function Rm(e){if(!e)return[];if(k(e))return[{variables:[e],tupleElements:[]}];if(e instanceof im){let t=np(e);return t?[t]:[...Rm(e.leftExpression),...Rm(e.rightExpression)]}if(e instanceof H||e instanceof am)return Rm(e.expression);if(e instanceof sm){let t=np(e);return t?[t]:e.elementList.flatMap(Rm)}return[]}function zm(e,n){let r=n.parentNode;if(!r||!A(r)||r.rightExpression!==n)return;let i=r.leftExpression;for(;A(i);)i=i.rightExpression;return e.nodeReferee(i).getFiltered(t)??void 0}var Bm=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof W?this.bindBody(this.declarationNode.body):[]}bindBody(e){let[,t]=_(e.body,e=>e instanceof U);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>!e.type||!(e.body instanceof W)?[]:e.isKind(r.DiagramViewTables)?this.bindTableReferences(e.body):e.isKind(r.DiagramViewNotes)?this.bindNoteReferences(e.body):e.isKind(r.DiagramViewTableGroups)?this.bindTableGroupReferences(e.body):e.isKind(r.DiagramViewSchemas)?this.bindSchemaReferences(e.body):[])}bindTableReferences(e){let[t]=_(e.body,e=>e instanceof U);return t.flatMap(e=>!e.callee||Ff(e.callee)?[]:[e.callee,...e.args].flatMap(Rm).flatMap(e=>{let t=e.variables.pop();if(!t)return[];let n=e.variables.pop();return[...n?this.compiler.nodeReferee(n).getErrors():[],...this.compiler.nodeReferee(t).getErrors()]}))}bindNoteReferences(e){let[t]=_(e.body,e=>e instanceof U);return t.flatMap(e=>!e.callee||Ff(e.callee)?[]:Rm(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindTableGroupReferences(e){let[t]=_(e.body,e=>e instanceof U);return t.flatMap(e=>!e.callee||Ff(e.callee)?[]:Rm(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindSchemaReferences(e){let[t]=_(e.body,e=>e instanceof U);return t.flatMap(e=>!e.callee||Ff(e.callee)?[]:Rm(e.callee).flatMap(e=>e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors())))}},Vm=class{constructor(e,t,n,r){this.diagramViewWildcards=new Set,this.diagramViewExplicitlySet=new Set,this.compiler=e,this.declarationNode=t,this.symbol=n,this.filepath=r??t.filepath,this.diagramView={visibleEntities:{tables:null,stickyNotes:null,tableGroups:null,schemas:null}}}interpret(){let e=[];this.diagramView.token=this.symbol.token;let{name:t,schema:r}=this.symbol.interpretedName(this.compiler,this.filepath);return this.diagramView.name=t,this.diagramView.schemaName=r,this.declarationNode.body instanceof W&&e.push(...this.interpretBody(this.declarationNode.body)),this.expandDiagramViewWildcards(),new n(this.diagramView,e)}interpretBody(e){if(e.body.length===1){let t=e.body[0];if(t instanceof U&&Ff(t.callee))return this.diagramView.visibleEntities={tables:[],stickyNotes:[],tableGroups:[],schemas:[]},this.diagramViewWildcards=new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`]),this.diagramViewExplicitlySet=new Set([`tables`,`stickyNotes`,`tableGroups`,`schemas`]),[]}let[t]=_(e.body,e=>e instanceof B),n=new Set;for(let e of t){let t=e.type?.value.toLowerCase();t&&n.add(t),e.body instanceof W&&this.interpretSubBlock(e.body,t)}let i=this.diagramView.visibleEntities;return(n.has(`tables`)&&i.tables!==null||n.has(`tablegroups`)&&i.tableGroups!==null||n.has(`schemas`)&&i.schemas!==null)&&(n.has(`tables`)||(i.tables=[]),n.has(`tablegroups`)||(i.tableGroups=[]),n.has(`schemas`)||(i.schemas=[])),n.has(r.DiagramViewTables)&&this.diagramViewExplicitlySet.add(`tables`),n.has(r.DiagramViewTableGroups)&&this.diagramViewExplicitlySet.add(`tableGroups`),n.has(r.DiagramViewSchemas)&&this.diagramViewExplicitlySet.add(`schemas`),n.has(r.DiagramViewNotes)&&this.diagramViewExplicitlySet.add(`stickyNotes`),[]}interpretSubBlock(e,n){if(!n)return;if(e.body.some(e=>e instanceof U&&Ff(e.callee))){let e=this.diagramViewWildcards;switch(n){case r.DiagramViewTables:this.diagramView.visibleEntities.tables=[],e.add(`tables`);break;case r.DiagramViewNotes:this.diagramView.visibleEntities.stickyNotes=[],e.add(`stickyNotes`);break;case r.DiagramViewTableGroups:this.diagramView.visibleEntities.tableGroups=[],e.add(`tableGroups`);break;case r.DiagramViewSchemas:this.diagramView.visibleEntities.schemas=[],e.add(`schemas`);break}return}if(e.body.length===0)return;let i=[];for(let n of e.body){if(!(n instanceof U))continue;let e=n.callee&&Jf(n.callee),r=e&&this.compiler.nodeReferee(e).getFiltered(t);if(r?.declaration instanceof B){let e=N(r.declaration.name)??[];if(e.length>0){let t=e[e.length-1],n=e.length>1?e.slice(0,-1).join(`.`):y;i.push({name:t,schemaName:n});continue}}let a=N(n.callee)??[];if(a.length===0)continue;let o=a[a.length-1],s=a.length>1?a[0]:y;i.push({name:o,schemaName:s})}switch(n){case r.DiagramViewTables:this.diagramView.visibleEntities.tables=i.length>0?i:null;break;case r.DiagramViewNotes:this.diagramView.visibleEntities.stickyNotes=i.length>0?i.map(e=>({name:e.name})):null;break;case r.DiagramViewTableGroups:this.diagramView.visibleEntities.tableGroups=i.length>0?i.map(e=>({name:e.name})):null;break;case r.DiagramViewSchemas:this.diagramView.visibleEntities.schemas=i.length>0?i.map(e=>({name:e.name})):null;break}}expandDiagramViewWildcards(){let e=this.diagramView.visibleEntities,t=this.diagramViewWildcards;if(!(!t||!e)){if(t.has(`tables`)||t.has(`schemas`)){e.tables=[],e.tableGroups=[],e.schemas=[];return}t.has(`tableGroups`)&&e.tableGroups&&e.tableGroups.length===0&&(e.tableGroups=this.getAllTableGroupNames())}}getAllTableGroupNames(){let e=this.compiler.parseFile(this.declarationNode.filepath).getValue().ast,n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n)return[];let r=this.compiler.symbolMembers(n).getFiltered(t);return r?Pa(r.filter(e=>e.isKind(L.TableGroup)),e=>e.originalSymbol.intern()).flatMap(e=>e.name===void 0?[]:{name:e.name}):[]}};function Hm(e){return e==null?e:Array.isArray(e)?e.map(String).join(`\0`):typeof e==`object`&&`intern`in e?e.intern():e}var Um=function(e){return e.Table=`table`,e}({}),Wm={getDuplicateError(e,t,n){return new E(T.DUPLICATE_NAME,`DiagramView '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t,n){return new E(T.DUPLICATE_DIAGRAMVIEW_FIELD,`Duplicate ${t} ${e}`,n)}},Gm={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return j(a,r.DiagramView)?new n(i.symbolFactory.create(Hp,{declaration:a,name:o},a.filepath)):M(a,r.DiagramView)&&a instanceof fm?new n(i.symbolFactory.create(Up,{declaration:a,name:o},a.filepath)):M(a,r.DiagramViewNotes)?new n(i.symbolFactory.create(Kp,{declaration:a,name:o},a.filepath)):M(a,r.DiagramViewTables)?new n(i.symbolFactory.create(Wp,{declaration:a,name:o},a.filepath)):M(a,r.DiagramViewTableGroups)?new n(i.symbolFactory.create(Gp,{declaration:a,name:o},a.filepath)):M(a,r.DiagramViewSchemas)?new n(i.symbolFactory.create(qp,{declaration:a,name:o},a.filepath)):n.create(e)},nodeReferee(i,a){if(a.parent&&Uf(a))return n.create(e);let o=Km(a);if(!o)return n.create(e);let s=i.parseFile(a.filepath).getValue().ast,c=i.nodeSymbol(s).getFiltered(t);return c?o.isKind(r.DiagramViewTables)?qm(i,c,a):o.isKind(r.DiagramViewNotes)?Jm(i,c,a,L.StickyNote):o.isKind(r.DiagramViewTableGroups)?Jm(i,c,a,L.TableGroup):o.isKind(r.DiagramViewSchemas)?Ym(i,c,a):n.create(e):n.create(void 0)},symbolMembers(i,a){if(!a.isKind(L.DiagramView))return n.create(e);if(!a.declaration)return n.create([]);let o=a.declaration;if(!j(o,r.DiagramView))return n.create([]);let s=[],c=[];for(let e of ep(o))if(e instanceof U){let n=i.nodeSymbol(e).getFiltered(t);n&&c.push(n)}else e instanceof B&&c.push(...ep(e).flatMap(e=>i.nodeSymbol(e).getFiltered(t)??[]));let l=new Map;for(let e of c){if(!e.isKind(L.DiagramViewSchema,L.DiagramViewTableGroup,L.DiagramViewTable,L.DiagramViewNote)||!e.declaration)continue;let n=(i.nodeFullname(e.declaration).getFiltered(t)||[]).map(jg).join(`.`),r=`${e.kind}:${n}`;if(n!==void 0){let t=e.declaration,i=l.get(r);i?(s.push(Wm.getFieldDuplicateError(n,e.kind,i)),s.push(Wm.getFieldDuplicateError(n,e.kind,t))):l.set(r,t)}}return n.create(c,s)},bindNode(i,a){if(!j(a,r.DiagramView))return n.create(e);let o=new Bm(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Hp?r.declaration instanceof B?new Vm(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function Km(e){let t=e.parentOfKind(U);if(!t)return;let n=t.parentNode;if(!(n instanceof W))return;let i=n.parentNode;if(!(i instanceof B)||!i.isKind(r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewTableGroups,r.DiagramViewSchemas))return;let a=i.parentNode;if(!(a instanceof W))return;let o=a.parentNode;if(!(!(o instanceof B)||!o.isKind(r.DiagramView)))return i}function qm(e,r,i){let a=op(i);if(a===void 0)return n.create(void 0);if(A(i.parentNode)){let t=zm(e,i);if(t){if(t.isKind(L.Schema)){let r=Yf(i),o=e.lookupMembers(t,r?L.Table:L.Schema,a);return o?n.create(o):new n(void 0,[new E(T.BINDING_ERROR,`Could not find ${r?`table`:`schema`} '${a}'`,i)])}return new n(void 0)}let o=e.lookupMembers(r,L.Schema,a);return o?n.create(o):new n(void 0,[new E(T.BINDING_ERROR,`Could not find schema '${a}'`,i)])}let o=e.symbolMembers(r).getFiltered(t)||[];for(let e of o){let t=e.name;if(e.isKind(L.Table)&&a===t)return n.create(e)}let s=e.lookupMembers(r,L.Table,a);return s?n.create(s):new n(void 0,[new E(T.BINDING_ERROR,`Could not find table '${a}'`,i)])}function Jm(e,t,r,i){let a=op(r);if(a===void 0)return n.create(void 0);let o=e.lookupMembers(t,i,a);return o?n.create(o):new n(void 0,[new E(T.BINDING_ERROR,`Could not find ${i===L.StickyNote?`note`:`tablegroup`} '${a}'`,r)])}function Ym(e,t,r){let i=op(r);if(i===void 0)return n.create(void 0);let a=e.lookupMembers(t,L.Schema,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Could not find schema '${i}'`,r)])}var Xm=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof W?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof U)return[];let t=e.body.filter(e=>e instanceof B);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Zm=class{constructor(e,t,n){this.compiler=e,this.declarationNode=t.declaration,this.symbol=t,this.filepath=n,this.enum={values:[]}}interpret(){this.enum.token=I(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody(this.declarationNode.body)];return n.create(this.enum,e)}interpretName(){let{name:e,schema:t}=this.symbol.interpretedName(this.compiler,this.filepath);return this.enum.name=e,this.enum.schemaName=t,[]}interpretBody(e){return e.body.flatMap(e=>{let t=e,n={};n.token=I(t),n.name=F(t.callee);let r=D(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:wp(P(r.value)),token:I(r)},this.enum.values.push(n),[]})}},Qm={getDuplicateError(e,t,n){return new E(T.DUPLICATE_NAME,`Enum '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new E(T.DUPLICATE_COLUMN_NAME,`Duplicate enum field '${e}'`,t)}},$m={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return j(a,r.Enum)?new n(i.symbolFactory.create(Np,{declaration:a,name:o},a.filepath)):M(a,r.Enum)?new n(i.symbolFactory.create(Pp,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(L.Enum))return n.create(e);let a=i.declaration;if(!(a instanceof B))return new n([]);let o=ep(a),s=[],c=[];for(let e of o){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(s.push(i),c.push(...n.getErrors()))}let l=new Map;for(let e of s){if(!e.isKind(L.EnumField)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration,r=l.get(t);r?(c.push(Qm.getFieldDuplicateError(t,r)),c.push(Qm.getFieldDuplicateError(t,n))):l.set(t,n)}}return new n(s,c)},bindNode(i,a){if(!j(a,r.Enum))return n.create(e);let o=new Xm(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Np?new Zm(t,r,i).interpret():n.create(e)}},eh=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof B)||!this.declarationNode.parent.isKind(r.Table)&&!this.declarationNode.parent.isKind(r.TablePartial)||!(this.declarationNode.body instanceof W)?[]:this.bindBody(this.declarationNode.body)}get ownerContainerKind(){return this.declarationNode.parent.isKind(r.TablePartial)?`TablePartial`:`Table`}bindBody(e){if(!e)return[];if(e instanceof U)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let n=N(this.declarationNode.parent.name)?.join(`.`)??`<unnamed>`;return[e.callee,...e.args].flatMap(Rm).flatMap(e=>e.variables.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=op(e);if(r===void 0)return[];let i=this.compiler.nodeReferee(e);return!i.getValue()||i.hasValue(t)?new E(T.BINDING_ERROR,`No column named '${r}' inside ${this.ownerContainerKind} '${n}'`,e):[]})})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},th=class{constructor(e,t){this.compiler=e,this.node=t}interpret(){let e=this.node.body;return e instanceof W?new n(e.body.flatMap(e=>{if(!(e instanceof U)||!e.callee)return[];let n=[],r=I(e),a=[e.callee,...e.args],o,s,c,l,u;g(a)instanceof G&&a.pop();let d=this.compiler.nodeSettings(e).getFiltered(t);if(d){o=!!d[i.PK]?.length||void 0,s=!!d[i.Unique]?.length||void 0,c=P(d[i.Name]?.at(0)?.value);let e=d[i.Note]?.at(0);if(e){let t=P(e.value);t!==void 0&&(l={value:t,token:I(e)})}u=F(d[i.Type]?.at(0)?.value)}let f=a.flatMap(e=>{if(!(e instanceof um))return e;let t=[],n=e;for(;n instanceof um&&(n.argumentList&&t.push(n.argumentList),n.callee);)n=n.callee;return t.push(n),t});for(let e of f){let t=rp(e);if(t){for(let e of t.functional)n.push({value:e.value?.value??``,type:`expression`,token:I(e)});for(let e of t.nonFunctional)n.push({value:op(e)??``,type:`column`,token:I(e)})}}return[{columns:n,pk:o,unique:s,name:c,note:l,type:u,token:r}]})):new n([])}},nh={nodeMetadata(t,i){if(!j(i,r.Indexes))return n.create(e);let a=i.parent;return!a||!j(a,r.Table)&&!j(a,r.TablePartial)?n.create(e):n.create(new Cm(i))},nodeReferee(i,a){if(!k(a)||Uf(a))return n.create(e);let o=a;for(;o&&!j(o,r.Indexes);)o=o.parent;if(!o)return n.create(e);let s=o.parent;if(!s||!j(s,r.Table)&&!j(s,r.TablePartial))return n.create(e);let c=i.nodeSymbol(s).getFiltered(t);if(!c)return new n(void 0);let l=k(a)?a.expression.variable?.value??``:``,u=i.lookupMembers(c,L.Column,l);if(u)return n.create(u);let d=j(s,r.TablePartial)?`TablePartial`:`Table`;return new n(void 0,[new E(T.BINDING_ERROR,`Column '${l}' does not exist in ${d} 'public.${c.name}'`,a)])},bindNode(t,i){return j(i,r.Indexes)?n.create(void 0,new eh(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===vm.Indexes?r.declaration instanceof B?new th(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function rh(e,n){let r=tp(n);if(!r||r.length===0)return;let i=r[r.length-1];if(i instanceof sm){let n=[];for(let r of i.elementList){let i=e.nodeReferee(r).getFiltered(t);if(!i)return;n.push(i.originalSymbol)}return n}let a=r[r.length-1];if(!a||a instanceof sm)return;let o=e.nodeReferee(a).getFiltered(t);if(o)return[o.originalSymbol]}function ih(e,t,n,r){let i=e.map(e=>e.intern()).sort().join(`,`),a=t.map(e=>e.intern()).sort().join(`,`);if(i===a)return[new E(T.SAME_ENDPOINT,`Two endpoints are the same`,n)];let o=i<a?`${i}-${a}`:`${a}-${i}`,s=r.get(o);return s?[new E(T.CIRCULAR_REF,`References with same endpoints exist`,n),new E(T.CIRCULAR_REF,`References with same endpoints exist`,s)]:(r.set(o,n),[])}var ah=class{constructor(e,t){this.compiler=t,this.ast=e}resolve(){let e=[],i=this.compiler.reachableFiles(this.ast.filepath);for(let n of i){let{ast:i}=this.compiler.parseFile(n).getFiltered(t)||{ast:void 0};if(!i)continue;let a=i.body.filter(e=>e instanceof B&&e.isKind(r.Project));a.length>1&&a.forEach(t=>e.push(new E(T.PROJECT_REDEFINED,`Only one project can exist`,t)));for(let t of i.body)if(t instanceof B&&t.type){let n=t;e.push(...this.compiler.bindNode(n).getErrors())}else e.push(...this.compiler.bindNode(t).getErrors())}let a=this.compiler.nodeSymbol(this.ast).getFiltered(t);return a&&e.push(...oh(this.compiler,a)),e.push(...this.checkDuplicateRefs()),e.push(...this.checkTableGroups()),new n(void 0,e)}checkDuplicateRefs(){let e=[],n=new Map,i=this.compiler.reachableFiles(this.ast.filepath);for(let a of i){let i=this.compiler.parseFile(a).getFiltered(t);if(!i)continue;let{ast:o}=i;for(let t of o.body){if(!(t instanceof B)||!t.type)continue;let i=t;j(i,r.Ref)&&e.push(...this.checkStandaloneRefs(i,n)),j(i,r.Table)&&e.push(...this.checkInlineRefs(i,n)),j(i,r.TablePartial)&&e.push(...this.checkTablePartialSelfRefs(i))}}return e}checkStandaloneRefs(e,t){let n=[];for(let r of ep(e)){if(!(r instanceof U)||!r.callee||!Gf(r.callee))continue;let i=r.callee;if(!i.leftExpression||!i.rightExpression)continue;let a=rh(this.compiler,i.leftExpression),o=rh(this.compiler,i.rightExpression);!a||!o||n.push(...ih(a,o,e,t))}return n}checkInlineRefs(e,n){let r=[];for(let a of ep(e)){if(!(a instanceof U)||!a.callee)continue;let e=this.compiler.nodeSymbol(a).getFiltered(t);if(!e)continue;let o=this.compiler.nodeSettings(a).getFiltered(t);if(!o)continue;let s=o[i.Ref];if(!(!s||s.length===0))for(let t of s){let i=t.value;if(!(i instanceof H)||!i.op||!Of(i.op.value)||!i.expression)continue;let a=rh(this.compiler,i.expression);if(!a)continue;let o=[e.originalSymbol];r.push(...ih(o,a,t,n))}}return r}checkTablePartialSelfRefs(e){let n=[];for(let r of ep(e)){if(!(r instanceof U)||!r.callee)continue;let e=F(r.callee);if(!e)continue;let a=this.compiler.nodeSettings(r).getFiltered(t);if(!a)continue;let o=a[i.Ref];if(!(!o||o.length===0))for(let t of o){let r=t.value;r instanceof H&&(!r.op||!Of(r.op.value)||r.expression&&k(r.expression)&&r.expression.expression.variable?.value===e&&n.push(new E(T.SAME_ENDPOINT,`Two endpoints are the same`,t)))}}return n}checkTableGroups(){let e=[],n=new Map,i=this.compiler.reachableFiles(this.ast.filepath);for(let a of i){let i=this.compiler.parseFile(a).getFiltered(t);if(!i)continue;let{ast:o}=i;for(let i of o.body){if(!(i instanceof B)||!i.type)continue;let a=i;if(!j(a,r.TableGroup))continue;let o=a.name?N(a.name):void 0,s=o?o.join(`.`):`<unknown>`,c=ep(a);for(let r of c){if(!(r instanceof U)||!r.callee)continue;let i=tp(r.callee);if(!i||i.length===0)continue;let a=i[i.length-1],o=this.compiler.nodeReferee(a).getFiltered(t)?.originalSymbol;if(!o)continue;let c=n.get(o.id);if(c){let t=N(r.callee),n=t?t.join(`.`):`<unknown>`;e.push(new E(T.TABLE_REAPPEAR_IN_TABLEGROUP,`Table "${n}" already appears in group "${c.groupName}"`,r))}else n.set(o.id,{groupName:s,node:r})}}}return e}};function oh(e,n,r=new Set){if(r.has(n.id))return[];r.add(n.id);let i=e.symbolMembers(n),a=[...i.getErrors()],o=i.getFiltered(t);if(!o)return a;for(let t of o)t instanceof Mp&&a.push(...oh(e,t,r));return a}function sh(e,t,n){t.isKind(L.Table)?e.externals.tables.push(n):t.isKind(L.Enum)?e.externals.enums.push(n):t.isKind(L.TableGroup)?e.externals.tableGroups.push(n):t.isKind(L.TablePartial)?e.externals.tablePartials.push(n):t.isKind(L.StickyNote)&&e.externals.notes.push(n)}function ch(e){return e.values.map(t=>{let n={};return e.columns.forEach((e,r)=>{n[e]=t[r]}),n})}function lh(e,t){return e?`${e}.${t}`:`${y}.${t}`}function uh(e,t,n){return n.map(n=>{let r=t[n.name??``]?.value;if(r==null){let t=n.default(e);if(t)return JSON.stringify(t.value)}return JSON.stringify(r)}).join(`|`)}function dh(e,t,n){return n.some(n=>{let r=t[n.name??``]?.value;return r==null&&n.default(e)?!1:r==null})}function fh(e,t,n){return e?`${e}.${t}.${n}`:`${t}.${n}`}function ph(e,t,n){return n.length===1?fh(e,t,n[0]):`(${n.map(n=>fh(e,t,n)).join(`, `)})`}function mh(e,t,n){let r=n.map(n=>{let r=n.name??``,i=t[r]===void 0?n.default(e)?.value:t[r].value;return JSON.stringify(i)}).join(`, `);return n.length===1?r:`(${r})`}function hh(e,t){let n=t.filter(t=>e[t]).map(t=>e[t]);return n.length>0?n:Object.values(e).filter(Boolean)}function gh(e,t,n){let{token:r}=t,i=e.nodeAtPosition(r.filepath,r.start.offset)??e.parse.ast(r.filepath);return new _f(T.INVALID_RECORDS_FIELD,n,i)}var _h=e=>e>1?`Composite PK`:`PK`;function vh(e,t,n,r){return Oa(r.values)?[]:xa(Ch(t,e),i=>yh(e,t,n,i,r))}function yh(e,t,n,r,i){let a=ch(i),o=Sh(e,t,n,r,i);if(!Oa(o))return o;let s=r.filter(t=>!t.increment(e)&&!t.default(e)),[c,l]=_(a,t=>dh(e,t,s)),u=bh(e,t,s.map(e=>e.name??``),c),d=r.some(t=>t.increment(e))?[]:xh(e,t,r,l);return[...u,...d]}function bh(e,t,n,r){if(Oa(r))return[];let i=t.schema(e),a=t.name??``,o=`NULL in ${_h(n.length)}: ${ph(i,a,n)} cannot be NULL`;return xa(r,t=>hh(t,n).map(t=>gh(e,t,o)))}function xh(e,t,n,r){let i=n.map(e=>e.name??``),a=t.schema(e),o=t.name??``;return xa(ma(wa(r,t=>uh(e,t,n)),e=>e.length>1),t=>{let r=_h(i.length),s=ph(a,o,i);return xa(t,t=>{let a=`Duplicate ${r}: ${s} = ${mh(e,t,n)}`;return hh(t,i).map(t=>gh(e,t,a))})})}function Sh(e,t,n,r,i){let a=r.map(e=>e.name??``),o=new Set(i.columns),s=t.schema(e),c=t.name??``,l=da(a,Array.from(o));if(Oa(l))return[];let u=new Set(l),d=r.filter(e=>u.has(e.name??``)).filter(t=>!t.increment(e)&&!t.default(e)).map(e=>e.name??``);if(Oa(d))return[];let f=`${_h(d.length)}: Column ${ph(s,c,d)} is missing from record and has no default value`;return i.values.map(()=>new _f(T.INVALID_RECORDS_FIELD,f,n))}function Ch(e,t){let n=e.mergedColumns(t),r=ka(n,e=>e.name??``);return[...n.filter(e=>e.pk(t)).map(e=>[e]),...e.mergedIndexes(t).flatMap(e=>{let n=t.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(n)?n.filter(e=>e.pk).map(e=>Qr(e.columns.map(e=>r[e.value]))):[]})]}function wh(e,t,n){if(Oa(n.values))return[];let r=ch(n);return xa(Th(e,t),n=>Eh(e,t,n,r))}function Th(e,t){let n=t.mergedColumns(e),r=ka(n,e=>e.name??``);return[...n.filter(t=>t.isUniqueSet(e)).map(e=>[e]),...t.mergedIndexes(e).flatMap(t=>{let n=e.interpretMetadata(t,t.declaration.filepath).getValue();return Array.isArray(n)?n.filter(e=>e.unique).map(e=>Qr(e.columns.map(e=>r[e.value]))):[]})]}function Eh(e,t,n,r){let i=n.map(e=>e.name??``);return xa(ma(wa(r.filter(t=>!dh(e,t,n)),t=>uh(e,t,n)),e=>e.length>1),r=>{let a=n.length>1?`Composite UNIQUE`:`UNIQUE`,o=ph(t.schema(e),t.name??``,i);return xa(r,t=>{let r=`Duplicate ${a}: ${o} = ${mh(e,t,n)}`;return hh(t,i).map(t=>gh(e,t,r))})})}function Dh(e,t,n){let r=new Map;for(let i of e.values()){let{name:e,schema:a}=i.tableSymbol.interpretedName(t,n);r.set(lh(a,e),i)}return r}function Oh(e,t,n,r){let i=Dh(n,e,r),a=new Set;for(let[e,t]of i)t.record&&!Oa(t.record.values)&&a.add(e);return xa(t.filter(e=>e.endpoints?e.endpoints.some(e=>a.has(lh(e.schemaName,e.tableName))):!1),t=>kh(e,t,i,r))}function kh(e,t,n,r){if(!t.endpoints)return[];let[i,a]=t.endpoints,o=n.get(lh(i.schemaName,i.tableName)),s=n.get(lh(a.schemaName,a.tableName));if(!o||!s)return[];let c=o.tableSymbol.mergedColumns(e).filter(e=>typeof e.name==`string`&&i.fieldNames.includes(e.name)),l=s.tableSymbol.mergedColumns(e).filter(e=>typeof e.name==`string`&&a.fieldNames.includes(e.name)),{min:u,max:d}=ef(i.relation),{min:f,max:p}=ef(a.relation),m=(d===1||d!==`*`&&p!==`*`)&&f===0,ee=p===1&&u===0;return[...m?[]:Ah(e,o,c,s,l,a.relation,r),...ee?[]:Ah(e,s,l,o,c,i.relation,r)]}function Ah(e,t,n,r,i,a,o){if(!t.record||Oa(t.record.values))return[];let{min:s}=ef(a),c=Qr(n.map(e=>e.name)),l=Qr(i.map(e=>e.name)),u=s===0,d=ch(t.record),f=r.record?ch(r.record):[],p=new Set(f.map(t=>uh(e,t,i))),m=t.tableSymbol.interpretedName(e,o),ee=r.tableSymbol.interpretedName(e,o);return xa(d,t=>{if(dh(e,t,n)){if(u)return[];let r=`FK violation: ${ph(m.schema,m.name,c)} = ${mh(e,t,n)} must not be null`;return hh(t,c).map(t=>gh(e,t,r))}let r=uh(e,t,n);if(p.has(r))return[];let i=ph(m.schema,m.name,c),a=ph(ee.schema,ee.name,l),o=`FK violation: ${i} = ${mh(e,t,n)} does not exist in ${a}`;return hh(t,c).map(t=>gh(e,t,o))})}function jh(e,t){if(e instanceof U){let n=e.args.find(e=>e instanceof G);if(n){let e=n.end-1;return{start:e,end:e,newText:`, ${t}`}}}return{start:e.end,end:e.end,newText:` [${t}]`}}function Mh(e,t,n){let r=Nh(n,e,t);if(!r)return;let{settingsList:i,settingIndex:a}=r,o=i.elementList??[];if(o.length===1){let e=i.start;for(;e>0&&n[e-1]===` `;)e--;return{start:e,end:i.end,newText:``}}let s=o[a];if(a===0){let e=o[a+1];return{start:s.start,end:e.start,newText:``}}return{start:o[a-1].end,end:s.end,newText:``}}function Nh(e,t,n){if(!(t instanceof U)&&!(t instanceof B))return;let r=t instanceof U?t.args.find(e=>e instanceof G):t.attributeList;if(!r)return;let i=r.elementList??[],a=i.findIndex(t=>{if(!(t instanceof V))return!1;let r=e.substring(t.start,t.end).trim();return r===n||r.startsWith(`${n}:`)});if(a!==-1)return{settingsList:r,settingNode:i[a],settingIndex:a}}function Ph(e,t,n,r){let{allowOtherColFix:i=!0,allowOwnColFix:a=!0}=r??{},o=t.op(e),s=t.opToken(),c=t.cardinalities(e);if(!o||!s||!c)return[];let l=n===`left`?c[0]:c[1],u=ef(l),d=n===`left`?c[1]:c[0],f=ef(d),p=n===`left`?t.leftColumns(e):t.rightColumns(e),m=n===`left`?t.rightColumns(e):t.leftColumns(e),ee=n===`left`?t.leftToken():t.rightToken(),te=n===`left`?t.rightToken():t.leftToken(),ne=[],re=f.max===`*`||u.max===1&&f.max===1&&n===`left`;if(u.min>=1&&re&&m.length>0&&m.every(t=>t.nullable(e))){let t=m.map(t=>t.qualifiedName(e)).join(`, `),r=m.length===1?`Column '${t}' is nullable but operator '${o}' requires it to be NOT NULL`:`Columns (${t}) are all nullable but operator '${o}' requires at least one to be NOT NULL`,a=[s&&Ih(s,mf(l),d,n,`Make '${t}' optional in the ref`),...i?m.map(t=>Lh(t,e)).filter(e=>!!e):[]].filter(e=>!!e);ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,te,{quickFixes:a}));for(let e of m)e.declaration&&ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:a}))}if(u.min===0&&re&&m.length>0&&m.every(t=>t.nullable(e)===!1)){let t=m.map(t=>t.qualifiedName(e)).join(`, `),r=m.length===1?`Column '${t}' is NOT NULL but operator '${o}' allows it to be optional`:`Columns (${t}) are NOT NULL but operator '${o}' allows them to be optional`,a=[s&&Ih(s,hf(l),d,n,`Make '${t}' required in the ref`),...i?m.map(t=>Rh(t,e)).filter(e=>!!e):[]].filter(e=>!!e);ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,te,{quickFixes:a}));for(let e of m)e.declaration&&ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:a}))}if(u.max===`*`&&zh(e,p)){let t=p.map(t=>t.qualifiedName(e)).join(`, `),r=p.length===1?`Column '${t}' is unique but operator '${o}' allows many`:`Columns (${t}) have a unique index but operator '${o}' allows many`,i=[s&&Ih(s,`1`,d,n,`Make '${t}' one in the ref`)].filter(e=>!!e);ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,ee,{quickFixes:i}));for(let e of p)e.declaration&&ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:i}))}if(u.max===1&&!zh(e,p)){let t=p.map(t=>t.qualifiedName(e)).join(`, `),r=p.length===1?`Column '${t}' should be unique or primary key for operator '${o}'`:`Columns (${t}) should have a composite unique index for operator '${o}'`,i=[s&&Ih(s,gf(l),d,n,`Make '${t}' many in the ref`),a&&p.length===1&&Bh(p[0],e)].filter(e=>!!e);ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,ee,{quickFixes:i}));for(let e of p)e.declaration&&ne.push(new vf(T.INVALID_REF_RELATIONSHIP,r,e.declaration,{quickFixes:i}))}return ne}function Fh(e,t){return[...Ph(e,t,`right`,{allowOtherColFix:!1}),...Ph(e,t,`left`,{allowOwnColFix:!1})]}function Ih(e,t,n,r,i){let a=pf(r===`left`?t:n,r===`right`?t:n);return{title:`${i} (change operator to '${a}')`,filepath:e.filepath,edits:[{start:e.start,end:e.end,newText:a}]}}function Lh(e,t){if(!e.declaration||e.pk(t)||e.increment(t)||e.isNotNullSet(t))return;let n=t.getSource(e.declaration.filepath);if(!n)return;let r=e.qualifiedName(t),i=Mh(e.declaration,`null`,n);if(i)return{title:`Mark '${r}' as NOT NULL`,filepath:e.declaration.filepath,edits:[i]};let a=jh(e.declaration,`not null`);if(a)return{title:`Mark '${r}' as NOT NULL`,filepath:e.declaration.filepath,edits:[a]}}function Rh(e,t){if(!e.declaration)return;let n=t.getSource(e.declaration.filepath);if(!n)return;let r=Mh(e.declaration,`not null`,n);if(r)return{title:`Mark '${e.qualifiedName(t)}' as NULL`,filepath:e.declaration.filepath,edits:[r]}}function zh(e,n){if(n.length===0)return!1;if(n.length===1)return n[0].unique(e);let r=n[0].declaration?.parentOfKind(B);if(!r)return!1;let i=e.nodeSymbol(r).getFiltered(t);if(!i)return!1;let a=i.mergedIndexes(e),o=new Set(n.map(e=>e.name));for(let t of a){let r=e.interpretMetadata(t,n[0].filepath).getValue();if(!(!r||!Array.isArray(r))){for(let e of r)if(!(!e.unique&&!e.pk)&&e.columns.length===o.size&&e.columns.every(e=>o.has(e.value)))return!0}}return!1}function Bh(e,t){if(!e.declaration||e.isUniqueSet(t)||e.pk(t))return;let n=jh(e.declaration,`unique`);if(n)return{title:`Mark '${e.qualifiedName(t)}' as UNIQUE`,filepath:e.declaration.filepath,edits:[n]}}var Vh=class{constructor(e,t,n){this.errors=[],this.warnings=[],this.infos=[],this.compiler=e,this.programSymbol=t,this.programNode=t.declaration,this.filepath=n,this.db={schemas:[],tables:[],notes:[],refs:[],enums:[],tableGroups:[],aliases:[],tablePartials:[],records:[],diagramViews:[],token:I(this.programNode),externals:{tables:[],enums:[],tableGroups:[],tablePartials:[],notes:[]}}}interpret(){return this.interpretAllSymbols(),this.interpretAllMetadata(),this.interpretAllAliases(),this.validatePartialRefs(),this.warnings.push(...this.validateRecords()),new n(this.db,this.errors,this.warnings,this.infos)}interpretAllSymbols(){for(let e of this.programSymbol.declaration.declarations){let n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n||n instanceof Xp)continue;let r=this.compiler.interpretSymbol(n,this.filepath);if(r.hasValue(t))continue;this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings()),this.infos.push(...r.getInfos());let i=r.getValue();i&&this.pushElement(n,i)}let e=new Set,n=(this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[]).filter(e=>e instanceof Mp);for(;n.length>0;){let r=n.shift(),i=this.compiler.symbolMembers(r).getFiltered(t)??[];for(let t of i){if(t instanceof Mp){n.push(t);continue}if(!(t instanceof Xp))continue;let r=t.originalSymbol.intern();e.has(r)||(e.add(r),this.interpretUseSymbol(t))}}}interpretUseSymbol(e){let n=e.originalSymbol,r=this.compiler.interpretSymbol(n,this.filepath);if(!r.hasValue(t)){this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings()),this.infos.push(...r.getInfos());let t=r.getValue();t&&this.pushElement(e,t)}let i=n instanceof Fp?n.interpretedName(this.compiler,n.filepath):{name:n.name??``,schema:null},a=n instanceof Fp?n.interpretedName(this.compiler,this.filepath):{name:e.name??n.name??``,schema:null},o={name:i.name,schemaName:i.schema,filepath:n.filepath,visibleNames:[{schemaName:a.schema,name:a.name}]};sh(this.db,e,o)}interpretAllMetadata(){let e=this.compiler.symbolMetadata(this.programSymbol)??[],n=new Set,r=new Map;for(let t of e){if(!(t instanceof wm))continue;let e=t.table(this.compiler);if(!e)continue;let n=e.originalSymbol.intern(),i=r.get(n);i?i.count++:r.set(n,{count:1,tableName:e.name??``})}for(let i of e){let e=this.compiler.interpretMetadata(i,this.filepath);if(e.hasValue(t))continue;this.errors.push(...e.getErrors()),this.warnings.push(...e.getWarnings()),this.infos.push(...e.getInfos());let a=e.getValue();if(a!==void 0)switch(i.kind){case vm.Ref:{let e=a,[t,r]=e.endpoints??[];if(t&&r){let e=[t.schemaName,t.tableName,t.fieldNames.join(`,`),r.schemaName,r.tableName,r.fieldNames.join(`,`)].join(`|`),a=[r.schemaName,r.tableName,r.fieldNames.join(`,`),t.schemaName,t.tableName,t.fieldNames.join(`,`)].join(`|`);if(n.has(e)||n.has(a)){this.errors.push(new E(T.SAME_ENDPOINT,`Ref with same endpoints already exists`,i.declaration));break}n.add(e)}this.db.refs.push(e);break}case vm.Records:if(i instanceof wm){let e=i.table(this.compiler)?.originalSymbol.intern()??``,t=e?r.get(e):void 0;if(t&&t.count>1){this.errors.push(new E(T.DUPLICATE_RECORDS_FOR_TABLE,`Duplicate Records blocks for the same Table '${t.tableName}' - A Table can only have one Records block`,i.declaration));break}}this.db.records.push(a);break;case vm.Project:this.db.project=a;break;default:break}}}interpretAllAliases(){let e=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let t of e){if(!(t instanceof Yp)||!t.isKind(L.Table))continue;let{name:e,schema:n}=t.originalSymbol.interpretedName(this.compiler,this.filepath),r={name:t.name,kind:Um.Table,value:{tableName:e,schemaName:n}};this.db.aliases.push(r)}}validateRecords(){let e=[],n=new Map,r=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let e of r){if(!(e instanceof Mp))continue;let r=this.compiler.symbolMembers(e).getFiltered(t)??[];for(let e of r){if(!e.isKind(L.Table))continue;let t=e.originalSymbol;if(!(t instanceof Fp))continue;let r=t.intern();n.has(r)||n.set(r,{tableSymbol:t,record:void 0,recordBlock:t.declaration})}}let i=this.compiler.symbolMetadata(this.programSymbol);for(let r of i){if(!(r instanceof wm))continue;let i=r.table(this.compiler);if(!(i instanceof Fp))continue;let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))continue;let o=a.getValue();if(!o)continue;e.push(...vh(this.compiler,i,r.declaration,o)),e.push(...wh(this.compiler,i,o));let s=i.originalSymbol.intern(),c=n.get(s);c?c.record=o:n.set(s,{tableSymbol:i,record:o,recordBlock:r.declaration})}let a=this.collectPartialRefs(n);return e.push(...Oh(this.compiler,[...this.db.refs,...a],n,this.filepath)),e}validatePartialRefs(){let e=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof xm);for(let t of e)this.infos.push(...Fh(this.compiler,t))}collectPartialRefs(e){let t=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof xm),n=[];for(let{tableSymbol:r}of e.values())for(let e of r.resolvedPartials(this.compiler))for(let i of t){if(i.leftTablePartial(this.compiler)?.originalSymbol!==e.originalSymbol)continue;let t=i.leftColumns(this.compiler),a=i.rightTable(this.compiler),o=i.rightColumns(this.compiler),s=i.op(this.compiler);if(!a||!s||t.length===0||o.length===0)continue;let c=r.mergedColumns(this.compiler);if(!t.some(e=>c.some(t=>t instanceof Zp&&t.declaration===e.declaration)))continue;let l=sf(s);if(!l)continue;let u=a instanceof Bp&&a.originalSymbol===e.originalSymbol?r:a,d=r.interpretedName(this.compiler,this.filepath),f=u.interpretedName(this.compiler,this.filepath),p={schemaName:d.schema,tableName:d.name,fieldNames:t.map(e=>e.name??``),relation:l[0],token:I(i.leftToken())},m={schemaName:f.schema,tableName:f.name,fieldNames:o.map(e=>e.name??``),relation:l[1],token:I(i.rightToken())};n.push({token:I(i.declaration),endpoints:[p,m]})}return n}pushElement(e,t){if(!Array.isArray(t))switch(e.kind){case L.Table:this.db.tables.push(t);break;case L.Enum:this.db.enums.push(t);break;case L.TableGroup:this.db.tableGroups.push(t);break;case L.TablePartial:this.db.tablePartials.push(t);break;case L.StickyNote:this.db.notes.push(t);break;case L.DiagramView:this.db.diagramViews.push(t);break;default:break}}},Hh={nodeSymbol(t,r){return Bf(r)?n.create(t.symbolFactory.create(Jp,{declaration:r,name:r.filepath.absolute},r.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(L.Program))return n.create(e);if(!(i.declaration instanceof z))return n.create([]);let a=new Map;for(let e of r.reachableFiles(i.filepath)){let{schemaMembers:t}=r.usableMembers(e).getValue();for(let e of t)a.has(e.name)||a.set(e.name,e)}let o=a.get(y);if(!o)return n.create([...a.values()]);let s=r.symbolMembers(o).getFiltered(t)?.filter(e=>!e.isKind(L.Schema));return s?n.create([...a.values(),...s]):n.create([...a.values()])},bindNode(t,r){return Bf(r)?new ah(r,t).resolve():n.create(e)},interpretSymbol(t,r,i){if(!(r instanceof Jp))return n.create(e);if(!(r.declaration instanceof z))return n.create(void 0);if(!Lm(t,r.declaration)){let e=t.reachableFiles(i).flatMap(e=>t.bindFile(e).getErrors());return n.create(void 0,e)}return new Vh(t,r,i).interpret()}},Uh=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof W?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof U)return[];let t=e.body.filter(e=>e instanceof B);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Wh=class{constructor(e,t,n){this.declarationNode=t,this.compiler=e,this.filepath=n,this.project={enums:[],refs:[],tableGroups:[],tables:[],tablePartials:[]}}interpret(){this.project.token=I(this.declarationNode);let e=[...this.interpretName(this.declarationNode.name),...this.interpretBody(this.declarationNode.body)];return new n(this.project,e)}interpretName(e){if(!e)return this.project.name=null,[];let{name:t}=Tp(e);return this.project.name=t,[]}interpretSubElement(e){let r=this.compiler.nodeSymbol(e).getFiltered(t);if(r){let e=this.compiler.interpretSymbol(r,this.filepath);if(!e.hasValue(t))return e}return n.create(void 0)}interpretBody(e){return e.body.flatMap(e=>{let t=e;switch(t.getElementKind()){case r.Table:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tables?.push(e.getValue()),e.getErrors()}case r.TableGroup:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tableGroups?.push(e.getValue()),e.getErrors()}case r.Enum:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.enums?.push(e.getValue()),e.getErrors()}case r.Note:{let e=t.body instanceof W?t.body.body[0]?.callee:t.body?.callee,n=e?P(e):void 0;return n&&(this.project.note={value:wp(n),token:I(t)}),[]}case r.TablePartial:{let e=this.interpretSubElement(t);return e.getValue()&&this.project.tablePartials?.push(e.getValue()),e.getErrors()}default:return this.project[t.type.value.toLowerCase()]=P(t.body.callee),[]}})}},Gh={nodeMetadata(t,i){return j(i,r.Project)?n.create(new Tm(i)):n.create(e)},bindNode(t,i){return j(i,r.Project)?n.create(void 0,new Uh(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return!(r instanceof Tm)||!(r.declaration instanceof B)?n.create(e):new Wh(t,r.declaration,i).interpret()}},Kh=class{constructor(e,t){this.compiler=e,this.declarationNode=t,this.boundColumns=new Map}bind(){let e=[];return this.declarationNode.name&&e.push(...this.bindRecordsName(this.declarationNode.name)),this.declarationNode.body instanceof W&&e.push(...this.bindBody(this.declarationNode.body)),e}bindRecordsName(e){return this.declarationNode.parent instanceof z?this.bindTopLevelName(e):this.bindInsideTableName(e)}bindTopLevelName(e){let n=ap(e);if(!n)return[];let r=n.variables.pop(),i=n.variables;if(!r)return[];let a=this.compiler.nodeReferee(r).getErrors();if(a.length>0)return a;let o=this.compiler.nodeReferee(r).getFiltered(t);if(!o)return[];let s=Qf(o.declaration)??`<invalid name>`,c=i.flatMap(e=>this.compiler.nodeReferee(e).getErrors());for(let e of n.args){let n=op(e)??`<unnamed>`,r=this.compiler.nodeReferee(e).getFiltered(t);if(!r){c.push(new E(T.BINDING_ERROR,`Column '${n}' does not exist in Table '${s}'`,e));continue}let i=this.boundColumns.get(r);i&&(c.push(new E(T.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,i)),c.push(new E(T.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,e))),this.boundColumns.set(r,e)}return c}bindInsideTableName(e){let n=this.declarationNode.parent;if(!(n instanceof B)||!n.isKind(r.Table)||!this.compiler.nodeSymbol(n).getFiltered(t)||!Nf(e))return[];let i=Qf(n)??`<invalid name>`,a=[];for(let n of e.elementList){let e=op(n)??`<unnamed>`;if(!this.compiler.nodeReferee(n).getFiltered(t)){a.push(new E(T.BINDING_ERROR,`Column '${e}' does not exist in Table '${i}'`,n));continue}}return a}bindBody(e){if(!e)return[];if(e instanceof U)return this.bindDataRow(e);let t=e.body.filter(e=>e instanceof U),n=e.body.filter(e=>e instanceof B);return[...this.bindDataRows(t),...this.bindSubElements(n)]}bindDataRows(e){return e.flatMap(e=>this.bindDataRow(e))}bindDataRow(e){return e.callee?(e.callee instanceof cm?e.callee.elementList:[e.callee]).flatMap(Rm).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();return!t||!n?[]:[...e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors()),...n?this.compiler.nodeReferee(n).getErrors():[],...this.compiler.nodeReferee(t).getErrors()]}):[]}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},qh=class{constructor(e,t,n){this.compiler=e,this.metadata=t,this.element=t.declaration,this.filepath=n}interpret(){let e=[],t=[],r=Jh(this.element,this.compiler,this.filepath);if(!r||r.columns.length===0)return new n(void 0,e);let i=[];for(let n of this.element.body.body){let a=Yh(n,r.columns,this.compiler);e.push(...a.getErrors()),t.push(...a.getWarnings());let o=a.getValue();o.row&&i.push(o.row)}let a=I(this.element);return new n({schemaName:r.schemaName,tableName:r.tableName,columns:r.columns.map(e=>e.name??``),values:i,token:a},e,t)}};function Jh(e,n,i){let a=e.name,o=e.parent;if(o instanceof B&&o.isKind(r.Table)){let e=n.nodeSymbol(o).getFiltered(t);if(!(e instanceof Fp))return;let r=e.mergedColumns(n),s=e.interpretedName(n,i),c=s.schema,l=s.name;return a?{schemaName:c,tableName:l,columns:a.elementList.flatMap(e=>r.find(t=>t.name===F(e))||[])}:{schemaName:c,tableName:l,columns:r}}let s=ap(a);if(!s)return;let c=s.variables.map(e=>e.expression.variable?.value??``),l=c.at(-1)??``,u=c.length>1?c.slice(0,-1).join(`.`):void 0,d=n.parseFile(e.filepath).getValue().ast,f=n.nodeSymbol(d).getFiltered(t);if(!f)return;let p;if(u){let e=n.lookupMembers(f,L.Schema,u);e&&(p=n.lookupMembers(e,L.Table,l))}if(p||=n.lookupMembers(f,L.Table,l),!p)return;let m=p.originalSymbol;if(!(m instanceof Fp))return;let ee=m.mergedColumns(n),te=s.args.map(e=>ee.find(t=>t.name===F(e))).filter(Boolean),ne=m.interpretedName(n,i);return{schemaName:ne.schema,tableName:ne.name,columns:te}}function Yh(e,t,r){let i=[],a=[],o={},s=e.callee instanceof cm?e.callee.elementList:[e.callee];if(s.length!==t.length)return i.push(new E(T.INVALID_RECORDS_FIELD,`Expected ${t.length} values but got ${s.length}`,e)),new n({row:null,columnNodes:{}},i,a);let c=[];for(let e=0;e<t.length;e++){let n=s[e],l=t[e];o[l.name??``]=n;let u=Zh(n,l,r);i.push(...u.getErrors()),a.push(...u.getWarnings());let d=u.getValue();c.push(d??{value:null,type:`expression`,token:I(n)})}return new n({row:c,columnNodes:o},i,a)}function Xh(e){return e instanceof om&&e.value?.value||``}function Zh(e,t,r){let i=I(e),a=t.type(r),o=(a?.name??``).split(`(`)[0],s=!!a?.enumSymbol,c=t.increment(r),l=t.isNotNullSet(r)===!0,u=t.default(r),d=t.name??``,f=Ho(o,s),p=_p(e),m=p===null?Xh(e):p,ee=p===null?`expression`:f;if(e instanceof om)return new n({value:e.value?.value||``,type:`expression`,token:i},[],[]);if(sp(e)||cp(e)&&!Ro(o)){let t=u&&u.value.toString().toLowerCase()!==`null`,r=Vo(o);return l&&!t&&!c&&!r?new n({value:null,type:f,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`NULL not allowed for non-nullable column '${d}' without default and increment`,e)]):new n({value:null,type:f,token:i},[],[])}if(s){let a=t.type(r)?.enumSymbol,o=a?a.members(r).filter(e=>e.isKind(L.EnumField)).map(e=>e.name).filter(Boolean):[],s=P(e);return s===void 0&&(s=k(e)?e.expression.variable.value:void 0),o.includes(s)?new n({value:s,type:f,token:i},[],[]):new n({value:s,type:f,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Invalid enum value for column '${d}'`,e)])}if(Po(o)||Fo(o)||Vo(o)){let t=up(e);if(t===null)return new n({value:m,type:ee,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Invalid numeric value for column '${d}'`,e)]);if(Po(o)&&!Number.isInteger(t))return new n({value:Math.floor(t),type:f,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Invalid integer value ${t} for column '${d}': expected integer, got decimal`,e)]);let r=Fo(o)&&a?.args?.length?{precision:Number(a.args[0]),scale:a.args.length>=2?Number(a.args[1]):0}:void 0;if(Fo(o)&&r){let{precision:a,scale:o}=r,s=t.toString().split(`.`),c=s[0].replace(/^-/,``),l=s[1]||``,u=c.length+l.length,p=l.length;if(u>a)return new n({value:t,type:f,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Numeric value ${t} for column '${d}' exceeds precision: expected at most ${a} total digits, got ${u}`,e)]);if(p>o)return new n({value:t,type:f,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Numeric value ${t} for column '${d}' exceeds scale: expected at most ${o} decimal digits, got ${p}`,e)])}return new n({value:t,type:f,token:i},[],[])}if(Lo(o)){let t=hp(e);return t===null?new n({value:m,type:ee,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Invalid boolean value for column '${d}'`,e)]):new n({value:t,type:f,token:i},[],[])}if(Bo(o)){let t=xp(e);return t===null?new n({value:m,type:ee,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Invalid datetime value for column '${d}', expected valid datetime format (e.g., 'YYYY-MM-DD', 'HH:MM:SS', 'YYYY-MM-DD HH:MM:SS', 'MM/DD/YYYY', 'D MMM YYYY', or 'MMM D, YYYY')`,e)]):new n({value:t,type:f,token:i},[],[])}if(Ro(o)){let t=_p(e);if(t===null)return new n({value:m,type:ee,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`Invalid string value for column '${d}'`,e)]);let r=a?.args?.length?Number(a.args[0]):void 0;if(r&&!Number.isNaN(r)){let a=r,o=new TextEncoder().encode(t).length;if(o>a)return new n({value:t,type:f,token:i},[],[new _f(T.INVALID_RECORDS_FIELD,`String value for column '${d}' exceeds maximum length: expected at most ${a} bytes (UTF-8), got ${o} bytes`,e)])}return new n({value:t,type:`string`,token:i},[],[])}return new n({value:m,type:ee,token:i},[],[])}var Qh={nodeMetadata(t,i){if(!j(i,r.Records))return n.create(e);let a=i.parent;if(a&&j(a,r.Table))return n.create(new wm(i));let o=i.name;return o instanceof um&&o.callee?n.create(new wm(i)):n.create(e)},nodeReferee(i,a){if(!k(a))return n.create(e);let o=a.parentOfKind(B);if(!o?.isKind(r.Records))return n.create(e);let s=i.parseFile(a.filepath).getValue().ast,c=i.nodeSymbol(s).getFiltered(t);if(!c)return n.create(void 0);let l=a.parentOfKind(sm);if(l?.parentNode===o)return $h(i,o,a);let u=a.parentOfKind(um);return u?.parentNode===o&&l?.parentNode===u?eg(i,u,a):u?.parentNode===o&&u.callee?.containsEq(a)?tg(i,c,a):rg(i,c,a)},bindNode(t,i){return j(i,r.Records)?n.create(void 0,new Kh(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof wm?r.declaration instanceof B?new qh(t,r,i).interpret():n.create(void 0):n.create(e)}};function $h(e,i,a){let o=i.parent;if(o instanceof B&&o.isKind(r.Table)){let n=e.nodeSymbol(o).getFiltered(t);if(n)return ng(e,n,a)}return new n(void 0)}function eg(e,r,i){if(r.callee){let n;if(k(r.callee))n=e.nodeReferee(r.callee).getFiltered(t);else{let i=tp(r.callee);if(i&&i.length>0){let r=i[i.length-1];n=e.nodeReferee(r).getFiltered(t)}}if(n)return ng(e,n,i)}return new n(void 0)}function tg(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``;if(!A(r.parentNode)){let a=e.lookupMembers(t,[L.Table,L.Schema],i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Table '${i}' does not exist in Schema 'public'`,r)])}let a=zm(e,r);if(!a){let a=e.lookupMembers(t,[L.Table,L.Schema],i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Table or schema '${i}' does not exist`,r)])}if(a.isKind(L.Schema)){let t=e.lookupMembers(a,[L.Table,L.Schema],i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table or schema '${i}' does not exist`,r)])}return new n(void 0)}function ng(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``,a=e.lookupMembers(t,L.Column,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Column '${i}' does not exist in Table 'public.${t.name}'`,r)])}function rg(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``;if(!A(r.parentNode))return new n(void 0);let a=zm(e,r);if(a){if(a.isKind(L.Schema)){let t=e.lookupMembers(a,[L.Enum,L.Schema],i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(L.Enum)){let t=e.lookupMembers(a,L.EnumField,i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(A(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,L.Schema,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,L.Enum,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var ig=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof z)&&!this.declarationNode.parent?.isKind(r.Project)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof U)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Rm).flatMap(e=>{let t=e.tupleElements.length?e.tupleElements:e.variables.pop(),n=e.variables.pop();return!t||!n?[]:(Array.isArray(t)||(t=[t]),[...e.variables,n,...t].flatMap(e=>this.compiler.nodeReferee(e).getErrors()))}):[])}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},ag=class{constructor(e,t,n){this.compiler=e,this.filepath=n,this.metadata=t,this.declarationNode=t.declaration,this.ref={}}interpret(){this.ref.token=I(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody()],{infos:t}=this.validateRefConstraints();return n.create(this.ref,e,void 0,t)}interpretName(){if(!(this.declarationNode instanceof B))return[];let e=[],t=N(this.declarationNode.name)??[];return this.ref.name=t.pop()||null,t.length>1&&e.push(new E(T.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name)),this.ref.schemaName=t.join(`.`)||null,e}interpretBody(){let e=this.metadata.op(this.compiler),t=this.metadata.leftColumns(this.compiler),n=this.metadata.leftTable(this.compiler),r=this.metadata.rightColumns(this.compiler),i=this.metadata.rightTable(this.compiler);if(La(t,r).every(([e,t])=>e?.originalSymbol===t?.originalSymbol))return[new E(T.SAME_ENDPOINT,`Two endpoints are the same`,this.declarationNode)];let a=sf(e),o=n?.interpretedName(this.compiler,this.filepath),s=i?.interpretedName(this.compiler,this.filepath),c=I(this.metadata.leftToken()),l=I(this.metadata.rightToken());if(this.ref.endpoints=this.declarationNode instanceof B?[{schemaName:o?.schema??null,tableName:o?.name??``,fieldNames:t.map(e=>e.name??``),relation:a[0],token:c},{schemaName:s?.schema??null,tableName:s?.name??``,fieldNames:r.map(e=>e.name??``),relation:a[1],token:l}]:[{schemaName:s?.schema??null,tableName:s?.name??``,fieldNames:r.map(e=>e.name??``),relation:a[1],token:l},{schemaName:o?.schema??null,tableName:o?.name??``,fieldNames:t.map(e=>e.name??``),relation:a[0],token:c}],!(this.declarationNode instanceof B))return[];let u=ep(this.declarationNode)[0];if(u.args[0]){let e=D(u.args[0]).getValue(),t=e.delete?.at(0)?.value;this.ref.onDelete=t instanceof rm?Zf(t):F(t);let n=e.update?.at(0)?.value;this.ref.onUpdate=n instanceof rm?Zf(n):F(n),this.ref.color=e.color?.length?Ep(e.color?.at(0)?.value):void 0,this.ref.inactive=e.inactive?.length?!0:void 0}return[]}validateRefConstraints(){return this.metadata.cardinalities(this.compiler)?{infos:[...Ph(this.compiler,this.metadata,`right`),...Ph(this.compiler,this.metadata,`left`)]}:{infos:[]}}};function og(e){let t=e.parent;for(;t;){if(t instanceof B&&t.isKind(r.Ref))return t.body?.containsEq(e)??!1;t=t.parent}return!1}var sg={nodeReferee(r,i){if(!k(i)&&!A(i)||!og(i)||i.parentOfKind(V))return n.create(e);let a=r.parseFile(i.filepath).getValue().ast,o=r.nodeSymbol(a).getValue();return o===t?n.create(void 0):lg(r,o,i)},nodeMetadata(t,a){if(j(a,r.Ref)){let t=ep(a)[0];if(!(t instanceof U)||!t.callee)return n.create(e);let r=t.callee;return!(r instanceof im)||!r.op?n.create(e):n.create(new bm(a))}if(a instanceof V){if(!(a.name instanceof rm)||Zf(a.name)?.toLowerCase()!==i.Ref)return n.create(e);let t=a.parent;return t instanceof B&&t.isKind(r.TablePartial)?n.create(new xm(a)):n.create(new bm(a))}return n.create(e)},bindNode(t,i){return j(i,r.Ref)?n.create(void 0,new ig(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof bm?new ag(t,r,i).interpret():n.create(e)}};function cg(e,n){let r=e.symbolMembers(n).getFiltered(t);if(r)return r.find(e=>e instanceof Mp&&e.isPublicSchema())}function lg(e,r,i){if(!k(i))return new n(void 0);let a=op(i)??``;if(!A(i.parentNode)){let r=i.parentNode;if(r&&A(r.parentNode)&&r.parentNode.rightExpression===r){let o=r.parentNode.leftExpression,s=A(o)?o.rightExpression??o:o,c=e.nodeReferee(s).getFiltered(t);if(c?.isKind(L.Table)){let r=e.lookupMembers(c,L.Column,a);if(r)return n.create(r);let o=c.declaration?e.nodeFullname(c.declaration).getFiltered(t)?.join(`.`)??c.name:c.name;return new n(void 0,[new E(T.BINDING_ERROR,`Column '${a}' does not exist in Table '${o}'`,i)])}}return n.create(void 0)}let o=zm(e,i);if(o){if(o.isKind(L.Schema)){let t=e.lookupMembers(o,[L.Table,L.Schema],a);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}if(o.isKind(L.Table)){let r=e.lookupMembers(o,L.Column,a);return r?n.create(r):new n(void 0,[new E(T.BINDING_ERROR,`Column '${a}' does not exist in Table '${o.declaration?e.nodeFullname(o.declaration).getFiltered(t)?.join(`.`)??o.name:o.name}'`,i)])}return new n(void 0)}let s=i.parentNode;if(s.leftExpression===i){if(A(s.parentNode)&&s.parentNode.leftExpression===s){let t=e.lookupMembers(r,L.Schema,a);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}let t=cg(e,r);if(t){let r=e.lookupMembers(t,L.Table,a);if(r)return n.create(r)}let o=e.lookupMembers(r,L.Table,a);return o?n.create(o):new n(void 0,[new E(T.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}return new n(void 0)}var ug={visibleName(e,n){let r=n instanceof R?n:n.useSpecifierDeclaration instanceof tm?n.useSpecifierDeclaration:n.declaration;if(r instanceof tm&&n instanceof jp&&r.getSymbolKind()!==n.kind&&(r=n.declaration),!r)return;let i=e.nodeAlias(r).getFiltered(t);return i===void 0?e.nodeFullname(r).getFiltered(t):[i]}},dg={nodeSymbol(r,i){if(!zf(i)||!i.name)return n.create(e);let a=i.getSymbolKind();if(a===void 0||a===L.Schema)return n.create(e);let o=r.nodeReferee(i.name).getFiltered(t);return o&&!o.canBeImported?n.create(e):n.create(r.symbolFactory.create(Xp,{useSpecifierDeclaration:i,declaration:o?.declaration,usedSymbol:o,kind:a,name:ug.visibleName(r,i)?.at(-1)},i.filepath),o===void 0?[new E(T.BINDING_ERROR,`Failed to resolve the import of ${a} '${(N(i.name)||[]).map(jg).join(`.`)}'`,i)]:[])},symbolMembers(r,i){if(!(i instanceof Xp))return n.create(e);let a=r.symbolMembers(i.originalSymbol).getFiltered(t);return n.create(a??[])},nodeReferee(r,i){if(!k(i)&&!Lf(i))return n.create(e);let a=i.parentOfKind(tm);if(!a)return n.create(e);let o=a.name===i||A(a.name)&&a.name.rightExpression===i?a.getSymbolKind():L.Schema;if(o===void 0)return n.create(void 0);let s=N(i.parentOfKind(im)),c=F(i)??s?.at(-1);if(c===void 0)return n.create(void 0);let l=i.parentOfKind(em);if(l?.importPath?.value===void 0)return n.create(void 0);let u=bo(i.filepath,l.importPath.value);if(!u)return n.create(void 0,[new E(T.BINDING_ERROR,`Import path must be relative, got '${l.importPath.value}'`,i)]);if(!r.layout.exists(u))return n.create(void 0,[new E(T.NONEXISTENT_MODULE,`${o} '${s?.join(`.`)??c}' does not exist in file ${u.toString()}. Does the file exist?`,i)]);let d=i.parentOfKind(im)?.leftExpression;if(d&&d!==i){let e=r.nodeReferee(d).getFiltered(t);if(!e)return n.create(void 0);let a=r.lookupMembers(e,o,c);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Could not find ${o} '${c}'`,i)])}let f=fg(r,u,c,o);return f?n.create(f):n.create(void 0,[new E(T.BINDING_ERROR,`${o} '${c}' does not exist in file ${u.toString()}`,i)])},bindNode(t,r){if(Rf(r)){let e=[];if(r.importPath?.value){let n=bo(r.filepath,r.importPath.value);n?t.layout.exists(n)||e.push(new E(T.NONEXISTENT_MODULE,`Failed to resolve the non-existent file '${r.importPath.value}'`,r.importPath)):e.push(new E(T.BINDING_ERROR,`Import path must be relative, got '${r.importPath.value}'`,r.importPath))}if(r.specifiers){let n=t.bindNode(r.specifiers);e.push(...n.getErrors())}return new n(void 0,e)}return r instanceof nm?new n(void 0,r.specifiers.flatMap(e=>t.bindNode(e).getErrors())):zf(r)?r.name?new n(void 0,t.nodeReferee(r.name).getErrors()):new n(void 0):n.create(e)},interpretSymbol(r,i,a){if(!(i instanceof Xp))return n.create(e);if(!i.usedSymbol)return n.create(void 0);let o=r.interpretSymbol(i.usedSymbol,a);if(o.hasValue(t))return n.create(void 0);let s=o.getValue();if(!s||Array.isArray(s))return o;let c=i.name;return c&&`name`in s?n.create({...s,name:c}):n.create(s)}};function fg(e,n,r,i,a=new Set){if(!n||a.has(n.intern()))return;a.add(n.intern());let o=e.usableMembers(n).getFiltered(t);if(!o)return;let s=o.nonSchemaMembers.find(e=>e.name===r&&e.isKind(i));if(s)return s;let c=o.schemaMembers.find(e=>e.name===r);if(c?.isKind(L.Schema))return c;for(let t of o.reuses.selective)if(N(t.alias??t.name)?.at(-1)===r){let o=t.parentOfKind(em);if(o?.importPath?.value){let s=fg(e,bo(n,o.importPath.value),N(t.name)?.at(-1)??r,i,a);if(s)return s}}for(let{importPath:t}of o.reuses.wildcard){let n=fg(e,t,r,i,a);if(n)return n}}function pg(e){if(e instanceof yo){let{ast:n}=this.parseFile(e).getValue(),r=this.nodeSymbol(n).getFiltered(t);return this.usableMembers(r)}let r=e.filepath,i=hg(this,r),{nonSchemaMembers:a,schemaMembers:o}=e instanceof Jp?gg(this,e,i):_g(this,e,i);return new n({nonSchemaMembers:a,schemaMembers:o,reuses:{selective:i.selectiveReuses,wildcard:i.wildcardReuses},uses:{selective:i.selectiveUses,wildcard:i.wildcardUses}},i.parseResult.getErrors(),i.parseResult.getWarnings())}function mg(e,n,r){let i=n.qualifiedName,a;if(a=r instanceof tm?ug.visibleName(e,r):e.nodeFullname(r).getFiltered(t),!a)return{kind:`none`};let o=r instanceof tm&&r.getSymbolKind()===L.Schema?a:a.length<=1?[y]:a.slice(0,-1);return o.length<i.length||!i.every((e,t)=>e===o[t])?{kind:`none`}:o.length===i.length?{kind:`direct`}:{kind:`child`,schemaName:o[i.length]}}function hg(e,t){let n=e.parseFile(t),{ast:r}=n.getValue(),i=[],a=[],o=[],s=[];for(let e of r.body){if(!(e instanceof em)||!e.specifiers||!e.importPath)continue;let n=bo(t,e.importPath.value);n&&(e.isReuse?e.specifiers instanceof fm?i.push({importPath:n,node:e.specifiers}):a.push(...e.specifiers.specifiers):e.specifiers instanceof fm?o.push({importPath:n,node:e.specifiers}):s.push(...e.specifiers.specifiers))}return{ast:r,parseResult:n,selectiveReuses:a,wildcardReuses:i,selectiveUses:s,wildcardUses:o}}function gg(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=n.filepath,c=new Map([[y,e.symbolFactory.create(Mp,{name:y},s)]]);for(let n of i.declarations){let r=e.nodeFullname(n).getFiltered(t)||[],i=r.length<=1?y:r[0];c.has(i)||c.set(i,e.symbolFactory.create(Mp,{name:i},s))}vg(e,[...a,...o],c,s);for(let t of e.reachableFiles(s))for(let n of bg(e,t))c.has(n)||c.set(n,e.symbolFactory.create(Mp,{name:n},s));let l=[...c.values()],u=[],d=l.find(e=>e.isPublicSchema());if(d){let n=e.usableMembers(d).getFiltered(t);n&&u.push(...n.nonSchemaMembers)}return{nonSchemaMembers:u,schemaMembers:l}}function _g(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=[],c=new Map;for(let r of i.body){if(!(r instanceof B))continue;let i=mg(e,n,r),a=e.nodeAlias(r).getFiltered(t),o=e.nodeSymbol(r).getFiltered(t);if(a!==void 0&&n.isPublicSchema()&&o&&s.push(e.symbolFactory.create(Yp,{kind:o.kind,declaration:r,aliasedSymbol:o,name:a},n.filepath)),i.kind!==`none`)if(i.kind===`direct`){let n=e.nodeSymbol(r).getFiltered(t);if(!n)continue;s.push(n)}else c.has(i.schemaName)||c.set(i.schemaName,e.symbolFactory.create(Mp,{name:i.schemaName,parent:n},n.filepath))}yg(e,[...a,...o],n,c);let l=n.qualifiedName;for(let t of e.reachableFiles(n.filepath))for(let r of xg(e,t,l))c.has(r)||c.set(r,e.symbolFactory.create(Mp,{name:r,parent:n},n.filepath));return{nonSchemaMembers:s,schemaMembers:[...c.values()]}}function vg(e,t,n,r){for(let i of t){if(i.getSymbolKind()!==L.Schema)continue;let t=ug.visibleName(e,i)?.at(0);t!==void 0&&!n.has(t)&&n.set(t,e.symbolFactory.create(Mp,{name:t},r))}}function yg(e,t,n,r){let i=n.qualifiedName;for(let a of t){if(a.getSymbolKind()!==L.Schema)continue;let t=ug.visibleName(e,a);if(!t||t.length<=i.length||!i.every((e,n)=>e===t[n]))continue;let o=t[i.length];o&&!r.has(o)&&r.set(o,e.symbolFactory.create(Mp,{name:o,parent:n},n.filepath))}}function bg(e,n){let{ast:r}=e.parseFile(n).getValue(),i=[];for(let n of r.declarations){let r=e.nodeFullname(n).getFiltered(t)||[],a=r.length<=1?y:r[0];i.push(a)}let a=hg(e,n);for(let t of[...a.selectiveUses,...a.selectiveReuses]){if(t.getSymbolKind()!==L.Schema)continue;let n=ug.visibleName(e,t)?.at(0);n!==void 0&&i.push(n)}return i}function xg(e,n,r){let{ast:i}=e.parseFile(n).getValue(),a=[];for(let n of i.declarations){let i=e.nodeFullname(n).getFiltered(t)||[],o=i.length<=1?[y]:i.slice(0,-1);o.length>r.length&&r.every((e,t)=>e===o[t])&&a.push(o[r.length])}let o=hg(e,n);for(let t of[...o.selectiveUses,...o.selectiveReuses]){if(t.getSymbolKind()!==L.Schema)continue;let n=ug.visibleName(e,t);!n||n.length<=r.length||r.every((e,t)=>e===n[t])&&a.push(n[r.length])}return a}var Sg=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof W?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof U)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return(e=>e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];if(g(n)instanceof G){let e=D(g(n)).getValue();t.push(...e.ref?.flatMap(e=>e.value?this.bindInlineRef(e.value):[])||[]),t.push(...e.default?.flatMap(e=>e.value?this.tryToBindEnumFieldRef(e.value):[])||[]),n.pop()}return n[1]&&this.tryToBindColumnType(n[1]),t}))(e.filter(e=>!Df(e.callee)))}tryToBindColumnType(e){let t=np(e);if(!t)return;let n=t.variables.pop();n&&this.compiler.nodeReferee(n).getErrors()}tryToBindEnumFieldRef(e){if(O(e))return[];if(k(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&xo.includes(t))return[]}let t=np(e);if(!t){if(A(e)){let t=e,n=[];return t.leftExpression&&n.push(...this.compiler.nodeReferee(t.leftExpression).getErrors()),t.rightExpression&&n.push(...this.compiler.nodeReferee(t.rightExpression).getErrors()),n}return[]}let n=t.variables.pop(),r=t.variables.pop();if(!n||!r)return[];let i=[],a=t.variables;for(let e of a)i.push(...this.compiler.nodeReferee(e).getErrors());return i.push(...this.compiler.nodeReferee(r).getErrors()),i.push(...this.compiler.nodeReferee(n).getErrors()),i}bindInlineRef(e){return Rm(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];let r=e.variables;if(n){let e=[];for(let t of r)e.push(...this.compiler.nodeReferee(t).getErrors());return e.push(...this.compiler.nodeReferee(n).getErrors()),e.push(...this.compiler.nodeReferee(t).getErrors()),e}return this.compiler.nodeReferee(t).getErrors()})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Cg=class{constructor(e,t,n,r){this.compiler=e,this.declarationNode=t,this.symbol=n,this.filepath=r,this.table={name:void 0,schemaName:void 0,alias:null,fields:[],token:void 0,indexes:[],partials:[],checks:[]},this.pkColumns=[]}interpret(){this.table.token=this.symbol?.token??I(this.declarationNode);let e=[];if(this.symbol){let{name:e,schema:t}=this.symbol.interpretedName(this.compiler,this.filepath);this.table.name=e,this.table.schemaName=t}else e.push(...this.interpretName(this.declarationNode.name));let t=[...e,...this.interpretAlias(this.declarationNode.alias),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.table.indexes.push({columns:this.pkColumns.map(({name:e,token:t})=>({value:e,type:`column`,token:t})),token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1},filepath:this.declarationNode.filepath},pk:!0}),this.pkColumns.forEach(e=>{e.pk=!1})),n.create(this.table,t)}interpretName(e){let{name:t,schemaName:n}=Tp(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new E(T.UNSUPPORTED,`Nested schema is not supported`,e)]):(this.table.name=t,this.table.schemaName=n.length?n[0]:null,[])}interpretAlias(e){if(!e)return[];let t=op(e);return t&&(this.table.alias=t),[]}interpretSettingList(e){let t=D(e).getValue();this.table.headerColor=t[i.HeaderColor]?.length?Ep(t[i.HeaderColor]?.at(0)?.value):void 0;let[n]=t[i.Note]||[];return this.table.note=n&&{value:wp(P(n?.value)),token:I(n)},[]}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof U);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.getElementKind()){case r.Note:return this.table.note={value:wp(P(e.body instanceof W?e.body.body[0].callee:e.body.callee)),token:I(e)},[];case r.Indexes:return this.interpretIndexes(e);case r.Checks:return this.interpretChecks(e);case r.Records:return[];default:return[]}})}interpretInjection(e,n){let r=[],i={order:n,token:I(e)};i.name=F(e.expression)||``;let a=e.expression?this.compiler.nodeReferee(e.expression).getFiltered(t):void 0,o=this.compiler.parseFile(this.filepath).getValue().ast,s=this.compiler.nodeSymbol(o).getFiltered(t);if(a&&!s.inNestedSchema(this.compiler,a)){let n=this.compiler.nodeSymbol(this.declarationNode).getFiltered(t),o=n?(this.compiler.symbolUses(n).getFiltered(t)??[]).find(e=>e.filepath.equals(this.filepath)):void 0;r.push(new E(T.UNSUPPORTED,`TablePartial ${i.name} from '${a.filepath}' should be imported. Currently, importing a table that uses a table partial requires that table partial to also be in scope.`,o?.useSpecifierDeclaration??e))}return this.table.partials.push(i),r}interpretFields(e){let n=this.symbol??this.compiler.nodeSymbol(this.declarationNode).getFiltered(t),r=(n?this.compiler.symbolMembers(n).getFiltered(t)??[]:[]).filter(e=>e.isKind(L.Column)).length?[]:[new E(T.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],i=e.flatMap((e,t)=>Df(e.callee)?this.interpretInjection(e.callee,t):this.interpretColumn(e));return[...r,...i]}interpretColumn(e){let n=[],r={},a=this.compiler.nodeSymbol(e).getFiltered(t);r.name=op(e.callee),r.token=I(e);let o=Op(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||!1,r.unique=a?.isUniqueSet(this.compiler)||!1,r.increment=a?.isIncrementSet(this.compiler)||void 0,r.not_null=a?.isNotNullSet(this.compiler),r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let s=this.compiler.nodeSettings(e).getFiltered(t)??{},c=this.compiler.parseFile(this.filepath).getValue().ast,l=this.compiler.nodeSymbol(c).getFiltered(t);return r.inline_refs=(s[i.Ref]||[]).flatMap(e=>{let r=this.compiler.nodeMetadata(e).getFiltered(t);if(!r)return[];let i=r.owners(this.compiler);if(l&&i.length>0&&!i.some(e=>e===l))return[];let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))return[];n.push(...a.getErrors());let o=a.getValue();if(!o?.endpoints?.[0])return[];let s=o.endpoints[0],c=r.op(this.compiler);return c?{schemaName:s.schemaName,tableName:s.tableName,fieldNames:s.fieldNames,relation:c,token:s.token}:[]}),r.checks=(s[i.Check]||[]).map(e=>({token:I(e),expression:e.value.value.value})),this.table.fields.push(r),r.pk&&this.pkColumns.push(r),n}interpretIndexes(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.table.indexes.push(...i):i&&this.table.indexes.push(i),r.getErrors()}interpretChecks(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.table.checks.push(...i):i&&this.table.checks.push(i),r.getErrors()}},wg={getDuplicateError(e,t,n){return new E(T.DUPLICATE_NAME,`Table '${e}' already exists in schema '${t}'`,n)},getColumnDuplicateError(e,t){return new E(T.DUPLICATE_COLUMN_NAME,`Duplicate column '${e}'`,t)},getPartialInjectionDuplicateError(e,t){return new E(T.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${e}'`,t)}},Tg={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return j(a,r.Table)?new n(i.symbolFactory.create(Fp,{declaration:a,name:o},a.filepath)):M(a,r.Table)?Df(a.callee)?new n(i.symbolFactory.create(Vp,{declaration:a,name:o},a.filepath)):new n(i.symbolFactory.create(Ip,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(L.Table))return n.create(e);let a=i.declaration;if(!(a instanceof B))return new n([]);let o=ep(a),s=[],c=[];for(let e of o){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(s.push(i),c.push(...n.getErrors()))}let l=new Map;for(let e of s){if(!e.isKind(L.Column,L.PartialInjection)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof B&&e.declaration.name?e.declaration.name:e.declaration,r=l.get(t);r?e.isKind(L.Column)?(c.push(wg.getColumnDuplicateError(e.name,r)),c.push(wg.getColumnDuplicateError(e.name,n))):(c.push(wg.getPartialInjectionDuplicateError(e.name,r)),c.push(wg.getPartialInjectionDuplicateError(e.name,n))):l.set(t,n)}}let u=[];for(let e=0;e<s.length;e++){let n=s[e];if(!(n.declaration instanceof U)||!Df(n.declaration.callee))continue;let i=n.declaration.callee.expression,o=F(i);if(i===void 0||o===void 0)continue;let l=r.nodeReferee(i).getFiltered(t);if(!l){c.push(new E(T.BINDING_ERROR,`TablePartial '${o}' does not exist in Schema 'public'`,i||a));continue}let d=r.symbolMembers(l).getFiltered(t);if(d){let t=d.flatMap(e=>{if(!e.declaration)return[];let t=e.name;return t===void 0?e:r.symbolFactory.create(Zp,{kind:L.Column,injectionDeclaration:n.declaration,declaration:e.declaration,name:t},a.filepath)});u.push({index:e,partialMembers:t})}}for(let e=u.length-1;e>=0;e--){let{index:t,partialMembers:n}=u[e];s.splice(t,0,...n)}let d=new Set(s.filter(e=>e.isKind(L.Column)&&!(e instanceof Zp)).map(e=>e.name));return new n(Pa([...s.filter(e=>!(e instanceof Zp&&d.has(e.name)))].reverse(),e=>e.isKind(L.Column)?e.name:e).reverse(),c)},nodeReferee(a,o){if(!Vf(o,r.Table))return n.create(e);let s=a.parseFile(o.filepath).getValue().ast,c=a.nodeSymbol(s).getValue();return c===t?n.create(void 0):k(o)&&o.parentNode instanceof H&&o.parentNode.op?.value===`~`?Eg(a,c,o):Hf(o,1)?Dg(a,c,o):Wf(o,i.Ref)?Og(a,c,o):Hf(o,0)?n.create(e):kg(a,c,o)},bindNode(i,a){if(!j(a,r.Table))return n.create(e);let o=new Sg(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Fp?r.declaration instanceof B?new Cg(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function Eg(e,r,i){let a=F(i)??``,o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof Mp&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,L.TablePartial,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,L.TablePartial,a);return s?n.create(s):new n(void 0,[new E(T.BINDING_ERROR,`TablePartial '${a}' does not exist in Schema 'public'`,i)])}function Dg(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``;if(!A(r.parentNode))return n.create(e.lookupMembers(t,L.Enum,i));let a=zm(e,r);if(a){if(a.isKind(L.Schema)){let t=Yf(r),o=e.lookupMembers(a,t?L.Enum:L.Schema,i);return o?n.create(o):new n(void 0,[new E(T.BINDING_ERROR,t?`Enum '${i}' does not exist in Schema 'public'`:`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,L.Schema,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Og(e,i,a){if(!k(a))return new n(void 0);let o=op(a)??``;if(!A(a.parentNode)){let s=a.parent,c=s instanceof B&&s.isKind(r.Table)?e.nodeSymbol(s).getFiltered(t):void 0;if(c){let t=e.lookupMembers(c,L.Column,o);if(t)return n.create(t)}let l=e.lookupMembers(i,L.Column,o);return l?n.create(l):new n(void 0,[new E(T.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${c?.name??``}'`,a)])}let s=zm(e,a);if(s){if(s.isKind(L.Schema)){let t=e.lookupMembers(s,[L.Table,L.Schema],o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(L.Table)){let t=e.lookupMembers(s,L.Column,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${s.name}'`,a)])}return new n(void 0)}let c=a.parentNode;if(c.leftExpression===a){if(A(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,L.Schema,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,L.Table,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function kg(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``;if(!A(r.parentNode))return xo.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,L.Enum,i));let a=zm(e,r);if(a){if(a.isKind(L.Schema)){let t=e.lookupMembers(a,[L.Enum,L.Schema],i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(L.Enum)){let t=e.lookupMembers(a,L.EnumField,i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(A(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,L.Schema,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,L.Enum,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Ag(e){return e?e.split(``).every(e=>yf(e)||bf(e))&&!bf(e[0]):!1}function jg(e){return Ag(e)?e:`"${Ng(e)}"`}function Mg(e){let t=``,n=0,r={n:`
5
+ `,t:` `,r:`\r`,b:`\b`,f:`\f`,v:`\v`,0:`\0`,"\\":`\\`,'"':`"`,"'":`'`,"`":"`"};for(;n<e.length;)if(e[n]===`\\`&&n+1<e.length){let i=e[n+1];if(i===`u`&&n+5<e.length){let r=e.slice(n+2,n+6);if(/^[0-9a-fA-F]{4}$/.test(r)){t+=String.fromCharCode(parseInt(r,16)),n+=6;continue}}i in r?(t+=r[i],n+=2):(t+=i,n+=2)}else t+=e[n],n++;return t}function Ng(e){let t=``;for(let n=0;n<e.length;n++){let r=e[n];switch(r){case`\\`:t+=`\\\\`;break;case`"`:t+=`\\"`;break;case`'`:t+=`\\'`;break;case`
6
+ `:t+=`\\n`;break;case` `:t+=`\\t`;break;case`\r`:t+=`\\r`;break;case`\b`:t+=`\\b`;break;case`\f`:t+=`\\f`;break;case`\v`:t+=`\\v`;break;case`\0`:t+=`\\0`;break;default:t+=r}}return t}function Pg(e){if(e==null)return`null`;if(typeof e==`boolean`)return e?`true`:`false`;if(typeof e==`number`)return String(e);if(typeof e==`string`)return`'${Ng(e)}'`;let{value:t,type:n}=e;if(t==null||Lo(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(Lo(n)){let e=hp(t);return e===null?`\`${t}\``:e?`true`:`false`}if(Io(n)){let e=dp(t);return e===null?`\`${t}\``:String(e)}if(Bo(n)){let e=xp(t);return e===null?`\`${t}\``:`'${Ng(e)}'`}let r=_p(t);return r===null?`\`${t}\``:`'${Ng(r)}'`}function Fg(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?Mg(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function Ig(e,t){let n=new Set,r=[];for(let i of t)for(let t of e.reachableFiles(i))n.has(t.intern())||(n.add(t.intern()),r.push(t));return r}function Lg(e){let r=[],i=[],a=[];e.bindProject();for(let n of e.parseProject().values()){i.push(...n.getErrors()),a.push(...n.getWarnings());let o=e.nodeSymbol(n.getValue().ast).getFiltered(t);if(!o)continue;let s=e.symbolMembers(o);i.push(...s.getErrors()),a.push(...s.getWarnings());for(let n of s.getFiltered(t)??[])if(r.push(n),n instanceof Mp&&n.isKind(L.Schema)){let o=e.symbolMembers(n);i.push(...o.getErrors()),a.push(...o.getWarnings()),r.push(...o.getFiltered(t)??[])}}return new n(r,i,a)}var Rg=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof W?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof U)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Rm).flatMap(e=>{let n=e.variables.pop();if(!n)return[];let r=this.compiler.nodeReferee(n),i=r.getFiltered(t);return i instanceof Xp?[...r.getErrors(),new E(T.BINDING_ERROR,`TableGroup cannot reference imported table '${i.name}'`,n)]:r.getErrors()}):[])}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},zg=class{constructor(e,t,n){this.compiler=e,this.symbol=t,this.declarationNode=t.declaration,this.filepath=n,this.tableGroup={tables:[]}}interpret(){let e=[];return this.tableGroup.token=I(this.declarationNode),e.push(...this.interpretName(this.declarationNode.name),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)),n.create(this.tableGroup,e)}interpretName(e){let t=[],{name:n,schemaName:r}=Tp(e);return r.length>=2&&(this.tableGroup.name=n,this.tableGroup.schemaName=r.join(`.`),t.push(new E(T.UNSUPPORTED,`Nested schema is not supported`,this.declarationNode.name))),this.tableGroup.name=n,this.tableGroup.schemaName=r[0]||null,t}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof U);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.getElementKind()){case r.Note:this.tableGroup.note={value:wp(P(e.body instanceof W?e.body.body[0].callee:e.body.callee)),token:I(e)};break;default:break}return[]})}interpretFields(e){let n=[];return this.tableGroup.tables=e.map(e=>{let r=e.callee?this.compiler.nodeReferee(e.callee).getFiltered(t):void 0;if(r?.isKind(L.Table)){let{name:e,schema:t}=r.interpretedName(this.compiler,this.filepath);return{name:e,schemaName:t}}let i=N(e.callee);return i.length>2&&n.push(new E(T.UNSUPPORTED,`Nested schema is not supported`,e)),{name:i.pop(),schemaName:i.join(`.`)||null}}),n}interpretSettingList(e){let t=D(e).getValue();this.tableGroup.color=t.color?.length?Ep(t.color?.at(0)?.value):void 0;let[n]=t.note||[];return this.tableGroup.note=n&&{value:wp(P(n?.value)),token:I(n)},[]}},Bg={getDuplicateError(e,t,n){return new E(T.DUPLICATE_NAME,`TableGroup '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new E(T.DUPLICATE_NAME,`Duplicate TableGroupField '${e}'`,t)}},Vg={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t),s=o?.at(-1);return j(a,r.TableGroup)?new n(i.symbolFactory.create(Lp,{declaration:a,name:s},a.filepath)):M(a,r.TableGroup)?new n(i.symbolFactory.create(Rp,{declaration:a,name:o?.map(jg).join(`.`)},a.filepath)):n.create(e)},symbolMembers(r,i){if(i.isKind(L.TableGroup)){let e=i.declaration;if(!(e instanceof B))return new n([]);let a=ep(e),o=[],s=[];for(let e of a){let n=r.nodeSymbol(e),i=n.getFiltered(t);i&&(o.push(i),s.push(...n.getErrors()))}let c=new Map;for(let e of o){if(!e.isKind(L.TableGroupField)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof B&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(Bg.getFieldDuplicateError(e.name,r)),s.push(Bg.getFieldDuplicateError(e.name,n))):c.set(t,n)}}return new n(o,s)}return i.isKind(L.TableGroupField)?new n([]):n.create(e)},nodeReferee(i,a){if(!k(a)||!Vf(a,r.TableGroup)||a.parent&&Uf(a))return n.create(e);let o=i.parseFile(a.filepath).getValue().ast,s=i.nodeSymbol(o).getValue();return s===t?n.create(void 0):Hg(i,s,a)},bindNode(i,a){if(!j(a,r.TableGroup))return n.create(e);let o=new Rg(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,i,a){let o=i.declaration;return!j(o,r.TableGroup)||!(i instanceof Lp)?n.create(e):Lm(t,o)?new zg(t,i,a).interpret():n.create(void 0)}};function Hg(e,r,i){let a=op(i)??``;if(!A(i.parentNode)){let o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof Mp&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,L.Table,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,L.Table,a);return s?n.create(s):new n(void 0,[new E(T.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}let o=zm(e,i);if(o){if(o.isKind(L.Schema)){let t=e.lookupMembers(o,[L.Table,L.Schema],a);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}return new n(void 0)}let s=e.lookupMembers(r,L.Schema,a);return s?n.create(s):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}var Ug=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof W?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof U)return this.bindFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];if(g(n)instanceof G){let e=D(g(n)).getValue();t.push(...e.ref?.flatMap(e=>e.value?this.bindInlineRef(e.value):[])||[]),n.pop()}return n[1]&&this.tryToBindColumnType(n[1]),t})}tryToBindColumnType(e){let t=np(e);if(!t)return[];let n=t.variables.pop();return n?this.compiler.nodeReferee(n).getErrors():[]}bindInlineRef(e){return Rm(e).flatMap(e=>{let t=e.variables.pop(),n=e.variables.pop();if(!t)return[];if(n){let r=[],i=e.variables;for(let e of i)r.push(...this.compiler.nodeReferee(e).getErrors());let a=this.compiler.nodeReferee(n);return r.push(...a.getErrors()),a.getValue()&&r.push(...this.compiler.nodeReferee(t).getErrors()),r}return this.compiler.nodeReferee(t).getErrors()})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Wg=class{constructor(e,t,n){this.compiler=e,this.declarationNode=t.declaration,this.symbol=t,this.filepath=n,this.tablePartial={name:void 0,fields:[],token:void 0,indexes:[],checks:[]},this.pkColumns=[]}interpret(){this.tablePartial.token=this.symbol?.token??I(this.declarationNode),this.symbol?this.tablePartial.name=this.symbol.interpretedName(this.compiler,this.filepath).name:this.interpretName(this.declarationNode.name);let e=[...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return this.pkColumns.length>=2&&(this.tablePartial.indexes.push({columns:this.pkColumns.map(({name:e,token:t})=>({value:e,type:`column`,token:t})),pk:!0,token:{start:{offset:-1,line:-1,column:-1},end:{offset:-1,line:-1,column:-1},filepath:this.declarationNode.filepath}}),this.pkColumns.forEach(e=>{e.pk=!1})),new n(this.tablePartial,e)}interpretName(e){let{name:t}=Tp(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=D(e).getValue(),n=va(t[i.HeaderColor]);this.tablePartial.headerColor=n?Ep(n.value):void 0;let[r]=t[i.Note]||[];return this.tablePartial.note=r&&{value:wp(P(r?.value)),token:I(r)},[]}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof U);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.getElementKind()){case r.Note:return this.tablePartial.note={value:wp(P(e.body instanceof W?e.body.body[0].callee:e.body.callee)),token:I(e)},[];case r.Indexes:return this.interpretIndexes(e);case r.Checks:return this.interpretChecks(e);default:return[]}})}interpretFields(e){return e.flatMap(e=>this.interpretColumn(e))}interpretColumn(e){let n=[],r={},a=this.compiler.nodeSymbol(e).getFiltered(t);r.name=op(e.callee)??``,r.token=I(e);let o=Op(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||void 0,r.unique=a?.isUniqueSet(this.compiler)||void 0,r.increment=a?.isIncrementSet(this.compiler)||void 0,r.not_null=a?.isNotNullSet(this.compiler),r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let s=this.compiler.nodeSettings(e).getFiltered(t)??{},c=this.compiler.parseFile(this.filepath).getValue().ast,l=this.compiler.nodeSymbol(c).getFiltered(t);return r.inline_refs=(s[i.Ref]||[]).flatMap(e=>{let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!(n instanceof xm))return[];let r=n.owners(this.compiler);if(l&&r.length>0&&!r.some(e=>e===l))return[];let i=n.op(this.compiler);if(!i)return[];let a=n.rightTable(this.compiler),o=n.rightColumns(this.compiler);if(!a||o.length===0)return[];let s=a.interpretedName(this.compiler,this.filepath);return{schemaName:s.schema,tableName:s.name,fieldNames:o.map(e=>e.name??``),relation:i,token:I(n.rightToken())}}),r.checks=(s[i.Check]||[]).map(e=>({token:I(e),expression:e.value.value.value})),this.tablePartial.fields?.push(r),r.pk&&this.pkColumns.push(r),n}interpretIndexes(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.tablePartial.indexes?.push(...i):i&&this.tablePartial.indexes?.push(i),r.getErrors()}interpretChecks(e){let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!n)return[];let r=this.compiler.interpretMetadata(n,this.filepath);if(r.hasValue(t))return[];let i=r.getValue();return Array.isArray(i)?this.tablePartial.checks?.push(...i):i&&this.tablePartial.checks?.push(i),r.getErrors()}},Gg={getDuplicateError(e,t,n){return new E(T.DUPLICATE_NAME,`TablePartial '${e}' already exists in schema '${t}'`,n)}},Kg={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return j(a,r.TablePartial)?new n(i.symbolFactory.create(Bp,{declaration:a,name:o},a.filepath)):M(a,r.TablePartial)?new n(i.symbolFactory.create(Ip,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(i,a){if(a.isKind(L.TablePartial)){let e=a.declaration;if(!(e instanceof B))return new n([]);let r=ep(e),o=[],s=[];for(let e of r){let n=i.nodeSymbol(e),r=n.getFiltered(t);r&&(o.push(r),s.push(...n.getErrors()))}let c=new Map;for(let e of o){if(!e.isKind(L.Column)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration instanceof B&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(wg.getColumnDuplicateError(t,r)),s.push(wg.getColumnDuplicateError(t,n))):c.set(t,n)}}return new n(o,s)}return a.isKind(L.Column)&&j(a.declaration?.parent,r.TablePartial)?new n([]):n.create(e)},nodeReferee(a,o){if(!k(o)&&!A(o)||!Vf(o,r.TablePartial))return n.create(e);let s=a.parseFile(o.filepath).getValue().ast,c=a.nodeSymbol(s).getValue();return c===t?n.create(void 0):Hf(o,1)?qg(a,c,o):Wf(o,i.Ref)?Jg(a,c,o):Yg(a,c,o)},bindNode(i,a){if(!j(a,r.TablePartial))return n.create(e);let o=new Ug(i,a).bind(),s=i.nodeSymbol(a).getFiltered(t);return s&&o.push(...i.symbolMembers(s).getErrors()),n.create(void 0,o)},interpretSymbol(t,r,i){return r instanceof Bp?r.declaration instanceof B?new Wg(t,r,i).interpret():n.create(void 0):n.create(e)}};function qg(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``;if(!A(r.parentNode))return n.create(e.lookupMembers(t,L.Enum,i));let a=zm(e,r);if(a){if(a.isKind(L.Schema)){let t=e.lookupMembers(a,[L.Enum,L.Schema],i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,L.Schema,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Jg(e,i,a){if(!k(a))return new n(void 0);let o=op(a)??``;if(!A(a.parentNode)){let s=a.parent;if(s instanceof B&&s.isKind(r.TablePartial)){let r=e.nodeSymbol(s).getFiltered(t);if(r){let t=e.lookupMembers(r,L.Column,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Column '${o}' does not exist in TablePartial '${r.name}'`,a)])}}let c=e.lookupMembers(i,L.Column,o);return c?n.create(c):new n(void 0,[new E(T.BINDING_ERROR,`Column '${o}' does not exist`,a)])}let s=zm(e,a);if(s){if(s.isKind(L.Schema)){let t=e.lookupMembers(s,[L.Table,L.Schema],o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(L.Table)){let t=e.lookupMembers(s,L.Column,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${s.name}'`,a)])}return new n(void 0)}let c=a.parentNode;if(c.leftExpression===a){if(A(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,L.Schema,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,L.Table,o);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function Yg(e,t,r){if(!k(r))return new n(void 0);let i=op(r)??``;if(!A(r.parentNode))return xo.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,L.Enum,i));let a=zm(e,r);if(a){if(a.isKind(L.Schema)){let t=e.lookupMembers(a,[L.Enum,L.Schema],i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(L.Enum)){let t=e.lookupMembers(a,L.EnumField,i);return t?n.create(t):new n(void 0,[new E(T.BINDING_ERROR,`Enum field '${i}' does not exist in Enum 'public.${a.name}'`,r)])}return new n(void 0)}let o=r.parentNode;if(o.leftExpression===r){if(A(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,L.Schema,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,L.Enum,i);return a?n.create(a):new n(void 0,[new E(T.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var Xg={symbolMembers(r,i){if(!i.isKind(L.Schema)||!(i instanceof Mp))return n.create(e);let a=i.qualifiedName,o=r.usableMembers(i).getFiltered(t);if(!o)return n.create([]);let s=[...o.nonSchemaMembers],c=new Map(o.schemaMembers.map(e=>[e.name,e])),l=[];for(let e of o.reuses.selective){let n=Qg(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...$g(r,i,e))}for(let{importPath:e,node:t}of o.reuses.wildcard)s.push(...t_(r,i,e,t,c));for(let e of o.uses.selective){let n=Qg(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...$g(r,i,e))}for(let{importPath:e,node:t}of o.uses.wildcard)s.push(...t_(r,i,e,t,c));s.push(...c.values());let u=[...s];{let e=s.filter(e=>e.isKind(L.TableGroup));if(!i.isPublicSchema()){let n=r.usableMembers(i.filepath).getFiltered(t)?.schemaMembers.find(e=>e.isPublicSchema());if(n){let i=r.symbolMembers(n).getFiltered(t);i&&e.push(...i.filter(e=>e.isKind(L.TableGroup)))}}for(let t of e)u.push(...r_(r,i,t))}let d=new Set,f=u.filter(e=>{if(e instanceof Xp&&e.isKind(L.Schema))return!1;let t=`${e.originalSymbol.intern()}:${e.name??``}`;return d.has(t)?!1:(d.add(t),!0)}),p=new Map;for(let e of f){let t=`${e.kind}:${e.name}`;if(p.get(t)){if(e.isKind(L.Schema))continue;let t=e instanceof Xp?e.useSpecifierDeclaration??e.declaration:e.declaration instanceof B&&e.declaration.name?e.declaration.name:e.declaration;t&&e.name!==void 0&&l.push(Zg(e.kind,e.name,a.join(`.`),t))}else p.set(t,e)}return new n(f,l)}};function Zg(e,t,n,r){switch(e){case L.Table:return wg.getDuplicateError(t,n,r);case L.Enum:return Qm.getDuplicateError(t,n,r);case L.TablePartial:return Gg.getDuplicateError(t,n,r);case L.TableGroup:return Bg.getDuplicateError(t,n,r);case L.DiagramView:return Wm.getDuplicateError(t,n,r);default:return new E(T.DUPLICATE_NAME,`Duplicate ${e} '${t}' in schema '${n}'`,r)}}function Qg(e,r,i,a){let o=mg(e,r,i);if(o.kind===`none`)return n.create(void 0);if(o.kind===`direct`){let r=e.nodeSymbol(i);return r.hasValue(t)?n.create(void 0):r}return a.has(o.schemaName)||a.set(o.schemaName,e.symbolFactory.create(Mp,{name:o.schemaName,parent:r},r.filepath)),n.create(void 0)}function $g(e,n,r,i=new Set){if(r.getSymbolKind()!==L.Schema||!r.name)return[];let a=e.nodeReferee(r.name).getFiltered(t);if(!a||!a.isKind(L.Schema))return[];let o=ug.visibleName(e,r),s=n.qualifiedName;return!o||o.length!==s.length||!o.every((e,t)=>e===s[t])?[]:e_(e,n,r,a,i)}function e_(e,n,r,i,a){let o=i.intern();if(a.has(o))return[];a.add(o);let s=e.usableMembers(i).getFiltered(t);if(!s)return[];let c=s.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Xp,{kind:t.kind,declaration:t.originalSymbol.declaration,usedSymbol:t.originalSymbol,useSpecifierDeclaration:r,name:t.name},n.filepath));for(let t of[...c])t.isKind(L.TableGroup)&&c.push(...r_(e,n,t));for(let i of s.reuses.selective)if(c.push(...$g(e,n,i,a)),mg(e,n,i).kind===`direct`){let a=e.nodeSymbol(i).getFiltered(t);a&&a.canBeImported&&c.push(e.symbolFactory.create(Xp,{kind:a.kind,declaration:a.originalSymbol.declaration,usedSymbol:a.originalSymbol,useSpecifierDeclaration:r,name:a.name},n.filepath))}for(let{importPath:t}of s.reuses.wildcard){let i=n_(e,t,n.qualifiedName);i&&c.push(...e_(e,n,r,i,a))}return c}function t_(e,n,r,i,a,o=new Set){if(o.has(r))return[];o.add(r);let s=n_(e,r,n.qualifiedName);if(!s)return[];let c=e.usableMembers(s).getFiltered(t);if(!c)return[];let l=c.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Xp,{kind:t.kind,declaration:t.declaration,usedSymbol:t,useSpecifierDeclaration:i,name:t.name},n.filepath));for(let t of c.schemaMembers)a.has(t.name)||a.set(t.name,e.symbolFactory.create(Mp,{name:t.name},n.filepath));let{reuses:{selective:u,wildcard:d}}=c;for(let r of u){let i=Qg(e,n,r,a).getFiltered(t);i&&l.push(i),l.push(...$g(e,n,r))}for(let{importPath:t}of d)l.push(...t_(e,n,t,i,a,o));return l}function n_(e,n,r){if(r.length===0)return;let i=e.usableMembers(n).getFiltered(t);if(!i)return;let{schemaMembers:a}=i,o,s=[...r];for(;s.length>0;){let t=s.shift();if(o=a.find(e=>e.name===t),!o)return;let n=e.usableMembers(o).getValue();({schemaMembers:a}=n)}return o}function r_(e,n,r){if(!r.isKind(L.TableGroup)||!(r instanceof Xp))return[];let i=r.originalSymbol,a=e.symbolMembers(i).getFiltered(t);if(!a)return[];let o=n.qualifiedName,s=[];for(let t of a){if(!t.isKind(L.TableGroupField)||!t.declaration)continue;let n=t.declaration.callee;if(!n)continue;let i=N(n);if(!i||i.length===0)continue;let a=i.length<=1?[y]:i.slice(0,-1);if(a.length!==o.length||!o.every((e,t)=>e===a[t]))continue;let c=t.declaration.filepath,l=i_(e,c,i);l&&s.push(e.symbolFactory.create(Xp,{kind:L.Table,declaration:l.declaration,usedSymbol:l,useSpecifierDeclaration:void 0,name:l.name},r.filepath))}return s}function i_(e,n,r){if(r.length===1){let i=e.usableMembers(n).getFiltered(t);return i?i.nonSchemaMembers.find(e=>e.isKind(L.Table)&&e.name===r[0]):void 0}let i=r[0],a=r[r.length-1],o=e.usableMembers(n).getFiltered(t);if(!o)return;let s=o.schemaMembers.find(e=>e.name===i);if(!s)return;let c=e.usableMembers(s).getFiltered(t);if(c)return c.nonSchemaMembers.find(e=>e.isKind(L.Table)&&e.name===a)}var a_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof U)return[];let t=e.body.filter(e=>e instanceof B);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},o_=class{constructor(e,t,n){this.compiler=e,this.symbol=t,this.declarationNode=t.declaration,this.filepath=n,this.note={name:void 0,content:void 0,token:void 0}}interpret(){this.note.token=I(this.declarationNode);let e=[...this.interpretName(),...this.interpretSettingList(this.declarationNode.attributeList),...this.interpretBody(this.declarationNode.body)];return n.create(this.note,e)}interpretName(){let{name:e}=this.symbol.interpretedName(this.compiler,this.filepath);return this.note.name=e,[]}interpretSettingList(e){let t=D(e).getValue();return t.color?.length&&(this.note.color=Ep(t.color.at(0)?.value)),[]}interpretBody(e){let[t,n]=_(e.body,e=>e instanceof U);return t.length!==1||n.length>0?[new E(T.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=P(e.callee)??``;return this.note.content=wp(t),[]}},s_=[Tg,$m,Qh,nh,Am,sg,Gh,Vg,Kg,{nodeSymbol(i,a){return!j(a,r.Note)||!(a.parentNode instanceof z)?n.create(e):new n(i.symbolFactory.create(zp,{declaration:a,name:i.nodeFullname(a).getFiltered(t)?.at(-1)},a.filepath))},symbolMembers(t,r){return r.isKind(L.StickyNote)?new n([]):n.create(e)},bindNode(t,i){return j(i,r.Note)?n.create(void 0,new a_(t,i).bind()):n.create(e)},interpretSymbol(t,r,i){return r instanceof zp?r.declaration instanceof B?new o_(t,r,i).interpret():n.create(void 0):n.create(e)}},dg,Xg,Gm,Hh];function c_(t,...r){for(let i of s_){let a=i[t];if(a){let t=a(...r);if(t instanceof n&&!t.hasValue(e))return t}}return n.create(e)}function l_(r){let i=c_(`nodeSymbol`,this,r);return i.hasValue(e)?n.create(t):i}function u_(r){let i=c_(`symbolMembers`,this,r);return i.hasValue(e)?n.create(t):i}function d_(r){let i=c_(`nodeReferee`,this,r);return i.hasValue(e)?n.create(t):i}function f_(r){let i=c_(`bindNode`,this,r);return i.hasValue(e)?n.create(t):i}function p_(r){let i=c_(`nodeMetadata`,this,r);return i.hasValue(e)?n.create(t):i}function m_(r,i){let a=c_(`interpretSymbol`,this,r,i);return a.hasValue(e)?n.create(t):a}function h_(r,i){let a=c_(`interpretMetadata`,this,r,i);return a.hasValue(e)?n.create(t):a}var g_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=new E(T.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof z?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new E(T.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new E(T.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof U)return[new E(T.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];return g(n)instanceof G&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof om))&&t.push(new E(T.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=D(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`name`:t.length>1&&t.forEach(t=>n.push(new E(T.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{O(t.value)||n.push(new E(T.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new E(T.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},__={validateNode(t,i){if(!j(i,r.Checks))return n.create(e);let a=new g_(t,i);return n.create(void 0,a.validate())},nodeFullname(t,i){return j(i,r.Checks)?i.name?new n(void 0,[new E(T.UNEXPECTED_NAME,`A Checks shouldn't have a name`,i.name)]):new n(void 0):n.create(e)},nodeAlias(t,i){return j(i,r.Checks)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.Checks)?i.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}},v_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof B&&this.declarationNode.parent.isKind(r.Project)?[]:[new E(T.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]}validateName(e){return e?[new E(T.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new E(T.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new E(T.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof W)return[new E(T.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return O(e.callee)||t.push(new E(T.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e)),e.args.length>0&&t.push(...e.args.map(e=>new E(T.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}};function y_(e){return e instanceof B&&!!e.type?.value}var b_={validateNode(t,r){if(!y_(r))return n.create(e);let i=new v_(t,r);return n.create(void 0,i.validate())},nodeFullname(t,r){return y_(r)?r.name?new n(void 0,[new E(T.UNEXPECTED_NAME,`A custom field shouldn't have a name`,r.name)]):new n(void 0):n.create(e)},nodeAlias(t,r){return y_(r)?r.alias?new n(void 0,[new E(T.UNEXPECTED_NAME,`A custom field shouldn't have an alias`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return y_(r)?r.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`A custom field shouldn't have a setting list`,r.attributeList)]):new n({}):n.create(e)}},x_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){let e=[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList)],t=this.validateBody(this.declarationNode.body);return e.push(...t.errors),{errors:e,warnings:t.warnings}}validateContext(){return this.declarationNode.parent instanceof B?[new E(T.INVALID_DIAGRAMVIEW_CONTEXT,`DiagramView must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Tf(e)?[]:[new E(T.INVALID_NAME,`A DiagramView name must be a single identifier`,e)]:[new E(T.NAME_NOT_FOUND,`A DiagramView must have a name`,this.declarationNode)]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`A DiagramView shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=D(e),n=t.getErrors(),r=t.getValue();for(let e of Object.keys(r))n.push(...r[e].map(t=>new E(T.UNEXPECTED_SETTINGS,`Unknown '${e}' setting for DiagramView`,t)));return n}validateBody(e){if(!e)return{errors:[],warnings:[]};if(e instanceof U)return{errors:[new E(T.UNEXPECTED_SIMPLE_BODY,`A DiagramView's body must be a block`,e)],warnings:[]};let[t,n]=_(e.body,e=>e instanceof U),r=this.validateSubElements(n);return{errors:[...this.validateFields(t),...r.errors],warnings:r.warnings}}validateFields(e){return e.flatMap(e=>Ff(e.callee)?e.args.length>0?e.args.map(e=>new E(T.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)):[]:[new E(T.INVALID_DIAGRAMVIEW_FIELD,`Fields are not allowed at DiagramView level. Use Tables, Notes, TableGroups, or Schemas blocks instead.`,e)])}validateSubElements(e){let t=[],n=[],r=[`tables`,`notes`,`tablegroups`,`schemas`];for(let i of e){if(!i.type)continue;let e=i.type.value.toLowerCase();if(!r.includes(e)){t.push(new E(T.INVALID_DIAGRAMVIEW_FIELD,`Unknown block type "${i.type.value}" in DiagramView. Allowed: Tables, Notes, TableGroups, Schemas`,i));continue}let a=this.validateSubBlock(i);t.push(...a.errors),n.push(...a.warnings)}return{errors:t,warnings:n}}validateSubBlock(e){let t=[],n=[];if(Ef(e))return t.push(new E(T.UNEXPECTED_SIMPLE_BODY,`${e.type?.value} body must be a block`,e.bodyColon)),{errors:t,warnings:n};if(!e.body||!(e.body instanceof W))return{errors:t,warnings:n};let r=e.body,i=r.body.some(e=>e instanceof U&&Ff(e.callee)),a=r.body.some(e=>e instanceof U&&!Ff(e.callee));return i&&a&&n.push(new _f(T.INVALID_DIAGRAMVIEW_FIELD,`Wildcard (*) combined with specific items in ${e.type?.value} block. Specific items will be ignored.`,e)),t.push(...this.validateSubBlockFields(e)),{errors:t,warnings:n}}validateSubBlockFields(e){let t=[];if(!e.body||!(e.body instanceof W))return t;let n=e.body.body.filter(e=>e instanceof U);for(let e of n)Ff(e.callee)||(e.args.length>0||!N(e.callee))&&t.push(...e.args.map(e=>new E(T.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)));return t}},S_={validateNode(t,i){if(!j(i,r.DiagramView))return n.create(e);let{errors:a,warnings:o}=new x_(t,i).validate();return n.create(void 0,a,o)},nodeFullname(t,i){if(j(i,r.DiagramView)){if(!i.name)return new n(void 0,[new E(T.NAME_NOT_FOUND,`A DiagramView must have a name`,i)]);let e=N(i.name);return e?new n(e):new n(void 0)}else if(M(i,r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewSchemas,r.DiagramViewTableGroups)){let e=N(i.callee);return e?(e.length===1&&M(i,r.DiagramViewTables)&&e.unshift(y),new n(e)):new n(void 0)}return new n(e)},nodeAlias(t,i){return j(i,r.DiagramView)?new n(void 0):n.create(e)}},C_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof B?[new E(T.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof fm?[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as an Enum name`,e)]:Cf(e)?[]:[new E(T.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new E(T.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new E(T.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof U)return this.validateFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new E(T.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)];let t=[];for(let n of e){n.callee&&!k(n.callee)&&t.push(new E(T.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,n.callee));let e=[...n.args];g(e)instanceof G?(t.push(...this.validateFieldSettings(g(e))),e.pop()):e[0]instanceof G&&(t.push(...this.validateFieldSettings(e[0])),e.shift()),e.length>0&&t.push(...e.map(e=>new E(T.INVALID_ENUM_ELEMENT,`An Enum must have only a field and optionally a setting list`,e)))}return t}validateFieldSettings(e){let t=D(e),n=t.getErrors(),r=t.getValue();for(let e in r){let t=r[e];if(t)switch(e){case i.Note:t.length>1&&t.forEach(e=>n.push(new E(T.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{O(e.value)||n.push(new E(T.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new E(T.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},w_={validateNode(t,i){return j(i,r.Enum)?n.create(void 0,new C_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(j(i,r.Enum)){if(!i.name)return new n(void 0,[new E(T.NAME_NOT_FOUND,`An Enum must have a name`,i)]);if(!Cf(i.name))return new n(void 0,[new E(T.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,i.name)]);let e=N(i.name);return e?.length===1&&e.unshift(y),new n(e)}if(M(i,r.Enum)){let e=F(i.callee);return new n(e===void 0?void 0:[e])}return n.create(e)},nodeAlias(t,i){return j(i,r.Enum)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,i.alias)]):new n(void 0):M(i,r.Enum)?new n(void 0):n.create(e)},nodeSettings(t,a){if(j(a,r.Enum))return a.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,a.attributeList)]):new n({});if(M(a,r.Enum)){let e=[...a.args],t;if(g(e)instanceof G?t=g(e):e[0]instanceof G&&(t=e[0]),!t)return new n({});let r=D(t),o=r.getErrors(),s=r.getValue(),c={};for(let[e,t]of Object.entries(s))switch(e){case i.Note:t.length>1&&t.forEach(e=>o.push(new E(T.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{O(e.value)||o.push(new E(T.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new E(T.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}},T_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=new E(T.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof z?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new E(T.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new E(T.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof U)return[new E(T.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[],n=[e.callee,...e.args];return g(n)instanceof G&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof um;)e.argumentList&&rp(e.argumentList)===void 0&&t.push(new E(T.INVALID_INDEXES_FIELD,`An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such`,e.argumentList)),e=e.callee;rp(e)===void 0&&t.push(new E(T.INVALID_INDEXES_FIELD,`An index field must be an identifier, a quoted identifier, a functional expression or a tuple of such`,e))}),t})}validateFieldSetting(e){let t=D(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`note`:case`name`:t.length>1&&t.forEach(t=>n.push(new E(T.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{O(t.value)||n.push(new E(T.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new E(T.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&n.push(new E(T.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new E(T.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{k(e.value)||n.push(new E(T.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new E(T.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},E_={validateNode(t,i){return j(i,r.Indexes)?n.create(void 0,new T_(t,i).validate()):n.create(e)},nodeFullname(t,i){return j(i,r.Indexes)?i.name?new n(void 0,[new E(T.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,i.name)]):new n(void 0):M(i,r.Indexes)?new n(void 0):n.create(e)},nodeAlias(t,i){return j(i,r.Indexes)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,i.alias)]):new n(void 0):M(i,r.Indexes)?new n(void 0):n.create(e)},nodeSettings(t,a){if(j(a,r.Indexes))return a.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,a.attributeList)]):new n({});if(M(a,r.Indexes)){let e=[a.callee,...a.args],t;if(g(e)instanceof G&&(t=g(e)),!t)return new n({});let r=D(t),o=r.getErrors(),s=r.getValue(),c={};for(let[e,t]of Object.entries(s))switch(e){case i.Note:case i.Name:t.length>1&&t.forEach(t=>o.push(new E(T.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{O(t.value)||o.push(new E(T.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))}),c[e]=t;break;case i.Unique:case i.PK:t.length>1&&t.forEach(t=>o.push(new E(T.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&o.push(new E(T.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))}),c[e]=t;break;case i.Type:t.length>1&&t.forEach(e=>o.push(new E(T.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{k(e.value)||o.push(new E(T.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new E(T.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}},D_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=this.declarationNode.parent;return!(e instanceof z)&&!(e instanceof B&&e.isKind(r.Table,r.TableGroup,r.TablePartial,r.Project))?[new E(T.INVALID_NOTE_CONTEXT,`A Note can only appear inside a Table, a TableGroup, a TablePartial or a Project. Sticky note can only appear at the global scope.`,this.declarationNode)]:[]}validateName(e){return this.compiler.nodeFullname(this.declarationNode).getErrors()}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,e)]:[]}isStickyNote(){return this.declarationNode.parent instanceof z}validateSettingList(e){if(!e)return[];if(!this.isStickyNote())return[new E(T.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)];let t=D(e),n=t.getErrors();return Sa(t.getValue(),(e,t)=>{switch(t){case i.Color:e.length>1&&n.push(...e.map(e=>new E(T.DUPLICATE_NOTE_SETTING,`'color' can only appear once`,e))),e.forEach(e=>{let t=If(e.value)&&e.value.expression.variable.value.toLowerCase()===`none`;!kf(e.value)&&!t&&n.push(new E(T.INVALID_NOTE_SETTING_VALUE,`'color' must be a color literal or 'none'`,e.value||e.name))});break;default:n.push(...e.map(e=>new E(T.UNKNOWN_NOTE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof U)return this.validateFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new E(T.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new E(T.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),O(e[0].callee)||t.push(new E(T.INVALID_NOTE,`A Note content must be a quoted string`,e[0])),e[0].args.length>0&&t.push(...e[0].args.map(e=>new E(T.INVALID_NOTE,`A Note can only contain one quoted string`,e))),t)}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},O_={validateNode(t,i){return j(i,r.Note)?n.create(void 0,new D_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(!j(i,r.Note))return n.create(e);if(!(i.parent instanceof z))return i.name?new n(void 0,[new E(T.UNEXPECTED_NAME,`A Note shouldn't have a name`,i.name)]):new n(void 0);if(!i.name)return new n(void 0,[new E(T.INVALID_NAME,`Sticky note must have a name`,i)]);if(i.name instanceof fm)return new n(void 0,[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a Note name`,i.name)]);let a=N(i.name);return a===void 0?new n(void 0,[new E(T.INVALID_NAME,`Invalid name for sticky note `,i)]):new n(a)},nodeAlias(t,i){return j(i,r.Note)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.Note)?i.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}},k_=class{constructor(e,t){this.ast=t,this.compiler=e}validate(){let e=[],t=[];for(let n of this.ast.body){let r=this.compiler.validateNode(n);e.push(...r.getErrors()),t.push(...r.getWarnings())}return new n(this.ast,e,t)}},A_={validateNode(t,r){return Bf(r)?n.create(void 0,new k_(t,r).validate().getErrors()):n.create(e)},nodeFullname(t,r){return Bf(r)?new n(void 0):n.create(e)},nodeAlias(t,r){return Bf(r)?new n(void 0):n.create(e)},nodeSettings(t,r){return Bf(r)?new n({}):n.create(e)}},j_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name).getErrors(),...this.validateAlias(this.declarationNode.alias).getErrors(),...this.validateSettingList(this.declarationNode.attributeList).getErrors(),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof B?[new E(T.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Tf(e)?new n(N(e)):new n(void 0,[new E(T.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,e)]):new n(void 0)}validateAlias(e){return e?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]):new n(void 0)}validateSettingList(e){return e?new n({},[new E(T.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]):new n({})}validateBody(e){if(!e)return[];if(e instanceof U)return[new E(T.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof U);return[...t.map(e=>new E(T.INVALID_PROJECT_FIELD,`A Project can not have inline fields`,e)),...this.validateSubElements(n)]}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},M_={validateNode(t,i){return j(i,r.Project)?n.create(void 0,new j_(t,i).validate()):n.create(e)},nodeFullname(t,i){return j(i,r.Project)?i.name?Tf(i.name)?new n(N(i.name)):new n(void 0,[new E(T.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):M(i,r.Project)?new n(void 0):n.create(e)},nodeAlias(t,i){return j(i,r.Project)&&i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,i.alias)]):M(i,r.Project)?new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.Project)?i.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,i.attributeList)]):new n({}):M(i,r.Project)?new n({}):n.create(e)}},N_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){let e=this.declarationNode.parent;return e instanceof z||e instanceof B&&e.isKind(r.Table)?[]:[new E(T.INVALID_RECORDS_CONTEXT,`Records can only appear at top-level or inside a Table`,this.declarationNode)]}validateName(e){return e instanceof fm?[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,e)]:this.declarationNode.parent instanceof z?this.validateTopLevelName(e):this.validateInsideTableName(e)}validateTopLevelName(e){if(!(e instanceof um))return[new E(T.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,e||this.declarationNode.type||this.declarationNode)];let t=[];return(!e.callee||!Cf(e.callee))&&t.push(new E(T.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,e.callee||e)),(!e.argumentList||!Nf(e.argumentList))&&t.push(new E(T.INVALID_RECORDS_NAME,`Records column list must be simple column names`,e.argumentList||e)),t}validateInsideTableName(e){return e&&!Nf(e)?[new E(T.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,e)]:[]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`Records cannot have an alias`,e)]:[]}validateSettingList(e){return e?[new E(T.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof U)return this.validateDataRow(e);let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateDataRows(t),...this.validateSubElements(n)]}validateDataRows(e){return e.flatMap(e=>this.validateDataRow(e))}validateDataRow(e){let t=[];if(!e.callee||e.args.length>0)return t.push(new E(T.INVALID_RECORDS_FIELD,`Invalid record row structure`,e)),t;if(e.callee instanceof cm)for(let n of e.callee.elementList)this.isValidRecordValue(n)||t.push(new E(T.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,n));else this.isValidRecordValue(e.callee)||t.push(new E(T.INVALID_RECORDS_FIELD,`Records can only contain simple values (literals, null, true, false, or enum references). Complex expressions are not allowed.`,e.callee));return t}isValidRecordValue(e){if(e instanceof hm||jf(e)||O(e)||e instanceof om)return!0;if(k(e)){let t=e.expression.variable.value.toLowerCase();return xo.includes(t)}if(A(e)){let t=N(e);return t!==void 0&&t.length>0}return!1}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}},P_={validateNode(t,i){return j(i,r.Records)?n.create(void 0,new N_(t,i).validate()):n.create(e)},nodeFullname(i,a){if(j(a,r.Records)){if(a.name instanceof fm)return new n(void 0,[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,a.name)]);if(a.parent instanceof z){if(!(a.name instanceof um))return new n(void 0,[new E(T.INVALID_RECORDS_NAME,`Records at top-level must have a name in the form of table(col1, col2, ...) or schema.table(col1, col2, ...)`,a.name||a.type||a)]);let e=[];(!a.name.callee||!Cf(a.name.callee))&&e.push(new E(T.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,a.name.callee||a.name)),(!a.name.argumentList||!Nf(a.name.argumentList))&&e.push(new E(T.INVALID_RECORDS_NAME,`Records column list must be simple column names`,a.name.argumentList||a.name));let t=N(a.name.callee);return t?.length===1&&t.unshift(y),new n(t,e)}else{let e=a.parent&&i.nodeFullname(a.parent).getFiltered(t);return a.name&&!Nf(a.name)?new n(e,[new E(T.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,a.name)]):new n(e)}}return M(a,r.Records)?new n(void 0):n.create(e)},nodeAlias(t,i){return j(i,r.Records)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`Records cannot have an alias`,i.alias)]):new n(void 0):M(i,r.Records)?new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.Records)?i.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,i.attributeList)]):new n({}):M(i,r.Records)?new n({}):n.create(e)}},F_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof z?[]:[new E(T.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?e instanceof fm?[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a Ref name`,e)]:Tf(e)?[]:[new E(T.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new E(T.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof U)return this.validateFields([e]);let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new E(T.EMPTY_REF,`A Ref must have at least one field`,this.declarationNode)];let t=[];return e.length>1&&t.push(...e.slice(1).map(e=>new E(T.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!Gf(e.callee)&&t.push(new E(T.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&Gf(e.callee)){let n=np(e.callee.leftExpression)??{variables:[],tupleElements:[]},r=n.variables.length+Math.min(n.tupleElements.length,1),i=np(e.callee.rightExpression)??{variables:[],tupleElements:[]},a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new E(T.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new E(T.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!Kf(e.callee)&&t.push(new E(T.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(g(n)instanceof G){let e=this.validateFieldSettings(g(n));t.push(...e),n.pop()}else n[0]instanceof G&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new E(T.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){return L_(e).getErrors()}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};function I_(e){if(!(k(e)&&e.expression.variable.kind!==v.QUOTED_STRING)&&!(e instanceof rm))return!1;let t;if(t=e instanceof rm?Zf(e)||``:e.expression.variable.value,t)switch(t.toLowerCase()){case`cascade`:case`no action`:case`set null`:case`set default`:case`restrict`:return!0;default:return!1}return!1}function L_(e){let t=D(e),r=t.getErrors(),a=t.getValue(),o={};for(let[e,t]of Object.entries(a))switch(e){case i.Delete:case i.Update:t.length>1&&t.forEach(t=>r.push(new E(T.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{I_(t.value)||r.push(new E(T.INVALID_REF_SETTING_VALUE,`'${e}' can only have values "cascade", "no action", "set null", "set default" or "restrict"`,t))}),o[e]=t;break;case i.Color:t.length>1&&r.push(...t.map(e=>new E(T.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{kf(e.value)||r.push(new E(T.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))}),o[e]=t;break;case i.Inactive:t.length>1&&r.push(...t.map(e=>new E(T.DUPLICATE_REF_SETTING,`'inactive' can only appear once`,e))),t.forEach(e=>{e.value&&r.push(new E(T.INVALID_REF_SETTING_VALUE,`'inactive' cannot have a value`,e))}),o[e]=t;break;default:t.forEach(t=>r.push(new E(T.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}return new n(o,r)}var R_={validateNode(t,i){return j(i,r.Ref)?n.create(void 0,new F_(t,i).validate()):n.create(e)},nodeFullname(t,i){return j(i,r.Ref)?i.name?Tf(i.name)?new n(N(i.name)):new n(void 0,[new E(T.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):M(i,r.Ref)?new n(void 0):n.create(e)},nodeAlias(t,i){return j(i,r.Ref)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,i.alias)]):new n(void 0):M(i,r.Ref)?new n(void 0):n.create(e)},nodeSettings(t,i){if(j(i,r.Ref))return i.attributeList?new n({},[new E(T.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,i.attributeList)]):new n({});if(M(i,r.Ref)){let e=[...i.args],t;return g(e)instanceof G?t=g(e):e[0]instanceof G&&(t=e[0]),t?L_(t):new n({})}return n.create(e)}},z_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof B?[new E(T.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof gm?[new E(T.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:e instanceof fm?[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a Table name`,e)]:Cf(e)?[]:[new E(T.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new E(T.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?wf(e)?[]:[new E(T.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=D(e),n=t.getErrors();return Sa(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{kf(e.value)||n.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&n.push(...e.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{O(e.value)||n.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new E(T.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof U)return[new E(T.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=e=>{let t=[];if(!e.callee)return[];e.args.length===0&&t.push(new E(T.INVALID_COLUMN,`A column must have a type`,e.callee)),k(e.callee)||t.push(new E(T.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Pf(e.args[0])&&t.push(new E(T.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t},n=e=>{let t=[];return e.callee?(Df(e.callee)||t.push(new E(T.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection should be of the form ~<table-partial>`,e.callee)),e.args.length&&t.push(...e.args.map(e=>new E(T.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t):[]};return e.flatMap(e=>e.callee instanceof H&&e.callee.op?.value===`~`?n(e):t(e))}validateFieldSetting(e){if(!e.slice(0,-1).every(If)||!e.slice(-1).every(e=>If(e)||e instanceof G))return e.map(e=>new E(T.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let t;g(e)instanceof G&&(t=e.pop());let n=D(t),r=n.getErrors(),a=n.getValue();e.forEach(e=>{let t=(F(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){r.push(new E(T.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}a[t]===void 0?a[t]=[e]:a[t].push(e)});let o=a[i.PK]||[],s=a[i.PrimaryKey]||[];return o.length>=1&&s.length>=1&&r.push(...[...o,...s].map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Sa(a,(e,t)=>{switch(t){case i.Note:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{O(e.value)||r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{Mf(e.value)||r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=a[i.Null]||[];e.length>=1&&t.length>=1&&r.push(...[...e,...t].map(e=>new E(T.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Af(e.value)||r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'default' must be an enum value, a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof om||r.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new E(T.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),r}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new E(T.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function B_(e){let t=D(e),r=t.getErrors(),a=t.getValue();return Sa(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{kf(e.value)||r.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'headercolor' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{O(e.value)||r.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new E(T.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function V_(e){if(!e.slice(0,-1).every(If)||!e.slice(-1).every(e=>If(e)||e instanceof G))return new n({},e.map(e=>new E(T.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e)));if(e.length===0)return new n({});let t;g(e)instanceof G&&(t=e.pop());let r=D(t),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(F(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new E(T.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}o[t]===void 0?o[t]=[e]:o[t].push(e)});let s=o[i.PK]||[],c=o[i.PrimaryKey]||[];return s.length>=1&&c.length>=1&&a.push(...[...s,...c].map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Sa(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{O(e.value)||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{Mf(e.value)||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'ref' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'primary key' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'pk' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'not null' can only appear once`,e)));let t=o[i.Null]||[];e.length>=1&&t.length>=1&&a.push(...[...e,...t].map(e=>new E(T.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'not null' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'null' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'unique' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'increment' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Af(e.value)||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'default' must be an enum value, a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof om||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new E(T.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(o,a)}var H_={validateNode(t,i){return j(i,r.Table)?n.create(void 0,new z_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(j(i,r.Table)){if(!i.name)return new n(void 0,[new E(T.NAME_NOT_FOUND,`A Table must have a name`,i)]);if(i.name instanceof gm)return new n(void 0,[new E(T.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,i.name)]);let e=N(i.name);return e?.length===1&&e.unshift(y),new n(e)}if(M(i,r.Table)){if(Df(i.callee)){let e=F(i.callee.expression);return new n(e?[e]:void 0)}let e=F(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return j(i,r.Table)?i.alias?wf(i.alias)?new n(F(i.alias)):new n(void 0,[new E(T.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,i.alias)]):new n(void 0):M(i,r.Table)?new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.Table)?i.attributeList?B_(i.attributeList):new n({}):M(i,r.Table)?V_(i.args.slice(1)):n.create(e)}},U_=class{constructor(e,t){this.declarationNode=t,this.compiler=e}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof B?[new E(T.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof fm?[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a TableGroup name`,e)]:Tf(e)?[]:[new E(T.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new E(T.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=D(e),n=t.getErrors(),r=t.getValue();for(let[e,t]of Object.entries(r))switch(e){case`color`:t.length>1&&n.push(...t.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{kf(e.value)||n.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))});break;case`note`:t.length>1&&n.push(...t.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!O(e.value)).forEach(e=>{n.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...t.map(t=>new E(T.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return n}validateBody(e){if(!e)return[];if(e instanceof U)return[new E(T.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&N(e.callee)===void 0&&t.push(new E(T.INVALID_TABLEGROUP_FIELD,`A TableGroup field must be of the form <table> or <schema>.<table>`,e.callee)),e.args.length>0&&t.push(...e.args.map(e=>new E(T.INVALID_TABLEGROUP_FIELD,`A TableGroup field should only have a single Table name`,e))),t})}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new E(T.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function W_(e){let t=D(e),r=t.getErrors(),i=t.getValue(),a={};for(let[e,t]of Object.entries(i))switch(e){case`color`:t.length>1&&r.push(...t.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{kf(e.value)||r.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'color' must be a color literal`,e.value||e.name))}),a[e]=t;break;case`note`:t.length>1&&r.push(...t.map(e=>new E(T.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!O(e.value)).forEach(e=>{r.push(new E(T.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))}),a[e]=t;break;default:r.push(...t.map(t=>new E(T.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return new n(a,r)}var G_={validateNode(t,i){return j(i,r.TableGroup)?n.create(void 0,new U_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(j(i,r.TableGroup))return i.name?Tf(i.name)?new n(N(i.name)):new n(void 0,[new E(T.INVALID_NAME,`A TableGroup name must be a single identifier`,i.name)]):new n(void 0,[new E(T.NAME_NOT_FOUND,`A TableGroup must have a name`,i)]);if(M(i,r.TableGroup)){let e=N(i.callee);return e?.length===1&&e.unshift(y),new n(e)}return n.create(e)},nodeAlias(t,i){return j(i,r.TableGroup)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,i.alias)]):new n(void 0):M(i,r.TableGroup)?new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.TableGroup)?W_(i.attributeList):M(i,r.TableGroup)?new n({}):n.create(e)}},K_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateName(this.declarationNode.name),...this.validateAlias(this.declarationNode.alias),...this.validateSettingList(this.declarationNode.attributeList),...this.validateBody(this.declarationNode.body)]}validateContext(){return this.declarationNode.parent instanceof B?[new E(T.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof fm?[new E(T.INVALID_NAME,`Wildcard (*) is not allowed as a TablePartial name`,e)]:Tf(e)?[]:[new E(T.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new E(T.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new E(T.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=D(e),n=t.getErrors();return Sa(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new E(T.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{kf(e.value)||n.push(new E(T.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&n.push(...e.map(e=>new E(T.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{O(e.value)||n.push(new E(T.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new E(T.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof U)return[new E(T.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=_(e.body,e=>e instanceof U);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{if(!e.callee)return[];let t=[];e.args.length===0&&t.push(new E(T.INVALID_COLUMN,`A column must have a type`,e.callee)),k(e.callee)||t.push(new E(T.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Pf(e.args[0])&&t.push(new E(T.INVALID_COLUMN_TYPE,`Invalid column type`,e.args[0]));let n=e.args.slice(1);return t.push(...this.validateFieldSetting(n)),t})}validateFieldSetting(e){let t=g(e);if(!e.slice(0,-1).every(If)||!(If(t)||t instanceof G))return e.map(e=>new E(T.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let n;g(e)instanceof G&&(n=e.pop());let r=D(n),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(F(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new E(T.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}o[t]===void 0?o[t]=[e]:o[t].push(e)});let s=o[i.PK]||[],c=o[i.PrimaryKey]||[];return s.length>=1&&c.length>=1&&a.push(...[...s,...c].map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Sa(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{O(e.value)||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{Mf(e.value)||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=o[i.Null]||[];e.length>=1&&n.length>=1&&a.push(...[...e,...n].map(e=>new E(T.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&a.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Af(e.value)||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof om||a.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new E(T.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),a}validateSubElements(e){let t=e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[]),n=e.filter(e=>e.isKind(r.Note));return n.length>1&&t.push(...n.map(e=>new E(T.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function q_(e){let t=D(e),r=t.getErrors(),a=t.getValue();return Sa(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{kf(e.value)||r.push(new E(T.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a color literal`,e.value||e.name))});break;case i.Note:e.length>1&&r.push(...e.map(e=>new E(T.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{O(e.value)||r.push(new E(T.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new E(T.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function J_(e){let t=g(e);if(e.length>0&&(!e.slice(0,-1).every(If)||!(If(t)||t instanceof G)))return new n({},e.map(e=>new E(T.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e)));if(e.length===0)return new n({});let r;g(e)instanceof G&&(r=e.pop());let a=D(r),o=a.getErrors(),s=a.getValue();e.forEach(e=>{let t=(F(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){o.push(new E(T.INVALID_SETTINGS,"Inline column settings can only be `pk` or `unique`",e));return}s[t]===void 0?s[t]=[e]:s[t].push(e)});let c=s[i.PK]||[],l=s[i.PrimaryKey]||[];return c.length>=1&&l.length>=1&&o.push(...[...c,...l].map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Sa(s,(e,t)=>{switch(t){case i.Note:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{O(e.value)||o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{Mf(e.value)||o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a valid unary relationship`,e.value||e.name))});break;case i.PrimaryKey:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.PK:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.NotNull:{e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e)));let n=s[i.Null]||[];e.length>=1&&n.length>=1&&o.push(...[...e,...n].map(e=>new E(T.CONFLICTING_SETTING,`'not null' and 'null' can not be set at the same time`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break}case i.Null:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Unique:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Increment:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof V&&e.value!==void 0&&o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must not have a value`,e.value||e.name))});break;case i.Default:e.length>1&&o.push(...e.map(e=>new E(T.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Af(e.value)||o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a string literal, number literal, function expression, true, false or null`,e.value||e.name))});break;case i.Check:e.forEach(e=>{e.value instanceof om||o.push(new E(T.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>o.push(new E(T.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(s,o)}var Y_={validateNode(t,i){return j(i,r.TablePartial)?n.create(void 0,new K_(t,i).validate()):n.create(e)},nodeFullname(t,i){if(j(i,r.TablePartial))return i.name?Tf(i.name)?new n(N(i.name)):new n(void 0,[new E(T.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,i.name)]):new n(void 0,[new E(T.NAME_NOT_FOUND,`A TablePartial must have a name`,i)]);if(M(i,r.TablePartial)){let e=F(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return j(i,r.TablePartial)?i.alias?new n(void 0,[new E(T.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,i.alias)]):new n(F(i.alias)):M(i,r.TablePartial)?new n(void 0):n.create(e)},nodeSettings(t,i){return j(i,r.TablePartial)?q_(i.attributeList):M(i,r.TablePartial)?J_(i.args.slice(1)):n.create(e)}},X_=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateBody()]}validateContext(){return this.declarationNode.parent instanceof z?[]:[new E(T.INVALID_USE_CONTEXT,`'use' must appear at the top level`,this.declarationNode)]}validateBody(){let e=[];if(this.declarationNode.importPath&&!yo.isRelative(this.declarationNode.importPath.value)&&e.push(new E(T.INVALID_USE_SPECIFIER_NAME,`Import path must be a relative path (starting with './' or '../')`,this.declarationNode.importPath)),this.declarationNode.specifiers instanceof fm)return[];for(let t of this.declarationNode.specifiers?.specifiers||[])e.push(...this.validateSpecifier(t));return e}validateSpecifier(e){let t=[];return e.importKind===void 0?t.push(new E(T.INVALID_USE_SPECIFIER_KIND,`A use specifier must have a type (e.g. table, enum)`,e)):e.isKind(...Object.values(kp))||t.push(new E(T.INVALID_USE_SPECIFIER_KIND,`'${e.importKind.value}' is not a valid specifier type`,e.importKind)),[...t,...this.compiler.nodeFullname(e).getErrors(),...this.compiler.nodeAlias(e).getErrors()]}},Z_=[H_,w_,P_,E_,__,R_,M_,G_,Y_,O_,S_,A_,{validateNode(t,r){return r instanceof em?n.create(void 0,new X_(t,r).validate()):n.create(e)},nodeFullname(t,r){if(!zf(r))return n.create(e);let i=N(r.name);return!i||i.length===0?n.create(void 0,[new E(T.INVALID_NAME,`Use specifiers must have a valid name (simple name or schema-qualified name)`,r)]):r.isKind(kp.TableGroup)&&i.length>1?n.create(i,[new E(T.INVALID_USE_SPECIFIER_NAME,`A TableGroup name must be a simple name`,r)]):r.isKind(kp.TablePartial)&&i.length>1?n.create(i,[new E(T.INVALID_USE_SPECIFIER_NAME,`A TablePartial name must be a simple name`,r)]):r.isKind(kp.Note)&&i.length>1?n.create(i,[new E(T.INVALID_USE_SPECIFIER_NAME,`A Sticky note name must be a simple name`,r)]):(i.length===1&&!r.isKind(kp.Schema)&&i.unshift(y),new n(i))},nodeAlias(t,r){return zf(r)?r.alias?wf(r.alias)?new n(F(r.alias)):new n(void 0,[new E(T.INVALID_ALIAS,`Use aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return r instanceof em?n.create({}):n.create(e)}},b_];function Q_(t,...r){for(let n of Z_){let i=n[t];if(i){let t=i(...r);if(!t.hasValue(e))return t}}return n.create(e)}function $_(r){let i=Q_(`validateNode`,this,r);return i.hasValue(e)?n.create(t):i}function ev(r){let i=Q_(`nodeSettings`,this,r);return i.hasValue(e)?n.create(t):i}function tv(r){let i=Q_(`nodeFullname`,this,r);return i.hasValue(e)?n.create(t):i}function nv(r){let i=Q_(`nodeAlias`,this,r);return i.hasValue(e)?n.create(t):i}var rv=typeof document<`u`&&document.location&&document.location.hash.indexOf(`pseudo=true`)>=0;function iv(e,t){let n;return n=t.length===0?e:e.replace(/\{(\d+)\}/g,(e,n)=>{let r=t[n[0]],i=e;return typeof r==`string`?i=r:(typeof r==`number`||typeof r==`boolean`||r==null)&&(i=String(r)),i}),rv&&(n=`[`+n.replace(/[aouei]/g,`$&$&`)+`]`),n}function av(e,t,...n){return iv(t,n)}var ov=!1,sv=!1,cv=!1,lv=!1,uv=void 0,dv=typeof self==`object`?self:typeof global==`object`?global:{},fv=void 0;dv.vscode!==void 0&&dv.vscode.process!==void 0?fv=dv.vscode.process:typeof process<`u`&&(fv=process);var pv=typeof fv?.versions?.electron==`string`&&fv?.type===`renderer`;if(typeof navigator==`object`&&!pv)uv=navigator.userAgent,ov=uv.indexOf(`Windows`)>=0,sv=uv.indexOf(`Macintosh`)>=0,(uv.indexOf(`Macintosh`)>=0||uv.indexOf(`iPad`)>=0||uv.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,cv=uv.indexOf(`Linux`)>=0,uv?.indexOf(`Mobi`),lv=!0,av({key:`ensureLoaderPluginIsLoaded`,comment:[`{Locked}`]},`_`),navigator.language;else if(typeof fv==`object`){ov=fv.platform===`win32`,sv=fv.platform===`darwin`,cv=fv.platform===`linux`,cv&&fv.env.SNAP&&fv.env.SNAP_REVISION,fv.env.CI||fv.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=fv.env.VSCODE_NLS_CONFIG;if(e)try{let t=JSON.parse(e);t.availableLanguages[`*`],t.locale,t.osLocale,t._translationsConfigFile}catch{}}else console.error(`Unable to resolve platform.`);var mv=ov,hv=sv;lv&&dv.importScripts;var gv=uv,_v=typeof dv.postMessage==`function`&&!dv.importScripts;(()=>{if(_v){let e=[];dv.addEventListener(`message`,t=>{if(t.data&&t.data.vscodeScheduleAsyncWork)for(let n=0,r=e.length;n<r;n++){let r=e[n];if(r.id===t.data.vscodeScheduleAsyncWork){e.splice(n,1),r.callback();return}}});let t=0;return n=>{let r=++t;e.push({id:r,callback:n}),dv.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})();var vv=!!(gv&&gv.indexOf(`Chrome`)>=0);gv&&gv.indexOf(`Firefox`),!vv&&gv&&gv.indexOf(`Safari`),gv&&gv.indexOf(`Edg/`),gv&&gv.indexOf(`Android`);var yv;if(dv.vscode!==void 0&&dv.vscode.process!==void 0){let e=dv.vscode.process;yv={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else yv=typeof process<`u`?{get platform(){return process.platform},get arch(){return process.arch},get env(){return process.env},cwd(){return process.env.VSCODE_CWD||process.cwd()}}:{get platform(){return mv?`win32`:hv?`darwin`:`linux`},get arch(){},get env(){return{}},cwd(){return`/`}};var bv=yv.cwd,xv=yv.env,Sv=yv.platform,Cv=65,wv=97,Tv=90,Ev=122,Dv=46,Ov=47,kv=92,Av=58,jv=63,Mv=class extends Error{constructor(e,t,n){let r;typeof t==`string`&&t.indexOf(`not `)===0?(r=`must not be`,t=t.replace(/^not /,``)):r=`must be`;let i=`The "${e}" ${e.indexOf(`.`)===-1?`argument`:`property`} ${r} of type ${t}`;i+=`. Received type ${typeof n}`,super(i),this.code=`ERR_INVALID_ARG_TYPE`}};function Nv(e,t){if(typeof e!=`object`||!e)throw new Mv(t,`Object`,e)}function Pv(e,t){if(typeof e!=`string`)throw new Mv(t,`string`,e)}var Fv=Sv===`win32`;function q(e){return e===Ov||e===kv}function Iv(e){return e===Ov}function Lv(e){return e>=Cv&&e<=Tv||e>=wv&&e<=Ev}function Rv(e,t,n,r){let i=``,a=0,o=-1,s=0,c=0;for(let l=0;l<=e.length;++l){if(l<e.length)c=e.charCodeAt(l);else if(r(c))break;else c=Ov;if(r(c)){if(!(o===l-1||s===1))if(s===2){if(i.length<2||a!==2||i.charCodeAt(i.length-1)!==Dv||i.charCodeAt(i.length-2)!==Dv){if(i.length>2){let e=i.lastIndexOf(n);e===-1?(i=``,a=0):(i=i.slice(0,e),a=i.length-1-i.lastIndexOf(n)),o=l,s=0;continue}else if(i.length!==0){i=``,a=0,o=l,s=0;continue}}t&&(i+=i.length>0?`${n}..`:`..`,a=2)}else i.length>0?i+=`${n}${e.slice(o+1,l)}`:i=e.slice(o+1,l),a=l-o-1;o=l,s=0}else c===Dv&&s!==-1?++s:s=-1}return i}function zv(e,t){Nv(t,`pathObject`);let n=t.dir||t.root,r=t.base||`${t.name||``}${t.ext||``}`;return n?n===t.root?`${n}${r}`:`${n}${e}${r}`:r}var Bv={resolve(...e){let t=``,n=``,r=!1;for(let i=e.length-1;i>=-1;i--){let a;if(i>=0){if(a=e[i],Pv(a,`path`),a.length===0)continue}else t.length===0?a=bv():(a=xv[`=${t}`]||bv(),(a===void 0||a.slice(0,2).toLowerCase()!==t.toLowerCase()&&a.charCodeAt(2)===kv)&&(a=`${t}\\`));let o=a.length,s=0,c=``,l=!1,u=a.charCodeAt(0);if(o===1)q(u)&&(s=1,l=!0);else if(q(u))if(l=!0,q(a.charCodeAt(1))){let e=2,t=e;for(;e<o&&!q(a.charCodeAt(e));)e++;if(e<o&&e!==t){let n=a.slice(t,e);for(t=e;e<o&&q(a.charCodeAt(e));)e++;if(e<o&&e!==t){for(t=e;e<o&&!q(a.charCodeAt(e));)e++;(e===o||e!==t)&&(c=`\\\\${n}\\${a.slice(t,e)}`,s=e)}}}else s=1;else Lv(u)&&a.charCodeAt(1)===Av&&(c=a.slice(0,2),s=2,o>2&&q(a.charCodeAt(2))&&(l=!0,s=3));if(c.length>0)if(t.length>0){if(c.toLowerCase()!==t.toLowerCase())continue}else t=c;if(r){if(t.length>0)break}else if(n=`${a.slice(s)}\\${n}`,r=l,l&&t.length>0)break}return n=Rv(n,!r,`\\`,q),r?`${t}\\${n}`:`${t}${n}`||`.`},normalize(e){Pv(e,`path`);let t=e.length;if(t===0)return`.`;let n=0,r,i=!1,a=e.charCodeAt(0);if(t===1)return Iv(a)?`\\`:e;if(q(a))if(i=!0,q(e.charCodeAt(1))){let i=2,a=i;for(;i<t&&!q(e.charCodeAt(i));)i++;if(i<t&&i!==a){let o=e.slice(a,i);for(a=i;i<t&&q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&!q(e.charCodeAt(i));)i++;if(i===t)return`\\\\${o}\\${e.slice(a)}\\`;i!==a&&(r=`\\\\${o}\\${e.slice(a,i)}`,n=i)}}}else n=1;else Lv(a)&&e.charCodeAt(1)===Av&&(r=e.slice(0,2),n=2,t>2&&q(e.charCodeAt(2))&&(i=!0,n=3));let o=n<t?Rv(e.slice(n),!i,`\\`,q):``;return o.length===0&&!i&&(o=`.`),o.length>0&&q(e.charCodeAt(t-1))&&(o+=`\\`),r===void 0?i?`\\${o}`:o:i?`${r}\\${o}`:`${r}${o}`},isAbsolute(e){Pv(e,`path`);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return q(n)||t>2&&Lv(n)&&e.charCodeAt(1)===Av&&q(e.charCodeAt(2))},join(...e){if(e.length===0)return`.`;let t,n;for(let r=0;r<e.length;++r){let i=e[r];Pv(i,`path`),i.length>0&&(t===void 0?t=n=i:t+=`\\${i}`)}if(t===void 0)return`.`;let r=!0,i=0;if(typeof n==`string`&&q(n.charCodeAt(0))){++i;let e=n.length;e>1&&q(n.charCodeAt(1))&&(++i,e>2&&(q(n.charCodeAt(2))?++i:r=!1))}if(r){for(;i<t.length&&q(t.charCodeAt(i));)i++;i>=2&&(t=`\\${t.slice(i)}`)}return Bv.normalize(t)},relative(e,t){if(Pv(e,`from`),Pv(t,`to`),e===t)return``;let n=Bv.resolve(e),r=Bv.resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===kv;)i++;let a=e.length;for(;a-1>i&&e.charCodeAt(a-1)===kv;)a--;let o=a-i,s=0;for(;s<t.length&&t.charCodeAt(s)===kv;)s++;let c=t.length;for(;c-1>s&&t.charCodeAt(c-1)===kv;)c--;let l=c-s,u=o<l?o:l,d=-1,f=0;for(;f<u;f++){let n=e.charCodeAt(i+f);if(n!==t.charCodeAt(s+f))break;n===kv&&(d=f)}if(f!==u){if(d===-1)return r}else{if(l>u){if(t.charCodeAt(s+f)===kv)return r.slice(s+f+1);if(f===2)return r.slice(s+f)}o>u&&(e.charCodeAt(i+f)===kv?d=f:f===2&&(d=3)),d===-1&&(d=0)}let p=``;for(f=i+d+1;f<=a;++f)(f===a||e.charCodeAt(f)===kv)&&(p+=p.length===0?`..`:`\\..`);return s+=d,p.length>0?`${p}${r.slice(s,c)}`:(r.charCodeAt(s)===kv&&++s,r.slice(s,c))},toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=Bv.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===kv){if(t.charCodeAt(1)===kv){let e=t.charCodeAt(2);if(e!==jv&&e!==Dv)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(Lv(t.charCodeAt(0))&&t.charCodeAt(1)===Av&&t.charCodeAt(2)===kv)return`\\\\?\\${t}`;return e},dirname(e){Pv(e,`path`);let t=e.length;if(t===0)return`.`;let n=-1,r=0,i=e.charCodeAt(0);if(t===1)return q(i)?e:`.`;if(q(i)){if(n=r=1,q(e.charCodeAt(1))){let i=2,a=i;for(;i<t&&!q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&q(e.charCodeAt(i));)i++;if(i<t&&i!==a){for(a=i;i<t&&!q(e.charCodeAt(i));)i++;if(i===t)return e;i!==a&&(n=r=i+1)}}}}else Lv(i)&&e.charCodeAt(1)===Av&&(n=t>2&&q(e.charCodeAt(2))?3:2,r=n);let a=-1,o=!0;for(let n=t-1;n>=r;--n)if(q(e.charCodeAt(n))){if(!o){a=n;break}}else o=!1;if(a===-1){if(n===-1)return`.`;a=n}return e.slice(0,a)},basename(e,t){t!==void 0&&Pv(t,`ext`),Pv(e,`path`);let n=0,r=-1,i=!0,a;if(e.length>=2&&Lv(e.charCodeAt(0))&&e.charCodeAt(1)===Av&&(n=2),t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return``;let o=t.length-1,s=-1;for(a=e.length-1;a>=n;--a){let c=e.charCodeAt(a);if(q(c)){if(!i){n=a+1;break}}else s===-1&&(i=!1,s=a+1),o>=0&&(c===t.charCodeAt(o)?--o===-1&&(r=a):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}for(a=e.length-1;a>=n;--a)if(q(e.charCodeAt(a))){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){Pv(e,`path`);let t=0,n=-1,r=0,i=-1,a=!0,o=0;e.length>=2&&e.charCodeAt(1)===Av&&Lv(e.charCodeAt(0))&&(t=r=2);for(let s=e.length-1;s>=t;--s){let t=e.charCodeAt(s);if(q(t)){if(!a){r=s+1;break}continue}i===-1&&(a=!1,i=s+1),t===Dv?n===-1?n=s:o!==1&&(o=1):n!==-1&&(o=-1)}return n===-1||i===-1||o===0||o===1&&n===i-1&&n===r+1?``:e.slice(n,i)},format:zv.bind(null,`\\`),parse(e){Pv(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.length,r=0,i=e.charCodeAt(0);if(n===1)return q(i)?(t.root=t.dir=e,t):(t.base=t.name=e,t);if(q(i)){if(r=1,q(e.charCodeAt(1))){let t=2,i=t;for(;t<n&&!q(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&q(e.charCodeAt(t));)t++;if(t<n&&t!==i){for(i=t;t<n&&!q(e.charCodeAt(t));)t++;t===n?r=t:t!==i&&(r=t+1)}}}}else if(Lv(i)&&e.charCodeAt(1)===Av){if(n<=2)return t.root=t.dir=e,t;if(r=2,q(e.charCodeAt(2))){if(n===3)return t.root=t.dir=e,t;r=3}}r>0&&(t.root=e.slice(0,r));let a=-1,o=r,s=-1,c=!0,l=e.length-1,u=0;for(;l>=r;--l){if(i=e.charCodeAt(l),q(i)){if(!c){o=l+1;break}continue}s===-1&&(c=!1,s=l+1),i===Dv?a===-1?a=l:u!==1&&(u=1):a!==-1&&(u=-1)}return s!==-1&&(a===-1||u===0||u===1&&a===s-1&&a===o+1?t.base=t.name=e.slice(o,s):(t.name=e.slice(o,a),t.base=e.slice(o,s),t.ext=e.slice(a,s))),o>0&&o!==r?t.dir=e.slice(0,o-1):t.dir=t.root,t},sep:`\\`,delimiter:`;`,win32:null,posix:null},Vv=(()=>{if(Fv){let e=/\\/g;return()=>{let t=bv().replace(e,`/`);return t.slice(t.indexOf(`/`))}}return()=>bv()})(),Hv={resolve(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:Vv();Pv(i,`path`),i.length!==0&&(t=`${i}/${t}`,n=i.charCodeAt(0)===Ov)}return t=Rv(t,!n,`/`,Iv),n?`/${t}`:t.length>0?t:`.`},normalize(e){if(Pv(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ov,n=e.charCodeAt(e.length-1)===Ov;return e=Rv(e,!t,`/`,Iv),e.length===0?t?`/`:n?`./`:`.`:(n&&(e+=`/`),t?`/${e}`:e)},isAbsolute(e){return Pv(e,`path`),e.length>0&&e.charCodeAt(0)===Ov},join(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];Pv(r,`path`),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:Hv.normalize(t)},relative(e,t){if(Pv(e,`from`),Pv(t,`to`),e===t||(e=Hv.resolve(e),t=Hv.resolve(t),e===t))return``;let n=e.length,r=n-1,i=t.length-1,a=r<i?r:i,o=-1,s=0;for(;s<a;s++){let n=e.charCodeAt(1+s);if(n!==t.charCodeAt(1+s))break;n===Ov&&(o=s)}if(s===a)if(i>a){if(t.charCodeAt(1+s)===Ov)return t.slice(1+s+1);if(s===0)return t.slice(1+s)}else r>a&&(e.charCodeAt(1+s)===Ov?o=s:s===0&&(o=0));let c=``;for(s=1+o+1;s<=n;++s)(s===n||e.charCodeAt(s)===Ov)&&(c+=c.length===0?`..`:`/..`);return`${c}${t.slice(1+o)}`},toNamespacedPath(e){return e},dirname(e){if(Pv(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ov,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===Ov){if(!r){n=t;break}}else r=!1;return n===-1?t?`/`:`.`:t&&n===1?`//`:e.slice(0,n)},basename(e,t){t!==void 0&&Pv(t,`ext`),Pv(e,`path`);let n=0,r=-1,i=!0,a;if(t!==void 0&&t.length>0&&t.length<=e.length){if(t===e)return``;let o=t.length-1,s=-1;for(a=e.length-1;a>=0;--a){let c=e.charCodeAt(a);if(c===Ov){if(!i){n=a+1;break}}else s===-1&&(i=!1,s=a+1),o>=0&&(c===t.charCodeAt(o)?--o===-1&&(r=a):(o=-1,r=s))}return n===r?r=s:r===-1&&(r=e.length),e.slice(n,r)}for(a=e.length-1;a>=0;--a)if(e.charCodeAt(a)===Ov){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){Pv(e,`path`);let t=-1,n=0,r=-1,i=!0,a=0;for(let o=e.length-1;o>=0;--o){let s=e.charCodeAt(o);if(s===Ov){if(!i){n=o+1;break}continue}r===-1&&(i=!1,r=o+1),s===Dv?t===-1?t=o:a!==1&&(a=1):t!==-1&&(a=-1)}return t===-1||r===-1||a===0||a===1&&t===r-1&&t===n+1?``:e.slice(t,r)},format:zv.bind(null,`/`),parse(e){Pv(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===Ov,r;n?(t.root=`/`,r=1):r=0;let i=-1,a=0,o=-1,s=!0,c=e.length-1,l=0;for(;c>=r;--c){let t=e.charCodeAt(c);if(t===Ov){if(!s){a=c+1;break}continue}o===-1&&(s=!1,o=c+1),t===Dv?i===-1?i=c:l!==1&&(l=1):i!==-1&&(l=-1)}if(o!==-1){let r=a===0&&n?1:a;i===-1||l===0||l===1&&i===o-1&&i===a+1?t.base=t.name=e.slice(r,o):(t.name=e.slice(r,i),t.base=e.slice(r,o),t.ext=e.slice(i,o))}return a>0?t.dir=e.slice(0,a-1):n&&(t.dir=`/`),t},sep:`/`,delimiter:`:`,win32:null,posix:null};Hv.win32=Bv.win32=Bv,Hv.posix=Bv.posix=Hv,Fv?Bv.normalize:Hv.normalize,Fv?Bv.resolve:Hv.resolve,Fv?Bv.relative:Hv.relative,Fv?Bv.dirname:Hv.dirname,Fv?Bv.basename:Hv.basename,Fv?Bv.extname:Hv.extname,Fv?Bv.sep:Hv.sep;var Uv=/^\w[\w\d+.-]*$/,Wv=/^\//,Gv=/^\/\//;function Kv(e,t){if(!e.scheme&&t)throw Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!Uv.test(e.scheme))throw Error(`[UriError]: Scheme contains illegal characters.`);if(e.path){if(e.authority){if(!Wv.test(e.path))throw Error(`[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character`)}else if(Gv.test(e.path))throw Error(`[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")`)}}function qv(e,t){return!e&&!t?`file`:e}function Jv(e,t){switch(e){case`https`:case`http`:case`file`:t?t[0]!==Yv&&(t=Yv+t):t=Yv;break}return t}var J=``,Yv=`/`,Xv=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,Zv=class e{static isUri(t){return t instanceof e?!0:t?typeof t.authority==`string`&&typeof t.fragment==`string`&&typeof t.path==`string`&&typeof t.query==`string`&&typeof t.scheme==`string`&&typeof t.fsPath==`string`&&typeof t.with==`function`&&typeof t.toString==`function`:!1}constructor(e,t,n,r,i,a=!1){typeof e==`object`?(this.scheme=e.scheme||J,this.authority=e.authority||J,this.path=e.path||J,this.query=e.query||J,this.fragment=e.fragment||J):(this.scheme=qv(e,a),this.authority=t||J,this.path=Jv(this.scheme,n||J),this.query=r||J,this.fragment=i||J,Kv(this,a))}get fsPath(){return ry(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:a}=e;return t===void 0?t=this.scheme:t===null&&(t=J),n===void 0?n=this.authority:n===null&&(n=J),r===void 0?r=this.path:r===null&&(r=J),i===void 0?i=this.query:i===null&&(i=J),a===void 0?a=this.fragment:a===null&&(a=J),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&a===this.fragment?this:new $v(t,n,r,i,a)}static parse(e,t=!1){let n=Xv.exec(e);return n?new $v(n[2]||J,sy(n[4]||J),sy(n[5]||J),sy(n[7]||J),sy(n[9]||J),t):new $v(J,J,J,J,J)}static file(e){let t=J;if(mv&&(e=e.replace(/\\/g,Yv)),e[0]===Yv&&e[1]===Yv){let n=e.indexOf(Yv,2);n===-1?(t=e.substring(2),e=Yv):(t=e.substring(2,n),e=e.substring(n)||Yv)}return new $v(`file`,t,e,J,J)}static from(e,t){return new $v(e.scheme,e.authority,e.path,e.query,e.fragment,t)}static joinPath(t,...n){if(!t.path)throw Error(`[UriError]: cannot call joinPath on URI without path`);let r;return r=mv&&t.scheme===`file`?e.file(Bv.join(ry(t,!0),...n)).path:Hv.join(t.path,...n),t.with({path:r})}toString(e=!1){return iy(this,e)}toJSON(){return this}static revive(t){if(!t||t instanceof e)return t;{let e=new $v(t);return e._formatted=t.external??null,e._fsPath=t._sep===Qv?t.fsPath??null:null,e}}},Qv=mv?1:void 0,$v=class extends Zv{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||=ry(this,!1),this._fsPath}toString(e=!1){return e?iy(this,!0):(this._formatted||=iy(this,!1),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=Qv),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}},ey={58:`%3A`,47:`%2F`,63:`%3F`,35:`%23`,91:`%5B`,93:`%5D`,64:`%40`,33:`%21`,36:`%24`,38:`%26`,39:`%27`,40:`%28`,41:`%29`,42:`%2A`,43:`%2B`,44:`%2C`,59:`%3B`,61:`%3D`,32:`%20`};function ty(e,t,n){let r,i=-1;for(let a=0;a<e.length;a++){let o=e.charCodeAt(a);if(o>=97&&o<=122||o>=65&&o<=90||o>=48&&o<=57||o===45||o===46||o===95||o===126||t&&o===47||n&&o===91||n&&o===93||n&&o===58)i!==-1&&(r+=encodeURIComponent(e.substring(i,a)),i=-1),r!==void 0&&(r+=e.charAt(a));else{r===void 0&&(r=e.substr(0,a));let t=ey[o];t===void 0?i===-1&&(i=a):(i!==-1&&(r+=encodeURIComponent(e.substring(i,a)),i=-1),r+=t)}}return i!==-1&&(r+=encodeURIComponent(e.substring(i))),r===void 0?e:r}function ny(e){let t;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r===35||r===63?(t===void 0&&(t=e.substr(0,n)),t+=ey[r]):t!==void 0&&(t+=e[n])}return t===void 0?e:t}function ry(e,t){let n;return n=e.authority&&e.path.length>1&&e.scheme===`file`?`//${e.authority}${e.path}`:e.path.charCodeAt(0)===47&&(e.path.charCodeAt(1)>=65&&e.path.charCodeAt(1)<=90||e.path.charCodeAt(1)>=97&&e.path.charCodeAt(1)<=122)&&e.path.charCodeAt(2)===58?t?e.path.substr(1):e.path[1].toLowerCase()+e.path.substr(2):e.path,mv&&(n=n.replace(/\//g,`\\`)),n}function iy(e,t){let n=t?ny:ty,r=``,{scheme:i,authority:a,path:o,query:s,fragment:c}=e;if(i&&(r+=i,r+=`:`),(a||i===`file`)&&(r+=Yv,r+=Yv),a){let e=a.indexOf(`@`);if(e!==-1){let t=a.substr(0,e);a=a.substr(e+1),e=t.lastIndexOf(`:`),e===-1?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=`:`,r+=n(t.substr(e+1),!1,!0)),r+=`@`}a=a.toLowerCase(),e=a.lastIndexOf(`:`),e===-1?r+=n(a,!1,!0):(r+=n(a.substr(0,e),!1,!0),r+=a.substr(e))}if(o){if(o.length>=3&&o.charCodeAt(0)===47&&o.charCodeAt(2)===58){let e=o.charCodeAt(1);e>=65&&e<=90&&(o=`/${String.fromCharCode(e+32)}:${o.substr(3)}`)}else if(o.length>=2&&o.charCodeAt(1)===58){let e=o.charCodeAt(0);e>=65&&e<=90&&(o=`${String.fromCharCode(e+32)}:${o.substr(2)}`)}r+=n(o,!0,!1)}return s&&(r+=`?`,r+=n(s,!1,!1)),c&&(r+=`#`,r+=t?c:ty(c,!1,!1)),r}function ay(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+ay(e.substr(3)):e}}var oy=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function sy(e){return e.match(oy)?e.replace(oy,e=>ay(e)):e}var Y=function(e){return e[e.Function=1]=`Function`,e[e.Constructor=2]=`Constructor`,e[e.Field=3]=`Field`,e[e.Variable=4]=`Variable`,e[e.Class=5]=`Class`,e[e.Struct=6]=`Struct`,e[e.Interface=7]=`Interface`,e[e.Module=8]=`Module`,e[e.Property=9]=`Property`,e[e.Event=10]=`Event`,e[e.Operator=11]=`Operator`,e[e.Unit=12]=`Unit`,e[e.Value=13]=`Value`,e[e.Constant=14]=`Constant`,e[e.Enum=15]=`Enum`,e[e.EnumMember=16]=`EnumMember`,e[e.Keyword=17]=`Keyword`,e[e.Text=18]=`Text`,e[e.Color=19]=`Color`,e[e.File=20]=`File`,e[e.Reference=21]=`Reference`,e[e.Customcolor=22]=`Customcolor`,e[e.Folder=23]=`Folder`,e[e.TypeParameter=24]=`TypeParameter`,e[e.User=25]=`User`,e[e.Issue=26]=`Issue`,e[e.Snippet=27]=`Snippet`,e}({}),X=function(e){return e[e.None=0]=`None`,e[e.KeepWhitespace=1]=`KeepWhitespace`,e[e.InsertAsSnippet=4]=`InsertAsSnippet`,e}({}),cy=function(e){return e[e.Hint=1]=`Hint`,e[e.Info=2]=`Info`,e[e.Warning=4]=`Warning`,e[e.Error=8]=`Error`,e}({});function ly(e,t){return e.getOffsetAt(t)}function uy(e,t){let{startPos:n,endPos:r}=t;return{startLineNumber:n.line+1,startColumn:n.column+1,endLineNumber:r.line+1,endColumn:r.column+1}}var dy=class{constructor(e){this.compiler=e}provideCodeActions(e,t,n,r){if(!n.markers.length)return;let i=yo.fromUri(String(e.uri)),a=this.compiler.interpretProject().getInfos().filter(e=>e.quickFixes?.length&&e.filepath.equals(i));if(!a.length)return;let o=[];for(let t of n.markers)for(let n of a){let r=uy(e,n.nodeOrToken);if(!(r.startLineNumber!==t.startLineNumber||r.startColumn!==t.startColumn||r.endLineNumber!==t.endLineNumber||r.endColumn!==t.endColumn))for(let r of n.quickFixes??[])o.push(this.quickFixToCodeAction(r,e,t))}let s=Pa(o,e=>{let t=e.diagnostics?.[0];return`${e.title}@${t?.startLineNumber}:${t?.startColumn}`});if(s.length)return{actions:s,dispose(){}}}quickFixToCodeAction(e,t,n){let r=Zv.parse(e.filepath.toUri({protocol:t.uri.scheme})),i={edits:e.edits.map(e=>{let n=t.getPositionAt(e.start),i=t.getPositionAt(e.end);return{resource:r,textEdit:{range:{startLineNumber:n.lineNumber,startColumn:n.column,endLineNumber:i.lineNumber,endColumn:i.column},text:e.newText},versionId:t.getVersionId()}})};return{title:e.title,kind:`quickfix`,edit:i,diagnostics:[n]}}},fy=class{constructor(e){this.compiler=e}provideDefinition(e,n){let{uri:r}=e,i=yo.fromUri(String(e.uri)),a=ly(e,n),o=[...this.compiler.container.stack(i,a)];for(;o.length!==0;){let e=o.pop();if(!e)continue;let n=this.compiler.nodeReferee(e).getFiltered(t);if(!n)continue;let i;if(n.declaration&&[$p.PRIMARY_EXPRESSION,$p.VARIABLE].includes(e.kind)&&({declaration:i}=n),i){let{startPos:e,endPos:t}=i,n=r;return r&&i.filepath&&(n=Zv.parse(i.filepath.toUri({protocol:r.scheme}))),[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}]}}return[]}},py=class{constructor(e){this.compiler=e}provideDiagnostics(e){return[...this.provideErrors(e),...this.provideWarnings(e),...this.provideInfos(e)]}provideErrors(e){return e?this.compiler.parse.errors(e).map(e=>this.createDiagnostic(e,`error`)):this.compiler.interpretProject().getErrors().map(e=>this.createDiagnostic(e,`error`))}provideWarnings(e){return e?this.compiler.parse.warnings(e).map(e=>this.createDiagnostic(e,`warning`)):this.compiler.interpretProject().getWarnings().map(e=>this.createDiagnostic(e,`warning`))}provideInfos(e){return e?this.compiler.interpretFile(e).getInfos().map(e=>this.createDiagnostic(e,`info`)):this.compiler.interpretProject().getInfos().map(e=>this.createDiagnostic(e,`info`))}provideMarkers(e){return this.provideDiagnostics(e).filter(t=>t.filepath.equals(e)).map(e=>({severity:this.getSeverityValue(e.type),message:e.text,startLineNumber:e.startRow,startColumn:e.startColumn,endLineNumber:e.endRow,endColumn:e.endColumn,code:e.code?String(e.code):void 0}))}createDiagnostic(e,t){let n=e.nodeOrToken,r=n.startPos,i=n.endPos;return{type:t,text:e.diagnostic,startRow:r.line+1,startColumn:r.column+1,endRow:i.line+1,endColumn:i.column+1,code:e.code,filepath:e.filepath}}getSeverityValue(e){return e===`error`?cy.Error:e===`warning`?cy.Warning:cy.Info}},my=class{constructor(e){this.compiler=e}provideReferences(e,n){let{uri:r}=e,i=yo.fromUri(String(r)),a=ly(e,n);this.compiler.bindProject();let o=[...this.compiler.container.stack(i,a)];for(;o.length!==0;){let e=o.pop();if(e&&[$p.ELEMENT_DECLARATION,$p.FUNCTION_APPLICATION,$p.PRIMARY_EXPRESSION].includes(e?.kind)){let n=this.compiler.nodeSymbol(e).getFiltered(t)??this.compiler.nodeReferee(e).getFiltered(t),i=n?this.compiler.symbolReferences(n):void 0;if(i&&i.length>0)return i.map(e=>{let t=r;return r&&e.filepath&&(t=Zv.parse(e.filepath.toUri({protocol:r.scheme}))),{range:{startColumn:e.startPos.column+1,startLineNumber:e.startPos.line+1,endColumn:e.endPos.column+1,endLineNumber:e.endPos.line+1},uri:t}})}}return[]}};function hy(e,t){return e>=t.start&&e<t.end}function gy(e,t){let n=t.bodyColon?.start??t.body?.start;return n===void 0?e>=t.start&&e<=t.end:e>=t.start&&e<n}function _y(e,t){let n=[],r=e.parseFile(t).getValue()?.ast;if(!r)return n;for(let e of r.uses){let t=e.importPath?.value??``,r=[];if(e.specifiers instanceof nm)for(let t of e.specifiers.specifiers){let e,n;if(t.name?(e=t.importKind?.value,n=F(t.name)):t.importKind&&(n=t.importKind.value??void 0),n){let i=t.alias?F(t.alias):void 0;r.push({kind:e,name:n,alias:i})}}else e.specifiers instanceof fm&&r.push({name:`*`});r.length===0&&!(e.specifiers instanceof fm)||n.push({startOffset:e.fullStart,endOffset:e.fullEnd,sourceFile:t,specifiers:r,node:e})}return n}function vy(e,t,n,r,i,a){let o=_y(e,i),s=r.relativeTo(i.dirname).replace(/\.dbml$/,``),c=o.findIndex(e=>e.sourceFile===s),l=`${n} ${t}`;if(c!==-1){let e=o[c];return e.specifiers.some(e=>e.name===t)?{topInsert:``}:{topInsert:yy(Na([...e.specifiers.filter(e=>e.name!==`*`).map(e=>`${e.kind??n} ${e.name}${e.alias?` as ${e.alias}`:``}`),l]),s,`
7
+ `),removeRange:by(a,e.startOffset,e.endOffset)}}return{topInsert:yy([l],s,`
8
+ `)}}function yy(e,t,n){return`use {${n}${e.map(e=>` ${e}`).join(n)}${n}} from '${t}'${n}${n}`}function by(e,t,n){let r=e.lastIndexOf(`
9
9
  `,t-1)+1,i=n;for(;i<e.length&&(e[i]===` `||e[i]===` `);)i++;return i<e.length&&e[i]===`\r`&&i++,i<e.length&&e[i]===`
10
- `&&i++,{startOffset:r,endOffset:i}}function yy(e){switch(e){case I.Schema:return Y.Module;case I.Table:case I.TablePartial:return Y.Class;case I.Column:case I.TableGroupField:return Y.Field;case I.Enum:return Y.Enum;case I.EnumField:return Y.EnumMember;case I.TableGroup:return Y.Struct;default:return Y.Text}}function by(e,t){if(!e||Ga(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===_.NEWLINE&&n.end<=t)return!1}return!0}function Z(){return{suggestions:[]}}function xy(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function Sy(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:e.quoted?e.insertText:kg(e.insertText??``),quoted:!0}))}}function Cy(e,t=`, `){let n=e.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label).join(t);return n?{...e,suggestions:[{label:`* (all)`,insertText:n,insertTextRules:X.KeepWhitespace,kind:Y.Snippet,sortText:`00`,range:void 0},...e.suggestions]}:e}function wy(e,n,r){let i=[],a=new Set,o=e.layout.getSource(r)??``;for(let s of e.layout.getEntrypoints()){if(s.equals(r))continue;let c=e.usableMembers(s).getFiltered(t);if(c)for(let t of[...c.nonSchemaMembers,...c.schemaMembers]){if(!n.includes(t.kind))continue;let c=t.name;!c||a.has(c)||(a.add(c),i.push(Ty(e,c,t.kind,s,r,o)))}}return i}function Ty(e,t,n,r,i,a){let o=gy(e,t,n,r,i,a),s=[];if(o.topInsert&&s.push({range:{startLineNumber:1,startColumn:1,endLineNumber:1,endColumn:1},text:o.topInsert}),o.removeRange){let e=Ey(a,o.removeRange.startOffset),t=Ey(a,o.removeRange.endOffset);s.push({range:{startLineNumber:e.line,startColumn:e.column,endLineNumber:t.line,endColumn:t.column},text:``})}return{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:yy(n),detail:`from ${r.basename}`,sortText:`zzz_${yy(n).toString().padStart(2,`0`)}_${t}`,range:void 0,additionalTextEdits:s}}function Ey(e,t){let n=1,r=1;for(let i=0;i<t&&i<e.length;i++)e[i]===`
11
- `?(n++,r=1):r++;return{line:n,column:r}}function Dy(e,t,n,i,a){let o=e.container.element(i,a);return!(o instanceof z)||!o.isKind(r.Records)||!(o.body instanceof U)||!o.body||!py(a,o.body)||t.getLineContent(n.lineNumber).trim()!==``?null:o.parent instanceof R?Oy(e,o):ky(e,o)}function Oy(e,n){if(!(n.name instanceof G))return Z();let r=n.name.argumentList?.elementList||[],i=r.map(n=>e.nodeReferee(n).getFiltered(t));if(!i||i.length===0)return Z();let a=r.flatMap((t,n)=>{let r=i[n];if(!(r instanceof Fp||r instanceof Xp))return[];let{name:a}=r.canonicalName(e,t.filepath),{name:o}=r.type(e);return{name:a,type:o}});return a.length===0?Z():{suggestions:[{label:`Record row snippet`,insertText:a.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function ky(e,n){let r=n.parent;if(!(r instanceof z))return Z();let i=e.nodeSymbol(r).getFiltered(t);if(!(i instanceof Pp))return Z();let a;if(n.name instanceof om){let r=n.name.elementList,i=r.map(n=>e.nodeReferee(n).getFiltered(t)).filter(e=>e!==void 0);a=r.flatMap((t,n)=>{let r=i[n];if(!(r instanceof Fp||r instanceof Xp))return[];let{name:a}=r.canonicalName(e,t.filepath),{name:o}=r.type(e);return{name:a,type:o}})}else{let t=i.mergedColumns(e).flatMap(t=>{let{name:n}=t.canonicalName(e,t.filepath),{name:r}=t.type(e);return{name:n,type:r}});if(!t)return Z();a=t}return a.length===0?Z():{suggestions:[{label:`Record row snippet`,insertText:a.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function Ay(e,t,n,r,i){let a=e.parse.ast(t);for(let o of a.body)if(o instanceof $p&&n>=o.start&&n<=o.fullEnd)return jy(e,t,n,o,i,r);return null}function jy(e,t,n,r,i,a){if(r.importPath&&py(n,r.importPath))return Iy(e,t,r.importPath,i,r);if(r.importPath&&n>=r.importPath.end)return Z();if(r.fromKeyword&&n>r.fromKeyword.end)return Iy(e,t,void 0,i,r);if(r.specifiers instanceof tm){if(!r.specifiers.openBrace){let e=Fy();return by(r.useKeyword,n)?xy(e):e}return My(e,t,n,r.specifiers,r.importPath,a)}if(r.specifiers instanceof um)return Z();let o=Fy();return by(r.useKeyword,n)?xy(o):o}function My(e,t,n,r,i,a){for(let o of r.specifiers){let r=!Number.isNaN(o.start)&&n>=o.start&&n<=o.end,s=a===o.importKind||a===o.asKeyword;if(r||s){if(o.importKind&&n>o.importKind.end){let n=o.getSymbolKind();if(n!==void 0&&n!==I.Schema)return Py(e,t,i,n)}return Ny()}}return Ny()}function Ny(){return{suggestions:Object.keys(Op).map(e=>({label:e.toLowerCase(),insertText:`${e.toLowerCase()} `,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function Py(e,n,r,i){if(!r)return Z();let a=xo(n,r.value);if(!a)return Z();let o=e.usableMembers(a).getFiltered(t);if(!o)return Z();let s=new Set;for(let n of o.schemaMembers){let r=e.symbolMembers(n).getFiltered(t)??[];for(let e of r){if(e.kind!==i||e instanceof Yp&&!e.canBeImported)continue;let t=e.name;t&&(n.isPublicSchema()?s.add(t):s.add(`${n.name}.${t}`))}}return{suggestions:[...s].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:yy(i),range:void 0}))}}function Fy(){return{suggestions:[{label:`* from`,detail:`import all`,insertText:"* from '${1:./path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0},{label:`{ } from`,detail:`import named`,insertText:"{ ${1:type} ${2:name} } from '${3:./path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function Iy(e,t,n,r,i){let a=t.dirname,o=n?n.value:`./`,s=n===void 0,c;if(n){let e=cy(r,n);c={startLineNumber:e.startLineNumber,startColumn:e.startColumn+1,endLineNumber:e.endLineNumber,endColumn:e.endColumn-1}}let l=new Map,u=new Map,d=Fa(e.layout.getEntrypoints().flatMap(t=>[...e.reachableFiles(t)]),e=>e.intern());for(let n of d){if(n.equals(t))continue;let r=n.relativeTo(a);if(r.endsWith(`.dbml`)&&(r=r.slice(0,-wo.length)),r.startsWith(`.`)||(r=`./${r}`),o&&!r.startsWith(o))continue;let d=`${o}${r.slice(o.length).split(`/`)[0]}`,f=bo.resolve(a,d),p=e.layout.isDirectory(f);if(Ry(e,n,Ly(i))&&u.set(d,!0),l.has(d))continue;let m=s?`'${d}'`:d;l.set(d,{label:d,insertText:m,insertTextRules:X.KeepWhitespace,kind:p?Y.Folder:Y.File,sortText:`${p?`2`:`3`}${d}`,range:c})}for(let[e,t]of l)u.get(e)&&(t.sortText=`${t.kind===Y.File?`0`:`1`}${e}`,t.detail=`best match`);return{suggestions:[...l.values()]}}function Ly(e){let t=e.specifiers;return t instanceof tm?t.specifiers.flatMap(e=>{let t=P(e.name),n=e.importKind?.value.toLowerCase();return!t||!n?[]:[{name:t,kind:n}]}):[]}function Ry(e,n,r){if(r.length===0)return!1;let i=e.usableMembers(n).getFiltered(t);return i?r.every(({name:e,kind:t})=>i.nonSchemaMembers.some(n=>n.kind===t&&n.name===e)):!1}var zy=class{constructor(e,t={}){this.compiler=e,this.triggerCharacters=t.triggerCharacters??[]}provideCompletionItems(e,t){let n=bo.fromUri(String(e.uri)),r=sy(e,t),i=Dy(this.compiler,e,t,n,r);if(i!==null)return i;let a=this.compiler.token.flatStream(n),{token:o,index:s}=this.compiler.container.token(n,r),c=s===void 0?a[0]:a[s+1];if([...o?.trailingTrivia||[],...o?.leadingTrivia||[],...c?.leadingTrivia||[]].find(e=>Ja(e)&&py(r,e)))return Z();if(s===void 0)return Qy();let l=Ay(this.compiler,n,r,o,e);if(l!==null)return l;if([_.STRING_LITERAL,_.QUOTED_STRING].includes(o.kind)&&py(r,o))return Z();let u=this.compiler.container.element(n,r);if(this.compiler.container.scopeKind(n,r)===Q.TOPLEVEL||u instanceof z&&u.type&&u.type.start<=r&&u.type.end>=r)return Qy();let d=[...this.compiler.container.stack(n,r)].reverse();for(let e of d)if(e instanceof V)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Vy(this.compiler,n,r,e);case`~`:return By(this.compiler,n,r);default:}else if(e instanceof rm)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Vy(this.compiler,n,r,e);case`.`:return Xy(this.compiler,n,r,e);default:}else if(e instanceof B)return Ky(this.compiler,n,r,e);else if(e instanceof W)return Ky(this.compiler,n,r,e);else if(e instanceof om)return Wy(this.compiler,n,r,e);else if(e instanceof sm)return Gy(this.compiler,n,r);else if(e instanceof G)return ib(this.compiler,n,r,e);else if(e instanceof H)return Zy(this.compiler,n,r,e);else if(e instanceof z){if(my(r,e))return rb(this.compiler,n,r,e);if(e.bodyColon&&r>=e.bodyColon.end||e.body&&py(r,e.body))return Zy(this.compiler,n,r,void 0)}return Z()}};function By(e,t,n){return Uy(e,t,n,e.parse.ast(t),[I.TablePartial])}function Vy(e,t,n,r){let i=e.container.scopeKind(t,n);if([Q.REF,Q.TABLE,Q.TABLEPARTIAL].includes(i)){let i=Uy(e,t,n,e.container.element(t,n),[I.Table,I.Schema,I.Column]);return by(r.op,n)?xy(i):i}return Z()}function Hy(e,n,r){let i=e.symbolMembers(n).getFiltered(t);return i?Sy({suggestions:i.filter(e=>r.includes(e.kind)).filter(e=>!(e instanceof jp&&e.isPublicSchema())).flatMap(e=>{let t=e.name;if(t===void 0)return[];let r=e.originalFilepath,i=r&&!r.equals(n.filepath)?`from ${r.basename}`:`this file`;return{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:yy(e.kind),sortText:yy(e.kind).toString().padStart(2,`0`),detail:i,range:void 0}}).filter(e=>e.label!==``)}):Z()}function Uy(e,n,r,i,a){if(i===void 0)return Z();let o=i,s={suggestions:[]},c;for(;o;){o instanceof R&&(c=o);let n=e.nodeSymbol(o).getFiltered(t);if(n){let t=Hy(e,n,a).suggestions,r=e=>{switch(e){case Y.Field:return 0;case Y.Module:return 1;case Y.Class:return 2;default:return 3}};t.sort((e,t)=>r(e.kind)-r(t.kind)),s.suggestions.push(...t)}o=o instanceof z?o.parent:void 0}if(c?.filepath){let t=c.filepath,n=new Set(s.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label));for(let r of wy(e,a,t)){let e=typeof r.label==`string`?r.label:r.label.label;n.has(e)||(n.add(e),s.suggestions.push(r))}}return Sy(s)}function Wy(e,n,i,a){let o=e.container.scopeKind(n,i),s=e.container.element(n,i),c=[...e.container.stack(n,i)];for(let t of c)if(t instanceof G&&t.argumentList===a)return ib(e,n,i,t);if(s instanceof z&&s.isKind(r.Records)&&!(s.name instanceof G)&&my(i,s)){let n=s.parent?e.nodeSymbol(s.parent).getFiltered(t):void 0,r=s.name?e.nodeReferee(s.name).getFiltered(t):void 0,i=n||r;if(i){let t=Hy(e,i,[I.Column]);return Qf(a)?Cy(t):t}}switch(o){case Q.INDEXES:return cb(e,n,i);case Q.REF:for(;c.length>0;){let t=c.pop();if(t instanceof rm&&t.op?.value===`.`)return Xy(e,n,i,t)}return nb(e,n,i);default:break}return Z()}function Gy(e,t,n){return e.container.scopeKind(t,n)===Q.RECORDS?Uy(e,t,n,e.container.element(t,n),[I.Schema,I.Enum,I.EnumField]):Z()}function Ky(e,t,n,r){let{token:i}=e.container.token(t,n);if([_.COMMA,_.LBRACKET].includes(i?.kind)){let r=qy(e,t,n);return i?.kind===_.COMMA&&by(i,n)?xy(r):r}if(r.name&&r.name.start<=n&&r.name.end>=n)return qy(e,t,n);if(r.name instanceof nm){let a=Jy(e,t,n,Xf(r.name)??``);return i?.kind===_.COLON&&by(i,n)?xy(a):a}return Z()}function qy(e,t,n){let r=e.container.element(t,n);if(r instanceof R)return Z();let a=e.container.scopeKind(t,n);if(r.body&&!py(n,r.body)){let e;switch(a){case Q.TABLE:case Q.TABLEPARTIAL:e=[i.HeaderColor,i.Note];break;case Q.TABLEGROUP:e=[i.Color,i.Note];break;case Q.NOTE:e=[i.Color];break;default:e=[]}return{suggestions:e.map(e=>({label:e,insertText:`${e}: `,kind:Y.Field,insertTextRules:X.KeepWhitespace,range:void 0}))}}switch(a){case Q.TABLE:case Q.TABLEPARTIAL:return{suggestions:[...[i.PK,i.PrimaryKey,i.Null,i.NotNull,i.Increment,i.Unique].map(e=>({label:e,insertText:e,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0})),...[i.Ref,i.Default,i.Note,i.Check].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.ENUM:return{suggestions:[...[i.Note].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.INDEXES:return{suggestions:[...[i.Unique,i.PK].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Property,range:void 0})),...[i.Note,i.Name,i.Type].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.REF:return{suggestions:[{label:i.Inactive,insertText:i.Inactive,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0},...[i.Update,i.Delete,i.Color].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.CHECKS:return{suggestions:[i.Name].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))};default:break}return Z()}function Jy(e,t,n,r){switch(r?.toLowerCase()){case`update`:case`delete`:return{suggestions:[`cascade`,`set default`,`set null`,`restrict`].map(e=>({label:e,insertText:e,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};case`type`:return{suggestions:[`btree`,`hash`].map(e=>({label:e,insertText:`${e}`,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};case`color`:if(e.container.scopeKind(t,n)===Q.NOTE)return{suggestions:[Co].map(e=>({label:e,insertText:e,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};break;case`default`:return Uy(e,t,n,e.container.element(t,n),[I.Schema,I.Enum]);default:break}return Z()}function Yy(e,n,r){if(!r)return[];let i=[],a=r;for(;a;){let n=e.nodeSymbol(a).getFiltered(t);if(n){let r=e.symbolMembers(n).getFiltered(t);i.push(...r||[])}a=a instanceof z?a.parent:void 0}for(let e of n){let t=i.filter(t=>t.name===e);if(t.length===0)return[];i=t}return i}function Xy(e,n,r,i){let a=ep(i)??[];return a.pop(),a.some(e=>!O(e))?Z():Sy({suggestions:Yy(e,a.map(e=>P(e)),e.container.element(n,r)).flatMap(n=>e.symbolMembers(n).getFiltered(t)||[]).flatMap(e=>{let t=e.name;return t===void 0?[]:{label:t,insertText:t,kind:yy(e.kind),range:void 0}})})}function Zy(e,t,n,i){switch(e.container.scopeKind(t,n)){case Q.TABLE:case Q.TABLEPARTIAL:return eb(e,t,n,i);case Q.PROJECT:return tb(e,t,n,i);case Q.INDEXES:return ob(e,t,n);case Q.ENUM:return $y(e,t,n,i);case Q.REF:{let r=nb(e,t,n);return e.container.token(t,n).token?.kind===_.COLON&&by(e.container.token(t,n).token,n)?xy(r):r}case Q.TABLEGROUP:return ab(e,t);case Q.DIAGRAMVIEW:return db();case Q.CUSTOM:{let i=e.container.element(t,n);if(i instanceof z){let a=i.parentNode,o=a instanceof U?a.parentNode:void 0;if(o instanceof z&&o.isKind(r.DiagramView))return fb(e,t,n,i)}return Z()}default:return Z()}}function Qy(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`,`Records`,`DiagramView`,`Note`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function $y(e,t,n,r){return r?.callee&&lb(n,r)===1?Uy(e,t,n,e.container.element(t,n),[I.Schema,I.Table,I.Column]):Z()}function eb(e,t,n,r){let i=[`Note`,`indexes`,`checks`,`Records`];if(!r?.callee)return{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))};let a=lb(n,r);return a===0?{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:a===1?sb(e,t,n):Z()}function tb(e,t,n,r){return!r?.callee||lb(n,r)===0?{suggestions:[`Table`,`TableGroup`,`Enum`,`Note`,`Ref`,`TablePartial`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:Z()}function nb(e,t,n){return Uy(e,t,n,e.container.element(t,n),[I.Schema,I.Table,I.Column])}function rb(e,t,n,i){return i.isKind(r.Records)?Uy(e,t,n,i.parent,[I.Schema,I.Table]):Z()}function ib(e,n,i,a){let o=e.container.element(n,i),s=a.callee&&py(i,a.callee),c=a.argumentList&&py(i,a.argumentList);if(o instanceof z&&o.isKind(r.Records)&&my(i,o)){if(s)return Uy(e,n,i,o.parent,[I.Schema,I.Table]);if(!c)return Z();let r=a.callee;if(!r)return Z();let l=ep(r)??[r],u=l[l.length-1],d=u?e.nodeReferee(u).getFiltered(t):void 0;if(!d)return Z();let f=Hy(e,d,[I.Column]),{argumentList:p}=a;return!p||!Qf(p)?f:Cy(f)}let l=[...e.container.stack(n,i)];for(let o of l){if(!c||!(o instanceof H)||o.callee!==a||(P(a.callee)??``).toLowerCase()!==r.Records)continue;let s=e.nodeSymbol(e.container.element(n,i)).getFiltered(t);if(!s)return Z();let l=Hy(e,s,[I.Column]),{argumentList:u}=a;return!u||!Qf(u)?l:Cy(l)}return Z()}function ab(e,t){return{suggestions:[...Sy({suggestions:(e.parse.publicSymbolTable(t)??[]).flatMap(e=>{if(e.kind!==I.Table&&e.kind!==I.Schema)return[];let t=e.name;return t===void 0||e instanceof jp&&e.isPublicSchema()?[]:{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:yy(e.kind),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))]}}function ob(e,t,n){return cb(e,t,n)}function sb(e,t,n){return{suggestions:[...`integer.int.tinyint.smallint.mediumint.bigint.bit.bool.binary.varbinary.logical.char.nchar.varchar.varchar2.nvarchar.nvarchar2.binary_float.binary_double.float.double.decimal.dec.real.money.smallmoney.enum.tinyblob.tinytext.blob.text.mediumblob.mediumtext.longblob.longtext.ntext.set.inet6.uuid.image.date.time.datetime.datetime2.timestamp.year.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`).map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.TypeParameter,sortText:Y.TypeParameter.toString().padStart(2,`0`),range:void 0})),...Uy(e,t,n,e.container.element(t,n),[I.Enum,I.Schema]).suggestions]}}function cb(e,n,r){let i=e.container.element(n,r)?.parent,a=i?e.nodeSymbol(i).getFiltered(t):void 0;if(!a||!a?.isKind(I.Table))return Z();let o=e.symbolMembers(a).getFiltered(t);return o?Sy({suggestions:o.flatMap(n=>{let r=n.declaration?e.nodeFullname(n.declaration):void 0,i=r&&!r.hasValue(t)?r.getValue()?.at(-1):void 0;return i?{label:i,insertText:i,insertTextRules:X.KeepWhitespace,kind:yy(I.Column),range:void 0}:[]})}):Z()}function lb(e,t){if(!t.callee)return-1;let n=[t.callee,...t.args],r=n.findIndex(t=>e<=t.end);return r===-1?n.length:r}var ub={label:`*`,insertText:`*`,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0};function db(){return{suggestions:[...[`Tables`,`TableGroups`,`Notes`,`Schemas`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0})),ub]}}function fb(e,t,n,i){switch(i.getElementKind()){case r.DiagramViewTables:return{suggestions:[ub,...Uy(e,t,n,e.parse.ast(t),[I.Table,I.Schema]).suggestions]};case r.DiagramViewTableGroups:return{suggestions:[ub,...Uy(e,t,n,e.parse.ast(t),[I.TableGroup]).suggestions]};case r.DiagramViewSchemas:return{suggestions:[ub,{label:v,insertText:v,insertTextRules:X.KeepWhitespace,kind:Y.Module,range:void 0},...Uy(e,t,n,e.parse.ast(t),[I.Schema]).suggestions]};case r.DiagramViewNotes:return{suggestions:[ub,...Uy(e,t,n,e.parse.ast(t),[I.StickyNote]).suggestions]};default:return Z()}}var pb={comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],indentationRules:{increaseIndentPattern:/^(.*\{[^}]*|\s*[{[].*)$/,decreaseIndentPattern:/^(.*\}.*|\s*[}\]].*)$/}},mb={tokenPostfix:`.dbml`,brackets:[{open:`[`,close:`]`,token:`delimiter.square`},{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`}],decls:[`project`,`tablegroup`,`table`,`enum`,`ref`,`note`,`tablepartial`,`records`,`checks`,`diagramview`,`use`,`reuse`,`from`],dataTypes:`TINYINT.SMALLINT.MEDIUMINT.INT.INTEGER.BIGINT.FLOAT.DOUBLE.DECIMAL.DEC.BIT.BOOL.REAL.MONEY.BINARY_FLOAT.BINARY_DOUBLE.smallmoney.ENUM.CHAR.BINARY.VARCHAR.VARBINARY.TINYBLOB.TINYTEXT.BLOB.TEXT.MEDIUMBLOB.MEDIUMTEXT.LONGBLOB.LONGTEXT.SET.INET6.UUID.NVARCHAR.NCHAR.NTEXT.IMAGE.VARCHAR2.NVARCHAR2.DATE.TIME.DATETIME.DATETIME2.TIMESTAMP.YEAR.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`),settings:[`indexes`,`ref`,`note`,`headercolor`,`pk`,`null`,`increment`,`unique`,`default`,`note`,`primary`,`key`,`name`,`as`,`color`,`none`,`check`,`tables`,`tablegroups`,`notes`,`schemas`,`inactive`],symbols:/[=><!~?:&|+\-/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,newline:/[\r\n]/,digits:/\d+(_+\d+)*/,idtf:/[\p{L}0-9_]+/u,ignoreCase:!0,unicode:!0,tokenizer:{root:[[/[{}[\]()]/,`@bracket`],[/[,.:]/,`delimiter`],{include:`@numbers`},{include:`common`}],common:[{include:`@whitespace`},[/[<>~-]/,`operators`],[/\*/,`keyword.wildcard`],[/("[^"\\]*(?:\\.[^"\\]*)*")(\s+)(@idtf(?:\.@idtf*)*)/,[`string`,``,`keyword`]],[/"([^"\\]|\\.)*$/,``],[/'([^'\\]|\\.)*$/,``],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`],[/(@idtf)(\s+)(@idtf(?:\.@idtf)*)/,{cases:{"$1@decls":[`keyword`,``,`identifier`],"$1==not":{cases:{"$3==null":[`keyword`,``,`keyword`],"@default":[`identifier`,``,`identifier`]}},"@default":[`identifier`,``,`keyword`]}}],[/@idtf/,{cases:{"@dataTypes":`keyword`,"@decls":`keyword`,"@settings":`keyword`,"@default":`identifier`}}]],numbers:[[/0[xX][0-9a-fA-F]*/,`number`],[/[$][+-]*\d*(\.\d*)?/,`number`],[/((\d+(\.\d*)?)|(\.\d+))([eE][-+]?\d+)?/,`number`],[/#([0-9A-F]{3}){1,2}/,`number.hex`]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/`/,`string`,`@pop`]],endTripleQuotesString:[[/\\'/,`string`],[/(.*[^\\])?(\\\\)*'''/,`string`,`@popall`],[/.*$/,`string`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`],[/'''(.*[^\\])?(\\\\)*'''/,`string`],[/'''.*$/,`string`,`@endTripleQuotesString`]],comment:[[/[^/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[/*]/,`comment`]]}};function hb(e,t){let n=this.token.flatStream(e),{index:r,token:i}=this.container.token(e,t),a=r===void 0?-1:va(n,e=>!e.isInvalid,r);if(a===-1)return[this.parse.ast(e)];let o=n[a].start,s=this.parse.ast(e),c=[s];for(;;){let e=Nm(s).find(e=>py(o,e));if(e===void 0||e instanceof Ha)break;c.push(e),s=e}if(i?.kind===_.COLON)return c;for(;c.length>0;){let n=!1,r=h(c);if(r instanceof H){let i=this.getSource(e)||``;for(let e=r.end;e<t;e+=1)i[e]===`
12
- `&&(c.pop(),n=!0)}else r instanceof V||r instanceof rm?this.container.token(e,t).token!==r.op&&(c.pop(),n=!0):r instanceof W?r.listCloseBracket&&r.end<=t&&(c.pop(),n=!0):r instanceof om?r.tupleCloseParen&&r.end<=t&&(c.pop(),n=!0):r instanceof sm?r.end<=t&&(c.pop(),n=!0):r instanceof U?r.blockCloseBrace&&r.end<=t&&(c.pop(),n=!0):r instanceof nm||r.end<t&&(c.pop(),n=!0);if(n){let e=h(c);e instanceof z&&e.end<=t&&c.pop()}if(!n)break}return c}function gb(e,t){let n=this.token.flatStream(e).findIndex(e=>e.start>=t);return n===void 0||n<=0?{token:void 0,index:void 0}:{token:this.token.flatStream(e)[n-1],index:n-1}}function _b(e,t){let n=this.container.stack(e,t);for(let e=n.length-1;e>=0;--e)if(n[e]instanceof z)return n[e];return this.parse.ast(e)}function vb(e,n){let r=this.container.element(e,n);if(!r)return;let i=this.nodeSymbol(r);if(i.hasValue(t))return;let a=this.symbolMembers(i.getValue());if(!a.hasValue(t))return a.getValue()}var Q=function(e){return e[e.TABLE=0]=`TABLE`,e[e.ENUM=1]=`ENUM`,e[e.TABLEGROUP=2]=`TABLEGROUP`,e[e.INDEXES=3]=`INDEXES`,e[e.NOTE=4]=`NOTE`,e[e.REF=5]=`REF`,e[e.PROJECT=6]=`PROJECT`,e[e.CUSTOM=7]=`CUSTOM`,e[e.TOPLEVEL=8]=`TOPLEVEL`,e[e.TABLEPARTIAL=9]=`TABLEPARTIAL`,e[e.CHECKS=10]=`CHECKS`,e[e.RECORDS=11]=`RECORDS`,e[e.DIAGRAMVIEW=12]=`DIAGRAMVIEW`,e}({});function yb(e,t){let n=this.container.element(e,t);if(n instanceof R)return Q.TOPLEVEL;switch(n.type?.value.toLowerCase()){case`table`:return Q.TABLE;case`enum`:return Q.ENUM;case`ref`:return Q.REF;case`tablegroup`:return Q.TABLEGROUP;case`indexes`:return Q.INDEXES;case`note`:return Q.NOTE;case`project`:return Q.PROJECT;case`tablepartial`:return Q.TABLEPARTIAL;case`checks`:return Q.CHECKS;case`records`:return Q.RECORDS;case`diagramview`:return Q.DIAGRAMVIEW;default:return Q.CUSTOM}}function bb(e,t){let r=t.originalSymbol;if(r.filepath.equals(e))return n.create(Sb(this,r));let i=[...this.symbolUses(r).getValue(),...this.symbolAliases(r).getValue()].filter(t=>t.filepath.equals(e));for(let e of i){let t=e.name;if(!t)continue;if(t!==r.name)return n.create({schema:``,name:t});let i=xb(this,e);if(i.length>0)return n.create({schema:i.join(`.`),name:t});let a=Sb(this,r);return a?n.create({...a,name:t}):n.create({schema:v,name:t})}return n.create(Sb(this,r))}function xb(e,t){let n=[],r=t;for(;r;){let t=e.symbolParent(r).find(e=>e instanceof jp&&e.isKind(I.Schema));if(!t||t.isPublicSchema())break;n.unshift(t.name??``),r=t}return n}function Sb(e,n){if(!n.declaration)return n.name?{schema:v,name:n.name}:void 0;let r=e.nodeFullname(n.declaration).getFiltered(t);if(!r||r.length===0)return n.name?{schema:v,name:n.name}:void 0;let i=r[r.length-1];return{schema:r.length>1?r.slice(0,-1).join(`.`):v,name:i}}function Cb(e){let{ast:t}=this.parseFile(e).getValue(),n=[],r=new Set;for(let i of t.body){if(!(i instanceof $p)||!i.importPath)continue;let t=xo(e,i.importPath.value);!t||r.has(t.absolute)||(r.add(t.absolute),n.push(t))}return n}function wb(e,t){let n=new Set,r=[],i=[...t],a=0;for(;a<i.length;){let t=i[a++],o=t.intern();if(!n.has(o)){n.add(o),r.push(t);for(let n of e.fileDependencies(t))i.push(n)}}return r}function Tb(e){return wb(this,e?[e]:this.layout.getEntrypoints())}function Eb(e){return this.bindFile(e),this.parseFile(e).getValue().ast}function Db(e){return this.interpretFile(e).getErrors()}function Ob(e){return this.interpretFile(e).getWarnings()}function kb(e){return this.parseFile(e).getValue().tokens}function Ab(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.interpretSymbol(r,e).getFiltered(t)}function jb(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.symbolMembers(r).getFiltered(t)}function Mb(e){return this.parseFile(e).getValue().tokens.flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function Nb(e){return this.parseFile(e).getValue().tokens.filter($a)}function Pb(e,t){let n=this.parse.ast(e);for(;;){let e=Nm(n).find(e=>py(t,e));if(e===void 0)return n;if(e instanceof Ha)return e;n=e}}function Fb(e){let t=this.validateFile(e),r=this.parseFile(e).getValue().ast,i=this.bindNode(r).map(()=>void 0);return new n(void 0,[...t.getErrors(),...i.getErrors()],[...t.getWarnings(),...i.getWarnings()])}function Ib(){let e=Pg(this,this.layout.getEntrypoints()),t=new Map;for(let n of e){let e=this.bindFile(n);t.set(n.absolute,e)}return t}function Lb(e){let{ast:r}=this.parseFile(e).getValue(),i=this.nodeSymbol(r).getFiltered(t);return i?this.interpretSymbol(i,e).map(e=>e===t||!e?void 0:e):n.create(void 0)}function Rb(){let e=[],r=[],i=[],a=new Set,o=[];for(let e of this.layout.getEntrypoints())for(let t of this.reachableFiles(e)){let e=t.intern();a.has(e)||(a.add(e),o.push(t))}let s=new Map;for(let a of o){let o=this.parseFile(a);e.push(...o.getErrors()),r.push(...o.getWarnings()),i.push(...o.getInfos());let c=this.bindFile(a);e.push(...c.getErrors()),r.push(...c.getWarnings()),i.push(...c.getInfos());let{ast:l}=o.getValue(),u=this.nodeSymbol(l).getFiltered(t),d=u?this.interpretSymbol(u,a):n.create(t),f=d.getFiltered(t);f&&s.set(a.absolute,f),e.push(...d.getErrors()),r.push(...d.getWarnings()),i.push(...d.getInfos())}let c={};for(let[e,t]of s)c[e]=t;return new n({files:c},e,r,i)}function zb(e){return this.parseFile(e).chain(({ast:e})=>this.validateNode(e).map(()=>void 0))}var Bb=class{constructor(e,t){this.start={offset:0,line:0,column:0},this.current={offset:0,line:0,column:0},this.tokens=[],this.errors=[],this.text=e,this.filepath=t}isAtEnd(){return this.current.offset>=this.text.length}advance(){let e=this.peek();return this.current={...this.current},e===`
13
- `?(this.current.line+=1,this.current.column=0):this.current.column+=1,this.current.offset+=1,e}peek(e=0){if(!(this.current.offset+e>=this.text.length))return this.text[this.current.offset+e]}check(e){for(let t=0;t<e.length;t+=1)if(e[t]!==this.peek(t))return!1;return!0}match(e){return this.check(e)?(e.split(``).forEach(()=>this.advance()),!0):!1}addToken(e,t=!1){this.tokens.push(this.createToken(e,t))}createToken(e,t=!1){return Ha.create(e,this.filepath,this.start,this.current,this.text.substring(this.start.offset,this.current.offset),t)}lex(){return this.scanTokens(),this.tokens.push(Ha.create(_.EOF,this.filepath,this.start,this.current,``,!1)),this.gatherTrivia(),this.gatherInvalid(),new n(this.tokens,this.errors)}scanTokens(){for(;!this.isAtEnd();){let e=this.advance();switch(e){case` `:this.addToken(_.SPACE);break;case`\r`:break;case`
14
- `:this.addToken(_.NEWLINE);break;case` `:this.addToken(_.TAB);break;case`,`:this.addToken(_.COMMA);break;case`(`:this.addToken(_.LPAREN);break;case`)`:this.addToken(_.RPAREN);break;case`[`:this.addToken(_.LBRACKET);break;case`]`:this.addToken(_.RBRACKET);break;case`{`:this.addToken(_.LBRACE);break;case`}`:this.addToken(_.RBRACE);break;case`;`:this.addToken(_.SEMICOLON);break;case`:`:this.addToken(_.COLON);break;case`'`:this.match(`''`)?this.multilineStringLiteral():this.singleLineStringLiteral();break;case`"`:this.quotedVariable();break;case"`":this.functionExpression();break;case`#`:this.colorLiteral();break;case`/`:this.match(`/`)?this.singleLineComment():this.match(`*`)?this.multilineComment():this.operator(e);break;case`*`:this.addToken(_.WILDCARD);break;default:if(Ba(e)){this.operator(e);break}if(vf(e)){this.identifier();break}if(yf(e)){this.numericLiteralOrIdentifier();break}this.addToken(_.OP,!0),this.errors.push(new T(w.UNKNOWN_SYMBOL,`Unexpected token '${e}'`,this.createToken(_.OP,!0)));break}this.start={...this.current}}}gatherTrivia(){let e=!0,t=[],n,r=[];for(let i of this.tokens)za(i)?(t.push(i),i.kind===_.NEWLINE&&n&&(n.trailingTrivia=t,e=!0,n=void 0,t=[])):(e?i.leadingTrivia=t:n.trailingTrivia=t,r.push(i),t=[],n=i,e=!1);this.tokens=r}gatherInvalid(){let e,t=[],n=[];for(e=0;e<this.tokens.length&&$a(this.tokens[e]);e+=1)n.push(this.tokens[e]);let r=this.tokens[e];for(r.leadingInvalid=[...n,...r.leadingInvalid];e<this.tokens.length;e+=1){let n=this.tokens[e];$a(n)?r.trailingInvalid.push(n):(r=n,t.push(n))}this.tokens=t}consumeUntil(e,t,{allowNewline:n,allowEof:r,raw:i,consumeStopSequence:a=!0}){let o=``;for(;!this.isAtEnd()&&(n||!this.check(`
15
- `))&&!this.check(t);)this.peek()===`\\`&&!i?(this.advance(),o+=this.escapedString()):o+=this.advance();if(this.isAtEnd()&&!r){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new T(w.UNEXPECTED_EOF,`EOF reached while parsing`,t));return}if(this.check(`
16
- `)&&!n){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new T(w.UNEXPECTED_NEWLINE,`Invalid newline encountered while parsing`,t));return}a&&this.match(t),this.tokens.push(Ha.create(e,this.filepath,this.start,this.current,o,!1))}singleLineStringLiteral(){this.consumeUntil(_.STRING_LITERAL,`'`,{allowNewline:!1,allowEof:!1,raw:!1})}multilineStringLiteral(){this.consumeUntil(_.STRING_LITERAL,`'''`,{allowNewline:!0,allowEof:!1,raw:!1})}functionExpression(){this.consumeUntil(_.FUNCTION_EXPRESSION,"`",{allowNewline:!0,allowEof:!1,raw:!0})}quotedVariable(){this.consumeUntil(_.QUOTED_STRING,`"`,{allowNewline:!1,allowEof:!1,raw:!1})}singleLineComment(){this.consumeUntil(_.SINGLE_LINE_COMMENT,`
17
- `,{allowNewline:!0,allowEof:!0,raw:!0,consumeStopSequence:!1})}multilineComment(){this.consumeUntil(_.MULTILINE_COMMENT,`*/`,{allowNewline:!0,allowEof:!1,raw:!0})}identifier(){for(;!this.isAtEnd()&&xf(this.peek());)this.advance();this.addToken(_.IDENTIFIER)}operator(e){switch(e){case`<`:this.peek()===`=`?this.advance():(this.peek()===`>`&&this.advance(),this.peek()===`?`&&this.advance());break;case`>`:(this.peek()===`=`||this.peek()===`?`)&&this.advance();break;case`-`:this.peek()===`?`&&this.advance();break;case`?`:this.peek()===`-`?(this.advance(),this.peek()===`?`&&this.advance()):this.peek()===`<`?(this.advance(),this.peek()===`>`&&this.advance(),this.peek()===`?`&&this.advance()):this.peek()===`>`&&(this.advance(),this.peek()===`?`&&this.advance());break;case`=`:this.peek()===`=`&&this.advance();break;case`!`:this.peek()===`=`&&this.advance();break;default:break}this.addToken(_.OP)}numericLiteralOrIdentifier(){let e=0;if(this.isAtEnd())return this.addToken(_.NUMERIC_LITERAL);for(;!this.isAtEnd();){let t=this.check(`.`);if(e+=+!!t,e>1)break;if(this.check(`e`)||this.check(`E`)){let e=this.peek(1),t=e===`+`||e===`-`,n=t?this.peek(2):e;if(n&&yf(n)){for(this.advance(),t&&this.advance();!this.isAtEnd()&&yf(this.peek());)this.advance();if(this.isAtEnd()||!xf(this.peek()))return this.addToken(_.NUMERIC_LITERAL);break}break}if(!t&&this.current.offset===this.text.length-1)return this.advance(),this.addToken(_.NUMERIC_LITERAL);if(!t&&!xf(this.peek()))return this.addToken(_.NUMERIC_LITERAL);if(!t&&!yf(this.peek()))break;this.advance()}if(e>0){for(;!this.isAtEnd()&&(this.check(`.`)||xf(this.peek()));)this.advance();let e=this.createToken(_.NUMERIC_LITERAL,!0);this.tokens.push(e),this.errors.push(new T(w.UNKNOWN_TOKEN,`Invalid number`,e))}else{for(;!this.isAtEnd()&&xf(this.peek());)this.advance();let e=this.createToken(_.IDENTIFIER,!1);this.tokens.push(e)}}colorLiteral(){for(;!this.isAtEnd()&&xf(this.peek());)this.advance();this.addToken(_.COLOR_LITERAL)}escapedString(){let e={column:this.current.column-1,offset:this.current.offset-1,line:this.current.line};if(this.isAtEnd())return`\\`;switch(this.advance()){case`\r`:return this.check(`
10
+ `&&i++,{startOffset:r,endOffset:i}}function xy(e){switch(e){case L.Schema:return Y.Module;case L.Table:case L.TablePartial:return Y.Class;case L.Column:case L.TableGroupField:return Y.Field;case L.Enum:return Y.Enum;case L.EnumField:return Y.EnumMember;case L.TableGroup:return Y.Struct;default:return Y.Text}}function Sy(e,t){if(!e||Wa(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===v.NEWLINE&&n.end<=t)return!1}return!0}function Z(){return{suggestions:[]}}function Cy(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function wy(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:e.quoted?e.insertText:jg(e.insertText??``),quoted:!0}))}}function Ty(e,t=`, `){let n=e.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label).join(t);return n?{...e,suggestions:[{label:`* (all)`,insertText:n,insertTextRules:X.KeepWhitespace,kind:Y.Snippet,sortText:`00`,range:void 0},...e.suggestions]}:e}function Ey(e,n,r){let i=[],a=new Set,o=e.layout.getSource(r)??``;for(let s of e.layout.getEntrypoints()){if(s.equals(r))continue;let c=e.usableMembers(s).getFiltered(t);if(c)for(let t of[...c.nonSchemaMembers,...c.schemaMembers]){if(!n.includes(t.kind))continue;let c=t.name;!c||a.has(c)||(a.add(c),i.push(Dy(e,c,t.kind,s,r,o)))}}return i}function Dy(e,t,n,r,i,a){let o=vy(e,t,n,r,i,a),s=[];if(o.topInsert&&s.push({range:{startLineNumber:1,startColumn:1,endLineNumber:1,endColumn:1},text:o.topInsert}),o.removeRange){let e=Oy(a,o.removeRange.startOffset),t=Oy(a,o.removeRange.endOffset);s.push({range:{startLineNumber:e.line,startColumn:e.column,endLineNumber:t.line,endColumn:t.column},text:``})}return{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:xy(n),detail:`from ${r.basename}`,sortText:`zzz_${xy(n).toString().padStart(2,`0`)}_${t}`,range:void 0,additionalTextEdits:s}}function Oy(e,t){let n=1,r=1;for(let i=0;i<t&&i<e.length;i++)e[i]===`
11
+ `?(n++,r=1):r++;return{line:n,column:r}}function ky(e,t,n,i,a){let o=e.container.element(i,a);return!(o instanceof B)||!o.isKind(r.Records)||!(o.body instanceof W)||!o.body||!hy(a,o.body)||t.getLineContent(n.lineNumber).trim()!==``?null:o.parent instanceof z?Ay(e,o):jy(e,o)}function Ay(e,n){if(!(n.name instanceof um))return Z();let r=n.name.argumentList?.elementList||[],i=r.map(n=>e.nodeReferee(n).getFiltered(t));if(!i||i.length===0)return Z();let a=r.flatMap((t,n)=>{let r=i[n];if(!(r instanceof Ip||r instanceof Zp))return[];let{name:a}=r.canonicalName(e,t.filepath),{name:o}=r.type(e);return{name:a,type:o}});return a.length===0?Z():{suggestions:[{label:`Record row snippet`,insertText:a.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function jy(e,n){let r=n.parent;if(!(r instanceof B))return Z();let i=e.nodeSymbol(r).getFiltered(t);if(!(i instanceof Fp))return Z();let a;if(n.name instanceof sm){let r=n.name.elementList,i=r.map(n=>e.nodeReferee(n).getFiltered(t)).filter(e=>e!==void 0);a=r.flatMap((t,n)=>{let r=i[n];if(!(r instanceof Ip||r instanceof Zp))return[];let{name:a}=r.canonicalName(e,t.filepath),{name:o}=r.type(e);return{name:a,type:o}})}else{let t=i.mergedColumns(e).flatMap(t=>{let{name:n}=t.canonicalName(e,t.filepath),{name:r}=t.type(e);return{name:n,type:r}});if(!t)return Z();a=t}return a.length===0?Z():{suggestions:[{label:`Record row snippet`,insertText:a.map((e,t)=>`\${${t+1}:${e.name} (${e.type})}`).join(`, `),insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function My(e,t,n,r,i){let a=e.parse.ast(t);for(let o of a.body)if(o instanceof em&&n>=o.start&&n<=o.fullEnd)return Ny(e,t,n,o,i,r);return null}function Ny(e,t,n,r,i,a){if(r.importPath&&hy(n,r.importPath))return Ry(e,t,r.importPath,i,r);if(r.importPath&&n>=r.importPath.end)return Z();if(r.fromKeyword&&n>r.fromKeyword.end)return Ry(e,t,void 0,i,r);if(r.specifiers instanceof nm){if(!r.specifiers.openBrace){let e=Ly();return Sy(r.useKeyword,n)?Cy(e):e}return Py(e,t,n,r.specifiers,r.importPath,a)}if(r.specifiers instanceof fm)return Z();let o=Ly();return Sy(r.useKeyword,n)?Cy(o):o}function Py(e,t,n,r,i,a){for(let o of r.specifiers){let r=!Number.isNaN(o.start)&&n>=o.start&&n<=o.end,s=a===o.importKind||a===o.asKeyword;if(r||s){if(o.importKind&&n>o.importKind.end){let n=o.getSymbolKind();if(n!==void 0&&n!==L.Schema)return Iy(e,t,i,n)}return Fy()}}return Fy()}function Fy(){return{suggestions:Object.keys(kp).map(e=>({label:e.toLowerCase(),insertText:`${e.toLowerCase()} `,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function Iy(e,n,r,i){if(!r)return Z();let a=bo(n,r.value);if(!a)return Z();let o=e.usableMembers(a).getFiltered(t);if(!o)return Z();let s=new Set;for(let n of o.schemaMembers){let r=e.symbolMembers(n).getFiltered(t)??[];for(let e of r){if(e.kind!==i||e instanceof Xp&&!e.canBeImported)continue;let t=e.name;t&&(n.isPublicSchema()?s.add(t):s.add(`${n.name}.${t}`))}}return{suggestions:[...s].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:xy(i),range:void 0}))}}function Ly(){return{suggestions:[{label:`* from`,detail:`import all`,insertText:"* from '${1:./path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0},{label:`{ } from`,detail:`import named`,insertText:"{ ${1:type} ${2:name} } from '${3:./path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function Ry(e,t,n,r,i){let a=t.dirname,o=n?n.value:`./`,s=n===void 0,c;if(n){let e=uy(r,n);c={startLineNumber:e.startLineNumber,startColumn:e.startColumn+1,endLineNumber:e.endLineNumber,endColumn:e.endColumn-1}}let l=new Map,u=new Map,d=Pa(e.layout.getEntrypoints().flatMap(t=>[...e.reachableFiles(t)]),e=>e.intern());for(let n of d){if(n.equals(t))continue;let r=n.relativeTo(a);if(r.endsWith(`.dbml`)&&(r=r.slice(0,-Co.length)),r.startsWith(`.`)||(r=`./${r}`),o&&!r.startsWith(o))continue;let d=`${o}${r.slice(o.length).split(`/`)[0]}`,f=yo.resolve(a,d),p=e.layout.isDirectory(f);if(By(e,n,zy(i))&&u.set(d,!0),l.has(d))continue;let m=s?`'${d}'`:d;l.set(d,{label:d,insertText:m,insertTextRules:X.KeepWhitespace,kind:p?Y.Folder:Y.File,sortText:`${p?`2`:`3`}${d}`,range:c})}for(let[e,t]of l)u.get(e)&&(t.sortText=`${t.kind===Y.File?`0`:`1`}${e}`,t.detail=`best match`);return{suggestions:[...l.values()]}}function zy(e){let t=e.specifiers;return t instanceof nm?t.specifiers.flatMap(e=>{let t=F(e.name),n=e.importKind?.value.toLowerCase();return!t||!n?[]:[{name:t,kind:n}]}):[]}function By(e,n,r){if(r.length===0)return!1;let i=e.usableMembers(n).getFiltered(t);return i?r.every(({name:e,kind:t})=>i.nonSchemaMembers.some(n=>n.kind===t&&n.name===e)):!1}var Vy=class{constructor(e,t={}){this.compiler=e,this.triggerCharacters=t.triggerCharacters??[]}provideCompletionItems(e,t){let n=yo.fromUri(String(e.uri)),r=ly(e,t),i=ky(this.compiler,e,t,n,r);if(i!==null)return i;let a=this.compiler.token.flatStream(n),{token:o,index:s}=this.compiler.container.token(n,r),c=s===void 0?a[0]:a[s+1];if([...o?.trailingTrivia||[],...o?.leadingTrivia||[],...c?.leadingTrivia||[]].find(e=>qa(e)&&hy(r,e)))return Z();if(s===void 0)return eb();let l=My(this.compiler,n,r,o,e);if(l!==null)return l;if([v.STRING_LITERAL,v.QUOTED_STRING].includes(o.kind)&&hy(r,o))return Z();let u=this.compiler.container.element(n,r);if(this.compiler.container.scopeKind(n,r)===Q.TOPLEVEL||u instanceof B&&u.type&&u.type.start<=r&&u.type.end>=r)return eb();let d=[...this.compiler.container.stack(n,r)].reverse();for(let e of d)if(e instanceof H)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Uy(this.compiler,n,r,e);case`~`:return Hy(this.compiler,n,r);default:}else if(e instanceof im)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return Uy(this.compiler,n,r,e);case`.`:return Qy(this.compiler,n,r,e);default:}else if(e instanceof V)return Jy(this.compiler,n,r,e);else if(e instanceof G)return Jy(this.compiler,n,r,e);else if(e instanceof sm)return Ky(this.compiler,n,r,e);else if(e instanceof cm)return qy(this.compiler,n,r);else if(e instanceof um)return ob(this.compiler,n,r,e);else if(e instanceof U)return $y(this.compiler,n,r,e);else if(e instanceof B){if(gy(r,e))return ab(this.compiler,n,r,e);if(e.bodyColon&&r>=e.bodyColon.end||e.body&&hy(r,e.body))return $y(this.compiler,n,r,void 0)}return Z()}};function Hy(e,t,n){return Gy(e,t,n,e.parse.ast(t),[L.TablePartial])}function Uy(e,t,n,r){let i=e.container.scopeKind(t,n);if([Q.REF,Q.TABLE,Q.TABLEPARTIAL].includes(i)){let i=Gy(e,t,n,e.container.element(t,n),[L.Table,L.Schema,L.Column]);return Sy(r.op,n)?Cy(i):i}return Z()}function Wy(e,n,r){let i=e.symbolMembers(n).getFiltered(t);return i?wy({suggestions:i.filter(e=>r.includes(e.kind)).filter(e=>!(e instanceof Mp&&e.isPublicSchema())).flatMap(e=>{let t=e.name;if(t===void 0)return[];let r=e.originalFilepath,i=r&&!r.equals(n.filepath)?`from ${r.basename}`:`this file`;return{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:xy(e.kind),sortText:xy(e.kind).toString().padStart(2,`0`),detail:i,range:void 0}}).filter(e=>e.label!==``)}):Z()}function Gy(e,n,r,i,a){if(i===void 0)return Z();let o=i,s={suggestions:[]},c;for(;o;){o instanceof z&&(c=o);let n=e.nodeSymbol(o).getFiltered(t);if(n){let t=Wy(e,n,a).suggestions,r=e=>{switch(e){case Y.Field:return 0;case Y.Module:return 1;case Y.Class:return 2;default:return 3}};t.sort((e,t)=>r(e.kind)-r(t.kind)),s.suggestions.push(...t)}o=o instanceof B?o.parent:void 0}if(c?.filepath){let t=c.filepath,n=new Set(s.suggestions.map(e=>typeof e.label==`string`?e.label:e.label.label));for(let r of Ey(e,a,t)){let e=typeof r.label==`string`?r.label:r.label.label;n.has(e)||(n.add(e),s.suggestions.push(r))}}return wy(s)}function Ky(e,n,i,a){let o=e.container.scopeKind(n,i),s=e.container.element(n,i),c=[...e.container.stack(n,i)];for(let t of c)if(t instanceof um&&t.argumentList===a)return ob(e,n,i,t);if(s instanceof B&&s.isKind(r.Records)&&!(s.name instanceof um)&&gy(i,s)){let n=s.parent?e.nodeSymbol(s.parent).getFiltered(t):void 0,r=s.name?e.nodeReferee(s.name).getFiltered(t):void 0,i=n||r;if(i){let t=Wy(e,i,[L.Column]);return $f(a)?Ty(t):t}}switch(o){case Q.INDEXES:return ub(e,n,i);case Q.REF:for(;c.length>0;){let t=c.pop();if(t instanceof im&&t.op?.value===`.`)return Qy(e,n,i,t)}return ib(e,n,i);default:break}return Z()}function qy(e,t,n){return e.container.scopeKind(t,n)===Q.RECORDS?Gy(e,t,n,e.container.element(t,n),[L.Schema,L.Enum,L.EnumField]):Z()}function Jy(e,t,n,r){let{token:i}=e.container.token(t,n);if([v.COMMA,v.LBRACKET].includes(i?.kind)){let r=Yy(e,t,n);return i?.kind===v.COMMA&&Sy(i,n)?Cy(r):r}if(r.name&&r.name.start<=n&&r.name.end>=n)return Yy(e,t,n);if(r.name instanceof rm){let a=Xy(e,t,n,Zf(r.name)??``);return i?.kind===v.COLON&&Sy(i,n)?Cy(a):a}return Z()}function Yy(e,t,n){let r=e.container.element(t,n);if(r instanceof z)return Z();let a=e.container.scopeKind(t,n);if(r.body&&!hy(n,r.body)){let e;switch(a){case Q.TABLE:case Q.TABLEPARTIAL:e=[i.HeaderColor,i.Note];break;case Q.TABLEGROUP:e=[i.Color,i.Note];break;case Q.NOTE:e=[i.Color];break;default:e=[]}return{suggestions:e.map(e=>({label:e,insertText:`${e}: `,kind:Y.Field,insertTextRules:X.KeepWhitespace,range:void 0}))}}switch(a){case Q.TABLE:case Q.TABLEPARTIAL:return{suggestions:[...[i.PK,i.PrimaryKey,i.Null,i.NotNull,i.Increment,i.Unique].map(e=>({label:e,insertText:e,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0})),...[i.Ref,i.Default,i.Note,i.Check].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.ENUM:return{suggestions:[...[i.Note].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.INDEXES:return{suggestions:[...[i.Unique,i.PK].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Property,range:void 0})),...[i.Note,i.Name,i.Type].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.REF:return{suggestions:[{label:i.Inactive,insertText:i.Inactive,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0},...[i.Update,i.Delete,i.Color].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))]};case Q.CHECKS:return{suggestions:[i.Name].map(e=>({label:e,insertText:`${e}: `,kind:Y.Property,insertTextRules:X.KeepWhitespace,range:void 0}))};default:break}return Z()}function Xy(e,t,n,r){switch(r?.toLowerCase()){case`update`:case`delete`:return{suggestions:[`cascade`,`set default`,`set null`,`restrict`].map(e=>({label:e,insertText:e,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};case`type`:return{suggestions:[`btree`,`hash`].map(e=>({label:e,insertText:`${e}`,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};case`color`:if(e.container.scopeKind(t,n)===Q.NOTE)return{suggestions:[So].map(e=>({label:e,insertText:e,kind:Y.Value,insertTextRules:X.KeepWhitespace,range:void 0}))};break;case`default`:return Gy(e,t,n,e.container.element(t,n),[L.Schema,L.Enum]);default:break}return Z()}function Zy(e,n,r){if(!r)return[];let i=[],a=r;for(;a;){let n=e.nodeSymbol(a).getFiltered(t);if(n){let r=e.symbolMembers(n).getFiltered(t);i.push(...r||[])}a=a instanceof B?a.parent:void 0}for(let e of n){let t=i.filter(t=>t.name===e);if(t.length===0)return[];i=t}return i}function Qy(e,n,r,i){let a=tp(i)??[];return a.pop(),a.some(e=>!k(e))?Z():wy({suggestions:Zy(e,a.map(e=>F(e)),e.container.element(n,r)).flatMap(n=>e.symbolMembers(n).getFiltered(t)||[]).flatMap(e=>{let t=e.name;return t===void 0?[]:{label:t,insertText:t,kind:xy(e.kind),range:void 0}})})}function $y(e,t,n,i){switch(e.container.scopeKind(t,n)){case Q.TABLE:case Q.TABLEPARTIAL:return nb(e,t,n,i);case Q.PROJECT:return rb(e,t,n,i);case Q.INDEXES:return cb(e,t,n);case Q.ENUM:return tb(e,t,n,i);case Q.REF:{let r=ib(e,t,n);return e.container.token(t,n).token?.kind===v.COLON&&Sy(e.container.token(t,n).token,n)?Cy(r):r}case Q.TABLEGROUP:return sb(e,t);case Q.DIAGRAMVIEW:return pb();case Q.CUSTOM:{let i=e.container.element(t,n);if(i instanceof B){let a=i.parentNode,o=a instanceof W?a.parentNode:void 0;if(o instanceof B&&o.isKind(r.DiagramView))return mb(e,t,n,i)}return Z()}default:return Z()}}function eb(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`,`Records`,`DiagramView`,`Note`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function tb(e,t,n,r){return r?.callee&&db(n,r)===1?Gy(e,t,n,e.container.element(t,n),[L.Schema,L.Table,L.Column]):Z()}function nb(e,t,n,r){let i=[`Note`,`indexes`,`checks`,`Records`];if(!r?.callee)return{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))};let a=db(n,r);return a===0?{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:a===1?lb(e,t,n):Z()}function rb(e,t,n,r){return!r?.callee||db(n,r)===0?{suggestions:[`Table`,`TableGroup`,`Enum`,`Note`,`Ref`,`TablePartial`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:Z()}function ib(e,t,n){return Gy(e,t,n,e.container.element(t,n),[L.Schema,L.Table,L.Column])}function ab(e,t,n,i){return i.isKind(r.Records)?Gy(e,t,n,i.parent,[L.Schema,L.Table]):Z()}function ob(e,n,i,a){let o=e.container.element(n,i),s=a.callee&&hy(i,a.callee),c=a.argumentList&&hy(i,a.argumentList);if(o instanceof B&&o.isKind(r.Records)&&gy(i,o)){if(s)return Gy(e,n,i,o.parent,[L.Schema,L.Table]);if(!c)return Z();let r=a.callee;if(!r)return Z();let l=tp(r)??[r],u=l[l.length-1],d=u?e.nodeReferee(u).getFiltered(t):void 0;if(!d)return Z();let f=Wy(e,d,[L.Column]),{argumentList:p}=a;return!p||!$f(p)?f:Ty(f)}let l=[...e.container.stack(n,i)];for(let o of l){if(!c||!(o instanceof U)||o.callee!==a||(F(a.callee)??``).toLowerCase()!==r.Records)continue;let s=e.nodeSymbol(e.container.element(n,i)).getFiltered(t);if(!s)return Z();let l=Wy(e,s,[L.Column]),{argumentList:u}=a;return!u||!$f(u)?l:Ty(l)}return Z()}function sb(e,t){return{suggestions:[...wy({suggestions:(e.parse.publicSymbolTable(t)??[]).flatMap(e=>{if(e.kind!==L.Table&&e.kind!==L.Schema)return[];let t=e.name;return t===void 0||e instanceof Mp&&e.isPublicSchema()?[]:{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:xy(e.kind),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))]}}function cb(e,t,n){return ub(e,t,n)}function lb(e,t,n){return{suggestions:[...`integer.int.tinyint.smallint.mediumint.bigint.bit.bool.binary.varbinary.logical.char.nchar.varchar.varchar2.nvarchar.nvarchar2.binary_float.binary_double.float.double.decimal.dec.real.money.smallmoney.enum.tinyblob.tinytext.blob.text.mediumblob.mediumtext.longblob.longtext.ntext.set.inet6.uuid.image.date.time.datetime.datetime2.timestamp.year.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`).map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.TypeParameter,sortText:Y.TypeParameter.toString().padStart(2,`0`),range:void 0})),...Gy(e,t,n,e.container.element(t,n),[L.Enum,L.Schema]).suggestions]}}function ub(e,n,r){let i=e.container.element(n,r)?.parent,a=i?e.nodeSymbol(i).getFiltered(t):void 0;if(!a||!a?.isKind(L.Table))return Z();let o=e.symbolMembers(a).getFiltered(t);return o?wy({suggestions:o.flatMap(n=>{let r=n.declaration?e.nodeFullname(n.declaration):void 0,i=r&&!r.hasValue(t)?r.getValue()?.at(-1):void 0;return i?{label:i,insertText:i,insertTextRules:X.KeepWhitespace,kind:xy(L.Column),range:void 0}:[]})}):Z()}function db(e,t){if(!t.callee)return-1;let n=[t.callee,...t.args],r=n.findIndex(t=>e<=t.end);return r===-1?n.length:r}var fb={label:`*`,insertText:`*`,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0};function pb(){return{suggestions:[...[`Tables`,`TableGroups`,`Notes`,`Schemas`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0})),fb]}}function mb(e,t,n,i){switch(i.getElementKind()){case r.DiagramViewTables:return{suggestions:[fb,...Gy(e,t,n,e.parse.ast(t),[L.Table,L.Schema]).suggestions]};case r.DiagramViewTableGroups:return{suggestions:[fb,...Gy(e,t,n,e.parse.ast(t),[L.TableGroup]).suggestions]};case r.DiagramViewSchemas:return{suggestions:[fb,{label:y,insertText:y,insertTextRules:X.KeepWhitespace,kind:Y.Module,range:void 0},...Gy(e,t,n,e.parse.ast(t),[L.Schema]).suggestions]};case r.DiagramViewNotes:return{suggestions:[fb,...Gy(e,t,n,e.parse.ast(t),[L.StickyNote]).suggestions]};default:return Z()}}var hb={comments:{lineComment:`//`,blockComment:[`/*`,`*/`]},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`},{open:"`",close:"`"}],indentationRules:{increaseIndentPattern:/^(.*\{[^}]*|\s*[{[].*)$/,decreaseIndentPattern:/^(.*\}.*|\s*[}\]].*)$/}},gb={tokenPostfix:`.dbml`,brackets:[{open:`[`,close:`]`,token:`delimiter.square`},{open:`(`,close:`)`,token:`delimiter.parenthesis`},{open:`{`,close:`}`,token:`delimiter.curly`}],decls:[`project`,`tablegroup`,`table`,`enum`,`ref`,`note`,`tablepartial`,`records`,`checks`,`diagramview`,`use`,`reuse`,`from`],dataTypes:`TINYINT.SMALLINT.MEDIUMINT.INT.INTEGER.BIGINT.FLOAT.DOUBLE.DECIMAL.DEC.BIT.BOOL.REAL.MONEY.BINARY_FLOAT.BINARY_DOUBLE.smallmoney.ENUM.CHAR.BINARY.VARCHAR.VARBINARY.TINYBLOB.TINYTEXT.BLOB.TEXT.MEDIUMBLOB.MEDIUMTEXT.LONGBLOB.LONGTEXT.SET.INET6.UUID.NVARCHAR.NCHAR.NTEXT.IMAGE.VARCHAR2.NVARCHAR2.DATE.TIME.DATETIME.DATETIME2.TIMESTAMP.YEAR.smalldatetime.datetimeoffset.XML.sql_variant.uniqueidentifier.CURSOR.BFILE.CLOB.NCLOB.RAW`.split(`.`),settings:[`indexes`,`ref`,`note`,`headercolor`,`pk`,`null`,`increment`,`unique`,`default`,`note`,`primary`,`key`,`name`,`as`,`color`,`none`,`check`,`tables`,`tablegroups`,`notes`,`schemas`,`inactive`],symbols:/[=><!~?:&|+\-/^%]+/,escapes:/\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/,newline:/[\r\n]/,digits:/\d+(_+\d+)*/,idtf:/[\p{L}0-9_]+/u,ignoreCase:!0,unicode:!0,tokenizer:{root:[[/[{}[\]()]/,`@bracket`],[/[,.:]/,`delimiter`],{include:`@numbers`},{include:`common`}],common:[{include:`@whitespace`},[/[<>~-]/,`operators`],[/\*/,`keyword.wildcard`],[/("[^"\\]*(?:\\.[^"\\]*)*")(\s+)(@idtf(?:\.@idtf*)*)/,[`string`,``,`keyword`]],[/"([^"\\]|\\.)*$/,``],[/'([^'\\]|\\.)*$/,``],[/"/,`string`,`@string_double`],[/'/,`string`,`@string_single`],[/`/,`string`,`@string_backtick`],[/(@idtf)(\s+)(@idtf(?:\.@idtf)*)/,{cases:{"$1@decls":[`keyword`,``,`identifier`],"$1==not":{cases:{"$3==null":[`keyword`,``,`keyword`],"@default":[`identifier`,``,`identifier`]}},"@default":[`identifier`,``,`keyword`]}}],[/@idtf/,{cases:{"@dataTypes":`keyword`,"@decls":`keyword`,"@settings":`keyword`,"@default":`identifier`}}]],numbers:[[/0[xX][0-9a-fA-F]*/,`number`],[/[$][+-]*\d*(\.\d*)?/,`number`],[/((\d+(\.\d*)?)|(\.\d+))([eE][-+]?\d+)?/,`number`],[/#([0-9A-F]{3}){1,2}/,`number.hex`]],string_double:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],string_single:[[/[^\\']+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/'/,`string`,`@pop`]],string_backtick:[[/[^\\`$]+/,`string`],[/@escapes/,`string.escape`],[/`/,`string`,`@pop`]],endTripleQuotesString:[[/\\'/,`string`],[/(.*[^\\])?(\\\\)*'''/,`string`,`@popall`],[/.*$/,`string`]],whitespace:[[/[ \t\r\n]+/,``],[/\/\*/,`comment`,`@comment`],[/\/\/.*$/,`comment`],[/'''(.*[^\\])?(\\\\)*'''/,`string`],[/'''.*$/,`string`,`@endTripleQuotesString`]],comment:[[/[^/*]+/,`comment`],[/\*\//,`comment`,`@pop`],[/[/*]/,`comment`]]}};function _b(e,t){let n=this.token.flatStream(e),{index:r,token:i}=this.container.token(e,t),a=r===void 0?-1:_a(n,e=>!e.isInvalid,r);if(a===-1)return[this.parse.ast(e)];let o=n[a].start,s=this.parse.ast(e),c=[s];for(;;){let e=Fm(s).find(e=>hy(o,e));if(e===void 0||e instanceof Va)break;c.push(e),s=e}if(i?.kind===v.COLON)return c;for(;c.length>0;){let n=!1,r=g(c);if(r instanceof U){let i=this.getSource(e)||``;for(let e=r.end;e<t;e+=1)i[e]===`
12
+ `&&(c.pop(),n=!0)}else r instanceof H||r instanceof im?this.container.token(e,t).token!==r.op&&(c.pop(),n=!0):r instanceof G?r.listCloseBracket&&r.end<=t&&(c.pop(),n=!0):r instanceof sm?r.tupleCloseParen&&r.end<=t&&(c.pop(),n=!0):r instanceof cm?r.end<=t&&(c.pop(),n=!0):r instanceof W?r.blockCloseBrace&&r.end<=t&&(c.pop(),n=!0):r instanceof rm||r.end<t&&(c.pop(),n=!0);if(n){let e=g(c);e instanceof B&&e.end<=t&&c.pop()}if(!n)break}return c}function vb(e,t){let n=this.token.flatStream(e).findIndex(e=>e.start>=t);return n===void 0||n<=0?{token:void 0,index:void 0}:{token:this.token.flatStream(e)[n-1],index:n-1}}function yb(e,t){let n=this.container.stack(e,t);for(let e=n.length-1;e>=0;--e)if(n[e]instanceof B)return n[e];return this.parse.ast(e)}function bb(e,n){let r=this.container.element(e,n);if(!r)return;let i=this.nodeSymbol(r);if(i.hasValue(t))return;let a=this.symbolMembers(i.getValue());if(!a.hasValue(t))return a.getValue()}var Q=function(e){return e[e.TABLE=0]=`TABLE`,e[e.ENUM=1]=`ENUM`,e[e.TABLEGROUP=2]=`TABLEGROUP`,e[e.INDEXES=3]=`INDEXES`,e[e.NOTE=4]=`NOTE`,e[e.REF=5]=`REF`,e[e.PROJECT=6]=`PROJECT`,e[e.CUSTOM=7]=`CUSTOM`,e[e.TOPLEVEL=8]=`TOPLEVEL`,e[e.TABLEPARTIAL=9]=`TABLEPARTIAL`,e[e.CHECKS=10]=`CHECKS`,e[e.RECORDS=11]=`RECORDS`,e[e.DIAGRAMVIEW=12]=`DIAGRAMVIEW`,e}({});function xb(e,t){let n=this.container.element(e,t);if(n instanceof z)return Q.TOPLEVEL;switch(n.type?.value.toLowerCase()){case`table`:return Q.TABLE;case`enum`:return Q.ENUM;case`ref`:return Q.REF;case`tablegroup`:return Q.TABLEGROUP;case`indexes`:return Q.INDEXES;case`note`:return Q.NOTE;case`project`:return Q.PROJECT;case`tablepartial`:return Q.TABLEPARTIAL;case`checks`:return Q.CHECKS;case`records`:return Q.RECORDS;case`diagramview`:return Q.DIAGRAMVIEW;default:return Q.CUSTOM}}function Sb(e,t){let r=t.originalSymbol;if(r.filepath.equals(e))return n.create(wb(this,r));let i=[...this.symbolUses(r).getValue(),...this.symbolAliases(r).getValue()].filter(t=>t.filepath.equals(e));for(let e of i){let t=e.name;if(!t)continue;if(t!==r.name)return n.create({schema:``,name:t});let i=Cb(this,e);if(i.length>0)return n.create({schema:i.join(`.`),name:t});let a=wb(this,r);return a?n.create({...a,name:t}):n.create({schema:y,name:t})}return n.create(wb(this,r))}function Cb(e,t){let n=[],r=t;for(;r;){let t=e.symbolParent(r).find(e=>e instanceof Mp&&e.isKind(L.Schema));if(!t||t.isPublicSchema())break;n.unshift(t.name??``),r=t}return n}function wb(e,n){if(!n.declaration)return n.name?{schema:y,name:n.name}:void 0;let r=e.nodeFullname(n.declaration).getFiltered(t);if(!r||r.length===0)return n.name?{schema:y,name:n.name}:void 0;let i=r[r.length-1];return{schema:r.length>1?r.slice(0,-1).join(`.`):y,name:i}}function Tb(e){let{ast:t}=this.parseFile(e).getValue(),n=[],r=new Set;for(let i of t.body){if(!(i instanceof em)||!i.importPath)continue;let t=bo(e,i.importPath.value);!t||r.has(t.absolute)||(r.add(t.absolute),n.push(t))}return n}function Eb(e,t){let n=new Set,r=[],i=[...t],a=0;for(;a<i.length;){let t=i[a++],o=t.intern();if(!n.has(o)){n.add(o),r.push(t);for(let n of e.fileDependencies(t))i.push(n)}}return r}function Db(e){return Eb(this,e?[e]:this.layout.getEntrypoints())}function Ob(e){return this.bindFile(e),this.parseFile(e).getValue().ast}function kb(e){return this.interpretFile(e).getErrors()}function Ab(e){return this.interpretFile(e).getWarnings()}function jb(e){return this.parseFile(e).getValue().tokens}function Mb(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.interpretSymbol(r,e).getFiltered(t)}function Nb(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.symbolMembers(r).getFiltered(t)}function Pb(e){return this.parseFile(e).getValue().tokens.flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function Fb(e){return this.parseFile(e).getValue().tokens.filter(Qa)}function Ib(e,t){let n=this.parse.ast(e);for(;;){let e=Fm(n).find(e=>hy(t,e));if(e===void 0)return n;if(e instanceof Va)return e;n=e}}function Lb(e){let t=this.validateFile(e),r=this.parseFile(e).getValue().ast,i=this.bindNode(r).map(()=>void 0);return new n(void 0,[...t.getErrors(),...i.getErrors()],[...t.getWarnings(),...i.getWarnings()])}function Rb(){let e=Ig(this,this.layout.getEntrypoints()),t=new Map;for(let n of e){let e=this.bindFile(n);t.set(n.absolute,e)}return t}function zb(e){let{ast:r}=this.parseFile(e).getValue(),i=this.nodeSymbol(r).getFiltered(t);return i?this.interpretSymbol(i,e).map(e=>e===t||!e?void 0:e):n.create(void 0)}function Bb(){let e=[],r=[],i=[],a=new Set,o=[];for(let e of this.layout.getEntrypoints())for(let t of this.reachableFiles(e)){let e=t.intern();a.has(e)||(a.add(e),o.push(t))}let s=new Map;for(let a of o){let o=this.parseFile(a);e.push(...o.getErrors()),r.push(...o.getWarnings()),i.push(...o.getInfos());let c=this.bindFile(a);e.push(...c.getErrors()),r.push(...c.getWarnings()),i.push(...c.getInfos());let{ast:l}=o.getValue(),u=this.nodeSymbol(l).getFiltered(t),d=u?this.interpretSymbol(u,a):n.create(t),f=d.getFiltered(t);f&&s.set(a.absolute,f),e.push(...d.getErrors()),r.push(...d.getWarnings()),i.push(...d.getInfos())}let c={};for(let[e,t]of s)c[e]=t;return new n({files:c},e,r,i)}function Vb(e){return this.parseFile(e).chain(({ast:e})=>this.validateNode(e).map(()=>void 0))}var Hb=class{constructor(e,t){this.start={offset:0,line:0,column:0},this.current={offset:0,line:0,column:0},this.tokens=[],this.errors=[],this.text=e,this.filepath=t}isAtEnd(){return this.current.offset>=this.text.length}advance(){let e=this.peek();return this.current={...this.current},e===`
13
+ `?(this.current.line+=1,this.current.column=0):this.current.column+=1,this.current.offset+=1,e}peek(e=0){if(!(this.current.offset+e>=this.text.length))return this.text[this.current.offset+e]}check(e){for(let t=0;t<e.length;t+=1)if(e[t]!==this.peek(t))return!1;return!0}match(e){return this.check(e)?(e.split(``).forEach(()=>this.advance()),!0):!1}addToken(e,t=!1){this.tokens.push(this.createToken(e,t))}createToken(e,t=!1){return Va.create(e,this.filepath,this.start,this.current,this.text.substring(this.start.offset,this.current.offset),t)}lex(){return this.scanTokens(),this.tokens.push(Va.create(v.EOF,this.filepath,this.start,this.current,``,!1)),this.gatherTrivia(),this.gatherInvalid(),new n(this.tokens,this.errors)}scanTokens(){for(;!this.isAtEnd();){let e=this.advance();switch(e){case` `:this.addToken(v.SPACE);break;case`\r`:break;case`
14
+ `:this.addToken(v.NEWLINE);break;case` `:this.addToken(v.TAB);break;case`,`:this.addToken(v.COMMA);break;case`(`:this.addToken(v.LPAREN);break;case`)`:this.addToken(v.RPAREN);break;case`[`:this.addToken(v.LBRACKET);break;case`]`:this.addToken(v.RBRACKET);break;case`{`:this.addToken(v.LBRACE);break;case`}`:this.addToken(v.RBRACE);break;case`;`:this.addToken(v.SEMICOLON);break;case`:`:this.addToken(v.COLON);break;case`'`:this.match(`''`)?this.multilineStringLiteral():this.singleLineStringLiteral();break;case`"`:this.quotedVariable();break;case"`":this.functionExpression();break;case`#`:this.colorLiteral();break;case`/`:this.match(`/`)?this.singleLineComment():this.match(`*`)?this.multilineComment():this.operator(e);break;case`*`:this.addToken(v.WILDCARD);break;default:if(za(e)){this.operator(e);break}if(yf(e)){this.identifier();break}if(bf(e)){this.numericLiteralOrIdentifier();break}this.addToken(v.OP,!0),this.errors.push(new E(T.UNKNOWN_SYMBOL,`Unexpected token '${e}'`,this.createToken(v.OP,!0)));break}this.start={...this.current}}}gatherTrivia(){let e=!0,t=[],n,r=[];for(let i of this.tokens)Ra(i)?(t.push(i),i.kind===v.NEWLINE&&n&&(n.trailingTrivia=t,e=!0,n=void 0,t=[])):(e?i.leadingTrivia=t:n.trailingTrivia=t,r.push(i),t=[],n=i,e=!1);this.tokens=r}gatherInvalid(){let e,t=[],n=[];for(e=0;e<this.tokens.length&&Qa(this.tokens[e]);e+=1)n.push(this.tokens[e]);let r=this.tokens[e];for(r.leadingInvalid=[...n,...r.leadingInvalid];e<this.tokens.length;e+=1){let n=this.tokens[e];Qa(n)?r.trailingInvalid.push(n):(r=n,t.push(n))}this.tokens=t}consumeUntil(e,t,{allowNewline:n,allowEof:r,raw:i,consumeStopSequence:a=!0}){let o=``;for(;!this.isAtEnd()&&(n||!this.check(`
15
+ `))&&!this.check(t);)this.peek()===`\\`&&!i?(this.advance(),o+=this.escapedString()):o+=this.advance();if(this.isAtEnd()&&!r){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new E(T.UNEXPECTED_EOF,`EOF reached while parsing`,t));return}if(this.check(`
16
+ `)&&!n){let t=this.createToken(e,!0);this.tokens.push(t),this.errors.push(new E(T.UNEXPECTED_NEWLINE,`Invalid newline encountered while parsing`,t));return}a&&this.match(t),this.tokens.push(Va.create(e,this.filepath,this.start,this.current,o,!1))}singleLineStringLiteral(){this.consumeUntil(v.STRING_LITERAL,`'`,{allowNewline:!1,allowEof:!1,raw:!1})}multilineStringLiteral(){this.consumeUntil(v.STRING_LITERAL,`'''`,{allowNewline:!0,allowEof:!1,raw:!1})}functionExpression(){this.consumeUntil(v.FUNCTION_EXPRESSION,"`",{allowNewline:!0,allowEof:!1,raw:!0})}quotedVariable(){this.consumeUntil(v.QUOTED_STRING,`"`,{allowNewline:!1,allowEof:!1,raw:!1})}singleLineComment(){this.consumeUntil(v.SINGLE_LINE_COMMENT,`
17
+ `,{allowNewline:!0,allowEof:!0,raw:!0,consumeStopSequence:!1})}multilineComment(){this.consumeUntil(v.MULTILINE_COMMENT,`*/`,{allowNewline:!0,allowEof:!1,raw:!0})}identifier(){for(;!this.isAtEnd()&&Sf(this.peek());)this.advance();this.addToken(v.IDENTIFIER)}operator(e){switch(e){case`<`:this.peek()===`=`?this.advance():(this.peek()===`>`&&this.advance(),this.peek()===`?`&&this.advance());break;case`>`:(this.peek()===`=`||this.peek()===`?`)&&this.advance();break;case`-`:this.peek()===`?`&&this.advance();break;case`?`:this.peek()===`-`?(this.advance(),this.peek()===`?`&&this.advance()):this.peek()===`<`?(this.advance(),this.peek()===`>`&&this.advance(),this.peek()===`?`&&this.advance()):this.peek()===`>`&&(this.advance(),this.peek()===`?`&&this.advance());break;case`=`:this.peek()===`=`&&this.advance();break;case`!`:this.peek()===`=`&&this.advance();break;default:break}this.addToken(v.OP)}numericLiteralOrIdentifier(){let e=0;if(this.isAtEnd())return this.addToken(v.NUMERIC_LITERAL);for(;!this.isAtEnd();){let t=this.check(`.`);if(e+=+!!t,e>1)break;if(this.check(`e`)||this.check(`E`)){let e=this.peek(1),t=e===`+`||e===`-`,n=t?this.peek(2):e;if(n&&bf(n)){for(this.advance(),t&&this.advance();!this.isAtEnd()&&bf(this.peek());)this.advance();if(this.isAtEnd()||!Sf(this.peek()))return this.addToken(v.NUMERIC_LITERAL);break}break}if(!t&&this.current.offset===this.text.length-1)return this.advance(),this.addToken(v.NUMERIC_LITERAL);if(!t&&!Sf(this.peek()))return this.addToken(v.NUMERIC_LITERAL);if(!t&&!bf(this.peek()))break;this.advance()}if(e>0){for(;!this.isAtEnd()&&(this.check(`.`)||Sf(this.peek()));)this.advance();let e=this.createToken(v.NUMERIC_LITERAL,!0);this.tokens.push(e),this.errors.push(new E(T.UNKNOWN_TOKEN,`Invalid number`,e))}else{for(;!this.isAtEnd()&&Sf(this.peek());)this.advance();let e=this.createToken(v.IDENTIFIER,!1);this.tokens.push(e)}}colorLiteral(){for(;!this.isAtEnd()&&Sf(this.peek());)this.advance();this.addToken(v.COLOR_LITERAL)}escapedString(){let e={column:this.current.column-1,offset:this.current.offset-1,line:this.current.line};if(this.isAtEnd())return`\\`;switch(this.advance()){case`\r`:return this.check(`
18
18
  `)&&this.advance(),``;case`
19
19
  `:return``;case`t`:return` `;case`n`:return`
20
- `;case`\\`:return`\\`;case`r`:return`\r`;case`'`:return`'`;case`"`:return`"`;case"`":return"`";case`0`:return`\0`;case`b`:return`\b`;case`v`:return`\v`;case`f`:return`\f`;case` `:return`\\ `;case`u`:{let t=``;for(let n=0;n<=3;n+=1){if(this.isAtEnd()||!xf(this.peek()))return this.errors.push(new T(w.INVALID_ESCAPE_SEQUENCE,`Invalid unicode escape sequence '\\u${t}', only unicode escape sequences of the form '\\uHHHH' where H is a hexadecimal number are allowed`,Ha.create(_.STRING_LITERAL,this.filepath,e,this.current,`\\u${t}`,!0))),`\\u${t}`;t+=this.advance()}return String.fromCharCode(parseInt(t,16))}default:return this.text[this.current.offset-1]}}},Vb=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({}),Hb=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===0&&(this.numberOfNestedLBrackets+=1),e===1&&(this.numberOfNestedLParens+=1),e===2&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===0&&--this.numberOfNestedLBrackets,e===1&&--this.numberOfNestedLParens,e===2&&--this.numberOfNestedLBraces,e}top(){return h(this.stack)}isWithinGroupExpressionContext(){return this.numberOfNestedLParens>0}isWithinListExpressionContext(){return this.numberOfNestedLBrackets>0}isWithinBlockExpressionContext(){return this.numberOfNestedLBraces>0}withContextDo(e,t){return()=>{this.push(e);try{return t()}finally{this.pop()}}}findHandlerContext(e,t){if(!(this.numberOfNestedLBraces<=0&&this.numberOfNestedLBrackets<=0&&this.numberOfNestedLParens<=0))for(let n=t;n<e.length-1;n+=1)switch(e[n].kind){case _.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[1,0].includes(e));break;case _.RPAREN:if(this.isWithinGroupExpressionContext())return 1;break;case _.RBRACE:if(this.isWithinBlockExpressionContext())return 2;break;case _.RBRACKET:if(this.isWithinListExpressionContext())return 0;break;default:break}}},Ub=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},$=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},Wb=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new Hb,this.useSpecifierList=this.contextStack.withContextDo(Vb.BlockExpression,()=>{let e={specifiers:[]},t=()=>this.nodeFactory.create(tm,e);try{this.consume(`Expect an opening brace '{'`,_.LBRACE),e.openBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}for(;!this.isAtEnd()&&!this.check(_.RBRACE);){try{e.specifiers.push(this.useSpecifier())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof em&&e.specifiers.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeUseSpecifierList()}if(this.check(_.IDENTIFIER)&&Za(this.peek()))break;!Ua(this.previous())&&!this.check(_.RBRACE)&&this.logError(this.peek(),w.MISSING_SPACES,`Expect a newline between use specifiers`)}try{this.consume(`Expect a closing brace '}'`,_.RBRACE),e.closeBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}return t()}),this.synchronizeUseSpecifierList=()=>{if(!this.check(_.RBRACE))for(K(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(_.RBRACE)||this.check(_.STRING_LITERAL)||this.check(_.IDENTIFIER)&&Za(e)||Wa(this.previous(),e))break;K(e),this.advance()}},this.synchronizeProgram=()=>{let e=this.peek();e.kind===_.EOF?this.logError(e,w.UNEXPECTED_EOF,`Unexpected EOF`):K(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(Ya(e)||this.check(_.COLON,_.LBRACE,_.LBRACKET))break;K(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(_.COLON,_.LBRACE,_.LBRACKET))break;K(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(Vb.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(U,e);try{this.consume(`Expect an opening brace '{'`,_.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(_.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof $))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,_.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(_.RBRACE))for(K(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(_.RBRACE)||Wa(this.previous(),e))break;K(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(Vb.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(cm,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(om,e);try{this.consume(`Expect an opening parenthesis '('`,_.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(_.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(_.RPAREN);)try{this.consume(`Expect a comma ','`,_.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof $))throw t;if(t.partialNode instanceof L&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new $(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,_.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}return e.elementList.length===1?t():n()}),this.synchronizeTuple=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(_.RPAREN,_.COMMA))break;K(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(Vb.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(W,e);try{this.consume(`Expect an opening bracket '['`,_.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(_.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(_.RBRACKET);)try{this.consume(`Expect a comma ','`,_.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof L&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,_.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(_.COMMA,_.RBRACKET))break;K(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(_.COMMA,_.RBRACKET,_.COLON))break;K(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(_.COMMA,_.RBRACKET))break;K(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new Ub(n,r),this.filepath=r}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===_.EOF}advance(){return this.isAtEnd()?h(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?h(this.tokens):this.tokens[this.current+e]}match(...e){let t=this.check(...e);return t&&this.advance(),t}check(...e){let t=this.peek();return e.includes(t.kind)}previous(){return this.tokens[this.current-1]}canHandle(e){return e.handlerContext===void 0||e.handlerContext===this.contextStack.top()}consume(e,...t){if(!this.match(...t))throw this.logError(this.peek(),w.UNEXPECTED_TOKEN,e),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(K(this.peek()),this.logError(this.advance(),w.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)K(this.advance());return!this.isAtEnd()}return!0}gatherInvalid(){let e=[],t=[],n,r=0;for(;r<this.tokens.length&&this.tokens[r].isInvalid;r+=1)t.push(this.tokens[r]);for(n=this.tokens[r],n.leadingInvalid=[...t,...n.leadingInvalid],e.push(n),r+=1;r<this.tokens.length;r+=1){let t=this.tokens[r];t.isInvalid?n.trailingInvalid.push(t):(n=t,e.push(n))}this.tokens=e}parse(){let e=this.program(),t=this.advance(),r=this.nodeFactory.create(R,{body:e,eof:t,source:this.source});return this.gatherInvalid(),this.assignParents(r),new n({ast:r,tokens:this.tokens},this.errors)}assignParents(e){Nm(e).forEach(t=>{t instanceof L&&(t.parentNode=e,this.assignParents(t))})}program(){let e=[];for(;!this.isAtEnd();)if(Xa(this.peek())||Qa(this.peek()))try{e.push(this.useDeclaration())}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof $p&&e.push(t.partialNode),this.synchronizeProgram()}else try{e.push(this.elementDeclaration())}catch(t){if(!(t instanceof $))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}useDeclaration(){let e={},t=()=>this.nodeFactory.create($p,e);if(this.advance(),e.useKeyword=this.previous(),this.peek().kind===_.WILDCARD)this.advance(),e.specifiers=this.nodeFactory.create(um,{token:this.previous()});else try{e.specifiers=this.useSpecifierList()}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof tm&&(e.specifiers=t.partialNode)}let n=e.specifiers instanceof um?`'*'`:`specifier list`;return Za(this.peek())?e.fromKeyword=this.advance():this.logError(this.peek(),w.UNEXPECTED_TOKEN,`Expect 'from' after ${n}`),this.match(_.STRING_LITERAL)?e.importPath=this.previous():this.logError(this.peek(),w.UNEXPECTED_TOKEN,`Expect a string literal path`),t()}useSpecifier(){let e={},t=()=>this.nodeFactory.create(em,e);try{this.consume(`Expect an import kind specifier (e.g. table, enum)`,_.IDENTIFIER),e.importKind=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(this.check(_.IDENTIFIER,_.QUOTED_STRING))try{e.name=this.normalExpression()}catch(n){throw n instanceof $?(n.partialNode instanceof L&&(e.name=n.partialNode),new $(n.token,t(),n.handlerContext)):n}else e.importKind&&this.logError(this.peek(),w.UNEXPECTED_TOKEN,`Expect an element name`);if(Ya(this.peek())){e.asKeyword=this.advance();try{if(!this.check(_.IDENTIFIER,_.QUOTED_STRING))throw this.logError(this.peek(),w.UNEXPECTED_TOKEN,`Expect an alias name after 'as'`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));e.alias=this.normalExpression()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext)}}return t()}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(z,e);try{this.consume(`Expect an identifier`,_.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(!this.check(_.COLON,_.LBRACE,_.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(Ya(this.peek()))if(e.as=this.advance(),this.check(_.COLON,_.LBRACE,_.LBRACKET))this.logError(this.peek(),w.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(_.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof $?(e.attributeList=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,_.LBRACE,_.COLON))return t();try{if(this.match(_.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof z?(K(t),this.logError(t,w.UNEXPECTED_ELEMENT_DECLARATION,`An element's simple body must not be an element declaration`)):e.body=t}else e.body=this.blockExpression()}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(z,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(z,e);try{this.consume(`Expect an identifier`,_.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof $?(e.type=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,_.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof $?(e.bodyColon=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof z?this.errors.push(new T(w.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(z,e)}expression(){let e={args:[]},t=()=>km(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(H,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof $?(e.callee=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){Ga(this.previous())||this.logError(n,w.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof $?(n=r.partialNode,e.args.push(n),new $(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||Ua(this.previous()))return!0;let e=this.peek().kind;return[_.RBRACE,_.RBRACKET,_.RPAREN,_.COMMA,_.COLON].includes(e)}commaExpression(){let e=this.check(_.COMMA)?this.nodeFactory.create(pm,{prevToken:this.previous()}):this.normalExpression();if(!this.check(_.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(pm,{prevToken:this.previous()}));break}if(this.check(_.COMMA)){t.elementList.push(this.nodeFactory.create(pm,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof $?(e.partialNode&&t.elementList.push(e.partialNode),new $(e.token,this.nodeFactory.create(sm,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(_.COMMA));return this.nodeFactory.create(sm,t)}shouldStopCommaExpression(){if(this.isAtEnd()||Ua(this.previous()))return!0;let e=this.peek().kind;return[_.RBRACE,_.LBRACE,_.RBRACKET,_.LBRACKET,_.RPAREN,_.LPAREN,_.COLON].includes(e)}normalExpression(){return this.expression_bp(0)}expression_bp(e){let t=this.leftExpression_bp();for(;!this.isAtEnd();){let n=this.peek();if(n.kind===_.LPAREN){let{left:r}=Xb(n);if(r<e||Wa(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(G,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(G,{callee:t,argumentList:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(n.kind===_.LBRACKET){if(Ga(this.previous()))break;try{t=this.nodeFactory.create(mm,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(mm,{expression:t,indexer:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(Va(n)){let r=n,i=Xb(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(im,{expression:t,op:r})}else{let n=Kb(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(rm,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(rm,{leftExpression:t,op:r,rightExpression:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(Va(this.peek())){let t={};t.op=this.peek();let n=Jb(t.op);if(n.right===null)throw this.logError(t.op,w.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new $(t.op,this.nodeFactory.create(pm,{prevToken:t.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{t.expression=this.expression_bp(n.right)}catch(e){throw e instanceof $?(t.expression=e.partialNode,new $(e.token,this.nodeFactory.create(V,t),e.handlerContext)):e}e=this.nodeFactory.create(V,t)}else if(e=this.extractOperand(),e instanceof pm)throw new $(this.peek(),this.nodeFactory.create(pm,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(_.WILDCARD)?this.wildcardExpression():this.check(_.NUMERIC_LITERAL,_.STRING_LITERAL,_.COLOR_LITERAL,_.QUOTED_STRING,_.IDENTIFIER)?this.primaryExpression():this.check(_.FUNCTION_EXPRESSION)?this.functionExpression():this.check(_.LBRACKET)?this.listExpression():this.check(_.LBRACE)?this.blockExpression():this.check(_.LPAREN)?this.tupleExpression():(this.peek().kind===_.EOF?this.logError(this.peek(),w.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),w.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(pm,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,_.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(am,e),t.handlerContext):t}return this.nodeFactory.create(am,e)}wildcardExpression(){return this.advance(),this.nodeFactory.create(um,{token:this.previous()})}canBeField(){return this.peek().kind===_.IDENTIFIER&&this.peek(1).kind===_.COLON}primaryExpression(){if(this.match(_.COLOR_LITERAL,_.STRING_LITERAL,_.NUMERIC_LITERAL))return this.nodeFactory.create(fm,{expression:this.nodeFactory.create(lm,{literal:this.previous()})});if(this.match(_.QUOTED_STRING,_.IDENTIFIER))return this.nodeFactory.create(fm,{expression:this.nodeFactory.create(dm,{variable:this.previous()})});throw this.logError(this.peek(),w.UNEXPECTED_TOKEN,`Expect a variable or literal`),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(_.COLON,_.RBRACKET,_.COMMA)){let t=this.peek();this.logError(t,w.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(nm,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof $))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new $(t.token,this.nodeFactory.create(B,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(_.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(B,e)}attributeValue(){let e;try{e=this.peek().kind===_.IDENTIFIER&&this.peek(1).kind===_.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof $)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==_.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(_.COLON,_.COMMA,_.RBRACKET);)try{this.consume(`Expect an identifier`,_.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(nm,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(nm,{identifiers:e})}logError(e,t,n){this.errors.push(new T(t,n,e))}},Gb={"+":{left:9,right:10},"-":{left:9,right:10},"/":{left:11,right:12},"%":{left:11,right:12},"<":{left:7,right:8},"<=":{left:7,right:8},">":{left:7,right:8},">=":{left:7,right:8},"<>":{left:7,right:8},"-?":{left:9,right:10},"?-":{left:9,right:10},"?-?":{left:9,right:10},"?>":{left:7,right:8},">?":{left:7,right:8},"?<":{left:7,right:8},"<?":{left:7,right:8},"?>?":{left:7,right:8},"?<?":{left:7,right:8},"?<>":{left:7,right:8},"<>?":{left:7,right:8},"?<>?":{left:7,right:8},"=":{left:2,right:3},"==":{left:4,right:5},"!=":{left:4,right:5},".":{left:16,right:17}};function Kb(e){return Gb[e.value]||{left:null,right:null}}var qb={"+":{left:null,right:15},"-":{left:null,right:15},"<":{left:null,right:15},">":{left:null,right:15},"<>":{left:null,right:15},"-?":{left:null,right:15},"?-":{left:null,right:15},"?-?":{left:null,right:15},"?>":{left:null,right:15},">?":{left:null,right:15},"?<":{left:null,right:15},"<?":{left:null,right:15},"?>?":{left:null,right:15},"?<?":{left:null,right:15},"?<>":{left:null,right:15},"<>?":{left:null,right:15},"?<>?":{left:null,right:15},"!":{left:null,right:15},"~":{left:null,right:15}};function Jb(e){return qb[e.value]||{left:null,right:null}}var Yb={"(":{left:14,right:null}};function Xb(e){return Yb[e.value]||{left:null,right:null}}function Zb(e){let t=this.getSource(e);return new Bb(t??``,e).lex().chain(n=>new Wb(t??``,n,this.nodeIdGenerator,e).parse()).map(({ast:t,tokens:n})=>({ast:t,tokens:n,path:e}))}function Qb(){let e=Pg(this,this.layout.getEntrypoints()),t=new Map;for(let n of e){let e=this.parseFile(n);t.set(n.absolute,e)}return t}function $b(e){let n=this.symbolMembers(e).getFiltered(t),r=new Map;if(n)for(let e of n){let t=e instanceof Yp?cg.visibleName(this,e)?.at(-1):e.name;if(t===void 0)continue;let n=r.get(t);n||(n=[],r.set(t,n)),n.push(e)}return r}function ex(e,n,r){let i;if(e instanceof Ap)i=e;else{let n=this.nodeSymbol(e).getFiltered(t);if(!(n instanceof Ap))return;i=n}let a=Array.isArray(n)?n:[n],o=this.symbolMembersLookupMap(i).get(r);if(o)return o.find(e=>!(a.length===1&&e.kind!==a[0]||a.length>1&&!a.includes(e.kind)))}function tx(e){let t=e.originalSymbol;return Fg(this).map(n=>n.filter(n=>n instanceof Jp&&n.originalSymbol===t&&n!==e))}function nx(){let e=new Map,n=new Map,r=this.parseProject();this.bindProject();let i=new Set,a=(t,n)=>{if(i.has(n))return;i.add(n);let r=t.intern(),a=e.get(r);a||(a=[],e.set(r,a)),a.push(n);let o=t.originalSymbol;if(o!==t){let t=o.intern(),r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}},o=e=>{for(let t of e.owners(this)){let r=t.intern(),i=n.get(r);i||(i=[],n.set(r,i)),i.push(e)}};for(let e of r.values()){let n=e.getValue().ast,r=e=>{if(O(e)){let n=this.nodeReferee(e).getFiltered(t);n&&a(n,e);return}if(e instanceof om&&k(e.parentNode)&&e.parentNode.rightExpression===e){let n=e.parentNode.leftExpression;if(n){let e=qf(n);if(e){let n=this.nodeReferee(e).getFiltered(t);n&&a(n,e)}}}let n=this.nodeMetadata(e).getFiltered(t);n&&o(n);for(let t of Nm(e))t instanceof L&&r(t)};r(n)}let s=new Map,c=new Set;function l(e,n){let r=n.intern();if(c.has(r))return;c.add(r);let i=e.symbolMembers(n).getFiltered(t);if(i)for(let t of i){let r=t.intern(),i=s.get(r);i||(i=[],s.set(r,i)),i.push(n),t instanceof jp&&t.isKind(I.Schema)&&l(e,t)}}for(let e of r.values()){let n=e.getValue().ast,r=this.nodeSymbol(n).getFiltered(t);r&&l(this,r)}return{references:e,metadata:n,parents:s}}function rx(e){return this.resolutionIndex().parents.get(e.intern())??[]}function ix(e){return this.resolutionIndex().references.get(e.intern())??[]}function ax(e){return this.resolutionIndex().metadata.get(e.intern())??[]}function ox(e){let t=e.originalSymbol;return Fg(this).map(n=>n.filter(n=>n instanceof Yp&&n.originalSymbol===t&&n!==e))}function sx(e,t,n=!1){let r=n?t:[...t].sort((e,t)=>t.start-e.start),i=e;for(let{start:e,end:t,newText:n}of r)i=i.substring(0,e)+n+i.substring(t);return i}function cx(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=Ng(e);if(t.length===0)return{schema:v,table:``};if(t.length===1)return{schema:v,table:t[0]};if(t.length===2)return{schema:t[0],table:t[1]};let n=t[t.length-1];return{schema:t.slice(0,-1).join(`.`),table:n}}function lx(e,n,r,i){let a=e.parseFile(n).getValue().ast,o=e.nodeSymbol(a).getFiltered(t);if(!o)return null;if(r===`public`)return e.lookupMembers(o,I.Table,i)??null;let s=e.lookupMembers(o,I.Schema,r);return s?e.lookupMembers(s,I.Table,i)??null:null}function ux(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function dx(e,t){if(!e||!(e instanceof z))return!1;let n=e.name;return n?t.substring(n.start,n.end).includes(`"`):!1}function fx(e,t,n){let r=!Og(t),i=!Og(e),a=n||r,o=n||i;return{schema:e,table:t,formattedSchema:o?`"${e}"`:e,formattedTable:a?`"${t}"`:t,shouldQuoteSchema:o,shouldQuoteTable:a}}function px(e,t,n,r,i,a){return n===i&&r===a?!1:lx(e,t,i,a)!==null}function mx(e,t,n){let r=e.start-1;for(;r>=0&&/\s/.test(n[r]);)r--;if(r<0||n[r]!==`.`)return null;for(r--;r>=0&&/\s/.test(n[r]);)r--;if(r<0)return null;let i,a;if(n[r]===`"`){for(a=r+1,r--;r>=0&&n[r]!==`"`;)r--;if(r<0)return null;i=r}else{for(a=r+1;r>=0&&/[a-zA-Z0-9_]/.test(n[r]);)r--;i=r+1}return ux(n.substring(i,a))===t?{start:i,end:e.end}:null}function hx(e){return e.schema===`public`?e.formattedTable:`${e.formattedSchema}.${e.formattedTable}`}function gx(e,t,n,r,i){let a=[],o=new Set,s=hx(r);for(let r of e){if(ux(i.substring(r.start,r.end))!==n)continue;let e=mx(r,t,i)??{start:r.start,end:r.end},c=`${e.start}-${e.end}`;o.has(c)||(o.add(c),a.push({start:e.start,end:e.end,newText:s}))}return a}function _x(e,n,r){let i=cx(n),a=cx(r),o=i.schema,s=i.table,c=a.schema,l=a.table,u=lx(this,e,o,s);if(!u||u instanceof Jp||px(this,e,o,s,c,l))return new Map;if(u instanceof Yp&&u.useSpecifierDeclaration instanceof em&&u.useSpecifierDeclaration.alias){let n=u.useSpecifierDeclaration;if(this.nodeAlias(n).getFiltered(t)===s)return vx(this,e,n,u,c,l)}return yx(this,u,o,s,c,l)}function vx(e,t,n,r,i,a){let o=e.getSource(t)??``;if(!n.alias)return new Map;let s=fx(i,a,o.substring(n.alias.start,n.alias.end).includes(`"`)),c=[];c.push({start:n.alias.start,end:n.alias.end,newText:s.formattedTable});let l=e.symbolReferences(r);for(let e of l)e.filepath.absolute===t.absolute&&e!==n.alias&&c.push({start:e.start,end:e.end,newText:s.formattedTable});return new Map([[t.absolute,sx(o,c)]])}function yx(e,t,n,r,i,a){let o=t.originalSymbol,s=o.declaration;if(!s||!(s instanceof z))return new Map;let c=s.filepath;if(!c)return new Map;let l=fx(i,a,dx(s,e.getSource(c)??``)),u=new Map,d=(e,t)=>{let n=e.absolute,r=u.get(n);r||(r={fp:e,edits:[]},u.set(n,r)),r.edits.push(t)},f=s.name;f&&d(c,{start:f.start,end:f.end,newText:hx(l)});let p=e.symbolReferences(o);for(let t of p){if(t===f)continue;let i=t.filepath,a=e.getSource(i)??``;for(let e of gx([t],n,r,l,a))d(i,e)}let m=new Map;for(let{fp:t,edits:n}of u.values()){let r=e.getSource(t)??``;m.set(t.absolute,sx(r,n))}return m}function bx(e){let t=[],n=new Bb(e,Eo).lex();if(n.getErrors().length>0)return t;let i=new Wb(e,n.getValue(),new Zp,Eo).parse();if(i.getErrors().length>0)return t;let a=i.getValue().ast;for(let e of a.declarations)if(e.isKind(r.DiagramView)){let n=e.name?M(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function xx(e,t,n){e.push(` ${t} {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function Sx(e,t){e.push(` ${t} { * }`)}function Cx(e){return e==null?`null`:e.length===0?`empty`:`items`}function wx(e,t){let n=`DiagramView ${kg(e)} {`,r=e=>kg(e.name),i=t?.tables?.map(e=>{let t=kg(e.name);return e.schemaName===`public`?t:`${kg(e.schemaName)}.${t}`})??[],a=t?.tableGroups?.map(r)??[],o=t?.schemas?.map(r)??[],s=t?.stickyNotes?.map(r)??[];if(!t)return`${n}\n}`;let c={tables:Cx(t.tables),tableGroups:Cx(t.tableGroups),schemas:Cx(t.schemas),stickyNotes:Cx(t.stickyNotes)};if(Object.values(c).every(e=>e===`null`))return`${n}\n}`;if(Object.values(c).every(e=>e===`empty`))return`${n}\n *\n}`;let l=c.tables===`items`||c.tableGroups===`items`||c.schemas===`items`,u=c.tables===`empty`&&c.tableGroups===`empty`&&c.schemas===`empty`,d=[n];return l?(c.tables===`items`&&xx(d,`Tables`,i),c.tableGroups===`items`&&xx(d,`TableGroups`,a),c.schemas===`items`&&xx(d,`Schemas`,o)):u&&Sx(d,`Tables`),c.stickyNotes===`items`?xx(d,`Notes`,s):c.stickyNotes===`empty`&&Sx(d,`Notes`),d.push(`}`),d.join(`
21
- `)}function Tx(e,t,n){let r=this.getSource(e)??``,i=n??bx(r),a=[];for(let e of t){let t=Ex(r,e,i);a.push(...t)}return a.sort((e,t)=>t.start-e.start),{newDbml:sx(r,a,!0),edits:a}}function Ex(e,t,n){switch(t.operation){case`create`:return Dx(e,t,n);case`update`:return Ox(e,t,n);case`delete`:return kx(e,t,n);default:return[]}}function Dx(e,t,n){if(n.find(e=>e.name===t.name))return Ox(e,t,n);let r=`
20
+ `;case`\\`:return`\\`;case`r`:return`\r`;case`'`:return`'`;case`"`:return`"`;case"`":return"`";case`0`:return`\0`;case`b`:return`\b`;case`v`:return`\v`;case`f`:return`\f`;case` `:return`\\ `;case`u`:{let t=``;for(let n=0;n<=3;n+=1){if(this.isAtEnd()||!Sf(this.peek()))return this.errors.push(new E(T.INVALID_ESCAPE_SEQUENCE,`Invalid unicode escape sequence '\\u${t}', only unicode escape sequences of the form '\\uHHHH' where H is a hexadecimal number are allowed`,Va.create(v.STRING_LITERAL,this.filepath,e,this.current,`\\u${t}`,!0))),`\\u${t}`;t+=this.advance()}return String.fromCharCode(parseInt(t,16))}default:return this.text[this.current.offset-1]}}},Ub=function(e){return e[e.ListExpression=0]=`ListExpression`,e[e.GroupExpression=1]=`GroupExpression`,e[e.BlockExpression=2]=`BlockExpression`,e}({}),Wb=class{constructor(){this.stack=[],this.numberOfNestedLParens=0,this.numberOfNestedLBrackets=0,this.numberOfNestedLBraces=0}push(e){this.stack.push(e),e===0&&(this.numberOfNestedLBrackets+=1),e===1&&(this.numberOfNestedLParens+=1),e===2&&(this.numberOfNestedLBraces+=1)}pop(){let e=this.stack.pop();return e===0&&--this.numberOfNestedLBrackets,e===1&&--this.numberOfNestedLParens,e===2&&--this.numberOfNestedLBraces,e}top(){return g(this.stack)}isWithinGroupExpressionContext(){return this.numberOfNestedLParens>0}isWithinListExpressionContext(){return this.numberOfNestedLBrackets>0}isWithinBlockExpressionContext(){return this.numberOfNestedLBraces>0}withContextDo(e,t){return()=>{this.push(e);try{return t()}finally{this.pop()}}}findHandlerContext(e,t){if(!(this.numberOfNestedLBraces<=0&&this.numberOfNestedLBrackets<=0&&this.numberOfNestedLParens<=0))for(let n=t;n<e.length-1;n+=1)switch(e[n].kind){case v.COMMA:if(this.isWithinGroupExpressionContext()||this.isWithinListExpressionContext())return[...this.stack].reverse().find(e=>[1,0].includes(e));break;case v.RPAREN:if(this.isWithinGroupExpressionContext())return 1;break;case v.RBRACE:if(this.isWithinBlockExpressionContext())return 2;break;case v.RBRACKET:if(this.isWithinListExpressionContext())return 0;break;default:break}}},Gb=class{constructor(e,t){this.generator=e,this.filepath=t}create(e,t){return new e(t,this.generator.nextId(),this.filepath)}},$=class{constructor(e,t,n){this.token=e,this.partialNode=t,this.handlerContext=n}},Kb=class{constructor(e,t,n,r){this.current=0,this.errors=[],this.contextStack=new Wb,this.useSpecifierList=this.contextStack.withContextDo(Ub.BlockExpression,()=>{let e={specifiers:[]},t=()=>this.nodeFactory.create(nm,e);try{this.consume(`Expect an opening brace '{'`,v.LBRACE),e.openBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}for(;!this.isAtEnd()&&!this.check(v.RBRACE);){try{e.specifiers.push(this.useSpecifier())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof tm&&e.specifiers.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeUseSpecifierList()}if(this.check(v.IDENTIFIER)&&Xa(this.peek()))break;!Ha(this.previous())&&!this.check(v.RBRACE)&&this.logError(this.peek(),T.MISSING_SPACES,`Expect a newline between use specifiers`)}try{this.consume(`Expect a closing brace '}'`,v.RBRACE),e.closeBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeUseSpecifierList()}return t()}),this.synchronizeUseSpecifierList=()=>{if(!this.check(v.RBRACE))for(K(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(v.RBRACE)||this.check(v.STRING_LITERAL)||this.check(v.IDENTIFIER)&&Xa(e)||Ua(this.previous(),e))break;K(e),this.advance()}},this.synchronizeProgram=()=>{let e=this.peek();e.kind===v.EOF?this.logError(e,T.UNEXPECTED_EOF,`Unexpected EOF`):K(this.advance())},this.synchronizeElementDeclarationName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(Ja(e)||this.check(v.COLON,v.LBRACE,v.LBRACKET))break;K(e),this.advance()}},this.synchronizeElementDeclarationAlias=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COLON,v.LBRACE,v.LBRACKET))break;K(e),this.advance()}},this.blockExpression=this.contextStack.withContextDo(Ub.BlockExpression,()=>{let e={body:[]},t=()=>this.nodeFactory.create(W,e);try{this.consume(`Expect an opening brace '{'`,v.LBRACE),e.blockOpenBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}for(;!this.isAtEnd()&&!this.check(v.RBRACE);)try{e.body.push(this.canBeField()?this.fieldDeclaration():this.expression())}catch(n){if(!(n instanceof $))throw n;if(e.body.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeBlock()}try{this.consume(`Expect a closing brace '}'`,v.RBRACE),e.blockCloseBrace=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeBlock()}return t()}),this.synchronizeBlock=()=>{if(!this.check(v.RBRACE))for(K(this.advance());!this.isAtEnd();){let e=this.peek();if(this.check(v.RBRACE)||Ua(this.previous(),e))break;K(e),this.advance()}},this.tupleExpression=this.contextStack.withContextDo(Ub.GroupExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(lm,{groupOpenParen:e.tupleOpenParen,groupCloseParen:e.tupleCloseParen,expression:e.elementList[0]}),n=()=>this.nodeFactory.create(sm,e);try{this.consume(`Expect an opening parenthesis '('`,v.LPAREN),e.tupleOpenParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}if(!this.isAtEnd()&&!this.check(v.RPAREN))try{e.elementList.push(this.normalExpression())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeTuple()}for(;!this.isAtEnd()&&!this.check(v.RPAREN);)try{this.consume(`Expect a comma ','`,v.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.normalExpression())}catch(t){if(!(t instanceof $))throw t;if(t.partialNode instanceof R&&e.elementList.push(t.partialNode),!this.canHandle(t))throw new $(t.token,n(),t.handlerContext);this.synchronizeTuple()}try{this.consume(`Expect a closing parenthesis ')'`,v.RPAREN),e.tupleCloseParen=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,n(),e.handlerContext);this.synchronizeTuple()}return e.elementList.length===1?t():n()}),this.synchronizeTuple=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.RPAREN,v.COMMA))break;K(e),this.advance()}},this.listExpression=this.contextStack.withContextDo(Ub.ListExpression,()=>{let e={elementList:[],commaList:[]},t=()=>this.nodeFactory.create(G,e);try{this.consume(`Expect an opening bracket '['`,v.LBRACKET),e.listOpenBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}if(!this.isAtEnd()&&!this.check(v.RBRACKET))try{e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}for(;!this.isAtEnd()&&!this.check(v.RBRACKET);)try{this.consume(`Expect a comma ','`,v.COMMA),e.commaList.push(this.previous()),e.elementList.push(this.attribute())}catch(n){if(!(n instanceof $))throw n;if(n.partialNode instanceof R&&e.elementList.push(n.partialNode),!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeList()}try{this.consume(`Expect a closing bracket ']'`,v.RBRACKET),e.listCloseBracket=this.previous()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext);this.synchronizeList()}return t()}),this.synchronizeList=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COMMA,v.RBRACKET))break;K(e),this.advance()}},this.synchronizeAttributeName=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COMMA,v.RBRACKET,v.COLON))break;K(e),this.advance()}},this.synchronizeAttributeValue=()=>{for(;!this.isAtEnd();){let e=this.peek();if(this.check(v.COMMA,v.RBRACKET))break;K(e),this.advance()}},this.source=e,this.tokens=t,this.nodeFactory=new Gb(n,r),this.filepath=r}isAtEnd(){return this.current>=this.tokens.length||this.tokens[this.current].kind===v.EOF}advance(){return this.isAtEnd()?g(this.tokens):this.tokens[this.current++]}peek(e=0){return e+this.current>=this.tokens.length?g(this.tokens):this.tokens[this.current+e]}match(...e){let t=this.check(...e);return t&&this.advance(),t}check(...e){let t=this.peek();return e.includes(t.kind)}previous(){return this.tokens[this.current-1]}canHandle(e){return e.handlerContext===void 0||e.handlerContext===this.contextStack.top()}consume(e,...t){if(!this.match(...t))throw this.logError(this.peek(),T.UNEXPECTED_TOKEN,e),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}discardUntil(e,...t){if(this.isAtEnd()||!this.check(...t)){for(K(this.peek()),this.logError(this.advance(),T.UNEXPECTED_TOKEN,e);!this.isAtEnd()&&!this.check(...t);)K(this.advance());return!this.isAtEnd()}return!0}gatherInvalid(){let e=[],t=[],n,r=0;for(;r<this.tokens.length&&this.tokens[r].isInvalid;r+=1)t.push(this.tokens[r]);for(n=this.tokens[r],n.leadingInvalid=[...t,...n.leadingInvalid],e.push(n),r+=1;r<this.tokens.length;r+=1){let t=this.tokens[r];t.isInvalid?n.trailingInvalid.push(t):(n=t,e.push(n))}this.tokens=e}parse(){let e=this.program(),t=this.advance(),r=this.nodeFactory.create(z,{body:e,eof:t,source:this.source});return this.gatherInvalid(),this.assignParents(r),new n({ast:r,tokens:this.tokens},this.errors)}assignParents(e){Fm(e).forEach(t=>{t instanceof R&&(t.parentNode=e,this.assignParents(t))})}program(){let e=[];for(;!this.isAtEnd();)if(Ya(this.peek())||Za(this.peek()))try{e.push(this.useDeclaration())}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof em&&e.push(t.partialNode),this.synchronizeProgram()}else try{e.push(this.elementDeclaration())}catch(t){if(!(t instanceof $))throw t;e.push(t.partialNode),this.synchronizeProgram()}return e}useDeclaration(){let e={},t=()=>this.nodeFactory.create(em,e);if(this.advance(),e.useKeyword=this.previous(),this.peek().kind===v.WILDCARD)this.advance(),e.specifiers=this.nodeFactory.create(fm,{token:this.previous()});else try{e.specifiers=this.useSpecifierList()}catch(t){if(!(t instanceof $))throw t;t.partialNode instanceof nm&&(e.specifiers=t.partialNode)}let n=e.specifiers instanceof fm?`'*'`:`specifier list`;return Xa(this.peek())?e.fromKeyword=this.advance():this.logError(this.peek(),T.UNEXPECTED_TOKEN,`Expect 'from' after ${n}`),this.match(v.STRING_LITERAL)?e.importPath=this.previous():this.logError(this.peek(),T.UNEXPECTED_TOKEN,`Expect a string literal path`),t()}useSpecifier(){let e={},t=()=>this.nodeFactory.create(tm,e);try{this.consume(`Expect an import kind specifier (e.g. table, enum)`,v.IDENTIFIER),e.importKind=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(this.check(v.IDENTIFIER,v.QUOTED_STRING))try{e.name=this.normalExpression()}catch(n){throw n instanceof $?(n.partialNode instanceof R&&(e.name=n.partialNode),new $(n.token,t(),n.handlerContext)):n}else e.importKind&&this.logError(this.peek(),T.UNEXPECTED_TOKEN,`Expect an element name`);if(Ja(this.peek())){e.asKeyword=this.advance();try{if(!this.check(v.IDENTIFIER,v.QUOTED_STRING))throw this.logError(this.peek(),T.UNEXPECTED_TOKEN,`Expect an alias name after 'as'`),new $(this.peek(),t(),this.contextStack.findHandlerContext(this.tokens,this.current));e.alias=this.normalExpression()}catch(e){if(!(e instanceof $))throw e;if(!this.canHandle(e))throw new $(e.token,t(),e.handlerContext)}}return t()}elementDeclaration(){let e={},t=()=>this.nodeFactory.create(B,e);try{this.consume(`Expect an identifier`,v.IDENTIFIER),e.type=this.previous()}catch(e){throw e instanceof $?new $(e.token,t(),e.handlerContext):e}if(!this.check(v.COLON,v.LBRACE,v.LBRACKET))try{e.name=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.name=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationName()}if(Ja(this.peek()))if(e.as=this.advance(),this.check(v.COLON,v.LBRACE,v.LBRACKET))this.logError(this.peek(),T.UNEXPECTED_TOKEN,`Expect an alias`);else try{e.alias=this.normalExpression()}catch(n){if(!(n instanceof $))throw n;if(e.alias=n.partialNode,!this.canHandle(n))throw new $(n.token,t(),n.handlerContext);this.synchronizeElementDeclarationAlias()}try{e.attributeList=this.check(v.LBRACKET)?this.listExpression():void 0}catch(n){throw n instanceof $?(e.attributeList=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(!this.discardUntil(`Expect an opening brace '{' or a colon ':'`,v.LBRACE,v.COLON))return t();try{if(this.match(v.COLON)){e.bodyColon=this.previous();let t=this.expression();t instanceof B?(K(t),this.logError(t,T.UNEXPECTED_ELEMENT_DECLARATION,`An element's simple body must not be an element declaration`)):e.body=t}else e.body=this.blockExpression()}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(B,e)}fieldDeclaration(){let e={},t=()=>this.nodeFactory.create(B,e);try{this.consume(`Expect an identifier`,v.IDENTIFIER),e.type=this.previous()}catch(n){throw n instanceof $?(e.type=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{this.consume(`Expect a colon ':'`,v.COLON),e.bodyColon=this.previous()}catch(n){throw n instanceof $?(e.bodyColon=n.partialNode,new $(n.token,t(),n.handlerContext)):n}try{let t=this.expression();t instanceof B?this.errors.push(new E(T.INVALID_ELEMENT_IN_SIMPLE_BODY,`Simple body cannot be an element declaration`,t)):e.body=t}catch(n){throw n instanceof $?(e.body=n.partialNode,new $(n.token,t(),n.handlerContext)):n}return this.nodeFactory.create(B,e)}expression(){let e={args:[]},t=()=>jm(e.callee,e.args,this.nodeFactory)??this.nodeFactory.create(U,e);try{e.callee=this.commaExpression()}catch(n){throw n instanceof $?(e.callee=n.partialNode,new $(n.token,t(),n.handlerContext)):n}if(this.shouldStopFunctionApplication())return t();let n=e.callee;for(;!this.shouldStopFunctionApplication();){Wa(this.previous())||this.logError(n,T.MISSING_SPACES,`Expect a following space`);try{n=this.commaExpression(),e.args.push(n)}catch(r){throw r instanceof $?(n=r.partialNode,e.args.push(n),new $(r.token,t(),r.handlerContext)):r}}return t()}shouldStopFunctionApplication(){if(this.isAtEnd()||Ha(this.previous()))return!0;let e=this.peek().kind;return[v.RBRACE,v.RBRACKET,v.RPAREN,v.COMMA,v.COLON].includes(e)}commaExpression(){let e=this.check(v.COMMA)?this.nodeFactory.create(hm,{prevToken:this.previous()}):this.normalExpression();if(!this.check(v.COMMA))return e;let t={elementList:[e],commaList:[]};do{if(t.commaList.push(this.advance()),this.shouldStopCommaExpression()){t.elementList.push(this.nodeFactory.create(hm,{prevToken:this.previous()}));break}if(this.check(v.COMMA)){t.elementList.push(this.nodeFactory.create(hm,{prevToken:this.previous()}));continue}try{let e=this.normalExpression();t.elementList.push(e)}catch(e){throw e instanceof $?(e.partialNode&&t.elementList.push(e.partialNode),new $(e.token,this.nodeFactory.create(cm,t),e.handlerContext)):e}}while(!this.shouldStopCommaExpression()&&this.check(v.COMMA));return this.nodeFactory.create(cm,t)}shouldStopCommaExpression(){if(this.isAtEnd()||Ha(this.previous()))return!0;let e=this.peek().kind;return[v.RBRACE,v.LBRACE,v.RBRACKET,v.LBRACKET,v.RPAREN,v.LPAREN,v.COLON].includes(e)}normalExpression(){return this.expression_bp(0)}expression_bp(e){let t=this.leftExpression_bp();for(;!this.isAtEnd();){let n=this.peek();if(n.kind===v.LPAREN){let{left:r}=Qb(n);if(r<e||Ua(this.previous(),n)&&!this.contextStack.isWithinGroupExpressionContext()&&!this.contextStack.isWithinListExpressionContext())break;try{t=this.nodeFactory.create(um,{callee:t,argumentList:this.tupleExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(um,{callee:t,argumentList:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(n.kind===v.LBRACKET){if(Wa(this.previous()))break;try{t=this.nodeFactory.create(gm,{expression:t,indexer:this.listExpression()})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(gm,{expression:t,indexer:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}else if(Ba(n)){let r=n,i=Qb(r);if(i.left!==null){if(i.left<=e)break;this.advance(),t=this.nodeFactory.create(am,{expression:t,op:r})}else{let n=Jb(r);if(n.left===null||n.left<=e)break;this.advance();try{t=this.nodeFactory.create(im,{leftExpression:t,op:r,rightExpression:r.value===`.`?this.extractOperand():this.expression_bp(n.right)})}catch(e){throw e instanceof $?(t=this.nodeFactory.create(im,{leftExpression:t,op:r,rightExpression:e.partialNode}),new $(e.token,t,e.handlerContext)):e}}}else break}return t}leftExpression_bp(){let e;if(Ba(this.peek())){let t={};t.op=this.peek();let n=Xb(t.op);if(n.right===null)throw this.logError(t.op,T.UNKNOWN_PREFIX_OP,`Unexpected '${t.op.value}' in an expression`),new $(t.op,this.nodeFactory.create(hm,{prevToken:t.op}),this.contextStack.findHandlerContext(this.tokens,this.current));this.advance();try{t.expression=this.expression_bp(n.right)}catch(e){throw e instanceof $?(t.expression=e.partialNode,new $(e.token,this.nodeFactory.create(H,t),e.handlerContext)):e}e=this.nodeFactory.create(H,t)}else if(e=this.extractOperand(),e instanceof hm)throw new $(this.peek(),this.nodeFactory.create(hm,{prevToken:this.peek()}),this.contextStack.findHandlerContext(this.tokens,this.current));return e}extractOperand(){return this.check(v.WILDCARD)?this.wildcardExpression():this.check(v.NUMERIC_LITERAL,v.STRING_LITERAL,v.COLOR_LITERAL,v.QUOTED_STRING,v.IDENTIFIER)?this.primaryExpression():this.check(v.FUNCTION_EXPRESSION)?this.functionExpression():this.check(v.LBRACKET)?this.listExpression():this.check(v.LBRACE)?this.blockExpression():this.check(v.LPAREN)?this.tupleExpression():(this.peek().kind===v.EOF?this.logError(this.peek(),T.UNEXPECTED_EOF,`Unexpected EOF`):this.logError(this.peek(),T.INVALID_OPERAND,`Invalid start of operand "${this.peek().value}"`),this.nodeFactory.create(hm,{prevToken:this.previous()}))}functionExpression(){let e={};try{this.consume(`Expect a function expression`,v.FUNCTION_EXPRESSION),e.value=this.previous()}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(om,e),t.handlerContext):t}return this.nodeFactory.create(om,e)}wildcardExpression(){return this.advance(),this.nodeFactory.create(fm,{token:this.previous()})}canBeField(){return this.peek().kind===v.IDENTIFIER&&this.peek(1).kind===v.COLON}primaryExpression(){if(this.match(v.COLOR_LITERAL,v.STRING_LITERAL,v.NUMERIC_LITERAL))return this.nodeFactory.create(mm,{expression:this.nodeFactory.create(dm,{literal:this.previous()})});if(this.match(v.QUOTED_STRING,v.IDENTIFIER))return this.nodeFactory.create(mm,{expression:this.nodeFactory.create(pm,{variable:this.previous()})});throw this.logError(this.peek(),T.UNEXPECTED_TOKEN,`Expect a variable or literal`),new $(this.peek(),void 0,this.contextStack.findHandlerContext(this.tokens,this.current))}attribute(){let e={};if(this.check(v.COLON,v.RBRACKET,v.COMMA)){let t=this.peek();this.logError(t,T.EMPTY_ATTRIBUTE_NAME,`Expect a non-empty attribute name`),e.name=this.nodeFactory.create(rm,{identifiers:[]})}else try{e.name=this.attributeName()}catch(t){if(!(t instanceof $))throw t;if(e.name=t.partialNode,!this.canHandle(t))throw new $(t.token,this.nodeFactory.create(V,e),t.handlerContext);this.synchronizeAttributeName()}return this.match(v.COLON)&&(e.colon=this.previous(),e.value=this.attributeValue()),this.nodeFactory.create(V,e)}attributeValue(){let e;try{e=this.peek().kind===v.IDENTIFIER&&this.peek(1).kind===v.IDENTIFIER?this.attributeName():this.normalExpression()}catch(t){if(!(t instanceof $)||!this.canHandle(t))throw t;e=t.partialNode,this.synchronizeAttributeValue()}return e}attributeName(){let e=[];if(this.peek().kind!==v.IDENTIFIER)return this.primaryExpression();for(;!this.isAtEnd()&&!this.check(v.COLON,v.COMMA,v.RBRACKET);)try{this.consume(`Expect an identifier`,v.IDENTIFIER),e.push(this.previous())}catch(t){throw t instanceof $?new $(t.token,this.nodeFactory.create(rm,{identifiers:e}),t.handlerContext):t}return this.nodeFactory.create(rm,{identifiers:e})}logError(e,t,n){this.errors.push(new E(t,n,e))}},qb={"+":{left:9,right:10},"-":{left:9,right:10},"/":{left:11,right:12},"%":{left:11,right:12},"<":{left:7,right:8},"<=":{left:7,right:8},">":{left:7,right:8},">=":{left:7,right:8},"<>":{left:7,right:8},"-?":{left:9,right:10},"?-":{left:9,right:10},"?-?":{left:9,right:10},"?>":{left:7,right:8},">?":{left:7,right:8},"?<":{left:7,right:8},"<?":{left:7,right:8},"?>?":{left:7,right:8},"?<?":{left:7,right:8},"?<>":{left:7,right:8},"<>?":{left:7,right:8},"?<>?":{left:7,right:8},"=":{left:2,right:3},"==":{left:4,right:5},"!=":{left:4,right:5},".":{left:16,right:17}};function Jb(e){return qb[e.value]||{left:null,right:null}}var Yb={"+":{left:null,right:15},"-":{left:null,right:15},"<":{left:null,right:15},">":{left:null,right:15},"<>":{left:null,right:15},"-?":{left:null,right:15},"?-":{left:null,right:15},"?-?":{left:null,right:15},"?>":{left:null,right:15},">?":{left:null,right:15},"?<":{left:null,right:15},"<?":{left:null,right:15},"?>?":{left:null,right:15},"?<?":{left:null,right:15},"?<>":{left:null,right:15},"<>?":{left:null,right:15},"?<>?":{left:null,right:15},"!":{left:null,right:15},"~":{left:null,right:15}};function Xb(e){return Yb[e.value]||{left:null,right:null}}var Zb={"(":{left:14,right:null}};function Qb(e){return Zb[e.value]||{left:null,right:null}}function $b(e){let t=this.getSource(e);return new Hb(t??``,e).lex().chain(n=>new Kb(t??``,n,this.nodeIdGenerator,e).parse()).map(({ast:t,tokens:n})=>({ast:t,tokens:n,path:e}))}function ex(){let e=Ig(this,this.layout.getEntrypoints()),t=new Map;for(let n of e){let e=this.parseFile(n);t.set(n.absolute,e)}return t}function tx(e){let n=this.symbolMembers(e).getFiltered(t),r=new Map;if(n)for(let e of n){let t=e instanceof Xp?ug.visibleName(this,e)?.at(-1):e.name;if(t===void 0)continue;let n=r.get(t);n||(n=[],r.set(t,n)),n.push(e)}return r}function nx(e,n,r){let i;if(e instanceof jp)i=e;else{let n=this.nodeSymbol(e).getFiltered(t);if(!(n instanceof jp))return;i=n}let a=Array.isArray(n)?n:[n],o=this.symbolMembersLookupMap(i).get(r);if(o)return o.find(e=>!(a.length===1&&e.kind!==a[0]||a.length>1&&!a.includes(e.kind)))}function rx(e){let t=e.originalSymbol;return Lg(this).map(n=>n.filter(n=>n instanceof Yp&&n.originalSymbol===t&&n!==e))}function ix(){let e=new Map,n=new Map,r=this.parseProject();this.bindProject();let i=new Set,a=(t,n)=>{if(i.has(n))return;i.add(n);let r=t.intern(),a=e.get(r);a||(a=[],e.set(r,a)),a.push(n);let o=t.originalSymbol;if(o!==t){let t=o.intern(),r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}},o=e=>{for(let t of e.owners(this)){let r=t.intern(),i=n.get(r);i||(i=[],n.set(r,i)),i.push(e)}};for(let e of r.values()){let n=e.getValue().ast,r=e=>{if(k(e)){let n=this.nodeReferee(e).getFiltered(t);n&&a(n,e);return}if(e instanceof sm&&A(e.parentNode)&&e.parentNode.rightExpression===e){let n=e.parentNode.leftExpression;if(n){let e=Jf(n);if(e){let n=this.nodeReferee(e).getFiltered(t);n&&a(n,e)}}}let n=this.nodeMetadata(e).getFiltered(t);n&&o(n);for(let t of Fm(e))t instanceof R&&r(t)};r(n)}let s=new Map,c=new Set;function l(e,n){let r=n.intern();if(c.has(r))return;c.add(r);let i=e.symbolMembers(n).getFiltered(t);if(i)for(let t of i){let r=t.intern(),i=s.get(r);i||(i=[],s.set(r,i)),i.push(n),t instanceof Mp&&t.isKind(L.Schema)&&l(e,t)}}for(let e of r.values()){let n=e.getValue().ast,r=this.nodeSymbol(n).getFiltered(t);r&&l(this,r)}return{references:e,metadata:n,parents:s}}function ax(e){return this.resolutionIndex().parents.get(e.intern())??[]}function ox(e){return this.resolutionIndex().references.get(e.intern())??[]}function sx(e){return this.resolutionIndex().metadata.get(e.intern())??[]}function cx(e){let t=e.originalSymbol;return Lg(this).map(n=>n.filter(n=>n instanceof Xp&&n.originalSymbol===t&&n!==e))}function lx(e,t,n=!1){let r=n?t:[...t].sort((e,t)=>t.start-e.start),i=e;for(let{start:e,end:t,newText:n}of r)i=i.substring(0,e)+n+i.substring(t);return i}function ux(e){if(typeof e!=`string`)return{schema:e.schema??`public`,table:e.table};let t=Fg(e);if(t.length===0)return{schema:y,table:``};if(t.length===1)return{schema:y,table:t[0]};if(t.length===2)return{schema:t[0],table:t[1]};let n=t[t.length-1];return{schema:t.slice(0,-1).join(`.`),table:n}}function dx(e,n,r,i){let a=e.parseFile(n).getValue().ast,o=e.nodeSymbol(a).getFiltered(t);if(!o)return null;if(r===`public`)return e.lookupMembers(o,L.Table,i)??null;let s=e.lookupMembers(o,L.Schema,r);return s?e.lookupMembers(s,L.Table,i)??null:null}function fx(e){return e.startsWith(`"`)&&e.endsWith(`"`)&&e.length>=2?e.slice(1,-1):e}function px(e,t){if(!e||!(e instanceof B))return!1;let n=e.name;return n?t.substring(n.start,n.end).includes(`"`):!1}function mx(e,t,n){let r=!Ag(t),i=!Ag(e),a=n||r,o=n||i;return{schema:e,table:t,formattedSchema:o?`"${e}"`:e,formattedTable:a?`"${t}"`:t,shouldQuoteSchema:o,shouldQuoteTable:a}}function hx(e,t,n,r,i,a){return n===i&&r===a?!1:dx(e,t,i,a)!==null}function gx(e,t,n){let r=e.start-1;for(;r>=0&&/\s/.test(n[r]);)r--;if(r<0||n[r]!==`.`)return null;for(r--;r>=0&&/\s/.test(n[r]);)r--;if(r<0)return null;let i,a;if(n[r]===`"`){for(a=r+1,r--;r>=0&&n[r]!==`"`;)r--;if(r<0)return null;i=r}else{for(a=r+1;r>=0&&/[a-zA-Z0-9_]/.test(n[r]);)r--;i=r+1}return fx(n.substring(i,a))===t?{start:i,end:e.end}:null}function _x(e){return e.schema===`public`?e.formattedTable:`${e.formattedSchema}.${e.formattedTable}`}function vx(e,t,n,r,i){let a=[],o=new Set,s=_x(r);for(let r of e){if(fx(i.substring(r.start,r.end))!==n)continue;let e=gx(r,t,i)??{start:r.start,end:r.end},c=`${e.start}-${e.end}`;o.has(c)||(o.add(c),a.push({start:e.start,end:e.end,newText:s}))}return a}function yx(e,n,r){let i=ux(n),a=ux(r),o=i.schema,s=i.table,c=a.schema,l=a.table,u=dx(this,e,o,s);if(!u||u instanceof Yp||hx(this,e,o,s,c,l))return new Map;if(u instanceof Xp&&u.useSpecifierDeclaration instanceof tm&&u.useSpecifierDeclaration.alias){let n=u.useSpecifierDeclaration;if(this.nodeAlias(n).getFiltered(t)===s)return bx(this,e,n,u,c,l)}return xx(this,u,o,s,c,l)}function bx(e,t,n,r,i,a){let o=e.getSource(t)??``;if(!n.alias)return new Map;let s=mx(i,a,o.substring(n.alias.start,n.alias.end).includes(`"`)),c=[];c.push({start:n.alias.start,end:n.alias.end,newText:s.formattedTable});let l=e.symbolReferences(r);for(let e of l)e.filepath.absolute===t.absolute&&e!==n.alias&&c.push({start:e.start,end:e.end,newText:s.formattedTable});return new Map([[t.absolute,lx(o,c)]])}function xx(e,t,n,r,i,a){let o=t.originalSymbol,s=o.declaration;if(!s||!(s instanceof B))return new Map;let c=s.filepath;if(!c)return new Map;let l=mx(i,a,px(s,e.getSource(c)??``)),u=new Map,d=(e,t)=>{let n=e.absolute,r=u.get(n);r||(r={fp:e,edits:[]},u.set(n,r)),r.edits.push(t)},f=s.name;f&&d(c,{start:f.start,end:f.end,newText:_x(l)});let p=e.symbolReferences(o);for(let t of p){if(t===f)continue;let i=t.filepath,a=e.getSource(i)??``;for(let e of vx([t],n,r,l,a))d(i,e)}let m=new Map;for(let{fp:t,edits:n}of u.values()){let r=e.getSource(t)??``;m.set(t.absolute,lx(r,n))}return m}function Sx(e){let t=[],n=new Hb(e,To).lex();if(n.getErrors().length>0)return t;let i=new Kb(e,n.getValue(),new Qp,To).parse();if(i.getErrors().length>0)return t;let a=i.getValue().ast;for(let e of a.declarations)if(e.isKind(r.DiagramView)){let n=e.name?N(e.name)??[]:[],r=n.length>0?n[n.length-1]:``;t.push({name:r,startIndex:e.start,endIndex:e.end})}return t}function Cx(e,t,n){e.push(` ${t} {`),n.forEach(t=>e.push(` ${t}`)),e.push(` }`)}function wx(e,t){e.push(` ${t} { * }`)}function Tx(e){return e==null?`null`:e.length===0?`empty`:`items`}function Ex(e,t){let n=`DiagramView ${jg(e)} {`,r=e=>jg(e.name),i=t?.tables?.map(e=>{let t=jg(e.name);return e.schemaName===`public`?t:`${jg(e.schemaName)}.${t}`})??[],a=t?.tableGroups?.map(r)??[],o=t?.schemas?.map(r)??[],s=t?.stickyNotes?.map(r)??[];if(!t)return`${n}\n}`;let c={tables:Tx(t.tables),tableGroups:Tx(t.tableGroups),schemas:Tx(t.schemas),stickyNotes:Tx(t.stickyNotes)};if(Object.values(c).every(e=>e===`null`))return`${n}\n}`;if(Object.values(c).every(e=>e===`empty`))return`${n}\n *\n}`;let l=c.tables===`items`||c.tableGroups===`items`||c.schemas===`items`,u=c.tables===`empty`&&c.tableGroups===`empty`&&c.schemas===`empty`,d=[n];return l?(c.tables===`items`&&Cx(d,`Tables`,i),c.tableGroups===`items`&&Cx(d,`TableGroups`,a),c.schemas===`items`&&Cx(d,`Schemas`,o)):u&&wx(d,`Tables`),c.stickyNotes===`items`?Cx(d,`Notes`,s):c.stickyNotes===`empty`&&wx(d,`Notes`),d.push(`}`),d.join(`
21
+ `)}function Dx(e,t,n){let r=this.getSource(e)??``,i=n??Sx(r),a=[];for(let e of t){let t=Ox(r,e,i);a.push(...t)}return a.sort((e,t)=>t.start-e.start),{newDbml:lx(r,a,!0),edits:a}}function Ox(e,t,n){switch(t.operation){case`create`:return kx(e,t,n);case`update`:return Ax(e,t,n);case`delete`:return jx(e,t,n);default:return[]}}function kx(e,t,n){if(n.find(e=>e.name===t.name))return Ax(e,t,n);let r=`
22
22
 
23
- `+wx(t.name,t.visibleEntities)+`
24
- `;return[{start:e.length,end:e.length,newText:r}]}function Ox(e,t,n){let r=n.find(e=>e.name===t.name);if(!r)return[];let i=[];if(t.newName||t.visibleEntities){let e=wx(t.newName||t.name,t.visibleEntities);i.push({start:r.startIndex,end:r.endIndex,newText:e})}return i}function kx(e,t,n){let r=n.find(e=>e.name===t.name);if(!r)return[];let i=r.startIndex,a=r.endIndex;for(;i>0&&e[i-1]===`
23
+ `+Ex(t.name,t.visibleEntities)+`
24
+ `;return[{start:e.length,end:e.length,newText:r}]}function Ax(e,t,n){let r=n.find(e=>e.name===t.name);if(!r)return[];let i=[];if(t.newName||t.visibleEntities){let e=Ex(t.newName||t.name,t.visibleEntities);i.push({start:r.startIndex,end:r.endIndex,newText:e})}return i}function jx(e,t,n){let r=n.find(e=>e.name===t.name);if(!r)return[];let i=r.startIndex,a=r.endIndex;for(;i>0&&e[i-1]===`
25
25
  `;){i--,i>0&&e[i-1]===`\r`&&i--;let t=e.lastIndexOf(`
26
26
  `,i-1)+1;if(e.substring(t,i).trim()!==``){i=r.startIndex,i>0&&e[i-1]===`
27
27
  `&&(i--,i>0&&e[i-1]===`\r`&&i--);break}}return a<e.length&&e[a]===`\r`&&a++,a<e.length&&e[a]===`
28
- `&&a++,[{start:i,end:a,newText:``}]}var Ax=Symbol(`COMPUTING`),jx=class{constructor(e){this.layout=e,this.nodeIdGenerator=new Zp,this.symbolIdGenerator=new kp,this.symbolFactory=new eo(this.symbolIdGenerator),this.sourceSnapshot=new Map,this.globalCache=new Map,this.globallyQuerying=!1,this.localCache=new Map,this.parseFile=this.localQuery(Zb),this.parseProject=this.globalQuery(Qb),this.validateNode=this.localQuery(Z_),this.validateFile=this.localQuery(zb),this.nodeFullname=this.localQuery($_),this.nodeAlias=this.localQuery(ev),this.nodeSettings=this.localQuery(Q_),this.canonicalName=this.globalQuery(bb),this.bindNode=this.globalQuery(u_),this.bindFile=this.globalQuery(Fb),this.bindProject=this.globalQuery(Ib),this.interpretSymbol=this.globalQuery(f_),this.interpretMetadata=this.globalQuery(p_),this.interpretFile=this.globalQuery(Lb),this.interpretProject=this.globalQuery(Rb),this.nodeSymbol=this.globalQuery(s_),this.nodeMetadata=this.globalQuery(d_),this.symbolMembers=this.globalQuery(c_),this.symbolMembersLookupMap=this.globalQuery($b),this.lookupMembers=this.globalQuery(ex),this.nodeReferee=this.globalQuery(l_),this.resolutionIndex=this.globalQuery(nx),this.symbolReferences=this.globalQuery(ix),this.symbolParent=this.globalQuery(rx),this.symbolMetadata=this.globalQuery(ax),this.symbolAliases=this.globalQuery(tx),this.symbolUses=this.globalQuery(ox),this.fileDependencies=this.localQuery(Cb),this.reachableFiles=this.globalQuery(Tb),this.usableMembers=this.globalQuery(dg),this.nodeAtPosition=this.localQuery(Pb),this.renameTable=_x.bind(this),this.syncDiagramView=Tx.bind(this),this.token={invalidStream:this.localQuery(Nb),flatStream:this.localQuery(Mb)},this.parse={source:e=>this.getSource(e)||``,ast:(e=Eo)=>Eb.call(this,e),errors:(e=Eo)=>Db.call(this,e),warnings:(e=Eo)=>Ob.call(this,e),tokens:(e=Eo)=>kb.call(this,e),rawDb:(e=Eo)=>Ab.call(this,e),publicSymbolTable:(e=Eo)=>jb.call(this,e)},this.container={stack:this.localQuery(hb),token:this.localQuery(gb),element:this.localQuery(_b),scope:this.localQuery(vb),scopeKind:this.localQuery(yb)}}getSource(e){return this.layout.getSource(e)}cleanStaleLocalCache(e){let t=this.layout.getSource(e),n=e.absolute,r=this.sourceSnapshot.get(n);r===void 0?this.sourceSnapshot.set(n,t):r!==t&&(this.localCache.delete(e.intern()),this.globalCache.clear(),this.sourceSnapshot.set(n,t))}cleanStaleGlobalCache(){let e=this.layout.getEntrypoints(),t=!1;this.entrypointsSnapshot!==void 0&&(this.entrypointsSnapshot.length!==e.length||this.entrypointsSnapshot.some((t,n)=>t.absolute!==e[n].absolute))&&(t=!0),this.entrypointsSnapshot=e;for(let t of wb(this,e))this.cleanStaleLocalCache(t);t&&this.globalCache.clear()}globalQuery(e){let t=Symbol();return((...n)=>{let r=!this.globallyQuerying;r&&(this.globallyQuerying=!0,this.cleanStaleGlobalCache());try{let r=this.globalCache.get(t);r||(r=new Map,this.globalCache.set(t,r));let i=n.length===0?``:n.length===1?Bm(n[0]):n.map(e=>Bm(e)).join(`\0`),a=r.get(i);if(a){if(a===Ax)throw Error(`Cycle detected in query: ${e.name}(${i})`);return a}r.set(i,Ax);try{let t=e.apply(this,n);return r.set(i,t),t}catch(e){throw r.delete(i),e}}finally{r&&(this.globallyQuerying=!1)}})}localQuery(e){let t=Symbol();return((...n)=>{let[r]=n,i=r instanceof L?r.filepath:r;this.cleanStaleLocalCache(i);let a=i.intern(),o=n.length===0?``:n.length===1?Bm(n[0]):n.map(e=>Bm(e)).join(`\0`),s=this.localCache.get(a);s||(s=new Map,this.localCache.set(a,s));let c=s.get(t);if(c||(c=new Map,s.set(t,c)),c.has(o)){let t=c.get(o);if(t===Ax)throw Error(`Cycle detected in query: ${e.name}(${a}, ${o})`);return t}c.set(o,Ax);try{let t=e.apply(this,n);return c.set(o,t),t}catch(e){throw c.delete(o),e}})}findDiagramViewBlocks(e){return bx(this.getSource(e)??``)}initMonacoServices(e){let t=e?.autocompletion?.triggerCharacters??[];return{definitionProvider:new uy(this),referenceProvider:new fy(this),autocompletionProvider:new zy(this,{triggerCharacters:t}),diagnosticsProvider:new dy(this),codeActionProvider:new ly(this)}}},Mx=class e{constructor(e={}){this.files=e instanceof Map?new Map(e):new Map(Object.entries(e))}setSource(e,t){this.files.set(e.absolute,t)}getSource(e){return this.files.get(e.absolute)??void 0}deleteSource(e){this.files.delete(e.absolute)}clearSource(){this.files.clear()}exists(e){return this.isFile(e)||this.isDirectory(e)}isFile(e){return this.files.has(e.absolute)}isDirectory(e){let t=e.absolute.endsWith(`/`)?e.absolute:`${e.absolute}/`;for(let e of this.files.keys())if(e.startsWith(t))return!0;return!1}listDirectory(e){let t=e?.absolute??`/`,n=t.endsWith(`/`)?t:t+`/`,r=new Set;for(let e of this.files.keys()){if(!e.startsWith(n))continue;let t=e.slice(n.length),i=t.indexOf(`/`);r.add(n+(i===-1?t:t.slice(0,i)))}return[...r].sort().map(bo.from)}getEntrypoints(){return[...this.files.keys()].map(bo.from).sort((e,t)=>e.absolute.localeCompare(t.absolute))}clone(){return new e(this.files)}};exports.ArrayNode=mm,exports.AttributeNode=B,exports.BlockExpressionNode=U,exports.CARDINALITY_MANY=sf,exports.CARDINALITY_MAYBE=af,exports.CARDINALITY_ONE=rf,exports.CARDINALITY_SOME=of,exports.CallExpressionNode=G,exports.CommaExpressionNode=sm,exports.CompileError=T,exports.CompileErrorCode=w,exports.Compiler=jx,exports.CompletionItemInsertTextRule=X,exports.CompletionItemKind=Y,exports.DBMLCodeActionProvider=ly,exports.DBMLCompletionItemProvider=zy,exports.DBMLDefinitionProvider=uy,exports.DBMLDiagnosticsProvider=dy,exports.DBMLReferencesProvider=fy,exports.DEFAULT_ENTRY=Eo,exports.ElementDeclarationNode=z,exports.ElementKind=r,exports.EmptyNode=pm,exports.FALSY_VALUES=pp,exports.Filepath=bo,exports.FunctionApplicationNode=H,exports.FunctionExpressionNode=am,exports.GroupExpressionNode=cm,exports.IdentifierStreamNode=nm,exports.InfixExpressionNode=rm,exports.ListExpressionNode=W,exports.LiteralNode=lm,exports.MarkerSeverity=oy,exports.MemoryProjectLayout=Mx,exports.PostfixExpressionNode=im,exports.PrefixExpressionNode=V,exports.PrimaryExpressionNode=fm,exports.ProgramNode=R,exports.ScopeKind=Q,exports.SymbolKind=I,exports.SyntaxNode=L,exports.SyntaxNodeIdGenerator=Zp,exports.SyntaxNodeKind=Qp,exports.SyntaxToken=Ha,exports.SyntaxTokenKind=_,exports.TRUTHY_VALUES=fp,exports.TupleExpressionNode=om,exports.UNHANDLED=t,exports.Uri=Yv,exports.UseDeclarationNode=$p,exports.UseSpecifierListNode=tm,exports.UseSpecifierNode=em,exports.VariableNode=dm,exports.WildcardNode=um,exports.addDoubleQuoteIfNeeded=kg,exports.dbmlLanguageConfig=pb,exports.dbmlMonarchTokensProvider=mb,exports.escapeString=jg,exports.extractNumericLiteral=rp,exports.extractSignedNumber=lp,exports.formatRecordValue=Mg,exports.getMultiplicities=cf,exports.getRecordValueType=Uo,exports.getRelationshipOp=ff,exports.isBinaryType=Bo,exports.isBooleanType=Ro,exports.isDateTimeType=Vo,exports.isEmptyStringLiteral=sp,exports.isEndpointManySide=uf,exports.isEndpointOneSide=lf,exports.isFloatType=Io,exports.isFunctionExpression=cp,exports.isIntegerType=Fo,exports.isNullish=op,exports.isNumericType=Lo,exports.isOp=Ba,exports.isOpToken=Va,exports.isSerialType=Ho,exports.isStringType=zo,exports.isTriviaToken=za,exports.isValidIdentifier=Og,exports.makeCardinalityOptional=pf,exports.makeCardinalityRequired=mf,exports.makeRelationshipRequired=df,exports.normalizeTypeName=Po,exports.parseCardinality=tf,exports.splitQualifiedIdentifier=Ng,exports.tryExtractBoolean=mp,exports.tryExtractDateTime=bp,exports.tryExtractEnum=hp,exports.tryExtractInteger=dp,exports.tryExtractNumeric=up,exports.tryExtractString=gp,exports.unescapeString=Ag,exports.validateForeignKeys=Eh,exports.validatePrimaryKey=gh,exports.validateUnique=Sh;
28
+ `&&a++,[{start:i,end:a,newText:``}]}var Mx=Symbol(`COMPUTING`),Nx=class{constructor(e){this.layout=e,this.nodeIdGenerator=new Qp,this.symbolIdGenerator=new Ap,this.symbolFactory=new $a(this.symbolIdGenerator),this.sourceSnapshot=new Map,this.globalCache=new Map,this.globallyQuerying=!1,this.localCache=new Map,this.parseFile=this.localQuery($b),this.parseProject=this.globalQuery(ex),this.validateNode=this.localQuery($_),this.validateFile=this.localQuery(Vb),this.nodeFullname=this.localQuery(tv),this.nodeAlias=this.localQuery(nv),this.nodeSettings=this.localQuery(ev),this.canonicalName=this.globalQuery(Sb),this.bindNode=this.globalQuery(f_),this.bindFile=this.globalQuery(Lb),this.bindProject=this.globalQuery(Rb),this.interpretSymbol=this.globalQuery(m_),this.interpretMetadata=this.globalQuery(h_),this.interpretFile=this.globalQuery(zb),this.interpretProject=this.globalQuery(Bb),this.nodeSymbol=this.globalQuery(l_),this.nodeMetadata=this.globalQuery(p_),this.symbolMembers=this.globalQuery(u_),this.symbolMembersLookupMap=this.globalQuery(tx),this.lookupMembers=this.globalQuery(nx),this.nodeReferee=this.globalQuery(d_),this.resolutionIndex=this.globalQuery(ix),this.symbolReferences=this.globalQuery(ox),this.symbolParent=this.globalQuery(ax),this.symbolMetadata=this.globalQuery(sx),this.symbolAliases=this.globalQuery(rx),this.symbolUses=this.globalQuery(cx),this.fileDependencies=this.localQuery(Tb),this.reachableFiles=this.globalQuery(Db),this.usableMembers=this.globalQuery(pg),this.nodeAtPosition=this.localQuery(Ib),this.renameTable=yx.bind(this),this.syncDiagramView=Dx.bind(this),this.token={invalidStream:this.localQuery(Fb),flatStream:this.localQuery(Pb)},this.parse={source:e=>this.getSource(e)||``,ast:(e=To)=>Ob.call(this,e),errors:(e=To)=>kb.call(this,e),warnings:(e=To)=>Ab.call(this,e),tokens:(e=To)=>jb.call(this,e),rawDb:(e=To)=>Mb.call(this,e),publicSymbolTable:(e=To)=>Nb.call(this,e)},this.container={stack:this.localQuery(_b),token:this.localQuery(vb),element:this.localQuery(yb),scope:this.localQuery(bb),scopeKind:this.localQuery(xb)}}getSource(e){return this.layout.getSource(e)}cleanStaleLocalCache(e){let t=this.layout.getSource(e),n=e.absolute,r=this.sourceSnapshot.get(n);r===void 0?this.sourceSnapshot.set(n,t):r!==t&&(this.localCache.delete(e.intern()),this.globalCache.clear(),this.sourceSnapshot.set(n,t))}cleanStaleGlobalCache(){let e=this.layout.getEntrypoints(),t=!1;this.entrypointsSnapshot!==void 0&&(this.entrypointsSnapshot.length!==e.length||this.entrypointsSnapshot.some((t,n)=>t.absolute!==e[n].absolute))&&(t=!0),this.entrypointsSnapshot=e;for(let t of Eb(this,e))this.cleanStaleLocalCache(t);t&&this.globalCache.clear()}globalQuery(e){let t=Symbol();return((...n)=>{let r=!this.globallyQuerying;r&&(this.globallyQuerying=!0,this.cleanStaleGlobalCache());try{let r=this.globalCache.get(t);r||(r=new Map,this.globalCache.set(t,r));let i=n.length===0?``:n.length===1?Hm(n[0]):n.map(e=>Hm(e)).join(`\0`),a=r.get(i);if(a){if(a===Mx)throw Error(`Cycle detected in query: ${e.name}(${i})`);return a}r.set(i,Mx);try{let t=e.apply(this,n);return r.set(i,t),t}catch(e){throw r.delete(i),e}}finally{r&&(this.globallyQuerying=!1)}})}localQuery(e){let t=Symbol();return((...n)=>{let[r]=n,i=r instanceof R?r.filepath:r;this.cleanStaleLocalCache(i);let a=i.intern(),o=n.length===0?``:n.length===1?Hm(n[0]):n.map(e=>Hm(e)).join(`\0`),s=this.localCache.get(a);s||(s=new Map,this.localCache.set(a,s));let c=s.get(t);if(c||(c=new Map,s.set(t,c)),c.has(o)){let t=c.get(o);if(t===Mx)throw Error(`Cycle detected in query: ${e.name}(${a}, ${o})`);return t}c.set(o,Mx);try{let t=e.apply(this,n);return c.set(o,t),t}catch(e){throw c.delete(o),e}})}findDiagramViewBlocks(e){return Sx(this.getSource(e)??``)}initMonacoServices(e){let t=e?.autocompletion?.triggerCharacters??[];return{definitionProvider:new fy(this),referenceProvider:new my(this),autocompletionProvider:new Vy(this,{triggerCharacters:t}),diagnosticsProvider:new py(this),codeActionProvider:new dy(this)}}},Px=class e{constructor(e={}){this.files=e instanceof Map?new Map(e):new Map(Object.entries(e))}setSource(e,t){this.files.set(e.absolute,t)}getSource(e){return this.files.get(e.absolute)??void 0}deleteSource(e){this.files.delete(e.absolute)}clearSource(){this.files.clear()}exists(e){return this.isFile(e)||this.isDirectory(e)}isFile(e){return this.files.has(e.absolute)}isDirectory(e){let t=e.absolute.endsWith(`/`)?e.absolute:`${e.absolute}/`;for(let e of this.files.keys())if(e.startsWith(t))return!0;return!1}listDirectory(e){let t=e?.absolute??`/`,n=t.endsWith(`/`)?t:t+`/`,r=new Set;for(let e of this.files.keys()){if(!e.startsWith(n))continue;let t=e.slice(n.length),i=t.indexOf(`/`);r.add(n+(i===-1?t:t.slice(0,i)))}return[...r].sort().map(yo.from)}getEntrypoints(){return[...this.files.keys()].map(yo.from).sort((e,t)=>e.absolute.localeCompare(t.absolute))}clone(){return new e(this.files)}};exports.ArrayNode=gm,exports.AttributeNode=V,exports.BlockExpressionNode=W,exports.CARDINALITY_MANY=of,exports.CARDINALITY_MAYBE=rf,exports.CARDINALITY_ONE=nf,exports.CARDINALITY_SOME=af,exports.CallExpressionNode=um,exports.CommaExpressionNode=cm,exports.CompileError=E,exports.CompileErrorCode=T,exports.Compiler=Nx,exports.CompletionItemInsertTextRule=X,exports.CompletionItemKind=Y,exports.DBMLCodeActionProvider=dy,exports.DBMLCompletionItemProvider=Vy,exports.DBMLDefinitionProvider=fy,exports.DBMLDiagnosticsProvider=py,exports.DBMLReferencesProvider=my,exports.DEFAULT_ENTRY=To,exports.ElementDeclarationNode=B,exports.ElementKind=r,exports.EmptyNode=hm,exports.FALSY_VALUES=mp,exports.Filepath=yo,exports.FunctionApplicationNode=U,exports.FunctionExpressionNode=om,exports.GroupExpressionNode=lm,exports.IdentifierStreamNode=rm,exports.InfixExpressionNode=im,exports.ListExpressionNode=G,exports.LiteralNode=dm,exports.MarkerSeverity=cy,exports.MemoryProjectLayout=Px,exports.PostfixExpressionNode=am,exports.PrefixExpressionNode=H,exports.PrimaryExpressionNode=mm,exports.ProgramNode=z,exports.ScopeKind=Q,exports.SymbolKind=L,exports.SyntaxNode=R,exports.SyntaxNodeIdGenerator=Qp,exports.SyntaxNodeKind=$p,exports.SyntaxToken=Va,exports.SyntaxTokenKind=v,exports.TRUTHY_VALUES=pp,exports.TupleExpressionNode=sm,exports.UNHANDLED=t,exports.Uri=Zv,exports.UseDeclarationNode=em,exports.UseSpecifierListNode=nm,exports.UseSpecifierNode=tm,exports.VariableNode=pm,exports.WildcardNode=fm,exports.addDoubleQuoteIfNeeded=jg,exports.dbmlLanguageConfig=hb,exports.dbmlMonarchTokensProvider=gb,exports.escapeString=Ng,exports.extractNumericLiteral=ip,exports.extractSignedNumber=up,exports.formatRecordValue=Pg,exports.getMultiplicities=sf,exports.getRecordValueType=Ho,exports.getRelationshipOp=pf,exports.isBinaryType=zo,exports.isBooleanType=Lo,exports.isDateTimeType=Bo,exports.isEmptyStringLiteral=cp,exports.isEndpointManySide=lf,exports.isEndpointOneSide=cf,exports.isEndpointOptional=uf,exports.isEndpointRequired=df,exports.isFloatType=Fo,exports.isFunctionExpression=lp,exports.isIntegerType=Po,exports.isNullish=sp,exports.isNumericType=Io,exports.isOp=za,exports.isOpToken=Ba,exports.isSerialType=Vo,exports.isStringType=Ro,exports.isTriviaToken=Ra,exports.isValidIdentifier=Ag,exports.makeCardinalityOptional=mf,exports.makeCardinalityRequired=hf,exports.makeRelationshipRequired=ff,exports.normalizeTypeName=No,exports.parseCardinality=ef,exports.splitQualifiedIdentifier=Fg,exports.tryExtractBoolean=hp,exports.tryExtractDateTime=xp,exports.tryExtractEnum=gp,exports.tryExtractInteger=fp,exports.tryExtractNumeric=dp,exports.tryExtractString=_p,exports.unescapeString=Mg,exports.validateForeignKeys=Oh,exports.validatePrimaryKey=vh,exports.validateUnique=wh;