@dbml/parse 8.0.0-alpha.6 → 8.0.0-alpha.8

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,9 +1,9 @@
1
1
  Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=Symbol(`PASS_THROUGH`),t=Symbol(`UNHANDLED`);var n=class e{static create(t,n,r){return new e(t,n,r)}constructor(e,t,n){this.value=e,this.errors=t===void 0?[]:t,n?.length&&(this.warnings=n)}filter(t){return this.value===t?new e(void 0,this.errors,this.warnings):this}hasValue(e){return this.value===e}getFiltered(...e){return e.includes(this.value)?void 0:this.value}getValue(){return this.value}getErrors(){return this.errors}getWarnings(){return this.warnings||[]}chainFiltered(t,...n){if(n.includes(this.value))return new e(void 0,this.errors,this.warnings);let r=t(this.value),i=[...this.errors,...r.errors],a=[...this.getWarnings(),...r.getWarnings()];return new e(r.value,i,a)}chain(t){let n=t(this.value),r=[...this.errors,...n.errors],i=[...this.getWarnings(),...n.getWarnings()];return new e(n.value,r,i)}mapFiltered(t,...n){return n.includes(this.value)?new e(void 0,this.errors,this.warnings):new e(t(this.value),this.errors,this.warnings)}map(t){return new e(t(this.value),this.errors,this.warnings)}};let 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}({});var a=typeof global==`object`&&global&&global.Object===Object&&global,o=a,s=typeof self==`object`&&self&&self.Object===Object&&self,c=o||s||Function(`return this`)(),l=c,u=l.Symbol,d=u,f=Object.prototype,p=f.hasOwnProperty,m=f.toString,h=d?d.toStringTag:void 0;function ee(e){var t=p.call(e,h),n=e[h];try{e[h]=void 0;var r=!0}catch{}var i=m.call(e);return r&&(t?e[h]=n:delete e[h]),i}var te=ee,ne=Object.prototype.toString;function re(e){return ne.call(e)}var ie=re,ae=`[object Null]`,oe=`[object Undefined]`,se=d?d.toStringTag:void 0;function ce(e){return e==null?e===void 0?oe:ae:se&&se in Object(e)?te(e):ie(e)}var le=ce;function ue(e){return typeof e==`object`&&!!e}var de=ue,fe=`[object Symbol]`;function pe(e){return typeof e==`symbol`||de(e)&&le(e)==fe}var me=pe;function he(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 ge=he,_e=Array.isArray,ve=_e,ye=1/0,be=d?d.prototype:void 0,xe=be?be.toString:void 0;function Se(e){if(typeof e==`string`)return e;if(ve(e))return ge(e,Se)+``;if(me(e))return xe?xe.call(e):``;var t=e+``;return t==`0`&&1/e==-ye?`-0`:t}var Ce=Se,we=/\s/;function Te(e){for(var t=e.length;t--&&we.test(e.charAt(t)););return t}var Ee=Te,De=/^\s+/;function Oe(e){return e&&e.slice(0,Ee(e)+1).replace(De,``)}var ke=Oe;function Ae(e){var t=typeof e;return e!=null&&(t==`object`||t==`function`)}var je=Ae,Me=NaN,Ne=/^[-+]0x[0-9a-f]+$/i,Pe=/^0b[01]+$/i,Fe=/^0o[0-7]+$/i,Ie=parseInt;function Le(e){if(typeof e==`number`)return e;if(me(e))return Me;if(je(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=je(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=ke(e);var n=Pe.test(e);return n||Fe.test(e)?Ie(e.slice(2),n?2:8):Ne.test(e)?Me:+e}var Re=Le,ze=1/0,Be=17976931348623157e292;function Ve(e){return e?(e=Re(e),e===ze||e===-ze?(e<0?-1:1)*Be:e===e?e:0):e===0?e:0}var He=Ve;function Ue(e){var t=He(e),n=t%1;return t===t?n?t-n:t:0}var We=Ue;function Ge(e){return e}var Ke=Ge,qe=`[object AsyncFunction]`,Je=`[object Function]`,Ye=`[object GeneratorFunction]`,Xe=`[object Proxy]`;function Ze(e){if(!je(e))return!1;var t=le(e);return t==Je||t==Ye||t==qe||t==Xe}var Qe=Ze,$e=l[`__core-js_shared__`],et=$e,tt=function(){var e=/[^.]+$/.exec(et&&et.keys&&et.keys.IE_PROTO||``);return e?`Symbol(src)_1.`+e:``}();function nt(e){return!!tt&&tt in e}var rt=nt,it=Function.prototype.toString;function at(e){if(e!=null){try{return it.call(e)}catch{}try{return e+``}catch{}}return``}var ot=at,st=/[\\^$.*+?()[\]{}|]/g,ct=/^\[object .+?Constructor\]$/,lt=Function.prototype,ut=Object.prototype,dt=lt.toString,ft=ut.hasOwnProperty,pt=RegExp(`^`+dt.call(ft).replace(st,`\\$&`).replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,`$1.*?`)+`$`);function mt(e){return!je(e)||rt(e)?!1:(Qe(e)?pt:ct).test(ot(e))}var ht=mt;function gt(e,t){return e?.[t]}var _t=gt;function vt(e,t){var n=_t(e,t);return ht(n)?n:void 0}var yt=vt,bt=yt(l,`WeakMap`),xt=bt;function St(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)}var Ct=St;function wt(){}var Tt=wt,Et=800,Dt=16,Ot=Date.now;function kt(e){var t=0,n=0;return function(){var r=Ot(),i=Dt-(r-n);if(n=r,i>0){if(++t>=Et)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var At=kt;function jt(e){return function(){return e}}var Mt=jt,Nt=function(){try{var e=yt(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Pt=Nt,Ft=Pt?function(e,t){return Pt(e,`toString`,{configurable:!0,enumerable:!1,value:Mt(t),writable:!0})}:Ke,It=Ft,Lt=At(It),Rt=Lt;function zt(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}var Bt=zt;function Vt(e){return e!==e}var Ht=Vt;function Ut(e,t,n){for(var r=n-1,i=e.length;++r<i;)if(e[r]===t)return r;return-1}var Wt=Ut;function Gt(e,t,n){return t===t?Wt(e,t,n):Bt(e,Ht,n)}var Kt=Gt;function qt(e,t){return!!(e!=null&&e.length)&&Kt(e,t,0)>-1}var Jt=qt,Yt=9007199254740991,Xt=/^(?:0|[1-9]\d*)$/;function Zt(e,t){var n=typeof e;return t??=Yt,!!t&&(n==`number`||n!=`symbol`&&Xt.test(e))&&e>-1&&e%1==0&&e<t}var Qt=Zt;function $t(e,t,n){t==`__proto__`&&Pt?Pt(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var en=$t;function tn(e,t){return e===t||e!==e&&t!==t}var nn=tn,rn=Math.max;function an(e,t,n){return t=rn(t===void 0?e.length-1:t,0),function(){for(var r=arguments,i=-1,a=rn(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),Ct(e,this,s)}}var on=an;function sn(e,t){return Rt(on(e,t,Ke),e+``)}var cn=sn,ln=9007199254740991;function un(e){return typeof e==`number`&&e>-1&&e%1==0&&e<=ln}var dn=un;function fn(e){return e!=null&&dn(e.length)&&!Qe(e)}var pn=fn,mn=Object.prototype;function hn(e){var t=e&&e.constructor;return e===(typeof t==`function`&&t.prototype||mn)}var gn=hn;function _n(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var vn=_n,yn=`[object Arguments]`;function bn(e){return de(e)&&le(e)==yn}var xn=bn,Sn=Object.prototype,Cn=Sn.hasOwnProperty,wn=Sn.propertyIsEnumerable,Tn=xn(function(){return arguments}())?xn:function(e){return de(e)&&Cn.call(e,`callee`)&&!wn.call(e,`callee`)},En=Tn;function Dn(){return!1}var On=Dn,kn=typeof exports==`object`&&exports&&!exports.nodeType&&exports,An=kn&&typeof module==`object`&&module&&!module.nodeType&&module,jn=An&&An.exports===kn?l.Buffer:void 0,Mn=(jn?jn.isBuffer:void 0)||On,Nn=Mn,Pn=`[object Arguments]`,Fn=`[object Array]`,In=`[object Boolean]`,Ln=`[object Date]`,Rn=`[object Error]`,zn=`[object Function]`,Bn=`[object Map]`,Vn=`[object Number]`,Hn=`[object Object]`,Un=`[object RegExp]`,Wn=`[object Set]`,Gn=`[object String]`,Kn=`[object WeakMap]`,qn=`[object ArrayBuffer]`,Jn=`[object DataView]`,Yn=`[object Float32Array]`,Xn=`[object Float64Array]`,Zn=`[object Int8Array]`,Qn=`[object Int16Array]`,$n=`[object Int32Array]`,er=`[object Uint8Array]`,tr=`[object Uint8ClampedArray]`,nr=`[object Uint16Array]`,rr=`[object Uint32Array]`,g={};g[Yn]=g[Xn]=g[Zn]=g[Qn]=g[$n]=g[er]=g[tr]=g[nr]=g[rr]=!0,g[Pn]=g[Fn]=g[qn]=g[In]=g[Jn]=g[Ln]=g[Rn]=g[zn]=g[Bn]=g[Vn]=g[Hn]=g[Un]=g[Wn]=g[Gn]=g[Kn]=!1;function ir(e){return de(e)&&dn(e.length)&&!!g[le(e)]}var ar=ir;function or(e){return function(t){return e(t)}}var sr=or,cr=typeof exports==`object`&&exports&&!exports.nodeType&&exports,lr=cr&&typeof module==`object`&&module&&!module.nodeType&&module,ur=lr&&lr.exports===cr&&o.process,dr=function(){try{return lr&&lr.require&&lr.require(`util`).types||ur&&ur.binding&&ur.binding(`util`)}catch{}}(),fr=dr,pr=fr&&fr.isTypedArray,mr=pr?sr(pr):ar,hr=mr,gr=Object.prototype.hasOwnProperty;function _r(e,t){var n=ve(e),r=!n&&En(e),i=!n&&!r&&Nn(e),a=!n&&!r&&!i&&hr(e),o=n||r||i||a,s=o?vn(e.length,String):[],c=s.length;for(var l in e)(t||gr.call(e,l))&&!(o&&(l==`length`||i&&(l==`offset`||l==`parent`)||a&&(l==`buffer`||l==`byteLength`||l==`byteOffset`)||Qt(l,c)))&&s.push(l);return s}var vr=_r;function yr(e,t){return function(n){return e(t(n))}}var br=yr,xr=br(Object.keys,Object),Sr=xr,Cr=Object.prototype.hasOwnProperty;function wr(e){if(!gn(e))return Sr(e);var t=[];for(var n in Object(e))Cr.call(e,n)&&n!=`constructor`&&t.push(n);return t}var Tr=wr;function Er(e){return pn(e)?vr(e):Tr(e)}var Dr=Er;function Or(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var kr=Or,Ar=Object.prototype.hasOwnProperty;function jr(e){if(!je(e))return kr(e);var t=gn(e),n=[];for(var r in e)r==`constructor`&&(t||!Ar.call(e,r))||n.push(r);return n}var Mr=jr;function Nr(e){return pn(e)?vr(e,!0):Mr(e)}var Pr=Nr,Fr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ir=/^\w*$/;function Lr(e,t){if(ve(e))return!1;var n=typeof e;return n==`number`||n==`symbol`||n==`boolean`||e==null||me(e)?!0:Ir.test(e)||!Fr.test(e)||t!=null&&e in Object(t)}var Rr=Lr,zr=yt(Object,`create`),Br=zr;function Vr(){this.__data__=Br?Br(null):{},this.size=0}var Hr=Vr;function Ur(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Wr=Ur,Gr=`__lodash_hash_undefined__`,Kr=Object.prototype.hasOwnProperty;function qr(e){var t=this.__data__;if(Br){var n=t[e];return n===Gr?void 0:n}return Kr.call(t,e)?t[e]:void 0}var Jr=qr,Yr=Object.prototype.hasOwnProperty;function Xr(e){var t=this.__data__;return Br?t[e]!==void 0:Yr.call(t,e)}var Zr=Xr,Qr=`__lodash_hash_undefined__`;function $r(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=Br&&t===void 0?Qr:t,this}var ei=$r;function ti(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])}}ti.prototype.clear=Hr,ti.prototype.delete=Wr,ti.prototype.get=Jr,ti.prototype.has=Zr,ti.prototype.set=ei;var ni=ti;function ri(){this.__data__=[],this.size=0}var ii=ri;function ai(e,t){for(var n=e.length;n--;)if(nn(e[n][0],t))return n;return-1}var oi=ai,si=Array.prototype.splice;function ci(e){var t=this.__data__,n=oi(t,e);return n<0?!1:(n==t.length-1?t.pop():si.call(t,n,1),--this.size,!0)}var li=ci;function ui(e){var t=this.__data__,n=oi(t,e);return n<0?void 0:t[n][1]}var di=ui;function fi(e){return oi(this.__data__,e)>-1}var pi=fi;function mi(e,t){var n=this.__data__,r=oi(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var hi=mi;function gi(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])}}gi.prototype.clear=ii,gi.prototype.delete=li,gi.prototype.get=di,gi.prototype.has=pi,gi.prototype.set=hi;var _i=gi,vi=yt(l,`Map`),yi=vi;function bi(){this.size=0,this.__data__={hash:new ni,map:new(yi||_i),string:new ni}}var xi=bi;function Si(e){var t=typeof e;return t==`string`||t==`number`||t==`symbol`||t==`boolean`?e!==`__proto__`:e===null}var Ci=Si;function wi(e,t){var n=e.__data__;return Ci(t)?n[typeof t==`string`?`string`:`hash`]:n.map}var Ti=wi;function Ei(e){var t=Ti(this,e).delete(e);return this.size-=t?1:0,t}var Di=Ei;function Oi(e){return Ti(this,e).get(e)}var ki=Oi;function Ai(e){return Ti(this,e).has(e)}var ji=Ai;function Mi(e,t){var n=Ti(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var Ni=Mi;function Pi(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])}}Pi.prototype.clear=xi,Pi.prototype.delete=Di,Pi.prototype.get=ki,Pi.prototype.has=ji,Pi.prototype.set=Ni;var Fi=Pi,Ii=`Expected a function`;function Li(e,t){if(typeof e!=`function`||t!=null&&typeof t!=`function`)throw TypeError(Ii);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(Li.Cache||Fi),n}Li.Cache=Fi;var Ri=Li,zi=500;function Bi(e){var t=Ri(e,function(e){return n.size===zi&&n.clear(),e}),n=t.cache;return t}var Vi=Bi,Hi=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ui=/\\(\\)?/g,Wi=Vi(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(``),e.replace(Hi,function(e,n,r,i){t.push(r?i.replace(Ui,`$1`):n||e)}),t}),Gi=Wi;function Ki(e){return e==null?``:Ce(e)}var qi=Ki;function Ji(e,t){return ve(e)?e:Rr(e,t)?[e]:Gi(qi(e))}var Yi=Ji,Xi=1/0;function Zi(e){if(typeof e==`string`||me(e))return e;var t=e+``;return t==`0`&&1/e==-Xi?`-0`:t}var Qi=Zi;function $i(e,t){t=Yi(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[Qi(t[n++])];return n&&n==r?e:void 0}var ea=$i;function ta(e,t,n){var r=e==null?void 0:ea(e,t);return r===void 0?n:r}var na=ta;function ra(e,t){for(var n=-1,r=t.length,i=e.length;++n<r;)e[i+n]=t[n];return e}var ia=ra,aa=d?d.isConcatSpreadable:void 0;function oa(e){return ve(e)||En(e)||!!(aa&&e&&e[aa])}var sa=oa;function ca(e,t,n,r,i){var a=-1,o=e.length;for(n||=sa,i||=[];++a<o;){var s=e[a];t>0&&n(s)?t>1?ca(s,t-1,n,r,i):ia(i,s):r||(i[i.length]=s)}return i}var la=ca;function ua(e){return e!=null&&e.length?la(e,1):[]}var da=ua;function fa(){this.__data__=new _i,this.size=0}var pa=fa;function ma(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}var ha=ma;function ga(e){return this.__data__.get(e)}var _a=ga;function va(e){return this.__data__.has(e)}var ya=va,ba=200;function xa(e,t){var n=this.__data__;if(n instanceof _i){var r=n.__data__;if(!yi||r.length<ba-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Fi(r)}return n.set(e,t),this.size=n.size,this}var Sa=xa;function Ca(e){this.size=(this.__data__=new _i(e)).size}Ca.prototype.clear=pa,Ca.prototype.delete=ha,Ca.prototype.get=_a,Ca.prototype.has=ya,Ca.prototype.set=Sa;var wa=Ca;function Ta(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}var Ea=Ta;function Da(){return[]}var Oa=Da,ka=Object.prototype.propertyIsEnumerable,Aa=Object.getOwnPropertySymbols,ja=Aa?function(e){return e==null?[]:(e=Object(e),Ea(Aa(e),function(t){return ka.call(e,t)}))}:Oa,Ma=ja;function Na(e,t,n){var r=t(e);return ve(e)?r:ia(r,n(e))}var Pa=Na;function Fa(e){return Pa(e,Dr,Ma)}var Ia=Fa,La=yt(l,`DataView`),Ra=La,za=yt(l,`Promise`),Ba=za,Va=yt(l,`Set`),Ha=Va,Ua=`[object Map]`,Wa=`[object Object]`,Ga=`[object Promise]`,Ka=`[object Set]`,qa=`[object WeakMap]`,Ja=`[object DataView]`,Ya=ot(Ra),Xa=ot(yi),Za=ot(Ba),Qa=ot(Ha),$a=ot(xt),eo=le;(Ra&&eo(new Ra(new ArrayBuffer(1)))!=Ja||yi&&eo(new yi)!=Ua||Ba&&eo(Ba.resolve())!=Ga||Ha&&eo(new Ha)!=Ka||xt&&eo(new xt)!=qa)&&(eo=function(e){var t=le(e),n=t==Wa?e.constructor:void 0,r=n?ot(n):``;if(r)switch(r){case Ya:return Ja;case Xa:return Ua;case Za:return Ga;case Qa:return Ka;case $a:return qa}return t});var to=eo,no=l.Uint8Array,ro=no;function io(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 ao=io,oo=`__lodash_hash_undefined__`;function so(e){return this.__data__.set(e,oo),this}var co=so;function lo(e){return this.__data__.has(e)}var uo=lo;function fo(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Fi;++t<n;)this.add(e[t])}fo.prototype.add=fo.prototype.push=co,fo.prototype.has=uo;var po=fo;function mo(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}var ho=mo;function go(e,t){return e.has(t)}var _o=go,vo=1,yo=2;function bo(e,t,n,r,i,a){var o=n&vo,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&yo?new po:void 0;for(a.set(e,t),a.set(t,e);++d<s;){var m=e[d],h=t[d];if(r)var ee=o?r(h,m,d,t,e,a):r(m,h,d,e,t,a);if(ee!==void 0){if(ee)continue;f=!1;break}if(p){if(!ho(t,function(e,t){if(!_o(p,t)&&(m===e||i(m,e,n,r,a)))return p.push(t)})){f=!1;break}}else if(!(m===h||i(m,h,n,r,a))){f=!1;break}}return a.delete(e),a.delete(t),f}var xo=bo;function So(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}var Co=So;function wo(e){var t=-1,n=Array(e.size);return e.forEach(function(e){n[++t]=e}),n}var To=wo,Eo=1,Do=2,Oo=`[object Boolean]`,ko=`[object Date]`,Ao=`[object Error]`,jo=`[object Map]`,Mo=`[object Number]`,No=`[object RegExp]`,Po=`[object Set]`,Fo=`[object String]`,Io=`[object Symbol]`,Lo=`[object ArrayBuffer]`,Ro=`[object DataView]`,zo=d?d.prototype:void 0,Bo=zo?zo.valueOf:void 0;function Vo(e,t,n,r,i,a,o){switch(n){case Ro:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case Lo:return!(e.byteLength!=t.byteLength||!a(new ro(e),new ro(t)));case Oo:case ko:case Mo:return nn(+e,+t);case Ao:return e.name==t.name&&e.message==t.message;case No:case Fo:return e==t+``;case jo:var s=Co;case Po:var c=r&Eo;if(s||=To,e.size!=t.size&&!c)return!1;var l=o.get(e);if(l)return l==t;r|=Do,o.set(e,t);var u=xo(s(e),s(t),r,i,a,o);return o.delete(e),u;case Io:if(Bo)return Bo.call(e)==Bo.call(t)}return!1}var Ho=Vo,Uo=1,Wo=Object.prototype.hasOwnProperty;function Go(e,t,n,r,i,a){var o=n&Uo,s=Ia(e),c=s.length;if(c!=Ia(t).length&&!o)return!1;for(var l=c;l--;){var u=s[l];if(!(o?u in t:Wo.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 h=e[u],ee=t[u];if(r)var te=o?r(ee,h,u,t,e,a):r(h,ee,u,e,t,a);if(!(te===void 0?h===ee||i(h,ee,n,r,a):te)){p=!1;break}m||=u==`constructor`}if(p&&!m){var ne=e.constructor,re=t.constructor;ne!=re&&`constructor`in e&&`constructor`in t&&!(typeof ne==`function`&&ne instanceof ne&&typeof re==`function`&&re instanceof re)&&(p=!1)}return a.delete(e),a.delete(t),p}var Ko=Go,qo=1,Jo=`[object Arguments]`,Yo=`[object Array]`,Xo=`[object Object]`,Zo=Object.prototype.hasOwnProperty;function Qo(e,t,n,r,i,a){var o=ve(e),s=ve(t),c=o?Yo:to(e),l=s?Yo:to(t);c=c==Jo?Xo:c,l=l==Jo?Xo:l;var u=c==Xo,d=l==Xo,f=c==l;if(f&&Nn(e)){if(!Nn(t))return!1;o=!0,u=!1}if(f&&!u)return a||=new wa,o||hr(e)?xo(e,t,n,r,i,a):Ho(e,t,c,n,r,i,a);if(!(n&qo)){var p=u&&Zo.call(e,`__wrapped__`),m=d&&Zo.call(t,`__wrapped__`);if(p||m){var h=p?e.value():e,ee=m?t.value():t;return a||=new wa,i(h,ee,n,r,a)}}return f?(a||=new wa,Ko(e,t,n,r,i,a)):!1}var $o=Qo;function es(e,t,n,r,i){return e===t?!0:e==null||t==null||!de(e)&&!de(t)?e!==e&&t!==t:$o(e,t,n,r,es,i)}var ts=es,ns=1,rs=2;function is(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 wa;if(r)var f=r(l,u,c,e,t,d);if(!(f===void 0?ts(u,l,ns|rs,r,d):f))return!1}}return!0}var as=is;function os(e){return e===e&&!je(e)}var ss=os;function cs(e){for(var t=Dr(e),n=t.length;n--;){var r=t[n],i=e[r];t[n]=[r,i,ss(i)]}return t}var ls=cs;function us(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}var ds=us;function fs(e){var t=ls(e);return t.length==1&&t[0][2]?ds(t[0][0],t[0][1]):function(n){return n===e||as(n,e,t)}}var ps=fs;function ms(e,t){return e!=null&&t in Object(e)}var hs=ms;function gs(e,t,n){t=Yi(t,e);for(var r=-1,i=t.length,a=!1;++r<i;){var o=Qi(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&&dn(i)&&Qt(o,i)&&(ve(e)||En(e)))}var _s=gs;function vs(e,t){return e!=null&&_s(e,t,hs)}var ys=vs,bs=1,xs=2;function Ss(e,t){return Rr(e)&&ss(t)?ds(Qi(e),t):function(n){var r=na(n,e);return r===void 0&&r===t?ys(n,e):ts(t,r,bs|xs)}}var Cs=Ss;function ws(e){return function(t){return t?.[e]}}var Ts=ws;function Es(e){return function(t){return ea(t,e)}}var Ds=Es;function Os(e){return Rr(e)?Ts(Qi(e)):Ds(e)}var ks=Os;function As(e){return typeof e==`function`?e:e==null?Ke:typeof e==`object`?ve(e)?Cs(e[0],e[1]):ps(e):ks(e)}var js=As;function Ms(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}var Ns=Ms;function Ps(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 Fs=Ps,Is=Fs(),Ls=Is;function Rs(e,t){return e&&Ls(e,t,Dr)}var zs=Rs;function Bs(e,t){return function(n,r){if(n==null)return n;if(!pn(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 Vs=Bs,Hs=Vs(zs),Us=Hs;function Ws(e,t,n,r){return Us(e,function(e,i,a){t(r,e,n(e),a)}),r}var Gs=Ws;function Ks(e,t){return function(n,r){var i=ve(n)?Ns:Gs,a=t?t():{};return i(n,e,js(r,2),a)}}var qs=Ks;function Js(e){return de(e)&&pn(e)}var Ys=Js;function Xs(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 Zs=Xs,Qs=200;function $s(e,t,n,r){var i=-1,a=Jt,o=!0,s=e.length,c=[],l=t.length;if(!s)return c;n&&(t=ge(t,sr(n))),r?(a=Zs,o=!1):t.length>=Qs&&(a=_o,o=!1,t=new po(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 ec=$s,tc=cn(function(e,t){return Ys(e)?ec(e,la(t,1,Ys,!0)):[]}),nc=tc;function rc(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}var _=rc;function ic(e){return typeof e==`function`?e:Ke}var ac=ic;function oc(e,t){var n=[];return Us(e,function(e,r,i){t(e,r,i)&&n.push(e)}),n}var sc=oc;function cc(e,t){return(ve(e)?Ea:sc)(e,js(t,3))}var lc=cc,uc=Math.max,dc=Math.min;function fc(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=r-1;return n!==void 0&&(i=We(n),i=n<0?uc(r+i,0):dc(i,r-1)),Bt(e,js(t,3),i,!0)}var pc=fc;function mc(e){return e&&e.length?e[0]:void 0}var hc=mc;function gc(e,t){var n=-1,r=pn(e)?Array(e.length):[];return Us(e,function(e,i,a){r[++n]=t(e,i,a)}),r}var _c=gc;function vc(e,t){return(ve(e)?ge:_c)(e,js(t,3))}var yc=vc;function bc(e,t){return la(yc(e,t),1)}var xc=bc;function Sc(e,t){return e==null?e:Ls(e,ac(t),Pr)}var Cc=Sc,wc=Object.prototype.hasOwnProperty,Tc=qs(function(e,t,n){wc.call(e,n)?e[n].push(t):en(e,n,[t])}),Ec=Tc,Dc=`[object Map]`,Oc=`[object Set]`,kc=Object.prototype.hasOwnProperty;function Ac(e){if(e==null)return!0;if(pn(e)&&(ve(e)||typeof e==`string`||typeof e.splice==`function`||Nn(e)||hr(e)||En(e)))return!e.length;var t=to(e);if(t==Dc||t==Oc)return!e.size;if(gn(e))return!Tr(e).length;for(var n in e)if(kc.call(e,n))return!1;return!0}var jc=Ac,Mc=qs(function(e,t,n){en(e,n,t)}),Nc=Mc,Pc=qs(function(e,t,n){e[n?0:1].push(t)},function(){return[[],[]]}),v=Pc,Fc=Ha&&1/To(new Ha([,-0]))[1]==1/0?function(e){return new Ha(e)}:Tt,Ic=Fc,Lc=200;function Rc(e,t,n){var r=-1,i=Jt,a=e.length,o=!0,s=[],c=s;if(n)o=!1,i=Zs;else if(a>=Lc){var l=t?null:Ic(e);if(l)return To(l);o=!1,i=_o,c=new po}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}var zc=Rc;function Bc(e,t){return e&&e.length?zc(e,js(t,2)):[]}var Vc=Bc,Hc=Math.max;function Uc(e){if(!(e&&e.length))return[];var t=0;return e=Ea(e,function(e){if(Ys(e))return t=Hc(e.length,t),!0}),vn(t,function(t){return ge(e,Ts(t))})}var Wc=Uc,Gc=cn(Wc),Kc=Gc;let y=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 qc(e){switch(e.kind){case y.NEWLINE:case y.SPACE:case y.TAB:case y.SINGLE_LINE_COMMENT:case y.MULTILINE_COMMENT:return!0;default:return!1}}function Jc(e){if(!e)return!1;switch(e){case`+`:case`-`:case`/`:case`%`:case`<`:case`>`:case`=`:case`!`:case`.`:case`&`:case`|`:case`~`:return!0;default:return!1}}function Yc(e){return e!==void 0&&e.kind===y.OP}var Xc=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 Zc(e){return e.trailingTrivia.find(({kind:e})=>e===y.NEWLINE)!==void 0}function Qc(e,t){return t.leadingTrivia.find(({kind:e})=>e===y.NEWLINE)!==void 0||Zc(e)}function $c(e){return e.trailingTrivia.find(({kind:e})=>[y.SPACE,y.TAB].includes(e))!==void 0}function el(e){return e.trailingTrivia.length===0?e.end:el(_(e.trailingTrivia))}function tl(e){return e.leadingTrivia.length===0?e.start:tl(e.leadingTrivia[0])}function nl(e){return[y.SINGLE_LINE_COMMENT,y.MULTILINE_COMMENT].includes(e.kind)}function rl(e){return e?.kind===y.IDENTIFIER&&e.value.toLowerCase()===`as`}function il(e){return e?.kind===y.IDENTIFIER&&e.value.toLowerCase()===`use`}function al(e){return e?.kind===y.IDENTIFIER&&e.value.toLowerCase()===`from`}function ol(e){return e?.kind===y.IDENTIFIER&&e.value.toLowerCase()===`reuse`}function sl(e){return!!e?.isInvalid}var cl=class{constructor(e){this.generator=e}create(e,t,n){return new e(t,this.generator.nextId(),n)}},ll=/^[A-Za-z]:\//;function ul(e=``){return e&&e.replace(/\\/g,`/`).replace(ll,e=>e.toUpperCase())}var dl=/^[/\\]{2}/,fl=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,pl=/^[A-Za-z]:$/,ml=/^\/([A-Za-z]:)?$/,hl=/.(\.[^./]+|\.)$/,gl=function(e){if(e.length===0)return`.`;e=ul(e);let t=e.match(dl),n=xl(e),r=e[e.length-1]===`/`;return e=bl(e,!n),e.length===0?n?`/`:r?`./`:`.`:(r&&(e+=`/`),pl.test(e)&&(e+=`/`),t?n?`//${e}`:`//./${e}`:n&&!xl(e)?`/${e}`:e)},_l=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 gl(t)};function vl(){return typeof process<`u`&&typeof process.cwd==`function`?process.cwd().replace(/\\/g,`/`):`/`}var yl=function(...e){e=e.map(e=>ul(e));let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:vl();!i||i.length===0||(t=`${i}/${t}`,n=xl(i))}return t=bl(t,!n),n&&!xl(t)?`/${t}`:t.length>0?t:`.`};function bl(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 xl=function(e){return fl.test(e)},Sl=function(e){if(e===`..`)return``;let t=hl.exec(ul(e));return t&&t[1]||``},Cl=function(e,t){let n=yl(e).replace(ml,`$1`).split(`/`),r=yl(t).replace(ml,`$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(`/`)},wl=function(e){let t=ul(e).replace(/\/$/,``).split(`/`).slice(0,-1);return t.length===1&&pl.test(t[0])&&(t[0]+=`/`),t.join(`/`)||(xl(e)?`/`:`.`)},Tl=function(e,t){let n=ul(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},El=/^[a-zA-Z]:\//,Dl=class e{constructor(e,t={}){let n=gl(e);if(!xl(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(yl(t,n))}static fromUri(t){try{let n=new URL(t);return new e(gl(n.host?`/${n.host}${n.pathname}`:n.pathname),{protocol:n.protocol})}catch{return new e(gl(t))}}get absolute(){return this.path}get dirname(){return wl(this.path)}get basename(){return Tl(this.path)}get extname(){return Sl(this.path)}resolve(t){return new e(yl(this.dirname,t))}join(...t){return new e(_l(this.path,...t))}relativeTo(e){let t=Cl(e,this.path);return t.startsWith(`.`)?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===void 0)return this.path;let n=El.test(this.path)?`${t}:///`:`${t}://`;return new URL(n+this.path).href}static isRelative(e){return!xl(gl(e))}};function Ol(e,t){if(!Dl.isRelative(t))return;let n=Dl.resolve(e.dirname,t);return n.absolute.endsWith(`.dbml`)?n:Dl.from(n.absolute+`.dbml`)}const kl=[`null`,`true`,`false`],Al=`.dbml`,jl=[`-`,`+`],Ml=`public`,Nl=Dl.from(`/main.dbml`);let b=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.INVALID_INDEXES_CONTEXT=3047]=`INVALID_INDEXES_CONTEXT`,e[e.INVALID_INDEXES_FIELD=3048]=`INVALID_INDEXES_FIELD`,e[e.INVALID_INDEX=3049]=`INVALID_INDEX`,e[e.UNKNOWN_INDEX_SETTING=3050]=`UNKNOWN_INDEX_SETTING`,e[e.DUPLICATE_INDEX_SETTING=3051]=`DUPLICATE_INDEX_SETTING`,e[e.UNEXPECTED_INDEX_SETTING_VALUE=3052]=`UNEXPECTED_INDEX_SETTING_VALUE`,e[e.INVALID_INDEX_SETTING_VALUE=3053]=`INVALID_INDEX_SETTING_VALUE`,e[e.INVALID_PROJECT_CONTEXT=3054]=`INVALID_PROJECT_CONTEXT`,e[e.PROJECT_REDEFINED=3055]=`PROJECT_REDEFINED`,e[e.INVALID_PROJECT_FIELD=3056]=`INVALID_PROJECT_FIELD`,e[e.INVALID_CUSTOM_CONTEXT=3057]=`INVALID_CUSTOM_CONTEXT`,e[e.INVALID_CUSTOM_ELEMENT_VALUE=3058]=`INVALID_CUSTOM_ELEMENT_VALUE`,e[e.INVALID_ELEMENT_IN_SIMPLE_BODY=3059]=`INVALID_ELEMENT_IN_SIMPLE_BODY`,e[e.INVALID_TABLE_PARTIAL_CONTEXT=3060]=`INVALID_TABLE_PARTIAL_CONTEXT`,e[e.INVALID_TABLE_PARTIAL_ELEMENT_NAME=3061]=`INVALID_TABLE_PARTIAL_ELEMENT_NAME`,e[e.INVALID_TABLE_PARTIAL_SETTING_VALUE=3062]=`INVALID_TABLE_PARTIAL_SETTING_VALUE`,e[e.DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME=3063]=`DUPLICATE_TABLE_PARTIAL_ELEMENT_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_SETTING=3064]=`DUPLICATE_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_PARTIAL_INJECTION=3065]=`INVALID_TABLE_PARTIAL_INJECTION`,e[e.INVALID_TABLE_PARTIAL_INJECTION_OP=3066]=`INVALID_TABLE_PARTIAL_INJECTION_OP`,e[e.INVALID_TABLE_PARTIAL_INJECTION_NAME=3067]=`INVALID_TABLE_PARTIAL_INJECTION_NAME`,e[e.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME=3068]=`DUPLICATE_TABLE_PARTIAL_INJECTION_NAME`,e[e.UNKNOWN_TABLE_PARTIAL_SETTING=3069]=`UNKNOWN_TABLE_PARTIAL_SETTING`,e[e.INVALID_TABLE_SETTING_VALUE=3070]=`INVALID_TABLE_SETTING_VALUE`,e[e.INVALID_CHECKS_CONTEXT=3071]=`INVALID_CHECKS_CONTEXT`,e[e.INVALID_CHECKS_FIELD=3072]=`INVALID_CHECKS_FIELD`,e[e.INVALID_CHECK=3073]=`INVALID_CHECK`,e[e.UNKNOWN_CHECK_SETTING=3074]=`UNKNOWN_CHECK_SETTING`,e[e.DUPLICATE_CHECK_SETTING=3075]=`DUPLICATE_CHECK_SETTING`,e[e.INVALID_CHECK_SETTING_VALUE=3076]=`INVALID_CHECK_SETTING_VALUE`,e[e.INVALID_RECORDS_CONTEXT=3077]=`INVALID_RECORDS_CONTEXT`,e[e.INVALID_RECORDS_NAME=3078]=`INVALID_RECORDS_NAME`,e[e.INVALID_RECORDS_FIELD=3079]=`INVALID_RECORDS_FIELD`,e[e.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS=3080]=`DUPLICATE_COLUMN_REFERENCES_IN_RECORDS`,e[e.DUPLICATE_RECORDS_FOR_TABLE=3081]=`DUPLICATE_RECORDS_FOR_TABLE`,e[e.INVALID_USE_CONTEXT=3082]=`INVALID_USE_CONTEXT`,e[e.INVALID_USE_SPECIFIER_KIND=3083]=`INVALID_USE_SPECIFIER_KIND`,e[e.INVALID_USE_SPECIFIER_NAME=3084]=`INVALID_USE_SPECIFIER_NAME`,e[e.INVALID_DIAGRAMVIEW_CONTEXT=3085]=`INVALID_DIAGRAMVIEW_CONTEXT`,e[e.DUPLICATE_DIAGRAMVIEW_NAME=3086]=`DUPLICATE_DIAGRAMVIEW_NAME`,e[e.INVALID_DIAGRAMVIEW_FIELD=3087]=`INVALID_DIAGRAMVIEW_FIELD`,e[e.DUPLICATE_DIAGRAMVIEW_FIELD=3088]=`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}({});var x=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 Pl(this.code,this.message,this.nodeOrToken)}get filepath(){return this.nodeOrToken.filepath}},Pl=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,x.prototype)}get filepath(){return this.nodeOrToken.filepath}};function Fl(e){return!!e.match(/(\p{L}|_|\p{M})/gu)}function Il(e){if(!e)return!1;let t=e[0];return t>=`0`&&t<=`9`}function Ll(e){let[t]=e;return Il(t)||Fl(t)&&t.toLowerCase()>=`a`&&t.toLowerCase()<=`f`}function Rl(e){return Fl(e)||Il(e)}function zl(e){let t=O(e);return t!==void 0&&t.length>0}function Bl(e){return Vl(e)}function Vl(e){return e instanceof fd&&e.expression instanceof dd}function Hl(e){return e instanceof L&&e.op?.value===`~`&&w(e.expression)}function Ul(e){return e===`-`||e===`<>`||e===`>`||e===`<`}function Wl(e){if(!(e instanceof fd)||!(e.expression instanceof ld)||e.expression.literal?.kind!==y.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(!Ll(t[e]))return!1;return!0}function Gl(e){if(C(e)||Kl(e)||Zl(e)&&[`true`,`false`,`null`].includes(e.expression.variable.value.toLowerCase())||e instanceof L&&jl.includes(e.op?.value)&&Kl(e.expression)||e instanceof ad)return!0;if(!e||!Ql(e))return!1;let t=hu(e);return t.length===2||t.length===3}function Kl(e){return e instanceof L?jl.includes(e.op.value)?Kl(e.expression):!1:e instanceof fd&&e.expression instanceof ld&&e.expression.literal?.kind===y.NUMERIC_LITERAL}function ql(e){if(!(e instanceof L)||!Ul(e.op?.value))return!1;let t=O(e.expression);return t!==void 0&&t.length>0}function Jl(e){return e instanceof od&&e.elementList.every(w)}function Yl(e){if(!(e instanceof V||T(e)||e instanceof fd||e instanceof md))return!1;for(;e instanceof V||e instanceof md;)if(e instanceof V){if(e.callee===void 0||e.argumentList===void 0||!e.argumentList.elementList.every(e=>Kl(e)||C(e)||Zl(e)))return!1;e=e.callee}else if(e instanceof md){if(e.array===void 0||e.indexer===void 0||!e.indexer.elementList.every(e=>!e.colon&&!e.value&&Kl(e.name)))return!1;e=e.array}let t=O(e);return t!==void 0&&t.length>0}function S(e){let t={},r=[];return e?(e.elementList.forEach(e=>{if(!e.name)return;if(e.name instanceof fd){r.push(new x(b.INVALID_SETTINGS,`A setting name must be a stream of identifiers`,e.name));return}let n=du(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 C(e){return e instanceof fd&&(e.expression instanceof dd&&e.expression.variable instanceof Xc&&e.expression.variable.kind===y.QUOTED_STRING||e.expression instanceof ld&&e.expression.literal?.kind===y.STRING_LITERAL)}function w(e){return e instanceof fd&&e.expression instanceof dd&&e.expression.variable instanceof Xc}function Xl(e){return e?e instanceof ud:!1}function Zl(e){return e instanceof fd&&e.expression instanceof dd&&e.expression.variable?.kind===y.IDENTIFIER}function T(e){return e instanceof rd&&e.leftExpression instanceof N&&e.rightExpression instanceof N&&e.op?.value===`.`}function Ql(e){return w(e)?!0:T(e)&&w(e.rightExpression)&&Ql(e.leftExpression)}function E(e,t){return e instanceof F&&e.isKind(t)}function $l(e){return e instanceof $u}function eu(e,t){return e instanceof ed&&(t===void 0||e.isKind(t))}function tu(e){return e instanceof Qu}function D(e,...t){return e instanceof R&&e.parent instanceof F&&e.parent.isKind(...t)}function nu(e,t){let n=e.parent;return n instanceof F&&n.isKind(t)&&!!n.body&&n.body.strictlyContains(e)}function ru(e,t){let n=e.parentOfKind(R);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 iu(e){return!!e.parentOfKind(B)}function au(e,t){let n=e.parentOfKind(I);return!n||(n.name instanceof fd?A(n.name):du(n.name))?.toLowerCase()!==t?!1:!!n.value?.containsEq(e)}function ou(e){return!(e instanceof rd)||!Ul(e.op?.value)?!1:gu(e.leftExpression)!==void 0&&gu(e.rightExpression)!==void 0}function su(e){let t=gu(e.leftExpression),n=gu(e.rightExpression);if(t===void 0||n===void 0)return!1;let{tupleElements:r}=t,{tupleElements:i}=n;return r?.length===i?.length}function cu(e){return e instanceof fd&&e.expression instanceof dd||e instanceof ad}function lu(e){let t=e.parentNode;return!T(t)||t.rightExpression!==e?!1:!(T(t.parentNode)&&t.parentNode.leftExpression===t)}function uu(e){if(w(e))return e.expression.variable}function du(e){if(e===void 0)return;let t=e.identifiers.map(e=>e.value).join(` `);if(t!==``)return t}function fu(e){if(!(e instanceof F))return;let t=O(e?.name);return t===void 0?void 0:t.join(`.`)}function pu(e){return e.elementList.length===0}function mu(e){return e?.body?e.body instanceof z?e.body.body:[e.body]:[]}function hu(e){if(!e)return;if(!T(e))return[e];let t=hu(e.leftExpression);if(t)return t.push(e.rightExpression),t}function O(e){if(e===void 0)return;let t=hu(e);if(!t)return;let n=[];for(let e of t){let t=A(e);if(typeof t!=`string`)return;n.push(t)}return n}function gu(e){if(e===void 0)return;let t=hu(e);if(!t||t.length===0)return;let n=[];if(!w(_(t))){let e=t.pop();if(Jl(e))n=e.elementList;else return}let r=t;if(r.every(w))return{variables:r,tupleElements:n}}function _u(e){if(cu(e))return e instanceof ad?{functional:[e],nonFunctional:[]}:{functional:[],nonFunctional:[e]};if(e instanceof od&&e.elementList.every(cu))return{functional:e.elementList.filter(e=>e instanceof ad),nonFunctional:e.elementList.filter(w)}}function k(e){if(C(e))return e.expression instanceof dd?e?.expression?.variable?.value:e.expression.literal.value}function vu(e){return e instanceof fd&&e.expression instanceof ld&&e.expression.literal?.kind===y.NUMERIC_LITERAL?Number(e.expression.literal.value):null}function yu(e){if(!(e instanceof V)||!e.callee)return;let t=hu(e.callee);if(!t||t.length===0||!t.every(w))return;let n=[];return Jl(e.argumentList)&&(n=[...e.argumentList.elementList]),{variables:t,args:n}}function A(e){if(w(e))return e.expression.variable.value}function bu(e){let t=e?.expression.variable?.value;return t===void 0?void 0:t}function xu(e){return e instanceof L?`${e.op?.value}${xu(e.expression)}`:e.expression.literal.value}function Su(e){return e instanceof L?e.op?.value===`-`?-Su(e.expression):Su(e.expression):Number.parseFloat(e.expression.literal.value)}function j(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 Cu(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 wu(e){let t=O(e);return!t||t.length===0?{schemaName:[],name:``}:{name:t[t.length-1],schemaName:t.slice(0,-1)}}function Tu(e){if(e instanceof fd&&e.expression instanceof ld&&e.expression.literal?.kind===y.COLOR_LITERAL)return e.expression.literal.value}function Eu(e){if(e){if(C(e)){let t=k(e);if(t!==void 0)return{value:t,type:`string`}}if(Kl(e))return{type:`number`,value:Su(e)};if(Zl(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof ad&&e.value)return{value:e.value.value,type:`expression`};if(Ql(e)){let t=hu(e)?.at(-1),n=t?A(t):void 0;if(n!==void 0)return{value:n,type:`string`}}}}function Du(e,t){let r=``,i=null;if(t instanceof V){if(i=(t.argumentList?.elementList??[]).map(e=>Kl(e)?xu(e):C(e)?k(e):A(e)).join(`,`),r=`(${i})`,!t.callee)return new n({schemaName:null,type_name:``,args:i});t=t.callee}for(;t instanceof V||t instanceof md;)if(t instanceof V){if(r=`(${(t.argumentList?.elementList??[]).map(e=>Kl(e)?xu(e):C(e)?k(e):A(e)).join(`,`)})${r}`,!t.callee)break;t=t.callee}else if(t instanceof md){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}=wu(t);return o.length>1?new n({schemaName:o[0]??null,type_name:`${a}${r}`,args:i},[new x(b.UNSUPPORTED,`Nested schema is not supported`,t)]):new n({schemaName:o.length===0?null:o[0],type_name:`${a}${r}`,args:i})}let M=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}({});const Ou={Table:M.Table,Enum:M.Enum,TableGroup:M.TableGroup,TablePartial:M.TablePartial,Note:M.StickyNote,Schema:M.Schema};var ku=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},Au=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 j(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()}},ju=class e extends Au{constructor({name:e,parent:t},n,r){super({kind:M.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(`.`)===Ml}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}},Mu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.Enum,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Nu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.EnumField,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=Cu(k(i));if(a)return{value:a,token:j(r)}}},Pu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.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 Xu))}mergedColumns(e){return this.members(e).filter(e=>e.isKind(M.Column))}partialInjections(e){return this.members(e).filter(e=>e.isKind(M.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=Cu(k(i));if(a)return{value:a,token:j(r)}}headercolor(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.[i.HeaderColor]?.length?Tu(n[i.HeaderColor].at(0)?.value):void 0}refs(e){return this.metadata(e).filter(e=>e.kind===gd.Ref)}checks(e){return this.metadata(e).filter(e=>e.kind===gd.TableChecks)}indexes(e){return this.metadata(e).filter(e=>e.kind===gd.Indexes)}records(e){return this.metadata(e).filter(e=>e.kind===gd.Records)}resolvedPartials(e){return this.partialInjections(e).flatMap(n=>{if(!(n.declaration instanceof R)||!Hl(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===gd.Indexes));return[...t,...n]}mergedChecks(e){let t=this.checks(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===gd.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=Tu(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=Cu(k(a));if(o)return{value:o,token:j(i)}},r=n(this);for(let t of this.resolvedPartials(e)){let e=n(t);e&&(r=e)}return r}},Fu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.Column,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}pk(e){if(!this.declaration)return!1;let n=e.nodeSettings(this.declaration).getFiltered(t);return!!(n?.[i.PK]?.length||n?.[i.PrimaryKey]?.length)}unique(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Unique]?.length:!1}nullable(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(n?.[i.NotNull]?.length)return!1;if(n?.[i.Null]?.length)return!0}increment(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Increment]?.length:!1}default(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t)?.[i.Default]?.at(0)?.value;if(n)return Eu(n)}type(e){if(!(this.declaration instanceof R))return;let n=Du(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 Mu?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===gd.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=Cu(k(i));if(a)return{value:a,token:j(r)}}},Iu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.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(M.TableGroupField))}color(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.color?.length?Tu(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=Cu(k(i));if(a)return{value:a,token:j(r)}}},Lu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.TableGroupField,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Ru=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.StickyNote,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},zu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.TablePartial,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Bu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.PartialInjection,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Vu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramView,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Hu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewTopLevelWildcard,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Uu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewTable,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Wu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewTableGroup,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Gu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewNote,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Ku=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewSchema,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},qu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.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 ju&&r.inNestedSchema(e,t))return!0;return!1}},Ju=class extends Au{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}},Yu=class extends Au{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($u);return!e||e.isReuse}get originalSymbol(){return this.usedSymbol?this.usedSymbol.originalSymbol:this}},Xu=class extends Fu{constructor({declaration:e,name:t,injectionDeclaration:n},r,i){super({declaration:e,name:t},r,i),this.injectionDeclaration=n,this.name=t}},Zu=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},N=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 Xc?tl(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 Xc?el(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 F||e instanceof Qu)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}};let 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}({});var Qu=class extends N{constructor({body:e=[],eof:t,source:n},r,i){super(r,P.PROGRAM,i,[...e,t]),this.source=n,this.body=e,this.eof=t}get declarations(){return this.body.filter(e=>e.kind===P.ELEMENT_DECLARATION)}get uses(){return this.body.filter(e=>e.kind===P.USE_DECLARATION)}},$u=class extends N{constructor({useKeyword:e,specifiers:t,fromKeyword:n,importPath:r},i,a){super(i,P.USE_DECLARATION,a,[e,t,n,r]),this.useKeyword=e,this.specifiers=t,this.fromKeyword=n,this.importPath=r}get isReuse(){return ol(this.useKeyword)}},ed=class extends N{constructor({importKind:e,name:t,asKeyword:n,alias:r},i,a){super(i,P.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(M).find(t=>t.toLowerCase()===e)}},td=class extends N{constructor({openBrace:e,specifiers:t=[],closeBrace:n},r,i){super(r,P.USE_SPECIFIER_LIST,i,[e,...t,n]),this.openBrace=e,this.specifiers=t,this.closeBrace=n}},F=class e extends N{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c,l){if(super(c,P.ELEMENT_DECLARATION,l,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof R||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))}},nd=class extends N{constructor({identifiers:e=[]},t,n){super(t,P.IDENTIFIER_STREAM,n,e||[]),this.identifiers=e}},I=class extends N{constructor({name:e,colon:t,value:n},r,i){super(r,P.ATTRIBUTE,i,[e,t,n]),this.name=e,this.value=n,this.colon=t}},L=class extends N{constructor({op:e,expression:t},n,r){super(n,P.PREFIX_EXPRESSION,r,[e,t]),this.op=e,this.expression=t}},rd=class extends N{constructor({op:e,leftExpression:t,rightExpression:n},r,i){super(r,P.INFIX_EXPRESSION,i,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},id=class extends N{constructor({op:e,expression:t},n,r){super(n,P.POSTFIX_EXPRESSION,r,[t,e]),this.op=e,this.expression=t}},ad=class extends N{constructor({value:e},t,n){super(t,P.FUNCTION_EXPRESSION,n,[e]),this.value=e}},R=class extends N{constructor({callee:e,args:t=[]},n,r){super(n,P.FUNCTION_APPLICATION,r,[e,...t]),this.callee=e,this.args=t}},z=class extends N{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r,i){super(r,P.BLOCK_EXPRESSION,i,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},B=class extends N{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i,a){super(i,P.LIST_EXPRESSION,a,[e,...hd(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},od=class extends N{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i,a){super(i,P.TUPLE_EXPRESSION,a,[e,...hd(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},sd=class extends N{constructor({elementList:e=[],commaList:t=[]},n,r){super(n,P.COMMA_EXPRESSION,r,[...hd(e,t)]),this.elementList=e,this.commaList=t}},cd=class extends od{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r,i){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r,i),this.kind=P.GROUP_EXPRESSION}},V=class extends N{constructor({callee:e,argumentList:t},n,r){super(n,P.CALL_EXPRESSION,r,[e,t]),this.callee=e,this.argumentList=t}},ld=class extends N{constructor({literal:e},t,n){super(t,P.LITERAL,n,[e]),this.literal=e}},ud=class extends N{constructor({token:e},t,n){super(t,P.WILDCARD,n,[e]),this.token=e}},dd=class extends N{constructor({variable:e},t,n){super(t,P.VARIABLE,n,[e]),this.variable=e}},fd=class extends N{constructor({expression:e},t,n){super(t,P.PRIMARY_EXPRESSION,n,[e]),this.expression=e}},pd=class extends N{constructor({prevToken:e},t,n){let r=Xc.create(y.SPACE,n,e.endPos,e.endPos,` `,!1);super(t,P.EMPTY,n,[r])}},md=class extends N{constructor({expression:e,indexer:t},n,r){super(n,P.ARRAY,r,[e,t]),this.array=e,this.indexer=t}};function hd(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?da(Kc(e,t)):da(Kc(t,e))).filter(e=>e!==null)}let gd=function(e){return e.Ref=`ref`,e.PartialRef=`partial ref`,e.TableChecks=`table checks`,e.Indexes=`indexes`,e.Records=`records`,e.Project=`project`,e}({});var _d=class e{static#e=this.id=0;constructor(t){this.declaration=t,this.id=++e.id}intern(){return`metadata@${this.declaration.filepath.intern()}:${this.id}`}},vd=class extends _d{constructor(e){super(e),this.kind=gd.Ref}container(e){let n=this.declaration.parentOfKind(F);if(n?.isKind(r.Table))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return[];let n=t.callee;return n instanceof rd?wd(e,n.leftExpression):[]}if(this.declaration instanceof I){let n=this.declaration.parentOfKind(R);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}return[]}rightColumns(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return[];let n=t.callee;return n instanceof rd?wd(e,n.rightExpression):[]}if(this.declaration instanceof I){let t=this.declaration.value;return t instanceof L?wd(e,t.expression):[]}return[]}leftTable(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return;let n=t.callee;return n instanceof rd?Td(e,n.leftExpression):void 0}if(this.declaration instanceof I)return this.container(e)}rightTable(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return;let n=t.callee;return n instanceof rd?Td(e,n.rightExpression):void 0}if(this.declaration instanceof I){let t=this.declaration.value;return t instanceof L?Td(e,t.expression)??this.container(e):void 0}}op(e){if(this.declaration instanceof F){let e=mu(this.declaration)[0];if(!(e instanceof R))return;let t=e.callee;return t instanceof rd?t.op?.value:void 0}if(this.declaration instanceof I){let e=this.declaration.value;return e instanceof L?e.op?.value:void 0}}leftToken(){if(this.declaration instanceof F){let e=mu(this.declaration)[0];if(e instanceof R){let t=e.callee;if(t instanceof rd&&t.leftExpression)return t.leftExpression}}if(this.declaration instanceof I){let e=this.declaration.parentOfKind(R);if(e)return e}return this.declaration}rightToken(){if(this.declaration instanceof F){let e=mu(this.declaration)[0];if(e instanceof R){let t=e.callee;if(t instanceof rd&&t.rightExpression)return t.rightExpression}}return this.declaration instanceof I,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))}},yd=class extends _d{constructor(e){super(e),this.kind=gd.PartialRef}container(e){let n=this.declaration.parentOfKind(F);if(n?.isKind(r.TablePartial))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(!(this.declaration instanceof I))return[];let n=this.declaration.parentOfKind(R);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}rightColumns(e){if(!(this.declaration instanceof I))return[];let t=this.declaration.value;return t instanceof L?wd(e,t.expression):[]}leftTablePartial(e){if(this.declaration instanceof I)return this.container(e)}rightTable(e){if(!(this.declaration instanceof I))return;let t=this.declaration.value;if(t instanceof L)return Td(e,t.expression)??this.container(e)}op(e){if(!(this.declaration instanceof I))return;let t=this.declaration.value;if(t instanceof L)return t.op?.value}leftToken(){if(this.declaration instanceof I){let e=this.declaration.parentOfKind(R);if(e)return e}return this.declaration}rightToken(){return this.declaration instanceof I,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))}},bd=class extends _d{constructor(e){super(e),this.kind=gd.TableChecks,this.ownerTable=e.parentNode?.parentOfKind(F)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},xd=class extends _d{constructor(e){super(e),this.kind=gd.Indexes,this.ownerTable=e.parentNode?.parentOfKind(F)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},Sd=class extends _d{constructor(e){super(e),this.kind=gd.Records}table(e){let n=this.declaration,i=n.parent;if(i instanceof F&&i.isKind(r.Table))return e.nodeSymbol(i).getFiltered(t);let a=n.name;if(!(a instanceof V))return;let o=yu(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)):[]}},Cd=class extends _d{constructor(e){super(e),this.kind=gd.Project}owners(e){let n=this.declaration.filepath,r=e.parseFile(n).getValue().ast,i=e.nodeSymbol(r).getFiltered(t);return i?[i]:[]}};function wd(e,n){if(!n)return[];let r=gu(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 Td(e,n){if(!n)return;let r=gu(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 Ed=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return[]}},Dd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}interpret(){let e=this.declarationNode.body;return e instanceof z?new n(e.body.flatMap(e=>{if(!(e instanceof R))return[];let t=j(e),n=e.callee instanceof ad?e.callee.value?.value??``:``,r,a=e.args.find(e=>e instanceof B);return a&&(r=k(S(a).getValue()[i.Name]?.at(0)?.value)),{expression:n,name:r,token:t}})):new n([])}};const Od={nodeMetadata(t,i){if(E(i,r.Checks)){let t=i.parent;return!t||!E(t,r.Table)&&!E(t,r.TablePartial)?n.create(e):n.create(new bd(i))}return n.create(e)},bindNode(t,i){return E(i,r.Checks)?n.create(void 0,new Ed(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===gd.TableChecks?r.declaration instanceof F?new Dd(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function kd(e,t,n){let r=t,i=e;if(i instanceof V&&i.argumentList&&(r=[i.argumentList,...r],i=i.callee),!i||!Zl(i)||r.length===0)return;let a=[...r],o=uu(i),s=a.pop();if(!(s instanceof z))return;let c=_(a)instanceof B?a.pop():void 0;if(a.length===3){let e=uu(a[1]);return!e||!rl(e)?void 0:n.create(F,{type:o,name:a[0],as:e,alias:a[2],attributeList:c,body:s})}if(a.length===1)return n.create(F,{type:o,name:a[0],attributeList:c,body:s});if(a.length===0)return n.create(F,{type:o,attributeList:c,body:s})}function H(e){e&&(e instanceof Xc?Ad(e):jd(e))}function Ad(e){e.kind!==y.EOF&&(e.isInvalid=!0)}function jd(e){if(e instanceof F)H(e.type),H(e.name),H(e.as),H(e.alias),H(e.bodyColon),H(e.attributeList),H(e.body);else if(e instanceof nd)e.identifiers.forEach(H);else if(e instanceof I)H(e.name),H(e.colon),H(e.value);else if(e instanceof L)H(e.op),H(e.expression);else if(e instanceof rd)H(e.leftExpression),H(e.op),H(e.rightExpression);else if(e instanceof id)H(e.op),H(e.expression);else if(e instanceof z)H(e.blockOpenBrace),e.body.forEach(H),H(e.blockCloseBrace);else if(e instanceof B)H(e.listOpenBracket),e.commaList.forEach(H),e.elementList.forEach(H),H(e.listCloseBracket);else if(e instanceof od)H(e.tupleOpenParen),e.commaList.forEach(H),e.elementList.forEach(H),H(e.tupleCloseParen);else if(e instanceof sd)e.commaList.forEach(H),e.elementList.forEach(H);else if(e instanceof V)H(e.callee),H(e.argumentList);else if(e instanceof R)H(e.callee),e.args.forEach(H);else if(e instanceof fd)H(e.expression);else if(e instanceof ad)H(e.value);else if(e instanceof dd)H(e.variable);else if(e instanceof ld)H(e.literal);else if(e instanceof cd)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof md)H(e.array),H(e.indexer);else if(e instanceof Qu)e.body.forEach(H),H(e.eof);else if(!(e instanceof pd))if(e instanceof $u)H(e.useKeyword),H(e.specifiers),H(e.fromKeyword),H(e.importPath);else if(e instanceof td)H(e.openBrace),e.specifiers.forEach(H),H(e.closeBrace);else if(e instanceof ed)H(e.importKind),H(e.name);else if(e instanceof ud)H(e.token);else throw Error(`Unreachable case in markInvalidNode`)}function Md(...e){return e.filter(e=>e!==void 0)}function Nd(e){if(e instanceof Qu)return Md(...e.body,e.eof);if(e instanceof F)return Md(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof I)return Md(e.name,e.colon,e.value);if(e instanceof nd)return e.identifiers;if(e instanceof ld)return e.literal?[e.literal]:[];if(e instanceof dd)return Md(e.variable);if(e instanceof L)return Md(e.op,e.expression);if(e instanceof rd)return Md(e.leftExpression,e.op,e.rightExpression);if(e instanceof id)return Md(e.expression,e.op);if(e instanceof ad)return Md(e.value);if(e instanceof R)return Md(e.callee,...e.args);if(e instanceof z)return Md(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof B)return Md(e.listOpenBracket,...Pd(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof od)return Md(e.tupleOpenParen,...Pd(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof sd)return Md(...Pd(e.elementList,e.commaList));if(e instanceof V)return Md(e.callee,e.argumentList);if(e instanceof fd)return Md(e.expression);if(e instanceof md)return Md(e.array,e.indexer);if(e instanceof pd)return[];if(e instanceof $u)return Md(e.useKeyword,e.specifiers,e.fromKeyword,e.importPath);if(e instanceof td)return Md(e.openBrace,...e.specifiers,e.closeBrace);if(e instanceof ed)return Md(e.importKind,e.name);if(e instanceof ud)return Md(e.token);throw e instanceof cd?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Pd(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 Fd(e,t){let n=[...e.parseProject().values()].some(e=>e.getErrors().length>0),r=e.validateNode(t).getErrors().length>0,i=e.bindNode(t).getErrors().length>0;return!n&&!r&&!i}function Id(e){if(!e)return[];if(w(e))return[{variables:[e],tupleElements:[]}];if(e instanceof rd){let t=gu(e);return t?[t]:[...Id(e.leftExpression),...Id(e.rightExpression)]}if(e instanceof L||e instanceof id)return Id(e.expression);if(e instanceof od){let t=gu(e);return t?[t]:e.elementList.flatMap(Id)}return[]}function Ld(e,n){let r=n.parentNode;if(!r||!T(r)||r.rightExpression!==n)return;let i=r.leftExpression;for(;T(i);)i=i.rightExpression;return e.nodeReferee(i).getFiltered(t)??void 0}function Rd(e){switch(e){case`<`:return[`1`,`*`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`-`:return[`1`,`1`];default:return}}var zd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){let[,t]=v(e.body,e=>e instanceof R);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>!e.type||!(e.body instanceof z)?[]: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]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:[e.callee,...e.args].flatMap(Id).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindNoteReferences(e){let[t]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:Id(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindTableGroupReferences(e){let[t]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:Id(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindSchemaReferences(e){let[t]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:Id(e.callee).flatMap(e=>e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors())))}},Bd=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 z&&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 R&&Xl(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]=v(e.body,e=>e instanceof F),n=new Set;for(let e of t){let t=e.type?.value.toLowerCase();t&&n.add(t),e.body instanceof z&&this.interpretSubBlock(e.body,t)}let r=this.diagramView.visibleEntities;return(n.has(`tables`)&&r.tables!==null||n.has(`tablegroups`)&&r.tableGroups!==null||n.has(`schemas`)&&r.schemas!==null)&&(n.has(`tables`)||(r.tables=[]),n.has(`tablegroups`)||(r.tableGroups=[]),n.has(`schemas`)||(r.schemas=[])),n.has(`tables`)&&this.diagramViewExplicitlySet.add(`tables`),n.has(`tablegroups`)&&this.diagramViewExplicitlySet.add(`tableGroups`),n.has(`schemas`)&&this.diagramViewExplicitlySet.add(`schemas`),n.has(`notes`)&&this.diagramViewExplicitlySet.add(`stickyNotes`),[]}interpretSubBlock(e,n){if(!n)return;if(e.body.some(e=>e instanceof R&&Xl(e.callee))){let e=this.diagramViewWildcards;switch(n){case`tables`:this.diagramView.visibleEntities.tables=[],e.add(`tables`);break;case`notes`:this.diagramView.visibleEntities.stickyNotes=[],e.add(`stickyNotes`);break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=[],e.add(`tableGroups`);break;case`schemas`:this.diagramView.visibleEntities.schemas=[],e.add(`schemas`);break}return}if(e.body.length===0)return;let r=[];for(let n of e.body){if(!(n instanceof R))continue;let e=n.callee&&this.compiler.nodeReferee(n.callee).getFiltered(t);if(e?.declaration instanceof F){let t=O(e.declaration.name)??[];if(t.length>0){let e=t[t.length-1],n=t.length>1?t.slice(0,-1).join(`.`):Ml;r.push({name:e,schemaName:n});continue}}let i=O(n.callee)??[];if(i.length===0)continue;let a=i[i.length-1],o=i.length>1?i[0]:Ml;r.push({name:a,schemaName:o})}switch(n){case`tables`:this.diagramView.visibleEntities.tables=r.length>0?r:null;break;case`notes`:this.diagramView.visibleEntities.stickyNotes=r.length>0?r.map(e=>({name:e.name})):null;break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=r.length>0?r.map(e=>({name:e.name})):null;break;case`schemas`:this.diagramView.visibleEntities.schemas=r.length>0?r.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?Vc(r.filter(e=>e.isKind(M.TableGroup)),e=>e.originalSymbol.intern()).flatMap(e=>e.name===void 0?[]:{name:e.name}):[]}};function Vd(e){return e==null?e:Array.isArray(e)?e.map(String).join(`\0`):typeof e==`object`&&`intern`in e?e.intern():e}let Hd=function(e){return e.Table=`table`,e}({});const Ud={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`DiagramView '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t,n){return new x(b.DUPLICATE_DIAGRAMVIEW_FIELD,`Duplicate ${t} ${e}`,n)}},Wd={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.DiagramView)?new n(i.symbolFactory.create(Vu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramView)&&a instanceof ud?new n(i.symbolFactory.create(Hu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewNotes)?new n(i.symbolFactory.create(Gu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewTables)?new n(i.symbolFactory.create(Uu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewTableGroups)?new n(i.symbolFactory.create(Wu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewSchemas)?new n(i.symbolFactory.create(Ku,{declaration:a,name:o},a.filepath)):n.create(e)},nodeReferee(i,a){if(a.parent&&iu(a))return n.create(e);let o=Gd(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)?Kd(i,c,a):o.isKind(r.DiagramViewNotes)?qd(i,c,a,M.StickyNote):o.isKind(r.DiagramViewTableGroups)?qd(i,c,a,M.TableGroup):o.isKind(r.DiagramViewSchemas)?Jd(i,c,a):n.create(e):n.create(void 0)},symbolMembers(i,a){if(!a.isKind(M.DiagramView))return n.create(e);if(!a.declaration)return n.create([]);let o=a.declaration;if(!E(o,r.DiagramView))return n.create([]);let s=[],c=[];for(let e of mu(o))if(e instanceof R){let n=i.nodeSymbol(e).getFiltered(t);n&&c.push(n)}else e instanceof F&&c.push(...mu(e).flatMap(e=>i.nodeSymbol(e).getFiltered(t)??[]));let l=new Map;for(let e of c){if(!e.isKind(M.DiagramViewSchema,M.DiagramViewTableGroup,M.DiagramViewTable,M.DiagramViewNote)||!e.declaration)continue;let n=(i.nodeFullname(e.declaration).getFiltered(t)||[]).map(py).join(`.`),r=`${e.kind}:${n}`;if(n!==void 0){let t=e.declaration,i=l.get(r);i?(s.push(Ud.getFieldDuplicateError(n,e.kind,i)),s.push(Ud.getFieldDuplicateError(n,e.kind,t))):l.set(r,t)}}return n.create(c,s)},bindNode(i,a){if(!E(a,r.DiagramView))return n.create(e);let o=new zd(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 Vu?r.declaration instanceof F?new Bd(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function Gd(e){let t=e.parentOfKind(R);if(!t)return;let n=t.parentNode;if(!(n instanceof z))return;let i=n.parentNode;if(!(i instanceof F)||!i.isKind(r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewTableGroups,r.DiagramViewSchemas))return;let a=i.parentNode;if(!(a instanceof z))return;let o=a.parentNode;if(!(!(o instanceof F)||!o.isKind(r.DiagramView)))return i}function Kd(e,r,i){let a=bu(i);if(a===void 0)return n.create(void 0);if(T(i.parentNode)){let t=Ld(e,i);if(t){if(t.isKind(M.Schema)){let r=lu(i),o=e.lookupMembers(t,r?M.Table:M.Schema,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Could not find ${r?`table`:`schema`} '${a}'`,i)])}return new n(void 0)}let o=e.lookupMembers(r,M.Schema,a);return o?n.create(o):new n(void 0,[new x(b.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(M.Table)&&a===t)return n.create(e)}let s=e.lookupMembers(r,M.Table,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Could not find table '${a}'`,i)])}function qd(e,t,r,i){let a=bu(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 x(b.BINDING_ERROR,`Could not find ${i===M.StickyNote?`note`:`tablegroup`} '${a}'`,r)])}function Jd(e,t,r){let i=bu(r);if(i===void 0)return n.create(void 0);let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.BINDING_ERROR,`Could not find schema '${i}'`,r)])}var Yd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof R)return[];let t=e.body.filter(e=>e instanceof F);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Xd=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=j(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=j(t),n.name=A(t.callee);let r=S(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:Cu(k(r.value)),token:j(r)},this.enum.values.push(n),[]})}};const Zd={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`Enum '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new x(b.DUPLICATE_COLUMN_NAME,`Duplicate enum field '${e}'`,t)}},Qd={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.Enum)?new n(i.symbolFactory.create(Mu,{declaration:a,name:o},a.filepath)):D(a,r.Enum)?new n(i.symbolFactory.create(Nu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(M.Enum))return n.create(e);let a=i.declaration;if(!(a instanceof F))return new n([]);let o=mu(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(M.EnumField)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration,r=l.get(t);r?(c.push(Zd.getFieldDuplicateError(t,r)),c.push(Zd.getFieldDuplicateError(t,n))):l.set(t,n)}}return new n(s,c)},bindNode(i,a){if(!E(a,r.Enum))return n.create(e);let o=new Yd(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 Mu?new Xd(t,r,i).interpret():n.create(e)}};var $d=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof F)||!this.declarationNode.parent.isKind(r.Table)||!(this.declarationNode.body instanceof z)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let n=O(this.declarationNode.parent.name)?.join(`.`)??`<unnamed>`;return[e.callee,...e.args].flatMap(Id).flatMap(e=>e.variables.length+e.tupleElements.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=bu(e);if(r===void 0)return[];let i=this.compiler.nodeReferee(e);return!i.getValue()||i.hasValue(t)?new x(b.BINDING_ERROR,`No column named '${r}' inside Table '${n}'`,e):[]})})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},ef=class{constructor(e,t){this.compiler=e,this.node=t}interpret(){let e=this.node.body;return e instanceof z?new n(e.body.flatMap(e=>{if(!(e instanceof R)||!e.callee)return[];let n=[],r=j(e),a=[e.callee,...e.args],o,s,c,l,u;_(a)instanceof B&&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=k(d[i.Name]?.at(0)?.value);let e=d[i.Note]?.at(0);if(e){let t=k(e.value);t!==void 0&&(l={value:t,token:j(e)})}u=A(d[i.Type]?.at(0)?.value)}let f=a.flatMap(e=>{if(!(e instanceof V))return e;let t=[],n=e;for(;n instanceof V&&(n.argumentList&&t.push(n.argumentList),n.callee);)n=n.callee;return t.push(n),t});for(let e of f){let t=_u(e);if(t){for(let e of t.functional)n.push({value:e.value?.value??``,type:`expression`,token:j(e)});for(let e of t.nonFunctional)n.push({value:bu(e)??``,type:`column`,token:j(e)})}}return[{columns:n,pk:o,unique:s,name:c,note:l,type:u,token:r}]})):new n([])}};const tf={nodeMetadata(t,i){if(!E(i,r.Indexes))return n.create(e);let a=i.parent;return!a||!E(a,r.Table)&&!E(a,r.TablePartial)?n.create(e):n.create(new xd(i))},nodeReferee(i,a){if(!w(a)||iu(a))return n.create(e);let o=a;for(;o&&!E(o,r.Indexes);)o=o.parent;if(!o)return n.create(e);let s=o.parent;if(!s||!E(s,r.Table)&&!E(s,r.TablePartial))return n.create(e);let c=i.nodeSymbol(s).getFiltered(t);if(!c)return new n(void 0);let l=w(a)?a.expression.variable?.value??``:``,u=i.lookupMembers(c,M.Column,l);if(u)return n.create(u);let d=E(s,r.TablePartial)?`TablePartial`:`Table`;return new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${l}' does not exist in ${d} 'public.${c.name}'`,a)])},bindNode(t,i){return E(i,r.Indexes)?n.create(void 0,new $d(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===gd.Indexes?r.declaration instanceof F?new ef(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function nf(e,n){let r=hu(n);if(!r||r.length===0)return;let i=r[r.length-1];if(i instanceof od){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 od)return;let o=e.nodeReferee(a).getFiltered(t);if(o)return[o.originalSymbol]}function rf(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 x(b.SAME_ENDPOINT,`Two endpoints are the same`,n)];let o=i<a?`${i}-${a}`:`${a}-${i}`,s=r.get(o);return s?[new x(b.CIRCULAR_REF,`References with same endpoints exist`,n),new x(b.CIRCULAR_REF,`References with same endpoints exist`,s)]:(r.set(o,n),[])}var af=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 F&&e.isKind(r.Project));a.length>1&&a.forEach(t=>e.push(new x(b.PROJECT_REDEFINED,`Only one project can exist`,t)));for(let t of i.body)if(t instanceof F&&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(...of(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 F)||!t.type)continue;let i=t;E(i,r.Ref)&&e.push(...this.checkStandaloneRefs(i,n)),E(i,r.Table)&&e.push(...this.checkInlineRefs(i,n)),E(i,r.TablePartial)&&e.push(...this.checkTablePartialSelfRefs(i))}}return e}checkStandaloneRefs(e,t){let n=[];for(let r of mu(e)){if(!(r instanceof R)||!r.callee||!ou(r.callee))continue;let i=r.callee;if(!i.leftExpression||!i.rightExpression)continue;let a=nf(this.compiler,i.leftExpression),o=nf(this.compiler,i.rightExpression);!a||!o||n.push(...rf(a,o,e,t))}return n}checkInlineRefs(e,n){let r=[];for(let a of mu(e)){if(!(a instanceof R)||!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 L)||!i.op||!Ul(i.op.value)||!i.expression)continue;let a=nf(this.compiler,i.expression);if(!a)continue;let o=[e.originalSymbol];r.push(...rf(o,a,t,n))}}return r}checkTablePartialSelfRefs(e){let n=[];for(let r of mu(e)){if(!(r instanceof R)||!r.callee)continue;let e=A(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 L&&(!r.op||!Ul(r.op.value)||r.expression&&w(r.expression)&&r.expression.expression.variable?.value===e&&n.push(new x(b.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 F)||!i.type)continue;let a=i;if(!E(a,r.TableGroup))continue;let o=a.name?O(a.name):void 0,s=o?o.join(`.`):`<unknown>`,c=mu(a);for(let r of c){if(!(r instanceof R)||!r.callee)continue;let i=hu(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=O(r.callee),n=t?t.join(`.`):`<unknown>`;e.push(new x(b.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 of(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 ju&&a.push(...of(e,t,r));return a}function sf(e,t,n){t.isKind(M.Table)?e.externals.tables.push(n):t.isKind(M.Enum)?e.externals.enums.push(n):t.isKind(M.TableGroup)?e.externals.tableGroups.push(n):t.isKind(M.TablePartial)?e.externals.tablePartials.push(n):t.isKind(M.StickyNote)&&e.externals.notes.push(n)}var cf={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`])},lf={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`])},uf={mysql:new Set([`bool`,`boolean`,`bit`]),postgres:new Set([`bool`,`boolean`]),mssql:new Set([`bit`]),oracle:new Set([]),snowflake:new Set([`boolean`])},df={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`])},ff={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`])},pf={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`])},mf={mysql:new Set([]),postgres:new Set([`serial`,`smallserial`,`bigserial`]),mssql:new Set([]),oracle:new Set([]),snowflake:new Set([])};function hf(e){return e.toLowerCase().trim().replace(/\s+/g,` `)}function gf(e,t){let n=hf(e);return t?cf[t].has(n):Object.values(cf).some(e=>e.has(n))}function _f(e,t){let n=hf(e);return t?lf[t].has(n):Object.values(lf).some(e=>e.has(n))}function vf(e,t){return gf(e,t)||_f(e,t)}function yf(e,t){let n=hf(e);return t?uf[t].has(n):Object.values(uf).some(e=>e.has(n))}function bf(e,t){let n=hf(e);return t?df[t].has(n):Object.values(df).some(e=>e.has(n))}function xf(e,t){let n=hf(e);return t?ff[t].has(n):Object.values(ff).some(e=>e.has(n))}function Sf(e,t){let n=hf(e);return t?pf[t].has(n):Object.values(pf).some(e=>e.has(n))}function Cf(e,t){let n=hf(e);return t?mf[t].has(n):Object.values(mf).some(e=>e.has(n))}function wf(e,t){if(t)return`string`;if(gf(e))return`integer`;if(_f(e))return`real`;if(yf(e))return`bool`;if(bf(e))return`string`;let n=hf(e);return n===`date`?`date`:n===`time`||n===`timetz`||n===`time with time zone`||n===`time without time zone`?`time`:Sf(e)?`datetime`:e}var Tf=class extends Error{},Ef=class extends Tf{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Df=class extends Tf{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Of=class extends Tf{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},kf=class extends Tf{},Af=class extends Tf{constructor(e){super(`Invalid unit ${e}`)}},jf=class extends Tf{},Mf=class extends Tf{constructor(){super(`Zone is an abstract class`)}},U=`numeric`,Nf=`short`,Pf=`long`,Ff={year:U,month:U,day:U},If={year:U,month:Nf,day:U},Lf={year:U,month:Nf,day:U,weekday:Nf},Rf={year:U,month:Pf,day:U},zf={year:U,month:Pf,day:U,weekday:Pf},Bf={hour:U,minute:U},Vf={hour:U,minute:U,second:U},Hf={hour:U,minute:U,second:U,timeZoneName:Nf},Uf={hour:U,minute:U,second:U,timeZoneName:Pf},Wf={hour:U,minute:U,hourCycle:`h23`},Gf={hour:U,minute:U,second:U,hourCycle:`h23`},Kf={hour:U,minute:U,second:U,hourCycle:`h23`,timeZoneName:Nf},qf={hour:U,minute:U,second:U,hourCycle:`h23`,timeZoneName:Pf},Jf={year:U,month:U,day:U,hour:U,minute:U},Yf={year:U,month:U,day:U,hour:U,minute:U,second:U},Xf={year:U,month:Nf,day:U,hour:U,minute:U},Zf={year:U,month:Nf,day:U,hour:U,minute:U,second:U},Qf={year:U,month:Nf,day:U,weekday:Nf,hour:U,minute:U},$f={year:U,month:Pf,day:U,hour:U,minute:U,timeZoneName:Nf},ep={year:U,month:Pf,day:U,hour:U,minute:U,second:U,timeZoneName:Nf},tp={year:U,month:Pf,day:U,weekday:Pf,hour:U,minute:U,timeZoneName:Pf},np={year:U,month:Pf,day:U,weekday:Pf,hour:U,minute:U,second:U,timeZoneName:Pf},rp=class{get type(){throw new Mf}get name(){throw new Mf}get ianaName(){return this.name}get isUniversal(){throw new Mf}offsetName(e,t){throw new Mf}formatOffset(e,t){throw new Mf}offset(e){throw new Mf}equals(e){throw new Mf}get isValid(){throw new Mf}},ip=null,ap=class e extends rp{static get instance(){return ip===null&&(ip=new e),ip}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Gm(e,t,n)}formatOffset(e,t){return Ym(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},op=new Map;function sp(e){let t=op.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`}),op.set(e,t)),t}var cp={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function lp(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 up(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=cp[t];t===`era`?r[a]=i:G(a)||(r[a]=parseInt(i,10))}return r}var dp=new Map,fp=class e extends rp{static create(t){let n=dp.get(t);return n===void 0&&dp.set(t,n=new e(t)),n}static resetCache(){dp.clear(),op.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 Gm(e,t,n,this.name)}formatOffset(e,t){return Ym(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=sp(this.name),[r,i,a,o,s,c,l]=n.formatToParts?up(n,t):lp(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=Vm({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}},pp={};function mp(e,t={}){let n=JSON.stringify([e,t]),r=pp[n];return r||(r=new Intl.ListFormat(e,t),pp[n]=r),r}var hp=new Map;function gp(e,t={}){let n=JSON.stringify([e,t]),r=hp.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),hp.set(n,r)),r}var _p=new Map;function vp(e,t={}){let n=JSON.stringify([e,t]),r=_p.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),_p.set(n,r)),r}var yp=new Map;function bp(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=yp.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),yp.set(i,a)),a}var xp=null;function Sp(){return xp||(xp=new Intl.DateTimeFormat().resolvedOptions().locale,xp)}var Cp=new Map;function wp(e){let t=Cp.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),Cp.set(e,t)),t}var Tp=new Map;function Ep(e){let t=Tp.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...Ip,...t}),Tp.set(e,t)}return t}function Dp(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=gp(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=gp(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function Op(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function kp(e){let t=[];for(let n=1;n<=12;n++){let r=F_.utc(2009,n,1);t.push(e(r))}return t}function Ap(e){let t=[];for(let n=1;n<=7;n++){let r=F_.utc(2016,11,13+n);t.push(e(r))}return t}function jp(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function Mp(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||wp(e.locale).numberingSystem===`latn`}var Np=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=vp(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return Nm(this.floor?Math.floor(e):Lm(e,3),this.padTo)}},Pp=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&&fp.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=gp(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()}},Fp=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&wm()&&(this.rtf=bp(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):mh(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},Ip={firstDay:1,minimalDays:4,weekend:[6,7]},W=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||nm.defaultLocale;return new e(o||(a?`en-US`:Sp()),n||nm.defaultNumberingSystem,r||nm.defaultOutputCalendar,Am(i)||nm.defaultWeekSettings,o)}static resetCache(){xp=null,hp.clear(),_p.clear(),yp.clear(),Cp.clear(),Tp.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]=Dp(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=Op(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??=Mp(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,Am(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 jp(this,e,eh,()=>{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]=kp(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return jp(this,e,ih,()=>{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]=Ap(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return jp(this,void 0,()=>ah,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[F_.utc(2016,11,13,9),F_.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return jp(this,e,lh,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[F_.utc(-40,1,1),F_.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 Np(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Pp(e,this.intl,t)}relFormatter(e={}){return new Fp(this.intl,this.isEnglish(),e)}listFormatter(e={}){return mp(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||wp(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:Tm()?Ep(this.locale):Ip}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})`}},Lp=null,Rp=class e extends rp{static get utcInstance(){return Lp===null&&(Lp=new e(0)),Lp}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(Km(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${Ym(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${Ym(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return Ym(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}},zp=class extends rp{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 Bp(e,t){if(G(e)||e===null)return t;if(e instanceof rp)return e;if(Sm(e)){let n=e.toLowerCase();return n===`default`?t:n===`local`||n===`system`?ap.instance:n===`utc`||n===`gmt`?Rp.utcInstance:Rp.parseSpecifier(n)||fp.create(e)}else if(bm(e))return Rp.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new zp(e)}var Vp={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},Hp={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]},Up=Vp.hanidec.replace(/[\[|\]]/g,``).split(``);function Wp(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(Vp.hanidec)!==-1)t+=Up.indexOf(e[n]);else for(let e in Hp){let[n,i]=Hp[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var Gp=new Map;function Kp(){Gp.clear()}function qp({numberingSystem:e},t=``){let n=e||`latn`,r=Gp.get(n);r===void 0&&(r=new Map,Gp.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${Vp[n]}${t}`),r.set(t,i)),i}var Jp=()=>Date.now(),Yp=`system`,Xp=null,Zp=null,Qp=null,$p=60,em,tm=null,nm=class{static get now(){return Jp}static set now(e){Jp=e}static set defaultZone(e){Yp=e}static get defaultZone(){return Bp(Yp,ap.instance)}static get defaultLocale(){return Xp}static set defaultLocale(e){Xp=e}static get defaultNumberingSystem(){return Zp}static set defaultNumberingSystem(e){Zp=e}static get defaultOutputCalendar(){return Qp}static set defaultOutputCalendar(e){Qp=e}static get defaultWeekSettings(){return tm}static set defaultWeekSettings(e){tm=Am(e)}static get twoDigitCutoffYear(){return $p}static set twoDigitCutoffYear(e){$p=e%100}static get throwOnInvalid(){return em}static set throwOnInvalid(e){em=e}static resetCaches(){W.resetCache(),fp.resetCache(),F_.resetCache(),Kp()}},rm=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},im=[0,31,59,90,120,151,181,212,243,273,304,334],am=[0,31,60,91,121,152,182,213,244,274,305,335];function om(e,t){return new rm(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function sm(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 cm(e,t,n){return n+(Rm(e)?am:im)[t-1]}function lm(e,t){let n=Rm(e)?am:im,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function um(e,t){return(e-t+7)%7+1}function dm(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=cm(r,i,a),s=um(sm(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=Um(l,t,n)):c>Um(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...Xm(e)}}function fm(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=um(sm(r,1,t),n),s=zm(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=zm(l)):c>s?(l=r+1,c-=zm(r)):l=r;let{month:u,day:d}=lm(l,c);return{year:l,month:u,day:d,...Xm(e)}}function pm(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:cm(t,n,r),...Xm(e)}}function mm(e){let{year:t,ordinal:n}=e,{month:r,day:i}=lm(t,n);return{year:t,month:r,day:i,...Xm(e)}}function hm(e,t){if(!G(e.localWeekday)||!G(e.localWeekNumber)||!G(e.localWeekYear)){if(!G(e.weekday)||!G(e.weekNumber)||!G(e.weekYear))throw new kf(`Cannot mix locale-based week fields with ISO-based week fields`);return G(e.localWeekday)||(e.weekday=e.localWeekday),G(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),G(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 gm(e,t=4,n=1){let r=xm(e.weekYear),i=jm(e.weekNumber,1,Um(e.weekYear,t,n)),a=jm(e.weekday,1,7);return r?i?a?!1:om(`weekday`,e.weekday):om(`week`,e.weekNumber):om(`weekYear`,e.weekYear)}function _m(e){let t=xm(e.year),n=jm(e.ordinal,1,zm(e.year));return t?n?!1:om(`ordinal`,e.ordinal):om(`year`,e.year)}function vm(e){let t=xm(e.year),n=jm(e.month,1,12),r=jm(e.day,1,Bm(e.year,e.month));return t?n?r?!1:om(`day`,e.day):om(`month`,e.month):om(`year`,e.year)}function ym(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=jm(t,0,23)||t===24&&n===0&&r===0&&i===0,o=jm(n,0,59),s=jm(r,0,59),c=jm(i,0,999);return a?o?s?c?!1:om(`millisecond`,i):om(`second`,r):om(`minute`,n):om(`hour`,t)}function G(e){return e===void 0}function bm(e){return typeof e==`number`}function xm(e){return typeof e==`number`&&e%1==0}function Sm(e){return typeof e==`string`}function Cm(e){return Object.prototype.toString.call(e)===`[object Date]`}function wm(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function Tm(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function Em(e){return Array.isArray(e)?e:[e]}function Dm(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 Om(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function km(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Am(e){if(e==null)return null;if(typeof e!=`object`)throw new jf(`Week settings must be an object`);if(!jm(e.firstDay,1,7)||!jm(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!jm(e,1,7)))throw new jf(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function jm(e,t,n){return xm(e)&&e>=t&&e<=n}function Mm(e,t){return e-t*Math.floor(e/t)}function Nm(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function Pm(e){if(!(G(e)||e===null||e===``))return parseInt(e,10)}function Fm(e){if(!(G(e)||e===null||e===``))return parseFloat(e)}function Im(e){if(!(G(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function Lm(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 Rm(e){return e%4==0&&(e%100!=0||e%400==0)}function zm(e){return Rm(e)?366:365}function Bm(e,t){let n=Mm(t-1,12)+1,r=e+(t-n)/12;return n===2?Rm(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Vm(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 Hm(e,t,n){return-um(sm(e,1,t),n)+t-1}function Um(e,t=4,n=1){let r=Hm(e,t,n),i=Hm(e+1,t,n);return(zm(e)-r+i)/7}function Wm(e){return e>99?e:e>nm.twoDigitCutoffYear?1900+e:2e3+e}function Gm(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 Km(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 qm(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new jf(`Invalid unit value ${e}`);return t}function Jm(e,t){let n={};for(let r in e)if(km(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=qm(i)}return n}function Ym(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}${Nm(n,2)}:${Nm(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${Nm(n,2)}${Nm(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function Xm(e){return Om(e,[`hour`,`minute`,`second`,`millisecond`])}var Zm=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Qm=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],$m=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function eh(e){switch(e){case`narrow`:return[...$m];case`short`:return[...Qm];case`long`:return[...Zm];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 th=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],nh=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],rh=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function ih(e){switch(e){case`narrow`:return[...rh];case`short`:return[...nh];case`long`:return[...th];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var ah=[`AM`,`PM`],oh=[`Before Christ`,`Anno Domini`],sh=[`BC`,`AD`],ch=[`B`,`A`];function lh(e){switch(e){case`narrow`:return[...ch];case`short`:return[...sh];case`long`:return[...oh];default:return null}}function uh(e){return ah[e.hour<12?0:1]}function dh(e,t){return ih(t)[e.weekday-1]}function fh(e,t){return eh(t)[e.month-1]}function ph(e,t){return lh(t)[e.year<0?0:1]}function mh(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 hh(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var gh={D:Ff,DD:If,DDD:Rf,DDDD:zf,t:Bf,tt:Vf,ttt:Hf,tttt:Uf,T:Wf,TT:Gf,TTT:Kf,TTTT:qf,f:Jf,ff:Xf,fff:$f,ffff:tp,F:Yf,FF:Zf,FFF:ep,FFFF:np},_h=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 gh[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 Nm(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?uh(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?fh(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?dh(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?ph(t,e):a({era:e},`era`);return hh(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 hh(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},vh=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function yh(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function bh(...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 xh(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 Sh(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=Pm(t[n+i]);return[r,null,n+i]}}var Ch=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,wh=`(?:${Ch.source}?(?:\\[(${vh.source})\\])?)?`,Th=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Eh=RegExp(`${Th.source}${wh}`),Dh=RegExp(`(?:[Tt]${Eh.source})?`),Oh=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,kh=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Ah=/(\d{4})-?(\d{3})/,jh=Sh(`weekYear`,`weekNumber`,`weekDay`),Mh=Sh(`year`,`ordinal`),Nh=/(\d{4})-(\d\d)-(\d\d)/,Ph=RegExp(`${Th.source} ?(?:${Ch.source}|(${vh.source}))?`),Fh=RegExp(`(?: ${Ph.source})?`);function Ih(e,t,n){let r=e[t];return G(r)?n:Pm(r)}function Lh(e,t){return[{year:Ih(e,t),month:Ih(e,t+1,1),day:Ih(e,t+2,1)},null,t+3]}function Rh(e,t){return[{hours:Ih(e,t,0),minutes:Ih(e,t+1,0),seconds:Ih(e,t+2,0),milliseconds:Im(e[t+3])},null,t+4]}function zh(e,t){let n=!e[t]&&!e[t+1],r=Km(e[t+1],e[t+2]);return[{},n?null:Rp.instance(r),t+3]}function Bh(e,t){return[{},e[t]?fp.create(e[t]):null,t+1]}var Vh=RegExp(`^T?${Th.source}$`),Hh=/^-?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 Uh(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(Fm(n)),months:f(Fm(r)),weeks:f(Fm(i)),days:f(Fm(a)),hours:f(Fm(o)),minutes:f(Fm(s)),seconds:f(Fm(c),c===`-0`),milliseconds:f(Im(l),d)}]}var Wh={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Gh(e,t,n,r,i,a,o){let s={year:t.length===2?Wm(Pm(t)):Pm(t),month:Qm.indexOf(n)+1,day:Pm(r),hour:Pm(i),minute:Pm(a)};return o&&(s.second=Pm(o)),e&&(s.weekday=e.length>3?th.indexOf(e)+1:nh.indexOf(e)+1),s}var Kh=/^(?:(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 qh(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=Gh(t,i,r,n,a,o,s),p;return p=c?Wh[c]:l?0:Km(u,d),[f,new Rp(p)]}function Jh(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var Yh=/^(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$/,Xh=/^(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$/,Zh=/^(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 Qh(e){let[,t,n,r,i,a,o,s]=e;return[Gh(t,i,r,n,a,o,s),Rp.utcInstance]}function $h(e){let[,t,n,r,i,a,o,s]=e;return[Gh(t,s,n,r,i,a,o),Rp.utcInstance]}var eg=yh(Oh,Dh),tg=yh(kh,Dh),ng=yh(Ah,Dh),rg=yh(Eh),ig=bh(Lh,Rh,zh,Bh),ag=bh(jh,Rh,zh,Bh),og=bh(Mh,Rh,zh,Bh),sg=bh(Rh,zh,Bh);function cg(e){return xh(e,[eg,ig],[tg,ag],[ng,og],[rg,sg])}function lg(e){return xh(Jh(e),[Kh,qh])}function ug(e){return xh(e,[Yh,Qh],[Xh,Qh],[Zh,$h])}function dg(e){return xh(e,[Hh,Uh])}var fg=bh(Rh);function pg(e){return xh(e,[Vh,fg])}var mg=yh(Nh,Fh),hg=yh(Ph),gg=bh(Rh,zh,Bh);function _g(e){return xh(e,[mg,ig],[hg,gg])}var vg=`Invalid Duration`,yg={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}},bg={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},...yg},xg=146097/400,Sg=146097/4800,Cg={years:{quarters:4,months:12,weeks:xg/7,days:xg,hours:xg*24,minutes:xg*24*60,seconds:xg*24*60*60,milliseconds:xg*24*60*60*1e3},quarters:{months:3,weeks:xg/28,days:xg/4,hours:xg*24/4,minutes:xg*24*60/4,seconds:xg*24*60*60/4,milliseconds:xg*24*60*60*1e3/4},months:{weeks:Sg/7,days:Sg,hours:Sg*24,minutes:Sg*24*60,seconds:Sg*24*60*60,milliseconds:Sg*24*60*60*1e3},...yg},wg=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],Tg=wg.slice(0).reverse();function Eg(e,t,n=!1){return new Ag({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 Dg(e,t){let n=t.milliseconds??0;for(let r of Tg.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function Og(e,t){let n=Dg(e,t)<0?-1:1;wg.reduceRight((r,i)=>{if(G(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),wg.reduce((n,r)=>{if(G(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function kg(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var Ag=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?Cg:bg;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||W.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 jf(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:Jm(t,e.normalizeUnit),loc:W.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(bm(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new jf(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=dg(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]=pg(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 jf(`need to specify a reason the Duration is invalid`);let r=t instanceof rm?t:new rm(t,n);if(nm.throwOnInvalid)throw new Of(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 Af(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?_h.create(this.loc,n).formatDurationFromString(this,e):vg}toHuman(e={}){if(!this.isValid)return vg;let t=e.showZeros!==!1,n=wg.map(n=>{let r=this.values[n];return G(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+=Lm(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},F_.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?Dg(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 wg)(km(n.values,e)||km(this.values,e))&&(r[e]=n.get(e)+this.get(e));return Eg(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]=qm(e(this.values[n],n));return Eg(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...Jm(t,e.normalizeUnit)};return Eg(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 Eg(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return Og(this.matrix,e),Eg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=kg(this.normalize().shiftToAll().toObject());return Eg(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 wg)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;bm(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else bm(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 Og(this.matrix,n),Eg(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 Eg(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=kg(this.values);return Eg(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 wg)if(!t(this.values[n],e.values[n]))return!1;return!0}},jg=`Invalid Interval`;function Mg(e,t){return!e||!e.isValid?Ng.invalid(`missing or invalid start`):!t||!t.isValid?Ng.invalid(`missing or invalid end`):t<e?Ng.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 Ng=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 jf(`need to specify a reason the Interval is invalid`);let r=t instanceof rm?t:new rm(t,n);if(nm.throwOnInvalid)throw new Df(r);return new e({invalid:r})}static fromDateTimes(t,n){let r=I_(t),i=I_(n);return Mg(r,i)??new e({start:r,end:i})}static after(t,n){let r=Ag.fromDurationLike(n),i=I_(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=Ag.fromDurationLike(n),i=I_(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=F_.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=F_.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=Ag.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=Ag.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(I_).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=Ag.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()})`:jg}[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=Ff,t={}){return this.isValid?_h.create(this.s.loc.clone(t),e).formatInterval(this):jg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:jg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:jg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:jg}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:jg}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Ag.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},Pg=class{static hasDST(e=nm.defaultZone){let t=F_.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return fp.isValidZone(e)}static normalizeZone(e){return Bp(e,nm.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||W.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||W.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||W.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||W.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||W.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||W.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||W.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return W.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return W.create(t,null,`gregory`).eras(e)}static features(){return{relative:wm(),localeWeek:Tm()}}};function Fg(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(Ag.fromMillis(r).as(`days`))}function Ig(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=Fg(e,t);return(n-n%7)/7}],[`days`,Fg]],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 Lg(e,t,n,r){let[i,a,o,s]=Ig(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=Ag.fromObject(a,r);return l.length>0?Ag.fromMillis(c,r).shiftTo(...l).plus(u):u}var Rg=`missing Intl.DateTimeFormat.formatToParts support`;function K(e,t=e=>e){return{regex:e,deser:([e])=>t(Wp(e))}}var zg=`[ \xA0]`,Bg=new RegExp(zg,`g`);function Vg(e){return e.replace(/\./g,`\\.?`).replace(Bg,zg)}function Hg(e){return e.replace(/\./g,``).replace(Bg,` `).toLowerCase()}function Ug(e,t){return e===null?null:{regex:RegExp(e.map(Vg).join(`|`)),deser:([n])=>e.findIndex(e=>Hg(n)===Hg(e))+t}}function Wg(e,t){return{regex:e,deser:([,e,t])=>Km(e,t),groups:t}}function Gg(e){return{regex:e,deser:([e])=>e}}function Kg(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function qg(e,t){let n=qp(t),r=qp(t,`{2}`),i=qp(t,`{3}`),a=qp(t,`{4}`),o=qp(t,`{6}`),s=qp(t,`{1,2}`),c=qp(t,`{1,3}`),l=qp(t,`{1,6}`),u=qp(t,`{1,9}`),d=qp(t,`{2,4}`),f=qp(t,`{4,6}`),p=e=>({regex:RegExp(Kg(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return Ug(t.eras(`short`),0);case`GG`:return Ug(t.eras(`long`),0);case`y`:return K(l);case`yy`:return K(d,Wm);case`yyyy`:return K(a);case`yyyyy`:return K(f);case`yyyyyy`:return K(o);case`M`:return K(s);case`MM`:return K(r);case`MMM`:return Ug(t.months(`short`,!0),1);case`MMMM`:return Ug(t.months(`long`,!0),1);case`L`:return K(s);case`LL`:return K(r);case`LLL`:return Ug(t.months(`short`,!1),1);case`LLLL`:return Ug(t.months(`long`,!1),1);case`d`:return K(s);case`dd`:return K(r);case`o`:return K(c);case`ooo`:return K(i);case`HH`:return K(r);case`H`:return K(s);case`hh`:return K(r);case`h`:return K(s);case`mm`:return K(r);case`m`:return K(s);case`q`:return K(s);case`qq`:return K(r);case`s`:return K(s);case`ss`:return K(r);case`S`:return K(c);case`SSS`:return K(i);case`u`:return Gg(u);case`uu`:return Gg(s);case`uuu`:return K(n);case`a`:return Ug(t.meridiems(),0);case`kkkk`:return K(a);case`kk`:return K(d,Wm);case`W`:return K(s);case`WW`:return K(r);case`E`:case`c`:return K(n);case`EEE`:return Ug(t.weekdays(`short`,!1),1);case`EEEE`:return Ug(t.weekdays(`long`,!1),1);case`ccc`:return Ug(t.weekdays(`short`,!0),1);case`cccc`:return Ug(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return Wg(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return Wg(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return Gg(/[a-z_+-/]{1,256}?/i);case` `:return Gg(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:Rg};return m.token=e,m}var Jg={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 Yg(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=Jg[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function Xg(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function Zg(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(km(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 Qg(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 G(e.z)||(n=fp.create(e.z)),G(e.Z)||(n||=new Rp(e.Z),r=e.Z),G(e.q)||(e.M=(e.q-1)*3+1),G(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),G(e.u)||(e.S=Im(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var $g=null;function e_(){return $g||=F_.fromMillis(1555555555555),$g}function t_(e,t){if(e.literal)return e;let n=o_(_h.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function n_(e,t){return Array.prototype.concat(...e.map(e=>t_(e,t)))}var r_=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=n_(_h.parseFormat(t),e),this.units=this.tokens.map(t=>qg(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=Xg(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=Zg(e,this.regex,this.handlers),[r,i,a]=n?Qg(n):[null,null,void 0];if(km(n,`a`)&&km(n,`H`))throw new kf(`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 i_(e,t,n){return new r_(e,n).explainFromTokens(t)}function a_(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=i_(e,t,n);return[r,i,a,o]}function o_(e,t){if(!e)return null;let n=_h.create(t,e).dtFormatter(e_()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>Yg(t,e,i))}var s_=`Invalid DateTime`,c_=864e13;function l_(e){return new rm(`unsupported zone`,`the zone "${e.name}" is not supported`)}function u_(e){return e.weekData===null&&(e.weekData=dm(e.c)),e.weekData}function d_(e){return e.localWeekData===null&&(e.localWeekData=dm(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function f_(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new F_({...n,...t,old:n})}function p_(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 m_(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 h_(e,t,n){return p_(Vm(e),t,n)}function g_(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,Bm(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=Ag.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]=p_(Vm(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function __(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=F_.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return F_.invalid(new rm(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function v_(e,t,n=!0){return e.isValid?_h.create(W.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function y_(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=Nm(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=Nm(e.c.month),n===`month`)return i;i+=`-`}else if(i+=Nm(e.c.month),n===`month`)return i;return i+=Nm(e.c.day),i}function b_(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+=Nm(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=Nm(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=Nm(e.c.second))}else{if(c+=Nm(e.c.minute),o===`minute`)break;s&&(c+=Nm(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=Nm(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=Nm(Math.trunc(-e.o/60)),c+=`:`,c+=Nm(Math.trunc(-e.o%60))):(c+=`+`,c+=Nm(Math.trunc(e.o/60)),c+=`:`,c+=Nm(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var x_={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},S_={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},C_={ordinal:1,hour:0,minute:0,second:0,millisecond:0},w_=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],T_=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],E_=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function D_(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 Af(e);return t}function O_(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return D_(e)}}function k_(e){if(N_===void 0&&(N_=nm.now()),e.type!==`iana`)return e.offset(N_);let t=e.name,n=P_.get(t);return n===void 0&&(n=e.offset(N_),P_.set(t,n)),n}function A_(e,t){let n=Bp(t.zone,nm.defaultZone);if(!n.isValid)return F_.invalid(l_(n));let r=W.fromObject(t),i,a;if(G(e.year))i=nm.now();else{for(let t of w_)G(e[t])&&(e[t]=x_[t]);let t=vm(e)||ym(e);if(t)return F_.invalid(t);let r=k_(n);[i,a]=h_(e,r,n)}return new F_({ts:i,zone:n,loc:r,o:a})}function j_(e,t,n){let r=G(n.round)?!0:n.round,i=G(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=Lm(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 M_(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 N_,P_=new Map,F_=class e{constructor(e){let t=e.zone||nm.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new rm(`invalid input`):null)||(t.isValid?null:l_(t));this.ts=G(e.ts)?nm.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=bm(e.o)&&!e.old?e.o:t.offset(this.ts);r=m_(this.ts,a),n=Number.isNaN(r.year)?new rm(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||W.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]=M_(arguments),[n,r,i,a,o,s,c]=t;return A_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=M_(arguments),[n,r,i,a,o,s,c]=t;return e.zone=Rp.utcInstance,A_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=Cm(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=Bp(n.zone,nm.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:W.fromObject(n)}):e.invalid(l_(i))}static fromMillis(t,n={}){if(bm(t))return t<-c_||t>c_?e.invalid(`Timestamp out of range`):new e({ts:t,zone:Bp(n.zone,nm.defaultZone),loc:W.fromObject(n)});throw new jf(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,n={}){if(bm(t))return new e({ts:t*1e3,zone:Bp(n.zone,nm.defaultZone),loc:W.fromObject(n)});throw new jf(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=Bp(n.zone,nm.defaultZone);if(!r.isValid)return e.invalid(l_(r));let i=W.fromObject(n),a=Jm(t,O_),{minDaysInFirstWeek:o,startOfWeek:s}=hm(a,i),c=nm.now(),l=G(n.specificOffset)?r.offset(c):n.specificOffset,u=!G(a.ordinal),d=!G(a.year),f=!G(a.month)||!G(a.day),p=d||f,m=a.weekYear||a.weekNumber;if((p||u)&&m)throw new kf(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(f&&u)throw new kf(`Can't mix ordinal dates with month/day`);let h=m||a.weekday&&!p,ee,te,ne=m_(c,l);h?(ee=T_,te=S_,ne=dm(ne,o,s)):u?(ee=E_,te=C_,ne=pm(ne)):(ee=w_,te=x_);let re=!1;for(let e of ee){let t=a[e];G(t)?re?a[e]=te[e]:a[e]=ne[e]:re=!0}let ie=(h?gm(a,o,s):u?_m(a):vm(a))||ym(a);if(ie)return e.invalid(ie);let[ae,oe]=h_(h?fm(a,o,s):u?mm(a):a,l,r),se=new e({ts:ae,zone:r,o:oe,loc:i});return a.weekday&&p&&t.weekday!==se.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${a.weekday} and a date of ${se.toISO()}`):se.isValid?se:e.invalid(se.invalid)}static fromISO(e,t={}){let[n,r]=cg(e);return __(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=lg(e);return __(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=ug(e);return __(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(G(t)||G(n))throw new jf(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,s,c,l]=a_(W.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return l?e.invalid(l):__(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]=_g(e);return __(n,r,t,`SQL`,e)}static invalid(t,n=null){if(!t)throw new jf(`need to specify a reason the DateTime is invalid`);let r=t instanceof rm?t:new rm(t,n);if(nm.throwOnInvalid)throw new Ef(r);return new e({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=o_(e,W.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return n_(_h.parseFormat(e),W.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){N_=void 0,P_.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?u_(this).weekYear:NaN}get weekNumber(){return this.isValid?u_(this).weekNumber:NaN}get weekday(){return this.isValid?u_(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?d_(this).weekday:NaN}get localWeekNumber(){return this.isValid?d_(this).weekNumber:NaN}get localWeekYear(){return this.isValid?d_(this).weekYear:NaN}get ordinal(){return this.isValid?pm(this.c).ordinal:NaN}get monthShort(){return this.isValid?Pg.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Pg.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Pg.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Pg.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=Vm(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=m_(s,a),u=m_(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[f_(this,{ts:s}),f_(this,{ts:c})]:[this]}get isInLeapYear(){return Rm(this.year)}get daysInMonth(){return Bm(this.year,this.month)}get daysInYear(){return this.isValid?zm(this.year):NaN}get weeksInWeekYear(){return this.isValid?Um(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Um(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=_h.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(Rp.instance(e),t)}toLocal(){return this.setZone(nm.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=Bp(t,nm.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]=h_(r,n,t)}return f_(this,{ts:e,zone:t})}else return e.invalid(l_(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return f_(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=Jm(e,O_),{minDaysInFirstWeek:n,startOfWeek:r}=hm(t,this.loc),i=!G(t.weekYear)||!G(t.weekNumber)||!G(t.weekday),a=!G(t.ordinal),o=!G(t.year),s=!G(t.month)||!G(t.day),c=o||s,l=t.weekYear||t.weekNumber;if((c||a)&&l)throw new kf(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(s&&a)throw new kf(`Can't mix ordinal dates with month/day`);let u;i?u=fm({...dm(this.c,n,r),...t},n,r):G(t.ordinal)?(u={...this.toObject(),...t},G(t.day)&&(u.day=Math.min(Bm(u.year,u.month),u.day))):u=mm({...pm(this.c),...t});let[d,f]=h_(u,this.o,this.zone);return f_(this,{ts:d,o:f})}plus(e){if(!this.isValid)return this;let t=Ag.fromDurationLike(e);return f_(this,g_(this,t))}minus(e){if(!this.isValid)return this;let t=Ag.fromDurationLike(e).negate();return f_(this,g_(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=Ag.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?_h.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):s_}toLocaleString(e=Ff,t={}){return this.isValid?_h.create(this.loc.clone(t),e).formatDateTime(this):s_}toLocaleParts(e={}){return this.isValid?_h.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=D_(a);let o=e===`extended`,s=y_(this,o,a);return w_.indexOf(a)>=3&&(s+=`T`),s+=b_(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?y_(this,e===`extended`,D_(t)):null}toISOWeekDate(){return v_(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=D_(o),(r&&w_.indexOf(o)>=3?`T`:``)+b_(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return v_(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return v_(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?y_(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`)),v_(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():s_}[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 Ag.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=Em(t).map(Ag.normalizeUnit),a=e.valueOf()>this.valueOf(),o=Lg(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?Ng.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),j_(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?j_(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 jf(`min requires all arguments be DateTimes`);return Dm(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new jf(`max requires all arguments be DateTimes`);return Dm(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return i_(W.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 r_(W.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(G(t)||G(n))throw new jf(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=W.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new jf(`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):__(s,c,r,`format ${n.format}`,t,l)}static get DATE_SHORT(){return Ff}static get DATE_MED(){return If}static get DATE_MED_WITH_WEEKDAY(){return Lf}static get DATE_FULL(){return Rf}static get DATE_HUGE(){return zf}static get TIME_SIMPLE(){return Bf}static get TIME_WITH_SECONDS(){return Vf}static get TIME_WITH_SHORT_OFFSET(){return Hf}static get TIME_WITH_LONG_OFFSET(){return Uf}static get TIME_24_SIMPLE(){return Wf}static get TIME_24_WITH_SECONDS(){return Gf}static get TIME_24_WITH_SHORT_OFFSET(){return Kf}static get TIME_24_WITH_LONG_OFFSET(){return qf}static get DATETIME_SHORT(){return Jf}static get DATETIME_SHORT_WITH_SECONDS(){return Yf}static get DATETIME_MED(){return Xf}static get DATETIME_MED_WITH_SECONDS(){return Zf}static get DATETIME_MED_WITH_WEEKDAY(){return Qf}static get DATETIME_FULL(){return $f}static get DATETIME_FULL_WITH_SECONDS(){return ep}static get DATETIME_HUGE(){return tp}static get DATETIME_HUGE_WITH_SECONDS(){return np}};function I_(e){if(F_.isDateTime(e))return e;if(e&&e.valueOf&&bm(e.valueOf()))return F_.fromJSDate(e);if(e&&typeof e==`object`)return F_.fromObject(e);throw new jf(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function L_(e){return Zl(e)?e.expression.variable?.value?.toLowerCase()===`null`:e instanceof pd}function R_(e){return k(e)===``}function z_(e){return e instanceof ad}function B_(e){let t=vu(e);if(t!==null)return t;if(Kl(e)&&e instanceof L&&e.expression){let t=e.op?.value,n=vu(e.expression);if(n!==null)return t===`-`?-n:n}return null}function V_(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?1:0;let t=B_(e);if(t!==null)return t;let n=k(e);if(n!==void 0){let e=Number(n);if(!isNaN(e))return e}return null}function H_(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?1:0;let t=B_(e);if(t!==null)return Number.isInteger(t)?t:null;let n=k(e);if(n!==void 0){let e=Number(n);if(!isNaN(e)&&Number.isInteger(e))return e}return null}const U_=[`true`,`yes`,`y`,`t`,`1`],W_=[`false`,`no`,`n`,`f`,`0`];function G_(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 U_.includes(t)?!0:W_.includes(t)?!1:null}if(Zl(e)){let t=e.expression.variable?.value?.toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}let t=vu(e);if(t===0)return!1;if(t===1)return!0;let n=k(e)?.toLowerCase();if(n){if(U_.includes(n))return!0;if(W_.includes(n))return!1}return null}function K_(e){if(e==null)return null;if(typeof e==`string`)return e;let t=O(e);return t?_(t):k(e)??null}function q_(e){if(e==null)return null;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return e.toString();let t=k(e)??null??V_(e)??G_(e);return t===null?null:t.toString()}var J_=[`yyyy-MM-dd`,`M/d/yyyy`,`d MMM yyyy`,`MMM d, yyyy`],Y_=[`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`],X_=[`HH:mm:ss`,`HH:mm:ssZZ`,`HH:mm:ss.SSS`,`HH:mm:ss.SSSZZ`];function Z_(e){if(e==null)return null;let t=typeof e==`string`?e:k(e)??null;if(t===null)return null;for(let e of X_){let n=F_.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISOTime({suppressMilliseconds:!0,includeOffset:r(n)})}for(let e of J_){let n=F_.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISODate()}for(let e of Y_){let n=F_.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)})}let n=F_.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 Q_(e,t){let n=e.type(t),r=e.default(t);return{name:e.name??``,pk:e.pk(t),unique:e.unique(t),increment:e.increment(t),notNull:e.nullable(t)===!1,dbdefault:r,typeName:n?.name??``}}function $_(e){return e.values.map(t=>{let n={};return e.columns.forEach((e,r)=>{n[e]=t[r]}),n})}function ev(e,t,n){return t.map((t,r)=>{let i=e[t]?.value;if(i==null&&n&&n[r]){let e=n[r];if(e?.dbdefault)return JSON.stringify(e.dbdefault.value)}return JSON.stringify(i)}).join(`|`)}function tv(e,t,n){return t.some((t,r)=>{let i=e[t]?.value;return i==null&&n&&n[r]&&n[r]?.dbdefault?!1:i==null})}function nv(e){return e.increment||Cf(e.typeName)}function rv(e,t,n){return e?`${e}.${t}.${n}`:`${t}.${n}`}function iv(e,t,n){return n.length===1?rv(e,t,n[0]):`(${n.map(n=>rv(e,t,n)).join(`, `)})`}function av(e,t){return t.length===1?JSON.stringify(e[t[0]]?.value):`(${t.map(t=>JSON.stringify(e[t]?.value)).join(`, `)})`}function ov(e,t,n){let{token:r}=t,i=e.nodeAtPosition(r.filepath,r.start.offset)??e.parse.ast(r.filepath);return new Pl(b.INVALID_RECORDS_FIELD,n,i)}var sv=e=>e>1?`Composite PK`:`PK`;function cv(e,t,n,r){if(jc(r.values))return[];let i=t.mergedColumns(e).map(t=>Q_(t,e)),a=Nc(i,`name`),o=$_(r),s=pv(t,i,e),c=new Set(r.columns);return xc(s,i=>lv(e,t,n,i,o,c,a,r))}function lv(e,t,n,r,i,a,o,s){let c=t.schema(e),l=t.name??``,u=fv(n,r,a,o,c,l,s);if(!jc(u))return u;let d=ao(r.map(e=>o[e])),f=d.every(e=>e&&nv(e)),[p,m]=v(i,e=>tv(e,r,d)),h=f?[]:uv(e,p,r,c,l),ee=dv(e,m,r,d,c,l);return[...h,...ee]}function uv(e,t,n,r,i){if(jc(t))return[];let a=`NULL in ${sv(n.length)}: ${iv(r,i,n)} cannot be NULL`;return xc(t,t=>n.map(n=>ov(e,t[n],a)))}function dv(e,t,n,r,i,a){return xc(lc(Ec(t,e=>ev(e,n,r)),e=>e.length>1),t=>{let r=sv(n.length),o=iv(i,a,n);return xc(t,t=>{let i=`Duplicate ${r}: ${o} = ${av(t,n)}`;return n.map(n=>ov(e,t[n],i))})})}function fv(e,t,n,r,i,a,o){let s=nc(t,Array.from(n));if(jc(s))return[];let c=s.filter(e=>{let t=r[e];return!!(t&&!nv(t)&&!t.dbdefault)});if(jc(c))return[];let l=`${sv(c.length)}: Column ${iv(i,a,c)} is missing from record and has no default value`;return o.values.map(()=>new Pl(b.INVALID_RECORDS_FIELD,l,e))}function pv(e,t,n){return[...t.filter(e=>e.pk).map(e=>[e.name]),...e.mergedIndexes(n).flatMap(e=>{let t=n.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(t)?t.filter(e=>e.pk).map(e=>e.columns.map(e=>e.value)):[]})]}var mv=e=>e>1?`Composite UNIQUE`:`UNIQUE`;function hv(e,t,n){if(jc(n.values))return[];let r=t.mergedColumns(e).map(t=>Q_(t,e)),i=Nc(r,`name`),a=$_(n),o=t.schema(e),s=t.name??``;return xc(gv(t,r,e),t=>_v(e,a,t,ao(t.map(e=>i[e])),o,s))}function gv(e,t,n){return[...t.filter(e=>e.unique).map(e=>[e.name]),...e.mergedIndexes(n).flatMap(e=>{let t=n.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(t)?t.filter(e=>e.unique).map(e=>e.columns.map(e=>e.value)):[]})]}function _v(e,t,n,r,i,a){return xc(lc(Ec(t.filter(e=>!tv(e,n,r)),e=>ev(e,n,r)),e=>e.length>1),t=>{let r=mv(n.length),o=iv(i,a,n);return xc(t,t=>{let i=`Duplicate ${r}: ${o} = ${av(t,n)}`;return n.map(n=>ov(e,t[n],i))})})}function vv(e,t,n,r){return xc(t,t=>xv(e,t,n,r))}function yv(e,t,n,r,i,a){if(!t.record||jc(t.record.values))return[];let o=$_(t.record),s=n.record?$_(n.record):[],c=new Set(s.map(e=>ev(e,i.fieldNames))),l=o.filter(e=>!tv(e,r.fieldNames)).filter(e=>{let t=ev(e,r.fieldNames);return!c.has(t)}),u=t.tableSymbol.interpretedName(e,a),d=n.tableSymbol.interpretedName(e,a);return xc(l,t=>{let n=iv(u.schema,u.name,r.fieldNames),a=iv(d.schema,d.name,i.fieldNames),o=`FK violation: ${n} = ${av(t,r.fieldNames)} does not exist in ${a}`;return r.fieldNames.map(n=>ov(e,t[n],o))})}function bv(e,t,n,r){let i=t.schemaName===`public`?null:t.schemaName;for(let a of e.values()){let{name:e,schema:o}=a.tableSymbol.interpretedName(n,r);if(e===t.tableName&&o===i)return a}}function xv(e,t,n,r){if(!t.endpoints)return[];let[i,a]=t.endpoints,o=bv(n,i,e,r),s=bv(n,a,e,r);return!o||!s?[]:Sv(e,o,s,i,a,r)}function Sv(e,t,n,r,i,a){let o=r.relation,s=i.relation;return o===`1`&&s===`1`||o===`*`&&s===`*`?[...yv(e,t,n,r,i,a),...yv(e,n,t,i,r,a)]:o===`*`&&s===`1`?yv(e,t,n,r,i,a):o===`1`&&s===`*`?yv(e,n,t,i,r,a):[]}var Cv=class{constructor(e,t,n){this.errors=[],this.warnings=[],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:j(this.programNode),externals:{tables:[],enums:[],tableGroups:[],tablePartials:[],notes:[]}}}interpret(){return this.interpretAllSymbols(),this.interpretAllMetadata(),this.interpretAllAliases(),this.warnings.push(...this.validateRecords()),new n(this.db,this.errors,this.warnings)}interpretAllSymbols(){for(let e of this.programSymbol.declaration.declarations){let n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n||n instanceof Yu)continue;let r=this.compiler.interpretSymbol(n,this.filepath);if(r.hasValue(t))continue;this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings());let i=r.getValue();i&&this.pushElement(n,i)}let e=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let n of e){if(!(n instanceof ju))continue;let e=this.compiler.symbolMembers(n).getFiltered(t)??[];for(let t of e)t instanceof Yu&&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());let t=r.getValue();t&&this.pushElement(e,t)}let i=n instanceof Pu?n.interpretedName(this.compiler,n.filepath):{name:n.name??``,schema:null},a=n instanceof Pu?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}]};sf(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 Sd))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());let a=e.getValue();if(a!==void 0)switch(i.kind){case gd.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 x(b.SAME_ENDPOINT,`Ref with same endpoints already exists`,i.declaration));break}n.add(e)}this.db.refs.push(e);break}case gd.Records:if(i instanceof Sd){let e=i.table(this.compiler)?.originalSymbol.intern()??``,t=e?r.get(e):void 0;if(t&&t.count>1){this.errors.push(new x(b.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 gd.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 Ju)||!t.isKind(M.Table))continue;let{name:e,schema:n}=t.originalSymbol.interpretedName(this.compiler,this.filepath),r={name:t.name,kind:Hd.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 ju))continue;let r=this.compiler.symbolMembers(e).getFiltered(t)??[];for(let e of r){if(!e.isKind(M.Table))continue;let t=e.originalSymbol;if(!(t instanceof Pu))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 Sd))continue;let i=r.table(this.compiler);if(!(i instanceof Pu))continue;let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))continue;let o=a.getValue();if(!o)continue;e.push(...cv(this.compiler,i,r.declaration,o)),e.push(...hv(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(...vv(this.compiler,[...this.db.refs,...a],n,this.filepath)),e}collectPartialRefs(e){let t=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof yd),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 Xu&&t.declaration===e.declaration)))continue;let l=Rd(s);if(!l)continue;let u=a instanceof zu&&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:j(i.leftToken())},m={schemaName:f.schema,tableName:f.name,fieldNames:o.map(e=>e.name??``),relation:l[1],token:j(i.rightToken())};n.push({token:j(i.declaration),endpoints:[p,m]})}return n}pushElement(e,t){if(!Array.isArray(t))switch(e.kind){case M.Table:this.db.tables.push(t);break;case M.Enum:this.db.enums.push(t);break;case M.TableGroup:this.db.tableGroups.push(t);break;case M.TablePartial:this.db.tablePartials.push(t);break;case M.StickyNote:this.db.notes.push(t);break;case M.DiagramView:this.db.diagramViews.push(t);break;default:break}}};const wv={nodeSymbol(t,r){return tu(r)?n.create(t.symbolFactory.create(qu,{declaration:r,name:r.filepath.absolute},r.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(M.Program))return n.create(e);if(!(i.declaration instanceof Qu))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(Ml);if(!o)return n.create([...a.values()]);let s=r.symbolMembers(o).getFiltered(t)?.filter(e=>!e.isKind(M.Schema));return s?n.create([...a.values(),...s]):n.create([...a.values()])},bindNode(t,r){return tu(r)?new af(r,t).resolve():n.create(e)},interpretSymbol(t,r,i){return r instanceof qu?r.declaration instanceof Qu?Fd(t,r.declaration)?new Cv(t,r,i).interpret():n.create(void 0,[...t.validateNode(r.declaration).getErrors(),...t.bindNode(r.declaration).getErrors()]):n.create(void 0):n.create(e)}};var Tv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof R)return[];let t=e.body.filter(e=>e instanceof F);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Ev=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=j(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}=wu(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.type?.value.toLowerCase()){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 z?t.body.body[0]?.callee:t.body?.callee,n=e?k(e):void 0;return n&&(this.project.note={value:Cu(n),token:j(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()]=k(t.body.callee),[]}})}};const Dv={nodeMetadata(t,i){return E(i,r.Project)?n.create(new Cd(i)):n.create(e)},bindNode(t,i){return E(i,r.Project)?n.create(void 0,new Tv(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return!(r instanceof Cd)||!(r.declaration instanceof F)?n.create(e):new Ev(t,r.declaration,i).interpret()}};var Ov=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 z&&e.push(...this.bindBody(this.declarationNode.body)),e}bindRecordsName(e){return this.declarationNode.parent instanceof Qu?this.bindTopLevelName(e):this.bindInsideTableName(e)}bindTopLevelName(e){let n=yu(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=fu(o.declaration)??`<invalid name>`,c=i.flatMap(e=>this.compiler.nodeReferee(e).getErrors());for(let e of n.args){let n=bu(e)??`<unnamed>`,r=this.compiler.nodeReferee(e).getFiltered(t);if(!r){c.push(new x(b.BINDING_ERROR,`Column '${n}' does not exist in Table '${s}'`,e));continue}let i=this.boundColumns.get(r);i&&(c.push(new x(b.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,i)),c.push(new x(b.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 F)||!n.isKind(r.Table)||!this.compiler.nodeSymbol(n).getFiltered(t)||!Jl(e))return[];let i=fu(n)??`<invalid name>`,a=[];for(let n of e.elementList){let e=bu(n)??`<unnamed>`;if(!this.compiler.nodeReferee(n).getFiltered(t)){a.push(new x(b.BINDING_ERROR,`Column '${e}' does not exist in Table '${i}'`,n));continue}}return a}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindDataRow(e);let t=e.body.filter(e=>e instanceof R),n=e.body.filter(e=>e instanceof F);return[...this.bindDataRows(t),...this.bindSubElements(n)]}bindDataRows(e){return e.flatMap(e=>this.bindDataRow(e))}bindDataRow(e){return e.callee?(e.callee instanceof sd?e.callee.elementList:[e.callee]).flatMap(Id).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():[])}},kv=class{constructor(e,t,n){this.compiler=e,this.metadata=t,this.element=t.declaration,this.filepath=n}interpret(){let e=[],t=[],r=Av(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=jv(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=j(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 Av(e,n,i){let a=e.name,o=e.parent;if(o instanceof F&&o.isKind(r.Table)){let e=n.nodeSymbol(o).getFiltered(t);if(!(e instanceof Pu))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===A(e))||[])}:{schemaName:c,tableName:l,columns:r}}let s=yu(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,M.Schema,u);e&&(p=n.lookupMembers(e,M.Table,l))}if(p||=n.lookupMembers(f,M.Table,l),!p)return;let m=p.originalSymbol;if(!(m instanceof Pu))return;let h=m.mergedColumns(n),ee=s.args.map(e=>h.find(t=>t.name===A(e))).filter(Boolean),te=m.interpretedName(n,i);return{schemaName:te.schema,tableName:te.name,columns:ee}}function jv(e,t,r){let i=[],a=[],o={},s=e.callee instanceof sd?e.callee.elementList:[e.callee];if(s.length!==t.length)return i.push(new x(b.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=Nv(n,l,r);i.push(...u.getErrors()),a.push(...u.getWarnings());let d=u.getValue();c.push(d??{value:null,type:`expression`,token:j(n)})}return new n({row:c,columnNodes:o},i,a)}function Mv(e){return e instanceof ad&&e.value?.value||``}function Nv(e,t,r){let i=j(e),a=t.type(r),o=(a?.name??``).split(`(`)[0],s=!!a?.enumSymbol,c=t.increment(r),l=t.nullable(r)===!1,u=t.default(r),d=t.name??``,f=wf(o,s),p=q_(e),m=p===null?Mv(e):p,h=p===null?`expression`:f;if(e instanceof ad)return new n({value:e.value?.value||``,type:`expression`,token:i},[],[]);if(L_(e)||R_(e)&&!bf(o)){let t=u&&u.value.toString().toLowerCase()!==`null`,r=Cf(o);return l&&!t&&!c&&!r?new n({value:null,type:f,token:i},[],[new Pl(b.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(M.EnumField)).map(e=>e.name).filter(Boolean):[],s=k(e);return s===void 0&&(s=w(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 Pl(b.INVALID_RECORDS_FIELD,`Invalid enum value for column '${d}'`,e)])}if(gf(o)||_f(o)||Cf(o)){let t=B_(e);if(t===null)return new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid numeric value for column '${d}'`,e)]);if(gf(o)&&!Number.isInteger(t))return new n({value:Math.floor(t),type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid integer value ${t} for column '${d}': expected integer, got decimal`,e)]);let r=_f(o)&&a?.args?.length?{precision:Number(a.args[0]),scale:a.args.length>=2?Number(a.args[1]):0}:void 0;if(_f(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 Pl(b.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 Pl(b.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(yf(o)){let t=G_(e);return t===null?new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid boolean value for column '${d}'`,e)]):new n({value:t,type:f,token:i},[],[])}if(Sf(o)){let t=Z_(e);return t===null?new n({value:m,type:h,token:i},[],[new Pl(b.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(bf(o)){let t=q_(e);if(t===null)return new n({value:m,type:h,token:i},[],[new Pl(b.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 Pl(b.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:h,token:i},[],[])}const Pv={nodeMetadata(t,i){if(!E(i,r.Records))return n.create(e);let a=i.parent;if(a&&E(a,r.Table))return n.create(new Sd(i));let o=i.name;return o instanceof V&&o.callee?n.create(new Sd(i)):n.create(e)},nodeReferee(i,a){if(!w(a))return n.create(e);let o=a.parentOfKind(F);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(od);if(l?.parentNode===o)return Fv(i,o,a);let u=a.parentOfKind(V);return u?.parentNode===o&&l?.parentNode===u?Iv(i,u,a):u?.parentNode===o&&u.callee?.containsEq(a)?Lv(i,c,a):zv(i,c,a)},bindNode(t,i){return E(i,r.Records)?n.create(void 0,new Ov(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof Sd?r.declaration instanceof F?new kv(t,r,i).interpret():n.create(void 0):n.create(e)}};function Fv(e,i,a){let o=i.parent;if(o instanceof F&&o.isKind(r.Table)){let n=e.nodeSymbol(o).getFiltered(t);if(n)return Rv(e,n,a)}return new n(void 0)}function Iv(e,r,i){if(r.callee){let n;if(w(r.callee))n=e.nodeReferee(r.callee).getFiltered(t);else{let i=hu(r.callee);if(i&&i.length>0){let r=i[i.length-1];n=e.nodeReferee(r).getFiltered(t)}}if(n)return Rv(e,n,i)}return new n(void 0)}function Lv(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode)){let a=e.lookupMembers(t,[M.Table,M.Schema],i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table '${i}' does not exist in Schema 'public'`,r)])}let a=Ld(e,r);if(!a){let a=e.lookupMembers(t,[M.Table,M.Schema],i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${i}' does not exist`,r)])}if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Table,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${i}' does not exist`,r)])}return new n(void 0)}function Rv(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``,a=e.lookupMembers(t,M.Column,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${i}' does not exist in Table 'public.${t.name}'`,r)])}function zv(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return new n(void 0);let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(M.Enum)){let t=e.lookupMembers(a,M.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.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(T(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,M.Enum,i);return a?n.create(a):new n(void 0,[new x(b.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var Bv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof Qu)&&!this.declarationNode.parent?.isKind(r.Project)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Id).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():[])}},Vv=class{constructor(e,t,n){this.compiler=e,this.filepath=n,this.metadata=t,this.declarationNode=t.declaration,this.ref={}}interpret(){this.ref.token=j(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody()];return n.create(this.ref,e)}interpretName(){if(!(this.declarationNode instanceof F))return[];let e=[],t=O(this.declarationNode.name)??[];return this.ref.name=t.pop()||null,t.length>1&&e.push(new x(b.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(Kc(t,r).every(([e,t])=>e?.originalSymbol===t?.originalSymbol))return[new x(b.SAME_ENDPOINT,`Two endpoints are the same`,this.declarationNode)];let a=Rd(e),o=n?.interpretedName(this.compiler,this.filepath),s=i?.interpretedName(this.compiler,this.filepath),c=j(this.metadata.leftToken()),l=j(this.metadata.rightToken());if(this.ref.endpoints=this.declarationNode instanceof F?[{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 F))return[];let u=mu(this.declarationNode)[0];if(u.args[0]){let e=S(u.args[0]).getValue(),t=e.delete?.at(0)?.value;this.ref.onDelete=t instanceof nd?du(t):A(t);let n=e.update?.at(0)?.value;this.ref.onUpdate=n instanceof nd?du(n):A(n),this.ref.color=e.color?.length?Tu(e.color?.at(0)?.value):void 0}return[]}};function Hv(e){let t=e.parent;for(;t;){if(t instanceof F&&t.isKind(r.Ref))return t.body?.containsEq(e)??!1;t=t.parent}return!1}const Uv={nodeReferee(r,i){if(!w(i)&&!T(i)||!Hv(i)||i.parentOfKind(I))return n.create(e);let a=r.parseFile(i.filepath).getValue().ast,o=r.nodeSymbol(a).getValue();return o===t?n.create(void 0):Gv(r,o,i)},nodeMetadata(t,a){if(E(a,r.Ref)){let t=mu(a)[0];if(!(t instanceof R)||!t.callee)return n.create(e);let r=t.callee;return!(r instanceof rd)||!r.op?n.create(e):n.create(new vd(a))}if(a instanceof I){if(!(a.name instanceof nd)||du(a.name)?.toLowerCase()!==i.Ref)return n.create(e);let t=a.parent;return t instanceof F&&t.isKind(r.TablePartial)?n.create(new yd(a)):n.create(new vd(a))}return n.create(e)},bindNode(t,i){return E(i,r.Ref)?n.create(void 0,new Bv(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof vd?new Vv(t,r,i).interpret():n.create(e)}};function Wv(e,n){let r=e.symbolMembers(n).getFiltered(t);if(r)return r.find(e=>e instanceof ju&&e.isPublicSchema())}function Gv(e,r,i){if(!w(i))return new n(void 0);let a=bu(i)??``;if(!T(i.parentNode)){let r=i.parentNode;if(r&&T(r.parentNode)&&r.parentNode.rightExpression===r){let o=r.parentNode.leftExpression,s=T(o)?o.rightExpression??o:o,c=e.nodeReferee(s).getFiltered(t);if(c?.isKind(M.Table)){let r=e.lookupMembers(c,M.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 x(b.BINDING_ERROR,`Column '${a}' does not exist in Table '${o}'`,i)])}}return n.create(void 0)}let o=Ld(e,i);if(o){if(o.isKind(M.Schema)){let t=e.lookupMembers(o,[M.Table,M.Schema],a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}if(o.isKind(M.Table)){let r=e.lookupMembers(o,M.Column,a);return r?n.create(r):new n(void 0,[new x(b.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(T(s.parentNode)&&s.parentNode.leftExpression===s){let t=e.lookupMembers(r,M.Schema,a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}let t=Wv(e,r);if(t){let r=e.lookupMembers(t,M.Table,a);if(r)return n.create(r)}let o=e.lookupMembers(r,M.Table,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}return new n(void 0)}const Kv={visibleName(e,n){let r=n instanceof N?n:n.useSpecifierDeclaration instanceof ed?n.useSpecifierDeclaration:n.declaration;if(r instanceof ed&&n instanceof Au&&r.getSymbolKind()!==n.kind&&(r=n.declaration),r)return e.nodeAlias(r).mapFiltered(e=>[e],t,void 0).getFiltered(t)||e.nodeFullname(r).getFiltered(t)}},qv={nodeSymbol(r,i){if(!eu(i)||!i.name)return n.create(e);let a=i.getSymbolKind();if(a===void 0)return n.create(e);let o=r.nodeReferee(i.name).getFiltered(t);return o&&!o.canBeImported&&a!==M.Schema?n.create(e):n.create(r.symbolFactory.create(Yu,{useSpecifierDeclaration:i,declaration:o?.declaration,usedSymbol:o,kind:a,name:Kv.visibleName(r,i)?.at(-1)},i.filepath),o===void 0?[new x(b.BINDING_ERROR,`Failed to resolve the import of ${a} '${(O(i.name)||[]).map(py).join(`.`)}'`,i)]:[])},symbolMembers(r,i){if(!(i instanceof Yu))return n.create(e);let a=r.symbolMembers(i.originalSymbol).getFiltered(t);return n.create(a??[])},nodeReferee(r,i){if(!w(i)&&!Ql(i))return n.create(e);let a=i.parentOfKind(ed);if(!a)return n.create(e);let o=a.name===i||T(a.name)&&a.name.rightExpression===i?a.getSymbolKind():M.Schema;if(o===void 0)return n.create(void 0);let s=O(i.parentOfKind(rd)),c=A(i)??s?.at(-1);if(c===void 0)return n.create(void 0);let l=i.parentOfKind($u);if(l?.importPath?.value===void 0)return n.create(void 0);let u=Ol(i.filepath,l.importPath.value);if(!u)return n.create(void 0);if(!r.layout.exists(u))return n.create(void 0,[new x(b.NONEXISTENT_MODULE,`${o} '${s?.join(`.`)??c}' does not exist in file ${u.toString()}. Does the file exist?`,i)]);let d=i.parentOfKind(rd)?.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 x(b.NAME_NOT_FOUND,`Could not find ${o} '${c}'`,i)])}let f=Jv(r,u,c,o);return f?n.create(f):n.create(void 0,[new x(b.BINDING_ERROR,`${o} '${c}' does not exist in file ${u.toString()}`,i)])},bindNode(t,r){if($l(r)){let e=[];if(r.importPath?.value){let n=Ol(r.filepath,r.importPath.value);n&&!t.layout.exists(n)&&e.push(new x(b.NONEXISTENT_MODULE,`Failed to resolve the non-existent file '${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 td?new n(void 0,r.specifiers.flatMap(e=>t.bindNode(e).getErrors())):eu(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 Yu))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 Jv(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);if(s?.isKind(i))return s;let c=o.schemaMembers.find(e=>e.name===r);if(c?.isKind(M.Schema))return c;for(let t of o.reuses.selective)if(O(t.alias??t.name)?.at(-1)===r){let o=t.parentOfKind($u);if(o?.importPath?.value){let s=Jv(e,Ol(n,o.importPath.value),O(t.name)?.at(-1)??r,i,a);if(s)return s}}for(let{importPath:t}of o.reuses.wildcard){let n=Jv(e,t,r,i,a);if(n)return n}}function Yv(e){if(e instanceof Dl){let{ast:n}=this.parseFile(e).getValue(),r=this.nodeSymbol(n).getFiltered(t);return this.usableMembers(r)}let r=e.filepath,i=Zv(this,r),{nonSchemaMembers:a,schemaMembers:o}=e instanceof qu?Qv(this,e,i):$v(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 Xv(e,n,r){let i=n.qualifiedName,a;if(a=r instanceof ed?Kv.visibleName(e,r):e.nodeFullname(r).getFiltered(t),!a)return{kind:`none`};let o=a.length<=1?[Ml]: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 Zv(e,t){let n=e.parseFile(t),{ast:r}=n.getValue(),i=[],a=[],o=[],s=[];for(let e of r.body){if(!(e instanceof $u)||!e.specifiers||!e.importPath)continue;let n=Ol(t,e.importPath.value);n&&(e.isReuse?e.specifiers instanceof ud?i.push({importPath:n,node:e.specifiers}):a.push(...e.specifiers.specifiers):e.specifiers instanceof ud?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 Qv(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=n.filepath,c=new Map([[Ml,e.symbolFactory.create(ju,{name:Ml},s)]]);for(let n of i.declarations){let r=e.nodeFullname(n).getFiltered(t)||[],i=r.length<=1?Ml:r[0];c.has(i)||c.set(i,e.symbolFactory.create(ju,{name:i},s))}ey(e,[...a,...o],c,s);for(let t of e.reachableFiles(s))for(let n of ny(e,t))c.has(n)||c.set(n,e.symbolFactory.create(ju,{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 $v(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=[],c=new Map;for(let r of i.body){if(!(r instanceof F))continue;let i=Xv(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(Ju,{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(ju,{name:i.schemaName,parent:n},n.filepath))}ty(e,[...a,...o],n,c);let l=n.qualifiedName;for(let t of e.reachableFiles(n.filepath))for(let r of ry(e,t,l))c.has(r)||c.set(r,e.symbolFactory.create(ju,{name:r,parent:n},n.filepath));return{nonSchemaMembers:s,schemaMembers:[...c.values()]}}function ey(e,t,n,r){for(let i of t){if(i.getSymbolKind()!==M.Schema)continue;let t=Kv.visibleName(e,i)?.at(0);t!==void 0&&!n.has(t)&&n.set(t,e.symbolFactory.create(ju,{name:t},r))}}function ty(e,t,n,r){let i=n.qualifiedName;for(let a of t){if(a.getSymbolKind()!==M.Schema)continue;let t=Kv.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(ju,{name:o,parent:n},n.filepath))}}function ny(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?Ml:r[0];i.push(a)}let a=Zv(e,n);for(let t of[...a.selectiveUses,...a.selectiveReuses]){if(t.getSymbolKind()!==M.Schema)continue;let n=Kv.visibleName(e,t)?.at(0);n!==void 0&&i.push(n)}return i}function ry(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?[Ml]:i.slice(0,-1);o.length>r.length&&r.every((e,t)=>e===o[t])&&a.push(o[r.length])}let o=Zv(e,n);for(let t of[...o.selectiveUses,...o.selectiveReuses]){if(t.getSymbolKind()!==M.Schema)continue;let n=Kv.visibleName(e,t);!n||n.length<=r.length||r.every((e,t)=>e===n[t])&&a.push(n[r.length])}return a}var iy=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);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(_(n)instanceof B){let e=S(_(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=>!Hl(e.callee)))}tryToBindColumnType(e){let t=gu(e);if(!t)return;let n=t.variables.pop();n&&this.compiler.nodeReferee(n).getErrors()}tryToBindEnumFieldRef(e){if(C(e))return[];if(w(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&kl.includes(t))return[]}let t=gu(e);if(!t){if(T(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 Id(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():[])}},ay=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??j(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}=wu(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new x(b.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=bu(e);return t&&(this.table.alias=t),[]}interpretSettingList(e){let t=S(e).getValue();this.table.headerColor=t[i.HeaderColor]?.length?Tu(t[i.HeaderColor]?.at(0)?.value):void 0;let[n]=t[i.Note]||[];return this.table.note=n&&{value:Cu(k(n?.value)),token:j(n)},[]}interpretBody(e){let[t,n]=v(e.body,e=>e instanceof R);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case r.Note:return this.table.note={value:Cu(k(e.body instanceof z?e.body.body[0].callee:e.body.callee)),token:j(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:j(e)};i.name=A(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),i=n?(this.compiler.symbolUses(n).getFiltered(t)??[]).find(e=>e.filepath.equals(this.filepath)):void 0;r.push(new x(b.UNSUPPORTED,`Import TablePartial from '${a.filepath}' first. Currently, importing a table that uses a table partial requires that table partial to also be in scope.`,i?.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(M.Column)).length?[]:[new x(b.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],i=e.flatMap((e,t)=>Hl(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=bu(e.callee),r.token=j(e);let o=Du(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||!1,r.unique=a?.unique(this.compiler)||!1,r.increment=a?.increment(this.compiler)||void 0;let s=a?.nullable(this.compiler);r.not_null=s===void 0?void 0:!s,r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let c=this.compiler.nodeSettings(e).getFiltered(t)??{},l=this.compiler.parseFile(this.filepath).getValue().ast,u=this.compiler.nodeSymbol(l).getFiltered(t);return r.inline_refs=(c[i.Ref]||[]).flatMap(e=>{let r=this.compiler.nodeMetadata(e).getFiltered(t);if(!r)return[];let i=r.owners(this.compiler);if(u&&i.length>0&&!i.some(e=>e===u))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=(c[i.Check]||[]).map(e=>({token:j(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()}};const oy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`Table '${e}' already exists in schema '${t}'`,n)},getColumnDuplicateError(e,t){return new x(b.DUPLICATE_COLUMN_NAME,`Duplicate column '${e}'`,t)},getPartialInjectionDuplicateError(e,t){return new x(b.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${e}'`,t)}},sy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.Table)?new n(i.symbolFactory.create(Pu,{declaration:a,name:o},a.filepath)):D(a,r.Table)?Hl(a.callee)?new n(i.symbolFactory.create(Bu,{declaration:a,name:o},a.filepath)):new n(i.symbolFactory.create(Fu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(M.Table))return n.create(e);let a=i.declaration;if(!(a instanceof F))return new n([]);let o=mu(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(M.Column,M.PartialInjection)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration,r=l.get(t);r?e.isKind(M.Column)?(c.push(oy.getColumnDuplicateError(e.name,r)),c.push(oy.getColumnDuplicateError(e.name,n))):(c.push(oy.getPartialInjectionDuplicateError(e.name,r)),c.push(oy.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 R)||!Hl(n.declaration.callee))continue;let i=n.declaration.callee.expression,o=A(i);if(i===void 0||o===void 0)continue;let l=r.nodeReferee(i).getFiltered(t);if(!l){c.push(new x(b.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(Xu,{kind:M.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(M.Column)&&!(e instanceof Xu)).map(e=>e.name));return new n(Vc([...s.filter(e=>!(e instanceof Xu&&d.has(e.name)))].reverse(),e=>e.isKind(M.Column)?e.name:e).reverse(),c)},nodeReferee(a,o){if(!nu(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):w(o)&&o.parentNode instanceof L&&o.parentNode.op?.value===`~`?cy(a,c,o):ru(o,1)?ly(a,c,o):au(o,i.Ref)?uy(a,c,o):ru(o,0)?n.create(e):dy(a,c,o)},bindNode(i,a){if(!E(a,r.Table))return n.create(e);let o=new iy(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 Pu?r.declaration instanceof F?new ay(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function cy(e,r,i){let a=A(i)??``,o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof ju&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,M.TablePartial,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,M.TablePartial,a);return s?n.create(s):new n(void 0,[new x(b.NAME_NOT_FOUND,`TablePartial '${a}' does not exist in Schema 'public'`,i)])}function ly(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=lu(r),o=e.lookupMembers(a,t?M.Enum:M.Schema,i);return o?n.create(o):new n(void 0,[new x(b.NAME_NOT_FOUND,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,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function uy(e,i,a){if(!w(a))return new n(void 0);let o=bu(a)??``;if(!T(a.parentNode)){let s=a.parent,c=s instanceof F&&s.isKind(r.Table)?e.nodeSymbol(s).getFiltered(t):void 0;if(c){let t=e.lookupMembers(c,M.Column,o);if(t)return n.create(t)}let l=e.lookupMembers(i,M.Column,o);return l?n.create(l):new n(void 0,[new x(b.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${c?.name??``}'`,a)])}let s=Ld(e,a);if(s){if(s.isKind(M.Schema)){let t=e.lookupMembers(s,[M.Table,M.Schema],o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(M.Table)){let t=e.lookupMembers(s,M.Column,o);return t?n.create(t):new n(void 0,[new x(b.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(T(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,M.Schema,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,M.Table,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function dy(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return kl.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(M.Enum)){let t=e.lookupMembers(a,M.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`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(T(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,M.Enum,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function fy(e){return e?e.split(``).every(e=>Fl(e)||Il(e))&&!Il(e[0]):!1}function py(e){return fy(e)?e:`"${hy(e)}"`}function my(e){let t=``,n=0,r={n:`
4
+ `)}function wu(e){let t=O(e);return!t||t.length===0?{schemaName:[],name:``}:{name:t[t.length-1],schemaName:t.slice(0,-1)}}function Tu(e){if(e instanceof fd&&e.expression instanceof ld&&e.expression.literal?.kind===y.COLOR_LITERAL)return e.expression.literal.value}function Eu(e){if(e){if(C(e)){let t=k(e);if(t!==void 0)return{value:t,type:`string`}}if(Kl(e))return{type:`number`,value:Su(e)};if(Zl(e))return{value:e.expression.variable.value.toLowerCase(),type:`boolean`};if(e instanceof ad&&e.value)return{value:e.value.value,type:`expression`};if(Ql(e)){let t=hu(e)?.at(-1),n=t?A(t):void 0;if(n!==void 0)return{value:n,type:`string`}}}}function Du(e,t){let r=``,i=null;if(t instanceof V){if(i=(t.argumentList?.elementList??[]).map(e=>Kl(e)?xu(e):C(e)?k(e):A(e)).join(`,`),r=`(${i})`,!t.callee)return new n({schemaName:null,type_name:``,args:i});t=t.callee}for(;t instanceof V||t instanceof md;)if(t instanceof V){if(r=`(${(t.argumentList?.elementList??[]).map(e=>Kl(e)?xu(e):C(e)?k(e):A(e)).join(`,`)})${r}`,!t.callee)break;t=t.callee}else if(t instanceof md){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}=wu(t);return o.length>1?new n({schemaName:o[0]??null,type_name:`${a}${r}`,args:i},[new x(b.UNSUPPORTED,`Nested schema is not supported`,t)]):new n({schemaName:o.length===0?null:o[0],type_name:`${a}${r}`,args:i})}let M=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}({});const Ou={Table:M.Table,Enum:M.Enum,TableGroup:M.TableGroup,TablePartial:M.TablePartial,Note:M.StickyNote,Schema:M.Schema};var ku=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},Au=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 j(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()}},ju=class e extends Au{constructor({name:e,parent:t},n,r){super({kind:M.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(`.`)===Ml}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}},Mu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.Enum,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Nu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.EnumField,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=Cu(k(i));if(a)return{value:a,token:j(r)}}},Pu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.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 Xu))}mergedColumns(e){return this.members(e).filter(e=>e.isKind(M.Column))}partialInjections(e){return this.members(e).filter(e=>e.isKind(M.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=Cu(k(i));if(a)return{value:a,token:j(r)}}headercolor(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.[i.HeaderColor]?.length?Tu(n[i.HeaderColor].at(0)?.value):void 0}refs(e){return this.metadata(e).filter(e=>e.kind===gd.Ref)}checks(e){return this.metadata(e).filter(e=>e.kind===gd.TableChecks)}indexes(e){return this.metadata(e).filter(e=>e.kind===gd.Indexes)}records(e){return this.metadata(e).filter(e=>e.kind===gd.Records)}resolvedPartials(e){return this.partialInjections(e).flatMap(n=>{if(!(n.declaration instanceof R)||!Hl(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===gd.Indexes));return[...t,...n]}mergedChecks(e){let t=this.checks(e),n=this.resolvedPartials(e).flatMap(t=>t.metadata(e).filter(e=>e.kind===gd.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=Tu(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=Cu(k(a));if(o)return{value:o,token:j(i)}},r=n(this);for(let t of this.resolvedPartials(e)){let e=n(t);e&&(r=e)}return r}},Fu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.Column,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}pk(e){if(!this.declaration)return!1;let n=e.nodeSettings(this.declaration).getFiltered(t);return!!(n?.[i.PK]?.length||n?.[i.PrimaryKey]?.length)}unique(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Unique]?.length:!1}nullable(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);if(n?.[i.NotNull]?.length)return!1;if(n?.[i.Null]?.length)return!0}increment(e){return this.declaration?!!e.nodeSettings(this.declaration).getFiltered(t)?.[i.Increment]?.length:!1}default(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t)?.[i.Default]?.at(0)?.value;if(n)return Eu(n)}type(e){if(!(this.declaration instanceof R))return;let n=Du(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 Mu?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===gd.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=Cu(k(i));if(a)return{value:a,token:j(r)}}},Iu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.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(M.TableGroupField))}color(e){if(!this.declaration)return;let n=e.nodeSettings(this.declaration).getFiltered(t);return n?.color?.length?Tu(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=Cu(k(i));if(a)return{value:a,token:j(r)}}},Lu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.TableGroupField,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Ru=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.StickyNote,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},zu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.TablePartial,declaration:e,name:t},n,r)}get canBeImported(){return!0}get originalSymbol(){return this}},Bu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.PartialInjection,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Vu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramView,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Hu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewTopLevelWildcard,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Uu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewTable,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Wu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewTableGroup,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Gu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewNote,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},Ku=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.DiagramViewSchema,declaration:e,name:t},n,r)}get canBeImported(){return!1}get originalSymbol(){return this}},qu=class extends Au{constructor({declaration:e,name:t},n,r){super({kind:M.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 ju&&r.inNestedSchema(e,t))return!0;return!1}},Ju=class extends Au{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}},Yu=class extends Au{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($u);return!e||e.isReuse}get originalSymbol(){return this.usedSymbol?this.usedSymbol.originalSymbol:this}},Xu=class extends Fu{constructor({declaration:e,name:t,injectionDeclaration:n},r,i){super({declaration:e,name:t},r,i),this.injectionDeclaration=n,this.name=t}},Zu=class{constructor(){this.id=0}reset(){this.id=0}nextId(){return this.id++}},N=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 Xc?tl(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 Xc?el(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 F||e instanceof Qu)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}};let 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}({});var Qu=class extends N{constructor({body:e=[],eof:t,source:n},r,i){super(r,P.PROGRAM,i,[...e,t]),this.source=n,this.body=e,this.eof=t}get declarations(){return this.body.filter(e=>e.kind===P.ELEMENT_DECLARATION)}get uses(){return this.body.filter(e=>e.kind===P.USE_DECLARATION)}},$u=class extends N{constructor({useKeyword:e,specifiers:t,fromKeyword:n,importPath:r},i,a){super(i,P.USE_DECLARATION,a,[e,t,n,r]),this.useKeyword=e,this.specifiers=t,this.fromKeyword=n,this.importPath=r}get isReuse(){return ol(this.useKeyword)}},ed=class extends N{constructor({importKind:e,name:t,asKeyword:n,alias:r},i,a){super(i,P.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(M).find(t=>t.toLowerCase()===e)}},td=class extends N{constructor({openBrace:e,specifiers:t=[],closeBrace:n},r,i){super(r,P.USE_SPECIFIER_LIST,i,[e,...t,n]),this.openBrace=e,this.specifiers=t,this.closeBrace=n}},F=class e extends N{constructor({type:t,name:n,as:r,alias:i,attributeList:a,bodyColon:o,body:s},c,l){if(super(c,P.ELEMENT_DECLARATION,l,[t,n,r,i,a,o,s]),s&&o&&!(s instanceof R||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))}},nd=class extends N{constructor({identifiers:e=[]},t,n){super(t,P.IDENTIFIER_STREAM,n,e||[]),this.identifiers=e}},I=class extends N{constructor({name:e,colon:t,value:n},r,i){super(r,P.ATTRIBUTE,i,[e,t,n]),this.name=e,this.value=n,this.colon=t}},L=class extends N{constructor({op:e,expression:t},n,r){super(n,P.PREFIX_EXPRESSION,r,[e,t]),this.op=e,this.expression=t}},rd=class extends N{constructor({op:e,leftExpression:t,rightExpression:n},r,i){super(r,P.INFIX_EXPRESSION,i,[t,e,n]),this.op=e,this.leftExpression=t,this.rightExpression=n}},id=class extends N{constructor({op:e,expression:t},n,r){super(n,P.POSTFIX_EXPRESSION,r,[t,e]),this.op=e,this.expression=t}},ad=class extends N{constructor({value:e},t,n){super(t,P.FUNCTION_EXPRESSION,n,[e]),this.value=e}},R=class extends N{constructor({callee:e,args:t=[]},n,r){super(n,P.FUNCTION_APPLICATION,r,[e,...t]),this.callee=e,this.args=t}},z=class extends N{constructor({blockOpenBrace:e,body:t=[],blockCloseBrace:n},r,i){super(r,P.BLOCK_EXPRESSION,i,[e,...t,n]),this.blockOpenBrace=e,this.body=t,this.blockCloseBrace=n}},B=class extends N{constructor({listOpenBracket:e,elementList:t=[],commaList:n=[],listCloseBracket:r},i,a){super(i,P.LIST_EXPRESSION,a,[e,...hd(t,n),r]),this.listOpenBracket=e,this.elementList=t,this.commaList=n,this.listCloseBracket=r}},od=class extends N{constructor({tupleOpenParen:e,elementList:t=[],commaList:n=[],tupleCloseParen:r},i,a){super(i,P.TUPLE_EXPRESSION,a,[e,...hd(t,n),r]),this.tupleOpenParen=e,this.elementList=t,this.commaList=n,this.tupleCloseParen=r}},sd=class extends N{constructor({elementList:e=[],commaList:t=[]},n,r){super(n,P.COMMA_EXPRESSION,r,[...hd(e,t)]),this.elementList=e,this.commaList=t}},cd=class extends od{constructor({groupOpenParen:e,expression:t,groupCloseParen:n},r,i){super({tupleOpenParen:e,elementList:t&&[t],commaList:[],tupleCloseParen:n},r,i),this.kind=P.GROUP_EXPRESSION}},V=class extends N{constructor({callee:e,argumentList:t},n,r){super(n,P.CALL_EXPRESSION,r,[e,t]),this.callee=e,this.argumentList=t}},ld=class extends N{constructor({literal:e},t,n){super(t,P.LITERAL,n,[e]),this.literal=e}},ud=class extends N{constructor({token:e},t,n){super(t,P.WILDCARD,n,[e]),this.token=e}},dd=class extends N{constructor({variable:e},t,n){super(t,P.VARIABLE,n,[e]),this.variable=e}},fd=class extends N{constructor({expression:e},t,n){super(t,P.PRIMARY_EXPRESSION,n,[e]),this.expression=e}},pd=class extends N{constructor({prevToken:e},t,n){let r=Xc.create(y.SPACE,n,e.endPos,e.endPos,` `,!1);super(t,P.EMPTY,n,[r])}},md=class extends N{constructor({expression:e,indexer:t},n,r){super(n,P.ARRAY,r,[e,t]),this.array=e,this.indexer=t}};function hd(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?da(Kc(e,t)):da(Kc(t,e))).filter(e=>e!==null)}let gd=function(e){return e.Ref=`ref`,e.PartialRef=`partial ref`,e.TableChecks=`table checks`,e.Indexes=`indexes`,e.Records=`records`,e.Project=`project`,e}({});var _d=class e{static#e=this.id=0;constructor(t){this.declaration=t,this.id=++e.id}intern(){return`metadata@${this.declaration.filepath.intern()}:${this.id}`}},vd=class extends _d{constructor(e){super(e),this.kind=gd.Ref}container(e){let n=this.declaration.parentOfKind(F);if(n?.isKind(r.Table))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return[];let n=t.callee;return n instanceof rd?wd(e,n.leftExpression):[]}if(this.declaration instanceof I){let n=this.declaration.parentOfKind(R);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}return[]}rightColumns(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return[];let n=t.callee;return n instanceof rd?wd(e,n.rightExpression):[]}if(this.declaration instanceof I){let t=this.declaration.value;return t instanceof L?wd(e,t.expression):[]}return[]}leftTable(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return;let n=t.callee;return n instanceof rd?Td(e,n.leftExpression):void 0}if(this.declaration instanceof I)return this.container(e)}rightTable(e){if(this.declaration instanceof F){let t=mu(this.declaration)[0];if(!(t instanceof R))return;let n=t.callee;return n instanceof rd?Td(e,n.rightExpression):void 0}if(this.declaration instanceof I){let t=this.declaration.value;return t instanceof L?Td(e,t.expression)??this.container(e):void 0}}op(e){if(this.declaration instanceof F){let e=mu(this.declaration)[0];if(!(e instanceof R))return;let t=e.callee;return t instanceof rd?t.op?.value:void 0}if(this.declaration instanceof I){let e=this.declaration.value;return e instanceof L?e.op?.value:void 0}}leftToken(){if(this.declaration instanceof F){let e=mu(this.declaration)[0];if(e instanceof R){let t=e.callee;if(t instanceof rd&&t.leftExpression)return t.leftExpression}}if(this.declaration instanceof I){let e=this.declaration.parentOfKind(R);if(e)return e}return this.declaration}rightToken(){if(this.declaration instanceof F){let e=mu(this.declaration)[0];if(e instanceof R){let t=e.callee;if(t instanceof rd&&t.rightExpression)return t.rightExpression}}return this.declaration instanceof I,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))}},yd=class extends _d{constructor(e){super(e),this.kind=gd.PartialRef}container(e){let n=this.declaration.parentOfKind(F);if(n?.isKind(r.TablePartial))return e.nodeSymbol(n).getFiltered(t)}leftColumns(e){if(!(this.declaration instanceof I))return[];let n=this.declaration.parentOfKind(R);if(!n)return[];let r=e.nodeSymbol(n).getFiltered(t);return r?[r]:[]}rightColumns(e){if(!(this.declaration instanceof I))return[];let t=this.declaration.value;return t instanceof L?wd(e,t.expression):[]}leftTablePartial(e){if(this.declaration instanceof I)return this.container(e)}rightTable(e){if(!(this.declaration instanceof I))return;let t=this.declaration.value;if(t instanceof L)return Td(e,t.expression)??this.container(e)}op(e){if(!(this.declaration instanceof I))return;let t=this.declaration.value;if(t instanceof L)return t.op?.value}leftToken(){if(this.declaration instanceof I){let e=this.declaration.parentOfKind(R);if(e)return e}return this.declaration}rightToken(){return this.declaration instanceof I,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))}},bd=class extends _d{constructor(e){super(e),this.kind=gd.TableChecks,this.ownerTable=e.parentNode?.parentOfKind(F)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},xd=class extends _d{constructor(e){super(e),this.kind=gd.Indexes,this.ownerTable=e.parentNode?.parentOfKind(F)}owners(e){if(!this.ownerTable)return[];let n=e.nodeSymbol(this.ownerTable).getFiltered(t);return n?[n.originalSymbol]:[]}},Sd=class extends _d{constructor(e){super(e),this.kind=gd.Records}table(e){let n=this.declaration,i=n.parent;if(i instanceof F&&i.isKind(r.Table))return e.nodeSymbol(i).getFiltered(t);let a=n.name;if(!(a instanceof V))return;let o=yu(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)):[]}},Cd=class extends _d{constructor(e){super(e),this.kind=gd.Project}owners(e){let n=this.declaration.filepath,r=e.parseFile(n).getValue().ast,i=e.nodeSymbol(r).getFiltered(t);return i?[i]:[]}};function wd(e,n){if(!n)return[];let r=gu(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 Td(e,n){if(!n)return;let r=gu(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 Ed=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return[]}},Dd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}interpret(){let e=this.declarationNode.body;return e instanceof z?new n(e.body.flatMap(e=>{if(!(e instanceof R))return[];let t=j(e),n=e.callee instanceof ad?e.callee.value?.value??``:``,r,a=e.args.find(e=>e instanceof B);return a&&(r=k(S(a).getValue()[i.Name]?.at(0)?.value)),{expression:n,name:r,token:t}})):new n([])}};const Od={nodeMetadata(t,i){if(E(i,r.Checks)){let t=i.parent;return!t||!E(t,r.Table)&&!E(t,r.TablePartial)?n.create(e):n.create(new bd(i))}return n.create(e)},bindNode(t,i){return E(i,r.Checks)?n.create(void 0,new Ed(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===gd.TableChecks?r.declaration instanceof F?new Dd(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function kd(e,t,n){let r=t,i=e;if(i instanceof V&&i.argumentList&&(r=[i.argumentList,...r],i=i.callee),!i||!Zl(i)||r.length===0)return;let a=[...r],o=uu(i),s=a.pop();if(!(s instanceof z))return;let c=_(a)instanceof B?a.pop():void 0;if(a.length===3){let e=uu(a[1]);return!e||!rl(e)?void 0:n.create(F,{type:o,name:a[0],as:e,alias:a[2],attributeList:c,body:s})}if(a.length===1)return n.create(F,{type:o,name:a[0],attributeList:c,body:s});if(a.length===0)return n.create(F,{type:o,attributeList:c,body:s})}function H(e){e&&(e instanceof Xc?Ad(e):jd(e))}function Ad(e){e.kind!==y.EOF&&(e.isInvalid=!0)}function jd(e){if(e instanceof F)H(e.type),H(e.name),H(e.as),H(e.alias),H(e.bodyColon),H(e.attributeList),H(e.body);else if(e instanceof nd)e.identifiers.forEach(H);else if(e instanceof I)H(e.name),H(e.colon),H(e.value);else if(e instanceof L)H(e.op),H(e.expression);else if(e instanceof rd)H(e.leftExpression),H(e.op),H(e.rightExpression);else if(e instanceof id)H(e.op),H(e.expression);else if(e instanceof z)H(e.blockOpenBrace),e.body.forEach(H),H(e.blockCloseBrace);else if(e instanceof B)H(e.listOpenBracket),e.commaList.forEach(H),e.elementList.forEach(H),H(e.listCloseBracket);else if(e instanceof od)H(e.tupleOpenParen),e.commaList.forEach(H),e.elementList.forEach(H),H(e.tupleCloseParen);else if(e instanceof sd)e.commaList.forEach(H),e.elementList.forEach(H);else if(e instanceof V)H(e.callee),H(e.argumentList);else if(e instanceof R)H(e.callee),e.args.forEach(H);else if(e instanceof fd)H(e.expression);else if(e instanceof ad)H(e.value);else if(e instanceof dd)H(e.variable);else if(e instanceof ld)H(e.literal);else if(e instanceof cd)throw Error(`This case is handled by the TupleExpressionNode case`);else if(e instanceof md)H(e.array),H(e.indexer);else if(e instanceof Qu)e.body.forEach(H),H(e.eof);else if(!(e instanceof pd))if(e instanceof $u)H(e.useKeyword),H(e.specifiers),H(e.fromKeyword),H(e.importPath);else if(e instanceof td)H(e.openBrace),e.specifiers.forEach(H),H(e.closeBrace);else if(e instanceof ed)H(e.importKind),H(e.name);else if(e instanceof ud)H(e.token);else throw Error(`Unreachable case in markInvalidNode`)}function Md(...e){return e.filter(e=>e!==void 0)}function Nd(e){if(e instanceof Qu)return Md(...e.body,e.eof);if(e instanceof F)return Md(e.type,e.name,e.as,e.alias,e.attributeList,e.bodyColon,e.body);if(e instanceof I)return Md(e.name,e.colon,e.value);if(e instanceof nd)return e.identifiers;if(e instanceof ld)return e.literal?[e.literal]:[];if(e instanceof dd)return Md(e.variable);if(e instanceof L)return Md(e.op,e.expression);if(e instanceof rd)return Md(e.leftExpression,e.op,e.rightExpression);if(e instanceof id)return Md(e.expression,e.op);if(e instanceof ad)return Md(e.value);if(e instanceof R)return Md(e.callee,...e.args);if(e instanceof z)return Md(e.blockOpenBrace,...e.body,e.blockCloseBrace);if(e instanceof B)return Md(e.listOpenBracket,...Pd(e.elementList,e.commaList),e.listCloseBracket);if(e instanceof od)return Md(e.tupleOpenParen,...Pd(e.elementList,e.commaList),e.tupleCloseParen);if(e instanceof sd)return Md(...Pd(e.elementList,e.commaList));if(e instanceof V)return Md(e.callee,e.argumentList);if(e instanceof fd)return Md(e.expression);if(e instanceof md)return Md(e.array,e.indexer);if(e instanceof pd)return[];if(e instanceof $u)return Md(e.useKeyword,e.specifiers,e.fromKeyword,e.importPath);if(e instanceof td)return Md(e.openBrace,...e.specifiers,e.closeBrace);if(e instanceof ed)return Md(e.importKind,e.name);if(e instanceof ud)return Md(e.token);throw e instanceof cd?Error(`This case is already handled by TupleExpressionNode`):Error(`Unreachable - no other possible cases`)}function Pd(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 Fd(e,t){let n=[...e.parseProject().values()].some(e=>e.getErrors().length>0),r=e.validateNode(t).getErrors().length>0,i=e.bindNode(t).getErrors().length>0;return!n&&!r&&!i}function Id(e){if(!e)return[];if(w(e))return[{variables:[e],tupleElements:[]}];if(e instanceof rd){let t=gu(e);return t?[t]:[...Id(e.leftExpression),...Id(e.rightExpression)]}if(e instanceof L||e instanceof id)return Id(e.expression);if(e instanceof od){let t=gu(e);return t?[t]:e.elementList.flatMap(Id)}return[]}function Ld(e,n){let r=n.parentNode;if(!r||!T(r)||r.rightExpression!==n)return;let i=r.leftExpression;for(;T(i);)i=i.rightExpression;return e.nodeReferee(i).getFiltered(t)??void 0}function Rd(e){switch(e){case`<`:return[`1`,`*`];case`<>`:return[`*`,`*`];case`>`:return[`*`,`1`];case`-`:return[`1`,`1`];default:return}}var zd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){let[,t]=v(e.body,e=>e instanceof R);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>!e.type||!(e.body instanceof z)?[]: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]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:[e.callee,...e.args].flatMap(Id).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindNoteReferences(e){let[t]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:Id(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindTableGroupReferences(e){let[t]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:Id(e.callee).flatMap(e=>{let t=e.variables.pop();return t?this.compiler.nodeReferee(t).getErrors():[]}))}bindSchemaReferences(e){let[t]=v(e.body,e=>e instanceof R);return t.flatMap(e=>!e.callee||Xl(e.callee)?[]:Id(e.callee).flatMap(e=>e.variables.flatMap(e=>this.compiler.nodeReferee(e).getErrors())))}},Bd=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 z&&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 R&&Xl(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]=v(e.body,e=>e instanceof F),n=new Set;for(let e of t){let t=e.type?.value.toLowerCase();t&&n.add(t),e.body instanceof z&&this.interpretSubBlock(e.body,t)}let r=this.diagramView.visibleEntities;return(n.has(`tables`)&&r.tables!==null||n.has(`tablegroups`)&&r.tableGroups!==null||n.has(`schemas`)&&r.schemas!==null)&&(n.has(`tables`)||(r.tables=[]),n.has(`tablegroups`)||(r.tableGroups=[]),n.has(`schemas`)||(r.schemas=[])),n.has(`tables`)&&this.diagramViewExplicitlySet.add(`tables`),n.has(`tablegroups`)&&this.diagramViewExplicitlySet.add(`tableGroups`),n.has(`schemas`)&&this.diagramViewExplicitlySet.add(`schemas`),n.has(`notes`)&&this.diagramViewExplicitlySet.add(`stickyNotes`),[]}interpretSubBlock(e,n){if(!n)return;if(e.body.some(e=>e instanceof R&&Xl(e.callee))){let e=this.diagramViewWildcards;switch(n){case`tables`:this.diagramView.visibleEntities.tables=[],e.add(`tables`);break;case`notes`:this.diagramView.visibleEntities.stickyNotes=[],e.add(`stickyNotes`);break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=[],e.add(`tableGroups`);break;case`schemas`:this.diagramView.visibleEntities.schemas=[],e.add(`schemas`);break}return}if(e.body.length===0)return;let r=[];for(let n of e.body){if(!(n instanceof R))continue;let e=n.callee&&this.compiler.nodeReferee(n.callee).getFiltered(t);if(e?.declaration instanceof F){let t=O(e.declaration.name)??[];if(t.length>0){let e=t[t.length-1],n=t.length>1?t.slice(0,-1).join(`.`):Ml;r.push({name:e,schemaName:n});continue}}let i=O(n.callee)??[];if(i.length===0)continue;let a=i[i.length-1],o=i.length>1?i[0]:Ml;r.push({name:a,schemaName:o})}switch(n){case`tables`:this.diagramView.visibleEntities.tables=r.length>0?r:null;break;case`notes`:this.diagramView.visibleEntities.stickyNotes=r.length>0?r.map(e=>({name:e.name})):null;break;case`tablegroups`:this.diagramView.visibleEntities.tableGroups=r.length>0?r.map(e=>({name:e.name})):null;break;case`schemas`:this.diagramView.visibleEntities.schemas=r.length>0?r.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?Vc(r.filter(e=>e.isKind(M.TableGroup)),e=>e.originalSymbol.intern()).flatMap(e=>e.name===void 0?[]:{name:e.name}):[]}};function Vd(e){return e==null?e:Array.isArray(e)?e.map(String).join(`\0`):typeof e==`object`&&`intern`in e?e.intern():e}let Hd=function(e){return e.Table=`table`,e}({});const Ud={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`DiagramView '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t,n){return new x(b.DUPLICATE_DIAGRAMVIEW_FIELD,`Duplicate ${t} ${e}`,n)}},Wd={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.DiagramView)?new n(i.symbolFactory.create(Vu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramView)&&a instanceof ud?new n(i.symbolFactory.create(Hu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewNotes)?new n(i.symbolFactory.create(Gu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewTables)?new n(i.symbolFactory.create(Uu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewTableGroups)?new n(i.symbolFactory.create(Wu,{declaration:a,name:o},a.filepath)):D(a,r.DiagramViewSchemas)?new n(i.symbolFactory.create(Ku,{declaration:a,name:o},a.filepath)):n.create(e)},nodeReferee(i,a){if(a.parent&&iu(a))return n.create(e);let o=Gd(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)?Kd(i,c,a):o.isKind(r.DiagramViewNotes)?qd(i,c,a,M.StickyNote):o.isKind(r.DiagramViewTableGroups)?qd(i,c,a,M.TableGroup):o.isKind(r.DiagramViewSchemas)?Jd(i,c,a):n.create(e):n.create(void 0)},symbolMembers(i,a){if(!a.isKind(M.DiagramView))return n.create(e);if(!a.declaration)return n.create([]);let o=a.declaration;if(!E(o,r.DiagramView))return n.create([]);let s=[],c=[];for(let e of mu(o))if(e instanceof R){let n=i.nodeSymbol(e).getFiltered(t);n&&c.push(n)}else e instanceof F&&c.push(...mu(e).flatMap(e=>i.nodeSymbol(e).getFiltered(t)??[]));let l=new Map;for(let e of c){if(!e.isKind(M.DiagramViewSchema,M.DiagramViewTableGroup,M.DiagramViewTable,M.DiagramViewNote)||!e.declaration)continue;let n=(i.nodeFullname(e.declaration).getFiltered(t)||[]).map(py).join(`.`),r=`${e.kind}:${n}`;if(n!==void 0){let t=e.declaration,i=l.get(r);i?(s.push(Ud.getFieldDuplicateError(n,e.kind,i)),s.push(Ud.getFieldDuplicateError(n,e.kind,t))):l.set(r,t)}}return n.create(c,s)},bindNode(i,a){if(!E(a,r.DiagramView))return n.create(e);let o=new zd(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 Vu?r.declaration instanceof F?new Bd(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function Gd(e){let t=e.parentOfKind(R);if(!t)return;let n=t.parentNode;if(!(n instanceof z))return;let i=n.parentNode;if(!(i instanceof F)||!i.isKind(r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewTableGroups,r.DiagramViewSchemas))return;let a=i.parentNode;if(!(a instanceof z))return;let o=a.parentNode;if(!(!(o instanceof F)||!o.isKind(r.DiagramView)))return i}function Kd(e,r,i){let a=bu(i);if(a===void 0)return n.create(void 0);if(T(i.parentNode)){let t=Ld(e,i);if(t){if(t.isKind(M.Schema)){let r=lu(i),o=e.lookupMembers(t,r?M.Table:M.Schema,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Could not find ${r?`table`:`schema`} '${a}'`,i)])}return new n(void 0)}let o=e.lookupMembers(r,M.Schema,a);return o?n.create(o):new n(void 0,[new x(b.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(M.Table)&&a===t)return n.create(e)}let s=e.lookupMembers(r,M.Table,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Could not find table '${a}'`,i)])}function qd(e,t,r,i){let a=bu(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 x(b.BINDING_ERROR,`Could not find ${i===M.StickyNote?`note`:`tablegroup`} '${a}'`,r)])}function Jd(e,t,r){let i=bu(r);if(i===void 0)return n.create(void 0);let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.BINDING_ERROR,`Could not find schema '${i}'`,r)])}var Yd=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof R)return[];let t=e.body.filter(e=>e instanceof F);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Xd=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=j(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=j(t),n.name=A(t.callee);let r=S(t.args[0]).getValue().note?.at(0);return n.note=r&&{value:Cu(k(r.value)),token:j(r)},this.enum.values.push(n),[]})}};const Zd={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`Enum '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new x(b.DUPLICATE_COLUMN_NAME,`Duplicate enum field '${e}'`,t)}},Qd={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.Enum)?new n(i.symbolFactory.create(Mu,{declaration:a,name:o},a.filepath)):D(a,r.Enum)?new n(i.symbolFactory.create(Nu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(M.Enum))return n.create(e);let a=i.declaration;if(!(a instanceof F))return new n([]);let o=mu(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(M.EnumField)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration,r=l.get(t);r?(c.push(Zd.getFieldDuplicateError(t,r)),c.push(Zd.getFieldDuplicateError(t,n))):l.set(t,n)}}return new n(s,c)},bindNode(i,a){if(!E(a,r.Enum))return n.create(e);let o=new Yd(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 Mu?new Xd(t,r,i).interpret():n.create(e)}};var $d=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof F)||!this.declarationNode.parent.isKind(r.Table)||!(this.declarationNode.body instanceof z)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>{if(!e.callee)return[];let n=O(this.declarationNode.parent.name)?.join(`.`)??`<unnamed>`;return[e.callee,...e.args].flatMap(Id).flatMap(e=>e.variables.length+e.tupleElements.length>1?[]:e.variables.length?e.variables[0]:e.tupleElements).flatMap(e=>{let r=bu(e);if(r===void 0)return[];let i=this.compiler.nodeReferee(e);return!i.getValue()||i.hasValue(t)?new x(b.BINDING_ERROR,`No column named '${r}' inside Table '${n}'`,e):[]})})}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},ef=class{constructor(e,t){this.compiler=e,this.node=t}interpret(){let e=this.node.body;return e instanceof z?new n(e.body.flatMap(e=>{if(!(e instanceof R)||!e.callee)return[];let n=[],r=j(e),a=[e.callee,...e.args],o,s,c,l,u;_(a)instanceof B&&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=k(d[i.Name]?.at(0)?.value);let e=d[i.Note]?.at(0);if(e){let t=k(e.value);t!==void 0&&(l={value:t,token:j(e)})}u=A(d[i.Type]?.at(0)?.value)}let f=a.flatMap(e=>{if(!(e instanceof V))return e;let t=[],n=e;for(;n instanceof V&&(n.argumentList&&t.push(n.argumentList),n.callee);)n=n.callee;return t.push(n),t});for(let e of f){let t=_u(e);if(t){for(let e of t.functional)n.push({value:e.value?.value??``,type:`expression`,token:j(e)});for(let e of t.nonFunctional)n.push({value:bu(e)??``,type:`column`,token:j(e)})}}return[{columns:n,pk:o,unique:s,name:c,note:l,type:u,token:r}]})):new n([])}};const tf={nodeMetadata(t,i){if(!E(i,r.Indexes))return n.create(e);let a=i.parent;return!a||!E(a,r.Table)&&!E(a,r.TablePartial)?n.create(e):n.create(new xd(i))},nodeReferee(i,a){if(!w(a)||iu(a))return n.create(e);let o=a;for(;o&&!E(o,r.Indexes);)o=o.parent;if(!o)return n.create(e);let s=o.parent;if(!s||!E(s,r.Table)&&!E(s,r.TablePartial))return n.create(e);let c=i.nodeSymbol(s).getFiltered(t);if(!c)return new n(void 0);let l=w(a)?a.expression.variable?.value??``:``,u=i.lookupMembers(c,M.Column,l);if(u)return n.create(u);let d=E(s,r.TablePartial)?`TablePartial`:`Table`;return new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${l}' does not exist in ${d} 'public.${c.name}'`,a)])},bindNode(t,i){return E(i,r.Indexes)?n.create(void 0,new $d(t,i).bind()):n.create(e)},interpretMetadata(t,r){return r.kind===gd.Indexes?r.declaration instanceof F?new ef(t,r.declaration).interpret():n.create(void 0):n.create(e)}};function nf(e,n){let r=hu(n);if(!r||r.length===0)return;let i=r[r.length-1];if(i instanceof od){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 od)return;let o=e.nodeReferee(a).getFiltered(t);if(o)return[o.originalSymbol]}function rf(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 x(b.SAME_ENDPOINT,`Two endpoints are the same`,n)];let o=i<a?`${i}-${a}`:`${a}-${i}`,s=r.get(o);return s?[new x(b.CIRCULAR_REF,`References with same endpoints exist`,n),new x(b.CIRCULAR_REF,`References with same endpoints exist`,s)]:(r.set(o,n),[])}var af=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 F&&e.isKind(r.Project));a.length>1&&a.forEach(t=>e.push(new x(b.PROJECT_REDEFINED,`Only one project can exist`,t)));for(let t of i.body)if(t instanceof F&&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(...of(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 F)||!t.type)continue;let i=t;E(i,r.Ref)&&e.push(...this.checkStandaloneRefs(i,n)),E(i,r.Table)&&e.push(...this.checkInlineRefs(i,n)),E(i,r.TablePartial)&&e.push(...this.checkTablePartialSelfRefs(i))}}return e}checkStandaloneRefs(e,t){let n=[];for(let r of mu(e)){if(!(r instanceof R)||!r.callee||!ou(r.callee))continue;let i=r.callee;if(!i.leftExpression||!i.rightExpression)continue;let a=nf(this.compiler,i.leftExpression),o=nf(this.compiler,i.rightExpression);!a||!o||n.push(...rf(a,o,e,t))}return n}checkInlineRefs(e,n){let r=[];for(let a of mu(e)){if(!(a instanceof R)||!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 L)||!i.op||!Ul(i.op.value)||!i.expression)continue;let a=nf(this.compiler,i.expression);if(!a)continue;let o=[e.originalSymbol];r.push(...rf(o,a,t,n))}}return r}checkTablePartialSelfRefs(e){let n=[];for(let r of mu(e)){if(!(r instanceof R)||!r.callee)continue;let e=A(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 L&&(!r.op||!Ul(r.op.value)||r.expression&&w(r.expression)&&r.expression.expression.variable?.value===e&&n.push(new x(b.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 F)||!i.type)continue;let a=i;if(!E(a,r.TableGroup))continue;let o=a.name?O(a.name):void 0,s=o?o.join(`.`):`<unknown>`,c=mu(a);for(let r of c){if(!(r instanceof R)||!r.callee)continue;let i=hu(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=O(r.callee),n=t?t.join(`.`):`<unknown>`;e.push(new x(b.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 of(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 ju&&a.push(...of(e,t,r));return a}function sf(e,t,n){t.isKind(M.Table)?e.externals.tables.push(n):t.isKind(M.Enum)?e.externals.enums.push(n):t.isKind(M.TableGroup)?e.externals.tableGroups.push(n):t.isKind(M.TablePartial)?e.externals.tablePartials.push(n):t.isKind(M.StickyNote)&&e.externals.notes.push(n)}var cf={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`])},lf={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`])},uf={mysql:new Set([`bool`,`boolean`,`bit`]),postgres:new Set([`bool`,`boolean`]),mssql:new Set([`bit`]),oracle:new Set([]),snowflake:new Set([`boolean`])},df={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`])},ff={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`])},pf={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`])},mf={mysql:new Set([]),postgres:new Set([`serial`,`smallserial`,`bigserial`]),mssql:new Set([]),oracle:new Set([]),snowflake:new Set([])};function hf(e){return e.toLowerCase().trim().replace(/\s+/g,` `)}function gf(e,t){let n=hf(e);return t?cf[t].has(n):Object.values(cf).some(e=>e.has(n))}function _f(e,t){let n=hf(e);return t?lf[t].has(n):Object.values(lf).some(e=>e.has(n))}function vf(e,t){return gf(e,t)||_f(e,t)}function yf(e,t){let n=hf(e);return t?uf[t].has(n):Object.values(uf).some(e=>e.has(n))}function bf(e,t){let n=hf(e);return t?df[t].has(n):Object.values(df).some(e=>e.has(n))}function xf(e,t){let n=hf(e);return t?ff[t].has(n):Object.values(ff).some(e=>e.has(n))}function Sf(e,t){let n=hf(e);return t?pf[t].has(n):Object.values(pf).some(e=>e.has(n))}function Cf(e,t){let n=hf(e);return t?mf[t].has(n):Object.values(mf).some(e=>e.has(n))}function wf(e,t){if(t)return`string`;if(gf(e))return`integer`;if(_f(e))return`real`;if(yf(e))return`bool`;if(bf(e))return`string`;let n=hf(e);return n===`date`?`date`:n===`time`||n===`timetz`||n===`time with time zone`||n===`time without time zone`?`time`:Sf(e)?`datetime`:e}var Tf=class extends Error{},Ef=class extends Tf{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},Df=class extends Tf{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Of=class extends Tf{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},kf=class extends Tf{},Af=class extends Tf{constructor(e){super(`Invalid unit ${e}`)}},jf=class extends Tf{},Mf=class extends Tf{constructor(){super(`Zone is an abstract class`)}},U=`numeric`,Nf=`short`,Pf=`long`,Ff={year:U,month:U,day:U},If={year:U,month:Nf,day:U},Lf={year:U,month:Nf,day:U,weekday:Nf},Rf={year:U,month:Pf,day:U},zf={year:U,month:Pf,day:U,weekday:Pf},Bf={hour:U,minute:U},Vf={hour:U,minute:U,second:U},Hf={hour:U,minute:U,second:U,timeZoneName:Nf},Uf={hour:U,minute:U,second:U,timeZoneName:Pf},Wf={hour:U,minute:U,hourCycle:`h23`},Gf={hour:U,minute:U,second:U,hourCycle:`h23`},Kf={hour:U,minute:U,second:U,hourCycle:`h23`,timeZoneName:Nf},qf={hour:U,minute:U,second:U,hourCycle:`h23`,timeZoneName:Pf},Jf={year:U,month:U,day:U,hour:U,minute:U},Yf={year:U,month:U,day:U,hour:U,minute:U,second:U},Xf={year:U,month:Nf,day:U,hour:U,minute:U},Zf={year:U,month:Nf,day:U,hour:U,minute:U,second:U},Qf={year:U,month:Nf,day:U,weekday:Nf,hour:U,minute:U},$f={year:U,month:Pf,day:U,hour:U,minute:U,timeZoneName:Nf},ep={year:U,month:Pf,day:U,hour:U,minute:U,second:U,timeZoneName:Nf},tp={year:U,month:Pf,day:U,weekday:Pf,hour:U,minute:U,timeZoneName:Pf},np={year:U,month:Pf,day:U,weekday:Pf,hour:U,minute:U,second:U,timeZoneName:Pf},rp=class{get type(){throw new Mf}get name(){throw new Mf}get ianaName(){return this.name}get isUniversal(){throw new Mf}offsetName(e,t){throw new Mf}formatOffset(e,t){throw new Mf}offset(e){throw new Mf}equals(e){throw new Mf}get isValid(){throw new Mf}},ip=null,ap=class e extends rp{static get instance(){return ip===null&&(ip=new e),ip}get type(){return`system`}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:t,locale:n}){return Gm(e,t,n)}formatOffset(e,t){return Ym(this.offset(e),t)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type===`system`}get isValid(){return!0}},op=new Map;function sp(e){let t=op.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`}),op.set(e,t)),t}var cp={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function lp(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 up(e,t){let n=e.formatToParts(t),r=[];for(let e=0;e<n.length;e++){let{type:t,value:i}=n[e],a=cp[t];t===`era`?r[a]=i:G(a)||(r[a]=parseInt(i,10))}return r}var dp=new Map,fp=class e extends rp{static create(t){let n=dp.get(t);return n===void 0&&dp.set(t,n=new e(t)),n}static resetCache(){dp.clear(),op.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 Gm(e,t,n,this.name)}formatOffset(e,t){return Ym(this.offset(e),t)}offset(e){if(!this.valid)return NaN;let t=new Date(e);if(isNaN(t))return NaN;let n=sp(this.name),[r,i,a,o,s,c,l]=n.formatToParts?up(n,t):lp(n,t);o===`BC`&&(r=-Math.abs(r)+1);let u=Vm({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}},pp={};function mp(e,t={}){let n=JSON.stringify([e,t]),r=pp[n];return r||(r=new Intl.ListFormat(e,t),pp[n]=r),r}var hp=new Map;function gp(e,t={}){let n=JSON.stringify([e,t]),r=hp.get(n);return r===void 0&&(r=new Intl.DateTimeFormat(e,t),hp.set(n,r)),r}var _p=new Map;function vp(e,t={}){let n=JSON.stringify([e,t]),r=_p.get(n);return r===void 0&&(r=new Intl.NumberFormat(e,t),_p.set(n,r)),r}var yp=new Map;function bp(e,t={}){let{base:n,...r}=t,i=JSON.stringify([e,r]),a=yp.get(i);return a===void 0&&(a=new Intl.RelativeTimeFormat(e,t),yp.set(i,a)),a}var xp=null;function Sp(){return xp||(xp=new Intl.DateTimeFormat().resolvedOptions().locale,xp)}var Cp=new Map;function wp(e){let t=Cp.get(e);return t===void 0&&(t=new Intl.DateTimeFormat(e).resolvedOptions(),Cp.set(e,t)),t}var Tp=new Map;function Ep(e){let t=Tp.get(e);if(!t){let n=new Intl.Locale(e);t=`getWeekInfo`in n?n.getWeekInfo():n.weekInfo,`minimalDays`in t||(t={...Ip,...t}),Tp.set(e,t)}return t}function Dp(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=gp(e).resolvedOptions(),r=e}catch{let i=e.substring(0,n);t=gp(i).resolvedOptions(),r=i}let{numberingSystem:i,calendar:a}=t;return[r,i,a]}}function Op(e,t,n){return n||t?(e.includes(`-u-`)||(e+=`-u`),n&&(e+=`-ca-${n}`),t&&(e+=`-nu-${t}`),e):e}function kp(e){let t=[];for(let n=1;n<=12;n++){let r=F_.utc(2009,n,1);t.push(e(r))}return t}function Ap(e){let t=[];for(let n=1;n<=7;n++){let r=F_.utc(2016,11,13+n);t.push(e(r))}return t}function jp(e,t,n,r){let i=e.listingMode();return i===`error`?null:i===`en`?n(t):r(t)}function Mp(e){return e.numberingSystem&&e.numberingSystem!==`latn`?!1:e.numberingSystem===`latn`||!e.locale||e.locale.startsWith(`en`)||wp(e.locale).numberingSystem===`latn`}var Np=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=vp(e,t)}}format(e){if(this.inf){let t=this.floor?Math.floor(e):e;return this.inf.format(t)}else return Nm(this.floor?Math.floor(e):Lm(e,3),this.padTo)}},Pp=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&&fp.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=gp(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()}},Fp=class{constructor(e,t,n){this.opts={style:`long`,...n},!t&&wm()&&(this.rtf=bp(e,n))}format(e,t){return this.rtf?this.rtf.format(e,t):mh(t,e,this.opts.numeric,this.opts.style!==`long`)}formatToParts(e,t){return this.rtf?this.rtf.formatToParts(e,t):[]}},Ip={firstDay:1,minimalDays:4,weekend:[6,7]},W=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||nm.defaultLocale;return new e(o||(a?`en-US`:Sp()),n||nm.defaultNumberingSystem,r||nm.defaultOutputCalendar,Am(i)||nm.defaultWeekSettings,o)}static resetCache(){xp=null,hp.clear(),_p.clear(),yp.clear(),Cp.clear(),Tp.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]=Dp(e);this.locale=a,this.numberingSystem=t||o||null,this.outputCalendar=n||s||null,this.weekSettings=r,this.intl=Op(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??=Mp(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,Am(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 jp(this,e,eh,()=>{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]=kp(t)}return this.monthsCache[i][e]})}weekdays(e,t=!1){return jp(this,e,ih,()=>{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]=Ap(e=>this.extract(e,n,`weekday`))),this.weekdaysCache[r][e]})}meridiems(){return jp(this,void 0,()=>ah,()=>{if(!this.meridiemCache){let e={hour:`numeric`,hourCycle:`h12`};this.meridiemCache=[F_.utc(2016,11,13,9),F_.utc(2016,11,13,19)].map(t=>this.extract(t,e,`dayperiod`))}return this.meridiemCache})}eras(e){return jp(this,e,lh,()=>{let t={era:e};return this.eraCache[e]||(this.eraCache[e]=[F_.utc(-40,1,1),F_.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 Np(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,t={}){return new Pp(e,this.intl,t)}relFormatter(e={}){return new Fp(this.intl,this.isEnglish(),e)}listFormatter(e={}){return mp(this.intl,e)}isEnglish(){return this.locale===`en`||this.locale.toLowerCase()===`en-us`||wp(this.intl).locale.startsWith(`en-us`)}getWeekSettings(){return this.weekSettings?this.weekSettings:Tm()?Ep(this.locale):Ip}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})`}},Lp=null,Rp=class e extends rp{static get utcInstance(){return Lp===null&&(Lp=new e(0)),Lp}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(Km(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return`fixed`}get name(){return this.fixed===0?`UTC`:`UTC${Ym(this.fixed,`narrow`)}`}get ianaName(){return this.fixed===0?`Etc/UTC`:`Etc/GMT${Ym(-this.fixed,`narrow`)}`}offsetName(){return this.name}formatOffset(e,t){return Ym(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}},zp=class extends rp{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 Bp(e,t){if(G(e)||e===null)return t;if(e instanceof rp)return e;if(Sm(e)){let n=e.toLowerCase();return n===`default`?t:n===`local`||n===`system`?ap.instance:n===`utc`||n===`gmt`?Rp.utcInstance:Rp.parseSpecifier(n)||fp.create(e)}else if(bm(e))return Rp.instance(e);else if(typeof e==`object`&&`offset`in e&&typeof e.offset==`function`)return e;else return new zp(e)}var Vp={arab:`[٠-٩]`,arabext:`[۰-۹]`,bali:`[᭐-᭙]`,beng:`[০-৯]`,deva:`[०-९]`,fullwide:`[0-9]`,gujr:`[૦-૯]`,hanidec:`[〇|一|二|三|四|五|六|七|八|九]`,khmr:`[០-៩]`,knda:`[೦-೯]`,laoo:`[໐-໙]`,limb:`[᥆-᥏]`,mlym:`[൦-൯]`,mong:`[᠐-᠙]`,mymr:`[၀-၉]`,orya:`[୦-୯]`,tamldec:`[௦-௯]`,telu:`[౦-౯]`,thai:`[๐-๙]`,tibt:`[༠-༩]`,latn:`\\d`},Hp={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]},Up=Vp.hanidec.replace(/[\[|\]]/g,``).split(``);function Wp(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(Vp.hanidec)!==-1)t+=Up.indexOf(e[n]);else for(let e in Hp){let[n,i]=Hp[e];r>=n&&r<=i&&(t+=r-n)}}return parseInt(t,10)}else return t}var Gp=new Map;function Kp(){Gp.clear()}function qp({numberingSystem:e},t=``){let n=e||`latn`,r=Gp.get(n);r===void 0&&(r=new Map,Gp.set(n,r));let i=r.get(t);return i===void 0&&(i=RegExp(`${Vp[n]}${t}`),r.set(t,i)),i}var Jp=()=>Date.now(),Yp=`system`,Xp=null,Zp=null,Qp=null,$p=60,em,tm=null,nm=class{static get now(){return Jp}static set now(e){Jp=e}static set defaultZone(e){Yp=e}static get defaultZone(){return Bp(Yp,ap.instance)}static get defaultLocale(){return Xp}static set defaultLocale(e){Xp=e}static get defaultNumberingSystem(){return Zp}static set defaultNumberingSystem(e){Zp=e}static get defaultOutputCalendar(){return Qp}static set defaultOutputCalendar(e){Qp=e}static get defaultWeekSettings(){return tm}static set defaultWeekSettings(e){tm=Am(e)}static get twoDigitCutoffYear(){return $p}static set twoDigitCutoffYear(e){$p=e%100}static get throwOnInvalid(){return em}static set throwOnInvalid(e){em=e}static resetCaches(){W.resetCache(),fp.resetCache(),F_.resetCache(),Kp()}},rm=class{constructor(e,t){this.reason=e,this.explanation=t}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},im=[0,31,59,90,120,151,181,212,243,273,304,334],am=[0,31,60,91,121,152,182,213,244,274,305,335];function om(e,t){return new rm(`unit out of range`,`you specified ${t} (of type ${typeof t}) as a ${e}, which is invalid`)}function sm(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 cm(e,t,n){return n+(Rm(e)?am:im)[t-1]}function lm(e,t){let n=Rm(e)?am:im,r=n.findIndex(e=>e<t),i=t-n[r];return{month:r+1,day:i}}function um(e,t){return(e-t+7)%7+1}function dm(e,t=4,n=1){let{year:r,month:i,day:a}=e,o=cm(r,i,a),s=um(sm(r,i,a),n),c=Math.floor((o-s+14-t)/7),l;return c<1?(l=r-1,c=Um(l,t,n)):c>Um(r,t,n)?(l=r+1,c=1):l=r,{weekYear:l,weekNumber:c,weekday:s,...Xm(e)}}function fm(e,t=4,n=1){let{weekYear:r,weekNumber:i,weekday:a}=e,o=um(sm(r,1,t),n),s=zm(r),c=i*7+a-o-7+t,l;c<1?(l=r-1,c+=zm(l)):c>s?(l=r+1,c-=zm(r)):l=r;let{month:u,day:d}=lm(l,c);return{year:l,month:u,day:d,...Xm(e)}}function pm(e){let{year:t,month:n,day:r}=e;return{year:t,ordinal:cm(t,n,r),...Xm(e)}}function mm(e){let{year:t,ordinal:n}=e,{month:r,day:i}=lm(t,n);return{year:t,month:r,day:i,...Xm(e)}}function hm(e,t){if(!G(e.localWeekday)||!G(e.localWeekNumber)||!G(e.localWeekYear)){if(!G(e.weekday)||!G(e.weekNumber)||!G(e.weekYear))throw new kf(`Cannot mix locale-based week fields with ISO-based week fields`);return G(e.localWeekday)||(e.weekday=e.localWeekday),G(e.localWeekNumber)||(e.weekNumber=e.localWeekNumber),G(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 gm(e,t=4,n=1){let r=xm(e.weekYear),i=jm(e.weekNumber,1,Um(e.weekYear,t,n)),a=jm(e.weekday,1,7);return r?i?a?!1:om(`weekday`,e.weekday):om(`week`,e.weekNumber):om(`weekYear`,e.weekYear)}function _m(e){let t=xm(e.year),n=jm(e.ordinal,1,zm(e.year));return t?n?!1:om(`ordinal`,e.ordinal):om(`year`,e.year)}function vm(e){let t=xm(e.year),n=jm(e.month,1,12),r=jm(e.day,1,Bm(e.year,e.month));return t?n?r?!1:om(`day`,e.day):om(`month`,e.month):om(`year`,e.year)}function ym(e){let{hour:t,minute:n,second:r,millisecond:i}=e,a=jm(t,0,23)||t===24&&n===0&&r===0&&i===0,o=jm(n,0,59),s=jm(r,0,59),c=jm(i,0,999);return a?o?s?c?!1:om(`millisecond`,i):om(`second`,r):om(`minute`,n):om(`hour`,t)}function G(e){return e===void 0}function bm(e){return typeof e==`number`}function xm(e){return typeof e==`number`&&e%1==0}function Sm(e){return typeof e==`string`}function Cm(e){return Object.prototype.toString.call(e)===`[object Date]`}function wm(){try{return typeof Intl<`u`&&!!Intl.RelativeTimeFormat}catch{return!1}}function Tm(){try{return typeof Intl<`u`&&!!Intl.Locale&&(`weekInfo`in Intl.Locale.prototype||`getWeekInfo`in Intl.Locale.prototype)}catch{return!1}}function Em(e){return Array.isArray(e)?e:[e]}function Dm(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 Om(e,t){return t.reduce((t,n)=>(t[n]=e[n],t),{})}function km(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Am(e){if(e==null)return null;if(typeof e!=`object`)throw new jf(`Week settings must be an object`);if(!jm(e.firstDay,1,7)||!jm(e.minimalDays,1,7)||!Array.isArray(e.weekend)||e.weekend.some(e=>!jm(e,1,7)))throw new jf(`Invalid week settings`);return{firstDay:e.firstDay,minimalDays:e.minimalDays,weekend:Array.from(e.weekend)}}function jm(e,t,n){return xm(e)&&e>=t&&e<=n}function Mm(e,t){return e-t*Math.floor(e/t)}function Nm(e,t=2){let n=e<0,r;return r=n?`-`+(``+-e).padStart(t,`0`):(``+e).padStart(t,`0`),r}function Pm(e){if(!(G(e)||e===null||e===``))return parseInt(e,10)}function Fm(e){if(!(G(e)||e===null||e===``))return parseFloat(e)}function Im(e){if(!(G(e)||e===null||e===``)){let t=parseFloat(`0.`+e)*1e3;return Math.floor(t)}}function Lm(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 Rm(e){return e%4==0&&(e%100!=0||e%400==0)}function zm(e){return Rm(e)?366:365}function Bm(e,t){let n=Mm(t-1,12)+1,r=e+(t-n)/12;return n===2?Rm(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function Vm(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 Hm(e,t,n){return-um(sm(e,1,t),n)+t-1}function Um(e,t=4,n=1){let r=Hm(e,t,n),i=Hm(e+1,t,n);return(zm(e)-r+i)/7}function Wm(e){return e>99?e:e>nm.twoDigitCutoffYear?1900+e:2e3+e}function Gm(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 Km(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 qm(e){let t=Number(e);if(typeof e==`boolean`||e===``||!Number.isFinite(t))throw new jf(`Invalid unit value ${e}`);return t}function Jm(e,t){let n={};for(let r in e)if(km(e,r)){let i=e[r];if(i==null)continue;n[t(r)]=qm(i)}return n}function Ym(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}${Nm(n,2)}:${Nm(r,2)}`;case`narrow`:return`${i}${n}${r>0?`:${r}`:``}`;case`techie`:return`${i}${Nm(n,2)}${Nm(r,2)}`;default:throw RangeError(`Value format ${t} is out of range for property format`)}}function Xm(e){return Om(e,[`hour`,`minute`,`second`,`millisecond`])}var Zm=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],Qm=[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`],$m=[`J`,`F`,`M`,`A`,`M`,`J`,`J`,`A`,`S`,`O`,`N`,`D`];function eh(e){switch(e){case`narrow`:return[...$m];case`short`:return[...Qm];case`long`:return[...Zm];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 th=[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`],nh=[`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`,`Sun`],rh=[`M`,`T`,`W`,`T`,`F`,`S`,`S`];function ih(e){switch(e){case`narrow`:return[...rh];case`short`:return[...nh];case`long`:return[...th];case`numeric`:return[`1`,`2`,`3`,`4`,`5`,`6`,`7`];default:return null}}var ah=[`AM`,`PM`],oh=[`Before Christ`,`Anno Domini`],sh=[`BC`,`AD`],ch=[`B`,`A`];function lh(e){switch(e){case`narrow`:return[...ch];case`short`:return[...sh];case`long`:return[...oh];default:return null}}function uh(e){return ah[e.hour<12?0:1]}function dh(e,t){return ih(t)[e.weekday-1]}function fh(e,t){return eh(t)[e.month-1]}function ph(e,t){return lh(t)[e.year<0?0:1]}function mh(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 hh(e,t){let n=``;for(let r of e)r.literal?n+=r.val:n+=t(r.val);return n}var gh={D:Ff,DD:If,DDD:Rf,DDDD:zf,t:Bf,tt:Vf,ttt:Hf,tttt:Uf,T:Wf,TT:Gf,TTT:Kf,TTTT:qf,f:Jf,ff:Xf,fff:$f,ffff:tp,F:Yf,FF:Zf,FFF:ep,FFFF:np},_h=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 gh[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 Nm(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?uh(t):a({hour:`numeric`,hourCycle:`h12`},`dayperiod`),c=(e,n)=>r?fh(t,e):a(n?{month:e}:{month:e,day:`numeric`},`month`),l=(e,n)=>r?dh(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?ph(t,e):a({era:e},`era`);return hh(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 hh(o,a(c,{isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]}))}},vh=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function yh(...e){let t=e.reduce((e,t)=>e+t.source,``);return RegExp(`^${t}$`)}function bh(...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 xh(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 Sh(...e){return(t,n)=>{let r={},i;for(i=0;i<e.length;i++)r[e[i]]=Pm(t[n+i]);return[r,null,n+i]}}var Ch=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,wh=`(?:${Ch.source}?(?:\\[(${vh.source})\\])?)?`,Th=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,Eh=RegExp(`${Th.source}${wh}`),Dh=RegExp(`(?:[Tt]${Eh.source})?`),Oh=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,kh=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Ah=/(\d{4})-?(\d{3})/,jh=Sh(`weekYear`,`weekNumber`,`weekDay`),Mh=Sh(`year`,`ordinal`),Nh=/(\d{4})-(\d\d)-(\d\d)/,Ph=RegExp(`${Th.source} ?(?:${Ch.source}|(${vh.source}))?`),Fh=RegExp(`(?: ${Ph.source})?`);function Ih(e,t,n){let r=e[t];return G(r)?n:Pm(r)}function Lh(e,t){return[{year:Ih(e,t),month:Ih(e,t+1,1),day:Ih(e,t+2,1)},null,t+3]}function Rh(e,t){return[{hours:Ih(e,t,0),minutes:Ih(e,t+1,0),seconds:Ih(e,t+2,0),milliseconds:Im(e[t+3])},null,t+4]}function zh(e,t){let n=!e[t]&&!e[t+1],r=Km(e[t+1],e[t+2]);return[{},n?null:Rp.instance(r),t+3]}function Bh(e,t){return[{},e[t]?fp.create(e[t]):null,t+1]}var Vh=RegExp(`^T?${Th.source}$`),Hh=/^-?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 Uh(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(Fm(n)),months:f(Fm(r)),weeks:f(Fm(i)),days:f(Fm(a)),hours:f(Fm(o)),minutes:f(Fm(s)),seconds:f(Fm(c),c===`-0`),milliseconds:f(Im(l),d)}]}var Wh={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Gh(e,t,n,r,i,a,o){let s={year:t.length===2?Wm(Pm(t)):Pm(t),month:Qm.indexOf(n)+1,day:Pm(r),hour:Pm(i),minute:Pm(a)};return o&&(s.second=Pm(o)),e&&(s.weekday=e.length>3?th.indexOf(e)+1:nh.indexOf(e)+1),s}var Kh=/^(?:(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 qh(e){let[,t,n,r,i,a,o,s,c,l,u,d]=e,f=Gh(t,i,r,n,a,o,s),p;return p=c?Wh[c]:l?0:Km(u,d),[f,new Rp(p)]}function Jh(e){return e.replace(/\([^()]*\)|[\n\t]/g,` `).replace(/(\s\s+)/g,` `).trim()}var Yh=/^(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$/,Xh=/^(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$/,Zh=/^(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 Qh(e){let[,t,n,r,i,a,o,s]=e;return[Gh(t,i,r,n,a,o,s),Rp.utcInstance]}function $h(e){let[,t,n,r,i,a,o,s]=e;return[Gh(t,s,n,r,i,a,o),Rp.utcInstance]}var eg=yh(Oh,Dh),tg=yh(kh,Dh),ng=yh(Ah,Dh),rg=yh(Eh),ig=bh(Lh,Rh,zh,Bh),ag=bh(jh,Rh,zh,Bh),og=bh(Mh,Rh,zh,Bh),sg=bh(Rh,zh,Bh);function cg(e){return xh(e,[eg,ig],[tg,ag],[ng,og],[rg,sg])}function lg(e){return xh(Jh(e),[Kh,qh])}function ug(e){return xh(e,[Yh,Qh],[Xh,Qh],[Zh,$h])}function dg(e){return xh(e,[Hh,Uh])}var fg=bh(Rh);function pg(e){return xh(e,[Vh,fg])}var mg=yh(Nh,Fh),hg=yh(Ph),gg=bh(Rh,zh,Bh);function _g(e){return xh(e,[mg,ig],[hg,gg])}var vg=`Invalid Duration`,yg={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}},bg={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},...yg},xg=146097/400,Sg=146097/4800,Cg={years:{quarters:4,months:12,weeks:xg/7,days:xg,hours:xg*24,minutes:xg*24*60,seconds:xg*24*60*60,milliseconds:xg*24*60*60*1e3},quarters:{months:3,weeks:xg/28,days:xg/4,hours:xg*24/4,minutes:xg*24*60/4,seconds:xg*24*60*60/4,milliseconds:xg*24*60*60*1e3/4},months:{weeks:Sg/7,days:Sg,hours:Sg*24,minutes:Sg*24*60,seconds:Sg*24*60*60,milliseconds:Sg*24*60*60*1e3},...yg},wg=[`years`,`quarters`,`months`,`weeks`,`days`,`hours`,`minutes`,`seconds`,`milliseconds`],Tg=wg.slice(0).reverse();function Eg(e,t,n=!1){return new Ag({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 Dg(e,t){let n=t.milliseconds??0;for(let r of Tg.slice(1))t[r]&&(n+=t[r]*e[r].milliseconds);return n}function Og(e,t){let n=Dg(e,t)<0?-1:1;wg.reduceRight((r,i)=>{if(G(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),wg.reduce((n,r)=>{if(G(t[r]))return n;if(n){let i=t[n]%1;t[n]-=i,t[r]+=i*e[n][r]}return r},null)}function kg(e){let t={};for(let[n,r]of Object.entries(e))r!==0&&(t[n]=r);return t}var Ag=class e{constructor(e){let t=e.conversionAccuracy===`longterm`||!1,n=t?Cg:bg;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||W.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 jf(`Duration.fromObject: argument expected to be an object, got ${t===null?`null`:typeof t}`);return new e({values:Jm(t,e.normalizeUnit),loc:W.fromObject(n),conversionAccuracy:n.conversionAccuracy,matrix:n.matrix})}static fromDurationLike(t){if(bm(t))return e.fromMillis(t);if(e.isDuration(t))return t;if(typeof t==`object`)return e.fromObject(t);throw new jf(`Unknown duration argument ${t} of type ${typeof t}`)}static fromISO(t,n){let[r]=dg(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]=pg(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 jf(`need to specify a reason the Duration is invalid`);let r=t instanceof rm?t:new rm(t,n);if(nm.throwOnInvalid)throw new Of(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 Af(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?_h.create(this.loc,n).formatDurationFromString(this,e):vg}toHuman(e={}){if(!this.isValid)return vg;let t=e.showZeros!==!1,n=wg.map(n=>{let r=this.values[n];return G(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+=Lm(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},F_.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?Dg(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 wg)(km(n.values,e)||km(this.values,e))&&(r[e]=n.get(e)+this.get(e));return Eg(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]=qm(e(this.values[n],n));return Eg(this,{values:t},!0)}get(t){return this[e.normalizeUnit(t)]}set(t){if(!this.isValid)return this;let n={...this.values,...Jm(t,e.normalizeUnit)};return Eg(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 Eg(this,i)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return Og(this.matrix,e),Eg(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=kg(this.normalize().shiftToAll().toObject());return Eg(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 wg)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;bm(i[e])&&(t+=i[e]);let o=Math.trunc(t);n[e]=o,r[e]=(t*1e3-o*1e3)/1e3}else bm(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 Og(this.matrix,n),Eg(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 Eg(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=kg(this.values);return Eg(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 wg)if(!t(this.values[n],e.values[n]))return!1;return!0}},jg=`Invalid Interval`;function Mg(e,t){return!e||!e.isValid?Ng.invalid(`missing or invalid start`):!t||!t.isValid?Ng.invalid(`missing or invalid end`):t<e?Ng.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 Ng=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 jf(`need to specify a reason the Interval is invalid`);let r=t instanceof rm?t:new rm(t,n);if(nm.throwOnInvalid)throw new Df(r);return new e({invalid:r})}static fromDateTimes(t,n){let r=I_(t),i=I_(n);return Mg(r,i)??new e({start:r,end:i})}static after(t,n){let r=Ag.fromDurationLike(n),i=I_(t);return e.fromDateTimes(i,i.plus(r))}static before(t,n){let r=Ag.fromDurationLike(n),i=I_(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=F_.fromISO(r,n),a=t.isValid}catch{a=!1}let o,s;try{o=F_.fromISO(i,n),s=o.isValid}catch{s=!1}if(a&&s)return e.fromDateTimes(t,o);if(a){let r=Ag.fromISO(i,n);if(r.isValid)return e.after(t,r)}else if(s){let t=Ag.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(I_).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=Ag.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()})`:jg}[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=Ff,t={}){return this.isValid?_h.create(this.s.loc.clone(t),e).formatInterval(this):jg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:jg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:jg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:jg}toFormat(e,{separator:t=` – `}={}){return this.isValid?`${this.s.toFormat(e)}${t}${this.e.toFormat(e)}`:jg}toDuration(e,t){return this.isValid?this.e.diff(this.s,e,t):Ag.invalid(this.invalidReason)}mapEndpoints(t){return e.fromDateTimes(t(this.s),t(this.e))}},Pg=class{static hasDST(e=nm.defaultZone){let t=F_.now().setZone(e).set({month:12});return!e.isUniversal&&t.offset!==t.set({month:6}).offset}static isValidIANAZone(e){return fp.isValidZone(e)}static normalizeZone(e){return Bp(e,nm.defaultZone)}static getStartOfWeek({locale:e=null,locObj:t=null}={}){return(t||W.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:t=null}={}){return(t||W.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:t=null}={}){return(t||W.create(e)).getWeekendDays().slice()}static months(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||W.create(t,n,i)).months(e)}static monthsFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null,outputCalendar:i=`gregory`}={}){return(r||W.create(t,n,i)).months(e,!0)}static weekdays(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||W.create(t,n,null)).weekdays(e)}static weekdaysFormat(e=`long`,{locale:t=null,numberingSystem:n=null,locObj:r=null}={}){return(r||W.create(t,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return W.create(e).meridiems()}static eras(e=`short`,{locale:t=null}={}){return W.create(t,null,`gregory`).eras(e)}static features(){return{relative:wm(),localeWeek:Tm()}}};function Fg(e,t){let n=e=>e.toUTC(0,{keepLocalTime:!0}).startOf(`day`).valueOf(),r=n(t)-n(e);return Math.floor(Ag.fromMillis(r).as(`days`))}function Ig(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=Fg(e,t);return(n-n%7)/7}],[`days`,Fg]],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 Lg(e,t,n,r){let[i,a,o,s]=Ig(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=Ag.fromObject(a,r);return l.length>0?Ag.fromMillis(c,r).shiftTo(...l).plus(u):u}var Rg=`missing Intl.DateTimeFormat.formatToParts support`;function K(e,t=e=>e){return{regex:e,deser:([e])=>t(Wp(e))}}var zg=`[ \xA0]`,Bg=new RegExp(zg,`g`);function Vg(e){return e.replace(/\./g,`\\.?`).replace(Bg,zg)}function Hg(e){return e.replace(/\./g,``).replace(Bg,` `).toLowerCase()}function Ug(e,t){return e===null?null:{regex:RegExp(e.map(Vg).join(`|`)),deser:([n])=>e.findIndex(e=>Hg(n)===Hg(e))+t}}function Wg(e,t){return{regex:e,deser:([,e,t])=>Km(e,t),groups:t}}function Gg(e){return{regex:e,deser:([e])=>e}}function Kg(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,`\\$&`)}function qg(e,t){let n=qp(t),r=qp(t,`{2}`),i=qp(t,`{3}`),a=qp(t,`{4}`),o=qp(t,`{6}`),s=qp(t,`{1,2}`),c=qp(t,`{1,3}`),l=qp(t,`{1,6}`),u=qp(t,`{1,9}`),d=qp(t,`{2,4}`),f=qp(t,`{4,6}`),p=e=>({regex:RegExp(Kg(e.val)),deser:([e])=>e,literal:!0}),m=(m=>{if(e.literal)return p(m);switch(m.val){case`G`:return Ug(t.eras(`short`),0);case`GG`:return Ug(t.eras(`long`),0);case`y`:return K(l);case`yy`:return K(d,Wm);case`yyyy`:return K(a);case`yyyyy`:return K(f);case`yyyyyy`:return K(o);case`M`:return K(s);case`MM`:return K(r);case`MMM`:return Ug(t.months(`short`,!0),1);case`MMMM`:return Ug(t.months(`long`,!0),1);case`L`:return K(s);case`LL`:return K(r);case`LLL`:return Ug(t.months(`short`,!1),1);case`LLLL`:return Ug(t.months(`long`,!1),1);case`d`:return K(s);case`dd`:return K(r);case`o`:return K(c);case`ooo`:return K(i);case`HH`:return K(r);case`H`:return K(s);case`hh`:return K(r);case`h`:return K(s);case`mm`:return K(r);case`m`:return K(s);case`q`:return K(s);case`qq`:return K(r);case`s`:return K(s);case`ss`:return K(r);case`S`:return K(c);case`SSS`:return K(i);case`u`:return Gg(u);case`uu`:return Gg(s);case`uuu`:return K(n);case`a`:return Ug(t.meridiems(),0);case`kkkk`:return K(a);case`kk`:return K(d,Wm);case`W`:return K(s);case`WW`:return K(r);case`E`:case`c`:return K(n);case`EEE`:return Ug(t.weekdays(`short`,!1),1);case`EEEE`:return Ug(t.weekdays(`long`,!1),1);case`ccc`:return Ug(t.weekdays(`short`,!0),1);case`cccc`:return Ug(t.weekdays(`long`,!0),1);case`Z`:case`ZZ`:return Wg(RegExp(`([+-]${s.source})(?::(${r.source}))?`),2);case`ZZZ`:return Wg(RegExp(`([+-]${s.source})(${r.source})?`),2);case`z`:return Gg(/[a-z_+-/]{1,256}?/i);case` `:return Gg(/[^\S\n\r]/);default:return p(m)}})(e)||{invalidReason:Rg};return m.token=e,m}var Jg={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 Yg(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=Jg[o];if(typeof s==`object`&&(s=s[a]),s)return{literal:!1,val:s}}function Xg(e){return[`^${e.map(e=>e.regex).reduce((e,t)=>`${e}(${t.source})`,``)}$`,e]}function Zg(e,t,n){let r=e.match(t);if(r){let e={},t=1;for(let i in n)if(km(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 Qg(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 G(e.z)||(n=fp.create(e.z)),G(e.Z)||(n||=new Rp(e.Z),r=e.Z),G(e.q)||(e.M=(e.q-1)*3+1),G(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),G(e.u)||(e.S=Im(e.u)),[Object.keys(e).reduce((n,r)=>{let i=t(r);return i&&(n[i]=e[r]),n},{}),n,r]}var $g=null;function e_(){return $g||=F_.fromMillis(1555555555555),$g}function t_(e,t){if(e.literal)return e;let n=o_(_h.macroTokenToFormatOpts(e.val),t);return n==null||n.includes(void 0)?e:n}function n_(e,t){return Array.prototype.concat(...e.map(e=>t_(e,t)))}var r_=class{constructor(e,t){if(this.locale=e,this.format=t,this.tokens=n_(_h.parseFormat(t),e),this.units=this.tokens.map(t=>qg(t,e)),this.disqualifyingUnit=this.units.find(e=>e.invalidReason),!this.disqualifyingUnit){let[e,t]=Xg(this.units);this.regex=RegExp(e,`i`),this.handlers=t}}explainFromTokens(e){if(this.isValid){let[t,n]=Zg(e,this.regex,this.handlers),[r,i,a]=n?Qg(n):[null,null,void 0];if(km(n,`a`)&&km(n,`H`))throw new kf(`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 i_(e,t,n){return new r_(e,n).explainFromTokens(t)}function a_(e,t,n){let{result:r,zone:i,specificOffset:a,invalidReason:o}=i_(e,t,n);return[r,i,a,o]}function o_(e,t){if(!e)return null;let n=_h.create(t,e).dtFormatter(e_()),r=n.formatToParts(),i=n.resolvedOptions();return r.map(t=>Yg(t,e,i))}var s_=`Invalid DateTime`,c_=864e13;function l_(e){return new rm(`unsupported zone`,`the zone "${e.name}" is not supported`)}function u_(e){return e.weekData===null&&(e.weekData=dm(e.c)),e.weekData}function d_(e){return e.localWeekData===null&&(e.localWeekData=dm(e.c,e.loc.getMinDaysInFirstWeek(),e.loc.getStartOfWeek())),e.localWeekData}function f_(e,t){let n={ts:e.ts,zone:e.zone,c:e.c,o:e.o,loc:e.loc,invalid:e.invalid};return new F_({...n,...t,old:n})}function p_(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 m_(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 h_(e,t,n){return p_(Vm(e),t,n)}function g_(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,Bm(r,i))+Math.trunc(t.days)+Math.trunc(t.weeks)*7},o=Ag.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]=p_(Vm(a),n,e.zone);return o!==0&&(s+=o,c=e.zone.offset(s)),{ts:s,o:c}}function __(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=F_.fromObject(e,{...n,zone:r,specificOffset:a});return o?i:i.setZone(s)}else return F_.invalid(new rm(`unparsable`,`the input "${i}" can't be parsed as ${r}`))}function v_(e,t,n=!0){return e.isValid?_h.create(W.create(`en-US`),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(e,t):null}function y_(e,t,n){let r=e.c.year>9999||e.c.year<0,i=``;if(r&&e.c.year>=0&&(i+=`+`),i+=Nm(e.c.year,r?6:4),n===`year`)return i;if(t){if(i+=`-`,i+=Nm(e.c.month),n===`month`)return i;i+=`-`}else if(i+=Nm(e.c.month),n===`month`)return i;return i+=Nm(e.c.day),i}function b_(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+=Nm(e.c.hour),o===`hour`)break;if(t){if(c+=`:`,c+=Nm(e.c.minute),o===`minute`)break;s&&(c+=`:`,c+=Nm(e.c.second))}else{if(c+=Nm(e.c.minute),o===`minute`)break;s&&(c+=Nm(e.c.second))}if(o===`second`)break;s&&(!r||e.c.millisecond!==0)&&(c+=`.`,c+=Nm(e.c.millisecond,3))}return i&&(e.isOffsetFixed&&e.offset===0&&!a?c+=`Z`:e.o<0?(c+=`-`,c+=Nm(Math.trunc(-e.o/60)),c+=`:`,c+=Nm(Math.trunc(-e.o%60))):(c+=`+`,c+=Nm(Math.trunc(e.o/60)),c+=`:`,c+=Nm(Math.trunc(e.o%60)))),a&&(c+=`[`+e.zone.ianaName+`]`),c}var x_={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},S_={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},C_={ordinal:1,hour:0,minute:0,second:0,millisecond:0},w_=[`year`,`month`,`day`,`hour`,`minute`,`second`,`millisecond`],T_=[`weekYear`,`weekNumber`,`weekday`,`hour`,`minute`,`second`,`millisecond`],E_=[`year`,`ordinal`,`hour`,`minute`,`second`,`millisecond`];function D_(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 Af(e);return t}function O_(e){switch(e.toLowerCase()){case`localweekday`:case`localweekdays`:return`localWeekday`;case`localweeknumber`:case`localweeknumbers`:return`localWeekNumber`;case`localweekyear`:case`localweekyears`:return`localWeekYear`;default:return D_(e)}}function k_(e){if(N_===void 0&&(N_=nm.now()),e.type!==`iana`)return e.offset(N_);let t=e.name,n=P_.get(t);return n===void 0&&(n=e.offset(N_),P_.set(t,n)),n}function A_(e,t){let n=Bp(t.zone,nm.defaultZone);if(!n.isValid)return F_.invalid(l_(n));let r=W.fromObject(t),i,a;if(G(e.year))i=nm.now();else{for(let t of w_)G(e[t])&&(e[t]=x_[t]);let t=vm(e)||ym(e);if(t)return F_.invalid(t);let r=k_(n);[i,a]=h_(e,r,n)}return new F_({ts:i,zone:n,loc:r,o:a})}function j_(e,t,n){let r=G(n.round)?!0:n.round,i=G(n.rounding)?`trunc`:n.rounding,a=(e,a)=>(e=Lm(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 M_(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 N_,P_=new Map,F_=class e{constructor(e){let t=e.zone||nm.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new rm(`invalid input`):null)||(t.isValid?null:l_(t));this.ts=G(e.ts)?nm.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=bm(e.o)&&!e.old?e.o:t.offset(this.ts);r=m_(this.ts,a),n=Number.isNaN(r.year)?new rm(`invalid input`):null,r=n?null:r,i=n?null:a}this._zone=t,this.loc=e.loc||W.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]=M_(arguments),[n,r,i,a,o,s,c]=t;return A_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static utc(){let[e,t]=M_(arguments),[n,r,i,a,o,s,c]=t;return e.zone=Rp.utcInstance,A_({year:n,month:r,day:i,hour:a,minute:o,second:s,millisecond:c},e)}static fromJSDate(t,n={}){let r=Cm(t)?t.valueOf():NaN;if(Number.isNaN(r))return e.invalid(`invalid input`);let i=Bp(n.zone,nm.defaultZone);return i.isValid?new e({ts:r,zone:i,loc:W.fromObject(n)}):e.invalid(l_(i))}static fromMillis(t,n={}){if(bm(t))return t<-c_||t>c_?e.invalid(`Timestamp out of range`):new e({ts:t,zone:Bp(n.zone,nm.defaultZone),loc:W.fromObject(n)});throw new jf(`fromMillis requires a numerical input, but received a ${typeof t} with value ${t}`)}static fromSeconds(t,n={}){if(bm(t))return new e({ts:t*1e3,zone:Bp(n.zone,nm.defaultZone),loc:W.fromObject(n)});throw new jf(`fromSeconds requires a numerical input`)}static fromObject(t,n={}){t||={};let r=Bp(n.zone,nm.defaultZone);if(!r.isValid)return e.invalid(l_(r));let i=W.fromObject(n),a=Jm(t,O_),{minDaysInFirstWeek:o,startOfWeek:s}=hm(a,i),c=nm.now(),l=G(n.specificOffset)?r.offset(c):n.specificOffset,u=!G(a.ordinal),d=!G(a.year),f=!G(a.month)||!G(a.day),p=d||f,m=a.weekYear||a.weekNumber;if((p||u)&&m)throw new kf(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(f&&u)throw new kf(`Can't mix ordinal dates with month/day`);let h=m||a.weekday&&!p,ee,te,ne=m_(c,l);h?(ee=T_,te=S_,ne=dm(ne,o,s)):u?(ee=E_,te=C_,ne=pm(ne)):(ee=w_,te=x_);let re=!1;for(let e of ee){let t=a[e];G(t)?re?a[e]=te[e]:a[e]=ne[e]:re=!0}let ie=(h?gm(a,o,s):u?_m(a):vm(a))||ym(a);if(ie)return e.invalid(ie);let[ae,oe]=h_(h?fm(a,o,s):u?mm(a):a,l,r),se=new e({ts:ae,zone:r,o:oe,loc:i});return a.weekday&&p&&t.weekday!==se.weekday?e.invalid(`mismatched weekday`,`you can't specify both a weekday of ${a.weekday} and a date of ${se.toISO()}`):se.isValid?se:e.invalid(se.invalid)}static fromISO(e,t={}){let[n,r]=cg(e);return __(n,r,t,`ISO 8601`,e)}static fromRFC2822(e,t={}){let[n,r]=lg(e);return __(n,r,t,`RFC 2822`,e)}static fromHTTP(e,t={}){let[n,r]=ug(e);return __(n,r,t,`HTTP`,t)}static fromFormat(t,n,r={}){if(G(t)||G(n))throw new jf(`fromFormat requires an input string and a format`);let{locale:i=null,numberingSystem:a=null}=r,[o,s,c,l]=a_(W.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0}),t,n);return l?e.invalid(l):__(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]=_g(e);return __(n,r,t,`SQL`,e)}static invalid(t,n=null){if(!t)throw new jf(`need to specify a reason the DateTime is invalid`);let r=t instanceof rm?t:new rm(t,n);if(nm.throwOnInvalid)throw new Ef(r);return new e({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,t={}){let n=o_(e,W.fromObject(t));return n?n.map(e=>e?e.val:null).join(``):null}static expandFormat(e,t={}){return n_(_h.parseFormat(e),W.fromObject(t)).map(e=>e.val).join(``)}static resetCache(){N_=void 0,P_.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?u_(this).weekYear:NaN}get weekNumber(){return this.isValid?u_(this).weekNumber:NaN}get weekday(){return this.isValid?u_(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?d_(this).weekday:NaN}get localWeekNumber(){return this.isValid?d_(this).weekNumber:NaN}get localWeekYear(){return this.isValid?d_(this).weekYear:NaN}get ordinal(){return this.isValid?pm(this.c).ordinal:NaN}get monthShort(){return this.isValid?Pg.months(`short`,{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?Pg.months(`long`,{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?Pg.weekdays(`short`,{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?Pg.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=Vm(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=m_(s,a),u=m_(c,o);return l.hour===u.hour&&l.minute===u.minute&&l.second===u.second&&l.millisecond===u.millisecond?[f_(this,{ts:s}),f_(this,{ts:c})]:[this]}get isInLeapYear(){return Rm(this.year)}get daysInMonth(){return Bm(this.year,this.month)}get daysInYear(){return this.isValid?zm(this.year):NaN}get weeksInWeekYear(){return this.isValid?Um(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?Um(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:t,numberingSystem:n,calendar:r}=_h.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:t,numberingSystem:n,outputCalendar:r}}toUTC(e=0,t={}){return this.setZone(Rp.instance(e),t)}toLocal(){return this.setZone(nm.defaultZone)}setZone(t,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(t=Bp(t,nm.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]=h_(r,n,t)}return f_(this,{ts:e,zone:t})}else return e.invalid(l_(t))}reconfigure({locale:e,numberingSystem:t,outputCalendar:n}={}){let r=this.loc.clone({locale:e,numberingSystem:t,outputCalendar:n});return f_(this,{loc:r})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let t=Jm(e,O_),{minDaysInFirstWeek:n,startOfWeek:r}=hm(t,this.loc),i=!G(t.weekYear)||!G(t.weekNumber)||!G(t.weekday),a=!G(t.ordinal),o=!G(t.year),s=!G(t.month)||!G(t.day),c=o||s,l=t.weekYear||t.weekNumber;if((c||a)&&l)throw new kf(`Can't mix weekYear/weekNumber units with year/month/day or ordinals`);if(s&&a)throw new kf(`Can't mix ordinal dates with month/day`);let u;i?u=fm({...dm(this.c,n,r),...t},n,r):G(t.ordinal)?(u={...this.toObject(),...t},G(t.day)&&(u.day=Math.min(Bm(u.year,u.month),u.day))):u=mm({...pm(this.c),...t});let[d,f]=h_(u,this.o,this.zone);return f_(this,{ts:d,o:f})}plus(e){if(!this.isValid)return this;let t=Ag.fromDurationLike(e);return f_(this,g_(this,t))}minus(e){if(!this.isValid)return this;let t=Ag.fromDurationLike(e).negate();return f_(this,g_(this,t))}startOf(e,{useLocaleWeeks:t=!1}={}){if(!this.isValid)return this;let n={},r=Ag.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?_h.create(this.loc.redefaultToEN(t)).formatDateTimeFromString(this,e):s_}toLocaleString(e=Ff,t={}){return this.isValid?_h.create(this.loc.clone(t),e).formatDateTime(this):s_}toLocaleParts(e={}){return this.isValid?_h.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=D_(a);let o=e===`extended`,s=y_(this,o,a);return w_.indexOf(a)>=3&&(s+=`T`),s+=b_(this,o,t,n,r,i,a),s}toISODate({format:e=`extended`,precision:t=`day`}={}){return this.isValid?y_(this,e===`extended`,D_(t)):null}toISOWeekDate(){return v_(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=D_(o),(r&&w_.indexOf(o)>=3?`T`:``)+b_(this,a===`extended`,t,e,n,i,o)):null}toRFC2822(){return v_(this,`EEE, dd LLL yyyy HH:mm:ss ZZZ`,!1)}toHTTP(){return v_(this.toUTC(),`EEE, dd LLL yyyy HH:mm:ss 'GMT'`)}toSQLDate(){return this.isValid?y_(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`)),v_(this,r,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():s_}[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 Ag.invalid(`created by diffing an invalid DateTime`);let r={locale:this.locale,numberingSystem:this.numberingSystem,...n},i=Em(t).map(Ag.normalizeUnit),a=e.valueOf()>this.valueOf(),o=Lg(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?Ng.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),j_(n,this.plus(r),{...t,numeric:`always`,units:i,unit:a})}toRelativeCalendar(t={}){return this.isValid?j_(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 jf(`min requires all arguments be DateTimes`);return Dm(t,e=>e.valueOf(),Math.min)}static max(...t){if(!t.every(e.isDateTime))throw new jf(`max requires all arguments be DateTimes`);return Dm(t,e=>e.valueOf(),Math.max)}static fromFormatExplain(e,t,n={}){let{locale:r=null,numberingSystem:i=null}=n;return i_(W.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 r_(W.fromOpts({locale:n,numberingSystem:r,defaultToEN:!0}),e)}static fromFormatParser(t,n,r={}){if(G(t)||G(n))throw new jf(`fromFormatParser requires an input string and a format parser`);let{locale:i=null,numberingSystem:a=null}=r,o=W.fromOpts({locale:i,numberingSystem:a,defaultToEN:!0});if(!o.equals(n.locale))throw new jf(`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):__(s,c,r,`format ${n.format}`,t,l)}static get DATE_SHORT(){return Ff}static get DATE_MED(){return If}static get DATE_MED_WITH_WEEKDAY(){return Lf}static get DATE_FULL(){return Rf}static get DATE_HUGE(){return zf}static get TIME_SIMPLE(){return Bf}static get TIME_WITH_SECONDS(){return Vf}static get TIME_WITH_SHORT_OFFSET(){return Hf}static get TIME_WITH_LONG_OFFSET(){return Uf}static get TIME_24_SIMPLE(){return Wf}static get TIME_24_WITH_SECONDS(){return Gf}static get TIME_24_WITH_SHORT_OFFSET(){return Kf}static get TIME_24_WITH_LONG_OFFSET(){return qf}static get DATETIME_SHORT(){return Jf}static get DATETIME_SHORT_WITH_SECONDS(){return Yf}static get DATETIME_MED(){return Xf}static get DATETIME_MED_WITH_SECONDS(){return Zf}static get DATETIME_MED_WITH_WEEKDAY(){return Qf}static get DATETIME_FULL(){return $f}static get DATETIME_FULL_WITH_SECONDS(){return ep}static get DATETIME_HUGE(){return tp}static get DATETIME_HUGE_WITH_SECONDS(){return np}};function I_(e){if(F_.isDateTime(e))return e;if(e&&e.valueOf&&bm(e.valueOf()))return F_.fromJSDate(e);if(e&&typeof e==`object`)return F_.fromObject(e);throw new jf(`Unknown datetime argument: ${e}, of type ${typeof e}`)}function L_(e){return Zl(e)?e.expression.variable?.value?.toLowerCase()===`null`:e instanceof pd}function R_(e){return k(e)===``}function z_(e){return e instanceof ad}function B_(e){let t=vu(e);if(t!==null)return t;if(Kl(e)&&e instanceof L&&e.expression){let t=e.op?.value,n=vu(e.expression);if(n!==null)return t===`-`?-n:n}return null}function V_(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?1:0;let t=B_(e);if(t!==null)return t;let n=k(e);if(n!==void 0){let e=Number(n);if(!isNaN(e))return e}return null}function H_(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?1:0;let t=B_(e);if(t!==null)return Number.isInteger(t)?t:null;let n=k(e);if(n!==void 0){let e=Number(n);if(!isNaN(e)&&Number.isInteger(e))return e}return null}const U_=[`true`,`yes`,`y`,`t`,`1`],W_=[`false`,`no`,`n`,`f`,`0`];function G_(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 U_.includes(t)?!0:W_.includes(t)?!1:null}if(Zl(e)){let t=e.expression.variable?.value?.toLowerCase();if(t===`true`)return!0;if(t===`false`)return!1}let t=vu(e);if(t===0)return!1;if(t===1)return!0;let n=k(e)?.toLowerCase();if(n){if(U_.includes(n))return!0;if(W_.includes(n))return!1}return null}function K_(e){if(e==null)return null;if(typeof e==`string`)return e;let t=O(e);return t?_(t):k(e)??null}function q_(e){if(e==null)return null;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return e.toString();let t=k(e)??null??V_(e)??G_(e);return t===null?null:t.toString()}var J_=[`yyyy-MM-dd`,`M/d/yyyy`,`d MMM yyyy`,`MMM d, yyyy`],Y_=[`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`],X_=[`HH:mm:ss`,`HH:mm:ssZZ`,`HH:mm:ss.SSS`,`HH:mm:ss.SSSZZ`];function Z_(e){if(e==null)return null;let t=typeof e==`string`?e:k(e)??null;if(t===null)return null;for(let e of X_){let n=F_.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISOTime({suppressMilliseconds:!0,includeOffset:r(n)})}for(let e of J_){let n=F_.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISODate()}for(let e of Y_){let n=F_.fromFormat(t,e,{setZone:!0});if(n.isValid)return n.toISO({suppressMilliseconds:!0,includeOffset:r(n)})}let n=F_.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 Q_(e,t){let n=e.type(t),r=e.default(t);return{name:e.name??``,pk:e.pk(t),unique:e.unique(t),increment:e.increment(t),notNull:e.nullable(t)===!1,dbdefault:r,typeName:n?.name??``}}function $_(e){return e.values.map(t=>{let n={};return e.columns.forEach((e,r)=>{n[e]=t[r]}),n})}function ev(e,t,n){return t.map((t,r)=>{let i=e[t]?.value;if(i==null&&n&&n[r]){let e=n[r];if(e?.dbdefault)return JSON.stringify(e.dbdefault.value)}return JSON.stringify(i)}).join(`|`)}function tv(e,t,n){return t.some((t,r)=>{let i=e[t]?.value;return i==null&&n&&n[r]&&n[r]?.dbdefault?!1:i==null})}function nv(e){return e.increment||Cf(e.typeName)}function rv(e,t,n){return e?`${e}.${t}.${n}`:`${t}.${n}`}function iv(e,t,n){return n.length===1?rv(e,t,n[0]):`(${n.map(n=>rv(e,t,n)).join(`, `)})`}function av(e,t){return t.length===1?JSON.stringify(e[t[0]]?.value):`(${t.map(t=>JSON.stringify(e[t]?.value)).join(`, `)})`}function ov(e,t,n){let{token:r}=t,i=e.nodeAtPosition(r.filepath,r.start.offset)??e.parse.ast(r.filepath);return new Pl(b.INVALID_RECORDS_FIELD,n,i)}var sv=e=>e>1?`Composite PK`:`PK`;function cv(e,t,n,r){if(jc(r.values))return[];let i=t.mergedColumns(e).map(t=>Q_(t,e)),a=Nc(i,`name`),o=$_(r),s=pv(t,i,e),c=new Set(r.columns);return xc(s,i=>lv(e,t,n,i,o,c,a,r))}function lv(e,t,n,r,i,a,o,s){let c=t.schema(e),l=t.name??``,u=fv(n,r,a,o,c,l,s);if(!jc(u))return u;let d=ao(r.map(e=>o[e])),f=d.every(e=>e&&nv(e)),[p,m]=v(i,e=>tv(e,r,d)),h=f?[]:uv(e,p,r,c,l),ee=dv(e,m,r,d,c,l);return[...h,...ee]}function uv(e,t,n,r,i){if(jc(t))return[];let a=`NULL in ${sv(n.length)}: ${iv(r,i,n)} cannot be NULL`;return xc(t,t=>n.map(n=>ov(e,t[n],a)))}function dv(e,t,n,r,i,a){return xc(lc(Ec(t,e=>ev(e,n,r)),e=>e.length>1),t=>{let r=sv(n.length),o=iv(i,a,n);return xc(t,t=>{let i=`Duplicate ${r}: ${o} = ${av(t,n)}`;return n.map(n=>ov(e,t[n],i))})})}function fv(e,t,n,r,i,a,o){let s=nc(t,Array.from(n));if(jc(s))return[];let c=s.filter(e=>{let t=r[e];return!!(t&&!nv(t)&&!t.dbdefault)});if(jc(c))return[];let l=`${sv(c.length)}: Column ${iv(i,a,c)} is missing from record and has no default value`;return o.values.map(()=>new Pl(b.INVALID_RECORDS_FIELD,l,e))}function pv(e,t,n){return[...t.filter(e=>e.pk).map(e=>[e.name]),...e.mergedIndexes(n).flatMap(e=>{let t=n.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(t)?t.filter(e=>e.pk).map(e=>e.columns.map(e=>e.value)):[]})]}var mv=e=>e>1?`Composite UNIQUE`:`UNIQUE`;function hv(e,t,n){if(jc(n.values))return[];let r=t.mergedColumns(e).map(t=>Q_(t,e)),i=Nc(r,`name`),a=$_(n),o=t.schema(e),s=t.name??``;return xc(gv(t,r,e),t=>_v(e,a,t,ao(t.map(e=>i[e])),o,s))}function gv(e,t,n){return[...t.filter(e=>e.unique).map(e=>[e.name]),...e.mergedIndexes(n).flatMap(e=>{let t=n.interpretMetadata(e,e.declaration.filepath).getValue();return Array.isArray(t)?t.filter(e=>e.unique).map(e=>e.columns.map(e=>e.value)):[]})]}function _v(e,t,n,r,i,a){return xc(lc(Ec(t.filter(e=>!tv(e,n,r)),e=>ev(e,n,r)),e=>e.length>1),t=>{let r=mv(n.length),o=iv(i,a,n);return xc(t,t=>{let i=`Duplicate ${r}: ${o} = ${av(t,n)}`;return n.map(n=>ov(e,t[n],i))})})}function vv(e,t,n,r){return xc(t,t=>xv(e,t,n,r))}function yv(e,t,n,r,i,a){if(!t.record||jc(t.record.values))return[];let o=$_(t.record),s=n.record?$_(n.record):[],c=new Set(s.map(e=>ev(e,i.fieldNames))),l=o.filter(e=>!tv(e,r.fieldNames)).filter(e=>{let t=ev(e,r.fieldNames);return!c.has(t)}),u=t.tableSymbol.interpretedName(e,a),d=n.tableSymbol.interpretedName(e,a);return xc(l,t=>{let n=iv(u.schema,u.name,r.fieldNames),a=iv(d.schema,d.name,i.fieldNames),o=`FK violation: ${n} = ${av(t,r.fieldNames)} does not exist in ${a}`;return r.fieldNames.map(n=>ov(e,t[n],o))})}function bv(e,t,n,r){let i=t.schemaName===`public`?null:t.schemaName;for(let a of e.values()){let{name:e,schema:o}=a.tableSymbol.interpretedName(n,r);if(e===t.tableName&&o===i)return a}}function xv(e,t,n,r){if(!t.endpoints)return[];let[i,a]=t.endpoints,o=bv(n,i,e,r),s=bv(n,a,e,r);return!o||!s?[]:Sv(e,o,s,i,a,r)}function Sv(e,t,n,r,i,a){let o=r.relation,s=i.relation;return o===`1`&&s===`1`||o===`*`&&s===`*`?[...yv(e,t,n,r,i,a),...yv(e,n,t,i,r,a)]:o===`*`&&s===`1`?yv(e,t,n,r,i,a):o===`1`&&s===`*`?yv(e,n,t,i,r,a):[]}var Cv=class{constructor(e,t,n){this.errors=[],this.warnings=[],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:j(this.programNode),externals:{tables:[],enums:[],tableGroups:[],tablePartials:[],notes:[]}}}interpret(){return this.interpretAllSymbols(),this.interpretAllMetadata(),this.interpretAllAliases(),this.warnings.push(...this.validateRecords()),new n(this.db,this.errors,this.warnings)}interpretAllSymbols(){for(let e of this.programSymbol.declaration.declarations){let n=this.compiler.nodeSymbol(e).getFiltered(t);if(!n||n instanceof Yu)continue;let r=this.compiler.interpretSymbol(n,this.filepath);if(r.hasValue(t))continue;this.errors.push(...r.getErrors()),this.warnings.push(...r.getWarnings());let i=r.getValue();i&&this.pushElement(n,i)}let e=new Set,n=this.compiler.symbolMembers(this.programSymbol).getFiltered(t)??[];for(let r of n){if(!(r instanceof ju))continue;let n=this.compiler.symbolMembers(r).getFiltered(t)??[];for(let t of n){if(!(t instanceof Yu))continue;let n=t.originalSymbol.intern();e.has(n)||(e.add(n),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());let t=r.getValue();t&&this.pushElement(e,t)}let i=n instanceof Pu?n.interpretedName(this.compiler,n.filepath):{name:n.name??``,schema:null},a=n instanceof Pu?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}]};sf(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 Sd))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());let a=e.getValue();if(a!==void 0)switch(i.kind){case gd.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 x(b.SAME_ENDPOINT,`Ref with same endpoints already exists`,i.declaration));break}n.add(e)}this.db.refs.push(e);break}case gd.Records:if(i instanceof Sd){let e=i.table(this.compiler)?.originalSymbol.intern()??``,t=e?r.get(e):void 0;if(t&&t.count>1){this.errors.push(new x(b.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 gd.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 Ju)||!t.isKind(M.Table))continue;let{name:e,schema:n}=t.originalSymbol.interpretedName(this.compiler,this.filepath),r={name:t.name,kind:Hd.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 ju))continue;let r=this.compiler.symbolMembers(e).getFiltered(t)??[];for(let e of r){if(!e.isKind(M.Table))continue;let t=e.originalSymbol;if(!(t instanceof Pu))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 Sd))continue;let i=r.table(this.compiler);if(!(i instanceof Pu))continue;let a=this.compiler.interpretMetadata(r,this.filepath);if(a.hasValue(t))continue;let o=a.getValue();if(!o)continue;e.push(...cv(this.compiler,i,r.declaration,o)),e.push(...hv(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(...vv(this.compiler,[...this.db.refs,...a],n,this.filepath)),e}collectPartialRefs(e){let t=this.compiler.symbolMetadata(this.programSymbol).filter(e=>e instanceof yd),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 Xu&&t.declaration===e.declaration)))continue;let l=Rd(s);if(!l)continue;let u=a instanceof zu&&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:j(i.leftToken())},m={schemaName:f.schema,tableName:f.name,fieldNames:o.map(e=>e.name??``),relation:l[1],token:j(i.rightToken())};n.push({token:j(i.declaration),endpoints:[p,m]})}return n}pushElement(e,t){if(!Array.isArray(t))switch(e.kind){case M.Table:this.db.tables.push(t);break;case M.Enum:this.db.enums.push(t);break;case M.TableGroup:this.db.tableGroups.push(t);break;case M.TablePartial:this.db.tablePartials.push(t);break;case M.StickyNote:this.db.notes.push(t);break;case M.DiagramView:this.db.diagramViews.push(t);break;default:break}}};const wv={nodeSymbol(t,r){return tu(r)?n.create(t.symbolFactory.create(qu,{declaration:r,name:r.filepath.absolute},r.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(M.Program))return n.create(e);if(!(i.declaration instanceof Qu))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(Ml);if(!o)return n.create([...a.values()]);let s=r.symbolMembers(o).getFiltered(t)?.filter(e=>!e.isKind(M.Schema));return s?n.create([...a.values(),...s]):n.create([...a.values()])},bindNode(t,r){return tu(r)?new af(r,t).resolve():n.create(e)},interpretSymbol(t,r,i){return r instanceof qu?r.declaration instanceof Qu?Fd(t,r.declaration)?new Cv(t,r,i).interpret():n.create(void 0,[...t.validateNode(r.declaration).getErrors(),...t.bindNode(r.declaration).getErrors()]):n.create(void 0):n.create(e)}};var Tv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e||e instanceof R)return[];let t=e.body.filter(e=>e instanceof F);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Ev=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=j(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}=wu(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.type?.value.toLowerCase()){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 z?t.body.body[0]?.callee:t.body?.callee,n=e?k(e):void 0;return n&&(this.project.note={value:Cu(n),token:j(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()]=k(t.body.callee),[]}})}};const Dv={nodeMetadata(t,i){return E(i,r.Project)?n.create(new Cd(i)):n.create(e)},bindNode(t,i){return E(i,r.Project)?n.create(void 0,new Tv(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return!(r instanceof Cd)||!(r.declaration instanceof F)?n.create(e):new Ev(t,r.declaration,i).interpret()}};var Ov=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 z&&e.push(...this.bindBody(this.declarationNode.body)),e}bindRecordsName(e){return this.declarationNode.parent instanceof Qu?this.bindTopLevelName(e):this.bindInsideTableName(e)}bindTopLevelName(e){let n=yu(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=fu(o.declaration)??`<invalid name>`,c=i.flatMap(e=>this.compiler.nodeReferee(e).getErrors());for(let e of n.args){let n=bu(e)??`<unnamed>`,r=this.compiler.nodeReferee(e).getFiltered(t);if(!r){c.push(new x(b.BINDING_ERROR,`Column '${n}' does not exist in Table '${s}'`,e));continue}let i=this.boundColumns.get(r);i&&(c.push(new x(b.DUPLICATE_COLUMN_REFERENCES_IN_RECORDS,`Column '${n}' is referenced more than once in a Records for Table '${s}'`,i)),c.push(new x(b.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 F)||!n.isKind(r.Table)||!this.compiler.nodeSymbol(n).getFiltered(t)||!Jl(e))return[];let i=fu(n)??`<invalid name>`,a=[];for(let n of e.elementList){let e=bu(n)??`<unnamed>`;if(!this.compiler.nodeReferee(n).getFiltered(t)){a.push(new x(b.BINDING_ERROR,`Column '${e}' does not exist in Table '${i}'`,n));continue}}return a}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindDataRow(e);let t=e.body.filter(e=>e instanceof R),n=e.body.filter(e=>e instanceof F);return[...this.bindDataRows(t),...this.bindSubElements(n)]}bindDataRows(e){return e.flatMap(e=>this.bindDataRow(e))}bindDataRow(e){return e.callee?(e.callee instanceof sd?e.callee.elementList:[e.callee]).flatMap(Id).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():[])}},kv=class{constructor(e,t,n){this.compiler=e,this.metadata=t,this.element=t.declaration,this.filepath=n}interpret(){let e=[],t=[],r=Av(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=jv(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=j(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 Av(e,n,i){let a=e.name,o=e.parent;if(o instanceof F&&o.isKind(r.Table)){let e=n.nodeSymbol(o).getFiltered(t);if(!(e instanceof Pu))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===A(e))||[])}:{schemaName:c,tableName:l,columns:r}}let s=yu(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,M.Schema,u);e&&(p=n.lookupMembers(e,M.Table,l))}if(p||=n.lookupMembers(f,M.Table,l),!p)return;let m=p.originalSymbol;if(!(m instanceof Pu))return;let h=m.mergedColumns(n),ee=s.args.map(e=>h.find(t=>t.name===A(e))).filter(Boolean),te=m.interpretedName(n,i);return{schemaName:te.schema,tableName:te.name,columns:ee}}function jv(e,t,r){let i=[],a=[],o={},s=e.callee instanceof sd?e.callee.elementList:[e.callee];if(s.length!==t.length)return i.push(new x(b.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=Nv(n,l,r);i.push(...u.getErrors()),a.push(...u.getWarnings());let d=u.getValue();c.push(d??{value:null,type:`expression`,token:j(n)})}return new n({row:c,columnNodes:o},i,a)}function Mv(e){return e instanceof ad&&e.value?.value||``}function Nv(e,t,r){let i=j(e),a=t.type(r),o=(a?.name??``).split(`(`)[0],s=!!a?.enumSymbol,c=t.increment(r),l=t.nullable(r)===!1,u=t.default(r),d=t.name??``,f=wf(o,s),p=q_(e),m=p===null?Mv(e):p,h=p===null?`expression`:f;if(e instanceof ad)return new n({value:e.value?.value||``,type:`expression`,token:i},[],[]);if(L_(e)||R_(e)&&!bf(o)){let t=u&&u.value.toString().toLowerCase()!==`null`,r=Cf(o);return l&&!t&&!c&&!r?new n({value:null,type:f,token:i},[],[new Pl(b.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(M.EnumField)).map(e=>e.name).filter(Boolean):[],s=k(e);return s===void 0&&(s=w(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 Pl(b.INVALID_RECORDS_FIELD,`Invalid enum value for column '${d}'`,e)])}if(gf(o)||_f(o)||Cf(o)){let t=B_(e);if(t===null)return new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid numeric value for column '${d}'`,e)]);if(gf(o)&&!Number.isInteger(t))return new n({value:Math.floor(t),type:f,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid integer value ${t} for column '${d}': expected integer, got decimal`,e)]);let r=_f(o)&&a?.args?.length?{precision:Number(a.args[0]),scale:a.args.length>=2?Number(a.args[1]):0}:void 0;if(_f(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 Pl(b.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 Pl(b.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(yf(o)){let t=G_(e);return t===null?new n({value:m,type:h,token:i},[],[new Pl(b.INVALID_RECORDS_FIELD,`Invalid boolean value for column '${d}'`,e)]):new n({value:t,type:f,token:i},[],[])}if(Sf(o)){let t=Z_(e);return t===null?new n({value:m,type:h,token:i},[],[new Pl(b.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(bf(o)){let t=q_(e);if(t===null)return new n({value:m,type:h,token:i},[],[new Pl(b.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 Pl(b.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:h,token:i},[],[])}const Pv={nodeMetadata(t,i){if(!E(i,r.Records))return n.create(e);let a=i.parent;if(a&&E(a,r.Table))return n.create(new Sd(i));let o=i.name;return o instanceof V&&o.callee?n.create(new Sd(i)):n.create(e)},nodeReferee(i,a){if(!w(a))return n.create(e);let o=a.parentOfKind(F);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(od);if(l?.parentNode===o)return Fv(i,o,a);let u=a.parentOfKind(V);return u?.parentNode===o&&l?.parentNode===u?Iv(i,u,a):u?.parentNode===o&&u.callee?.containsEq(a)?Lv(i,c,a):zv(i,c,a)},bindNode(t,i){return E(i,r.Records)?n.create(void 0,new Ov(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof Sd?r.declaration instanceof F?new kv(t,r,i).interpret():n.create(void 0):n.create(e)}};function Fv(e,i,a){let o=i.parent;if(o instanceof F&&o.isKind(r.Table)){let n=e.nodeSymbol(o).getFiltered(t);if(n)return Rv(e,n,a)}return new n(void 0)}function Iv(e,r,i){if(r.callee){let n;if(w(r.callee))n=e.nodeReferee(r.callee).getFiltered(t);else{let i=hu(r.callee);if(i&&i.length>0){let r=i[i.length-1];n=e.nodeReferee(r).getFiltered(t)}}if(n)return Rv(e,n,i)}return new n(void 0)}function Lv(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode)){let a=e.lookupMembers(t,[M.Table,M.Schema],i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table '${i}' does not exist in Schema 'public'`,r)])}let a=Ld(e,r);if(!a){let a=e.lookupMembers(t,[M.Table,M.Schema],i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${i}' does not exist`,r)])}if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Table,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${i}' does not exist`,r)])}return new n(void 0)}function Rv(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``,a=e.lookupMembers(t,M.Column,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${i}' does not exist in Table 'public.${t.name}'`,r)])}function zv(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return new n(void 0);let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(M.Enum)){let t=e.lookupMembers(a,M.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.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(T(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,M.Enum,i);return a?n.create(a):new n(void 0,[new x(b.BINDING_ERROR,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}var Bv=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return!(this.declarationNode.parent instanceof Qu)&&!this.declarationNode.parent?.isKind(r.Project)?[]:this.bindBody(this.declarationNode.body)}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Id).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():[])}},Vv=class{constructor(e,t,n){this.compiler=e,this.filepath=n,this.metadata=t,this.declarationNode=t.declaration,this.ref={}}interpret(){this.ref.token=j(this.declarationNode);let e=[...this.interpretName(),...this.interpretBody()];return n.create(this.ref,e)}interpretName(){if(!(this.declarationNode instanceof F))return[];let e=[],t=O(this.declarationNode.name)??[];return this.ref.name=t.pop()||null,t.length>1&&e.push(new x(b.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(Kc(t,r).every(([e,t])=>e?.originalSymbol===t?.originalSymbol))return[new x(b.SAME_ENDPOINT,`Two endpoints are the same`,this.declarationNode)];let a=Rd(e),o=n?.interpretedName(this.compiler,this.filepath),s=i?.interpretedName(this.compiler,this.filepath),c=j(this.metadata.leftToken()),l=j(this.metadata.rightToken());if(this.ref.endpoints=this.declarationNode instanceof F?[{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 F))return[];let u=mu(this.declarationNode)[0];if(u.args[0]){let e=S(u.args[0]).getValue(),t=e.delete?.at(0)?.value;this.ref.onDelete=t instanceof nd?du(t):A(t);let n=e.update?.at(0)?.value;this.ref.onUpdate=n instanceof nd?du(n):A(n),this.ref.color=e.color?.length?Tu(e.color?.at(0)?.value):void 0}return[]}};function Hv(e){let t=e.parent;for(;t;){if(t instanceof F&&t.isKind(r.Ref))return t.body?.containsEq(e)??!1;t=t.parent}return!1}const Uv={nodeReferee(r,i){if(!w(i)&&!T(i)||!Hv(i)||i.parentOfKind(I))return n.create(e);let a=r.parseFile(i.filepath).getValue().ast,o=r.nodeSymbol(a).getValue();return o===t?n.create(void 0):Gv(r,o,i)},nodeMetadata(t,a){if(E(a,r.Ref)){let t=mu(a)[0];if(!(t instanceof R)||!t.callee)return n.create(e);let r=t.callee;return!(r instanceof rd)||!r.op?n.create(e):n.create(new vd(a))}if(a instanceof I){if(!(a.name instanceof nd)||du(a.name)?.toLowerCase()!==i.Ref)return n.create(e);let t=a.parent;return t instanceof F&&t.isKind(r.TablePartial)?n.create(new yd(a)):n.create(new vd(a))}return n.create(e)},bindNode(t,i){return E(i,r.Ref)?n.create(void 0,new Bv(t,i).bind()):n.create(e)},interpretMetadata(t,r,i){return r instanceof vd?new Vv(t,r,i).interpret():n.create(e)}};function Wv(e,n){let r=e.symbolMembers(n).getFiltered(t);if(r)return r.find(e=>e instanceof ju&&e.isPublicSchema())}function Gv(e,r,i){if(!w(i))return new n(void 0);let a=bu(i)??``;if(!T(i.parentNode)){let r=i.parentNode;if(r&&T(r.parentNode)&&r.parentNode.rightExpression===r){let o=r.parentNode.leftExpression,s=T(o)?o.rightExpression??o:o,c=e.nodeReferee(s).getFiltered(t);if(c?.isKind(M.Table)){let r=e.lookupMembers(c,M.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 x(b.BINDING_ERROR,`Column '${a}' does not exist in Table '${o}'`,i)])}}return n.create(void 0)}let o=Ld(e,i);if(o){if(o.isKind(M.Schema)){let t=e.lookupMembers(o,[M.Table,M.Schema],a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}if(o.isKind(M.Table)){let r=e.lookupMembers(o,M.Column,a);return r?n.create(r):new n(void 0,[new x(b.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(T(s.parentNode)&&s.parentNode.leftExpression===s){let t=e.lookupMembers(r,M.Schema,a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}let t=Wv(e,r);if(t){let r=e.lookupMembers(t,M.Table,a);if(r)return n.create(r)}let o=e.lookupMembers(r,M.Table,a);return o?n.create(o):new n(void 0,[new x(b.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}return new n(void 0)}const Kv={visibleName(e,n){let r=n instanceof N?n:n.useSpecifierDeclaration instanceof ed?n.useSpecifierDeclaration:n.declaration;if(r instanceof ed&&n instanceof Au&&r.getSymbolKind()!==n.kind&&(r=n.declaration),r)return e.nodeAlias(r).mapFiltered(e=>[e],t,void 0).getFiltered(t)||e.nodeFullname(r).getFiltered(t)}},qv={nodeSymbol(r,i){if(!eu(i)||!i.name)return n.create(e);let a=i.getSymbolKind();if(a===void 0||a===M.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(Yu,{useSpecifierDeclaration:i,declaration:o?.declaration,usedSymbol:o,kind:a,name:Kv.visibleName(r,i)?.at(-1)},i.filepath),o===void 0?[new x(b.BINDING_ERROR,`Failed to resolve the import of ${a} '${(O(i.name)||[]).map(py).join(`.`)}'`,i)]:[])},symbolMembers(r,i){if(!(i instanceof Yu))return n.create(e);let a=r.symbolMembers(i.originalSymbol).getFiltered(t);return n.create(a??[])},nodeReferee(r,i){if(!w(i)&&!Ql(i))return n.create(e);let a=i.parentOfKind(ed);if(!a)return n.create(e);let o=a.name===i||T(a.name)&&a.name.rightExpression===i?a.getSymbolKind():M.Schema;if(o===void 0)return n.create(void 0);let s=O(i.parentOfKind(rd)),c=A(i)??s?.at(-1);if(c===void 0)return n.create(void 0);let l=i.parentOfKind($u);if(l?.importPath?.value===void 0)return n.create(void 0);let u=Ol(i.filepath,l.importPath.value);if(!u)return n.create(void 0);if(!r.layout.exists(u))return n.create(void 0,[new x(b.NONEXISTENT_MODULE,`${o} '${s?.join(`.`)??c}' does not exist in file ${u.toString()}. Does the file exist?`,i)]);let d=i.parentOfKind(rd)?.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 x(b.NAME_NOT_FOUND,`Could not find ${o} '${c}'`,i)])}let f=Jv(r,u,c,o);return f?n.create(f):n.create(void 0,[new x(b.BINDING_ERROR,`${o} '${c}' does not exist in file ${u.toString()}`,i)])},bindNode(t,r){if($l(r)){let e=[];if(r.importPath?.value){let n=Ol(r.filepath,r.importPath.value);n&&!t.layout.exists(n)&&e.push(new x(b.NONEXISTENT_MODULE,`Failed to resolve the non-existent file '${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 td?new n(void 0,r.specifiers.flatMap(e=>t.bindNode(e).getErrors())):eu(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 Yu))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 Jv(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);if(s?.isKind(i))return s;let c=o.schemaMembers.find(e=>e.name===r);if(c?.isKind(M.Schema))return c;for(let t of o.reuses.selective)if(O(t.alias??t.name)?.at(-1)===r){let o=t.parentOfKind($u);if(o?.importPath?.value){let s=Jv(e,Ol(n,o.importPath.value),O(t.name)?.at(-1)??r,i,a);if(s)return s}}for(let{importPath:t}of o.reuses.wildcard){let n=Jv(e,t,r,i,a);if(n)return n}}function Yv(e){if(e instanceof Dl){let{ast:n}=this.parseFile(e).getValue(),r=this.nodeSymbol(n).getFiltered(t);return this.usableMembers(r)}let r=e.filepath,i=Zv(this,r),{nonSchemaMembers:a,schemaMembers:o}=e instanceof qu?Qv(this,e,i):$v(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 Xv(e,n,r){let i=n.qualifiedName,a;if(a=r instanceof ed?Kv.visibleName(e,r):e.nodeFullname(r).getFiltered(t),!a)return{kind:`none`};let o=a.length<=1?[Ml]: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 Zv(e,t){let n=e.parseFile(t),{ast:r}=n.getValue(),i=[],a=[],o=[],s=[];for(let e of r.body){if(!(e instanceof $u)||!e.specifiers||!e.importPath)continue;let n=Ol(t,e.importPath.value);n&&(e.isReuse?e.specifiers instanceof ud?i.push({importPath:n,node:e.specifiers}):a.push(...e.specifiers.specifiers):e.specifiers instanceof ud?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 Qv(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=n.filepath,c=new Map([[Ml,e.symbolFactory.create(ju,{name:Ml},s)]]);for(let n of i.declarations){let r=e.nodeFullname(n).getFiltered(t)||[],i=r.length<=1?Ml:r[0];c.has(i)||c.set(i,e.symbolFactory.create(ju,{name:i},s))}ey(e,[...a,...o],c,s);for(let t of e.reachableFiles(s))for(let n of ny(e,t))c.has(n)||c.set(n,e.symbolFactory.create(ju,{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 $v(e,n,r){let{ast:i,selectiveUses:a,selectiveReuses:o}=r,s=[],c=new Map;for(let r of i.body){if(!(r instanceof F))continue;let i=Xv(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(Ju,{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(ju,{name:i.schemaName,parent:n},n.filepath))}ty(e,[...a,...o],n,c);let l=n.qualifiedName;for(let t of e.reachableFiles(n.filepath))for(let r of ry(e,t,l))c.has(r)||c.set(r,e.symbolFactory.create(ju,{name:r,parent:n},n.filepath));return{nonSchemaMembers:s,schemaMembers:[...c.values()]}}function ey(e,t,n,r){for(let i of t){if(i.getSymbolKind()!==M.Schema)continue;let t=Kv.visibleName(e,i)?.at(0);t!==void 0&&!n.has(t)&&n.set(t,e.symbolFactory.create(ju,{name:t},r))}}function ty(e,t,n,r){let i=n.qualifiedName;for(let a of t){if(a.getSymbolKind()!==M.Schema)continue;let t=Kv.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(ju,{name:o,parent:n},n.filepath))}}function ny(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?Ml:r[0];i.push(a)}let a=Zv(e,n);for(let t of[...a.selectiveUses,...a.selectiveReuses]){if(t.getSymbolKind()!==M.Schema)continue;let n=Kv.visibleName(e,t)?.at(0);n!==void 0&&i.push(n)}return i}function ry(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?[Ml]:i.slice(0,-1);o.length>r.length&&r.every((e,t)=>e===o[t])&&a.push(o[r.length])}let o=Zv(e,n);for(let t of[...o.selectiveUses,...o.selectiveReuses]){if(t.getSymbolKind()!==M.Schema)continue;let n=Kv.visibleName(e,t);!n||n.length<=r.length||r.every((e,t)=>e===n[t])&&a.push(n[r.length])}return a}var iy=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);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(_(n)instanceof B){let e=S(_(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=>!Hl(e.callee)))}tryToBindColumnType(e){let t=gu(e);if(!t)return;let n=t.variables.pop();n&&this.compiler.nodeReferee(n).getErrors()}tryToBindEnumFieldRef(e){if(C(e))return[];if(w(e)){let t=e.expression.variable?.value?.toLowerCase();if(t&&kl.includes(t))return[]}let t=gu(e);if(!t){if(T(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 Id(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():[])}},ay=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??j(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}=wu(e);return n.length>1?(this.table.name=t,this.table.schemaName=n.join(`.`),[new x(b.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=bu(e);return t&&(this.table.alias=t),[]}interpretSettingList(e){let t=S(e).getValue();this.table.headerColor=t[i.HeaderColor]?.length?Tu(t[i.HeaderColor]?.at(0)?.value):void 0;let[n]=t[i.Note]||[];return this.table.note=n&&{value:Cu(k(n?.value)),token:j(n)},[]}interpretBody(e){let[t,n]=v(e.body,e=>e instanceof R);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case r.Note:return this.table.note={value:Cu(k(e.body instanceof z?e.body.body[0].callee:e.body.callee)),token:j(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:j(e)};i.name=A(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),i=n?(this.compiler.symbolUses(n).getFiltered(t)??[]).find(e=>e.filepath.equals(this.filepath)):void 0;r.push(new x(b.UNSUPPORTED,`Import TablePartial from '${a.filepath}' first. Currently, importing a table that uses a table partial requires that table partial to also be in scope.`,i?.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(M.Column)).length?[]:[new x(b.EMPTY_TABLE,`A Table must have at least one column`,this.declarationNode)],i=e.flatMap((e,t)=>Hl(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=bu(e.callee),r.token=j(e);let o=Du(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||!1,r.unique=a?.unique(this.compiler)||!1,r.increment=a?.increment(this.compiler)||void 0;let s=a?.nullable(this.compiler);r.not_null=s===void 0?void 0:!s,r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let c=this.compiler.nodeSettings(e).getFiltered(t)??{},l=this.compiler.parseFile(this.filepath).getValue().ast,u=this.compiler.nodeSymbol(l).getFiltered(t);return r.inline_refs=(c[i.Ref]||[]).flatMap(e=>{let r=this.compiler.nodeMetadata(e).getFiltered(t);if(!r)return[];let i=r.owners(this.compiler);if(u&&i.length>0&&!i.some(e=>e===u))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=(c[i.Check]||[]).map(e=>({token:j(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()}};const oy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`Table '${e}' already exists in schema '${t}'`,n)},getColumnDuplicateError(e,t){return new x(b.DUPLICATE_COLUMN_NAME,`Duplicate column '${e}'`,t)},getPartialInjectionDuplicateError(e,t){return new x(b.DUPLICATE_TABLE_PARTIAL_INJECTION_NAME,`Duplicate table partial injection '${e}'`,t)}},sy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.Table)?new n(i.symbolFactory.create(Pu,{declaration:a,name:o},a.filepath)):D(a,r.Table)?Hl(a.callee)?new n(i.symbolFactory.create(Bu,{declaration:a,name:o},a.filepath)):new n(i.symbolFactory.create(Fu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(r,i){if(!i.isKind(M.Table))return n.create(e);let a=i.declaration;if(!(a instanceof F))return new n([]);let o=mu(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(M.Column,M.PartialInjection)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration,r=l.get(t);r?e.isKind(M.Column)?(c.push(oy.getColumnDuplicateError(e.name,r)),c.push(oy.getColumnDuplicateError(e.name,n))):(c.push(oy.getPartialInjectionDuplicateError(e.name,r)),c.push(oy.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 R)||!Hl(n.declaration.callee))continue;let i=n.declaration.callee.expression,o=A(i);if(i===void 0||o===void 0)continue;let l=r.nodeReferee(i).getFiltered(t);if(!l){c.push(new x(b.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(Xu,{kind:M.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(M.Column)&&!(e instanceof Xu)).map(e=>e.name));return new n(Vc([...s.filter(e=>!(e instanceof Xu&&d.has(e.name)))].reverse(),e=>e.isKind(M.Column)?e.name:e).reverse(),c)},nodeReferee(a,o){if(!nu(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):w(o)&&o.parentNode instanceof L&&o.parentNode.op?.value===`~`?cy(a,c,o):ru(o,1)?ly(a,c,o):au(o,i.Ref)?uy(a,c,o):ru(o,0)?n.create(e):dy(a,c,o)},bindNode(i,a){if(!E(a,r.Table))return n.create(e);let o=new iy(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 Pu?r.declaration instanceof F?new ay(t,r.declaration,r,i).interpret():n.create(void 0):n.create(e)}};function cy(e,r,i){let a=A(i)??``,o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof ju&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,M.TablePartial,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,M.TablePartial,a);return s?n.create(s):new n(void 0,[new x(b.NAME_NOT_FOUND,`TablePartial '${a}' does not exist in Schema 'public'`,i)])}function ly(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=lu(r),o=e.lookupMembers(a,t?M.Enum:M.Schema,i);return o?n.create(o):new n(void 0,[new x(b.NAME_NOT_FOUND,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,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function uy(e,i,a){if(!w(a))return new n(void 0);let o=bu(a)??``;if(!T(a.parentNode)){let s=a.parent,c=s instanceof F&&s.isKind(r.Table)?e.nodeSymbol(s).getFiltered(t):void 0;if(c){let t=e.lookupMembers(c,M.Column,o);if(t)return n.create(t)}let l=e.lookupMembers(i,M.Column,o);return l?n.create(l):new n(void 0,[new x(b.BINDING_ERROR,`Column '${o}' does not exist in Table 'public.${c?.name??``}'`,a)])}let s=Ld(e,a);if(s){if(s.isKind(M.Schema)){let t=e.lookupMembers(s,[M.Table,M.Schema],o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(M.Table)){let t=e.lookupMembers(s,M.Column,o);return t?n.create(t):new n(void 0,[new x(b.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(T(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,M.Schema,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,M.Table,o);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function dy(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return kl.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(M.Enum)){let t=e.lookupMembers(a,M.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`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(T(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,M.Enum,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function fy(e){return e?e.split(``).every(e=>Fl(e)||Il(e))&&!Il(e[0]):!1}function py(e){return fy(e)?e:`"${hy(e)}"`}function my(e){let t=``,n=0,r={n:`
5
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 hy(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 gy(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`'${hy(e)}'`;let{value:t,type:n}=e;if(t==null||yf(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(yf(n)){let e=G_(t);return e===null?`\`${t}\``:e?`true`:`false`}if(vf(n)){let e=V_(t);return e===null?`\`${t}\``:String(e)}if(Sf(n)){let e=Z_(t);return e===null?`\`${t}\``:`'${hy(e)}'`}let r=q_(t);return r===null?`\`${t}\``:`'${hy(r)}'`}function _y(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?my(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function vy(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 yy(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 ju&&n.isKind(M.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 by=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Id).flatMap(e=>{let n=e.variables.pop();if(!n)return[];let r=this.compiler.nodeReferee(n),i=r.getFiltered(t);return i instanceof Yu?[...r.getErrors(),new x(b.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():[])}},xy=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=j(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}=wu(e);return r.length>=2&&(this.tableGroup.name=n,this.tableGroup.schemaName=r.join(`.`),t.push(new x(b.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]=v(e.body,e=>e instanceof R);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case`note`:this.tableGroup.note={value:Cu(k(e.body instanceof z?e.body.body[0].callee:e.body.callee)),token:j(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(M.Table)){let{name:e,schema:t}=r.interpretedName(this.compiler,this.filepath);return{name:e,schemaName:t}}let i=O(e.callee);return i.length>2&&n.push(new x(b.UNSUPPORTED,`Nested schema is not supported`,e)),{name:i.pop(),schemaName:i.join(`.`)||null}}),n}interpretSettingList(e){let t=S(e).getValue();this.tableGroup.color=t.color?.length?Tu(t.color?.at(0)?.value):void 0;let[n]=t.note||[];return this.tableGroup.note=n&&{value:Cu(k(n?.value)),token:j(n)},[]}};const Sy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`TableGroup '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new x(b.DUPLICATE_NAME,`Duplicate TableGroupField '${e}'`,t)}},Cy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t),s=o?.at(-1);return E(a,r.TableGroup)?new n(i.symbolFactory.create(Iu,{declaration:a,name:s},a.filepath)):D(a,r.TableGroup)?new n(i.symbolFactory.create(Lu,{declaration:a,name:o?.map(py).join(`.`)},a.filepath)):n.create(e)},symbolMembers(r,i){if(i.isKind(M.TableGroup)){let e=i.declaration;if(!(e instanceof F))return new n([]);let a=mu(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(M.TableGroupField)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(Sy.getFieldDuplicateError(e.name,r)),s.push(Sy.getFieldDuplicateError(e.name,n))):c.set(t,n)}}return new n(o,s)}return i.isKind(M.TableGroupField)?new n([]):n.create(e)},nodeReferee(i,a){if(!w(a)||!nu(a,r.TableGroup)||a.parent&&iu(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):wy(i,s,a)},bindNode(i,a){if(!E(a,r.TableGroup))return n.create(e);let o=new by(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!E(o,r.TableGroup)||!(i instanceof Iu)?n.create(e):Fd(t,o)?new xy(t,i,a).interpret():n.create(void 0)}};function wy(e,r,i){let a=bu(i)??``;if(!T(i.parentNode)){let o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof ju&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,M.Table,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,M.Table,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}let o=Ld(e,i);if(o){if(o.isKind(M.Schema)){let t=e.lookupMembers(o,[M.Table,M.Schema],a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}return new n(void 0)}let s=e.lookupMembers(r,M.Schema,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}var Ty=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);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(_(n)instanceof B){let e=S(_(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=gu(e);if(!t)return[];let n=t.variables.pop();return n?this.compiler.nodeReferee(n).getErrors():[]}bindInlineRef(e){return Id(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():[])}},Ey=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??j(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}=wu(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=S(e).getValue(),n=hc(t[i.HeaderColor]);this.tablePartial.headerColor=n?Tu(n.value):void 0;let[r]=t[i.Note]||[];return this.tablePartial.note=r&&{value:k(r?.value)?Cu(k(r?.value)):``,token:j(r)},[]}interpretBody(e){let[t,n]=v(e.body,e=>e instanceof R);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case r.Note:return this.tablePartial.note={value:Cu(k(e.body instanceof z?e.body.body[0].callee:e.body.callee)),token:j(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=bu(e.callee)??``,r.token=j(e);let o=Du(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||void 0,r.unique=a?.unique(this.compiler)||void 0,r.increment=a?.increment(this.compiler)||void 0;let s=a?.nullable(this.compiler);r.not_null=s===void 0?void 0:!s,r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let c=this.compiler.nodeSettings(e).getFiltered(t)??{},l=this.compiler.parseFile(this.filepath).getValue().ast,u=this.compiler.nodeSymbol(l).getFiltered(t);return r.inline_refs=(c[i.Ref]||[]).flatMap(e=>{let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!(n instanceof yd))return[];let r=n.owners(this.compiler);if(u&&r.length>0&&!r.some(e=>e===u))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:j(n.rightToken())}}),r.checks=(c[i.Check]||[]).map(e=>({token:j(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()}};const Dy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`TablePartial '${e}' already exists in schema '${t}'`,n)}},Oy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.TablePartial)?new n(i.symbolFactory.create(zu,{declaration:a,name:o},a.filepath)):D(a,r.TablePartial)?new n(i.symbolFactory.create(Fu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(i,a){if(a.isKind(M.TablePartial)){let e=a.declaration;if(!(e instanceof F))return new n([]);let r=mu(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(M.Column)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(oy.getColumnDuplicateError(t,r)),s.push(oy.getColumnDuplicateError(t,n))):c.set(t,n)}}return new n(o,s)}return a.isKind(M.Column)&&E(a.declaration?.parent,r.TablePartial)?new n([]):n.create(e)},nodeReferee(a,o){if(!w(o)&&!T(o)||!nu(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):ru(o,1)?ky(a,c,o):au(o,i.Ref)?Ay(a,c,o):jy(a,c,o)},bindNode(i,a){if(!E(a,r.TablePartial))return n.create(e);let o=new Ty(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 zu?r.declaration instanceof F?new Ey(t,r,i).interpret():n.create(void 0):n.create(e)}};function ky(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Ay(e,i,a){if(!w(a))return new n(void 0);let o=bu(a)??``;if(!T(a.parentNode)){let s=a.parent;if(s instanceof F&&s.isKind(r.TablePartial)){let r=e.nodeSymbol(s).getFiltered(t);if(r){let t=e.lookupMembers(r,M.Column,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist in TablePartial '${r.name}'`,a)])}}let c=e.lookupMembers(i,M.Column,o);return c?n.create(c):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist`,a)])}let s=Ld(e,a);if(s){if(s.isKind(M.Schema)){let t=e.lookupMembers(s,[M.Table,M.Schema],o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(M.Table)){let t=e.lookupMembers(s,M.Column,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`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(T(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,M.Schema,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,M.Table,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function jy(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return kl.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(M.Enum)){let t=e.lookupMembers(a,M.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`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(T(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,M.Enum,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}const My={symbolMembers(r,i){if(!i.isKind(M.Schema)||!(i instanceof ju))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=Py(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...Fy(r,i,e))}for(let{importPath:e,node:t}of o.reuses.wildcard)s.push(...Iy(r,i,e,t,c));for(let e of o.uses.selective){let n=Py(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...Fy(r,i,e))}for(let{importPath:e,node:t}of o.uses.wildcard)s.push(...Iy(r,i,e,t,c));s.push(...c.values());let u=[...s];{let e=s.filter(e=>e.isKind(M.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(M.TableGroup)))}}for(let t of e)u.push(...Ry(r,i,t))}let d=new Set,f=u.filter(e=>{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)){let t=e instanceof Yu?e.useSpecifierDeclaration??e.declaration:e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration;t&&e.name!==void 0&&l.push(Ny(e.kind,e.name,a.join(`.`),t))}else p.set(t,e)}return new n(f,l)}};function Ny(e,t,n,r){switch(e){case M.Table:return oy.getDuplicateError(t,n,r);case M.Enum:return Zd.getDuplicateError(t,n,r);case M.TablePartial:return Dy.getDuplicateError(t,n,r);case M.TableGroup:return Sy.getDuplicateError(t,n,r);case M.DiagramView:return Ud.getDuplicateError(t,n,r);default:return new x(b.DUPLICATE_NAME,`Duplicate ${e} '${t}' in schema '${n}'`,r)}}function Py(e,r,i,a){let o=Xv(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(ju,{name:o.schemaName,parent:r},r.filepath)),n.create(void 0)}function Fy(e,n,r,i=new Set){if(r.getSymbolKind()!==M.Schema||!r.name)return[];let a=e.nodeReferee(r.name).getFiltered(t);if(!a||!a.isKind(M.Schema)||(e.nodeAlias(r).getFiltered(t)??e.nodeFullname(r).getFiltered(t)?.at(0))!==n.name)return[];let o=a.intern();if(i.has(o))return[];i.add(o);let s=e.usableMembers(a).getFiltered(t);if(!s)return[];let c=s.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Yu,{kind:t.kind,declaration:t.originalSymbol.declaration,usedSymbol:t.originalSymbol,useSpecifierDeclaration:r,name:t.name},n.filepath));for(let t of[...c])t.isKind(M.TableGroup)&&c.push(...Ry(e,n,t));for(let t of s.reuses.selective)c.push(...Fy(e,n,t,i));return c}function Iy(e,n,r,i,a,o=new Set){if(o.has(r))return[];o.add(r);let s=Ly(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(Yu,{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(ju,{name:t.name},n.filepath));let{reuses:{selective:u,wildcard:d}}=c;for(let r of u){let i=Py(e,n,r,a).getFiltered(t);i&&l.push(i),l.push(...Fy(e,n,r))}for(let{importPath:t}of d)l.push(...Iy(e,n,t,i,a,o));return l}function Ly(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 Ry(e,n,r){if(!r.isKind(M.TableGroup)||!(r instanceof Yu))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(M.TableGroupField)||!t.declaration)continue;let n=t.declaration.callee;if(!n)continue;let i=O(n);if(!i||i.length===0)continue;let a=i.length<=1?[Ml]:i.slice(0,-1);if(a.length!==o.length||!o.every((e,t)=>e===a[t]))continue;let c=t.declaration.filepath,l=zy(e,c,i);l&&s.push(e.symbolFactory.create(Yu,{kind:M.Table,declaration:l.declaration,usedSymbol:l,useSpecifierDeclaration:void 0,name:l.name},r.filepath))}return s}function zy(e,n,r){if(r.length===1){let i=e.usableMembers(n).getFiltered(t);return i?i.nonSchemaMembers.find(e=>e.isKind(M.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(M.Table)&&e.name===a)}var By=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof R)return[];let t=e.body.filter(e=>e instanceof F);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Vy=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=j(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=S(e).getValue();return this.note.headerColor=t.headercolor?.length?Tu(t.headercolor?.at(0)?.value):void 0,[]}interpretBody(e){let[t,n]=v(e.body,e=>e instanceof R);return t.length!==1||n.length>0?[new x(b.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=na(e,`callee.expression.literal.value`,``);return this.note.content=Cu(t),[]}};const Hy={nodeSymbol(i,a){return!E(a,r.Note)||!(a.parentNode instanceof Qu)?n.create(e):new n(i.symbolFactory.create(Ru,{declaration:a,name:i.nodeFullname(a).getFiltered(t)?.at(-1)},a.filepath))},symbolMembers(t,r){return r.isKind(M.StickyNote)?new n([]):n.create(e)},bindNode(t,i){return E(i,r.Note)?n.create(void 0,new By(t,i).bind()):n.create(e)},interpretSymbol(t,r,i){return r instanceof Ru?r.declaration instanceof F?new Vy(t,r,i).interpret():n.create(void 0):n.create(e)}},Uy=[sy,Qd,Pv,tf,Od,Uv,Dv,Cy,Oy,Hy,qv,My,Wd,wv];function Wy(t,...r){for(let i of Uy){let a=i[t];if(a){let t=a(...r);if(t instanceof n&&!t.hasValue(e))return t}}return n.create(e)}function Gy(r){let i=Wy(`nodeSymbol`,this,r);return i.hasValue(e)?n.create(t):i}function Ky(r){let i=Wy(`symbolMembers`,this,r);return i.hasValue(e)?n.create(t):i}function qy(r){let i=Wy(`nodeReferee`,this,r);return i.hasValue(e)?n.create(t):i}function Jy(r){let i=Wy(`bindNode`,this,r);return i.hasValue(e)?n.create(t):i}function Yy(r){let i=Wy(`nodeMetadata`,this,r);return i.hasValue(e)?n.create(t):i}function Xy(r,i){let a=Wy(`interpretSymbol`,this,r,i);return a.hasValue(e)?n.create(t):a}function Zy(r,i){let a=Wy(`interpretMetadata`,this,r,i);return a.hasValue(e)?n.create(t):a}var Qy=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 x(b.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof Qu?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 _(n)instanceof B&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof ad))&&t.push(new x(b.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=S(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 x(b.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{C(t.value)||n.push(new x(b.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const $y={validateNode(t,i){if(!E(i,r.Checks))return n.create(e);let a=new Qy(t,i);return n.create(void 0,a.validate())},nodeFullname(t,i){return E(i,r.Checks)?i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A Checks shouldn't have a name`,i.name)]):new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Checks)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Checks)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}};var eb=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 F&&this.declarationNode.parent.isKind(r.Project)?[]:[new x(b.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof z)return[new x(b.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return C(e.callee)||t.push(new x(b.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 x(b.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}};function tb(e){return e instanceof F&&!!e.type?.value}const nb={validateNode(t,r){if(!tb(r))return n.create(e);let i=new eb(t,r);return n.create(void 0,i.validate())},nodeFullname(t,r){return tb(r)?r.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A custom field shouldn't have a name`,r.name)]):new n(void 0):n.create(e)},nodeAlias(t,r){return tb(r)?r.alias?new n(void 0,[new x(b.UNEXPECTED_NAME,`A custom field shouldn't have an alias`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return tb(r)?r.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A custom field shouldn't have a setting list`,r.attributeList)]):new n({}):n.create(e)}};var rb=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 F?[new x(b.INVALID_DIAGRAMVIEW_CONTEXT,`DiagramView must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Vl(e)?[]:[new x(b.INVALID_NAME,`A DiagramView name must be a single identifier`,e)]:[new x(b.NAME_NOT_FOUND,`A DiagramView must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A DiagramView shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors(),r=t.getValue();for(let e of Object.keys(r))n.push(...r[e].map(t=>new x(b.UNEXPECTED_SETTINGS,`Unknown '${e}' setting for DiagramView`,t)));return n}validateBody(e){if(!e)return{errors:[],warnings:[]};if(e instanceof R)return{errors:[new x(b.UNEXPECTED_SIMPLE_BODY,`A DiagramView's body must be a block`,e)],warnings:[]};let[t,n]=v(e.body,e=>e instanceof R),r=this.validateSubElements(n);return{errors:[...this.validateFields(t),...r.errors],warnings:r.warnings}}validateFields(e){return e.flatMap(e=>Xl(e.callee)?e.args.length>0?e.args.map(e=>new x(b.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)):[]:[new x(b.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 x(b.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(!e.body||!(e.body instanceof z))return{errors:t,warnings:n};let r=e.body,i=r.body.some(e=>e instanceof R&&Xl(e.callee)),a=r.body.some(e=>e instanceof R&&!Xl(e.callee));return i&&a&&n.push(new Pl(b.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 z))return t;let n=e.body.body.filter(e=>e instanceof R);for(let e of n)Xl(e.callee)||(e.args.length>0||!O(e.callee))&&t.push(...e.args.map(e=>new x(b.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)));return t}};const ib={validateNode(t,i){if(!E(i,r.DiagramView))return n.create(e);let{errors:a,warnings:o}=new rb(t,i).validate();return n.create(void 0,a,o)},nodeFullname(t,i){if(E(i,r.DiagramView)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`A DiagramView must have a name`,i)]);let e=O(i.name);return e?new n(e):new n(void 0)}else if(D(i,r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewSchemas,r.DiagramViewTableGroups)){let e=O(i.callee);return e?(e.length===1&&D(i,r.DiagramViewTables)&&e.unshift(Ml),new n(e)):new n(void 0)}return new n(e)},nodeAlias(t,i){return E(i,r.DiagramView)?new n(void 0):n.create(e)}};var ab=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 F?[new x(b.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as an Enum name`,e)]:zl(e)?[]:[new x(b.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new x(b.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new x(b.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)];let t=[];for(let n of e){n.callee&&!w(n.callee)&&t.push(new x(b.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,n.callee));let e=[...n.args];_(e)instanceof B?(t.push(...this.validateFieldSettings(_(e))),e.pop()):e[0]instanceof B&&(t.push(...this.validateFieldSettings(e[0])),e.shift()),e.length>0&&t.push(...e.map(e=>new x(b.INVALID_ENUM_ELEMENT,`An Enum must have only a field and optionally a setting list`,e)))}return t}validateFieldSettings(e){let t=S(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 x(b.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new x(b.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():[])}};const ob={validateNode(t,i){return E(i,r.Enum)?n.create(void 0,new ab(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.Enum)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`An Enum must have a name`,i)]);if(!zl(i.name))return new n(void 0,[new x(b.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,i.name)]);let e=O(i.name);return e?.length===1&&e.unshift(Ml),new n(e)}if(D(i,r.Enum)){let e=A(i.callee);return new n(e===void 0?void 0:[e])}return n.create(e)},nodeAlias(t,i){return E(i,r.Enum)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.Enum)?new n(void 0):n.create(e)},nodeSettings(t,a){if(E(a,r.Enum))return a.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,a.attributeList)]):new n({});if(D(a,r.Enum)){let e=[...a.args],t;if(_(e)instanceof B?t=_(e):e[0]instanceof B&&(t=e[0]),!t)return new n({});let r=S(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 x(b.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{C(e.value)||o.push(new x(b.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new x(b.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}};var sb=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 x(b.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof Qu?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 _(n)instanceof B&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof V;)e.argumentList&&_u(e.argumentList)===void 0&&t.push(new x(b.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;_u(e)===void 0&&t.push(new x(b.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=S(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 x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{C(t.value)||n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{w(e.value)||n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const cb={validateNode(t,i){return E(i,r.Indexes)?n.create(void 0,new sb(t,i).validate()):n.create(e)},nodeFullname(t,i){return E(i,r.Indexes)?i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,i.name)]):new n(void 0):D(i,r.Indexes)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Indexes)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.Indexes)?new n(void 0):n.create(e)},nodeSettings(t,a){if(E(a,r.Indexes))return a.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,a.attributeList)]):new n({});if(D(a,r.Indexes)){let e=[a.callee,...a.args],t;if(_(e)instanceof B&&(t=_(e)),!t)return new n({});let r=S(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 x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{C(t.value)||o.push(new x(b.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 x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{w(e.value)||o.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new x(b.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}};var lb=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 Qu)&&!(e instanceof F&&e.isKind(r.Table,r.TableGroup,r.TablePartial,r.Project))?[new x(b.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 x(b.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new x(b.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new x(b.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),C(e[0].callee)||t.push(new x(b.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 x(b.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():[])}};const ub={validateNode(t,i){return E(i,r.Note)?n.create(void 0,new lb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(!E(i,r.Note))return n.create(e);if(!(i.parent instanceof Qu))return i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A Note shouldn't have a name`,i.name)]):new n(void 0);if(!i.name)return new n(void 0,[new x(b.INVALID_NAME,`Sticky note must have a name`,i)]);if(i.name instanceof ud)return new n(void 0,[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Note name`,i.name)]);let a=O(i.name);return a===void 0?new n(void 0,[new x(b.INVALID_NAME,`Invalid name for sticky note `,i)]):new n(a)},nodeAlias(t,i){return E(i,r.Note)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Note)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}};var db=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)}};const fb={validateNode(t,r){return tu(r)?n.create(void 0,new db(t,r).validate().getErrors()):n.create(e)},nodeFullname(t,r){return tu(r)?new n(void 0):n.create(e)},nodeAlias(t,r){return tu(r)?new n(void 0):n.create(e)},nodeSettings(t,r){return tu(r)?new n({}):n.create(e)}};var pb=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 F?[new x(b.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Vl(e)?new n(O(e)):new n(void 0,[new x(b.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 x(b.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]):new n(void 0)}validateSettingList(e){return e?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]):new n({})}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);return[...t.map(e=>new x(b.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():[])}};const mb={validateNode(t,i){return E(i,r.Project)?n.create(void 0,new pb(t,i).validate()):n.create(e)},nodeFullname(t,i){return E(i,r.Project)?i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):D(i,r.Project)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Project)&&i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,i.alias)]):D(i,r.Project)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Project)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,i.attributeList)]):new n({}):D(i,r.Project)?new n({}):n.create(e)}};var hb=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 Qu||e instanceof F&&e.isKind(r.Table)?[]:[new x(b.INVALID_RECORDS_CONTEXT,`Records can only appear at top-level or inside a Table`,this.declarationNode)]}validateName(e){return e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,e)]:this.declarationNode.parent instanceof Qu?this.validateTopLevelName(e):this.validateInsideTableName(e)}validateTopLevelName(e){if(!(e instanceof V))return[new x(b.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||!zl(e.callee))&&t.push(new x(b.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,e.callee||e)),(!e.argumentList||!Jl(e.argumentList))&&t.push(new x(b.INVALID_RECORDS_NAME,`Records column list must be simple column names`,e.argumentList||e)),t}validateInsideTableName(e){return e&&!Jl(e)?[new x(b.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`Records cannot have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateDataRow(e);let[t,n]=v(e.body,e=>e instanceof R);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 x(b.INVALID_RECORDS_FIELD,`Invalid record row structure`,e)),t;if(e.callee instanceof sd)for(let n of e.callee.elementList)this.isValidRecordValue(n)||t.push(new x(b.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 x(b.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 pd||Kl(e)||C(e)||e instanceof ad)return!0;if(w(e)){let t=e.expression.variable.value.toLowerCase();return kl.includes(t)}if(T(e)){let t=O(e);return t!==void 0&&t.length>0}return!1}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const gb={validateNode(t,i){return E(i,r.Records)?n.create(void 0,new hb(t,i).validate()):n.create(e)},nodeFullname(i,a){if(E(a,r.Records)){if(a.name instanceof ud)return new n(void 0,[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,a.name)]);if(a.parent instanceof Qu){if(!(a.name instanceof V))return new n(void 0,[new x(b.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||!zl(a.name.callee))&&e.push(new x(b.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,a.name.callee||a.name)),(!a.name.argumentList||!Jl(a.name.argumentList))&&e.push(new x(b.INVALID_RECORDS_NAME,`Records column list must be simple column names`,a.name.argumentList||a.name));let t=O(a.name.callee);return t?.length===1&&t.unshift(Ml),new n(t,e)}else{let e=a.parent&&i.nodeFullname(a.parent).getFiltered(t);return a.name&&!Jl(a.name)?new n(e,[new x(b.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,a.name)]):new n(e)}}return D(a,r.Records)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Records)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`Records cannot have an alias`,i.alias)]):new n(void 0):D(i,r.Records)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Records)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,i.attributeList)]):new n({}):D(i,r.Records)?new n({}):n.create(e)}};var _b=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 Qu?[]:[new x(b.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Ref name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new x(b.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 x(b.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!ou(e.callee)&&t.push(new x(b.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&ou(e.callee)){let n=gu(e.callee.leftExpression)??{variables:[],tupleElements:[]},r=n.variables.length+Math.min(n.tupleElements.length,1),i=gu(e.callee.rightExpression)??{variables:[],tupleElements:[]},a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new x(b.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new x(b.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!su(e.callee)&&t.push(new x(b.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(_(n)instanceof B){let e=this.validateFieldSettings(_(n));t.push(...e),n.pop()}else n[0]instanceof B&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new x(b.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){return yb(e).getErrors()}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};function vb(e){if(!(w(e)&&e.expression.variable.kind!==y.QUOTED_STRING)&&!(e instanceof nd))return!1;let t;if(t=e instanceof nd?du(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 yb(e){let t=S(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 x(b.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{vb(t.value)||r.push(new x(b.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 x(b.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||r.push(new x(b.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))}),o[e]=t;break;default:t.forEach(t=>r.push(new x(b.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}return new n(o,r)}const bb={validateNode(t,i){return E(i,r.Ref)?n.create(void 0,new _b(t,i).validate()):n.create(e)},nodeFullname(t,i){return E(i,r.Ref)?i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):D(i,r.Ref)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Ref)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.Ref)?new n(void 0):n.create(e)},nodeSettings(t,i){if(E(i,r.Ref))return i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,i.attributeList)]):new n({});if(D(i,r.Ref)){let e=[...i.args],t;return _(e)instanceof B?t=_(e):e[0]instanceof B&&(t=e[0]),t?yb(t):new n({})}return n.create(e)}};var xb=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 F?[new x(b.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof md?[new x(b.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Table name`,e)]:zl(e)?[]:[new x(b.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new x(b.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?Bl(e)?[]:[new x(b.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors();return Cc(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||n.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 x(b.INVALID_COLUMN,`A column must have a type`,e.callee)),w(e.callee)||t.push(new x(b.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Yl(e.args[0])&&t.push(new x(b.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?(Hl(e.callee)||t.push(new x(b.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 x(b.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t):[]};return e.flatMap(e=>e.callee instanceof L&&e.callee.op?.value===`~`?n(e):t(e))}validateFieldSetting(e){if(!e.slice(0,-1).every(Zl)||!e.slice(-1).every(e=>Zl(e)||e instanceof B))return e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let t;_(e)instanceof B&&(t=e.pop());let n=S(t),r=n.getErrors(),a=n.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(a,(e,t)=>{switch(t){case i.Note:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{C(e.value)||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&r.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||r.push(new x(b.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 ad||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new x(b.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 x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function Sb(e){let t=S(e),r=t.getErrors(),a=t.getValue();return Cc(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||r.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{C(e.value)||r.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function Cb(e){if(!e.slice(0,-1).every(Zl)||!e.slice(-1).every(e=>Zl(e)||e instanceof B))return new n({},e.map(e=>new x(b.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;_(e)instanceof B&&(t=e.pop());let r=S(t),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{C(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||a.push(new x(b.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 ad||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(o,a)}const wb={validateNode(t,i){return E(i,r.Table)?n.create(void 0,new xb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.Table)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`A Table must have a name`,i)]);if(i.name instanceof md)return new n(void 0,[new x(b.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=O(i.name);return e?.length===1&&e.unshift(Ml),new n(e)}if(D(i,r.Table)){if(Hl(i.callee)){let e=A(i.callee.expression);return new n(e?[e]:void 0)}let e=A(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return E(i,r.Table)?i.alias?Bl(i.alias)?new n(A(i.alias)):new n(void 0,[new x(b.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,i.alias)]):new n(void 0):D(i,r.Table)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Table)?i.attributeList?Sb(i.attributeList):new n({}):D(i,r.Table)?Cb(i.args.slice(1)):n.create(e)}};var Tb=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 F?[new x(b.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a TableGroup name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new x(b.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(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 x(b.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||n.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!C(e.value)).forEach(e=>{n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...t.map(t=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return n}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&O(e.callee)===void 0&&t.push(new x(b.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 x(b.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 x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function Eb(e){let t=S(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 x(b.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||r.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!C(e.value)).forEach(e=>{r.push(new x(b.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 x(b.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return new n(a,r)}const Db={validateNode(t,i){return E(i,r.TableGroup)?n.create(void 0,new Tb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.TableGroup))return i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A TableGroup name must be a single identifier`,i.name)]):new n(void 0,[new x(b.NAME_NOT_FOUND,`A TableGroup must have a name`,i)]);if(D(i,r.TableGroup)){let e=O(i.callee);return e?.length===1&&e.unshift(Ml),new n(e)}return n.create(e)},nodeAlias(t,i){return E(i,r.TableGroup)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.TableGroup)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.TableGroup)?Eb(i.attributeList):D(i,r.TableGroup)?new n({}):n.create(e)}};var Ob=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 F?[new x(b.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a TablePartial name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new x(b.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors();return Cc(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||n.push(new x(b.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 x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new x(b.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 x(b.INVALID_COLUMN,`A column must have a type`,e.callee)),w(e.callee)||t.push(new x(b.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Yl(e.args[0])&&t.push(new x(b.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=_(e);if(!e.slice(0,-1).every(Zl)||!(Zl(t)||t instanceof B))return e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let n;_(e)instanceof B&&(n=e.pop());let r=S(n),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||a.push(new x(b.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 ad||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new x(b.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 x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function kb(e){let t=S(e),r=t.getErrors(),a=t.getValue();return Cc(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||r.push(new x(b.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 x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||r.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new x(b.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function Ab(e){let t=_(e);if(e.length>0&&(!e.slice(0,-1).every(Zl)||!(Zl(t)||t instanceof B)))return new n({},e.map(e=>new x(b.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;_(e)instanceof B&&(r=e.pop());let a=S(r),o=a.getErrors(),s=a.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(s,(e,t)=>{switch(t){case i.Note:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&o.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||o.push(new x(b.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 ad||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>o.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(s,o)}const jb={validateNode(t,i){return E(i,r.TablePartial)?n.create(void 0,new Ob(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.TablePartial))return i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,i.name)]):new n(void 0,[new x(b.NAME_NOT_FOUND,`A TablePartial must have a name`,i)]);if(D(i,r.TablePartial)){let e=A(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return E(i,r.TablePartial)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,i.alias)]):new n(A(i.alias)):D(i,r.TablePartial)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.TablePartial)?kb(i.attributeList):D(i,r.TablePartial)?Ab(i.args.slice(1)):n.create(e)}};var Mb=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateBody()]}validateContext(){return this.declarationNode.parent instanceof Qu?[]:[new x(b.INVALID_USE_CONTEXT,`'use' must appear at the top level`,this.declarationNode)]}validateBody(){let e=[];if(this.declarationNode.importPath&&!Dl.isRelative(this.declarationNode.importPath.value)&&e.push(new x(b.INVALID_USE_SPECIFIER_NAME,`Import path must be a relative path (starting with './' or '../')`,this.declarationNode.importPath)),this.declarationNode.specifiers instanceof ud)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 x(b.INVALID_USE_SPECIFIER_KIND,`A use specifier must have a type (e.g. table, enum)`,e)):e.isKind(...Object.values(Ou))||t.push(new x(b.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()]}};const Nb={validateNode(t,r){return r instanceof $u?n.create(void 0,new Mb(t,r).validate()):n.create(e)},nodeFullname(t,r){if(!eu(r))return n.create(e);let i=O(r.name);return!i||i.length===0?n.create(void 0,[new x(b.INVALID_NAME,`Use specifiers must have a valid name (simple name or schema-qualified name)`,r)]):r.isKind(Ou.TableGroup)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A TableGroup name must be a simple name`,r)]):r.isKind(Ou.TablePartial)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A TablePartial name must be a simple name`,r)]):r.isKind(Ou.Note)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A Sticky note name must be a simple name`,r)]):(i.length===1&&!r.isKind(Ou.Schema)&&i.unshift(Ml),new n(i))},nodeAlias(t,r){return eu(r)?r.alias?Bl(r.alias)?new n(A(r.alias)):new n(void 0,[new x(b.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 $u?n.create({}):n.create(e)}},Pb=[wb,ob,gb,cb,$y,bb,mb,Db,jb,ub,ib,fb,Nb,nb];function Fb(t,...r){for(let n of Pb){let i=n[t];if(i){let t=i(...r);if(!t.hasValue(e))return t}}return n.create(e)}function Ib(r){let i=Fb(`validateNode`,this,r);return i.hasValue(e)?n.create(t):i}function Lb(r){let i=Fb(`nodeSettings`,this,r);return i.hasValue(e)?n.create(t):i}function Rb(r){let i=Fb(`nodeFullname`,this,r);return i.hasValue(e)?n.create(t):i}function zb(r){let i=Fb(`nodeAlias`,this,r);return i.hasValue(e)?n.create(t):i}var Bb=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Vb=typeof document<`u`&&document.location&&document.location.hash.indexOf(`pseudo=true`)>=0;function Hb(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}),Vb&&(n=`[`+n.replace(/[aouei]/g,`$&$&`)+`]`),n}function Ub(e,t,...n){return Hb(t,n)}function Wb(e){}var Gb;const Kb=`en`;var qb=!1,Jb=!1,Yb=!1,Xb=!1,Zb=!1,Qb=!1,$b=!1,ex=void 0,tx=`en`,nx=void 0;const rx=typeof self==`object`?self:typeof global==`object`?global:{};var ix=void 0;rx.vscode!==void 0&&rx.vscode.process!==void 0?ix=rx.vscode.process:typeof process<`u`&&(ix=process);var ax=typeof(Gb=ix?.versions)?.electron==`string`&&ix?.type===`renderer`;if(typeof navigator==`object`&&!ax)nx=navigator.userAgent,qb=nx.indexOf(`Windows`)>=0,Jb=nx.indexOf(`Macintosh`)>=0,(nx.indexOf(`Macintosh`)>=0||nx.indexOf(`iPad`)>=0||nx.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,Yb=nx.indexOf(`Linux`)>=0,nx?.indexOf(`Mobi`),Zb=!0,ex=(Ub({key:`ensureLoaderPluginIsLoaded`,comment:[`{Locked}`]},`_`),`en`),navigator.language;else if(typeof ix==`object`){qb=ix.platform===`win32`,Jb=ix.platform===`darwin`,Yb=ix.platform===`linux`,Yb&&ix.env.SNAP&&ix.env.SNAP_REVISION,ix.env.CI||ix.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=ix.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.`);const ox=qb,sx=Jb,cx=Zb&&typeof rx.importScripts==`function`,lx=nx,ux=typeof rx.postMessage==`function`&&!rx.importScripts,dx=(()=>{if(ux){let e=[];rx.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}),rx.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})(),fx=!!(lx&&lx.indexOf(`Chrome`)>=0),px=!!(lx&&lx.indexOf(`Firefox`)>=0),mx=!!(!fx&&lx&&lx.indexOf(`Safari`)>=0),hx=!!(lx&&lx.indexOf(`Edg/`)>=0),gx=!!(lx&&lx.indexOf(`Android`)>=0);var _x;if(rx.vscode!==void 0&&rx.vscode.process!==void 0){let e=rx.vscode.process;_x={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else _x=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 ox?`win32`:sx?`darwin`:`linux`},get arch(){},get env(){return{}},cwd(){return`/`}};const vx=_x.cwd,yx=_x.env,bx=_x.platform;var xx=65,Sx=97,Cx=90,wx=122,Tx=46,Ex=47,Dx=92,Ox=58,kx=63,Ax=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 jx(e,t){if(typeof e!=`object`||!e)throw new Ax(t,`Object`,e)}function Mx(e,t){if(typeof e!=`string`)throw new Ax(t,`string`,e)}var Nx=bx===`win32`;function q(e){return e===Ex||e===Dx}function Px(e){return e===Ex}function Fx(e){return e>=xx&&e<=Cx||e>=Sx&&e<=wx}function Ix(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=Ex;if(r(c)){if(!(o===l-1||s===1))if(s===2){if(i.length<2||a!==2||i.charCodeAt(i.length-1)!==Tx||i.charCodeAt(i.length-2)!==Tx){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===Tx&&s!==-1?++s:s=-1}return i}function Lx(e,t){jx(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}const Rx={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],Mx(a,`path`),a.length===0)continue}else t.length===0?a=vx():(a=yx[`=${t}`]||vx(),(a===void 0||a.slice(0,2).toLowerCase()!==t.toLowerCase()&&a.charCodeAt(2)===Dx)&&(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 Fx(u)&&a.charCodeAt(1)===Ox&&(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=Ix(n,!r,`\\`,q),r?`${t}\\${n}`:`${t}${n}`||`.`},normalize(e){Mx(e,`path`);let t=e.length;if(t===0)return`.`;let n=0,r,i=!1,a=e.charCodeAt(0);if(t===1)return Px(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 Fx(a)&&e.charCodeAt(1)===Ox&&(r=e.slice(0,2),n=2,t>2&&q(e.charCodeAt(2))&&(i=!0,n=3));let o=n<t?Ix(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){Mx(e,`path`);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return q(n)||t>2&&Fx(n)&&e.charCodeAt(1)===Ox&&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];Mx(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 Rx.normalize(t)},relative(e,t){if(Mx(e,`from`),Mx(t,`to`),e===t)return``;let n=Rx.resolve(e),r=Rx.resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===Dx;)i++;let a=e.length;for(;a-1>i&&e.charCodeAt(a-1)===Dx;)a--;let o=a-i,s=0;for(;s<t.length&&t.charCodeAt(s)===Dx;)s++;let c=t.length;for(;c-1>s&&t.charCodeAt(c-1)===Dx;)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===Dx&&(d=f)}if(f!==u){if(d===-1)return r}else{if(l>u){if(t.charCodeAt(s+f)===Dx)return r.slice(s+f+1);if(f===2)return r.slice(s+f)}o>u&&(e.charCodeAt(i+f)===Dx?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)===Dx)&&(p+=p.length===0?`..`:`\\..`);return s+=d,p.length>0?`${p}${r.slice(s,c)}`:(r.charCodeAt(s)===Dx&&++s,r.slice(s,c))},toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=Rx.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===Dx){if(t.charCodeAt(1)===Dx){let e=t.charCodeAt(2);if(e!==kx&&e!==Tx)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(Fx(t.charCodeAt(0))&&t.charCodeAt(1)===Ox&&t.charCodeAt(2)===Dx)return`\\\\?\\${t}`;return e},dirname(e){Mx(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 Fx(i)&&e.charCodeAt(1)===Ox&&(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&&Mx(t,`ext`),Mx(e,`path`);let n=0,r=-1,i=!0,a;if(e.length>=2&&Fx(e.charCodeAt(0))&&e.charCodeAt(1)===Ox&&(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){Mx(e,`path`);let t=0,n=-1,r=0,i=-1,a=!0,o=0;e.length>=2&&e.charCodeAt(1)===Ox&&Fx(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===Tx?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:Lx.bind(null,`\\`),parse(e){Mx(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(Fx(i)&&e.charCodeAt(1)===Ox){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===Tx?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};var zx=(()=>{if(Nx){let e=/\\/g;return()=>{let t=vx().replace(e,`/`);return t.slice(t.indexOf(`/`))}}return()=>vx()})();const Bx={resolve(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:zx();Mx(i,`path`),i.length!==0&&(t=`${i}/${t}`,n=i.charCodeAt(0)===Ex)}return t=Ix(t,!n,`/`,Px),n?`/${t}`:t.length>0?t:`.`},normalize(e){if(Mx(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ex,n=e.charCodeAt(e.length-1)===Ex;return e=Ix(e,!t,`/`,Px),e.length===0?t?`/`:n?`./`:`.`:(n&&(e+=`/`),t?`/${e}`:e)},isAbsolute(e){return Mx(e,`path`),e.length>0&&e.charCodeAt(0)===Ex},join(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];Mx(r,`path`),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:Bx.normalize(t)},relative(e,t){if(Mx(e,`from`),Mx(t,`to`),e===t||(e=Bx.resolve(e),t=Bx.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===Ex&&(o=s)}if(s===a)if(i>a){if(t.charCodeAt(1+s)===Ex)return t.slice(1+s+1);if(s===0)return t.slice(1+s)}else r>a&&(e.charCodeAt(1+s)===Ex?o=s:s===0&&(o=0));let c=``;for(s=1+o+1;s<=n;++s)(s===n||e.charCodeAt(s)===Ex)&&(c+=c.length===0?`..`:`/..`);return`${c}${t.slice(1+o)}`},toNamespacedPath(e){return e},dirname(e){if(Mx(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ex,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===Ex){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&&Mx(t,`ext`),Mx(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===Ex){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)===Ex){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){Mx(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===Ex){if(!i){n=o+1;break}continue}r===-1&&(i=!1,r=o+1),s===Tx?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:Lx.bind(null,`/`),parse(e){Mx(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===Ex,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===Ex){if(!s){a=c+1;break}continue}o===-1&&(s=!1,o=c+1),t===Tx?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};Bx.win32=Rx.win32=Rx,Bx.posix=Rx.posix=Bx;const Vx=Nx?Rx.normalize:Bx.normalize,Hx=Nx?Rx.resolve:Bx.resolve,Ux=Nx?Rx.relative:Bx.relative,Wx=Nx?Rx.dirname:Bx.dirname,Gx=Nx?Rx.basename:Bx.basename,Kx=Nx?Rx.extname:Bx.extname,qx=Nx?Rx.sep:Bx.sep;var Jx=/^\w[\w\d+.-]*$/,Yx=/^\//,Xx=/^\/\//;function Zx(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&&!Jx.test(e.scheme))throw Error(`[UriError]: Scheme contains illegal characters.`);if(e.path){if(e.authority){if(!Yx.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(Xx.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 Qx(e,t){return!e&&!t?`file`:e}function $x(e,t){switch(e){case`https`:case`http`:case`file`:t?t[0]!==eS&&(t=eS+t):t=eS;break}return t}var J=``,eS=`/`,tS=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,nS=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=Qx(e,a),this.authority=t||J,this.path=$x(this.scheme,n||J),this.query=r||J,this.fragment=i||J,Zx(this,a))}get fsPath(){return cS(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 iS(t,n,r,i,a)}static parse(e,t=!1){let n=tS.exec(e);return n?new iS(n[2]||J,fS(n[4]||J),fS(n[5]||J),fS(n[7]||J),fS(n[9]||J),t):new iS(J,J,J,J,J)}static file(e){let t=J;if(ox&&(e=e.replace(/\\/g,eS)),e[0]===eS&&e[1]===eS){let n=e.indexOf(eS,2);n===-1?(t=e.substring(2),e=eS):(t=e.substring(2,n),e=e.substring(n)||eS)}return new iS(`file`,t,e,J,J)}static from(e,t){return new iS(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=ox&&t.scheme===`file`?e.file(Rx.join(cS(t,!0),...n)).path:Bx.join(t.path,...n),t.with({path:r})}toString(e=!1){return lS(this,e)}toJSON(){return this}static revive(t){if(t){if(t instanceof e)return t;{let e=new iS(t);return e._formatted=t.external??null,e._fsPath=t._sep===rS?t.fsPath??null:null,e}}else return t}},rS=ox?1:void 0,iS=class extends nS{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||=cS(this,!1),this._fsPath}toString(e=!1){return e?lS(this,!0):(this._formatted||=lS(this,!1),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=rS),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}},aS={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 oS(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=aS[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 sS(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+=aS[r]):t!==void 0&&(t+=e[n])}return t===void 0?e:t}function cS(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,ox&&(n=n.replace(/\//g,`\\`)),n}function lS(e,t){let n=t?sS:oS,r=``,{scheme:i,authority:a,path:o,query:s,fragment:c}=e;if(i&&(r+=i,r+=`:`),(a||i===`file`)&&(r+=eS,r+=eS),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:oS(c,!1,!1)),r}function uS(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+uS(e.substr(3)):e}}var dS=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function fS(e){return e.match(dS)?e.replace(dS,e=>uS(e)):e}let 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}({}),pS=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 mS(e,t){return e.getOffsetAt(t)}function hS(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 gS=class{constructor(e){this.compiler=e}provideDefinition(e,n){let{uri:r}=e,i=Dl.fromUri(String(e.uri)),a=mS(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);if(n.hasValue(t))continue;let i=n.getValue();if(!i)continue;let a;if(i.declaration&&[P.PRIMARY_EXPRESSION,P.VARIABLE].includes(e.kind)&&({declaration:a}=i),a){let{startPos:e,endPos:t}=a,n=r;return r&&a.filepath&&(n=nS.parse(a.filepath.toUri())),[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}]}}return[]}},_S=class{constructor(e){this.compiler=e}provideDiagnostics(e){return[...this.provideErrors(e),...this.provideWarnings(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`))}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`?pS.Error:pS.Warning}},vS=class{constructor(e){this.compiler=e}provideReferences(e,n){let{uri:r}=e,i=Dl.fromUri(String(r)),a=mS(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=nS.parse(e.filepath.toUri())),{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 yS(e,t){return e>=t.start&&e<t.end}function bS(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 xS(e,t,n){let r=[],i=e.parseFile(t).getValue()?.ast;if(!i)return r;for(let e of i.uses){let t=e.importPath?.value??``;if(!t){let r=e.useKeyword?.start??e.fullStart,i=n.lastIndexOf(`
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 gy(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`'${hy(e)}'`;let{value:t,type:n}=e;if(t==null||yf(n)&&typeof t==`string`&&t.toLowerCase()===`null`)return`null`;if(n===`expression`)return typeof t==`string`&&t.toLowerCase().trim()===`null`?`null`:`\`${t}\``;if(yf(n)){let e=G_(t);return e===null?`\`${t}\``:e?`true`:`false`}if(vf(n)){let e=V_(t);return e===null?`\`${t}\``:String(e)}if(Sf(n)){let e=Z_(t);return e===null?`\`${t}\``:`'${hy(e)}'`}let r=q_(t);return r===null?`\`${t}\``:`'${hy(r)}'`}function _y(e){return(e.match(/"(?:[^"\\]|\\.)*"|[^."]+/g)||[]).map(e=>e.startsWith(`"`)&&e.endsWith(`"`)?my(e.slice(1,-1)):e.trim()).filter(e=>e.length>0)}function vy(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 yy(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 ju&&n.isKind(M.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 by=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.bindFields(t),...this.bindSubElements(n)]}bindFields(e){return e.flatMap(e=>e.callee?[e.callee,...e.args].flatMap(Id).flatMap(e=>{let n=e.variables.pop();if(!n)return[];let r=this.compiler.nodeReferee(n),i=r.getFiltered(t);return i instanceof Yu?[...r.getErrors(),new x(b.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():[])}},xy=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=j(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}=wu(e);return r.length>=2&&(this.tableGroup.name=n,this.tableGroup.schemaName=r.join(`.`),t.push(new x(b.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]=v(e.body,e=>e instanceof R);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case`note`:this.tableGroup.note={value:Cu(k(e.body instanceof z?e.body.body[0].callee:e.body.callee)),token:j(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(M.Table)){let{name:e,schema:t}=r.interpretedName(this.compiler,this.filepath);return{name:e,schemaName:t}}let i=O(e.callee);return i.length>2&&n.push(new x(b.UNSUPPORTED,`Nested schema is not supported`,e)),{name:i.pop(),schemaName:i.join(`.`)||null}}),n}interpretSettingList(e){let t=S(e).getValue();this.tableGroup.color=t.color?.length?Tu(t.color?.at(0)?.value):void 0;let[n]=t.note||[];return this.tableGroup.note=n&&{value:Cu(k(n?.value)),token:j(n)},[]}};const Sy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`TableGroup '${e}' already exists in schema '${t}'`,n)},getFieldDuplicateError(e,t){return new x(b.DUPLICATE_NAME,`Duplicate TableGroupField '${e}'`,t)}},Cy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t),s=o?.at(-1);return E(a,r.TableGroup)?new n(i.symbolFactory.create(Iu,{declaration:a,name:s},a.filepath)):D(a,r.TableGroup)?new n(i.symbolFactory.create(Lu,{declaration:a,name:o?.map(py).join(`.`)},a.filepath)):n.create(e)},symbolMembers(r,i){if(i.isKind(M.TableGroup)){let e=i.declaration;if(!(e instanceof F))return new n([]);let a=mu(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(M.TableGroupField)||!e.declaration)continue;let t=`${e.kind}:${e.name}`;if(e.name!==void 0){let n=e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(Sy.getFieldDuplicateError(e.name,r)),s.push(Sy.getFieldDuplicateError(e.name,n))):c.set(t,n)}}return new n(o,s)}return i.isKind(M.TableGroupField)?new n([]):n.create(e)},nodeReferee(i,a){if(!w(a)||!nu(a,r.TableGroup)||a.parent&&iu(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):wy(i,s,a)},bindNode(i,a){if(!E(a,r.TableGroup))return n.create(e);let o=new by(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!E(o,r.TableGroup)||!(i instanceof Iu)?n.create(e):Fd(t,o)?new xy(t,i,a).interpret():n.create(void 0)}};function wy(e,r,i){let a=bu(i)??``;if(!T(i.parentNode)){let o=e.symbolMembers(r).getFiltered(t);if(o){let t=o.find(e=>e instanceof ju&&e.isPublicSchema());if(t){let r=e.lookupMembers(t,M.Table,a);if(r)return n.create(r)}}let s=e.lookupMembers(r,M.Table,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Table '${a}' does not exist in Schema 'public'`,i)])}let o=Ld(e,i);if(o){if(o.isKind(M.Schema)){let t=e.lookupMembers(o,[M.Table,M.Schema],a);return t?n.create(t):new n(void 0,[new x(b.BINDING_ERROR,`Table or schema '${a}' does not exist`,i)])}return new n(void 0)}let s=e.lookupMembers(r,M.Schema,a);return s?n.create(s):new n(void 0,[new x(b.BINDING_ERROR,`Schema '${a}' does not exist`,i)])}var Ty=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.declarationNode.body instanceof z?this.bindBody(this.declarationNode.body):[]}bindBody(e){if(!e)return[];if(e instanceof R)return this.bindFields([e]);let[t,n]=v(e.body,e=>e instanceof R);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(_(n)instanceof B){let e=S(_(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=gu(e);if(!t)return[];let n=t.variables.pop();return n?this.compiler.nodeReferee(n).getErrors():[]}bindInlineRef(e){return Id(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():[])}},Ey=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??j(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}=wu(e);return this.tablePartial.name=t,[]}interpretSettingList(e){let t=S(e).getValue(),n=hc(t[i.HeaderColor]);this.tablePartial.headerColor=n?Tu(n.value):void 0;let[r]=t[i.Note]||[];return this.tablePartial.note=r&&{value:k(r?.value)?Cu(k(r?.value)):``,token:j(r)},[]}interpretBody(e){let[t,n]=v(e.body,e=>e instanceof R);return[...this.interpretFields(t),...this.interpretSubElements(n)]}interpretSubElements(e){return e.flatMap(e=>{switch(e.type?.value.toLowerCase()){case r.Note:return this.tablePartial.note={value:Cu(k(e.body instanceof z?e.body.body[0].callee:e.body.callee)),token:j(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=bu(e.callee)??``,r.token=j(e);let o=Du(this.compiler,e.args[0]);r.type=o.getValue(),n.push(...o.getErrors()),r.pk=a?.pk(this.compiler)||void 0,r.unique=a?.unique(this.compiler)||void 0,r.increment=a?.increment(this.compiler)||void 0;let s=a?.nullable(this.compiler);r.not_null=s===void 0?void 0:!s,r.dbdefault=a?.default(this.compiler),r.note=a?.note(this.compiler);let c=this.compiler.nodeSettings(e).getFiltered(t)??{},l=this.compiler.parseFile(this.filepath).getValue().ast,u=this.compiler.nodeSymbol(l).getFiltered(t);return r.inline_refs=(c[i.Ref]||[]).flatMap(e=>{let n=this.compiler.nodeMetadata(e).getFiltered(t);if(!(n instanceof yd))return[];let r=n.owners(this.compiler);if(u&&r.length>0&&!r.some(e=>e===u))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:j(n.rightToken())}}),r.checks=(c[i.Check]||[]).map(e=>({token:j(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()}};const Dy={getDuplicateError(e,t,n){return new x(b.DUPLICATE_NAME,`TablePartial '${e}' already exists in schema '${t}'`,n)}},Oy={nodeSymbol(i,a){let o=i.nodeFullname(a).getFiltered(t)?.at(-1);return E(a,r.TablePartial)?new n(i.symbolFactory.create(zu,{declaration:a,name:o},a.filepath)):D(a,r.TablePartial)?new n(i.symbolFactory.create(Fu,{declaration:a,name:o},a.filepath)):n.create(e)},symbolMembers(i,a){if(a.isKind(M.TablePartial)){let e=a.declaration;if(!(e instanceof F))return new n([]);let r=mu(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(M.Column)||!e.declaration)continue;let t=e.name;if(t!==void 0){let n=e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration,r=c.get(t);r?(s.push(oy.getColumnDuplicateError(t,r)),s.push(oy.getColumnDuplicateError(t,n))):c.set(t,n)}}return new n(o,s)}return a.isKind(M.Column)&&E(a.declaration?.parent,r.TablePartial)?new n([]):n.create(e)},nodeReferee(a,o){if(!w(o)&&!T(o)||!nu(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):ru(o,1)?ky(a,c,o):au(o,i.Ref)?Ay(a,c,o):jy(a,c,o)},bindNode(i,a){if(!E(a,r.TablePartial))return n.create(e);let o=new Ty(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 zu?r.declaration instanceof F?new Ey(t,r,i).interpret():n.create(void 0):n.create(e)}};function ky(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}return new n(void 0)}if(r.parentNode.leftExpression===r){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}function Ay(e,i,a){if(!w(a))return new n(void 0);let o=bu(a)??``;if(!T(a.parentNode)){let s=a.parent;if(s instanceof F&&s.isKind(r.TablePartial)){let r=e.nodeSymbol(s).getFiltered(t);if(r){let t=e.lookupMembers(r,M.Column,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist in TablePartial '${r.name}'`,a)])}}let c=e.lookupMembers(i,M.Column,o);return c?n.create(c):new n(void 0,[new x(b.NAME_NOT_FOUND,`Column '${o}' does not exist`,a)])}let s=Ld(e,a);if(s){if(s.isKind(M.Schema)){let t=e.lookupMembers(s,[M.Table,M.Schema],o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table or schema '${o}' does not exist`,a)])}if(s.isKind(M.Table)){let t=e.lookupMembers(s,M.Column,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`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(T(c.parentNode)&&c.parentNode.leftExpression===c){let t=e.lookupMembers(i,M.Schema,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${o}' does not exist in Schema 'public'`,a)])}let t=e.lookupMembers(i,M.Table,o);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Table '${o}' does not exist in Schema 'public'`,a)])}return new n(void 0)}function jy(e,t,r){if(!w(r))return new n(void 0);let i=bu(r)??``;if(!T(r.parentNode))return kl.includes(i.toLowerCase())?new n(void 0):n.create(e.lookupMembers(t,M.Enum,i));let a=Ld(e,r);if(a){if(a.isKind(M.Schema)){let t=e.lookupMembers(a,[M.Enum,M.Schema],i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum or schema '${i}' does not exist`,r)])}if(a.isKind(M.Enum)){let t=e.lookupMembers(a,M.EnumField,i);return t?n.create(t):new n(void 0,[new x(b.NAME_NOT_FOUND,`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(T(o.parentNode)&&o.parentNode.leftExpression===o){let a=e.lookupMembers(t,M.Schema,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Schema '${i}' does not exist in Schema 'public'`,r)])}let a=e.lookupMembers(t,M.Enum,i);return a?n.create(a):new n(void 0,[new x(b.NAME_NOT_FOUND,`Enum '${i}' does not exist in Schema 'public'`,r)])}return new n(void 0)}const My={symbolMembers(r,i){if(!i.isKind(M.Schema)||!(i instanceof ju))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=Py(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...Fy(r,i,e))}for(let{importPath:e,node:t}of o.reuses.wildcard)s.push(...Iy(r,i,e,t,c));for(let e of o.uses.selective){let n=Py(r,i,e,c);l.push(...n.getErrors());let a=n.getFiltered(t);a&&s.push(a),s.push(...Fy(r,i,e))}for(let{importPath:e,node:t}of o.uses.wildcard)s.push(...Iy(r,i,e,t,c));s.push(...c.values());let u=[...s];{let e=s.filter(e=>e.isKind(M.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(M.TableGroup)))}}for(let t of e)u.push(...Ry(r,i,t))}let d=new Set,f=u.filter(e=>{if(e instanceof Yu&&e.isKind(M.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(M.Schema))continue;let t=e instanceof Yu?e.useSpecifierDeclaration??e.declaration:e.declaration instanceof F&&e.declaration.name?e.declaration.name:e.declaration;t&&e.name!==void 0&&l.push(Ny(e.kind,e.name,a.join(`.`),t))}else p.set(t,e)}return new n(f,l)}};function Ny(e,t,n,r){switch(e){case M.Table:return oy.getDuplicateError(t,n,r);case M.Enum:return Zd.getDuplicateError(t,n,r);case M.TablePartial:return Dy.getDuplicateError(t,n,r);case M.TableGroup:return Sy.getDuplicateError(t,n,r);case M.DiagramView:return Ud.getDuplicateError(t,n,r);default:return new x(b.DUPLICATE_NAME,`Duplicate ${e} '${t}' in schema '${n}'`,r)}}function Py(e,r,i,a){let o=Xv(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(ju,{name:o.schemaName,parent:r},r.filepath)),n.create(void 0)}function Fy(e,n,r,i=new Set){if(r.getSymbolKind()!==M.Schema||!r.name)return[];let a=e.nodeReferee(r.name).getFiltered(t);if(!a||!a.isKind(M.Schema)||(e.nodeAlias(r).getFiltered(t)??e.nodeFullname(r).getFiltered(t)?.at(0))!==n.name)return[];let o=a.intern();if(i.has(o))return[];i.add(o);let s=e.usableMembers(a).getFiltered(t);if(!s)return[];let c=s.nonSchemaMembers.filter(e=>e.canBeImported).map(t=>e.symbolFactory.create(Yu,{kind:t.kind,declaration:t.originalSymbol.declaration,usedSymbol:t.originalSymbol,useSpecifierDeclaration:r,name:t.name},n.filepath));for(let t of[...c])t.isKind(M.TableGroup)&&c.push(...Ry(e,n,t));for(let t of s.reuses.selective)c.push(...Fy(e,n,t,i));return c}function Iy(e,n,r,i,a,o=new Set){if(o.has(r))return[];o.add(r);let s=Ly(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(Yu,{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(ju,{name:t.name},n.filepath));let{reuses:{selective:u,wildcard:d}}=c;for(let r of u){let i=Py(e,n,r,a).getFiltered(t);i&&l.push(i),l.push(...Fy(e,n,r))}for(let{importPath:t}of d)l.push(...Iy(e,n,t,i,a,o));return l}function Ly(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 Ry(e,n,r){if(!r.isKind(M.TableGroup)||!(r instanceof Yu))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(M.TableGroupField)||!t.declaration)continue;let n=t.declaration.callee;if(!n)continue;let i=O(n);if(!i||i.length===0)continue;let a=i.length<=1?[Ml]:i.slice(0,-1);if(a.length!==o.length||!o.every((e,t)=>e===a[t]))continue;let c=t.declaration.filepath,l=zy(e,c,i);l&&s.push(e.symbolFactory.create(Yu,{kind:M.Table,declaration:l.declaration,usedSymbol:l,useSpecifierDeclaration:void 0,name:l.name},r.filepath))}return s}function zy(e,n,r){if(r.length===1){let i=e.usableMembers(n).getFiltered(t);return i?i.nonSchemaMembers.find(e=>e.isKind(M.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(M.Table)&&e.name===a)}var By=class{constructor(e,t){this.compiler=e,this.declarationNode=t}bind(){return this.bindBody(this.declarationNode.body)}bindBody(e){if(!e||e instanceof R)return[];let t=e.body.filter(e=>e instanceof F);return this.bindSubElements(t)}bindSubElements(e){return e.flatMap(e=>e.type?this.compiler.bindNode(e).getErrors():[])}},Vy=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=j(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=S(e).getValue();return this.note.headerColor=t.headercolor?.length?Tu(t.headercolor?.at(0)?.value):void 0,[]}interpretBody(e){let[t,n]=v(e.body,e=>e instanceof R);return t.length!==1||n.length>0?[new x(b.INVALID_NOTE,`Invalid note syntax`,e)]:[...this.interpretNote(t[0])]}interpretNote(e){let t=na(e,`callee.expression.literal.value`,``);return this.note.content=Cu(t),[]}};const Hy={nodeSymbol(i,a){return!E(a,r.Note)||!(a.parentNode instanceof Qu)?n.create(e):new n(i.symbolFactory.create(Ru,{declaration:a,name:i.nodeFullname(a).getFiltered(t)?.at(-1)},a.filepath))},symbolMembers(t,r){return r.isKind(M.StickyNote)?new n([]):n.create(e)},bindNode(t,i){return E(i,r.Note)?n.create(void 0,new By(t,i).bind()):n.create(e)},interpretSymbol(t,r,i){return r instanceof Ru?r.declaration instanceof F?new Vy(t,r,i).interpret():n.create(void 0):n.create(e)}},Uy=[sy,Qd,Pv,tf,Od,Uv,Dv,Cy,Oy,Hy,qv,My,Wd,wv];function Wy(t,...r){for(let i of Uy){let a=i[t];if(a){let t=a(...r);if(t instanceof n&&!t.hasValue(e))return t}}return n.create(e)}function Gy(r){let i=Wy(`nodeSymbol`,this,r);return i.hasValue(e)?n.create(t):i}function Ky(r){let i=Wy(`symbolMembers`,this,r);return i.hasValue(e)?n.create(t):i}function qy(r){let i=Wy(`nodeReferee`,this,r);return i.hasValue(e)?n.create(t):i}function Jy(r){let i=Wy(`bindNode`,this,r);return i.hasValue(e)?n.create(t):i}function Yy(r){let i=Wy(`nodeMetadata`,this,r);return i.hasValue(e)?n.create(t):i}function Xy(r,i){let a=Wy(`interpretSymbol`,this,r,i);return a.hasValue(e)?n.create(t):a}function Zy(r,i){let a=Wy(`interpretMetadata`,this,r,i);return a.hasValue(e)?n.create(t):a}var Qy=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 x(b.INVALID_CHECKS_CONTEXT,`A Checks can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof Qu?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`A Checks shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Checks must have a complex body`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 _(n)instanceof B&&t.push(...this.validateFieldSetting(n.pop())),(n.length>1||!(n[0]instanceof ad))&&t.push(new x(b.INVALID_CHECKS_FIELD,`A check field must be a function expression`,e)),t})}validateFieldSetting(e){let t=S(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 x(b.DUPLICATE_CHECK_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{C(t.value)||n.push(new x(b.INVALID_CHECK_SETTING_VALUE,`'${e}' must be a string`,t))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_CHECK_SETTING,`Unknown check setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const $y={validateNode(t,i){if(!E(i,r.Checks))return n.create(e);let a=new Qy(t,i);return n.create(void 0,a.validate())},nodeFullname(t,i){return E(i,r.Checks)?i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A Checks shouldn't have a name`,i.name)]):new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Checks)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Checks shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Checks)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Checks shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}};var eb=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 F&&this.declarationNode.parent.isKind(r.Project)?[]:[new x(b.INVALID_CUSTOM_CONTEXT,`A Custom element can only appear in a Project`,this.declarationNode)]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`A Custom element shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_NAME,`A Custom element shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Custom element shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof z)return[new x(b.UNEXPECTED_COMPLEX_BODY,`A Custom element can only have an inline field`,e)];let t=[];return C(e.callee)||t.push(new x(b.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 x(b.INVALID_CUSTOM_ELEMENT_VALUE,`A Custom element value can only be a string`,e))),t}};function tb(e){return e instanceof F&&!!e.type?.value}const nb={validateNode(t,r){if(!tb(r))return n.create(e);let i=new eb(t,r);return n.create(void 0,i.validate())},nodeFullname(t,r){return tb(r)?r.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A custom field shouldn't have a name`,r.name)]):new n(void 0):n.create(e)},nodeAlias(t,r){return tb(r)?r.alias?new n(void 0,[new x(b.UNEXPECTED_NAME,`A custom field shouldn't have an alias`,r.alias)]):new n(void 0):n.create(e)},nodeSettings(t,r){return tb(r)?r.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A custom field shouldn't have a setting list`,r.attributeList)]):new n({}):n.create(e)}};var rb=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 F?[new x(b.INVALID_DIAGRAMVIEW_CONTEXT,`DiagramView must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Vl(e)?[]:[new x(b.INVALID_NAME,`A DiagramView name must be a single identifier`,e)]:[new x(b.NAME_NOT_FOUND,`A DiagramView must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A DiagramView shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors(),r=t.getValue();for(let e of Object.keys(r))n.push(...r[e].map(t=>new x(b.UNEXPECTED_SETTINGS,`Unknown '${e}' setting for DiagramView`,t)));return n}validateBody(e){if(!e)return{errors:[],warnings:[]};if(e instanceof R)return{errors:[new x(b.UNEXPECTED_SIMPLE_BODY,`A DiagramView's body must be a block`,e)],warnings:[]};let[t,n]=v(e.body,e=>e instanceof R),r=this.validateSubElements(n);return{errors:[...this.validateFields(t),...r.errors],warnings:r.warnings}}validateFields(e){return e.flatMap(e=>Xl(e.callee)?e.args.length>0?e.args.map(e=>new x(b.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)):[]:[new x(b.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 x(b.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(!e.body||!(e.body instanceof z))return{errors:t,warnings:n};let r=e.body,i=r.body.some(e=>e instanceof R&&Xl(e.callee)),a=r.body.some(e=>e instanceof R&&!Xl(e.callee));return i&&a&&n.push(new Pl(b.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 z))return t;let n=e.body.body.filter(e=>e instanceof R);for(let e of n)Xl(e.callee)||(e.args.length>0||!O(e.callee))&&t.push(...e.args.map(e=>new x(b.INVALID_DIAGRAMVIEW_FIELD,`DiagramView field should only have a single name`,e)));return t}};const ib={validateNode(t,i){if(!E(i,r.DiagramView))return n.create(e);let{errors:a,warnings:o}=new rb(t,i).validate();return n.create(void 0,a,o)},nodeFullname(t,i){if(E(i,r.DiagramView)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`A DiagramView must have a name`,i)]);let e=O(i.name);return e?new n(e):new n(void 0)}else if(D(i,r.DiagramViewTables,r.DiagramViewNotes,r.DiagramViewSchemas,r.DiagramViewTableGroups)){let e=O(i.callee);return e?(e.length===1&&D(i,r.DiagramViewTables)&&e.unshift(Ml),new n(e)):new n(void 0)}return new n(e)},nodeAlias(t,i){return E(i,r.DiagramView)?new n(void 0):n.create(e)}};var ab=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 F?[new x(b.INVALID_PROJECT_CONTEXT,`An Enum can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as an Enum name`,e)]:zl(e)?[]:[new x(b.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,e)]:[new x(b.NAME_NOT_FOUND,`An Enum must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new x(b.EMPTY_ENUM,`An Enum must have at least one element`,this.declarationNode)];let t=[];for(let n of e){n.callee&&!w(n.callee)&&t.push(new x(b.INVALID_ENUM_ELEMENT_NAME,`An enum field must be an identifier or a quoted identifier`,n.callee));let e=[...n.args];_(e)instanceof B?(t.push(...this.validateFieldSettings(_(e))),e.pop()):e[0]instanceof B&&(t.push(...this.validateFieldSettings(e[0])),e.shift()),e.length>0&&t.push(...e.map(e=>new x(b.INVALID_ENUM_ELEMENT,`An Enum must have only a field and optionally a setting list`,e)))}return t}validateFieldSettings(e){let t=S(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 x(b.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))});break;default:t.forEach(t=>n.push(new x(b.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():[])}};const ob={validateNode(t,i){return E(i,r.Enum)?n.create(void 0,new ab(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.Enum)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`An Enum must have a name`,i)]);if(!zl(i.name))return new n(void 0,[new x(b.INVALID_NAME,`An Enum name must be of the form <enum> or <schema>.<enum>`,i.name)]);let e=O(i.name);return e?.length===1&&e.unshift(Ml),new n(e)}if(D(i,r.Enum)){let e=A(i.callee);return new n(e===void 0?void 0:[e])}return n.create(e)},nodeAlias(t,i){return E(i,r.Enum)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`An Enum shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.Enum)?new n(void 0):n.create(e)},nodeSettings(t,a){if(E(a,r.Enum))return a.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`An Enum shouldn't have a setting list`,a.attributeList)]):new n({});if(D(a,r.Enum)){let e=[...a.args],t;if(_(e)instanceof B?t=_(e):e[0]instanceof B&&(t=e[0]),!t)return new n({});let r=S(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 x(b.DUPLICATE_ENUM_ELEMENT_SETTING,`'note' can only appear once`,e))),t.forEach(e=>{C(e.value)||o.push(new x(b.INVALID_ENUM_ELEMENT_SETTING,`'note' must be a string`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new x(b.UNKNOWN_ENUM_ELEMENT_SETTING,`Unknown enum field setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}};var sb=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 x(b.INVALID_INDEXES_CONTEXT,`An Indexes can only appear inside a Table or a TablePartial`,this.declarationNode);return this.declarationNode.parent instanceof Qu?[e]:this.declarationNode.parent?.isKind(r.Table,r.TablePartial)?[]:[e]}validateName(e){return e?[new x(b.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`An Indexes must have a complex body`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 _(n)instanceof B&&t.push(...this.validateFieldSetting(n.pop())),n.forEach(e=>{for(;e instanceof V;)e.argumentList&&_u(e.argumentList)===void 0&&t.push(new x(b.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;_u(e)===void 0&&t.push(new x(b.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=S(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 x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{C(t.value)||n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must be a string`,t))});break;case`unique`:case`pk`:t.length>1&&t.forEach(t=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'${e}' must not have a value`,t))});break;case`type`:t.length>1&&t.forEach(e=>n.push(new x(b.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{w(e.value)||n.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))});break;default:t.forEach(t=>n.push(new x(b.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return n}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const cb={validateNode(t,i){return E(i,r.Indexes)?n.create(void 0,new sb(t,i).validate()):n.create(e)},nodeFullname(t,i){return E(i,r.Indexes)?i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`An Indexes shouldn't have a name`,i.name)]):new n(void 0):D(i,r.Indexes)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Indexes)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`An Indexes shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.Indexes)?new n(void 0):n.create(e)},nodeSettings(t,a){if(E(a,r.Indexes))return a.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`An Indexes shouldn't have a setting list`,a.attributeList)]):new n({});if(D(a,r.Indexes)){let e=[a.callee,...a.args],t;if(_(e)instanceof B&&(t=_(e)),!t)return new n({});let r=S(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 x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{C(t.value)||o.push(new x(b.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 x(b.DUPLICATE_INDEX_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{t.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_INDEX_SETTING,`'type' can only appear once`,e))),t.forEach(e=>{w(e.value)||o.push(new x(b.INVALID_INDEX_SETTING_VALUE,`'type' must be "btree" or "hash"`,e))}),c[e]=t;break;default:t.forEach(t=>o.push(new x(b.UNKNOWN_INDEX_SETTING,`Unknown index setting '${e}'`,t)))}return new n(c,o)}return n.create(e)}};var lb=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 Qu)&&!(e instanceof F&&e.isKind(r.Table,r.TableGroup,r.TablePartial,r.Project))?[new x(b.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 x(b.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){let t=[];return e.length===0?[new x(b.EMPTY_NOTE,`A Note must have a content`,this.declarationNode)]:(e.length>1&&e.slice(1).forEach(e=>t.push(new x(b.NOTE_CONTENT_REDEFINED,`A Note can only contain one string`,e))),C(e[0].callee)||t.push(new x(b.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 x(b.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():[])}};const ub={validateNode(t,i){return E(i,r.Note)?n.create(void 0,new lb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(!E(i,r.Note))return n.create(e);if(!(i.parent instanceof Qu))return i.name?new n(void 0,[new x(b.UNEXPECTED_NAME,`A Note shouldn't have a name`,i.name)]):new n(void 0);if(!i.name)return new n(void 0,[new x(b.INVALID_NAME,`Sticky note must have a name`,i)]);if(i.name instanceof ud)return new n(void 0,[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Note name`,i.name)]);let a=O(i.name);return a===void 0?new n(void 0,[new x(b.INVALID_NAME,`Invalid name for sticky note `,i)]):new n(a)},nodeAlias(t,i){return E(i,r.Note)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Note shouldn't have an alias`,i.alias)]):new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Note)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Note shouldn't have a setting list`,i.attributeList)]):new n({}):n.create(e)}};var db=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)}};const fb={validateNode(t,r){return tu(r)?n.create(void 0,new db(t,r).validate().getErrors()):n.create(e)},nodeFullname(t,r){return tu(r)?new n(void 0):n.create(e)},nodeAlias(t,r){return tu(r)?new n(void 0):n.create(e)},nodeSettings(t,r){return tu(r)?new n({}):n.create(e)}};var pb=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 F?[new x(b.INVALID_PROJECT_CONTEXT,`A Project can only appear top-level`,this.declarationNode)]:[]}validateName(e){return e?Vl(e)?new n(O(e)):new n(void 0,[new x(b.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 x(b.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,e)]):new n(void 0)}validateSettingList(e){return e?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,e)]):new n({})}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Project's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);return[...t.map(e=>new x(b.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():[])}};const mb={validateNode(t,i){return E(i,r.Project)?n.create(void 0,new pb(t,i).validate()):n.create(e)},nodeFullname(t,i){return E(i,r.Project)?i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A Project's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):D(i,r.Project)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Project)&&i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Project shouldn't have an alias`,i.alias)]):D(i,r.Project)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Project)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Project shouldn't have a setting list`,i.attributeList)]):new n({}):D(i,r.Project)?new n({}):n.create(e)}};var hb=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 Qu||e instanceof F&&e.isKind(r.Table)?[]:[new x(b.INVALID_RECORDS_CONTEXT,`Records can only appear at top-level or inside a Table`,this.declarationNode)]}validateName(e){return e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,e)]:this.declarationNode.parent instanceof Qu?this.validateTopLevelName(e):this.validateInsideTableName(e)}validateTopLevelName(e){if(!(e instanceof V))return[new x(b.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||!zl(e.callee))&&t.push(new x(b.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,e.callee||e)),(!e.argumentList||!Jl(e.argumentList))&&t.push(new x(b.INVALID_RECORDS_NAME,`Records column list must be simple column names`,e.argumentList||e)),t}validateInsideTableName(e){return e&&!Jl(e)?[new x(b.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`Records cannot have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateDataRow(e);let[t,n]=v(e.body,e=>e instanceof R);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 x(b.INVALID_RECORDS_FIELD,`Invalid record row structure`,e)),t;if(e.callee instanceof sd)for(let n of e.callee.elementList)this.isValidRecordValue(n)||t.push(new x(b.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 x(b.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 pd||Kl(e)||C(e)||e instanceof ad)return!0;if(w(e)){let t=e.expression.variable.value.toLowerCase();return kl.includes(t)}if(T(e)){let t=O(e);return t!==void 0&&t.length>0}return!1}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};const gb={validateNode(t,i){return E(i,r.Records)?n.create(void 0,new hb(t,i).validate()):n.create(e)},nodeFullname(i,a){if(E(a,r.Records)){if(a.name instanceof ud)return new n(void 0,[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Records name`,a.name)]);if(a.parent instanceof Qu){if(!(a.name instanceof V))return new n(void 0,[new x(b.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||!zl(a.name.callee))&&e.push(new x(b.INVALID_RECORDS_NAME,`Records table reference must be a valid table name`,a.name.callee||a.name)),(!a.name.argumentList||!Jl(a.name.argumentList))&&e.push(new x(b.INVALID_RECORDS_NAME,`Records column list must be simple column names`,a.name.argumentList||a.name));let t=O(a.name.callee);return t?.length===1&&t.unshift(Ml),new n(t,e)}else{let e=a.parent&&i.nodeFullname(a.parent).getFiltered(t);return a.name&&!Jl(a.name)?new n(e,[new x(b.INVALID_RECORDS_NAME,`Records inside a Table can only have a column list like (col1, col2, ...)`,a.name)]):new n(e)}}return D(a,r.Records)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Records)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`Records cannot have an alias`,i.alias)]):new n(void 0):D(i,r.Records)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Records)?i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`Records cannot have a setting list`,i.attributeList)]):new n({}):D(i,r.Records)?new n({}):n.create(e)}};var _b=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 Qu?[]:[new x(b.INVALID_REF_CONTEXT,`A Ref must appear top-level`,this.declarationNode)]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Ref name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,e)]:[]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,e)]:[]}validateSettingList(e){return e?[new x(b.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,e)]:[]}validateBody(e){if(!e)return[];if(e instanceof R)return this.validateFields([e]);let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){if(e.length===0)return[new x(b.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 x(b.REF_REDEFINED,`A Ref can only contain one binary relationship`,e))),e.forEach(e=>{if(e.callee&&!ou(e.callee)&&t.push(new x(b.INVALID_REF_FIELD,`A Ref field must be a binary relationship`,e.callee)),e.callee&&ou(e.callee)){let n=gu(e.callee.leftExpression)??{variables:[],tupleElements:[]},r=n.variables.length+Math.min(n.tupleElements.length,1),i=gu(e.callee.rightExpression)??{variables:[],tupleElements:[]},a=i.variables.length+Math.min(i.tupleElements.length,1);r<2&&t.push(new x(b.INVALID_REF_FIELD,`Invalid column reference`,e.callee.leftExpression||e.callee)),a<2&&t.push(new x(b.INVALID_REF_FIELD,`Invalid column reference`,e.callee.rightExpression||e.callee))}e.callee&&!su(e.callee)&&t.push(new x(b.UNEQUAL_FIELDS_BINARY_REF,`Unequal fields in ref endpoints`,e.callee));let n=[...e.args];if(_(n)instanceof B){let e=this.validateFieldSettings(_(n));t.push(...e),n.pop()}else n[0]instanceof B&&(t.push(...this.validateFieldSettings(n[0])),n.shift());n.length>0&&t.push(...n.map(e=>new x(b.INVALID_REF_FIELD,`A Ref field should only have a single binary relationship`,e)))}),t}validateFieldSettings(e){return yb(e).getErrors()}validateSubElements(e){return e.flatMap(e=>e.type?this.compiler.validateNode(e).getErrors():[])}};function vb(e){if(!(w(e)&&e.expression.variable.kind!==y.QUOTED_STRING)&&!(e instanceof nd))return!1;let t;if(t=e instanceof nd?du(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 yb(e){let t=S(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 x(b.DUPLICATE_REF_SETTING,`'${e}' can only appear once`,t))),t.forEach(t=>{vb(t.value)||r.push(new x(b.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 x(b.DUPLICATE_REF_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||r.push(new x(b.INVALID_REF_SETTING_VALUE,`'color' must be a color literal`,e))}),o[e]=t;break;default:t.forEach(t=>r.push(new x(b.UNKNOWN_REF_SETTING,`Unknown ref setting '${e}'`,t)))}return new n(o,r)}const bb={validateNode(t,i){return E(i,r.Ref)?n.create(void 0,new _b(t,i).validate()):n.create(e)},nodeFullname(t,i){return E(i,r.Ref)?i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A Ref's name is optional or must be an identifier or a quoted identifer`,i.name)]):new n(void 0):D(i,r.Ref)?new n(void 0):n.create(e)},nodeAlias(t,i){return E(i,r.Ref)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A Ref shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.Ref)?new n(void 0):n.create(e)},nodeSettings(t,i){if(E(i,r.Ref))return i.attributeList?new n({},[new x(b.UNEXPECTED_SETTINGS,`A Ref shouldn't have a setting list`,i.attributeList)]):new n({});if(D(i,r.Ref)){let e=[...i.args],t;return _(e)instanceof B?t=_(e):e[0]instanceof B&&(t=e[0]),t?yb(t):new n({})}return n.create(e)}};var xb=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 F?[new x(b.INVALID_TABLE_CONTEXT,`Table must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof md?[new x(b.INVALID_NAME,`Invalid array as Table name, maybe you forget to add a space between the name and the setting list?`,e)]:e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a Table name`,e)]:zl(e)?[]:[new x(b.INVALID_NAME,`A Table name must be of the form <table> or <schema>.<table>`,e)]:[new x(b.NAME_NOT_FOUND,`A Table must have a name`,this.declarationNode)]}validateAlias(e){return e?Bl(e)?[]:[new x(b.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors();return Cc(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||n.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A Table's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 x(b.INVALID_COLUMN,`A column must have a type`,e.callee)),w(e.callee)||t.push(new x(b.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Yl(e.args[0])&&t.push(new x(b.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?(Hl(e.callee)||t.push(new x(b.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 x(b.INVALID_TABLE_PARTIAL_INJECTION,`A partial injection does not have any trailing attributes`,e))),t):[]};return e.flatMap(e=>e.callee instanceof L&&e.callee.op?.value===`~`?n(e):t(e))}validateFieldSetting(e){if(!e.slice(0,-1).every(Zl)||!e.slice(-1).every(e=>Zl(e)||e instanceof B))return e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let t;_(e)instanceof B&&(t=e.pop());let n=S(t),r=n.getErrors(),a=n.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(a,(e,t)=>{switch(t){case i.Note:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{C(e.value)||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&r.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&r.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||r.push(new x(b.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 ad||r.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>r.push(new x(b.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 x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function Sb(e){let t=S(e),r=t.getErrors(),a=t.getValue();return Cc(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_SETTING,`'headercolor' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||r.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),e.forEach(e=>{C(e.value)||r.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function Cb(e){if(!e.slice(0,-1).every(Zl)||!e.slice(-1).every(e=>Zl(e)||e instanceof B))return new n({},e.map(e=>new x(b.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;_(e)instanceof B&&(t=e.pop());let r=S(t),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`note can only appear once`,e))),e.forEach(e=>{C(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'note' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`primary key can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'pk' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'null' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'unique' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'increment' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'default' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||a.push(new x(b.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 ad||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(o,a)}const wb={validateNode(t,i){return E(i,r.Table)?n.create(void 0,new xb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.Table)){if(!i.name)return new n(void 0,[new x(b.NAME_NOT_FOUND,`A Table must have a name`,i)]);if(i.name instanceof md)return new n(void 0,[new x(b.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=O(i.name);return e?.length===1&&e.unshift(Ml),new n(e)}if(D(i,r.Table)){if(Hl(i.callee)){let e=A(i.callee.expression);return new n(e?[e]:void 0)}let e=A(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return E(i,r.Table)?i.alias?Bl(i.alias)?new n(A(i.alias)):new n(void 0,[new x(b.INVALID_ALIAS,`Table aliases can only contain alphanumeric and underscore unless surrounded by double quotes`,i.alias)]):new n(void 0):D(i,r.Table)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.Table)?i.attributeList?Sb(i.attributeList):new n({}):D(i,r.Table)?Cb(i.args.slice(1)):n.create(e)}};var Tb=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 F?[new x(b.INVALID_TABLEGROUP_CONTEXT,`TableGroup must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a TableGroup name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A TableGroup name must be a single identifier`,e)]:[new x(b.NAME_NOT_FOUND,`A TableGroup must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(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 x(b.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||n.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!C(e.value)).forEach(e=>{n.push(new x(b.INVALID_TABLE_SETTING_VALUE,`'note' must be a string literal`,e.value||e.name))});break;default:n.push(...t.map(t=>new x(b.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return n}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A TableGroup's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);return[...this.validateFields(t),...this.validateSubElements(n)]}validateFields(e){return e.flatMap(e=>{let t=[];return e.callee&&O(e.callee)===void 0&&t.push(new x(b.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 x(b.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 x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function Eb(e){let t=S(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 x(b.DUPLICATE_TABLE_SETTING,`'color' can only appear once`,e))),t.forEach(e=>{Wl(e.value)||r.push(new x(b.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 x(b.DUPLICATE_TABLE_SETTING,`'note' can only appear once`,e))),t.filter(e=>!C(e.value)).forEach(e=>{r.push(new x(b.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 x(b.UNKNOWN_TABLE_SETTING,`Unknown '${e}' setting`,t)));break}return new n(a,r)}const Db={validateNode(t,i){return E(i,r.TableGroup)?n.create(void 0,new Tb(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.TableGroup))return i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A TableGroup name must be a single identifier`,i.name)]):new n(void 0,[new x(b.NAME_NOT_FOUND,`A TableGroup must have a name`,i)]);if(D(i,r.TableGroup)){let e=O(i.callee);return e?.length===1&&e.unshift(Ml),new n(e)}return n.create(e)},nodeAlias(t,i){return E(i,r.TableGroup)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A TableGroup shouldn't have an alias`,i.alias)]):new n(void 0):D(i,r.TableGroup)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.TableGroup)?Eb(i.attributeList):D(i,r.TableGroup)?new n({}):n.create(e)}};var Ob=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 F?[new x(b.INVALID_TABLE_PARTIAL_CONTEXT,`TablePartial must appear top-level`,this.declarationNode)]:[]}validateName(e){return e?e instanceof ud?[new x(b.INVALID_NAME,`Wildcard (*) is not allowed as a TablePartial name`,e)]:Vl(e)?[]:[new x(b.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,e)]:[new x(b.NAME_NOT_FOUND,`A TablePartial must have a name`,this.declarationNode)]}validateAlias(e){return e?[new x(b.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,e)]:[]}validateSettingList(e){let t=S(e),n=t.getErrors();return Cc(t.getValue(),(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&n.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||n.push(new x(b.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 x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||n.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:n.push(...e.map(e=>new x(b.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),n}validateBody(e){if(!e)return[];if(e instanceof R)return[new x(b.UNEXPECTED_SIMPLE_BODY,`A TablePartial's body must be a block`,e)];let[t,n]=v(e.body,e=>e instanceof R);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 x(b.INVALID_COLUMN,`A column must have a type`,e.callee)),w(e.callee)||t.push(new x(b.INVALID_COLUMN_NAME,`A column name must be an identifier or a quoted identifier`,e.callee)),e.args[0]&&!Yl(e.args[0])&&t.push(new x(b.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=_(e);if(!e.slice(0,-1).every(Zl)||!(Zl(t)||t instanceof B))return e.map(e=>new x(b.INVALID_COLUMN,`These fields must be some inline settings optionally ended with a setting list`,e));if(e.length===0)return[];let n;_(e)instanceof B&&(n=e.pop());let r=S(n),a=r.getErrors(),o=r.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(o,(e,t)=>{switch(t){case i.Note:e.length>1&&a.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&a.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||a.push(new x(b.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 ad||a.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>a.push(new x(b.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 x(b.NOTE_REDEFINED,`Duplicate notes are defined`,e))),t}};function kb(e){let t=S(e),r=t.getErrors(),a=t.getValue();return Cc(a,(e,t)=>{switch(t){case i.HeaderColor:e.length>1&&r.push(...e.map(e=>new x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Wl(e.value)||r.push(new x(b.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 x(b.DUPLICATE_TABLE_PARTIAL_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||r.push(new x(b.INVALID_TABLE_PARTIAL_SETTING_VALUE,`'${t}' must be a string literal`,e.value||e.name))});break;default:r.push(...e.map(e=>new x(b.UNKNOWN_TABLE_PARTIAL_SETTING,`Unknown '${t}' setting`,e)))}}),new n(a,r)}function Ab(e){let t=_(e);if(e.length>0&&(!e.slice(0,-1).every(Zl)||!(Zl(t)||t instanceof B)))return new n({},e.map(e=>new x(b.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;_(e)instanceof B&&(r=e.pop());let a=S(r),o=a.getErrors(),s=a.getValue();e.forEach(e=>{let t=(A(e)??``).toLowerCase();if(t!==i.PK&&t!==i.Unique){o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`Either one of 'primary key' and 'pk' can appear`,e))),Cc(s,(e,t)=>{switch(t){case i.Note:e.length>1&&o.push(...e.map(e=>new x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{C(e.value)||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'${t}' must be a quoted string`,e.value||e.name))});break;case i.Ref:e.forEach(e=>{ql(e.value)||o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&o.push(new x(b.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 x(b.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 x(b.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 x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{e instanceof I&&e.value!==void 0&&o.push(new x(b.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 x(b.DUPLICATE_COLUMN_SETTING,`'${t}' can only appear once`,e))),e.forEach(e=>{Gl(e.value)||o.push(new x(b.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 ad||o.push(new x(b.INVALID_COLUMN_SETTING_VALUE,`'check' must be a function expression`,e.value||e.name))});break;default:e.forEach(e=>o.push(new x(b.UNKNOWN_COLUMN_SETTING,`Unknown column setting '${t}'`,e)))}}),new n(s,o)}const jb={validateNode(t,i){return E(i,r.TablePartial)?n.create(void 0,new Ob(t,i).validate()):n.create(e)},nodeFullname(t,i){if(E(i,r.TablePartial))return i.name?Vl(i.name)?new n(O(i.name)):new n(void 0,[new x(b.INVALID_NAME,`A TablePartial name must be an identifier or a quoted identifer`,i.name)]):new n(void 0,[new x(b.NAME_NOT_FOUND,`A TablePartial must have a name`,i)]);if(D(i,r.TablePartial)){let e=A(i.callee);return new n(e?[e]:void 0)}return n.create(e)},nodeAlias(t,i){return E(i,r.TablePartial)?i.alias?new n(void 0,[new x(b.UNEXPECTED_ALIAS,`A TablePartial shouldn't have an alias`,i.alias)]):new n(A(i.alias)):D(i,r.TablePartial)?new n(void 0):n.create(e)},nodeSettings(t,i){return E(i,r.TablePartial)?kb(i.attributeList):D(i,r.TablePartial)?Ab(i.args.slice(1)):n.create(e)}};var Mb=class{constructor(e,t){this.compiler=e,this.declarationNode=t}validate(){return[...this.validateContext(),...this.validateBody()]}validateContext(){return this.declarationNode.parent instanceof Qu?[]:[new x(b.INVALID_USE_CONTEXT,`'use' must appear at the top level`,this.declarationNode)]}validateBody(){let e=[];if(this.declarationNode.importPath&&!Dl.isRelative(this.declarationNode.importPath.value)&&e.push(new x(b.INVALID_USE_SPECIFIER_NAME,`Import path must be a relative path (starting with './' or '../')`,this.declarationNode.importPath)),this.declarationNode.specifiers instanceof ud)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 x(b.INVALID_USE_SPECIFIER_KIND,`A use specifier must have a type (e.g. table, enum)`,e)):e.isKind(...Object.values(Ou))||t.push(new x(b.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()]}};const Nb={validateNode(t,r){return r instanceof $u?n.create(void 0,new Mb(t,r).validate()):n.create(e)},nodeFullname(t,r){if(!eu(r))return n.create(e);let i=O(r.name);return!i||i.length===0?n.create(void 0,[new x(b.INVALID_NAME,`Use specifiers must have a valid name (simple name or schema-qualified name)`,r)]):r.isKind(Ou.TableGroup)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A TableGroup name must be a simple name`,r)]):r.isKind(Ou.TablePartial)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A TablePartial name must be a simple name`,r)]):r.isKind(Ou.Note)&&i.length>1?n.create(i,[new x(b.INVALID_USE_SPECIFIER_NAME,`A Sticky note name must be a simple name`,r)]):(i.length===1&&!r.isKind(Ou.Schema)&&i.unshift(Ml),new n(i))},nodeAlias(t,r){return eu(r)?r.alias?Bl(r.alias)?new n(A(r.alias)):new n(void 0,[new x(b.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 $u?n.create({}):n.create(e)}},Pb=[wb,ob,gb,cb,$y,bb,mb,Db,jb,ub,ib,fb,Nb,nb];function Fb(t,...r){for(let n of Pb){let i=n[t];if(i){let t=i(...r);if(!t.hasValue(e))return t}}return n.create(e)}function Ib(r){let i=Fb(`validateNode`,this,r);return i.hasValue(e)?n.create(t):i}function Lb(r){let i=Fb(`nodeSettings`,this,r);return i.hasValue(e)?n.create(t):i}function Rb(r){let i=Fb(`nodeFullname`,this,r);return i.hasValue(e)?n.create(t):i}function zb(r){let i=Fb(`nodeAlias`,this,r);return i.hasValue(e)?n.create(t):i}var Bb=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},Vb=typeof document<`u`&&document.location&&document.location.hash.indexOf(`pseudo=true`)>=0;function Hb(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}),Vb&&(n=`[`+n.replace(/[aouei]/g,`$&$&`)+`]`),n}function Ub(e,t,...n){return Hb(t,n)}function Wb(e){}var Gb;const Kb=`en`;var qb=!1,Jb=!1,Yb=!1,Xb=!1,Zb=!1,Qb=!1,$b=!1,ex=void 0,tx=`en`,nx=void 0;const rx=typeof self==`object`?self:typeof global==`object`?global:{};var ix=void 0;rx.vscode!==void 0&&rx.vscode.process!==void 0?ix=rx.vscode.process:typeof process<`u`&&(ix=process);var ax=typeof(Gb=ix?.versions)?.electron==`string`&&ix?.type===`renderer`;if(typeof navigator==`object`&&!ax)nx=navigator.userAgent,qb=nx.indexOf(`Windows`)>=0,Jb=nx.indexOf(`Macintosh`)>=0,(nx.indexOf(`Macintosh`)>=0||nx.indexOf(`iPad`)>=0||nx.indexOf(`iPhone`)>=0)&&navigator.maxTouchPoints&&navigator.maxTouchPoints,Yb=nx.indexOf(`Linux`)>=0,nx?.indexOf(`Mobi`),Zb=!0,ex=(Ub({key:`ensureLoaderPluginIsLoaded`,comment:[`{Locked}`]},`_`),`en`),navigator.language;else if(typeof ix==`object`){qb=ix.platform===`win32`,Jb=ix.platform===`darwin`,Yb=ix.platform===`linux`,Yb&&ix.env.SNAP&&ix.env.SNAP_REVISION,ix.env.CI||ix.env.BUILD_ARTIFACTSTAGINGDIRECTORY;let e=ix.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.`);const ox=qb,sx=Jb,cx=Zb&&typeof rx.importScripts==`function`,lx=nx,ux=typeof rx.postMessage==`function`&&!rx.importScripts,dx=(()=>{if(ux){let e=[];rx.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}),rx.postMessage({vscodeScheduleAsyncWork:r},`*`)}}return e=>setTimeout(e)})(),fx=!!(lx&&lx.indexOf(`Chrome`)>=0),px=!!(lx&&lx.indexOf(`Firefox`)>=0),mx=!!(!fx&&lx&&lx.indexOf(`Safari`)>=0),hx=!!(lx&&lx.indexOf(`Edg/`)>=0),gx=!!(lx&&lx.indexOf(`Android`)>=0);var _x;if(rx.vscode!==void 0&&rx.vscode.process!==void 0){let e=rx.vscode.process;_x={get platform(){return e.platform},get arch(){return e.arch},get env(){return e.env},cwd(){return e.cwd()}}}else _x=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 ox?`win32`:sx?`darwin`:`linux`},get arch(){},get env(){return{}},cwd(){return`/`}};const vx=_x.cwd,yx=_x.env,bx=_x.platform;var xx=65,Sx=97,Cx=90,wx=122,Tx=46,Ex=47,Dx=92,Ox=58,kx=63,Ax=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 jx(e,t){if(typeof e!=`object`||!e)throw new Ax(t,`Object`,e)}function Mx(e,t){if(typeof e!=`string`)throw new Ax(t,`string`,e)}var Nx=bx===`win32`;function q(e){return e===Ex||e===Dx}function Px(e){return e===Ex}function Fx(e){return e>=xx&&e<=Cx||e>=Sx&&e<=wx}function Ix(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=Ex;if(r(c)){if(!(o===l-1||s===1))if(s===2){if(i.length<2||a!==2||i.charCodeAt(i.length-1)!==Tx||i.charCodeAt(i.length-2)!==Tx){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===Tx&&s!==-1?++s:s=-1}return i}function Lx(e,t){jx(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}const Rx={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],Mx(a,`path`),a.length===0)continue}else t.length===0?a=vx():(a=yx[`=${t}`]||vx(),(a===void 0||a.slice(0,2).toLowerCase()!==t.toLowerCase()&&a.charCodeAt(2)===Dx)&&(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 Fx(u)&&a.charCodeAt(1)===Ox&&(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=Ix(n,!r,`\\`,q),r?`${t}\\${n}`:`${t}${n}`||`.`},normalize(e){Mx(e,`path`);let t=e.length;if(t===0)return`.`;let n=0,r,i=!1,a=e.charCodeAt(0);if(t===1)return Px(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 Fx(a)&&e.charCodeAt(1)===Ox&&(r=e.slice(0,2),n=2,t>2&&q(e.charCodeAt(2))&&(i=!0,n=3));let o=n<t?Ix(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){Mx(e,`path`);let t=e.length;if(t===0)return!1;let n=e.charCodeAt(0);return q(n)||t>2&&Fx(n)&&e.charCodeAt(1)===Ox&&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];Mx(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 Rx.normalize(t)},relative(e,t){if(Mx(e,`from`),Mx(t,`to`),e===t)return``;let n=Rx.resolve(e),r=Rx.resolve(t);if(n===r||(e=n.toLowerCase(),t=r.toLowerCase(),e===t))return``;let i=0;for(;i<e.length&&e.charCodeAt(i)===Dx;)i++;let a=e.length;for(;a-1>i&&e.charCodeAt(a-1)===Dx;)a--;let o=a-i,s=0;for(;s<t.length&&t.charCodeAt(s)===Dx;)s++;let c=t.length;for(;c-1>s&&t.charCodeAt(c-1)===Dx;)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===Dx&&(d=f)}if(f!==u){if(d===-1)return r}else{if(l>u){if(t.charCodeAt(s+f)===Dx)return r.slice(s+f+1);if(f===2)return r.slice(s+f)}o>u&&(e.charCodeAt(i+f)===Dx?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)===Dx)&&(p+=p.length===0?`..`:`\\..`);return s+=d,p.length>0?`${p}${r.slice(s,c)}`:(r.charCodeAt(s)===Dx&&++s,r.slice(s,c))},toNamespacedPath(e){if(typeof e!=`string`||e.length===0)return e;let t=Rx.resolve(e);if(t.length<=2)return e;if(t.charCodeAt(0)===Dx){if(t.charCodeAt(1)===Dx){let e=t.charCodeAt(2);if(e!==kx&&e!==Tx)return`\\\\?\\UNC\\${t.slice(2)}`}}else if(Fx(t.charCodeAt(0))&&t.charCodeAt(1)===Ox&&t.charCodeAt(2)===Dx)return`\\\\?\\${t}`;return e},dirname(e){Mx(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 Fx(i)&&e.charCodeAt(1)===Ox&&(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&&Mx(t,`ext`),Mx(e,`path`);let n=0,r=-1,i=!0,a;if(e.length>=2&&Fx(e.charCodeAt(0))&&e.charCodeAt(1)===Ox&&(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){Mx(e,`path`);let t=0,n=-1,r=0,i=-1,a=!0,o=0;e.length>=2&&e.charCodeAt(1)===Ox&&Fx(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===Tx?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:Lx.bind(null,`\\`),parse(e){Mx(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(Fx(i)&&e.charCodeAt(1)===Ox){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===Tx?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};var zx=(()=>{if(Nx){let e=/\\/g;return()=>{let t=vx().replace(e,`/`);return t.slice(t.indexOf(`/`))}}return()=>vx()})();const Bx={resolve(...e){let t=``,n=!1;for(let r=e.length-1;r>=-1&&!n;r--){let i=r>=0?e[r]:zx();Mx(i,`path`),i.length!==0&&(t=`${i}/${t}`,n=i.charCodeAt(0)===Ex)}return t=Ix(t,!n,`/`,Px),n?`/${t}`:t.length>0?t:`.`},normalize(e){if(Mx(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ex,n=e.charCodeAt(e.length-1)===Ex;return e=Ix(e,!t,`/`,Px),e.length===0?t?`/`:n?`./`:`.`:(n&&(e+=`/`),t?`/${e}`:e)},isAbsolute(e){return Mx(e,`path`),e.length>0&&e.charCodeAt(0)===Ex},join(...e){if(e.length===0)return`.`;let t;for(let n=0;n<e.length;++n){let r=e[n];Mx(r,`path`),r.length>0&&(t===void 0?t=r:t+=`/${r}`)}return t===void 0?`.`:Bx.normalize(t)},relative(e,t){if(Mx(e,`from`),Mx(t,`to`),e===t||(e=Bx.resolve(e),t=Bx.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===Ex&&(o=s)}if(s===a)if(i>a){if(t.charCodeAt(1+s)===Ex)return t.slice(1+s+1);if(s===0)return t.slice(1+s)}else r>a&&(e.charCodeAt(1+s)===Ex?o=s:s===0&&(o=0));let c=``;for(s=1+o+1;s<=n;++s)(s===n||e.charCodeAt(s)===Ex)&&(c+=c.length===0?`..`:`/..`);return`${c}${t.slice(1+o)}`},toNamespacedPath(e){return e},dirname(e){if(Mx(e,`path`),e.length===0)return`.`;let t=e.charCodeAt(0)===Ex,n=-1,r=!0;for(let t=e.length-1;t>=1;--t)if(e.charCodeAt(t)===Ex){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&&Mx(t,`ext`),Mx(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===Ex){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)===Ex){if(!i){n=a+1;break}}else r===-1&&(i=!1,r=a+1);return r===-1?``:e.slice(n,r)},extname(e){Mx(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===Ex){if(!i){n=o+1;break}continue}r===-1&&(i=!1,r=o+1),s===Tx?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:Lx.bind(null,`/`),parse(e){Mx(e,`path`);let t={root:``,dir:``,base:``,ext:``,name:``};if(e.length===0)return t;let n=e.charCodeAt(0)===Ex,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===Ex){if(!s){a=c+1;break}continue}o===-1&&(s=!1,o=c+1),t===Tx?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};Bx.win32=Rx.win32=Rx,Bx.posix=Rx.posix=Bx;const Vx=Nx?Rx.normalize:Bx.normalize,Hx=Nx?Rx.resolve:Bx.resolve,Ux=Nx?Rx.relative:Bx.relative,Wx=Nx?Rx.dirname:Bx.dirname,Gx=Nx?Rx.basename:Bx.basename,Kx=Nx?Rx.extname:Bx.extname,qx=Nx?Rx.sep:Bx.sep;var Jx=/^\w[\w\d+.-]*$/,Yx=/^\//,Xx=/^\/\//;function Zx(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&&!Jx.test(e.scheme))throw Error(`[UriError]: Scheme contains illegal characters.`);if(e.path){if(e.authority){if(!Yx.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(Xx.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 Qx(e,t){return!e&&!t?`file`:e}function $x(e,t){switch(e){case`https`:case`http`:case`file`:t?t[0]!==eS&&(t=eS+t):t=eS;break}return t}var J=``,eS=`/`,tS=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,nS=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=Qx(e,a),this.authority=t||J,this.path=$x(this.scheme,n||J),this.query=r||J,this.fragment=i||J,Zx(this,a))}get fsPath(){return cS(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 iS(t,n,r,i,a)}static parse(e,t=!1){let n=tS.exec(e);return n?new iS(n[2]||J,fS(n[4]||J),fS(n[5]||J),fS(n[7]||J),fS(n[9]||J),t):new iS(J,J,J,J,J)}static file(e){let t=J;if(ox&&(e=e.replace(/\\/g,eS)),e[0]===eS&&e[1]===eS){let n=e.indexOf(eS,2);n===-1?(t=e.substring(2),e=eS):(t=e.substring(2,n),e=e.substring(n)||eS)}return new iS(`file`,t,e,J,J)}static from(e,t){return new iS(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=ox&&t.scheme===`file`?e.file(Rx.join(cS(t,!0),...n)).path:Bx.join(t.path,...n),t.with({path:r})}toString(e=!1){return lS(this,e)}toJSON(){return this}static revive(t){if(t){if(t instanceof e)return t;{let e=new iS(t);return e._formatted=t.external??null,e._fsPath=t._sep===rS?t.fsPath??null:null,e}}else return t}},rS=ox?1:void 0,iS=class extends nS{constructor(){super(...arguments),this._formatted=null,this._fsPath=null}get fsPath(){return this._fsPath||=cS(this,!1),this._fsPath}toString(e=!1){return e?lS(this,!0):(this._formatted||=lS(this,!1),this._formatted)}toJSON(){let e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=rS),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}},aS={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 oS(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=aS[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 sS(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+=aS[r]):t!==void 0&&(t+=e[n])}return t===void 0?e:t}function cS(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,ox&&(n=n.replace(/\//g,`\\`)),n}function lS(e,t){let n=t?sS:oS,r=``,{scheme:i,authority:a,path:o,query:s,fragment:c}=e;if(i&&(r+=i,r+=`:`),(a||i===`file`)&&(r+=eS,r+=eS),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:oS(c,!1,!1)),r}function uS(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+uS(e.substr(3)):e}}var dS=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function fS(e){return e.match(dS)?e.replace(dS,e=>uS(e)):e}let 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}({}),pS=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 mS(e,t){return e.getOffsetAt(t)}function hS(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 gS=class{constructor(e){this.compiler=e}provideDefinition(e,n){let{uri:r}=e,i=Dl.fromUri(String(e.uri)),a=mS(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);if(n.hasValue(t))continue;let i=n.getValue();if(!i)continue;let a;if(i.declaration&&[P.PRIMARY_EXPRESSION,P.VARIABLE].includes(e.kind)&&({declaration:a}=i),a){let{startPos:e,endPos:t}=a,n=r;return r&&a.filepath&&(n=nS.parse(a.filepath.toUri())),[{range:{startColumn:e.column+1,startLineNumber:e.line+1,endColumn:t.column+1,endLineNumber:t.line+1},uri:n}]}}return[]}},_S=class{constructor(e){this.compiler=e}provideDiagnostics(e){return[...this.provideErrors(e),...this.provideWarnings(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`))}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`?pS.Error:pS.Warning}},vS=class{constructor(e){this.compiler=e}provideReferences(e,n){let{uri:r}=e,i=Dl.fromUri(String(r)),a=mS(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=nS.parse(e.filepath.toUri())),{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 yS(e,t){return e>=t.start&&e<t.end}function bS(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 xS(e,t,n){let r=[],i=e.parseFile(t).getValue()?.ast;if(!i)return r;for(let e of i.uses){let t=e.importPath?.value??``;if(!t){let r=e.useKeyword?.start??e.fullStart,i=n.lastIndexOf(`
7
7
  `,r-1)+1,a=n.indexOf(`
8
8
  `,r),o=n.slice(i,a===-1?void 0:a).match(/from\s*(['"])(.*?)\1/);o&&(t=o[2])}let i=[];if(e.specifiers instanceof td){let t=new Set([`table`,`enum`,`tablepartial`,`tablegroup`,`note`,`schema`,`from`]);for(let r of e.specifiers.specifiers){let e,a;if(r.name)e=r.importKind?.value,a=A(r.name),!a&&r.name.start!==void 0&&r.name.end!==void 0&&(a=n.slice(r.name.start,r.name.end).trim());else if(r.importKind){let e=r.importKind.value??void 0;e&&!t.has(e.toLowerCase())&&(a=e)}if(a&&a.toLowerCase()!==`from`){let t=r.alias?A(r.alias):void 0;i.push({kind:e,name:a,alias:t})}}}else e.specifiers instanceof ud&&i.push({name:`*`});if(i.length===0&&!(e.specifiers instanceof ud))continue;let a=e.fullEnd;if(!e.importPath){let t=e.useKeyword?.start??e.fullStart,r=n.indexOf(`
9
9
  `,t);a=r===-1?n.length:r}r.push({startOffset:e.fullStart,endOffset:a,sourceFile:t,specifiers:i,node:e})}return r}function SS(e,t,n,r,i,a){let o=xS(e,i,a),s=DS(r,i),c=o.findIndex(e=>e.sourceFile===s),l=`${n} ${t}`,u=ES(a);if(c!==-1){let e=o[c];return e.specifiers.some(e=>e.name===t)?{topInsert:``}:{topInsert:CS(wS([...e.specifiers.filter(e=>e.name!==`*`).map(e=>`${e.kind??n} ${e.name}${e.alias?` as ${e.alias}`:``}`),l]),s,u),removeRange:TS(a,e.startOffset,e.endOffset)}}return{topInsert:CS([l],s,u)}}function CS(e,t,n){return`use {${n}${e.map(e=>` ${e}`).join(n)}${n}} from '${t}'${n}${n}`}function wS(e){let t=new Set,n=[];for(let r of e){let e=r.trim();t.has(e)||(t.add(e),n.push(r))}return n}function TS(e,t,n){let r=e.lastIndexOf(`
@@ -13,7 +13,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=Symbo
13
13
  `:`
14
14
  `}function DS(e,t){return e.relativeTo(t.dirname).replace(/\.dbml$/,``)}function OS(e){switch(e){case M.Schema:return Y.Module;case M.Table:case M.TablePartial:return Y.Class;case M.Column:case M.TableGroupField:return Y.Field;case M.Enum:return Y.Enum;case M.EnumField:return Y.EnumMember;case M.TableGroup:return Y.Struct;default:return Y.Text}}function kS(e,t){if(!e||$c(e))return!1;for(let n of e.trailingTrivia){if(n.start>t)break;if(n.kind===y.NEWLINE&&n.end<=t)return!1}return!0}function Z(){return{suggestions:[]}}function AS(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:` ${e.insertText}`}))}}function jS(e){return{...e,suggestions:e.suggestions.map(e=>({...e,insertText:e.quoted?e.insertText:py(e.insertText??``),quoted:!0}))}}function MS(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 NS(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(PS(e,c,t.kind,s,r,o)))}}return i}function PS(e,t,n,r,i,a){let o=SS(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=FS(a,o.removeRange.startOffset),t=FS(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:OS(n),detail:`from ${r.basename}`,sortText:`zzz_${OS(n).toString().padStart(2,`0`)}_${t}`,range:void 0,additionalTextEdits:s}}function FS(e,t){let n=1,r=1;for(let i=0;i<t&&i<e.length;i++)e[i]===`
15
15
  `?(n++,r=1):r++;return{line:n,column:r}}function IS(e,t,n,i,a){let o=e.container.element(i,a);return!(o instanceof F)||!o.isKind(r.Records)||!(o.body instanceof z)||!o.body||!yS(a,o.body)||t.getLineContent(n.lineNumber).trim()!==``?null:o.parent instanceof Qu?LS(e,o):RS(e,o)}function LS(e,n){if(!(n.name instanceof V))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 Fu||r instanceof Xu))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 RS(e,n){let r=n.parent;if(!(r instanceof F))return Z();let i=e.nodeSymbol(r).getFiltered(t);if(!(i instanceof Pu))return Z();let a;if(n.name instanceof od){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 Fu||r instanceof Xu))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 zS(e,t,n,r,i){let a=e.parse.ast(t);for(let o of a.body)if(o instanceof $u&&n>=o.start&&n<=o.fullEnd)return BS(e,t,n,o,i,r);return null}function BS(e,t,n,r,i,a){if(r.importPath&&yS(n,r.importPath))return GS(e,t,r.importPath,i,r);if(r.fromKeyword&&n>r.fromKeyword.end)return GS(e,t,void 0,i,r);if(r.specifiers instanceof td){if(!r.specifiers.openBrace){let e=WS();return kS(r.useKeyword,n)?AS(e):e}return VS(e,t,n,r.specifiers,r.importPath,a)}if(r.specifiers instanceof ud)return Z();let o=WS();return kS(r.useKeyword,n)?AS(o):o}function VS(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!==M.Schema)return US(e,t,i,n)}return HS()}}return HS()}function HS(){return{suggestions:Object.keys(Ou).map(e=>({label:e.toLowerCase(),insertText:`${e.toLowerCase()} `,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function US(e,n,r,i){if(!r)return Z();let a=Ol(n,r.value);if(!a)return Z();let o=e.usableMembers(a).getFiltered(t);if(!o)return Z();let s=[];for(let e of o.nonSchemaMembers){if(e.kind!==i)continue;let t=e.name;t&&s.push(t)}for(let n of o.schemaMembers){if(n.isPublicSchema())continue;let r=n.name;if(!r)continue;let a=e.symbolMembers(n).getFiltered(t)??[];for(let e of a){if(e.kind!==i)continue;let t=e.name;t&&s.push(`${r}.${t}`)}}return{suggestions:s.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:OS(i),range:void 0}))}}function WS(){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:table} ${2:name} } from '${3:path}'",insertTextRules:X.InsertAsSnippet,kind:Y.Snippet,range:void 0}]}}function GS(e,t,n,r,i){let a=t.dirname,o=n?n.value:`./`,s=n===void 0,c;if(n){let e=hS(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=Vc(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,-5)),r.startsWith(`.`)||(r=`./${r}`),o&&!r.startsWith(o))continue;let d=`${o}${r.slice(o.length).split(`/`)[0]}`,f=Dl.resolve(a,d),p=e.layout.isDirectory(f);if(qS(e,n,KS(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 KS(e){let t=e.specifiers;return t instanceof td?t.specifiers.flatMap(e=>{let t=A(e.name),n=e.importKind?.value.toLowerCase();return!t||!n?[]:[{name:t,kind:n}]}):[]}function qS(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 JS=class{constructor(e,t={}){this.compiler=e,this.triggerCharacters=t.triggerCharacters??[]}provideCompletionItems(e,t){let n=Dl.fromUri(String(e.uri)),r=mS(e,t),i=IS(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=>nl(e)&&yS(r,e)))return Z();if(s===void 0)return sC();let l=zS(this.compiler,n,r,o,e);if(l!==null)return l;if([y.STRING_LITERAL,y.QUOTED_STRING].includes(o.kind)&&yS(r,o))return Z();let u=this.compiler.container.element(n,r);if(this.compiler.container.scopeKind(n,r)===Q.TOPLEVEL||u instanceof F&&u.type&&u.type.start<=r&&u.type.end>=r)return sC();let d=[...this.compiler.container.stack(n,r)].reverse();for(let e of d)if(e instanceof L)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return XS(this.compiler,n,r,e);case`~`:return YS(this.compiler,n,r);default:}else if(e instanceof rd)switch(e.op?.value){case`>`:case`<`:case`<>`:case`-`:return XS(this.compiler,n,r,e);case`.`:return aC(this.compiler,n,r,e);default:}else if(e instanceof I)return tC(this.compiler,n,r,e);else if(e instanceof B)return tC(this.compiler,n,r,e);else if(e instanceof od)return $S(this.compiler,n,r,e);else if(e instanceof sd)return eC(this.compiler,n,r);else if(e instanceof V)return pC(this.compiler,n,r,e);else if(e instanceof R)return oC(this.compiler,n,r,e);else if(e instanceof F){if(bS(r,e))return fC(this.compiler,n,r,e);if(e.bodyColon&&r>=e.bodyColon.end||e.body&&yS(r,e.body))return oC(this.compiler,n,r,void 0)}return Z()}};function YS(e,t,n){return QS(e,t,n,e.parse.ast(t),[M.TablePartial])}function XS(e,t,n,r){let i=e.container.scopeKind(t,n);if([Q.REF,Q.TABLE,Q.TABLEPARTIAL].includes(i)){let i=QS(e,t,n,e.container.element(t,n),[M.Table,M.Schema,M.Column]);return kS(r.op,n)?AS(i):i}return Z()}function ZS(e,n,r){let i=e.symbolMembers(n).getFiltered(t);return i?jS({suggestions:i.filter(e=>r.includes(e.kind)).filter(e=>!(e instanceof ju&&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:OS(e.kind),sortText:OS(e.kind).toString().padStart(2,`0`),detail:i,range:void 0}}).filter(e=>e.label!==``)}):Z()}function QS(e,n,r,i,a){if(i===void 0)return Z();let o=i,s={suggestions:[]},c;for(;o;){o instanceof Qu&&(c=o);let n=e.nodeSymbol(o).getFiltered(t);if(n){let t=ZS(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 F?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 NS(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 jS(s)}function $S(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 V&&t.argumentList===a)return pC(e,n,i,t);if(s instanceof F&&s.isKind(r.Records)&&!(s.name instanceof V)&&bS(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=ZS(e,i,[M.Column]);return pu(a)?MS(t):t}}switch(o){case Q.INDEXES:return _C(e,n,i);case Q.REF:for(;c.length>0;){let t=c.pop();if(t instanceof rd&&t.op?.value===`.`)return aC(e,n,i,t)}return dC(e,n,i);default:break}return Z()}function eC(e,t,n){return e.container.scopeKind(t,n)===Q.RECORDS?QS(e,t,n,e.container.element(t,n),[M.Schema,M.Enum,M.EnumField]):Z()}function tC(e,t,n,r){let{token:i}=e.container.token(t,n);if([y.COMMA,y.LBRACKET].includes(i?.kind)){let r=nC(e,t,n);return i?.kind===y.COMMA&&kS(i,n)?AS(r):r}if(r.name&&r.name.start<=n&&r.name.end>=n)return nC(e,t,n);if(r.name instanceof nd){let a=rC(e,t,n,du(r.name)??``);return i?.kind===y.COLON&&kS(i,n)?AS(a):a}return Z()}function nC(e,t,n){let r=e.container.element(t,n);if(r instanceof Qu)return Z();let a=e.container.scopeKind(t,n);if(r.body&&!yS(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;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:[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 rC(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`default`:return QS(e,t,n,e.container.element(t,n),[M.Schema,M.Enum]);default:break}return Z()}function iC(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 F?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 aC(e,n,r,i){let a=hu(i)??[];return a.pop(),a.some(e=>!w(e))?Z():jS({suggestions:iC(e,a.map(e=>A(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:OS(e.kind),range:void 0}})})}function oC(e,t,n,i){switch(e.container.scopeKind(t,n)){case Q.TABLE:case Q.TABLEPARTIAL:return lC(e,t,n,i);case Q.PROJECT:return uC(e,t,n,i);case Q.INDEXES:return hC(e,t,n);case Q.ENUM:return cC(e,t,n,i);case Q.REF:{let r=dC(e,t,n);return e.container.token(t,n).token?.kind===y.COLON&&kS(e.container.token(t,n).token,n)?AS(r):r}case Q.TABLEGROUP:return mC(e,t);case Q.DIAGRAMVIEW:return bC();case Q.CUSTOM:{let i=e.container.element(t,n);if(i instanceof F){let a=i.parentNode,o=a instanceof z?a.parentNode:void 0;if(o instanceof F&&o.isKind(r.DiagramView))return xC(e,t,n,i)}return Z()}default:return Z()}}function sC(){return{suggestions:[`Table`,`TableGroup`,`Enum`,`Project`,`Ref`,`TablePartial`,`Records`,`DiagramView`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}}function cC(e,t,n,r){return r?.callee&&vC(n,r)===1?QS(e,t,n,e.container.element(t,n),[M.Schema,M.Table,M.Column]):Z()}function lC(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=vC(n,r);return a===0?{suggestions:i.map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))}:a===1?gC(e,t,n):Z()}function uC(e,t,n,r){return!r?.callee||vC(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 dC(e,t,n){return QS(e,t,n,e.container.element(t,n),[M.Schema,M.Table,M.Column])}function fC(e,t,n,i){return i.isKind(r.Records)?QS(e,t,n,i.parent,[M.Schema,M.Table]):Z()}function pC(e,n,i,a){let o=e.container.element(n,i),s=a.callee&&yS(i,a.callee),c=a.argumentList&&yS(i,a.argumentList);if(o instanceof F&&o.isKind(r.Records)&&bS(i,o)){if(s)return QS(e,n,i,o.parent,[M.Schema,M.Table]);if(!c)return Z();let r=a.callee;if(!r)return Z();let l=hu(r)??[r],u=l[l.length-1],d=u?e.nodeReferee(u).getFiltered(t):void 0;if(!d)return Z();let f=ZS(e,d,[M.Column]),{argumentList:p}=a;return!p||!pu(p)?f:MS(f)}let l=[...e.container.stack(n,i)];for(let o of l){if(!c||!(o instanceof R)||o.callee!==a||(A(a.callee)??``).toLowerCase()!==r.Records)continue;let s=e.nodeSymbol(e.container.element(n,i)).getFiltered(t);if(!s)return Z();let l=ZS(e,s,[M.Column]),{argumentList:u}=a;return!u||!pu(u)?l:MS(l)}return Z()}function mC(e,t){return{suggestions:[...jS({suggestions:(e.parse.publicSymbolTable(t)??[]).flatMap(e=>{if(e.kind!==M.Table&&e.kind!==M.Schema)return[];let t=e.name;return t===void 0||e instanceof ju&&e.isPublicSchema()?[]:{label:t,insertText:t,insertTextRules:X.KeepWhitespace,kind:OS(e.kind),range:void 0}})}).suggestions,...[`Note`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0}))]}}function hC(e,t,n){return _C(e,t,n)}function gC(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})),...QS(e,t,n,e.container.element(t,n),[M.Enum,M.Schema]).suggestions]}}function _C(e,n,r){let i=e.container.element(n,r)?.parent,a=i?e.nodeSymbol(i).getFiltered(t):void 0;if(!a||!a?.isKind(M.Table))return Z();let o=e.symbolMembers(a).getFiltered(t);return o?jS({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:OS(M.Column),range:void 0}:[]})}):Z()}function vC(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 yC={label:`*`,insertText:`*`,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0};function bC(){return{suggestions:[...[`Tables`,`TableGroups`,`Notes`,`Schemas`].map(e=>({label:e,insertText:e,insertTextRules:X.KeepWhitespace,kind:Y.Keyword,range:void 0})),yC]}}function xC(e,t,n,r){switch(r.type?.value.toLowerCase()){case`tables`:return{suggestions:[yC,...QS(e,t,n,e.parse.ast(t),[M.Table,M.Schema]).suggestions]};case`tablegroups`:return{suggestions:[yC,...QS(e,t,n,e.parse.ast(t),[M.TableGroup]).suggestions]};case`schemas`:return{suggestions:[yC,{label:Ml,insertText:Ml,insertTextRules:X.KeepWhitespace,kind:Y.Module,range:void 0},...QS(e,t,n,e.parse.ast(t),[M.Schema]).suggestions]};case`notes`:return{suggestions:[yC,...QS(e,t,n,e.parse.ast(t),[M.StickyNote]).suggestions]};default:return Z()}}const SC={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*[}\]].*)$/}};var CC={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`,`check`,`tables`,`tablegroups`,`notes`,`schemas`],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`]]}},wC=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(Dl.from)}getEntryPoints(){return[...this.files.keys()].map(Dl.from).sort((e,t)=>e.absolute.localeCompare(t.absolute))}clone(){return new e(this.files)}};function TC(e,t){let n=this.token.flatStream(e),{index:r,token:i}=this.container.token(e,t),a=r===void 0?-1:pc(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=Nd(s).find(e=>yS(o,e));if(e===void 0||e instanceof Xc)break;c.push(e),s=e}if(i?.kind===y.COLON)return c;for(;c.length>0;){let n=!1,r=_(c);if(r instanceof R){let i=this.layout.getSource(e)||``;for(let e=r.end;e<t;e+=1)i[e]===`
16
- `&&(c.pop(),n=!0)}else r instanceof L||r instanceof rd?this.container.token(e,t).token!==r.op&&(c.pop(),n=!0):r instanceof B?r.listCloseBracket&&r.end<=t&&(c.pop(),n=!0):r instanceof od?r.tupleCloseParen&&r.end<=t&&(c.pop(),n=!0):r instanceof sd?r.end<=t&&(c.pop(),n=!0):r instanceof z?r.blockCloseBrace&&r.end<=t&&(c.pop(),n=!0):r instanceof nd||r.end<t&&(c.pop(),n=!0);if(n){let e=_(c);e instanceof F&&e.end<=t&&c.pop()}if(!n)break}return c}function EC(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 DC(e,t){let n=this.container.stack(e,t);for(let e=n.length-1;e>=0;--e)if(n[e]instanceof F)return n[e];return this.parse.ast(e)}function OC(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()}let 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 kC(e,t){let n=this.container.element(e,t);if(n instanceof Qu)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 AC(e,t){let r=t.originalSymbol;if(r.filepath.intern()===e.intern())return n.create(MC(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=jC(this,e);if(i.length>0)return n.create({schema:i.join(`.`),name:t});let a=MC(this,r);return a?n.create({...a,name:t}):n.create({schema:Ml,name:t})}return n.create(MC(this,r))}function jC(e,t){let n=[],r=t;for(;r;){let t=e.symbolParent(r).find(e=>e instanceof ju&&e.isKind(M.Schema));if(!t||t.isPublicSchema())break;n.unshift(t.name??``),r=t}return n}function MC(e,n){if(!n.declaration)return n.name?{schema:Ml,name:n.name}:void 0;let r=e.nodeFullname(n.declaration).getFiltered(t);if(!r||r.length===0)return n.name?{schema:Ml,name:n.name}:void 0;let i=r[r.length-1];return{schema:r.length>1?r.slice(0,-1).join(`.`):Ml,name:i}}function NC(e){let{ast:t}=this.parseFile(e).getValue(),n=[],r=new Set;for(let i of t.body){if(!(i instanceof $u)||!i.importPath)continue;let t=Ol(e,i.importPath.value);!t||r.has(t.absolute)||(r.add(t.absolute),n.push(t))}return n}function PC(e){let t=new Set,n=[],r=e?[e]:this.layout.getEntryPoints(),i=0;for(;i<r.length;){let e=r[i++],a=e.intern();if(!t.has(a)){t.add(a),n.push(e);for(let t of this.fileDependencies(e))r.push(t)}}return n}function FC(e){return this.bindFile(e),this.parseFile(e).getValue().ast}function IC(e){return this.interpretFile(e).getErrors()}function LC(e){return this.interpretFile(e).getWarnings()}function RC(e){return this.parseFile(e).getValue().tokens}function zC(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.interpretSymbol(r,e).getFiltered(t)}function BC(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n);if(r.hasValue(t))return;let i=this.symbolMembers(r.getValue());if(i.hasValue(t))return;let a=[];for(let e of i.getValue())a.push(e);return a}function VC(e){return this.parseFile(e).getValue().tokens.flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function HC(e){return this.parseFile(e).getValue().tokens.filter(sl)}function UC(e,t){let n=this.parse.ast(e);for(;;){let e=Nd(n).find(e=>yS(t,e));if(e===void 0)return n;if(e instanceof Xc)return e;n=e}}function WC(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 GC(){let e=vy(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 KC(e){let r=this.bindFile(e);if(r.getErrors().length>0)return r.map(()=>void 0);let i=this.parseFile(e).getValue().ast,a=this.nodeSymbol(i).getFiltered(t);return a?this.interpretSymbol(a,e).map(e=>e===t||!e?void 0:e):n.create(void 0)}function qC(){let e=[],r=[],i=new Set,a=[];for(let e of this.layout.getEntryPoints())for(let t of this.reachableFiles(e)){let e=t.intern();i.has(e)||(i.add(e),a.push(t))}let o=new Map;for(let i of a){let a=this.parseFile(i);e.push(...a.getErrors()),r.push(...a.getWarnings());let s=a.getValue().ast,c=this.nodeSymbol(s).getFiltered(t),l=c?this.interpretSymbol(c,i):n.create(t),u=l.getFiltered(t);u&&o.set(i.absolute,u),e.push(...l.getErrors()),r.push(...l.getWarnings())}let s={};for(let[e,t]of o)s[e]=t;return new n({files:s},e,r)}function JC(e){return this.parseFile(e).chain(({ast:e})=>this.validateNode(e).map(()=>void 0))}var YC=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===`
16
+ `&&(c.pop(),n=!0)}else r instanceof L||r instanceof rd?this.container.token(e,t).token!==r.op&&(c.pop(),n=!0):r instanceof B?r.listCloseBracket&&r.end<=t&&(c.pop(),n=!0):r instanceof od?r.tupleCloseParen&&r.end<=t&&(c.pop(),n=!0):r instanceof sd?r.end<=t&&(c.pop(),n=!0):r instanceof z?r.blockCloseBrace&&r.end<=t&&(c.pop(),n=!0):r instanceof nd||r.end<t&&(c.pop(),n=!0);if(n){let e=_(c);e instanceof F&&e.end<=t&&c.pop()}if(!n)break}return c}function EC(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 DC(e,t){let n=this.container.stack(e,t);for(let e=n.length-1;e>=0;--e)if(n[e]instanceof F)return n[e];return this.parse.ast(e)}function OC(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()}let 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 kC(e,t){let n=this.container.element(e,t);if(n instanceof Qu)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 AC(e,t){let r=t.originalSymbol;if(r.filepath.equals(e))return n.create(MC(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=jC(this,e);if(i.length>0)return n.create({schema:i.join(`.`),name:t});let a=MC(this,r);return a?n.create({...a,name:t}):n.create({schema:Ml,name:t})}return n.create(MC(this,r))}function jC(e,t){let n=[],r=t;for(;r;){let t=e.symbolParent(r).find(e=>e instanceof ju&&e.isKind(M.Schema));if(!t||t.isPublicSchema())break;n.unshift(t.name??``),r=t}return n}function MC(e,n){if(!n.declaration)return n.name?{schema:Ml,name:n.name}:void 0;let r=e.nodeFullname(n.declaration).getFiltered(t);if(!r||r.length===0)return n.name?{schema:Ml,name:n.name}:void 0;let i=r[r.length-1];return{schema:r.length>1?r.slice(0,-1).join(`.`):Ml,name:i}}function NC(e){let{ast:t}=this.parseFile(e).getValue(),n=[],r=new Set;for(let i of t.body){if(!(i instanceof $u)||!i.importPath)continue;let t=Ol(e,i.importPath.value);!t||r.has(t.absolute)||(r.add(t.absolute),n.push(t))}return n}function PC(e){let t=new Set,n=[],r=e?[e]:this.layout.getEntryPoints(),i=0;for(;i<r.length;){let e=r[i++],a=e.intern();if(!t.has(a)){t.add(a),n.push(e);for(let t of this.fileDependencies(e))r.push(t)}}return n}function FC(e){return this.bindFile(e),this.parseFile(e).getValue().ast}function IC(e){return this.interpretFile(e).getErrors()}function LC(e){return this.interpretFile(e).getWarnings()}function RC(e){return this.parseFile(e).getValue().tokens}function zC(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n).getFiltered(t);if(r)return this.interpretSymbol(r,e).getFiltered(t)}function BC(e){let n=this.parseFile(e).getValue().ast,r=this.nodeSymbol(n);if(r.hasValue(t))return;let i=this.symbolMembers(r.getValue());if(i.hasValue(t))return;let a=[];for(let e of i.getValue())a.push(e);return a}function VC(e){return this.parseFile(e).getValue().tokens.flatMap(e=>[...e.leadingInvalid,e,...e.trailingInvalid])}function HC(e){return this.parseFile(e).getValue().tokens.filter(sl)}function UC(e,t){let n=this.parse.ast(e);for(;;){let e=Nd(n).find(e=>yS(t,e));if(e===void 0)return n;if(e instanceof Xc)return e;n=e}}function WC(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 GC(){let e=vy(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 KC(e){let r=this.bindFile(e);if(r.getErrors().length>0)return r.map(()=>void 0);let i=this.parseFile(e).getValue().ast,a=this.nodeSymbol(i).getFiltered(t);return a?this.interpretSymbol(a,e).map(e=>e===t||!e?void 0:e):n.create(void 0)}function qC(){let e=[],r=[],i=new Set,a=[];for(let e of this.layout.getEntryPoints())for(let t of this.reachableFiles(e)){let e=t.intern();i.has(e)||(i.add(e),a.push(t))}let o=new Map;for(let i of a){let a=this.parseFile(i);e.push(...a.getErrors()),r.push(...a.getWarnings());let s=a.getValue().ast,c=this.nodeSymbol(s).getFiltered(t),l=c?this.interpretSymbol(c,i):n.create(t),u=l.getFiltered(t);u&&o.set(i.absolute,u),e.push(...l.getErrors()),r.push(...l.getWarnings())}let s={};for(let[e,t]of o)s[e]=t;return new n({files:s},e,r)}function JC(e){return this.parseFile(e).chain(({ast:e})=>this.validateNode(e).map(()=>void 0))}var YC=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===`
17
17
  `?(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 Xc.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(Xc.create(y.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(y.SPACE);break;case`\r`:break;case`
18
18
  `:this.addToken(y.NEWLINE);break;case` `:this.addToken(y.TAB);break;case`,`:this.addToken(y.COMMA);break;case`(`:this.addToken(y.LPAREN);break;case`)`:this.addToken(y.RPAREN);break;case`[`:this.addToken(y.LBRACKET);break;case`]`:this.addToken(y.RBRACKET);break;case`{`:this.addToken(y.LBRACE);break;case`}`:this.addToken(y.RBRACE);break;case`;`:this.addToken(y.SEMICOLON);break;case`:`:this.addToken(y.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(y.WILDCARD);break;default:if(Jc(e)){this.operator(e);break}if(Fl(e)){this.identifier();break}if(Il(e)){this.numericLiteralOrIdentifier();break}this.addToken(y.OP,!0),this.errors.push(new x(b.UNKNOWN_SYMBOL,`Unexpected token '${e}'`,this.createToken(y.OP,!0)));break}this.start={...this.current}}}gatherTrivia(){let e=!0,t=[],n,r=[];for(let i of this.tokens)qc(i)?(t.push(i),i.kind===y.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&&sl(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];sl(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(`
19
19
  `))&&!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 x(b.UNEXPECTED_EOF,`EOF reached while parsing`,t));return}if(this.check(`