@budibase/pro 3.4.20 → 3.4.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";var TI=Object.create;var Un=Object.defineProperty;var PI=Object.getOwnPropertyDescriptor;var qI=Object.getOwnPropertyNames;var CI=Object.getPrototypeOf,UI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),R=(e,t)=>{for(var r in t)Un(e,r,{get:t[r],enumerable:!0})},Ji=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of qI(t))!UI.call(e,a)&&a!==r&&Un(e,a,{get:()=>t[a],enumerable:!(n=PI(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?TI(CI(e)):{},Ji(t||!e||!e.__esModule?Un(r,"default",{value:e,enumerable:!0}):r,e)),LI=e=>Ji(Un({},"__esModule",{value:!0}),e);var Vn=u((J0,Uu)=>{"use strict";function Lb(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Uu.exports=Lb});var lo=u((X0,Lu)=>{"use strict";var Db=typeof global=="object"&&global&&global.Object===Object&&global;Lu.exports=Db});var Ae=u((Z0,Du)=>{"use strict";var Bb=lo(),Nb=typeof self=="object"&&self&&self.Object===Object&&self,Mb=Bb||Nb||Function("return this")();Du.exports=Mb});var Ut=u((eG,Bu)=>{"use strict";var Gb=Ae(),kb=Gb.Symbol;Bu.exports=kb});var ku=u((tG,Gu)=>{"use strict";var Nu=Ut(),Mu=Object.prototype,Fb=Mu.hasOwnProperty,Qb=Mu.toString,Jr=Nu?Nu.toStringTag:void 0;function $b(e){var t=Fb.call(e,Jr),r=e[Jr];try{e[Jr]=void 0;var n=!0}catch{}var a=Qb.call(e);return n&&(t?e[Jr]=r:delete e[Jr]),a}Gu.exports=$b});var Qu=u((rG,Fu)=>{"use strict";var jb=Object.prototype,Wb=jb.toString;function Vb(e){return Wb.call(e)}Fu.exports=Vb});var It=u((nG,Wu)=>{"use strict";var $u=Ut(),Kb=ku(),Yb=Qu(),Hb="[object Null]",zb="[object Undefined]",ju=$u?$u.toStringTag:void 0;function Jb(e){return e==null?e===void 0?zb:Hb:ju&&ju in Object(e)?Kb(e):Yb(e)}Wu.exports=Jb});var _e=u((aG,Vu)=>{"use strict";function Xb(e){return e!=null&&typeof e=="object"}Vu.exports=Xb});var Yu=u((oG,Ku)=>{"use strict";var Zb=It(),eS=_e(),tS="[object Arguments]";function rS(e){return eS(e)&&Zb(e)==tS}Ku.exports=rS});var Xr=u((sG,Ju)=>{"use strict";var Hu=Yu(),nS=_e(),zu=Object.prototype,aS=zu.hasOwnProperty,oS=zu.propertyIsEnumerable,sS=Hu(function(){return arguments}())?Hu:function(e){return nS(e)&&aS.call(e,"callee")&&!oS.call(e,"callee")};Ju.exports=sS});var de=u((iG,Xu)=>{"use strict";var iS=Array.isArray;Xu.exports=iS});var rp=u((uG,tp)=>{"use strict";var Zu=Ut(),uS=Xr(),pS=de(),ep=Zu?Zu.isConcatSpreadable:void 0;function cS(e){return pS(e)||uS(e)||!!(ep&&e&&e[ep])}tp.exports=cS});var fo=u((pG,ap)=>{"use strict";var lS=Vn(),dS=rp();function np(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=dS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?np(s,t-1,r,n,a):lS(a,s):n||(a[a.length]=s)}return a}ap.exports=np});var Zr=u((cG,op)=>{"use strict";function fS(e){return e}op.exports=fS});var Kn=u((lG,sp)=>{"use strict";function gS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}sp.exports=gS});var go=u((dG,up)=>{"use strict";var mS=Kn(),ip=Math.max;function yS(e,t,r){return t=ip(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=ip(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),mS(e,this,s)}}up.exports=yS});var cp=u((fG,pp)=>{"use strict";function hS(e){return function(){return e}}pp.exports=hS});var De=u((gG,lp)=>{"use strict";function AS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}lp.exports=AS});var en=u((mG,dp)=>{"use strict";var IS=It(),bS=De(),SS="[object AsyncFunction]",wS="[object Function]",vS="[object GeneratorFunction]",ES="[object Proxy]";function _S(e){if(!bS(e))return!1;var t=IS(e);return t==wS||t==vS||t==SS||t==ES}dp.exports=_S});var gp=u((yG,fp)=>{"use strict";var RS=Ae(),xS=RS["__core-js_shared__"];fp.exports=xS});var hp=u((hG,yp)=>{"use strict";var mo=gp(),mp=function(){var e=/[^.]+$/.exec(mo&&mo.keys&&mo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function OS(e){return!!mp&&mp in e}yp.exports=OS});var yo=u((AG,Ap)=>{"use strict";var TS=Function.prototype,PS=TS.toString;function qS(e){if(e!=null){try{return PS.call(e)}catch{}try{return e+""}catch{}}return""}Ap.exports=qS});var bp=u((IG,Ip)=>{"use strict";var CS=en(),US=hp(),LS=De(),DS=yo(),BS=/[\\^$.*+?()[\]{}|]/g,NS=/^\[object .+?Constructor\]$/,MS=Function.prototype,GS=Object.prototype,kS=MS.toString,FS=GS.hasOwnProperty,QS=RegExp("^"+kS.call(FS).replace(BS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function $S(e){if(!LS(e)||US(e))return!1;var t=CS(e)?QS:NS;return t.test(DS(e))}Ip.exports=$S});var wp=u((bG,Sp)=>{"use strict";function jS(e,t){return e?.[t]}Sp.exports=jS});var bt=u((SG,vp)=>{"use strict";var WS=bp(),VS=wp();function KS(e,t){var r=VS(e,t);return WS(r)?r:void 0}vp.exports=KS});var ho=u((wG,Ep)=>{"use strict";var YS=bt(),HS=function(){try{var e=YS(Object,"defineProperty");return e({},"",{}),e}catch{}}();Ep.exports=HS});var xp=u((vG,Rp)=>{"use strict";var zS=cp(),_p=ho(),JS=Zr(),XS=_p?function(e,t){return _p(e,"toString",{configurable:!0,enumerable:!1,value:zS(t),writable:!0})}:JS;Rp.exports=XS});var Ao=u((EG,Op)=>{"use strict";var ZS=800,ew=16,tw=Date.now;function rw(e){var t=0,r=0;return function(){var n=tw(),a=ew-(n-r);if(r=n,a>0){if(++t>=ZS)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Op.exports=rw});var Yn=u((_G,Tp)=>{"use strict";var nw=xp(),aw=Ao(),ow=aw(nw);Tp.exports=ow});var Io=u((RG,Pp)=>{"use strict";var sw=Zr(),iw=go(),uw=Yn();function pw(e,t){return uw(iw(e,t,sw),e+"")}Pp.exports=pw});var tn=u((xG,qp)=>{"use strict";var cw=bt(),lw=cw(Object,"create");qp.exports=lw});var Lp=u((OG,Up)=>{"use strict";var Cp=tn();function dw(){this.__data__=Cp?Cp(null):{},this.size=0}Up.exports=dw});var Bp=u((TG,Dp)=>{"use strict";function fw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Dp.exports=fw});var Mp=u((PG,Np)=>{"use strict";var gw=tn(),mw="__lodash_hash_undefined__",yw=Object.prototype,hw=yw.hasOwnProperty;function Aw(e){var t=this.__data__;if(gw){var r=t[e];return r===mw?void 0:r}return hw.call(t,e)?t[e]:void 0}Np.exports=Aw});var kp=u((qG,Gp)=>{"use strict";var Iw=tn(),bw=Object.prototype,Sw=bw.hasOwnProperty;function ww(e){var t=this.__data__;return Iw?t[e]!==void 0:Sw.call(t,e)}Gp.exports=ww});var Qp=u((CG,Fp)=>{"use strict";var vw=tn(),Ew="__lodash_hash_undefined__";function _w(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=vw&&t===void 0?Ew:t,this}Fp.exports=_w});var jp=u((UG,$p)=>{"use strict";var Rw=Lp(),xw=Bp(),Ow=Mp(),Tw=kp(),Pw=Qp();function er(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}er.prototype.clear=Rw;er.prototype.delete=xw;er.prototype.get=Ow;er.prototype.has=Tw;er.prototype.set=Pw;$p.exports=er});var Vp=u((LG,Wp)=>{"use strict";function qw(){this.__data__=[],this.size=0}Wp.exports=qw});var tr=u((DG,Kp)=>{"use strict";function Cw(e,t){return e===t||e!==e&&t!==t}Kp.exports=Cw});var rn=u((BG,Yp)=>{"use strict";var Uw=tr();function Lw(e,t){for(var r=e.length;r--;)if(Uw(e[r][0],t))return r;return-1}Yp.exports=Lw});var zp=u((NG,Hp)=>{"use strict";var Dw=rn(),Bw=Array.prototype,Nw=Bw.splice;function Mw(e){var t=this.__data__,r=Dw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Nw.call(t,r,1),--this.size,!0}Hp.exports=Mw});var Xp=u((MG,Jp)=>{"use strict";var Gw=rn();function kw(e){var t=this.__data__,r=Gw(t,e);return r<0?void 0:t[r][1]}Jp.exports=kw});var ec=u((GG,Zp)=>{"use strict";var Fw=rn();function Qw(e){return Fw(this.__data__,e)>-1}Zp.exports=Qw});var rc=u((kG,tc)=>{"use strict";var $w=rn();function jw(e,t){var r=this.__data__,n=$w(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}tc.exports=jw});var nn=u((FG,nc)=>{"use strict";var Ww=Vp(),Vw=zp(),Kw=Xp(),Yw=ec(),Hw=rc();function rr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}rr.prototype.clear=Ww;rr.prototype.delete=Vw;rr.prototype.get=Kw;rr.prototype.has=Yw;rr.prototype.set=Hw;nc.exports=rr});var Hn=u((QG,ac)=>{"use strict";var zw=bt(),Jw=Ae(),Xw=zw(Jw,"Map");ac.exports=Xw});var ic=u(($G,sc)=>{"use strict";var oc=jp(),Zw=nn(),ev=Hn();function tv(){this.size=0,this.__data__={hash:new oc,map:new(ev||Zw),string:new oc}}sc.exports=tv});var pc=u((jG,uc)=>{"use strict";function rv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}uc.exports=rv});var an=u((WG,cc)=>{"use strict";var nv=pc();function av(e,t){var r=e.__data__;return nv(t)?r[typeof t=="string"?"string":"hash"]:r.map}cc.exports=av});var dc=u((VG,lc)=>{"use strict";var ov=an();function sv(e){var t=ov(this,e).delete(e);return this.size-=t?1:0,t}lc.exports=sv});var gc=u((KG,fc)=>{"use strict";var iv=an();function uv(e){return iv(this,e).get(e)}fc.exports=uv});var yc=u((YG,mc)=>{"use strict";var pv=an();function cv(e){return pv(this,e).has(e)}mc.exports=cv});var Ac=u((HG,hc)=>{"use strict";var lv=an();function dv(e,t){var r=lv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}hc.exports=dv});var zn=u((zG,Ic)=>{"use strict";var fv=ic(),gv=dc(),mv=gc(),yv=yc(),hv=Ac();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=fv;nr.prototype.delete=gv;nr.prototype.get=mv;nr.prototype.has=yv;nr.prototype.set=hv;Ic.exports=nr});var Sc=u((JG,bc)=>{"use strict";var Av="__lodash_hash_undefined__";function Iv(e){return this.__data__.set(e,Av),this}bc.exports=Iv});var vc=u((XG,wc)=>{"use strict";function bv(e){return this.__data__.has(e)}wc.exports=bv});var bo=u((ZG,Ec)=>{"use strict";var Sv=zn(),wv=Sc(),vv=vc();function Jn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new Sv;++t<r;)this.add(e[t])}Jn.prototype.add=Jn.prototype.push=wv;Jn.prototype.has=vv;Ec.exports=Jn});var Rc=u((ek,_c)=>{"use strict";function Ev(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}_c.exports=Ev});var Oc=u((tk,xc)=>{"use strict";function _v(e){return e!==e}xc.exports=_v});var Pc=u((rk,Tc)=>{"use strict";function Rv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Tc.exports=Rv});var Cc=u((nk,qc)=>{"use strict";var xv=Rc(),Ov=Oc(),Tv=Pc();function Pv(e,t,r){return t===t?Tv(e,t,r):xv(e,Ov,r)}qc.exports=Pv});var So=u((ak,Uc)=>{"use strict";var qv=Cc();function Cv(e,t){var r=e==null?0:e.length;return!!r&&qv(e,t,0)>-1}Uc.exports=Cv});var Dc=u((ok,Lc)=>{"use strict";function Uv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Lc.exports=Uv});var wo=u((sk,Bc)=>{"use strict";function Lv(e,t){return e.has(t)}Bc.exports=Lv});var vo=u((ik,Nc)=>{"use strict";var Dv=bt(),Bv=Ae(),Nv=Dv(Bv,"Set");Nc.exports=Nv});var Eo=u((uk,Mc)=>{"use strict";function Mv(){}Mc.exports=Mv});var Xn=u((pk,Gc)=>{"use strict";function Gv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}Gc.exports=Gv});var Fc=u((ck,kc)=>{"use strict";var _o=vo(),kv=Eo(),Fv=Xn(),Qv=1/0,$v=_o&&1/Fv(new _o([,-0]))[1]==Qv?function(e){return new _o(e)}:kv;kc.exports=$v});var $c=u((lk,Qc)=>{"use strict";var jv=bo(),Wv=So(),Vv=Dc(),Kv=wo(),Yv=Fc(),Hv=Xn(),zv=200;function Jv(e,t,r){var n=-1,a=Wv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Vv;else if(o>=zv){var f=t?null:Yv(e);if(f)return Hv(f);i=!1,a=Kv,c=new jv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],m=t?t(d):d;if(d=r||d!==0?d:0,i&&m===m){for(var y=c.length;y--;)if(c[y]===m)continue e;t&&c.push(m),s.push(d)}else a(c,m,r)||(c!==s&&c.push(m),s.push(d))}return s}Qc.exports=Jv});var Zn=u((dk,jc)=>{"use strict";var Xv=9007199254740991;function Zv(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Xv}jc.exports=Zv});var ar=u((fk,Wc)=>{"use strict";var eE=en(),tE=Zn();function rE(e){return e!=null&&tE(e.length)&&!eE(e)}Wc.exports=rE});var Ro=u((gk,Vc)=>{"use strict";var nE=ar(),aE=_e();function oE(e){return aE(e)&&nE(e)}Vc.exports=oE});var Yc=u((mk,Kc)=>{"use strict";var sE=fo(),iE=Io(),uE=$c(),pE=Ro(),cE=iE(function(e){return uE(sE(e,1,pE,!0))});Kc.exports=cE});var zc=u((yk,Hc)=>{"use strict";var lE=nn();function dE(){this.__data__=new lE,this.size=0}Hc.exports=dE});var Xc=u((hk,Jc)=>{"use strict";function fE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Jc.exports=fE});var el=u((Ak,Zc)=>{"use strict";function gE(e){return this.__data__.get(e)}Zc.exports=gE});var rl=u((Ik,tl)=>{"use strict";function mE(e){return this.__data__.has(e)}tl.exports=mE});var al=u((bk,nl)=>{"use strict";var yE=nn(),hE=Hn(),AE=zn(),IE=200;function bE(e,t){var r=this.__data__;if(r instanceof yE){var n=r.__data__;if(!hE||n.length<IE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new AE(n)}return r.set(e,t),this.size=r.size,this}nl.exports=bE});var on=u((Sk,ol)=>{"use strict";var SE=nn(),wE=zc(),vE=Xc(),EE=el(),_E=rl(),RE=al();function or(e){var t=this.__data__=new SE(e);this.size=t.size}or.prototype.clear=wE;or.prototype.delete=vE;or.prototype.get=EE;or.prototype.has=_E;or.prototype.set=RE;ol.exports=or});var sn=u((wk,il)=>{"use strict";var sl=ho();function xE(e,t,r){t=="__proto__"&&sl?sl(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}il.exports=xE});var xo=u((vk,ul)=>{"use strict";var OE=sn(),TE=tr();function PE(e,t,r){(r!==void 0&&!TE(e[t],r)||r===void 0&&!(t in e))&&OE(e,t,r)}ul.exports=PE});var cl=u((Ek,pl)=>{"use strict";function qE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}pl.exports=qE});var Oo=u((_k,ll)=>{"use strict";var CE=cl(),UE=CE();ll.exports=UE});var To=u((un,sr)=>{"use strict";var LE=Ae(),ml=typeof un=="object"&&un&&!un.nodeType&&un,dl=ml&&typeof sr=="object"&&sr&&!sr.nodeType&&sr,DE=dl&&dl.exports===ml,fl=DE?LE.Buffer:void 0,gl=fl?fl.allocUnsafe:void 0;function BE(e,t){if(t)return e.slice();var r=e.length,n=gl?gl(r):new e.constructor(r);return e.copy(n),n}sr.exports=BE});var Po=u((Rk,yl)=>{"use strict";var NE=Ae(),ME=NE.Uint8Array;yl.exports=ME});var ea=u((xk,Al)=>{"use strict";var hl=Po();function GE(e){var t=new e.constructor(e.byteLength);return new hl(t).set(new hl(e)),t}Al.exports=GE});var qo=u((Ok,Il)=>{"use strict";var kE=ea();function FE(e,t){var r=t?kE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}Il.exports=FE});var ir=u((Tk,bl)=>{"use strict";function QE(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}bl.exports=QE});var pn=u((Pk,wl)=>{"use strict";var $E=De(),Sl=Object.create,jE=function(){function e(){}return function(t){if(!$E(t))return{};if(Sl)return Sl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();wl.exports=jE});var Co=u((qk,vl)=>{"use strict";function WE(e,t){return function(r){return e(t(r))}}vl.exports=WE});var ta=u((Ck,El)=>{"use strict";var VE=Co(),KE=VE(Object.getPrototypeOf,Object);El.exports=KE});var ra=u((Uk,_l)=>{"use strict";var YE=Object.prototype;function HE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||YE;return e===r}_l.exports=HE});var Uo=u((Lk,Rl)=>{"use strict";var zE=pn(),JE=ta(),XE=ra();function ZE(e){return typeof e.constructor=="function"&&!XE(e)?zE(JE(e)):{}}Rl.exports=ZE});var Ol=u((Dk,xl)=>{"use strict";function e_(){return!1}xl.exports=e_});var ln=u((cn,ur)=>{"use strict";var t_=Ae(),r_=Ol(),ql=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Tl=ql&&typeof ur=="object"&&ur&&!ur.nodeType&&ur,n_=Tl&&Tl.exports===ql,Pl=n_?t_.Buffer:void 0,a_=Pl?Pl.isBuffer:void 0,o_=a_||r_;ur.exports=o_});var Lo=u((Bk,Ul)=>{"use strict";var s_=It(),i_=ta(),u_=_e(),p_="[object Object]",c_=Function.prototype,l_=Object.prototype,Cl=c_.toString,d_=l_.hasOwnProperty,f_=Cl.call(Object);function g_(e){if(!u_(e)||s_(e)!=p_)return!1;var t=i_(e);if(t===null)return!0;var r=d_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Cl.call(r)==f_}Ul.exports=g_});var Dl=u((Nk,Ll)=>{"use strict";var m_=It(),y_=Zn(),h_=_e(),A_="[object Arguments]",I_="[object Array]",b_="[object Boolean]",S_="[object Date]",w_="[object Error]",v_="[object Function]",E_="[object Map]",__="[object Number]",R_="[object Object]",x_="[object RegExp]",O_="[object Set]",T_="[object String]",P_="[object WeakMap]",q_="[object ArrayBuffer]",C_="[object DataView]",U_="[object Float32Array]",L_="[object Float64Array]",D_="[object Int8Array]",B_="[object Int16Array]",N_="[object Int32Array]",M_="[object Uint8Array]",G_="[object Uint8ClampedArray]",k_="[object Uint16Array]",F_="[object Uint32Array]",j={};j[U_]=j[L_]=j[D_]=j[B_]=j[N_]=j[M_]=j[G_]=j[k_]=j[F_]=!0;j[A_]=j[I_]=j[q_]=j[b_]=j[C_]=j[S_]=j[w_]=j[v_]=j[E_]=j[__]=j[R_]=j[x_]=j[O_]=j[T_]=j[P_]=!1;function Q_(e){return h_(e)&&y_(e.length)&&!!j[m_(e)]}Ll.exports=Q_});var na=u((Mk,Bl)=>{"use strict";function $_(e){return function(t){return e(t)}}Bl.exports=$_});var aa=u((dn,pr)=>{"use strict";var j_=lo(),Nl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Nl&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,W_=fn&&fn.exports===Nl,Do=W_&&j_.process,V_=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||Do&&Do.binding&&Do.binding("util")}catch{}}();pr.exports=V_});var oa=u((Gk,kl)=>{"use strict";var K_=Dl(),Y_=na(),Ml=aa(),Gl=Ml&&Ml.isTypedArray,H_=Gl?Y_(Gl):K_;kl.exports=H_});var Bo=u((kk,Fl)=>{"use strict";function z_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Fl.exports=z_});var No=u((Fk,Ql)=>{"use strict";var J_=sn(),X_=tr(),Z_=Object.prototype,eR=Z_.hasOwnProperty;function tR(e,t,r){var n=e[t];(!(eR.call(e,t)&&X_(n,r))||r===void 0&&!(t in e))&&J_(e,t,r)}Ql.exports=tR});var cr=u((Qk,$l)=>{"use strict";var rR=No(),nR=sn();function aR(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?nR(r,s,c):rR(r,s,c)}return r}$l.exports=aR});var Wl=u(($k,jl)=>{"use strict";function oR(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}jl.exports=oR});var gn=u((jk,Vl)=>{"use strict";var sR=9007199254740991,iR=/^(?:0|[1-9]\d*)$/;function uR(e,t){var r=typeof e;return t=t??sR,!!t&&(r=="number"||r!="symbol"&&iR.test(e))&&e>-1&&e%1==0&&e<t}Vl.exports=uR});var Mo=u((Wk,Kl)=>{"use strict";var pR=Wl(),cR=Xr(),lR=de(),dR=ln(),fR=gn(),gR=oa(),mR=Object.prototype,yR=mR.hasOwnProperty;function hR(e,t){var r=lR(e),n=!r&&cR(e),a=!r&&!n&&dR(e),o=!r&&!n&&!a&&gR(e),i=r||n||a||o,s=i?pR(e.length,String):[],c=s.length;for(var f in e)(t||yR.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||fR(f,c)))&&s.push(f);return s}Kl.exports=hR});var Hl=u((Vk,Yl)=>{"use strict";function AR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Yl.exports=AR});var Jl=u((Kk,zl)=>{"use strict";var IR=De(),bR=ra(),SR=Hl(),wR=Object.prototype,vR=wR.hasOwnProperty;function ER(e){if(!IR(e))return SR(e);var t=bR(e),r=[];for(var n in e)n=="constructor"&&(t||!vR.call(e,n))||r.push(n);return r}zl.exports=ER});var lr=u((Yk,Xl)=>{"use strict";var _R=Mo(),RR=Jl(),xR=ar();function OR(e){return xR(e)?_R(e,!0):RR(e)}Xl.exports=OR});var ed=u((Hk,Zl)=>{"use strict";var TR=cr(),PR=lr();function qR(e){return TR(e,PR(e))}Zl.exports=qR});var sd=u((zk,od)=>{"use strict";var td=xo(),CR=To(),UR=qo(),LR=ir(),DR=Uo(),rd=Xr(),nd=de(),BR=Ro(),NR=ln(),MR=en(),GR=De(),kR=Lo(),FR=oa(),ad=Bo(),QR=ed();function $R(e,t,r,n,a,o,i){var s=ad(e,r),c=ad(t,r),f=i.get(c);if(f){td(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,m=d===void 0;if(m){var y=nd(c),v=!y&&NR(c),C=!y&&!v&&FR(c);d=c,y||v||C?nd(s)?d=s:BR(s)?d=LR(s):v?(m=!1,d=CR(c,!0)):C?(m=!1,d=UR(c,!0)):d=[]:kR(c)||rd(c)?(d=s,rd(s)?d=QR(s):(!GR(s)||MR(s))&&(d=DR(c))):m=!1}m&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),td(e,r,d)}od.exports=$R});var pd=u((Jk,ud)=>{"use strict";var jR=on(),WR=xo(),VR=Oo(),KR=sd(),YR=De(),HR=lr(),zR=Bo();function id(e,t,r,n,a){e!==t&&VR(t,function(o,i){if(a||(a=new jR),YR(o))KR(e,t,i,r,id,n,a);else{var s=n?n(zR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),WR(e,i,s)}},HR)}ud.exports=id});var ld=u((Xk,cd)=>{"use strict";var JR=tr(),XR=ar(),ZR=gn(),ex=De();function tx(e,t,r){if(!ex(r))return!1;var n=typeof t;return(n=="number"?XR(r)&&ZR(t,r.length):n=="string"&&t in r)?JR(r[t],e):!1}cd.exports=tx});var fd=u((Zk,dd)=>{"use strict";var rx=Io(),nx=ld();function ax(e){return rx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&nx(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}dd.exports=ax});var Go=u((eF,gd)=>{"use strict";var ox=pd(),sx=fd(),ix=sx(function(e,t,r){ox(e,t,r)});gd.exports=ix});var mf=u(we=>{"use strict";we.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};we.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};we.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};we.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Us=u((SQ,yf)=>{"use strict";yf.exports={}});var bf=u((wQ,If)=>{"use strict";var ie=mf(),jO=Us(),hf=Array.prototype.push;function WO(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ls(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function Af(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function VO(e){return function(t){return e({},t)}}function KO(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&hf.apply(i,o),t!=n&&hf.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ds(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Bs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:jO,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,m=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},v=y.ary,C=y.assign,D=y.clone,L=y.curry,U=y.forEach,F=y.isArray,be=y.isError,ee=y.isFunction,ke=y.isWeakMap,He=y.keys,ze=y.rearg,W=y.toInteger,B=y.toPath,Ot=He(ie.aryMethod),Cn={castArray:function(w){return function(){var A=arguments[0];return F(A)?w(Af(A)):w.apply(void 0,arguments)}},iteratee:function(w){return function(){var A=arguments[0],I=arguments[1],E=w(A,I),P=E.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,P&&P<=I?E:Ls(E,I)):E}},mixin:function(w){return function(A){var I=this;if(!ee(I))return w(I,Object(A));var E=[];return U(He(A),function(P){ee(A[P])&&E.push([P,I.prototype[P]])}),w(I,Object(A)),U(E,function(P){var Z=P[1];ee(Z)?I.prototype[P[0]]=Z:delete I.prototype[P[0]]}),I}},nthArg:function(w){return function(A){var I=A<0?1:W(A)+1;return L(w(A),I)}},rearg:function(w){return function(A,I){var E=I?I.length:0;return L(w(A,I),E)}},runInContext:function(w){return function(A){return Bs(e,w(A),n)}}};function x(w,A){if(i.cap){var I=ie.iterateeRearg[w];if(I)return Y(A,I);var E=!a&&ie.iterateeAry[w];if(E)return M(A,E)}return A}function S(w,A,I){return c||i.curry&&I>1?L(A,I):A}function h(w,A,I){if(i.fixed&&(f||!ie.skipFixed[w])){var E=ie.methodSpread[w],P=E&&E.start;return P===void 0?v(A,I):KO(A,P)}return A}function _(w,A,I){return i.rearg&&I>1&&(d||!ie.skipRearg[w])?ze(A,ie.methodRearg[w]||ie.aryRearg[I]):A}function b(w,A){A=B(A);for(var I=-1,E=A.length,P=E-1,Z=D(Object(w)),me=Z;me!=null&&++I<E;){var Ce=A[I],Je=me[Ce];Je!=null&&!(ee(Je)||be(Je)||ke(Je))&&(me[Ce]=D(I==P?Je:Object(Je))),me=me[Ce]}return Z}function T(w){return Q.runInContext.convert(w)(void 0)}function O(w,A){var I=ie.aliasToReal[w]||w,E=ie.remap[I]||I,P=n;return function(Z){var me=a?m:y,Ce=a?m[E]:A,Je=C(C({},P),Z);return Bs(me,I,Ce,Je)}}function M(w,A){return X(w,function(I){return typeof I=="function"?Ls(I,A):I})}function Y(w,A){return X(w,function(I){var E=A.length;return WO(ze(Ls(I,E),A),E)})}function X(w,A){return function(){var I=arguments.length;if(!I)return w();for(var E=Array(I);I--;)E[I]=arguments[I];var P=i.rearg?0:I-1;return E[P]=A(E[P]),w.apply(void 0,E)}}function ae(w,A,I){var E,P=ie.aliasToReal[w]||w,Z=A,me=Cn[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Ds(A,Af):ie.mutate.object[P]?Z=Ds(A,VO(A)):ie.mutate.set[P]&&(Z=Ds(A,b))),U(Ot,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(P==Je){var zi=ie.methodSpread[P],OI=zi&&zi.afterRearg;return E=OI?h(P,_(P,Z,Ce),Ce):_(P,h(P,Z,Ce),Ce),E=x(P,E),E=S(P,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=O(P,A),E.placeholder=A.placeholder=I,E}if(!o)return ae(t,r,s);var Q=r,qe=[];return U(Ot,function(w){U(ie.aryMethod[w],function(A){var I=Q[ie.remap[A]||A];I&&qe.push([A,ae(A,I,Q)])})}),U(He(Q),function(w){var A=Q[w];if(typeof A=="function"){for(var I=qe.length;I--;)if(qe[I][0]==w)return;A.convert=O(w,A),qe.push([w,A])}}),U(qe,function(w){Q[w[0]]=w[1]}),Q.convert=T,Q.placeholder=Q,U(He(Q),function(w){U(ie.realToAlias[w]||[],function(A){Q[A]=Q[w]})}),Q}If.exports=Bs});var Ns=u((vQ,Sf)=>{"use strict";var YO=bt(),HO=Ae(),zO=YO(HO,"WeakMap");Sf.exports=zO});var Ms=u((EQ,vf)=>{"use strict";var wf=Ns(),JO=wf&&new wf;vf.exports=JO});var Gs=u((_Q,_f)=>{"use strict";var XO=Zr(),Ef=Ms(),ZO=Ef?function(e,t){return Ef.set(e,t),e}:XO;_f.exports=ZO});var Rn=u((RQ,Rf)=>{"use strict";var eT=pn(),tT=De();function rT(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eT(e.prototype),n=e.apply(r,t);return tT(n)?n:r}}Rf.exports=rT});var Of=u((xQ,xf)=>{"use strict";var nT=Rn(),aT=Ae(),oT=1;function sT(e,t,r){var n=t&oT,a=nT(e);function o(){var i=this&&this!==aT&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}xf.exports=sT});var ks=u((OQ,Tf)=>{"use strict";var iT=Math.max;function uT(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=iT(o-i,0),d=Array(c+f),m=!n;++s<c;)d[s]=t[s];for(;++a<i;)(m||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Tf.exports=uT});var Fs=u((TQ,Pf)=>{"use strict";var pT=Math.max;function cT(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=pT(o-s,0),m=Array(d+f),y=!n;++a<d;)m[a]=e[a];for(var v=a;++c<f;)m[v+c]=t[c];for(;++i<s;)(y||a<o)&&(m[v+r[i]]=e[a++]);return m}Pf.exports=cT});var Cf=u((PQ,qf)=>{"use strict";function lT(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}qf.exports=lT});var wa=u((qQ,Uf)=>{"use strict";function dT(){}Uf.exports=dT});var Ea=u((CQ,Lf)=>{"use strict";var fT=pn(),gT=wa(),mT=4294967295;function va(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=mT,this.__views__=[]}va.prototype=fT(gT.prototype);va.prototype.constructor=va;Lf.exports=va});var Qs=u((UQ,Bf)=>{"use strict";var Df=Ms(),yT=Eo(),hT=Df?function(e){return Df.get(e)}:yT;Bf.exports=hT});var Mf=u((LQ,Nf)=>{"use strict";var AT={};Nf.exports=AT});var Ff=u((DQ,kf)=>{"use strict";var Gf=Mf(),IT=Object.prototype,bT=IT.hasOwnProperty;function ST(e){for(var t=e.name+"",r=Gf[t],n=bT.call(Gf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}kf.exports=ST});var $s=u((BQ,Qf)=>{"use strict";var wT=pn(),vT=wa();function _a(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}_a.prototype=wT(vT.prototype);_a.prototype.constructor=_a;Qf.exports=_a});var jf=u((NQ,$f)=>{"use strict";var ET=Ea(),_T=$s(),RT=ir();function xT(e){if(e instanceof ET)return e.clone();var t=new _T(e.__wrapped__,e.__chain__);return t.__actions__=RT(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}$f.exports=xT});var Kf=u((MQ,Vf)=>{"use strict";var OT=Ea(),Wf=$s(),TT=wa(),PT=de(),qT=_e(),CT=jf(),UT=Object.prototype,LT=UT.hasOwnProperty;function Ra(e){if(qT(e)&&!PT(e)&&!(e instanceof OT)){if(e instanceof Wf)return e;if(LT.call(e,"__wrapped__"))return CT(e)}return new Wf(e)}Ra.prototype=TT.prototype;Ra.prototype.constructor=Ra;Vf.exports=Ra});var Hf=u((GQ,Yf)=>{"use strict";var DT=Ea(),BT=Qs(),NT=Ff(),MT=Kf();function GT(e){var t=NT(e),r=MT[t];if(typeof r!="function"||!(t in DT.prototype))return!1;if(e===r)return!0;var n=BT(r);return!!n&&e===n[0]}Yf.exports=GT});var Ws=u((kQ,zf)=>{"use strict";var kT=Gs(),FT=Ao(),QT=FT(kT);zf.exports=QT});var Xf=u((FQ,Jf)=>{"use strict";var $T=/\{\n\/\* \[wrapped with (.+)\] \*/,jT=/,? & /;function WT(e){var t=e.match($T);return t?t[1].split(jT):[]}Jf.exports=WT});var eg=u((QQ,Zf)=>{"use strict";var VT=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function KT(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(VT,`{
|
|
1
|
+
"use strict";var PI=Object.create;var Un=Object.defineProperty;var qI=Object.getOwnPropertyDescriptor;var CI=Object.getOwnPropertyNames;var UI=Object.getPrototypeOf,LI=Object.prototype.hasOwnProperty;var u=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),R=(e,t)=>{for(var r in t)Un(e,r,{get:t[r],enumerable:!0})},Ji=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of CI(t))!LI.call(e,a)&&a!==r&&Un(e,a,{get:()=>t[a],enumerable:!(n=qI(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?PI(UI(e)):{},Ji(t||!e||!e.__esModule?Un(r,"default",{value:e,enumerable:!0}):r,e)),DI=e=>Ji(Un({},"__esModule",{value:!0}),e);var Vn=u((X0,Lu)=>{"use strict";function Db(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Lu.exports=Db});var lo=u((Z0,Du)=>{"use strict";var Bb=typeof global=="object"&&global&&global.Object===Object&&global;Du.exports=Bb});var Ae=u((eG,Bu)=>{"use strict";var Nb=lo(),Mb=typeof self=="object"&&self&&self.Object===Object&&self,Gb=Nb||Mb||Function("return this")();Bu.exports=Gb});var Ut=u((tG,Nu)=>{"use strict";var kb=Ae(),Fb=kb.Symbol;Nu.exports=Fb});var Fu=u((rG,ku)=>{"use strict";var Mu=Ut(),Gu=Object.prototype,Qb=Gu.hasOwnProperty,$b=Gu.toString,Jr=Mu?Mu.toStringTag:void 0;function jb(e){var t=Qb.call(e,Jr),r=e[Jr];try{e[Jr]=void 0;var n=!0}catch{}var a=$b.call(e);return n&&(t?e[Jr]=r:delete e[Jr]),a}ku.exports=jb});var $u=u((nG,Qu)=>{"use strict";var Wb=Object.prototype,Vb=Wb.toString;function Kb(e){return Vb.call(e)}Qu.exports=Kb});var It=u((aG,Vu)=>{"use strict";var ju=Ut(),Yb=Fu(),Hb=$u(),zb="[object Null]",Jb="[object Undefined]",Wu=ju?ju.toStringTag:void 0;function Xb(e){return e==null?e===void 0?Jb:zb:Wu&&Wu in Object(e)?Yb(e):Hb(e)}Vu.exports=Xb});var _e=u((oG,Ku)=>{"use strict";function Zb(e){return e!=null&&typeof e=="object"}Ku.exports=Zb});var Hu=u((sG,Yu)=>{"use strict";var eS=It(),tS=_e(),rS="[object Arguments]";function nS(e){return tS(e)&&eS(e)==rS}Yu.exports=nS});var Xr=u((iG,Xu)=>{"use strict";var zu=Hu(),aS=_e(),Ju=Object.prototype,oS=Ju.hasOwnProperty,sS=Ju.propertyIsEnumerable,iS=zu(function(){return arguments}())?zu:function(e){return aS(e)&&oS.call(e,"callee")&&!sS.call(e,"callee")};Xu.exports=iS});var de=u((uG,Zu)=>{"use strict";var uS=Array.isArray;Zu.exports=uS});var np=u((pG,rp)=>{"use strict";var ep=Ut(),pS=Xr(),cS=de(),tp=ep?ep.isConcatSpreadable:void 0;function lS(e){return cS(e)||pS(e)||!!(tp&&e&&e[tp])}rp.exports=lS});var fo=u((cG,op)=>{"use strict";var dS=Vn(),fS=np();function ap(e,t,r,n,a){var o=-1,i=e.length;for(r||(r=fS),a||(a=[]);++o<i;){var s=e[o];t>0&&r(s)?t>1?ap(s,t-1,r,n,a):dS(a,s):n||(a[a.length]=s)}return a}op.exports=ap});var Zr=u((lG,sp)=>{"use strict";function gS(e){return e}sp.exports=gS});var Kn=u((dG,ip)=>{"use strict";function mS(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}ip.exports=mS});var go=u((fG,pp)=>{"use strict";var yS=Kn(),up=Math.max;function hS(e,t,r){return t=up(t===void 0?e.length-1:t,0),function(){for(var n=arguments,a=-1,o=up(n.length-t,0),i=Array(o);++a<o;)i[a]=n[t+a];a=-1;for(var s=Array(t+1);++a<t;)s[a]=n[a];return s[t]=r(i),yS(e,this,s)}}pp.exports=hS});var lp=u((gG,cp)=>{"use strict";function AS(e){return function(){return e}}cp.exports=AS});var De=u((mG,dp)=>{"use strict";function IS(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}dp.exports=IS});var en=u((yG,fp)=>{"use strict";var bS=It(),SS=De(),wS="[object AsyncFunction]",vS="[object Function]",ES="[object GeneratorFunction]",_S="[object Proxy]";function RS(e){if(!SS(e))return!1;var t=bS(e);return t==vS||t==ES||t==wS||t==_S}fp.exports=RS});var mp=u((hG,gp)=>{"use strict";var xS=Ae(),TS=xS["__core-js_shared__"];gp.exports=TS});var Ap=u((AG,hp)=>{"use strict";var mo=mp(),yp=function(){var e=/[^.]+$/.exec(mo&&mo.keys&&mo.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function OS(e){return!!yp&&yp in e}hp.exports=OS});var yo=u((IG,Ip)=>{"use strict";var PS=Function.prototype,qS=PS.toString;function CS(e){if(e!=null){try{return qS.call(e)}catch{}try{return e+""}catch{}}return""}Ip.exports=CS});var Sp=u((bG,bp)=>{"use strict";var US=en(),LS=Ap(),DS=De(),BS=yo(),NS=/[\\^$.*+?()[\]{}|]/g,MS=/^\[object .+?Constructor\]$/,GS=Function.prototype,kS=Object.prototype,FS=GS.toString,QS=kS.hasOwnProperty,$S=RegExp("^"+FS.call(QS).replace(NS,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function jS(e){if(!DS(e)||LS(e))return!1;var t=US(e)?$S:MS;return t.test(BS(e))}bp.exports=jS});var vp=u((SG,wp)=>{"use strict";function WS(e,t){return e?.[t]}wp.exports=WS});var bt=u((wG,Ep)=>{"use strict";var VS=Sp(),KS=vp();function YS(e,t){var r=KS(e,t);return VS(r)?r:void 0}Ep.exports=YS});var ho=u((vG,_p)=>{"use strict";var HS=bt(),zS=function(){try{var e=HS(Object,"defineProperty");return e({},"",{}),e}catch{}}();_p.exports=zS});var Tp=u((EG,xp)=>{"use strict";var JS=lp(),Rp=ho(),XS=Zr(),ZS=Rp?function(e,t){return Rp(e,"toString",{configurable:!0,enumerable:!1,value:JS(t),writable:!0})}:XS;xp.exports=ZS});var Ao=u((_G,Op)=>{"use strict";var ew=800,tw=16,rw=Date.now;function nw(e){var t=0,r=0;return function(){var n=rw(),a=tw-(n-r);if(r=n,a>0){if(++t>=ew)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}Op.exports=nw});var Yn=u((RG,Pp)=>{"use strict";var aw=Tp(),ow=Ao(),sw=ow(aw);Pp.exports=sw});var Io=u((xG,qp)=>{"use strict";var iw=Zr(),uw=go(),pw=Yn();function cw(e,t){return pw(uw(e,t,iw),e+"")}qp.exports=cw});var tn=u((TG,Cp)=>{"use strict";var lw=bt(),dw=lw(Object,"create");Cp.exports=dw});var Dp=u((OG,Lp)=>{"use strict";var Up=tn();function fw(){this.__data__=Up?Up(null):{},this.size=0}Lp.exports=fw});var Np=u((PG,Bp)=>{"use strict";function gw(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}Bp.exports=gw});var Gp=u((qG,Mp)=>{"use strict";var mw=tn(),yw="__lodash_hash_undefined__",hw=Object.prototype,Aw=hw.hasOwnProperty;function Iw(e){var t=this.__data__;if(mw){var r=t[e];return r===yw?void 0:r}return Aw.call(t,e)?t[e]:void 0}Mp.exports=Iw});var Fp=u((CG,kp)=>{"use strict";var bw=tn(),Sw=Object.prototype,ww=Sw.hasOwnProperty;function vw(e){var t=this.__data__;return bw?t[e]!==void 0:ww.call(t,e)}kp.exports=vw});var $p=u((UG,Qp)=>{"use strict";var Ew=tn(),_w="__lodash_hash_undefined__";function Rw(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Ew&&t===void 0?_w:t,this}Qp.exports=Rw});var Wp=u((LG,jp)=>{"use strict";var xw=Dp(),Tw=Np(),Ow=Gp(),Pw=Fp(),qw=$p();function er(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}er.prototype.clear=xw;er.prototype.delete=Tw;er.prototype.get=Ow;er.prototype.has=Pw;er.prototype.set=qw;jp.exports=er});var Kp=u((DG,Vp)=>{"use strict";function Cw(){this.__data__=[],this.size=0}Vp.exports=Cw});var tr=u((BG,Yp)=>{"use strict";function Uw(e,t){return e===t||e!==e&&t!==t}Yp.exports=Uw});var rn=u((NG,Hp)=>{"use strict";var Lw=tr();function Dw(e,t){for(var r=e.length;r--;)if(Lw(e[r][0],t))return r;return-1}Hp.exports=Dw});var Jp=u((MG,zp)=>{"use strict";var Bw=rn(),Nw=Array.prototype,Mw=Nw.splice;function Gw(e){var t=this.__data__,r=Bw(t,e);if(r<0)return!1;var n=t.length-1;return r==n?t.pop():Mw.call(t,r,1),--this.size,!0}zp.exports=Gw});var Zp=u((GG,Xp)=>{"use strict";var kw=rn();function Fw(e){var t=this.__data__,r=kw(t,e);return r<0?void 0:t[r][1]}Xp.exports=Fw});var tc=u((kG,ec)=>{"use strict";var Qw=rn();function $w(e){return Qw(this.__data__,e)>-1}ec.exports=$w});var nc=u((FG,rc)=>{"use strict";var jw=rn();function Ww(e,t){var r=this.__data__,n=jw(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}rc.exports=Ww});var nn=u((QG,ac)=>{"use strict";var Vw=Kp(),Kw=Jp(),Yw=Zp(),Hw=tc(),zw=nc();function rr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}rr.prototype.clear=Vw;rr.prototype.delete=Kw;rr.prototype.get=Yw;rr.prototype.has=Hw;rr.prototype.set=zw;ac.exports=rr});var Hn=u(($G,oc)=>{"use strict";var Jw=bt(),Xw=Ae(),Zw=Jw(Xw,"Map");oc.exports=Zw});var uc=u((jG,ic)=>{"use strict";var sc=Wp(),ev=nn(),tv=Hn();function rv(){this.size=0,this.__data__={hash:new sc,map:new(tv||ev),string:new sc}}ic.exports=rv});var cc=u((WG,pc)=>{"use strict";function nv(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}pc.exports=nv});var an=u((VG,lc)=>{"use strict";var av=cc();function ov(e,t){var r=e.__data__;return av(t)?r[typeof t=="string"?"string":"hash"]:r.map}lc.exports=ov});var fc=u((KG,dc)=>{"use strict";var sv=an();function iv(e){var t=sv(this,e).delete(e);return this.size-=t?1:0,t}dc.exports=iv});var mc=u((YG,gc)=>{"use strict";var uv=an();function pv(e){return uv(this,e).get(e)}gc.exports=pv});var hc=u((HG,yc)=>{"use strict";var cv=an();function lv(e){return cv(this,e).has(e)}yc.exports=lv});var Ic=u((zG,Ac)=>{"use strict";var dv=an();function fv(e,t){var r=dv(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}Ac.exports=fv});var zn=u((JG,bc)=>{"use strict";var gv=uc(),mv=fc(),yv=mc(),hv=hc(),Av=Ic();function nr(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}nr.prototype.clear=gv;nr.prototype.delete=mv;nr.prototype.get=yv;nr.prototype.has=hv;nr.prototype.set=Av;bc.exports=nr});var wc=u((XG,Sc)=>{"use strict";var Iv="__lodash_hash_undefined__";function bv(e){return this.__data__.set(e,Iv),this}Sc.exports=bv});var Ec=u((ZG,vc)=>{"use strict";function Sv(e){return this.__data__.has(e)}vc.exports=Sv});var bo=u((ek,_c)=>{"use strict";var wv=zn(),vv=wc(),Ev=Ec();function Jn(e){var t=-1,r=e==null?0:e.length;for(this.__data__=new wv;++t<r;)this.add(e[t])}Jn.prototype.add=Jn.prototype.push=vv;Jn.prototype.has=Ev;_c.exports=Jn});var xc=u((tk,Rc)=>{"use strict";function _v(e,t,r,n){for(var a=e.length,o=r+(n?1:-1);n?o--:++o<a;)if(t(e[o],o,e))return o;return-1}Rc.exports=_v});var Oc=u((rk,Tc)=>{"use strict";function Rv(e){return e!==e}Tc.exports=Rv});var qc=u((nk,Pc)=>{"use strict";function xv(e,t,r){for(var n=r-1,a=e.length;++n<a;)if(e[n]===t)return n;return-1}Pc.exports=xv});var Uc=u((ak,Cc)=>{"use strict";var Tv=xc(),Ov=Oc(),Pv=qc();function qv(e,t,r){return t===t?Pv(e,t,r):Tv(e,Ov,r)}Cc.exports=qv});var So=u((ok,Lc)=>{"use strict";var Cv=Uc();function Uv(e,t){var r=e==null?0:e.length;return!!r&&Cv(e,t,0)>-1}Lc.exports=Uv});var Bc=u((sk,Dc)=>{"use strict";function Lv(e,t,r){for(var n=-1,a=e==null?0:e.length;++n<a;)if(r(t,e[n]))return!0;return!1}Dc.exports=Lv});var wo=u((ik,Nc)=>{"use strict";function Dv(e,t){return e.has(t)}Nc.exports=Dv});var vo=u((uk,Mc)=>{"use strict";var Bv=bt(),Nv=Ae(),Mv=Bv(Nv,"Set");Mc.exports=Mv});var Eo=u((pk,Gc)=>{"use strict";function Gv(){}Gc.exports=Gv});var Xn=u((ck,kc)=>{"use strict";function kv(e){var t=-1,r=Array(e.size);return e.forEach(function(n){r[++t]=n}),r}kc.exports=kv});var Qc=u((lk,Fc)=>{"use strict";var _o=vo(),Fv=Eo(),Qv=Xn(),$v=1/0,jv=_o&&1/Qv(new _o([,-0]))[1]==$v?function(e){return new _o(e)}:Fv;Fc.exports=jv});var jc=u((dk,$c)=>{"use strict";var Wv=bo(),Vv=So(),Kv=Bc(),Yv=wo(),Hv=Qc(),zv=Xn(),Jv=200;function Xv(e,t,r){var n=-1,a=Vv,o=e.length,i=!0,s=[],c=s;if(r)i=!1,a=Kv;else if(o>=Jv){var f=t?null:Hv(e);if(f)return zv(f);i=!1,a=Yv,c=new Wv}else c=t?[]:s;e:for(;++n<o;){var d=e[n],m=t?t(d):d;if(d=r||d!==0?d:0,i&&m===m){for(var y=c.length;y--;)if(c[y]===m)continue e;t&&c.push(m),s.push(d)}else a(c,m,r)||(c!==s&&c.push(m),s.push(d))}return s}$c.exports=Xv});var Zn=u((fk,Wc)=>{"use strict";var Zv=9007199254740991;function eE(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Zv}Wc.exports=eE});var ar=u((gk,Vc)=>{"use strict";var tE=en(),rE=Zn();function nE(e){return e!=null&&rE(e.length)&&!tE(e)}Vc.exports=nE});var Ro=u((mk,Kc)=>{"use strict";var aE=ar(),oE=_e();function sE(e){return oE(e)&&aE(e)}Kc.exports=sE});var Hc=u((yk,Yc)=>{"use strict";var iE=fo(),uE=Io(),pE=jc(),cE=Ro(),lE=uE(function(e){return pE(iE(e,1,cE,!0))});Yc.exports=lE});var Jc=u((hk,zc)=>{"use strict";var dE=nn();function fE(){this.__data__=new dE,this.size=0}zc.exports=fE});var Zc=u((Ak,Xc)=>{"use strict";function gE(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}Xc.exports=gE});var tl=u((Ik,el)=>{"use strict";function mE(e){return this.__data__.get(e)}el.exports=mE});var nl=u((bk,rl)=>{"use strict";function yE(e){return this.__data__.has(e)}rl.exports=yE});var ol=u((Sk,al)=>{"use strict";var hE=nn(),AE=Hn(),IE=zn(),bE=200;function SE(e,t){var r=this.__data__;if(r instanceof hE){var n=r.__data__;if(!AE||n.length<bE-1)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new IE(n)}return r.set(e,t),this.size=r.size,this}al.exports=SE});var on=u((wk,sl)=>{"use strict";var wE=nn(),vE=Jc(),EE=Zc(),_E=tl(),RE=nl(),xE=ol();function or(e){var t=this.__data__=new wE(e);this.size=t.size}or.prototype.clear=vE;or.prototype.delete=EE;or.prototype.get=_E;or.prototype.has=RE;or.prototype.set=xE;sl.exports=or});var sn=u((vk,ul)=>{"use strict";var il=ho();function TE(e,t,r){t=="__proto__"&&il?il(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}ul.exports=TE});var xo=u((Ek,pl)=>{"use strict";var OE=sn(),PE=tr();function qE(e,t,r){(r!==void 0&&!PE(e[t],r)||r===void 0&&!(t in e))&&OE(e,t,r)}pl.exports=qE});var ll=u((_k,cl)=>{"use strict";function CE(e){return function(t,r,n){for(var a=-1,o=Object(t),i=n(t),s=i.length;s--;){var c=i[e?s:++a];if(r(o[c],c,o)===!1)break}return t}}cl.exports=CE});var To=u((Rk,dl)=>{"use strict";var UE=ll(),LE=UE();dl.exports=LE});var Oo=u((un,sr)=>{"use strict";var DE=Ae(),yl=typeof un=="object"&&un&&!un.nodeType&&un,fl=yl&&typeof sr=="object"&&sr&&!sr.nodeType&&sr,BE=fl&&fl.exports===yl,gl=BE?DE.Buffer:void 0,ml=gl?gl.allocUnsafe:void 0;function NE(e,t){if(t)return e.slice();var r=e.length,n=ml?ml(r):new e.constructor(r);return e.copy(n),n}sr.exports=NE});var Po=u((xk,hl)=>{"use strict";var ME=Ae(),GE=ME.Uint8Array;hl.exports=GE});var ea=u((Tk,Il)=>{"use strict";var Al=Po();function kE(e){var t=new e.constructor(e.byteLength);return new Al(t).set(new Al(e)),t}Il.exports=kE});var qo=u((Ok,bl)=>{"use strict";var FE=ea();function QE(e,t){var r=t?FE(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}bl.exports=QE});var ir=u((Pk,Sl)=>{"use strict";function $E(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}Sl.exports=$E});var pn=u((qk,vl)=>{"use strict";var jE=De(),wl=Object.create,WE=function(){function e(){}return function(t){if(!jE(t))return{};if(wl)return wl(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();vl.exports=WE});var Co=u((Ck,El)=>{"use strict";function VE(e,t){return function(r){return e(t(r))}}El.exports=VE});var ta=u((Uk,_l)=>{"use strict";var KE=Co(),YE=KE(Object.getPrototypeOf,Object);_l.exports=YE});var ra=u((Lk,Rl)=>{"use strict";var HE=Object.prototype;function zE(e){var t=e&&e.constructor,r=typeof t=="function"&&t.prototype||HE;return e===r}Rl.exports=zE});var Uo=u((Dk,xl)=>{"use strict";var JE=pn(),XE=ta(),ZE=ra();function e_(e){return typeof e.constructor=="function"&&!ZE(e)?JE(XE(e)):{}}xl.exports=e_});var Ol=u((Bk,Tl)=>{"use strict";function t_(){return!1}Tl.exports=t_});var ln=u((cn,ur)=>{"use strict";var r_=Ae(),n_=Ol(),Cl=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Pl=Cl&&typeof ur=="object"&&ur&&!ur.nodeType&&ur,a_=Pl&&Pl.exports===Cl,ql=a_?r_.Buffer:void 0,o_=ql?ql.isBuffer:void 0,s_=o_||n_;ur.exports=s_});var Lo=u((Nk,Ll)=>{"use strict";var i_=It(),u_=ta(),p_=_e(),c_="[object Object]",l_=Function.prototype,d_=Object.prototype,Ul=l_.toString,f_=d_.hasOwnProperty,g_=Ul.call(Object);function m_(e){if(!p_(e)||i_(e)!=c_)return!1;var t=u_(e);if(t===null)return!0;var r=f_.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&Ul.call(r)==g_}Ll.exports=m_});var Bl=u((Mk,Dl)=>{"use strict";var y_=It(),h_=Zn(),A_=_e(),I_="[object Arguments]",b_="[object Array]",S_="[object Boolean]",w_="[object Date]",v_="[object Error]",E_="[object Function]",__="[object Map]",R_="[object Number]",x_="[object Object]",T_="[object RegExp]",O_="[object Set]",P_="[object String]",q_="[object WeakMap]",C_="[object ArrayBuffer]",U_="[object DataView]",L_="[object Float32Array]",D_="[object Float64Array]",B_="[object Int8Array]",N_="[object Int16Array]",M_="[object Int32Array]",G_="[object Uint8Array]",k_="[object Uint8ClampedArray]",F_="[object Uint16Array]",Q_="[object Uint32Array]",j={};j[L_]=j[D_]=j[B_]=j[N_]=j[M_]=j[G_]=j[k_]=j[F_]=j[Q_]=!0;j[I_]=j[b_]=j[C_]=j[S_]=j[U_]=j[w_]=j[v_]=j[E_]=j[__]=j[R_]=j[x_]=j[T_]=j[O_]=j[P_]=j[q_]=!1;function $_(e){return A_(e)&&h_(e.length)&&!!j[y_(e)]}Dl.exports=$_});var na=u((Gk,Nl)=>{"use strict";function j_(e){return function(t){return e(t)}}Nl.exports=j_});var aa=u((dn,pr)=>{"use strict";var W_=lo(),Ml=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Ml&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,V_=fn&&fn.exports===Ml,Do=V_&&W_.process,K_=function(){try{var e=fn&&fn.require&&fn.require("util").types;return e||Do&&Do.binding&&Do.binding("util")}catch{}}();pr.exports=K_});var oa=u((kk,Fl)=>{"use strict";var Y_=Bl(),H_=na(),Gl=aa(),kl=Gl&&Gl.isTypedArray,z_=kl?H_(kl):Y_;Fl.exports=z_});var Bo=u((Fk,Ql)=>{"use strict";function J_(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}Ql.exports=J_});var No=u((Qk,$l)=>{"use strict";var X_=sn(),Z_=tr(),eR=Object.prototype,tR=eR.hasOwnProperty;function rR(e,t,r){var n=e[t];(!(tR.call(e,t)&&Z_(n,r))||r===void 0&&!(t in e))&&X_(e,t,r)}$l.exports=rR});var cr=u(($k,jl)=>{"use strict";var nR=No(),aR=sn();function oR(e,t,r,n){var a=!r;r||(r={});for(var o=-1,i=t.length;++o<i;){var s=t[o],c=n?n(r[s],e[s],s,r,e):void 0;c===void 0&&(c=e[s]),a?aR(r,s,c):nR(r,s,c)}return r}jl.exports=oR});var Vl=u((jk,Wl)=>{"use strict";function sR(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}Wl.exports=sR});var gn=u((Wk,Kl)=>{"use strict";var iR=9007199254740991,uR=/^(?:0|[1-9]\d*)$/;function pR(e,t){var r=typeof e;return t=t??iR,!!t&&(r=="number"||r!="symbol"&&uR.test(e))&&e>-1&&e%1==0&&e<t}Kl.exports=pR});var Mo=u((Vk,Yl)=>{"use strict";var cR=Vl(),lR=Xr(),dR=de(),fR=ln(),gR=gn(),mR=oa(),yR=Object.prototype,hR=yR.hasOwnProperty;function AR(e,t){var r=dR(e),n=!r&&lR(e),a=!r&&!n&&fR(e),o=!r&&!n&&!a&&mR(e),i=r||n||a||o,s=i?cR(e.length,String):[],c=s.length;for(var f in e)(t||hR.call(e,f))&&!(i&&(f=="length"||a&&(f=="offset"||f=="parent")||o&&(f=="buffer"||f=="byteLength"||f=="byteOffset")||gR(f,c)))&&s.push(f);return s}Yl.exports=AR});var zl=u((Kk,Hl)=>{"use strict";function IR(e){var t=[];if(e!=null)for(var r in Object(e))t.push(r);return t}Hl.exports=IR});var Xl=u((Yk,Jl)=>{"use strict";var bR=De(),SR=ra(),wR=zl(),vR=Object.prototype,ER=vR.hasOwnProperty;function _R(e){if(!bR(e))return wR(e);var t=SR(e),r=[];for(var n in e)n=="constructor"&&(t||!ER.call(e,n))||r.push(n);return r}Jl.exports=_R});var lr=u((Hk,Zl)=>{"use strict";var RR=Mo(),xR=Xl(),TR=ar();function OR(e){return TR(e)?RR(e,!0):xR(e)}Zl.exports=OR});var td=u((zk,ed)=>{"use strict";var PR=cr(),qR=lr();function CR(e){return PR(e,qR(e))}ed.exports=CR});var id=u((Jk,sd)=>{"use strict";var rd=xo(),UR=Oo(),LR=qo(),DR=ir(),BR=Uo(),nd=Xr(),ad=de(),NR=Ro(),MR=ln(),GR=en(),kR=De(),FR=Lo(),QR=oa(),od=Bo(),$R=td();function jR(e,t,r,n,a,o,i){var s=od(e,r),c=od(t,r),f=i.get(c);if(f){rd(e,r,f);return}var d=o?o(s,c,r+"",e,t,i):void 0,m=d===void 0;if(m){var y=ad(c),v=!y&&MR(c),C=!y&&!v&&QR(c);d=c,y||v||C?ad(s)?d=s:NR(s)?d=DR(s):v?(m=!1,d=UR(c,!0)):C?(m=!1,d=LR(c,!0)):d=[]:FR(c)||nd(c)?(d=s,nd(s)?d=$R(s):(!kR(s)||GR(s))&&(d=BR(c))):m=!1}m&&(i.set(c,d),a(d,c,n,o,i),i.delete(c)),rd(e,r,d)}sd.exports=jR});var cd=u((Xk,pd)=>{"use strict";var WR=on(),VR=xo(),KR=To(),YR=id(),HR=De(),zR=lr(),JR=Bo();function ud(e,t,r,n,a){e!==t&&KR(t,function(o,i){if(a||(a=new WR),HR(o))YR(e,t,i,r,ud,n,a);else{var s=n?n(JR(e,i),o,i+"",e,t,a):void 0;s===void 0&&(s=o),VR(e,i,s)}},zR)}pd.exports=ud});var dd=u((Zk,ld)=>{"use strict";var XR=tr(),ZR=ar(),ex=gn(),tx=De();function rx(e,t,r){if(!tx(r))return!1;var n=typeof t;return(n=="number"?ZR(r)&&ex(t,r.length):n=="string"&&t in r)?XR(r[t],e):!1}ld.exports=rx});var gd=u((eF,fd)=>{"use strict";var nx=Io(),ax=dd();function ox(e){return nx(function(t,r){var n=-1,a=r.length,o=a>1?r[a-1]:void 0,i=a>2?r[2]:void 0;for(o=e.length>3&&typeof o=="function"?(a--,o):void 0,i&&ax(r[0],r[1],i)&&(o=a<3?void 0:o,a=1),t=Object(t);++n<a;){var s=r[n];s&&e(t,s,n,o)}return t})}fd.exports=ox});var Go=u((tF,md)=>{"use strict";var sx=cd(),ix=gd(),ux=ix(function(e,t,r){sx(e,t,r)});md.exports=ux});var yf=u(we=>{"use strict";we.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"};we.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]};we.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]};we.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2};we.iterateeRearg={mapKeys:[1],reduceRight:[1,0]};we.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]};we.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}};we.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}};we.realToAlias=function(){var e=Object.prototype.hasOwnProperty,t=we.aliasToReal,r={};for(var n in t){var a=t[n];e.call(r,a)?r[a].push(n):r[a]=[n]}return r}();we.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"};we.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0};we.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}});var Us=u((vQ,hf)=>{"use strict";hf.exports={}});var Sf=u((EQ,bf)=>{"use strict";var ie=yf(),WT=Us(),Af=Array.prototype.push;function VT(e,t){return t==2?function(r,n){return e.apply(void 0,arguments)}:function(r){return e.apply(void 0,arguments)}}function Ls(e,t){return t==2?function(r,n){return e(r,n)}:function(r){return e(r)}}function If(e){for(var t=e?e.length:0,r=Array(t);t--;)r[t]=e[t];return r}function KT(e){return function(t){return e({},t)}}function YT(e,t){return function(){for(var r=arguments.length,n=r-1,a=Array(r);r--;)a[r]=arguments[r];var o=a[t],i=a.slice(0,t);return o&&Af.apply(i,o),t!=n&&Af.apply(i,a.slice(t+1)),e.apply(this,i)}}function Ds(e,t){return function(){var r=arguments.length;if(r){for(var n=Array(r);r--;)n[r]=arguments[r];var a=n[0]=t.apply(void 0,n);return e.apply(void 0,n),a}}}function Bs(e,t,r,n){var a=typeof t=="function",o=t===Object(t);if(o&&(n=r,r=t,t=void 0),r==null)throw new TypeError;n||(n={});var i={cap:"cap"in n?n.cap:!0,curry:"curry"in n?n.curry:!0,fixed:"fixed"in n?n.fixed:!0,immutable:"immutable"in n?n.immutable:!0,rearg:"rearg"in n?n.rearg:!0},s=a?r:WT,c="curry"in n&&n.curry,f="fixed"in n&&n.fixed,d="rearg"in n&&n.rearg,m=a?r.runInContext():void 0,y=a?r:{ary:e.ary,assign:e.assign,clone:e.clone,curry:e.curry,forEach:e.forEach,isArray:e.isArray,isError:e.isError,isFunction:e.isFunction,isWeakMap:e.isWeakMap,iteratee:e.iteratee,keys:e.keys,rearg:e.rearg,toInteger:e.toInteger,toPath:e.toPath},v=y.ary,C=y.assign,D=y.clone,L=y.curry,U=y.forEach,k=y.isArray,be=y.isError,ee=y.isFunction,ke=y.isWeakMap,He=y.keys,ze=y.rearg,W=y.toInteger,B=y.toPath,Tt=He(ie.aryMethod),Cn={castArray:function(w){return function(){var A=arguments[0];return k(A)?w(If(A)):w.apply(void 0,arguments)}},iteratee:function(w){return function(){var A=arguments[0],I=arguments[1],E=w(A,I),P=E.length;return i.cap&&typeof I=="number"?(I=I>2?I-2:1,P&&P<=I?E:Ls(E,I)):E}},mixin:function(w){return function(A){var I=this;if(!ee(I))return w(I,Object(A));var E=[];return U(He(A),function(P){ee(A[P])&&E.push([P,I.prototype[P]])}),w(I,Object(A)),U(E,function(P){var Z=P[1];ee(Z)?I.prototype[P[0]]=Z:delete I.prototype[P[0]]}),I}},nthArg:function(w){return function(A){var I=A<0?1:W(A)+1;return L(w(A),I)}},rearg:function(w){return function(A,I){var E=I?I.length:0;return L(w(A,I),E)}},runInContext:function(w){return function(A){return Bs(e,w(A),n)}}};function x(w,A){if(i.cap){var I=ie.iterateeRearg[w];if(I)return Y(A,I);var E=!a&&ie.iterateeAry[w];if(E)return M(A,E)}return A}function S(w,A,I){return c||i.curry&&I>1?L(A,I):A}function h(w,A,I){if(i.fixed&&(f||!ie.skipFixed[w])){var E=ie.methodSpread[w],P=E&&E.start;return P===void 0?v(A,I):YT(A,P)}return A}function _(w,A,I){return i.rearg&&I>1&&(d||!ie.skipRearg[w])?ze(A,ie.methodRearg[w]||ie.aryRearg[I]):A}function b(w,A){A=B(A);for(var I=-1,E=A.length,P=E-1,Z=D(Object(w)),me=Z;me!=null&&++I<E;){var Ce=A[I],Je=me[Ce];Je!=null&&!(ee(Je)||be(Je)||ke(Je))&&(me[Ce]=D(I==P?Je:Object(Je))),me=me[Ce]}return Z}function O(w){return F.runInContext.convert(w)(void 0)}function T(w,A){var I=ie.aliasToReal[w]||w,E=ie.remap[I]||I,P=n;return function(Z){var me=a?m:y,Ce=a?m[E]:A,Je=C(C({},P),Z);return Bs(me,I,Ce,Je)}}function M(w,A){return X(w,function(I){return typeof I=="function"?Ls(I,A):I})}function Y(w,A){return X(w,function(I){var E=A.length;return VT(ze(Ls(I,E),A),E)})}function X(w,A){return function(){var I=arguments.length;if(!I)return w();for(var E=Array(I);I--;)E[I]=arguments[I];var P=i.rearg?0:I-1;return E[P]=A(E[P]),w.apply(void 0,E)}}function ae(w,A,I){var E,P=ie.aliasToReal[w]||w,Z=A,me=Cn[P];return me?Z=me(A):i.immutable&&(ie.mutate.array[P]?Z=Ds(A,If):ie.mutate.object[P]?Z=Ds(A,KT(A)):ie.mutate.set[P]&&(Z=Ds(A,b))),U(Tt,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(P==Je){var zi=ie.methodSpread[P],OI=zi&&zi.afterRearg;return E=OI?h(P,_(P,Z,Ce),Ce):_(P,h(P,Z,Ce),Ce),E=x(P,E),E=S(P,E,Ce),!1}}),!E}),E||(E=Z),E==A&&(E=c?L(E,1):function(){return A.apply(this,arguments)}),E.convert=T(P,A),E.placeholder=A.placeholder=I,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Tt,function(w){U(ie.aryMethod[w],function(A){var I=F[ie.remap[A]||A];I&&qe.push([A,ae(A,I,F)])})}),U(He(F),function(w){var A=F[w];if(typeof A=="function"){for(var I=qe.length;I--;)if(qe[I][0]==w)return;A.convert=T(w,A),qe.push([w,A])}}),U(qe,function(w){F[w[0]]=w[1]}),F.convert=O,F.placeholder=F,U(He(F),function(w){U(ie.realToAlias[w]||[],function(A){F[A]=F[w]})}),F}bf.exports=Bs});var Ns=u((_Q,wf)=>{"use strict";var HT=bt(),zT=Ae(),JT=HT(zT,"WeakMap");wf.exports=JT});var Ms=u((RQ,Ef)=>{"use strict";var vf=Ns(),XT=vf&&new vf;Ef.exports=XT});var Gs=u((xQ,Rf)=>{"use strict";var ZT=Zr(),_f=Ms(),eO=_f?function(e,t){return _f.set(e,t),e}:ZT;Rf.exports=eO});var Rn=u((TQ,xf)=>{"use strict";var tO=pn(),rO=De();function nO(e){return function(){var t=arguments;switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3]);case 5:return new e(t[0],t[1],t[2],t[3],t[4]);case 6:return new e(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new e(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=tO(e.prototype),n=e.apply(r,t);return rO(n)?n:r}}xf.exports=nO});var Of=u((OQ,Tf)=>{"use strict";var aO=Rn(),oO=Ae(),sO=1;function iO(e,t,r){var n=t&sO,a=aO(e);function o(){var i=this&&this!==oO&&this instanceof o?a:e;return i.apply(n?r:this,arguments)}return o}Tf.exports=iO});var ks=u((PQ,Pf)=>{"use strict";var uO=Math.max;function pO(e,t,r,n){for(var a=-1,o=e.length,i=r.length,s=-1,c=t.length,f=uO(o-i,0),d=Array(c+f),m=!n;++s<c;)d[s]=t[s];for(;++a<i;)(m||a<o)&&(d[r[a]]=e[a]);for(;f--;)d[s++]=e[a++];return d}Pf.exports=pO});var Fs=u((qQ,qf)=>{"use strict";var cO=Math.max;function lO(e,t,r,n){for(var a=-1,o=e.length,i=-1,s=r.length,c=-1,f=t.length,d=cO(o-s,0),m=Array(d+f),y=!n;++a<d;)m[a]=e[a];for(var v=a;++c<f;)m[v+c]=t[c];for(;++i<s;)(y||a<o)&&(m[v+r[i]]=e[a++]);return m}qf.exports=lO});var Uf=u((CQ,Cf)=>{"use strict";function dO(e,t){for(var r=e.length,n=0;r--;)e[r]===t&&++n;return n}Cf.exports=dO});var wa=u((UQ,Lf)=>{"use strict";function fO(){}Lf.exports=fO});var Ea=u((LQ,Df)=>{"use strict";var gO=pn(),mO=wa(),yO=4294967295;function va(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=yO,this.__views__=[]}va.prototype=gO(mO.prototype);va.prototype.constructor=va;Df.exports=va});var Qs=u((DQ,Nf)=>{"use strict";var Bf=Ms(),hO=Eo(),AO=Bf?function(e){return Bf.get(e)}:hO;Nf.exports=AO});var Gf=u((BQ,Mf)=>{"use strict";var IO={};Mf.exports=IO});var Qf=u((NQ,Ff)=>{"use strict";var kf=Gf(),bO=Object.prototype,SO=bO.hasOwnProperty;function wO(e){for(var t=e.name+"",r=kf[t],n=SO.call(kf,t)?r.length:0;n--;){var a=r[n],o=a.func;if(o==null||o==e)return a.name}return t}Ff.exports=wO});var $s=u((MQ,$f)=>{"use strict";var vO=pn(),EO=wa();function _a(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}_a.prototype=vO(EO.prototype);_a.prototype.constructor=_a;$f.exports=_a});var Wf=u((GQ,jf)=>{"use strict";var _O=Ea(),RO=$s(),xO=ir();function TO(e){if(e instanceof _O)return e.clone();var t=new RO(e.__wrapped__,e.__chain__);return t.__actions__=xO(e.__actions__),t.__index__=e.__index__,t.__values__=e.__values__,t}jf.exports=TO});var Yf=u((kQ,Kf)=>{"use strict";var OO=Ea(),Vf=$s(),PO=wa(),qO=de(),CO=_e(),UO=Wf(),LO=Object.prototype,DO=LO.hasOwnProperty;function Ra(e){if(CO(e)&&!qO(e)&&!(e instanceof OO)){if(e instanceof Vf)return e;if(DO.call(e,"__wrapped__"))return UO(e)}return new Vf(e)}Ra.prototype=PO.prototype;Ra.prototype.constructor=Ra;Kf.exports=Ra});var zf=u((FQ,Hf)=>{"use strict";var BO=Ea(),NO=Qs(),MO=Qf(),GO=Yf();function kO(e){var t=MO(e),r=GO[t];if(typeof r!="function"||!(t in BO.prototype))return!1;if(e===r)return!0;var n=NO(r);return!!n&&e===n[0]}Hf.exports=kO});var Ws=u((QQ,Jf)=>{"use strict";var FO=Gs(),QO=Ao(),$O=QO(FO);Jf.exports=$O});var Zf=u(($Q,Xf)=>{"use strict";var jO=/\{\n\/\* \[wrapped with (.+)\] \*/,WO=/,? & /;function VO(e){var t=e.match(jO);return t?t[1].split(WO):[]}Xf.exports=VO});var tg=u((jQ,eg)=>{"use strict";var KO=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function YO(e,t){var r=t.length;if(!r)return e;var n=r-1;return t[n]=(r>1?"& ":"")+t[n],t=t.join(r>2?", ":" "),e.replace(KO,`{
|
|
2
2
|
/* [wrapped with `+t+`] */
|
|
3
|
-
`)}Zf.exports=KT});var xa=u(($Q,tg)=>{"use strict";function YT(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}tg.exports=YT});var ng=u((jQ,rg)=>{"use strict";var HT=xa(),zT=So(),JT=1,XT=2,ZT=8,eP=16,tP=32,rP=64,nP=128,aP=256,oP=512,sP=[["ary",nP],["bind",JT],["bindKey",XT],["curry",ZT],["curryRight",eP],["flip",oP],["partial",tP],["partialRight",rP],["rearg",aP]];function iP(e,t){return HT(sP,function(r){var n="_."+r[0];t&r[1]&&!zT(e,n)&&e.push(n)}),e.sort()}rg.exports=iP});var Vs=u((WQ,ag)=>{"use strict";var uP=Xf(),pP=eg(),cP=Yn(),lP=ng();function dP(e,t,r){var n=t+"";return cP(e,pP(n,lP(uP(n),r)))}ag.exports=dP});var Ks=u((VQ,ig)=>{"use strict";var fP=Hf(),gP=Ws(),mP=Vs(),yP=1,hP=2,AP=4,IP=8,og=32,sg=64;function bP(e,t,r,n,a,o,i,s,c,f){var d=t&IP,m=d?i:void 0,y=d?void 0:i,v=d?o:void 0,C=d?void 0:o;t|=d?og:sg,t&=~(d?sg:og),t&AP||(t&=~(yP|hP));var D=[e,t,a,v,m,C,y,s,c,f],L=r.apply(void 0,D);return fP(e)&&gP(L,D),L.placeholder=n,mP(L,e,t)}ig.exports=bP});var Ys=u((KQ,ug)=>{"use strict";function SP(e){var t=e;return t.placeholder}ug.exports=SP});var cg=u((YQ,pg)=>{"use strict";var wP=ir(),vP=gn(),EP=Math.min;function _P(e,t){for(var r=e.length,n=EP(t.length,r),a=wP(e);n--;){var o=t[n];e[n]=vP(o,r)?a[o]:void 0}return e}pg.exports=_P});var Oa=u((HQ,dg)=>{"use strict";var lg="__lodash_placeholder__";function RP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===lg)&&(e[r]=lg,o[a++]=r)}return o}dg.exports=RP});var Hs=u((zQ,mg)=>{"use strict";var xP=ks(),OP=Fs(),TP=Cf(),fg=Rn(),PP=Ks(),qP=Ys(),CP=cg(),UP=Oa(),LP=Ae(),DP=1,BP=2,NP=8,MP=16,GP=128,kP=512;function gg(e,t,r,n,a,o,i,s,c,f){var d=t&GP,m=t&DP,y=t&BP,v=t&(NP|MP),C=t&kP,D=y?void 0:fg(e);function L(){for(var U=arguments.length,F=Array(U),be=U;be--;)F[be]=arguments[be];if(v)var ee=qP(L),ke=TP(F,ee);if(n&&(F=xP(F,n,a,v)),o&&(F=OP(F,o,i,v)),U-=ke,v&&U<f){var He=UP(F,ee);return PP(e,t,gg,L.placeholder,r,F,He,s,c,f-U)}var ze=m?r:this,W=y?ze[e]:e;return U=F.length,s?F=CP(F,s):C&&U>1&&F.reverse(),d&&c<U&&(F.length=c),this&&this!==LP&&this instanceof L&&(W=D||fg(W)),W.apply(ze,F)}return L}mg.exports=gg});var hg=u((JQ,yg)=>{"use strict";var FP=Kn(),QP=Rn(),$P=Hs(),jP=Ks(),WP=Ys(),VP=Oa(),KP=Ae();function YP(e,t,r){var n=QP(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=WP(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:VP(i,c);if(o-=f.length,o<r)return jP(e,t,$P,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==KP&&this instanceof a?n:e;return FP(d,this,i)}return a}yg.exports=YP});var Ig=u((XQ,Ag)=>{"use strict";var HP=Kn(),zP=Rn(),JP=Ae(),XP=1;function ZP(e,t,r,n){var a=t&XP,o=zP(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,m=Array(d+c),y=this&&this!==JP&&this instanceof i?o:e;++f<d;)m[f]=n[f];for(;c--;)m[f++]=arguments[++s];return HP(y,a?r:this,m)}return i}Ag.exports=ZP});var _g=u((ZQ,Eg)=>{"use strict";var eq=ks(),tq=Fs(),bg=Oa(),Sg="__lodash_placeholder__",zs=1,rq=2,nq=4,wg=8,xn=128,vg=256,aq=Math.min;function oq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(zs|rq|xn),i=n==xn&&r==wg||n==xn&&r==vg&&e[7].length<=t[8]||n==(xn|vg)&&t[7].length<=t[8]&&r==wg;if(!(o||i))return e;n&zs&&(e[2]=t[2],a|=r&zs?0:nq);var s=t[3];if(s){var c=e[3];e[3]=c?eq(c,s,t[4]):s,e[4]=c?bg(e[3],Sg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?tq(c,s,t[6]):s,e[6]=c?bg(e[5],Sg):t[6]),s=t[7],s&&(e[7]=s),n&xn&&(e[8]=e[8]==null?t[8]:aq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}Eg.exports=oq});var xg=u((e$,Rg)=>{"use strict";var sq=/\s/;function iq(e){for(var t=e.length;t--&&sq.test(e.charAt(t)););return t}Rg.exports=iq});var Tg=u((t$,Og)=>{"use strict";var uq=xg(),pq=/^\s+/;function cq(e){return e&&e.slice(0,uq(e)+1).replace(pq,"")}Og.exports=cq});var Ir=u((r$,Pg)=>{"use strict";var lq=It(),dq=_e(),fq="[object Symbol]";function gq(e){return typeof e=="symbol"||dq(e)&&lq(e)==fq}Pg.exports=gq});var Lg=u((n$,Ug)=>{"use strict";var mq=Tg(),qg=De(),yq=Ir(),Cg=0/0,hq=/^[-+]0x[0-9a-f]+$/i,Aq=/^0b[01]+$/i,Iq=/^0o[0-7]+$/i,bq=parseInt;function Sq(e){if(typeof e=="number")return e;if(yq(e))return Cg;if(qg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=qg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=mq(e);var r=Aq.test(e);return r||Iq.test(e)?bq(e.slice(2),r?2:8):hq.test(e)?Cg:+e}Ug.exports=Sq});var Ng=u((a$,Bg)=>{"use strict";var wq=Lg(),Dg=1/0,vq=17976931348623157e292;function Eq(e){if(!e)return e===0?e:0;if(e=wq(e),e===Dg||e===-Dg){var t=e<0?-1:1;return t*vq}return e===e?e:0}Bg.exports=Eq});var Js=u((o$,Mg)=>{"use strict";var _q=Ng();function Rq(e){var t=_q(e),r=t%1;return t===t?r?t-r:t:0}Mg.exports=Rq});var Ta=u((s$,$g)=>{"use strict";var xq=Gs(),Oq=Of(),Tq=hg(),Pq=Hs(),qq=Ig(),Cq=Qs(),Uq=_g(),Lq=Ws(),Dq=Vs(),Gg=Js(),Bq="Expected a function",kg=1,Nq=2,Xs=8,Zs=16,ei=32,Fg=64,Qg=Math.max;function Mq(e,t,r,n,a,o,i,s){var c=t&Nq;if(!c&&typeof e!="function")throw new TypeError(Bq);var f=n?n.length:0;if(f||(t&=~(ei|Fg),n=a=void 0),i=i===void 0?i:Qg(Gg(i),0),s=s===void 0?s:Gg(s),f-=a?a.length:0,t&Fg){var d=n,m=a;n=a=void 0}var y=c?void 0:Cq(e),v=[e,t,r,n,a,d,m,o,i,s];if(y&&Uq(v,y),e=v[0],t=v[1],r=v[2],n=v[3],a=v[4],s=v[9]=v[9]===void 0?c?0:e.length:Qg(v[9]-f,0),!s&&t&(Xs|Zs)&&(t&=~(Xs|Zs)),!t||t==kg)var C=Oq(e,t,r);else t==Xs||t==Zs?C=Tq(e,t,s):(t==ei||t==(kg|ei))&&!a.length?C=qq(e,t,r,n):C=Pq.apply(void 0,v);var D=y?xq:Lq;return Dq(D(C,v),e,t)}$g.exports=Mq});var Wg=u((i$,jg)=>{"use strict";var Gq=Ta(),kq=128;function Fq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,Gq(e,kq,void 0,void 0,void 0,void 0,t)}jg.exports=Fq});var Kg=u((u$,Vg)=>{"use strict";var Qq=Co(),$q=Qq(Object.keys,Object);Vg.exports=$q});var ti=u((p$,Yg)=>{"use strict";var jq=ra(),Wq=Kg(),Vq=Object.prototype,Kq=Vq.hasOwnProperty;function Yq(e){if(!jq(e))return Wq(e);var t=[];for(var r in Object(e))Kq.call(e,r)&&r!="constructor"&&t.push(r);return t}Yg.exports=Yq});var br=u((c$,Hg)=>{"use strict";var Hq=Mo(),zq=ti(),Jq=ar();function Xq(e){return Jq(e)?Hq(e):zq(e)}Hg.exports=Xq});var ri=u((l$,zg)=>{"use strict";var Zq=cr(),eC=br();function tC(e,t){return e&&Zq(t,eC(t),e)}zg.exports=tC});var Xg=u((d$,Jg)=>{"use strict";var rC=cr(),nC=lr();function aC(e,t){return e&&rC(t,nC(t),e)}Jg.exports=aC});var em=u((f$,Zg)=>{"use strict";function oC(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}Zg.exports=oC});var ni=u((g$,tm)=>{"use strict";function sC(){return[]}tm.exports=sC});var Pa=u((m$,nm)=>{"use strict";var iC=em(),uC=ni(),pC=Object.prototype,cC=pC.propertyIsEnumerable,rm=Object.getOwnPropertySymbols,lC=rm?function(e){return e==null?[]:(e=Object(e),iC(rm(e),function(t){return cC.call(e,t)}))}:uC;nm.exports=lC});var om=u((y$,am)=>{"use strict";var dC=cr(),fC=Pa();function gC(e,t){return dC(e,fC(e),t)}am.exports=gC});var ai=u((h$,sm)=>{"use strict";var mC=Vn(),yC=ta(),hC=Pa(),AC=ni(),IC=Object.getOwnPropertySymbols,bC=IC?function(e){for(var t=[];e;)mC(t,hC(e)),e=yC(e);return t}:AC;sm.exports=bC});var um=u((A$,im)=>{"use strict";var SC=cr(),wC=ai();function vC(e,t){return SC(e,wC(e),t)}im.exports=vC});var oi=u((I$,pm)=>{"use strict";var EC=Vn(),_C=de();function RC(e,t,r){var n=t(e);return _C(e)?n:EC(n,r(e))}pm.exports=RC});var si=u((b$,cm)=>{"use strict";var xC=oi(),OC=Pa(),TC=br();function PC(e){return xC(e,TC,OC)}cm.exports=PC});var dm=u((S$,lm)=>{"use strict";var qC=oi(),CC=ai(),UC=lr();function LC(e){return qC(e,UC,CC)}lm.exports=LC});var gm=u((w$,fm)=>{"use strict";var DC=bt(),BC=Ae(),NC=DC(BC,"DataView");fm.exports=NC});var ym=u((v$,mm)=>{"use strict";var MC=bt(),GC=Ae(),kC=MC(GC,"Promise");mm.exports=kC});var wr=u((E$,vm)=>{"use strict";var ii=gm(),ui=Hn(),pi=ym(),ci=vo(),li=Ns(),wm=It(),Sr=yo(),hm="[object Map]",FC="[object Object]",Am="[object Promise]",Im="[object Set]",bm="[object WeakMap]",Sm="[object DataView]",QC=Sr(ii),$C=Sr(ui),jC=Sr(pi),WC=Sr(ci),VC=Sr(li),Qt=wm;(ii&&Qt(new ii(new ArrayBuffer(1)))!=Sm||ui&&Qt(new ui)!=hm||pi&&Qt(pi.resolve())!=Am||ci&&Qt(new ci)!=Im||li&&Qt(new li)!=bm)&&(Qt=function(e){var t=wm(e),r=t==FC?e.constructor:void 0,n=r?Sr(r):"";if(n)switch(n){case QC:return Sm;case $C:return hm;case jC:return Am;case WC:return Im;case VC:return bm}return t});vm.exports=Qt});var _m=u((_$,Em)=>{"use strict";var KC=Object.prototype,YC=KC.hasOwnProperty;function HC(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&YC.call(e,"index")&&(r.index=e.index,r.input=e.input),r}Em.exports=HC});var xm=u((R$,Rm)=>{"use strict";var zC=ea();function JC(e,t){var r=t?zC(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}Rm.exports=JC});var Tm=u((x$,Om)=>{"use strict";var XC=/\w*$/;function ZC(e){var t=new e.constructor(e.source,XC.exec(e));return t.lastIndex=e.lastIndex,t}Om.exports=ZC});var Lm=u((O$,Um)=>{"use strict";var Pm=Ut(),qm=Pm?Pm.prototype:void 0,Cm=qm?qm.valueOf:void 0;function eU(e){return Cm?Object(Cm.call(e)):{}}Um.exports=eU});var Bm=u((T$,Dm)=>{"use strict";var tU=ea(),rU=xm(),nU=Tm(),aU=Lm(),oU=qo(),sU="[object Boolean]",iU="[object Date]",uU="[object Map]",pU="[object Number]",cU="[object RegExp]",lU="[object Set]",dU="[object String]",fU="[object Symbol]",gU="[object ArrayBuffer]",mU="[object DataView]",yU="[object Float32Array]",hU="[object Float64Array]",AU="[object Int8Array]",IU="[object Int16Array]",bU="[object Int32Array]",SU="[object Uint8Array]",wU="[object Uint8ClampedArray]",vU="[object Uint16Array]",EU="[object Uint32Array]";function _U(e,t,r){var n=e.constructor;switch(t){case gU:return tU(e);case sU:case iU:return new n(+e);case mU:return rU(e,r);case yU:case hU:case AU:case IU:case bU:case SU:case wU:case vU:case EU:return oU(e,r);case uU:return new n;case pU:case dU:return new n(e);case cU:return nU(e);case lU:return new n;case fU:return aU(e)}}Dm.exports=_U});var Mm=u((P$,Nm)=>{"use strict";var RU=wr(),xU=_e(),OU="[object Map]";function TU(e){return xU(e)&&RU(e)==OU}Nm.exports=TU});var Qm=u((q$,Fm)=>{"use strict";var PU=Mm(),qU=na(),Gm=aa(),km=Gm&&Gm.isMap,CU=km?qU(km):PU;Fm.exports=CU});var jm=u((C$,$m)=>{"use strict";var UU=wr(),LU=_e(),DU="[object Set]";function BU(e){return LU(e)&&UU(e)==DU}$m.exports=BU});var Ym=u((U$,Km)=>{"use strict";var NU=jm(),MU=na(),Wm=aa(),Vm=Wm&&Wm.isSet,GU=Vm?MU(Vm):NU;Km.exports=GU});var di=u((L$,Xm)=>{"use strict";var kU=on(),FU=xa(),QU=No(),$U=ri(),jU=Xg(),WU=To(),VU=ir(),KU=om(),YU=um(),HU=si(),zU=dm(),JU=wr(),XU=_m(),ZU=Bm(),eL=Uo(),tL=de(),rL=ln(),nL=Qm(),aL=De(),oL=Ym(),sL=br(),iL=lr(),uL=1,pL=2,cL=4,Hm="[object Arguments]",lL="[object Array]",dL="[object Boolean]",fL="[object Date]",gL="[object Error]",zm="[object Function]",mL="[object GeneratorFunction]",yL="[object Map]",hL="[object Number]",Jm="[object Object]",AL="[object RegExp]",IL="[object Set]",bL="[object String]",SL="[object Symbol]",wL="[object WeakMap]",vL="[object ArrayBuffer]",EL="[object DataView]",_L="[object Float32Array]",RL="[object Float64Array]",xL="[object Int8Array]",OL="[object Int16Array]",TL="[object Int32Array]",PL="[object Uint8Array]",qL="[object Uint8ClampedArray]",CL="[object Uint16Array]",UL="[object Uint32Array]",$={};$[Hm]=$[lL]=$[vL]=$[EL]=$[dL]=$[fL]=$[_L]=$[RL]=$[xL]=$[OL]=$[TL]=$[yL]=$[hL]=$[Jm]=$[AL]=$[IL]=$[bL]=$[SL]=$[PL]=$[qL]=$[CL]=$[UL]=!0;$[gL]=$[zm]=$[wL]=!1;function qa(e,t,r,n,a,o){var i,s=t&uL,c=t&pL,f=t&cL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!aL(e))return e;var d=tL(e);if(d){if(i=XU(e),!s)return VU(e,i)}else{var m=JU(e),y=m==zm||m==mL;if(rL(e))return WU(e,s);if(m==Jm||m==Hm||y&&!a){if(i=c||y?{}:eL(e),!s)return c?YU(e,jU(i,e)):KU(e,$U(i,e))}else{if(!$[m])return a?e:{};i=ZU(e,m,s)}}o||(o=new kU);var v=o.get(e);if(v)return v;o.set(e,i),oL(e)?e.forEach(function(L){i.add(qa(L,t,r,L,e,o))}):nL(e)&&e.forEach(function(L,U){i.set(U,qa(L,t,r,U,e,o))});var C=f?c?zU:HU:c?iL:sL,D=d?void 0:C(e);return FU(D||e,function(L,U){D&&(U=L,L=e[U]),QU(i,U,qa(L,t,r,U,e,o))}),i}Xm.exports=qa});var ey=u((D$,Zm)=>{"use strict";var LL=di(),DL=4;function BL(e){return LL(e,DL)}Zm.exports=BL});var ry=u((B$,ty)=>{"use strict";var NL=Ta(),ML=8;function fi(e,t,r){t=r?void 0:t;var n=NL(e,ML,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=fi.placeholder,n}fi.placeholder={};ty.exports=fi});var ay=u((N$,ny)=>{"use strict";var GL=It(),kL=_e(),FL=Lo(),QL="[object DOMException]",$L="[object Error]";function jL(e){if(!kL(e))return!1;var t=GL(e);return t==$L||t==QL||typeof e.message=="string"&&typeof e.name=="string"&&!FL(e)}ny.exports=jL});var sy=u((M$,oy)=>{"use strict";var WL=wr(),VL=_e(),KL="[object WeakMap]";function YL(e){return VL(e)&&WL(e)==KL}oy.exports=YL});var uy=u((G$,iy)=>{"use strict";function HL(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}iy.exports=HL});var gi=u((k$,py)=>{"use strict";var zL=bo(),JL=uy(),XL=wo(),ZL=1,eD=2;function tD(e,t,r,n,a,o){var i=r&ZL,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var m=-1,y=!0,v=r&eD?new zL:void 0;for(o.set(e,t),o.set(t,e);++m<s;){var C=e[m],D=t[m];if(n)var L=i?n(D,C,m,t,e,o):n(C,D,m,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(v){if(!JL(t,function(U,F){if(!XL(v,F)&&(C===U||a(C,U,r,n,o)))return v.push(F)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}py.exports=tD});var ly=u((F$,cy)=>{"use strict";function rD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}cy.exports=rD});var yy=u((Q$,my)=>{"use strict";var dy=Ut(),fy=Po(),nD=tr(),aD=gi(),oD=ly(),sD=Xn(),iD=1,uD=2,pD="[object Boolean]",cD="[object Date]",lD="[object Error]",dD="[object Map]",fD="[object Number]",gD="[object RegExp]",mD="[object Set]",yD="[object String]",hD="[object Symbol]",AD="[object ArrayBuffer]",ID="[object DataView]",gy=dy?dy.prototype:void 0,mi=gy?gy.valueOf:void 0;function bD(e,t,r,n,a,o,i){switch(r){case ID:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case AD:return!(e.byteLength!=t.byteLength||!o(new fy(e),new fy(t)));case pD:case cD:case fD:return nD(+e,+t);case lD:return e.name==t.name&&e.message==t.message;case gD:case yD:return e==t+"";case dD:var s=oD;case mD:var c=n&iD;if(s||(s=sD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=uD,i.set(e,t);var d=aD(s(e),s(t),n,a,o,i);return i.delete(e),d;case hD:if(mi)return mi.call(e)==mi.call(t)}return!1}my.exports=bD});var Iy=u(($$,Ay)=>{"use strict";var hy=si(),SD=1,wD=Object.prototype,vD=wD.hasOwnProperty;function ED(e,t,r,n,a,o){var i=r&SD,s=hy(e),c=s.length,f=hy(t),d=f.length;if(c!=d&&!i)return!1;for(var m=c;m--;){var y=s[m];if(!(i?y in t:vD.call(t,y)))return!1}var v=o.get(e),C=o.get(t);if(v&&C)return v==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++m<c;){y=s[m];var U=e[y],F=t[y];if(n)var be=i?n(F,U,y,t,e,o):n(U,F,y,e,t,o);if(!(be===void 0?U===F||a(U,F,r,n,o):be)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,ke=t.constructor;ee!=ke&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof ke=="function"&&ke instanceof ke)&&(D=!1)}return o.delete(e),o.delete(t),D}Ay.exports=ED});var xy=u((j$,Ry)=>{"use strict";var yi=on(),_D=gi(),RD=yy(),xD=Iy(),by=wr(),Sy=de(),wy=ln(),OD=oa(),TD=1,vy="[object Arguments]",Ey="[object Array]",Ca="[object Object]",PD=Object.prototype,_y=PD.hasOwnProperty;function qD(e,t,r,n,a,o){var i=Sy(e),s=Sy(t),c=i?Ey:by(e),f=s?Ey:by(t);c=c==vy?Ca:c,f=f==vy?Ca:f;var d=c==Ca,m=f==Ca,y=c==f;if(y&&wy(e)){if(!wy(t))return!1;i=!0,d=!1}if(y&&!d)return o||(o=new yi),i||OD(e)?_D(e,t,r,n,a,o):RD(e,t,c,r,n,a,o);if(!(r&TD)){var v=d&&_y.call(e,"__wrapped__"),C=m&&_y.call(t,"__wrapped__");if(v||C){var D=v?e.value():e,L=C?t.value():t;return o||(o=new yi),a(D,L,r,n,o)}}return y?(o||(o=new yi),xD(e,t,r,n,a,o)):!1}Ry.exports=qD});var hi=u((W$,Py)=>{"use strict";var CD=xy(),Oy=_e();function Ty(e,t,r,n,a){return e===t?!0:e==null||t==null||!Oy(e)&&!Oy(t)?e!==e&&t!==t:CD(e,t,r,n,Ty,a)}Py.exports=Ty});var Cy=u((V$,qy)=>{"use strict";var UD=on(),LD=hi(),DD=1,BD=2;function ND(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],d=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var m=new UD;if(n)var y=n(f,d,c,e,t,m);if(!(y===void 0?LD(d,f,DD|BD,n,m):y))return!1}}return!0}qy.exports=ND});var Ai=u((K$,Uy)=>{"use strict";var MD=De();function GD(e){return e===e&&!MD(e)}Uy.exports=GD});var Dy=u((Y$,Ly)=>{"use strict";var kD=Ai(),FD=br();function QD(e){for(var t=FD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,kD(a)]}return t}Ly.exports=QD});var Ii=u((H$,By)=>{"use strict";function $D(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}By.exports=$D});var My=u((z$,Ny)=>{"use strict";var jD=Cy(),WD=Dy(),VD=Ii();function KD(e){var t=WD(e);return t.length==1&&t[0][2]?VD(t[0][0],t[0][1]):function(r){return r===e||jD(r,e,t)}}Ny.exports=KD});var Ua=u((J$,Gy)=>{"use strict";var YD=de(),HD=Ir(),zD=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,JD=/^\w*$/;function XD(e,t){if(YD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||HD(e)?!0:JD.test(e)||!zD.test(e)||t!=null&&e in Object(t)}Gy.exports=XD});var Qy=u((X$,Fy)=>{"use strict";var ky=zn(),ZD="Expected a function";function bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(ZD);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(bi.Cache||ky),r}bi.Cache=ky;Fy.exports=bi});var jy=u((Z$,$y)=>{"use strict";var eB=Qy(),tB=500;function rB(e){var t=eB(e,function(n){return r.size===tB&&r.clear(),n}),r=t.cache;return t}$y.exports=rB});var Si=u((ej,Wy)=>{"use strict";var nB=jy(),aB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,oB=/\\(\\)?/g,sB=nB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(aB,function(r,n,a,o){t.push(a?o.replace(oB,"$1"):n||r)}),t});Wy.exports=sB});var wi=u((tj,Vy)=>{"use strict";function iB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}Vy.exports=iB});var Xy=u((rj,Jy)=>{"use strict";var Ky=Ut(),uB=wi(),pB=de(),cB=Ir(),lB=1/0,Yy=Ky?Ky.prototype:void 0,Hy=Yy?Yy.toString:void 0;function zy(e){if(typeof e=="string")return e;if(pB(e))return uB(e,zy)+"";if(cB(e))return Hy?Hy.call(e):"";var t=e+"";return t=="0"&&1/e==-lB?"-0":t}Jy.exports=zy});var vi=u((nj,Zy)=>{"use strict";var dB=Xy();function fB(e){return e==null?"":dB(e)}Zy.exports=fB});var Ei=u((aj,eh)=>{"use strict";var gB=de(),mB=Ua(),yB=Si(),hB=vi();function AB(e,t){return gB(e)?e:mB(e,t)?[e]:yB(hB(e))}eh.exports=AB});var vr=u((oj,th)=>{"use strict";var IB=Ir(),bB=1/0;function SB(e){if(typeof e=="string"||IB(e))return e;var t=e+"";return t=="0"&&1/e==-bB?"-0":t}th.exports=SB});var _i=u((sj,rh)=>{"use strict";var wB=Ei(),vB=vr();function EB(e,t){t=wB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[vB(t[r++])];return r&&r==n?e:void 0}rh.exports=EB});var ah=u((ij,nh)=>{"use strict";var _B=_i();function RB(e,t,r){var n=e==null?void 0:_B(e,t);return n===void 0?r:n}nh.exports=RB});var sh=u((uj,oh)=>{"use strict";function xB(e,t){return e!=null&&t in Object(e)}oh.exports=xB});var uh=u((pj,ih)=>{"use strict";var OB=Ei(),TB=Xr(),PB=de(),qB=gn(),CB=Zn(),UB=vr();function LB(e,t,r){t=OB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=UB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&CB(a)&&qB(i,a)&&(PB(e)||TB(e)))}ih.exports=LB});var ch=u((cj,ph)=>{"use strict";var DB=sh(),BB=uh();function NB(e,t){return e!=null&&BB(e,t,DB)}ph.exports=NB});var dh=u((lj,lh)=>{"use strict";var MB=hi(),GB=ah(),kB=ch(),FB=Ua(),QB=Ai(),$B=Ii(),jB=vr(),WB=1,VB=2;function KB(e,t){return FB(e)&&QB(t)?$B(jB(e),t):function(r){var n=GB(r,e);return n===void 0&&n===t?kB(r,e):MB(t,n,WB|VB)}}lh.exports=KB});var gh=u((dj,fh)=>{"use strict";function YB(e){return function(t){return t?.[e]}}fh.exports=YB});var yh=u((fj,mh)=>{"use strict";var HB=_i();function zB(e){return function(t){return HB(t,e)}}mh.exports=zB});var Ah=u((gj,hh)=>{"use strict";var JB=gh(),XB=yh(),ZB=Ua(),eN=vr();function tN(e){return ZB(e)?JB(eN(e)):XB(e)}hh.exports=tN});var Ri=u((mj,Ih)=>{"use strict";var rN=My(),nN=dh(),aN=Zr(),oN=de(),sN=Ah();function iN(e){return typeof e=="function"?e:e==null?aN:typeof e=="object"?oN(e)?nN(e[0],e[1]):rN(e):sN(e)}Ih.exports=iN});var Sh=u((yj,bh)=>{"use strict";var uN=di(),pN=Ri(),cN=1;function lN(e){return pN(typeof e=="function"?e:uN(e,cN))}bh.exports=lN});var vh=u((hj,wh)=>{"use strict";var dN=fo();function fN(e){var t=e==null?0:e.length;return t?dN(e,1):[]}wh.exports=fN});var _h=u((Aj,Eh)=>{"use strict";var gN=vh(),mN=go(),yN=Yn();function hN(e){return yN(mN(e,void 0,gN),e+"")}Eh.exports=hN});var xh=u((Ij,Rh)=>{"use strict";var AN=Ta(),IN=_h(),bN=256,SN=IN(function(e,t){return AN(e,bN,void 0,void 0,void 0,t)});Rh.exports=SN});var Th=u((bj,Oh)=>{"use strict";var wN=wi(),vN=ir(),EN=de(),_N=Ir(),RN=Si(),xN=vr(),ON=vi();function TN(e){return EN(e)?wN(e,xN):_N(e)?[e]:vN(RN(ON(e)))}Oh.exports=TN});var qh=u((Sj,Ph)=>{"use strict";Ph.exports={ary:Wg(),assign:ri(),clone:ey(),curry:ry(),forEach:xa(),isArray:de(),isError:ay(),isFunction:en(),isWeakMap:sy(),iteratee:Sh(),keys:ti(),rearg:xh(),toInteger:Js(),toPath:Th()}});var Uh=u((wj,Ch)=>{"use strict";var PN=bf(),qN=qh();function CN(e,t,r){return PN(qN,e,t,r)}Ch.exports=CN});var xi=u((vj,Dh)=>{"use strict";var UN=Uh(),Lh=UN("merge",Go());Lh.placeholder=Us();Dh.exports=Lh});var kh=u((Oi,Ti)=>{"use strict";(function(e,t){typeof Oi=="object"&&typeof Ti<"u"?Ti.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Oi,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",f="month",d="quarter",m="year",y="date",v="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(x){var S=["th","st","nd","rd"],h=x%100;return"["+x+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(x,S,h){var _=String(x);return!_||_.length>=S?x:""+Array(S+1-_.length).join(h)+x},F={s:U,z:function(x){var S=-x.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),b=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(b,2,"0")},m:function x(S,h){if(S.date()<h.date())return-x(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),b=S.clone().add(_,f),T=h-b<0,O=S.clone().add(_+(T?-1:1),f);return+(-(_+(h-b)/(T?b-O:O-b))||0)},a:function(x){return x<0?Math.ceil(x)||0:Math.floor(x)},p:function(x){return{M:f,y:m,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:d}[x]||String(x||"").toLowerCase().replace(/s$/,"")},u:function(x){return x===void 0}},be="en",ee={};ee[be]=L;var ke="$isDayjsObject",He=function(x){return x instanceof Ot||!(!x||!x[ke])},ze=function x(S,h,_){var b;if(!S)return be;if(typeof S=="string"){var T=S.toLowerCase();ee[T]&&(b=T),h&&(ee[T]=h,b=T);var O=S.split("-");if(!b&&O.length>1)return x(O[0])}else{var M=S.name;ee[M]=S,b=M}return!_&&b&&(be=b),b||!_&&be},W=function(x,S){if(He(x))return x.clone();var h=typeof S=="object"?S:{};return h.date=x,h.args=arguments,new Ot(h)},B=F;B.l=ze,B.i=He,B.w=function(x,S){return W(x,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Ot=function(){function x(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=x.prototype;return S.parse=function(h){this.$d=function(_){var b=_.date,T=_.utc;if(b===null)return new Date(NaN);if(B.u(b))return new Date;if(b instanceof Date)return new Date(b);if(typeof b=="string"&&!/Z$/i.test(b)){var O=b.match(C);if(O){var M=O[2]-1||0,Y=(O[7]||"0").substring(0,3);return T?new Date(Date.UTC(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,Y)):new Date(O[1],M,O[3]||1,O[4]||0,O[5]||0,O[6]||0,Y)}}return new Date(b)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==v},S.isSame=function(h,_){var b=W(h);return this.startOf(_)<=b&&b<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,b){return B.u(h)?this[_]:this.set(b,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var b=this,T=!!B.u(_)||_,O=B.p(h),M=function(I,E){var P=B.w(b.$u?Date.UTC(b.$y,E,I):new Date(b.$y,E,I),b);return T?P:P.endOf(s)},Y=function(I,E){return B.w(b.toDate()[I].apply(b.toDate("s"),(T?[0,0,0,0]:[23,59,59,999]).slice(E)),b)},X=this.$W,ae=this.$M,Q=this.$D,qe="set"+(this.$u?"UTC":"");switch(O){case m:return T?M(1,0):M(31,11);case f:return T?M(1,ae):M(0,ae+1);case c:var w=this.$locale().weekStart||0,A=(X<w?X+7:X)-w;return M(T?Q-A:Q+(6-A),ae);case s:case y:return Y(qe+"Hours",0);case i:return Y(qe+"Minutes",1);case o:return Y(qe+"Seconds",2);case a:return Y(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var b,T=B.p(h),O="set"+(this.$u?"UTC":""),M=(b={},b[s]=O+"Date",b[y]=O+"Date",b[f]=O+"Month",b[m]=O+"FullYear",b[i]=O+"Hours",b[o]=O+"Minutes",b[a]=O+"Seconds",b[n]=O+"Milliseconds",b)[T],Y=T===s?this.$D+(_-this.$W):_;if(T===f||T===m){var X=this.clone().set(y,1);X.$d[M](Y),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](Y);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var b,T=this;h=Number(h);var O=B.p(_),M=function(ae){var Q=W(T);return B.w(Q.date(Q.date()+Math.round(ae*h)),T)};if(O===f)return this.set(f,this.$M+h);if(O===m)return this.set(m,this.$y+h);if(O===s)return M(1);if(O===c)return M(7);var Y=(b={},b[o]=t,b[i]=r,b[a]=e,b)[O]||1,X=this.$d.getTime()+h*Y;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,b=this.$locale();if(!this.isValid())return b.invalidDate||v;var T=h||"YYYY-MM-DDTHH:mm:ssZ",O=B.z(this),M=this.$H,Y=this.$m,X=this.$M,ae=b.weekdays,Q=b.months,qe=b.meridiem,w=function(E,P,Z,me){return E&&(E[P]||E(_,T))||Z[P].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},I=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return T.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return w(b.monthsShort,X,Q,3);case"MMMM":return w(Q,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return w(b.weekdaysMin,_.$W,ae,2);case"ddd":return w(b.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I(M,Y,!0);case"A":return I(M,Y,!1);case"m":return String(Y);case"mm":return B.s(Y,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return O}return null}(E)||O.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,b){var T,O=this,M=B.p(_),Y=W(h),X=(Y.utcOffset()-this.utcOffset())*t,ae=this-Y,Q=function(){return B.m(O,Y)};switch(M){case m:T=Q()/12;break;case f:T=Q();break;case d:T=Q()/3;break;case c:T=(ae-X)/6048e5;break;case s:T=(ae-X)/864e5;break;case i:T=ae/r;break;case o:T=ae/t;break;case a:T=ae/e;break;default:T=ae}return b?T:B.a(T)},S.daysInMonth=function(){return this.endOf(f).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var b=this.clone(),T=ze(h,_,!0);return T&&(b.$L=T),b},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},x}(),Cn=Ot.prototype;return W.prototype=Cn,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",m],["$D",y]].forEach(function(x){Cn[x[1]]=function(S){return this.$g(S,x[0],x[1])}}),W.extend=function(x,S){return x.$i||(x(S,Ot,W),x.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(x){return W(1e3*x)},W.en=ee[be],W.Ls=ee,W.p={},W})});var JA=u((_W,zA)=>{"use strict";function aM(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}zA.exports=aM});var ZA=u((RW,XA)=>{"use strict";var oM=Oo(),sM=br();function iM(e,t){return e&&oM(e,t,sM)}XA.exports=iM});var tI=u((xW,eI)=>{"use strict";var uM=ar();function pM(e,t){return function(r,n){if(r==null)return r;if(!uM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}eI.exports=pM});var nI=u((OW,rI)=>{"use strict";var cM=ZA(),lM=tI(),dM=lM(cM);rI.exports=dM});var oI=u((TW,aI)=>{"use strict";var fM=nI();function gM(e,t,r,n){return fM(e,function(a,o,i){t(n,a,r(a),i)}),n}aI.exports=gM});var iI=u((PW,sI)=>{"use strict";var mM=JA(),yM=oI(),hM=Ri(),AM=de();function IM(e,t){return function(r,n){var a=AM(r)?mM:yM,o=t?t():{};return a(r,e,hM(n,2),o)}}sI.exports=IM});var pI=u((qW,uI)=>{"use strict";var bM=sn(),SM=iI(),wM=Object.prototype,vM=wM.hasOwnProperty,EM=SM(function(e,t,r){vM.call(e,r)?e[r].push(t):bM(e,r,[t])});uI.exports=EM});var BM={};R(BM,{Method:()=>ja,ai:()=>Mi,api:()=>Ki,auditLogs:()=>vt,automations:()=>ya,backups:()=>Ne,branding:()=>ca,constants:()=>Vr,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>gf,licensing:()=>tt,logger:()=>$t,mappers:()=>ne,middleware:()=>Li,plugins:()=>ha,publicApi:()=>ba,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,sdk:()=>Pi,users:()=>lt,utils:()=>Zt});module.exports=LI(BM);var ja=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(ja||{});var Pi={};R(Pi,{ai:()=>la,auditLogs:()=>vt,automations:()=>ya,backups:()=>Ne,branding:()=>ca,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>gf,licensing:()=>tt,logger:()=>$t,plugins:()=>ha,publicApi:()=>ba,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,users:()=>lt,utils:()=>Zt});var ca={};R(ca,{getBrandingConfig:()=>Ox});var xe={};R(xe,{checkBackups:()=>Re,checkFeature:()=>ua,checkFeatures:()=>Yo,checkSCIM:()=>Xo,isAICustomConfigsEnabled:()=>Rx,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>pa,isBackupsEnabled:()=>Ho,isBrandingEnabled:()=>zo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Od,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>vx,isSyncAutomationsEnabled:()=>Sx,isTriggerAutomationRunEnabled:()=>wx,isUserGroupsEnabled:()=>Jo,isViewPermissionEnabled:()=>Ex,isViewReadonlyColumnsEnabled:()=>_x});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};R(tt,{cache:()=>Qe,client:()=>At,features:()=>jn,getFreeLicense:()=>Vo,getLicense:()=>Wo,keys:()=>Ko,offline:()=>sa,quotas:()=>Wn});var Qe={};R(Qe,{getCachedLicense:()=>Rd,invalidate:()=>xd,refresh:()=>Lt});var Wa=require("@budibase/backend-core"),Or,DI=async()=>{Or=await new Wa.redis.Client(Wa.redis.utils.Databases.LICENSES).init()},BI=async()=>{Or&&await Or.finish()};process.on("exit",async()=>{await BI()});var Va=async()=>(Or||await DI(),Or);var At={};R(At,{activateLicenseKey:()=>io,getLicense:()=>Jt,triggerQuota:()=>Eb});var Xi=N(require("node-fetch"));var Zi=require("@budibase/backend-core"),Ka=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";Zi.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,Xi.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Ya=Ka;var $n=require("@budibase/types"),k=require("@budibase/backend-core");var Xe={};R(Xe,{bustCache:()=>ru,getCurrentUsageValues:()=>su,getQuotaUsage:()=>Tt,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};R(Pr,{generateBaseQuotaUsage:()=>Dn,generateNewMonthlyQuotas:()=>Tr,generateNewQuotaUsage:()=>za,getBreakdownName:()=>Nn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Bn,setQuotaReset:()=>Ha});var ue=require("@budibase/types"),Ln=require("@budibase/backend-core"),eu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Ha=e=>{e.quotaReset=eu()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Dn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[mt()]:Tr()}}),za=()=>{let e={_id:Ln.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:eu(),...Dn(),apps:{}};return Bn(e),e},Tr=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Bn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Tr()),e.monthly.current=e.monthly[t]},Nn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Ln.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Ln.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var MI=le.Duration.fromSeconds(60).toMs(),{Writethrough:GI}=le.cache.writethrough;function kI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ja=()=>new GI(le.tenancy.getGlobalDB(),MI),ru=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Tt=async()=>{let e=Ja(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Bn(t),Ha(t)}catch(r){if(r.status===404){t=za();let n=await e.put(t);t._rev=n.rev}else throw r}return kI(t)},nu=async(e,t,r)=>Za({name:t,type:r,values:{total:e}}),au=async(e,t,r)=>{let n=Ja(),a=await Tt(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=ou(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},FI=(e,t,r,n)=>{let a=Nn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},Xa=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Dn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=mt(),c=t,f=i.monthly[s];f||(i.monthly[s]=Tr(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=FI(f,c,n.id,a));break}}return e},tu=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],d,m=Nn(s,n);return m&&n&&c.breakdown?.[m]&&(d=c.breakdown[m]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},QI=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},$I=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},ou=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,QI(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,$I(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Xa(e,t,r,a,n)},Za=async e=>{let t=Array.isArray(e)?e:[e],r=Ja(),n=await Tt();for(let o of t)n=ou(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},su=async(e,t,r)=>{let n=await Tt(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=tu(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=tu(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ue={};R(Ue,{destroy:()=>VI,get:()=>eo,save:()=>WI});var yt=require("@budibase/backend-core"),jI=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),WI=async e=>{let t=await eo();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},eo=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return jI();throw t}},VI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await eo();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};R(V,{bulkSave:()=>ab,destroy:()=>ob,fetch:()=>eb,generateUserGroupID:()=>XI,get:()=>tb,getBulk:()=>rb,getByName:()=>to,getGroupUsers:()=>Gn,getGroupUsersParams:()=>lu,getUserGroupsParams:()=>cu,save:()=>nb});var G=require("@budibase/backend-core");var Fe=require("@budibase/types"),Yt=require("@budibase/backend-core");async function iu(){let e=Yt.sql.designDoc.base("type");e.sql.tables={[Fe.AUDIT_LOG_TYPE]:{fields:{appId:Fe.SQLiteType.TEXT,event:Fe.SQLiteType.TEXT,userId:Fe.SQLiteType.TEXT,timestamp:Fe.SQLiteType.TEXT,metadata:Fe.SQLiteType.TEXT,name:Fe.SQLiteType.TEXT,type:Fe.SQLiteType.TEXT,fallback:Fe.SQLiteType.TEXT}}};let t=Yt.context.getAuditLogsDB(),r;try{r=await t.get(Yt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Mn=require("@budibase/backend-core"),{ViewName:KI,SEPARATOR:YI,DocumentType:HI,createView:zI}=Mn.db,JI=HI.USER+YI;async function uu(){let e=Mn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
3
|
+
`)}eg.exports=YO});var xa=u((WQ,rg)=>{"use strict";function HO(e,t){for(var r=-1,n=e==null?0:e.length;++r<n&&t(e[r],r,e)!==!1;);return e}rg.exports=HO});var ag=u((VQ,ng)=>{"use strict";var zO=xa(),JO=So(),XO=1,ZO=2,eP=8,tP=16,rP=32,nP=64,aP=128,oP=256,sP=512,iP=[["ary",aP],["bind",XO],["bindKey",ZO],["curry",eP],["curryRight",tP],["flip",sP],["partial",rP],["partialRight",nP],["rearg",oP]];function uP(e,t){return zO(iP,function(r){var n="_."+r[0];t&r[1]&&!JO(e,n)&&e.push(n)}),e.sort()}ng.exports=uP});var Vs=u((KQ,og)=>{"use strict";var pP=Zf(),cP=tg(),lP=Yn(),dP=ag();function fP(e,t,r){var n=t+"";return lP(e,cP(n,dP(pP(n),r)))}og.exports=fP});var Ks=u((YQ,ug)=>{"use strict";var gP=zf(),mP=Ws(),yP=Vs(),hP=1,AP=2,IP=4,bP=8,sg=32,ig=64;function SP(e,t,r,n,a,o,i,s,c,f){var d=t&bP,m=d?i:void 0,y=d?void 0:i,v=d?o:void 0,C=d?void 0:o;t|=d?sg:ig,t&=~(d?ig:sg),t&IP||(t&=~(hP|AP));var D=[e,t,a,v,m,C,y,s,c,f],L=r.apply(void 0,D);return gP(e)&&mP(L,D),L.placeholder=n,yP(L,e,t)}ug.exports=SP});var Ys=u((HQ,pg)=>{"use strict";function wP(e){var t=e;return t.placeholder}pg.exports=wP});var lg=u((zQ,cg)=>{"use strict";var vP=ir(),EP=gn(),_P=Math.min;function RP(e,t){for(var r=e.length,n=_P(t.length,r),a=vP(e);n--;){var o=t[n];e[n]=EP(o,r)?a[o]:void 0}return e}cg.exports=RP});var Ta=u((JQ,fg)=>{"use strict";var dg="__lodash_placeholder__";function xP(e,t){for(var r=-1,n=e.length,a=0,o=[];++r<n;){var i=e[r];(i===t||i===dg)&&(e[r]=dg,o[a++]=r)}return o}fg.exports=xP});var Hs=u((XQ,yg)=>{"use strict";var TP=ks(),OP=Fs(),PP=Uf(),gg=Rn(),qP=Ks(),CP=Ys(),UP=lg(),LP=Ta(),DP=Ae(),BP=1,NP=2,MP=8,GP=16,kP=128,FP=512;function mg(e,t,r,n,a,o,i,s,c,f){var d=t&kP,m=t&BP,y=t&NP,v=t&(MP|GP),C=t&FP,D=y?void 0:gg(e);function L(){for(var U=arguments.length,k=Array(U),be=U;be--;)k[be]=arguments[be];if(v)var ee=CP(L),ke=PP(k,ee);if(n&&(k=TP(k,n,a,v)),o&&(k=OP(k,o,i,v)),U-=ke,v&&U<f){var He=LP(k,ee);return qP(e,t,mg,L.placeholder,r,k,He,s,c,f-U)}var ze=m?r:this,W=y?ze[e]:e;return U=k.length,s?k=UP(k,s):C&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==DP&&this instanceof L&&(W=D||gg(W)),W.apply(ze,k)}return L}yg.exports=mg});var Ag=u((ZQ,hg)=>{"use strict";var QP=Kn(),$P=Rn(),jP=Hs(),WP=Ks(),VP=Ys(),KP=Ta(),YP=Ae();function HP(e,t,r){var n=$P(e);function a(){for(var o=arguments.length,i=Array(o),s=o,c=VP(a);s--;)i[s]=arguments[s];var f=o<3&&i[0]!==c&&i[o-1]!==c?[]:KP(i,c);if(o-=f.length,o<r)return WP(e,t,jP,a.placeholder,void 0,i,f,void 0,void 0,r-o);var d=this&&this!==YP&&this instanceof a?n:e;return QP(d,this,i)}return a}hg.exports=HP});var bg=u((e$,Ig)=>{"use strict";var zP=Kn(),JP=Rn(),XP=Ae(),ZP=1;function eq(e,t,r,n){var a=t&ZP,o=JP(e);function i(){for(var s=-1,c=arguments.length,f=-1,d=n.length,m=Array(d+c),y=this&&this!==XP&&this instanceof i?o:e;++f<d;)m[f]=n[f];for(;c--;)m[f++]=arguments[++s];return zP(y,a?r:this,m)}return i}Ig.exports=eq});var Rg=u((t$,_g)=>{"use strict";var tq=ks(),rq=Fs(),Sg=Ta(),wg="__lodash_placeholder__",zs=1,nq=2,aq=4,vg=8,xn=128,Eg=256,oq=Math.min;function sq(e,t){var r=e[1],n=t[1],a=r|n,o=a<(zs|nq|xn),i=n==xn&&r==vg||n==xn&&r==Eg&&e[7].length<=t[8]||n==(xn|Eg)&&t[7].length<=t[8]&&r==vg;if(!(o||i))return e;n&zs&&(e[2]=t[2],a|=r&zs?0:aq);var s=t[3];if(s){var c=e[3];e[3]=c?tq(c,s,t[4]):s,e[4]=c?Sg(e[3],wg):t[4]}return s=t[5],s&&(c=e[5],e[5]=c?rq(c,s,t[6]):s,e[6]=c?Sg(e[5],wg):t[6]),s=t[7],s&&(e[7]=s),n&xn&&(e[8]=e[8]==null?t[8]:oq(e[8],t[8])),e[9]==null&&(e[9]=t[9]),e[0]=t[0],e[1]=a,e}_g.exports=sq});var Tg=u((r$,xg)=>{"use strict";var iq=/\s/;function uq(e){for(var t=e.length;t--&&iq.test(e.charAt(t)););return t}xg.exports=uq});var Pg=u((n$,Og)=>{"use strict";var pq=Tg(),cq=/^\s+/;function lq(e){return e&&e.slice(0,pq(e)+1).replace(cq,"")}Og.exports=lq});var Ir=u((a$,qg)=>{"use strict";var dq=It(),fq=_e(),gq="[object Symbol]";function mq(e){return typeof e=="symbol"||fq(e)&&dq(e)==gq}qg.exports=mq});var Dg=u((o$,Lg)=>{"use strict";var yq=Pg(),Cg=De(),hq=Ir(),Ug=0/0,Aq=/^[-+]0x[0-9a-f]+$/i,Iq=/^0b[01]+$/i,bq=/^0o[0-7]+$/i,Sq=parseInt;function wq(e){if(typeof e=="number")return e;if(hq(e))return Ug;if(Cg(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Cg(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=yq(e);var r=Iq.test(e);return r||bq.test(e)?Sq(e.slice(2),r?2:8):Aq.test(e)?Ug:+e}Lg.exports=wq});var Mg=u((s$,Ng)=>{"use strict";var vq=Dg(),Bg=1/0,Eq=17976931348623157e292;function _q(e){if(!e)return e===0?e:0;if(e=vq(e),e===Bg||e===-Bg){var t=e<0?-1:1;return t*Eq}return e===e?e:0}Ng.exports=_q});var Js=u((i$,Gg)=>{"use strict";var Rq=Mg();function xq(e){var t=Rq(e),r=t%1;return t===t?r?t-r:t:0}Gg.exports=xq});var Oa=u((u$,jg)=>{"use strict";var Tq=Gs(),Oq=Of(),Pq=Ag(),qq=Hs(),Cq=bg(),Uq=Qs(),Lq=Rg(),Dq=Ws(),Bq=Vs(),kg=Js(),Nq="Expected a function",Fg=1,Mq=2,Xs=8,Zs=16,ei=32,Qg=64,$g=Math.max;function Gq(e,t,r,n,a,o,i,s){var c=t&Mq;if(!c&&typeof e!="function")throw new TypeError(Nq);var f=n?n.length:0;if(f||(t&=~(ei|Qg),n=a=void 0),i=i===void 0?i:$g(kg(i),0),s=s===void 0?s:kg(s),f-=a?a.length:0,t&Qg){var d=n,m=a;n=a=void 0}var y=c?void 0:Uq(e),v=[e,t,r,n,a,d,m,o,i,s];if(y&&Lq(v,y),e=v[0],t=v[1],r=v[2],n=v[3],a=v[4],s=v[9]=v[9]===void 0?c?0:e.length:$g(v[9]-f,0),!s&&t&(Xs|Zs)&&(t&=~(Xs|Zs)),!t||t==Fg)var C=Oq(e,t,r);else t==Xs||t==Zs?C=Pq(e,t,s):(t==ei||t==(Fg|ei))&&!a.length?C=Cq(e,t,r,n):C=qq.apply(void 0,v);var D=y?Tq:Dq;return Bq(D(C,v),e,t)}jg.exports=Gq});var Vg=u((p$,Wg)=>{"use strict";var kq=Oa(),Fq=128;function Qq(e,t,r){return t=r?void 0:t,t=e&&t==null?e.length:t,kq(e,Fq,void 0,void 0,void 0,void 0,t)}Wg.exports=Qq});var Yg=u((c$,Kg)=>{"use strict";var $q=Co(),jq=$q(Object.keys,Object);Kg.exports=jq});var ti=u((l$,Hg)=>{"use strict";var Wq=ra(),Vq=Yg(),Kq=Object.prototype,Yq=Kq.hasOwnProperty;function Hq(e){if(!Wq(e))return Vq(e);var t=[];for(var r in Object(e))Yq.call(e,r)&&r!="constructor"&&t.push(r);return t}Hg.exports=Hq});var br=u((d$,zg)=>{"use strict";var zq=Mo(),Jq=ti(),Xq=ar();function Zq(e){return Xq(e)?zq(e):Jq(e)}zg.exports=Zq});var ri=u((f$,Jg)=>{"use strict";var eC=cr(),tC=br();function rC(e,t){return e&&eC(t,tC(t),e)}Jg.exports=rC});var Zg=u((g$,Xg)=>{"use strict";var nC=cr(),aC=lr();function oC(e,t){return e&&nC(t,aC(t),e)}Xg.exports=oC});var tm=u((m$,em)=>{"use strict";function sC(e,t){for(var r=-1,n=e==null?0:e.length,a=0,o=[];++r<n;){var i=e[r];t(i,r,e)&&(o[a++]=i)}return o}em.exports=sC});var ni=u((y$,rm)=>{"use strict";function iC(){return[]}rm.exports=iC});var Pa=u((h$,am)=>{"use strict";var uC=tm(),pC=ni(),cC=Object.prototype,lC=cC.propertyIsEnumerable,nm=Object.getOwnPropertySymbols,dC=nm?function(e){return e==null?[]:(e=Object(e),uC(nm(e),function(t){return lC.call(e,t)}))}:pC;am.exports=dC});var sm=u((A$,om)=>{"use strict";var fC=cr(),gC=Pa();function mC(e,t){return fC(e,gC(e),t)}om.exports=mC});var ai=u((I$,im)=>{"use strict";var yC=Vn(),hC=ta(),AC=Pa(),IC=ni(),bC=Object.getOwnPropertySymbols,SC=bC?function(e){for(var t=[];e;)yC(t,AC(e)),e=hC(e);return t}:IC;im.exports=SC});var pm=u((b$,um)=>{"use strict";var wC=cr(),vC=ai();function EC(e,t){return wC(e,vC(e),t)}um.exports=EC});var oi=u((S$,cm)=>{"use strict";var _C=Vn(),RC=de();function xC(e,t,r){var n=t(e);return RC(e)?n:_C(n,r(e))}cm.exports=xC});var si=u((w$,lm)=>{"use strict";var TC=oi(),OC=Pa(),PC=br();function qC(e){return TC(e,PC,OC)}lm.exports=qC});var fm=u((v$,dm)=>{"use strict";var CC=oi(),UC=ai(),LC=lr();function DC(e){return CC(e,LC,UC)}dm.exports=DC});var mm=u((E$,gm)=>{"use strict";var BC=bt(),NC=Ae(),MC=BC(NC,"DataView");gm.exports=MC});var hm=u((_$,ym)=>{"use strict";var GC=bt(),kC=Ae(),FC=GC(kC,"Promise");ym.exports=FC});var wr=u((R$,Em)=>{"use strict";var ii=mm(),ui=Hn(),pi=hm(),ci=vo(),li=Ns(),vm=It(),Sr=yo(),Am="[object Map]",QC="[object Object]",Im="[object Promise]",bm="[object Set]",Sm="[object WeakMap]",wm="[object DataView]",$C=Sr(ii),jC=Sr(ui),WC=Sr(pi),VC=Sr(ci),KC=Sr(li),Qt=vm;(ii&&Qt(new ii(new ArrayBuffer(1)))!=wm||ui&&Qt(new ui)!=Am||pi&&Qt(pi.resolve())!=Im||ci&&Qt(new ci)!=bm||li&&Qt(new li)!=Sm)&&(Qt=function(e){var t=vm(e),r=t==QC?e.constructor:void 0,n=r?Sr(r):"";if(n)switch(n){case $C:return wm;case jC:return Am;case WC:return Im;case VC:return bm;case KC:return Sm}return t});Em.exports=Qt});var Rm=u((x$,_m)=>{"use strict";var YC=Object.prototype,HC=YC.hasOwnProperty;function zC(e){var t=e.length,r=new e.constructor(t);return t&&typeof e[0]=="string"&&HC.call(e,"index")&&(r.index=e.index,r.input=e.input),r}_m.exports=zC});var Tm=u((T$,xm)=>{"use strict";var JC=ea();function XC(e,t){var r=t?JC(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}xm.exports=XC});var Pm=u((O$,Om)=>{"use strict";var ZC=/\w*$/;function eU(e){var t=new e.constructor(e.source,ZC.exec(e));return t.lastIndex=e.lastIndex,t}Om.exports=eU});var Dm=u((P$,Lm)=>{"use strict";var qm=Ut(),Cm=qm?qm.prototype:void 0,Um=Cm?Cm.valueOf:void 0;function tU(e){return Um?Object(Um.call(e)):{}}Lm.exports=tU});var Nm=u((q$,Bm)=>{"use strict";var rU=ea(),nU=Tm(),aU=Pm(),oU=Dm(),sU=qo(),iU="[object Boolean]",uU="[object Date]",pU="[object Map]",cU="[object Number]",lU="[object RegExp]",dU="[object Set]",fU="[object String]",gU="[object Symbol]",mU="[object ArrayBuffer]",yU="[object DataView]",hU="[object Float32Array]",AU="[object Float64Array]",IU="[object Int8Array]",bU="[object Int16Array]",SU="[object Int32Array]",wU="[object Uint8Array]",vU="[object Uint8ClampedArray]",EU="[object Uint16Array]",_U="[object Uint32Array]";function RU(e,t,r){var n=e.constructor;switch(t){case mU:return rU(e);case iU:case uU:return new n(+e);case yU:return nU(e,r);case hU:case AU:case IU:case bU:case SU:case wU:case vU:case EU:case _U:return sU(e,r);case pU:return new n;case cU:case fU:return new n(e);case lU:return aU(e);case dU:return new n;case gU:return oU(e)}}Bm.exports=RU});var Gm=u((C$,Mm)=>{"use strict";var xU=wr(),TU=_e(),OU="[object Map]";function PU(e){return TU(e)&&xU(e)==OU}Mm.exports=PU});var $m=u((U$,Qm)=>{"use strict";var qU=Gm(),CU=na(),km=aa(),Fm=km&&km.isMap,UU=Fm?CU(Fm):qU;Qm.exports=UU});var Wm=u((L$,jm)=>{"use strict";var LU=wr(),DU=_e(),BU="[object Set]";function NU(e){return DU(e)&&LU(e)==BU}jm.exports=NU});var Hm=u((D$,Ym)=>{"use strict";var MU=Wm(),GU=na(),Vm=aa(),Km=Vm&&Vm.isSet,kU=Km?GU(Km):MU;Ym.exports=kU});var di=u((B$,Zm)=>{"use strict";var FU=on(),QU=xa(),$U=No(),jU=ri(),WU=Zg(),VU=Oo(),KU=ir(),YU=sm(),HU=pm(),zU=si(),JU=fm(),XU=wr(),ZU=Rm(),eL=Nm(),tL=Uo(),rL=de(),nL=ln(),aL=$m(),oL=De(),sL=Hm(),iL=br(),uL=lr(),pL=1,cL=2,lL=4,zm="[object Arguments]",dL="[object Array]",fL="[object Boolean]",gL="[object Date]",mL="[object Error]",Jm="[object Function]",yL="[object GeneratorFunction]",hL="[object Map]",AL="[object Number]",Xm="[object Object]",IL="[object RegExp]",bL="[object Set]",SL="[object String]",wL="[object Symbol]",vL="[object WeakMap]",EL="[object ArrayBuffer]",_L="[object DataView]",RL="[object Float32Array]",xL="[object Float64Array]",TL="[object Int8Array]",OL="[object Int16Array]",PL="[object Int32Array]",qL="[object Uint8Array]",CL="[object Uint8ClampedArray]",UL="[object Uint16Array]",LL="[object Uint32Array]",Q={};Q[zm]=Q[dL]=Q[EL]=Q[_L]=Q[fL]=Q[gL]=Q[RL]=Q[xL]=Q[TL]=Q[OL]=Q[PL]=Q[hL]=Q[AL]=Q[Xm]=Q[IL]=Q[bL]=Q[SL]=Q[wL]=Q[qL]=Q[CL]=Q[UL]=Q[LL]=!0;Q[mL]=Q[Jm]=Q[vL]=!1;function qa(e,t,r,n,a,o){var i,s=t&pL,c=t&cL,f=t&lL;if(r&&(i=a?r(e,n,a,o):r(e)),i!==void 0)return i;if(!oL(e))return e;var d=rL(e);if(d){if(i=ZU(e),!s)return KU(e,i)}else{var m=XU(e),y=m==Jm||m==yL;if(nL(e))return VU(e,s);if(m==Xm||m==zm||y&&!a){if(i=c||y?{}:tL(e),!s)return c?HU(e,WU(i,e)):YU(e,jU(i,e))}else{if(!Q[m])return a?e:{};i=eL(e,m,s)}}o||(o=new FU);var v=o.get(e);if(v)return v;o.set(e,i),sL(e)?e.forEach(function(L){i.add(qa(L,t,r,L,e,o))}):aL(e)&&e.forEach(function(L,U){i.set(U,qa(L,t,r,U,e,o))});var C=f?c?JU:zU:c?uL:iL,D=d?void 0:C(e);return QU(D||e,function(L,U){D&&(U=L,L=e[U]),$U(i,U,qa(L,t,r,U,e,o))}),i}Zm.exports=qa});var ty=u((N$,ey)=>{"use strict";var DL=di(),BL=4;function NL(e){return DL(e,BL)}ey.exports=NL});var ny=u((M$,ry)=>{"use strict";var ML=Oa(),GL=8;function fi(e,t,r){t=r?void 0:t;var n=ML(e,GL,void 0,void 0,void 0,void 0,void 0,t);return n.placeholder=fi.placeholder,n}fi.placeholder={};ry.exports=fi});var oy=u((G$,ay)=>{"use strict";var kL=It(),FL=_e(),QL=Lo(),$L="[object DOMException]",jL="[object Error]";function WL(e){if(!FL(e))return!1;var t=kL(e);return t==jL||t==$L||typeof e.message=="string"&&typeof e.name=="string"&&!QL(e)}ay.exports=WL});var iy=u((k$,sy)=>{"use strict";var VL=wr(),KL=_e(),YL="[object WeakMap]";function HL(e){return KL(e)&&VL(e)==YL}sy.exports=HL});var py=u((F$,uy)=>{"use strict";function zL(e,t){for(var r=-1,n=e==null?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}uy.exports=zL});var gi=u((Q$,cy)=>{"use strict";var JL=bo(),XL=py(),ZL=wo(),eD=1,tD=2;function rD(e,t,r,n,a,o){var i=r&eD,s=e.length,c=t.length;if(s!=c&&!(i&&c>s))return!1;var f=o.get(e),d=o.get(t);if(f&&d)return f==t&&d==e;var m=-1,y=!0,v=r&tD?new JL:void 0;for(o.set(e,t),o.set(t,e);++m<s;){var C=e[m],D=t[m];if(n)var L=i?n(D,C,m,t,e,o):n(C,D,m,e,t,o);if(L!==void 0){if(L)continue;y=!1;break}if(v){if(!XL(t,function(U,k){if(!ZL(v,k)&&(C===U||a(C,U,r,n,o)))return v.push(k)})){y=!1;break}}else if(!(C===D||a(C,D,r,n,o))){y=!1;break}}return o.delete(e),o.delete(t),y}cy.exports=rD});var dy=u(($$,ly)=>{"use strict";function nD(e){var t=-1,r=Array(e.size);return e.forEach(function(n,a){r[++t]=[a,n]}),r}ly.exports=nD});var hy=u((j$,yy)=>{"use strict";var fy=Ut(),gy=Po(),aD=tr(),oD=gi(),sD=dy(),iD=Xn(),uD=1,pD=2,cD="[object Boolean]",lD="[object Date]",dD="[object Error]",fD="[object Map]",gD="[object Number]",mD="[object RegExp]",yD="[object Set]",hD="[object String]",AD="[object Symbol]",ID="[object ArrayBuffer]",bD="[object DataView]",my=fy?fy.prototype:void 0,mi=my?my.valueOf:void 0;function SD(e,t,r,n,a,o,i){switch(r){case bD:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case ID:return!(e.byteLength!=t.byteLength||!o(new gy(e),new gy(t)));case cD:case lD:case gD:return aD(+e,+t);case dD:return e.name==t.name&&e.message==t.message;case mD:case hD:return e==t+"";case fD:var s=sD;case yD:var c=n&uD;if(s||(s=iD),e.size!=t.size&&!c)return!1;var f=i.get(e);if(f)return f==t;n|=pD,i.set(e,t);var d=oD(s(e),s(t),n,a,o,i);return i.delete(e),d;case AD:if(mi)return mi.call(e)==mi.call(t)}return!1}yy.exports=SD});var by=u((W$,Iy)=>{"use strict";var Ay=si(),wD=1,vD=Object.prototype,ED=vD.hasOwnProperty;function _D(e,t,r,n,a,o){var i=r&wD,s=Ay(e),c=s.length,f=Ay(t),d=f.length;if(c!=d&&!i)return!1;for(var m=c;m--;){var y=s[m];if(!(i?y in t:ED.call(t,y)))return!1}var v=o.get(e),C=o.get(t);if(v&&C)return v==t&&C==e;var D=!0;o.set(e,t),o.set(t,e);for(var L=i;++m<c;){y=s[m];var U=e[y],k=t[y];if(n)var be=i?n(k,U,y,t,e,o):n(U,k,y,e,t,o);if(!(be===void 0?U===k||a(U,k,r,n,o):be)){D=!1;break}L||(L=y=="constructor")}if(D&&!L){var ee=e.constructor,ke=t.constructor;ee!=ke&&"constructor"in e&&"constructor"in t&&!(typeof ee=="function"&&ee instanceof ee&&typeof ke=="function"&&ke instanceof ke)&&(D=!1)}return o.delete(e),o.delete(t),D}Iy.exports=_D});var Ty=u((V$,xy)=>{"use strict";var yi=on(),RD=gi(),xD=hy(),TD=by(),Sy=wr(),wy=de(),vy=ln(),OD=oa(),PD=1,Ey="[object Arguments]",_y="[object Array]",Ca="[object Object]",qD=Object.prototype,Ry=qD.hasOwnProperty;function CD(e,t,r,n,a,o){var i=wy(e),s=wy(t),c=i?_y:Sy(e),f=s?_y:Sy(t);c=c==Ey?Ca:c,f=f==Ey?Ca:f;var d=c==Ca,m=f==Ca,y=c==f;if(y&&vy(e)){if(!vy(t))return!1;i=!0,d=!1}if(y&&!d)return o||(o=new yi),i||OD(e)?RD(e,t,r,n,a,o):xD(e,t,c,r,n,a,o);if(!(r&PD)){var v=d&&Ry.call(e,"__wrapped__"),C=m&&Ry.call(t,"__wrapped__");if(v||C){var D=v?e.value():e,L=C?t.value():t;return o||(o=new yi),a(D,L,r,n,o)}}return y?(o||(o=new yi),TD(e,t,r,n,a,o)):!1}xy.exports=CD});var hi=u((K$,qy)=>{"use strict";var UD=Ty(),Oy=_e();function Py(e,t,r,n,a){return e===t?!0:e==null||t==null||!Oy(e)&&!Oy(t)?e!==e&&t!==t:UD(e,t,r,n,Py,a)}qy.exports=Py});var Uy=u((Y$,Cy)=>{"use strict";var LD=on(),DD=hi(),BD=1,ND=2;function MD(e,t,r,n){var a=r.length,o=a,i=!n;if(e==null)return!o;for(e=Object(e);a--;){var s=r[a];if(i&&s[2]?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++a<o;){s=r[a];var c=s[0],f=e[c],d=s[1];if(i&&s[2]){if(f===void 0&&!(c in e))return!1}else{var m=new LD;if(n)var y=n(f,d,c,e,t,m);if(!(y===void 0?DD(d,f,BD|ND,n,m):y))return!1}}return!0}Cy.exports=MD});var Ai=u((H$,Ly)=>{"use strict";var GD=De();function kD(e){return e===e&&!GD(e)}Ly.exports=kD});var By=u((z$,Dy)=>{"use strict";var FD=Ai(),QD=br();function $D(e){for(var t=QD(e),r=t.length;r--;){var n=t[r],a=e[n];t[r]=[n,a,FD(a)]}return t}Dy.exports=$D});var Ii=u((J$,Ny)=>{"use strict";function jD(e,t){return function(r){return r==null?!1:r[e]===t&&(t!==void 0||e in Object(r))}}Ny.exports=jD});var Gy=u((X$,My)=>{"use strict";var WD=Uy(),VD=By(),KD=Ii();function YD(e){var t=VD(e);return t.length==1&&t[0][2]?KD(t[0][0],t[0][1]):function(r){return r===e||WD(r,e,t)}}My.exports=YD});var Ua=u((Z$,ky)=>{"use strict";var HD=de(),zD=Ir(),JD=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,XD=/^\w*$/;function ZD(e,t){if(HD(e))return!1;var r=typeof e;return r=="number"||r=="symbol"||r=="boolean"||e==null||zD(e)?!0:XD.test(e)||!JD.test(e)||t!=null&&e in Object(t)}ky.exports=ZD});var $y=u((ej,Qy)=>{"use strict";var Fy=zn(),eB="Expected a function";function bi(e,t){if(typeof e!="function"||t!=null&&typeof t!="function")throw new TypeError(eB);var r=function(){var n=arguments,a=t?t.apply(this,n):n[0],o=r.cache;if(o.has(a))return o.get(a);var i=e.apply(this,n);return r.cache=o.set(a,i)||o,i};return r.cache=new(bi.Cache||Fy),r}bi.Cache=Fy;Qy.exports=bi});var Wy=u((tj,jy)=>{"use strict";var tB=$y(),rB=500;function nB(e){var t=tB(e,function(n){return r.size===rB&&r.clear(),n}),r=t.cache;return t}jy.exports=nB});var Si=u((rj,Vy)=>{"use strict";var aB=Wy(),oB=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,sB=/\\(\\)?/g,iB=aB(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(""),e.replace(oB,function(r,n,a,o){t.push(a?o.replace(sB,"$1"):n||r)}),t});Vy.exports=iB});var wi=u((nj,Ky)=>{"use strict";function uB(e,t){for(var r=-1,n=e==null?0:e.length,a=Array(n);++r<n;)a[r]=t(e[r],r,e);return a}Ky.exports=uB});var Zy=u((aj,Xy)=>{"use strict";var Yy=Ut(),pB=wi(),cB=de(),lB=Ir(),dB=1/0,Hy=Yy?Yy.prototype:void 0,zy=Hy?Hy.toString:void 0;function Jy(e){if(typeof e=="string")return e;if(cB(e))return pB(e,Jy)+"";if(lB(e))return zy?zy.call(e):"";var t=e+"";return t=="0"&&1/e==-dB?"-0":t}Xy.exports=Jy});var vi=u((oj,eh)=>{"use strict";var fB=Zy();function gB(e){return e==null?"":fB(e)}eh.exports=gB});var Ei=u((sj,th)=>{"use strict";var mB=de(),yB=Ua(),hB=Si(),AB=vi();function IB(e,t){return mB(e)?e:yB(e,t)?[e]:hB(AB(e))}th.exports=IB});var vr=u((ij,rh)=>{"use strict";var bB=Ir(),SB=1/0;function wB(e){if(typeof e=="string"||bB(e))return e;var t=e+"";return t=="0"&&1/e==-SB?"-0":t}rh.exports=wB});var _i=u((uj,nh)=>{"use strict";var vB=Ei(),EB=vr();function _B(e,t){t=vB(t,e);for(var r=0,n=t.length;e!=null&&r<n;)e=e[EB(t[r++])];return r&&r==n?e:void 0}nh.exports=_B});var oh=u((pj,ah)=>{"use strict";var RB=_i();function xB(e,t,r){var n=e==null?void 0:RB(e,t);return n===void 0?r:n}ah.exports=xB});var ih=u((cj,sh)=>{"use strict";function TB(e,t){return e!=null&&t in Object(e)}sh.exports=TB});var ph=u((lj,uh)=>{"use strict";var OB=Ei(),PB=Xr(),qB=de(),CB=gn(),UB=Zn(),LB=vr();function DB(e,t,r){t=OB(t,e);for(var n=-1,a=t.length,o=!1;++n<a;){var i=LB(t[n]);if(!(o=e!=null&&r(e,i)))break;e=e[i]}return o||++n!=a?o:(a=e==null?0:e.length,!!a&&UB(a)&&CB(i,a)&&(qB(e)||PB(e)))}uh.exports=DB});var lh=u((dj,ch)=>{"use strict";var BB=ih(),NB=ph();function MB(e,t){return e!=null&&NB(e,t,BB)}ch.exports=MB});var fh=u((fj,dh)=>{"use strict";var GB=hi(),kB=oh(),FB=lh(),QB=Ua(),$B=Ai(),jB=Ii(),WB=vr(),VB=1,KB=2;function YB(e,t){return QB(e)&&$B(t)?jB(WB(e),t):function(r){var n=kB(r,e);return n===void 0&&n===t?FB(r,e):GB(t,n,VB|KB)}}dh.exports=YB});var mh=u((gj,gh)=>{"use strict";function HB(e){return function(t){return t?.[e]}}gh.exports=HB});var hh=u((mj,yh)=>{"use strict";var zB=_i();function JB(e){return function(t){return zB(t,e)}}yh.exports=JB});var Ih=u((yj,Ah)=>{"use strict";var XB=mh(),ZB=hh(),eN=Ua(),tN=vr();function rN(e){return eN(e)?XB(tN(e)):ZB(e)}Ah.exports=rN});var Ri=u((hj,bh)=>{"use strict";var nN=Gy(),aN=fh(),oN=Zr(),sN=de(),iN=Ih();function uN(e){return typeof e=="function"?e:e==null?oN:typeof e=="object"?sN(e)?aN(e[0],e[1]):nN(e):iN(e)}bh.exports=uN});var wh=u((Aj,Sh)=>{"use strict";var pN=di(),cN=Ri(),lN=1;function dN(e){return cN(typeof e=="function"?e:pN(e,lN))}Sh.exports=dN});var Eh=u((Ij,vh)=>{"use strict";var fN=fo();function gN(e){var t=e==null?0:e.length;return t?fN(e,1):[]}vh.exports=gN});var Rh=u((bj,_h)=>{"use strict";var mN=Eh(),yN=go(),hN=Yn();function AN(e){return hN(yN(e,void 0,mN),e+"")}_h.exports=AN});var Th=u((Sj,xh)=>{"use strict";var IN=Oa(),bN=Rh(),SN=256,wN=bN(function(e,t){return IN(e,SN,void 0,void 0,void 0,t)});xh.exports=wN});var Ph=u((wj,Oh)=>{"use strict";var vN=wi(),EN=ir(),_N=de(),RN=Ir(),xN=Si(),TN=vr(),ON=vi();function PN(e){return _N(e)?vN(e,TN):RN(e)?[e]:EN(xN(ON(e)))}Oh.exports=PN});var Ch=u((vj,qh)=>{"use strict";qh.exports={ary:Vg(),assign:ri(),clone:ty(),curry:ny(),forEach:xa(),isArray:de(),isError:oy(),isFunction:en(),isWeakMap:iy(),iteratee:wh(),keys:ti(),rearg:Th(),toInteger:Js(),toPath:Ph()}});var Lh=u((Ej,Uh)=>{"use strict";var qN=Sf(),CN=Ch();function UN(e,t,r){return qN(CN,e,t,r)}Uh.exports=UN});var xi=u((_j,Bh)=>{"use strict";var LN=Lh(),Dh=LN("merge",Go());Dh.placeholder=Us();Bh.exports=Dh});var Fh=u((Ti,Oi)=>{"use strict";(function(e,t){typeof Ti=="object"&&typeof Oi<"u"?Oi.exports=t():typeof define=="function"&&define.amd?define(t):(e=typeof globalThis<"u"?globalThis:e||self).dayjs=t()})(Ti,function(){"use strict";var e=1e3,t=6e4,r=36e5,n="millisecond",a="second",o="minute",i="hour",s="day",c="week",f="month",d="quarter",m="year",y="date",v="Invalid Date",C=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,D=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,L={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(x){var S=["th","st","nd","rd"],h=x%100;return"["+x+(S[(h-20)%10]||S[h]||S[0])+"]"}},U=function(x,S,h){var _=String(x);return!_||_.length>=S?x:""+Array(S+1-_.length).join(h)+x},k={s:U,z:function(x){var S=-x.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),b=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(b,2,"0")},m:function x(S,h){if(S.date()<h.date())return-x(h,S);var _=12*(h.year()-S.year())+(h.month()-S.month()),b=S.clone().add(_,f),O=h-b<0,T=S.clone().add(_+(O?-1:1),f);return+(-(_+(h-b)/(O?b-T:T-b))||0)},a:function(x){return x<0?Math.ceil(x)||0:Math.floor(x)},p:function(x){return{M:f,y:m,w:c,d:s,D:y,h:i,m:o,s:a,ms:n,Q:d}[x]||String(x||"").toLowerCase().replace(/s$/,"")},u:function(x){return x===void 0}},be="en",ee={};ee[be]=L;var ke="$isDayjsObject",He=function(x){return x instanceof Tt||!(!x||!x[ke])},ze=function x(S,h,_){var b;if(!S)return be;if(typeof S=="string"){var O=S.toLowerCase();ee[O]&&(b=O),h&&(ee[O]=h,b=O);var T=S.split("-");if(!b&&T.length>1)return x(T[0])}else{var M=S.name;ee[M]=S,b=M}return!_&&b&&(be=b),b||!_&&be},W=function(x,S){if(He(x))return x.clone();var h=typeof S=="object"?S:{};return h.date=x,h.args=arguments,new Tt(h)},B=k;B.l=ze,B.i=He,B.w=function(x,S){return W(x,{locale:S.$L,utc:S.$u,x:S.$x,$offset:S.$offset})};var Tt=function(){function x(h){this.$L=ze(h.locale,null,!0),this.parse(h),this.$x=this.$x||h.x||{},this[ke]=!0}var S=x.prototype;return S.parse=function(h){this.$d=function(_){var b=_.date,O=_.utc;if(b===null)return new Date(NaN);if(B.u(b))return new Date;if(b instanceof Date)return new Date(b);if(typeof b=="string"&&!/Z$/i.test(b)){var T=b.match(C);if(T){var M=T[2]-1||0,Y=(T[7]||"0").substring(0,3);return O?new Date(Date.UTC(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)):new Date(T[1],M,T[3]||1,T[4]||0,T[5]||0,T[6]||0,Y)}}return new Date(b)}(h),this.init()},S.init=function(){var h=this.$d;this.$y=h.getFullYear(),this.$M=h.getMonth(),this.$D=h.getDate(),this.$W=h.getDay(),this.$H=h.getHours(),this.$m=h.getMinutes(),this.$s=h.getSeconds(),this.$ms=h.getMilliseconds()},S.$utils=function(){return B},S.isValid=function(){return this.$d.toString()!==v},S.isSame=function(h,_){var b=W(h);return this.startOf(_)<=b&&b<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,b){return B.u(h)?this[_]:this.set(b,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var b=this,O=!!B.u(_)||_,T=B.p(h),M=function(I,E){var P=B.w(b.$u?Date.UTC(b.$y,E,I):new Date(b.$y,E,I),b);return O?P:P.endOf(s)},Y=function(I,E){return B.w(b.toDate()[I].apply(b.toDate("s"),(O?[0,0,0,0]:[23,59,59,999]).slice(E)),b)},X=this.$W,ae=this.$M,F=this.$D,qe="set"+(this.$u?"UTC":"");switch(T){case m:return O?M(1,0):M(31,11);case f:return O?M(1,ae):M(0,ae+1);case c:var w=this.$locale().weekStart||0,A=(X<w?X+7:X)-w;return M(O?F-A:F+(6-A),ae);case s:case y:return Y(qe+"Hours",0);case i:return Y(qe+"Minutes",1);case o:return Y(qe+"Seconds",2);case a:return Y(qe+"Milliseconds",3);default:return this.clone()}},S.endOf=function(h){return this.startOf(h,!1)},S.$set=function(h,_){var b,O=B.p(h),T="set"+(this.$u?"UTC":""),M=(b={},b[s]=T+"Date",b[y]=T+"Date",b[f]=T+"Month",b[m]=T+"FullYear",b[i]=T+"Hours",b[o]=T+"Minutes",b[a]=T+"Seconds",b[n]=T+"Milliseconds",b)[O],Y=O===s?this.$D+(_-this.$W):_;if(O===f||O===m){var X=this.clone().set(y,1);X.$d[M](Y),X.init(),this.$d=X.set(y,Math.min(this.$D,X.daysInMonth())).$d}else M&&this.$d[M](Y);return this.init(),this},S.set=function(h,_){return this.clone().$set(h,_)},S.get=function(h){return this[B.p(h)]()},S.add=function(h,_){var b,O=this;h=Number(h);var T=B.p(_),M=function(ae){var F=W(O);return B.w(F.date(F.date()+Math.round(ae*h)),O)};if(T===f)return this.set(f,this.$M+h);if(T===m)return this.set(m,this.$y+h);if(T===s)return M(1);if(T===c)return M(7);var Y=(b={},b[o]=t,b[i]=r,b[a]=e,b)[T]||1,X=this.$d.getTime()+h*Y;return B.w(X,this)},S.subtract=function(h,_){return this.add(-1*h,_)},S.format=function(h){var _=this,b=this.$locale();if(!this.isValid())return b.invalidDate||v;var O=h||"YYYY-MM-DDTHH:mm:ssZ",T=B.z(this),M=this.$H,Y=this.$m,X=this.$M,ae=b.weekdays,F=b.months,qe=b.meridiem,w=function(E,P,Z,me){return E&&(E[P]||E(_,O))||Z[P].slice(0,me)},A=function(E){return B.s(M%12||12,E,"0")},I=qe||function(E,P,Z){var me=E<12?"AM":"PM";return Z?me.toLowerCase():me};return O.replace(D,function(E,P){return P||function(Z){switch(Z){case"YY":return String(_.$y).slice(-2);case"YYYY":return B.s(_.$y,4,"0");case"M":return X+1;case"MM":return B.s(X+1,2,"0");case"MMM":return w(b.monthsShort,X,F,3);case"MMMM":return w(F,X);case"D":return _.$D;case"DD":return B.s(_.$D,2,"0");case"d":return String(_.$W);case"dd":return w(b.weekdaysMin,_.$W,ae,2);case"ddd":return w(b.weekdaysShort,_.$W,ae,3);case"dddd":return ae[_.$W];case"H":return String(M);case"HH":return B.s(M,2,"0");case"h":return A(1);case"hh":return A(2);case"a":return I(M,Y,!0);case"A":return I(M,Y,!1);case"m":return String(Y);case"mm":return B.s(Y,2,"0");case"s":return String(_.$s);case"ss":return B.s(_.$s,2,"0");case"SSS":return B.s(_.$ms,3,"0");case"Z":return T}return null}(E)||T.replace(":","")})},S.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},S.diff=function(h,_,b){var O,T=this,M=B.p(_),Y=W(h),X=(Y.utcOffset()-this.utcOffset())*t,ae=this-Y,F=function(){return B.m(T,Y)};switch(M){case m:O=F()/12;break;case f:O=F();break;case d:O=F()/3;break;case c:O=(ae-X)/6048e5;break;case s:O=(ae-X)/864e5;break;case i:O=ae/r;break;case o:O=ae/t;break;case a:O=ae/e;break;default:O=ae}return b?O:B.a(O)},S.daysInMonth=function(){return this.endOf(f).$D},S.$locale=function(){return ee[this.$L]},S.locale=function(h,_){if(!h)return this.$L;var b=this.clone(),O=ze(h,_,!0);return O&&(b.$L=O),b},S.clone=function(){return B.w(this.$d,this)},S.toDate=function(){return new Date(this.valueOf())},S.toJSON=function(){return this.isValid()?this.toISOString():null},S.toISOString=function(){return this.$d.toISOString()},S.toString=function(){return this.$d.toUTCString()},x}(),Cn=Tt.prototype;return W.prototype=Cn,[["$ms",n],["$s",a],["$m",o],["$H",i],["$W",s],["$M",f],["$y",m],["$D",y]].forEach(function(x){Cn[x[1]]=function(S){return this.$g(S,x[0],x[1])}}),W.extend=function(x,S){return x.$i||(x(S,Tt,W),x.$i=!0),W},W.locale=ze,W.isDayjs=He,W.unix=function(x){return W(1e3*x)},W.en=ee[be],W.Ls=ee,W.p={},W})});var XA=u((xW,JA)=>{"use strict";function oM(e,t,r,n){for(var a=-1,o=e==null?0:e.length;++a<o;){var i=e[a];t(n,i,r(i),e)}return n}JA.exports=oM});var eI=u((TW,ZA)=>{"use strict";var sM=To(),iM=br();function uM(e,t){return e&&sM(e,t,iM)}ZA.exports=uM});var rI=u((OW,tI)=>{"use strict";var pM=ar();function cM(e,t){return function(r,n){if(r==null)return r;if(!pM(r))return e(r,n);for(var a=r.length,o=t?a:-1,i=Object(r);(t?o--:++o<a)&&n(i[o],o,i)!==!1;);return r}}tI.exports=cM});var aI=u((PW,nI)=>{"use strict";var lM=eI(),dM=rI(),fM=dM(lM);nI.exports=fM});var sI=u((qW,oI)=>{"use strict";var gM=aI();function mM(e,t,r,n){return gM(e,function(a,o,i){t(n,a,r(a),i)}),n}oI.exports=mM});var uI=u((CW,iI)=>{"use strict";var yM=XA(),hM=sI(),AM=Ri(),IM=de();function bM(e,t){return function(r,n){var a=IM(r)?yM:hM,o=t?t():{};return a(r,e,AM(n,2),o)}}iI.exports=bM});var cI=u((UW,pI)=>{"use strict";var SM=sn(),wM=uI(),vM=Object.prototype,EM=vM.hasOwnProperty,_M=wM(function(e,t,r){EM.call(e,r)?e[r].push(t):SM(e,r,[t])});pI.exports=_M});var NM={};R(NM,{Method:()=>ja,ai:()=>Mi,api:()=>Ki,auditLogs:()=>vt,automations:()=>ya,backups:()=>Ne,branding:()=>ca,constants:()=>Vr,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>mf,licensing:()=>tt,logger:()=>$t,mappers:()=>ne,middleware:()=>Li,plugins:()=>ha,publicApi:()=>ba,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,sdk:()=>Pi,users:()=>lt,utils:()=>Zt});module.exports=DI(NM);var ja=(o=>(o.POST="POST",o.GET="GET",o.PATCH="PATCH",o.DELETE="DELETE",o.PUT="PUT",o))(ja||{});var Pi={};R(Pi,{ai:()=>la,auditLogs:()=>vt,automations:()=>ya,backups:()=>Ne,branding:()=>ca,environmentVariables:()=>ot,features:()=>xe,groups:()=>J,init:()=>mf,licensing:()=>tt,logger:()=>$t,plugins:()=>ha,publicApi:()=>ba,quotas:()=>Ve,scimGroups:()=>Er,scimUsers:()=>ve,users:()=>lt,utils:()=>Zt});var ca={};R(ca,{getBrandingConfig:()=>Ox});var xe={};R(xe,{checkBackups:()=>Re,checkFeature:()=>ua,checkFeatures:()=>Yo,checkSCIM:()=>Xo,isAICustomConfigsEnabled:()=>xx,isAppBuildersEnabled:()=>Bt,isAuditLogsEnabled:()=>pa,isBackupsEnabled:()=>Ho,isBrandingEnabled:()=>zo,isBudibaseAIEnabled:()=>An,isEnforceableSSO:()=>Od,isExpandedPublicApiEnabled:()=>ct,isSSOEnforced:()=>Ex,isSyncAutomationsEnabled:()=>wx,isTriggerAutomationRunEnabled:()=>vx,isUserGroupsEnabled:()=>Jo,isViewPermissionEnabled:()=>_x,isViewReadonlyColumnsEnabled:()=>Rx});var fe=require("@budibase/types"),pt=require("@budibase/backend-core");var tt={};R(tt,{cache:()=>Qe,client:()=>At,features:()=>jn,getFreeLicense:()=>Vo,getLicense:()=>Wo,keys:()=>Ko,offline:()=>sa,quotas:()=>Wn});var Qe={};R(Qe,{getCachedLicense:()=>xd,invalidate:()=>Td,refresh:()=>Lt});var Wa=require("@budibase/backend-core"),Tr,BI=async()=>{Tr=await new Wa.redis.Client(Wa.redis.utils.Databases.LICENSES).init()},NI=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await NI()});var Va=async()=>(Tr||await BI(),Tr);var At={};R(At,{activateLicenseKey:()=>io,getLicense:()=>Jt,triggerQuota:()=>_b});var Xi=N(require("node-fetch"));var Zi=require("@budibase/backend-core"),Ka=class{constructor(t){this.apiCall=t=>async(r="",n={})=>{n.headers||(n.headers={}),n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",Accept:"application/json",...n.headers});let a=n.headers["Content-Type"]==="application/json";Zi.logging.correlation.setHeader(n.headers);let o={method:t,body:a?JSON.stringify(n.body):n.body,headers:n.headers,credentials:"include"};return(0,Xi.default)(`${this.host}${r}`,o)};this.post=this.apiCall("POST");this.get=this.apiCall("GET");this.patch=this.apiCall("PATCH");this.del=this.apiCall("DELETE");this.put=this.apiCall("PUT");this.host=t}},Ya=Ka;var $n=require("@budibase/types"),G=require("@budibase/backend-core");var Xe={};R(Xe,{bustCache:()=>ru,getCurrentUsageValues:()=>su,getQuotaUsage:()=>Ot,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,utils:()=>Pr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var Pr={};R(Pr,{generateBaseQuotaUsage:()=>Dn,generateNewMonthlyQuotas:()=>Or,generateNewQuotaUsage:()=>za,getBreakdownName:()=>Nn,getCurrentMonthString:()=>mt,setCurrentMonth:()=>Bn,setQuotaReset:()=>Ha});var ue=require("@budibase/types"),Ln=require("@budibase/backend-core"),eu=()=>{let e=new Date;return new Date(e.getFullYear(),e.getMonth()+1,1).toISOString()},Ha=e=>{e.quotaReset=eu()},mt=()=>{let e=new Date,t=e.getMonth()+1,r=e.getFullYear();return`${t}-${r}`},Dn=()=>({usageQuota:{[ue.StaticQuotaName.APPS]:0,[ue.StaticQuotaName.ROWS]:0,[ue.StaticQuotaName.PLUGINS]:0,[ue.StaticQuotaName.USERS]:0,[ue.StaticQuotaName.CREATORS]:0,[ue.StaticQuotaName.USER_GROUPS]:0,[ue.StaticQuotaName.AI_CUSTOM_CONFIGS]:0,triggers:{}},monthly:{[mt()]:Or()}}),za=()=>{let e={_id:Ln.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:eu(),...Dn(),apps:{}};return Bn(e),e},Or=()=>({[ue.MonthlyQuotaName.QUERIES]:0,[ue.MonthlyQuotaName.AUTOMATIONS]:0,[ue.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:0,triggers:{}}),Bn=e=>{let t=mt();e.monthly||(e.monthly={}),e.monthly[t]||(e.monthly[t]=Or()),e.monthly.current=e.monthly[t]},Nn=(e,t)=>{if(!(!t||!e))switch(e){case ue.MonthlyQuotaName.AUTOMATIONS:return ue.BreakdownQuotaName.AUTOMATIONS;case ue.MonthlyQuotaName.QUERIES:return Ln.db.isTableId(t)?ue.BreakdownQuotaName.ROW_QUERIES:Ln.db.isDatasourceId(t)?ue.BreakdownQuotaName.DATASOURCE_QUERIES:void 0}};var GI=le.Duration.fromSeconds(60).toMs(),{Writethrough:kI}=le.cache.writethrough;function FI(e){return delete e.usageLimits,delete e.usageQuota.automationRuns,delete e.usageQuota.emails,delete e.usageQuota.storage,delete e.usageQuota.views,delete e.usageQuota.publishedApps,delete e.usageQuota.developers,e}var Ja=()=>new kI(le.tenancy.getGlobalDB(),GI),ru=async()=>{let e=le.tenancy.getGlobalDB();try{let t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota);t?._rev&&await e.remove(le.db.StaticDatabases.GLOBAL.docs.usageQuota,t._rev)}catch(t){if(t.status!==404)throw t}},Ot=async()=>{let e=Ja(),t;try{t=await e.get(le.db.StaticDatabases.GLOBAL.docs.usageQuota),Bn(t),Ha(t)}catch(r){if(r.status===404){t=za();let n=await e.put(t);t._rev=n.rev}else throw r}return FI(t)},nu=async(e,t,r)=>Za({name:t,type:r,values:{total:e}}),au=async(e,t,r)=>{let n=Ja(),a=await Ot(),o=Object.values(e).reduce((s,c)=>s+c,0);for(let[s,c]of Object.entries(e))a=ou(a,t,r,{total:o,app:c},{appId:s});let i=await n.put(a);return a._rev=i.rev,a},QI=(e,t,r,n)=>{let a=Nn(t,r);if(!a||!n?.breakdown)return e;e.breakdown||(e.breakdown={}),e.breakdown[a]||(e.breakdown[a]={parent:t,values:{}});let o=e.breakdown[a];return o.values[r]=n.breakdown,e},Xa=(e,t,r,n={},a)=>{let o;try{o=le.db.getProdAppID(n?.appId||le.context.getAppId())}catch{}if(!o||!a.app||!ye.APP_QUOTA_NAMES.includes(t))return e;e.apps?.[o]||(e.apps={...e.apps,[o]:Dn()});let i=e.apps[o];switch(r){case ye.QuotaUsageType.STATIC:i.usageQuota[t]=a.app;break;case ye.QuotaUsageType.MONTHLY:{let s=mt(),c=t,f=i.monthly[s];f||(i.monthly[s]=Or(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=QI(f,c,n.id,a));break}}return e},tu=(e,t,r,n)=>{if(!ye.APP_QUOTA_NAMES.includes(r))return{};let a;try{a=le.db.getProdAppID(le.context.getAppId())}catch{}if(!a||!e.apps||!e.apps[a])return{app:0};let o=e.apps[a];switch(t){case ye.QuotaUsageType.STATIC:if(o.usageQuota?.[r])return{app:o.usageQuota[r]};break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=r;if(!o.monthly?.[i]?.[s])break;let c=o.monthly[i],f=c[s],d,m=Nn(s,n);return m&&n&&c.breakdown?.[m]&&(d=c.breakdown[m]?.values[n]),{app:f,breakdown:d||0}}}return{app:0}},$I=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},jI=(e,t,r,n)=>{r.monthly[t].triggers||(r.monthly[t].triggers={}),n&&(r.monthly[t].triggers[e]=n)},ou=(e,t,r,n,a={})=>{if(r===ye.QuotaUsageType.STATIC)t=t,e.usageQuota[t]=n.total,$I(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,jI(t,o,e,n.triggers)}else throw new Error(`Invalid usage type: ${r}`);return Xa(e,t,r,a,n)},Za=async e=>{let t=Array.isArray(e)?e:[e],r=Ja(),n=await Ot();for(let o of t)n=ou(n,o.name,o.type,o.values,o.opts);let a=await r.put(n,0);return n._rev=a.rev,n},su=async(e,t,r)=>{let n=await Ot(),a=0,o={};switch(e){case ye.QuotaUsageType.STATIC:if(n.usageQuota[t]){let i=t;a=n.usageQuota[i],o=tu(n,e,t,r)}break;case ye.QuotaUsageType.MONTHLY:{let i=mt(),s=t;n.monthly[i][s]&&(a=n.monthly[i][s],o=tu(n,e,t,r));break}default:throw new Error(`Invalid usage type: ${e}`)}return ye.APP_QUOTA_NAMES.includes(t)&&!(o.app||o.breakdown)&&(o.app=o.app||0,o.breakdown=o.breakdown||0),{total:a,app:o.app,breakdown:o.breakdown}};var Ue={};R(Ue,{destroy:()=>KI,get:()=>eo,save:()=>VI});var yt=require("@budibase/backend-core"),WI=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),VI=async e=>{let t=await eo();t={...t,...e};let n=await yt.tenancy.getGlobalDB().put(t);return t._rev=n.rev,t},eo=async()=>{let e=yt.tenancy.getGlobalDB();try{return await e.get(yt.StaticDatabases.GLOBAL.docs.licenseInfo)}catch(t){if(t.status===404)return WI();throw t}},KI=async()=>{let e=yt.tenancy.getGlobalDB(),t=await eo();t&&t._rev&&await e.remove(yt.StaticDatabases.GLOBAL.docs.licenseInfo,t._rev)};var V={};R(V,{bulkSave:()=>ob,destroy:()=>sb,fetch:()=>tb,generateUserGroupID:()=>ZI,get:()=>rb,getBulk:()=>nb,getByName:()=>to,getGroupUsers:()=>Gn,getGroupUsersParams:()=>lu,getUserGroupsParams:()=>cu,save:()=>ab});var $=require("@budibase/backend-core");var Fe=require("@budibase/types"),Yt=require("@budibase/backend-core");async function iu(){let e=Yt.sql.designDoc.base("type");e.sql.tables={[Fe.AUDIT_LOG_TYPE]:{fields:{appId:Fe.SQLiteType.TEXT,event:Fe.SQLiteType.TEXT,userId:Fe.SQLiteType.TEXT,timestamp:Fe.SQLiteType.TEXT,metadata:Fe.SQLiteType.TEXT,name:Fe.SQLiteType.TEXT,type:Fe.SQLiteType.TEXT,fallback:Fe.SQLiteType.TEXT}}};let t=Yt.context.getAuditLogsDB(),r;try{r=await t.get(Yt.SQLITE_DESIGN_DOC_ID),r={...r,...e}}catch(n){if(n.status===404)r=e;else throw n}await t.put(r)}var Mn=require("@budibase/backend-core"),{ViewName:YI,SEPARATOR:HI,DocumentType:zI,createView:JI}=Mn.db,XI=zI.USER+HI;async function uu(){let e=Mn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
+
if (doc._id.startsWith("${XI}") && Array.isArray(doc.userGroups)) {
|
|
5
5
|
for (let groupId of doc.userGroups) {
|
|
6
6
|
emit("g_" + groupId, { email: doc.email, userId: doc._id })
|
|
7
7
|
emit("e_" + groupId + doc.email, { email: doc.email, userId: doc._id })
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
}`;await
|
|
11
|
-
if (doc._id.startsWith("${
|
|
10
|
+
}`;await JI(e,t,YI.USER_BY_GROUP)}var pu=`${$.DocumentType.GROUP}${$.SEPARATOR}`;function cu(e,t={}){e||(e="");let r=e?.startsWith($.DocumentType.GROUP)?"":pu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${$.UNICODE_MAX}`}}function lu(e,t={}){e||(e="");let{emailSearch:r,bookmark:n,...a}=t;return r?{...a,startkey:`e_${e}${n||r}`,endkey:`e_${e}${r}${$.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${$.UNICODE_MAX}`,startkey_docid:n}}function ZI(){return`${pu}${$.utils.newid()}`}async function Gn(e,t){let r=$.tenancy.getGlobalDB();return(await $.db.queryView($.db.ViewName.USER_BY_GROUP,lu(e,t),r,uu,{arrayResponse:!0})).map(a=>({_id:a.userId,email:a.email}))||[]}async function qr(e){return e.users=await Gn(e._id),e}async function eb(e){let r=(await qr(e)).users?.map(o=>o._id),n=await $.users.bulkGetGlobalUsersById(r),a=[];for(let o of n){if(!o.userGroups)continue;let i=o.userGroups.length;o.userGroups=o.userGroups.filter(s=>s!==e._id),o.userGroups.length!==i&&a.push(o)}a.length&&await $.users.bulkUpdateGlobalUsers(a)}async function du(){return(await $.tenancy.getGlobalDB().allDocs(cu(null,{include_docs:!0}))).rows.map(t=>t.doc)}async function tb(){let e=await du(),t=[];for(let r of e)t.push(qr(r));return await Promise.all(t)}async function rb(e){let r=await $.tenancy.getGlobalDB().get(e);return await qr(r)}async function nb(e,t={enriched:!0}){let n=await $.tenancy.getGlobalDB().getMultiple(e,{allowMissing:!0});if(t?.enriched){let a=[];for(let o of n)a.push(qr(o));return await Promise.all(a)}else return n}async function ab(e){return await $.tenancy.getGlobalDB().put(e)}async function ob(e){return await $.tenancy.getGlobalDB().bulkDocs(e)}async function sb(e,t){let r=$.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await eb(n),a}async function to(e){let t=e.toLowerCase(),n=(await du()).find(a=>a.name.toLowerCase()===t);if(n)return await qr(n)}var Le={};R(Le,{deleteAppBackupMetadata:()=>bb,fetchAppBackups:()=>hb,generateAppBackupID:()=>Ru,getAppBackupMetadata:()=>Sb,oldestBackupDate:()=>Eu,storeAppBackupMetadata:()=>Ab,updateAppBackupMetadata:()=>Ib});var z=require("@budibase/backend-core"),vu=require("@budibase/types");function Cr(e,t){let r=e.rows.map(a=>a.doc?a.doc:a);if(!t?.paginate)return{data:r,hasNextPage:!1};let n=r.length>t?.pageSize;return{data:r.slice(0,t?.pageSize),hasNextPage:n,nextPage:n?e.rows[t?.pageSize]?.key:void 0}}var Ht=require("@budibase/backend-core"),{ViewName:gu,AutomationViewMode:ro,SEPARATOR:Ze,DocumentType:mu,createView:yu}=Ht.db,ib=mu.AUTOMATION_LOG+Ze,fu=mu.APP_BACKUP+Ze;async function hu(){let e=Ht.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${ib}")) {
|
|
12
12
|
let autoId = doc.automationId + "${Ze}"
|
|
13
13
|
let status = doc.status + "${Ze}"
|
|
14
14
|
let autoKey = "${ro.AUTOMATION}${Ze}" + autoId + doc.createdAt
|
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
emit(autoKey)
|
|
19
19
|
emit(allKey)
|
|
20
20
|
}
|
|
21
|
-
}`;await
|
|
22
|
-
if (doc._id.startsWith("${
|
|
21
|
+
}`;await yu(e,t,gu.AUTOMATION_LOGS)}async function Au(){let e=Ht.tenancy.getGlobalDB(),t=`function(doc) {
|
|
22
|
+
if (doc._id.startsWith("${fu}") && doc.type && doc.trigger) {
|
|
23
23
|
let full = doc.appId + "${Ze}"
|
|
24
24
|
full += doc.trigger.toLowerCase() + "${Ze}"
|
|
25
25
|
full += doc.type.toLowerCase() + "${Ze}"
|
|
26
|
-
emit("${
|
|
26
|
+
emit("${fu}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await
|
|
28
|
+
}`;await yu(e,t,gu.APP_BACKUP_BY_TRIGGER)}var wu=require("@budibase/types");var Vr={};R(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>zt,licenses:()=>Ee,quotas:()=>ut,versions:()=>Wr});var Ee={};R(Ee,{CLOUD_FREE_LICENSE:()=>pb,SELF_FREE_LICENSE:()=>no,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>cb});var ht=require("@budibase/types");var ut={};R(ut,{UNLIMITED:()=>ub,appBackupRetentionDays:()=>$r,apps:()=>Lr,automationLogRetentionDays:()=>Qr,automations:()=>kr,budibaseAICredits:()=>Fr,creators:()=>Br,customAIConfigurations:()=>jr,plugins:()=>Mr,queries:()=>Gr,rows:()=>Ur,userGroups:()=>Nr,users:()=>Dr});var he=require("@budibase/types"),ub=-1,Ur=e=>({[he.StaticQuotaName.ROWS]:{name:"Rows",value:e,triggers:[90,100]}}),Lr=e=>({[he.StaticQuotaName.APPS]:{name:"Apps",value:e,triggers:[100]}}),Dr=e=>({[he.StaticQuotaName.USERS]:{name:"Users",value:e,triggers:[80,100]}}),Br=e=>({[he.StaticQuotaName.CREATORS]:{name:"Creators",value:e,triggers:[]}}),Nr=e=>({[he.StaticQuotaName.USER_GROUPS]:{name:"User Groups",value:e,triggers:[80,100]}}),Mr=e=>({[he.StaticQuotaName.PLUGINS]:{name:"Plugins",value:e,triggers:[90,100]}}),Gr=e=>({[he.MonthlyQuotaName.QUERIES]:{name:"Queries",value:e,triggers:[]}}),kr=e=>({[he.MonthlyQuotaName.AUTOMATIONS]:{name:"Automations",value:e,triggers:[80,90,100]}}),Fr=e=>({[he.MonthlyQuotaName.BUDIBASE_AI_CREDITS]:{name:"Budibase AI Credits",value:e,triggers:[80,90,100]}}),Qr=e=>({[he.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS]:{name:"Automation Logs",value:e,triggers:[]}}),$r=e=>({[he.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS]:{name:"App Backups",value:e,triggers:[]}}),jr=e=>({[he.StaticQuotaName.AI_CUSTOM_CONFIGS]:{name:"Custom AI Configuration",value:e,triggers:[]}});var te=-1,pb={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(200),...Fr(0)},static:{...Lr(te),...Ur(2e3),...Dr(5),...Br(5),...Nr(0),...Mr(10),...jr(0)}},constant:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},no={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(0)},static:{...Ur(te),...Lr(te),...Dr(20),...Br(te),...Nr(0),...Mr(10),...jr(0)}},constant:{...Qr(1),...$r(0)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}},cb={features:[],quotas:{usage:{monthly:{...Gr(te),...kr(te),...Fr(te)},static:{...Lr(te),...Ur(te),...Dr(te),...Br(te),...Nr(te),...Mr(te),...jr(te)}},constant:{...Qr(te),...$r(te)}},plan:{type:ht.PlanType.FREE,usesInvoicing:!1,model:ht.PlanModel.PER_USER}};var Wr={};R(Wr,{getLicenseVersion:()=>lb,getProVersion:()=>bu});var Pt=require("@budibase/backend-core"),kn=N(require("fs")),Iu=N(require("path")),lb=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=Iu.default.join(Pt.objectStore.budibaseTempDir(),e);if(kn.default.existsSync(t))return kn.default.readFileSync(t,"utf8");{let r=Pt.utils.newid();return kn.default.writeFileSync(t,r),r}}else return bu()},bu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};R(zt,{searchTable:()=>fb});var qt=require("@budibase/types"),Su=require("@budibase/backend-core");function fb(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:Su.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var gb=new Date(864e13).toISOString(),mb=1e3*60*60*24;async function Fn(e){let r=(await Qe.getCachedLicense()).quotas?.[wu.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(gb).toISOString():new Date(new Date().getTime()-mb*r).toISOString()}async function Eu(){return Fn(vu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var ao=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function yb(e,t,r={}){let n=await Eu(),a=z.db.getProdAppID(e),o=a,i=a;if(t.trigger&&t.type){let s=`${z.db.SEPARATOR}${t.trigger}`;s+=`${z.db.SEPARATOR}${t.type}`,o+=s,i+=s}return(!t.startDate||t.startDate<n)&&(t.startDate=n),t.startDate&&(i+=`${z.db.SEPARATOR}${t.startDate}`),t.endDate&&(o+=`${z.db.SEPARATOR}${t.endDate}`),{...r,descending:!0,startkey:`${ao}${o}${z.db.UNICODE_MAX}`,endkey:`${ao}${i}`}}async function _u(e,t){try{let r=z.db.getQueryIndex(z.db.ViewName.APP_BACKUP_BY_TRIGGER);return await e.query(r,t)}catch(r){if(r!=null&&r.error==="not_found")return await Au(),_u(e,t);throw r}}function Ru(e,t){return`${ao}${e}${z.db.SEPARATOR}${t}`}async function hb(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await yb(e,t,{include_docs:!0,limit:a+1});t.page&&(o.startkey=t.page),!t.trigger||!t.type?n=await r.allDocs(o):n=await _u(r,o);let i=Cr(n,{paginate:t.paginate,pageSize:a}),s=[...new Set(i.data.filter(f=>f.createdBy).map(f=>f.createdBy))],c=await z.users.bulkGetGlobalUsersById(s,{cleanup:!0});for(let f of c)for(let d of i.data)f?._id===d.createdBy&&(d.createdBy=f);return i}async function Ab(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=Ru(n,e.timestamp),o={...e,_id:a,appId:n,name:e.name};return o._id=t.docId||o._id,o._rev=t.docRev||o._rev,t.filename&&(o.filename=t.filename),e.createdBy&&(o.createdBy=z.db.getGlobalIDFromUserMetadataID(e.createdBy)),await r.put(o)}async function Ib(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function bb(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function Sb(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};R(Ct,{get:()=>vb,getCacheEnvVarID:()=>Ou,getEnvVarID:()=>Qn,update:()=>Eb});var $e=require("@budibase/backend-core"),Tu=N(require("lru-cache")),wb=1e3,xu=new Tu.default({max:wb});function Qn(){return $e.StaticDatabases.GLOBAL.docs.environmentVariables}function Ou(e){return`${$e.tenancy.getTenantId()}/${Qn()}/${e||""}`}async function vb(){let e=Qn(),t=$e.tenancy.getGlobalDB(),r,n=!1;try{r=await t.get(e)}catch(s){if(s.status==404)n=!0;else throw s}let a=Ou(r?._rev),o=xu.get(a);if(o)return o;let i;return!n&&r?i={...r,variables:JSON.parse($e.encryption.decrypt(r.variables,$e.encryption.SecretOption.ENCRYPTION))}:i={_id:e,variables:{}},xu.set(a,i),i}async function Eb(e){let t=Qn();return await $e.tenancy.getGlobalDB().put({_id:e._id||t,_rev:e._rev||void 0,variables:$e.encryption.encrypt(JSON.stringify(e.variables),$e.encryption.SecretOption.ENCRYPTION)})}var oo=new Ya(G.env.ACCOUNT_PORTAL_URL),so=async e=>{try{let t=await e.json();if(t.message)return t.message}catch{}try{let t=await e.text();if(t)return t}catch{}},Pu=async e=>{let t,r;if(G.env.SELF_HOSTED){if(t=await Ue.get(),!t.licenseKey)return;r={[G.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=G.tenancy.getTenantId();r={[G.constants.Header.API_KEY]:G.env.ACCOUNT_PORTAL_API_KEY,[G.constants.Header.TENANT_ID]:n}}return e(r)},qu=async()=>Pu(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await G.users.getUserCount();console.info(`Syncing user count quota to ${s}`),t.usageQuota.users=s,await Xe.setUsage(s,$n.StaticQuotaName.USERS,$n.QuotaUsageType.STATIC)}let r=await G.installation.getInstallFromDB(),n=G.tenancy.getTenantId(),a=await G.events.identification.getUniqueTenantId(n),o=Wr.getProVersion(),i={quotaUsage:t,install:{id:r.installId,tenantId:a,version:o}};try{let s=await oo.post("/api/license",{headers:{...e},body:i});if(s.status===404||s.status===403)return;if(s.status!==200){let c=await so(s);throw new G.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(G.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});G.env.isJest()&&(qu=jest.fn());var Jt=qu,_b=e=>Pu(async t=>{let r=await oo.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await so(r);G.logging.logAlert(`Error triggering quota usage: ${n}`)}}),io=async e=>{let t=await G.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await oo.post("/api/license/activate",{headers:{[G.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new G.HTTPError("Invalid license key",400);if(n.status!==200){let a=await so(n);throw new G.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var jo=require("@budibase/backend-core");var sa={};R(sa,{activateOfflineLicenseToken:()=>px,deleteOfflineLicenseToken:()=>cx,dev:()=>yn,enrichLicense:()=>wd,getIdentifier:()=>ko,getIdentifierBase64:()=>lx,getIdentifierFromBase64:()=>dx,getOfflineLicense:()=>Fo,getOfflineLicenseToken:()=>Id,signing:()=>Hr,verifyExpiry:()=>bd,verifyInstallation:()=>Sd});var Hr={};R(Hr,{sign:()=>xb,verifyLicenseToken:()=>Yr});var uo=N(require("jsonwebtoken")),Rb=`-----BEGIN PUBLIC KEY-----
|
|
29
29
|
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvz3jePLCFBXZ19c8Dpkv
|
|
30
30
|
XtSgOhKFOcvQdo/LV0KJRUzQWDPWuO4ILtBtnqhjtIzZH4CH0qCYBet5L6Qr4CM1
|
|
31
31
|
l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
@@ -34,8 +34,8 @@ l2HXiAD1Q2rlHNW9wDaYyKb1F5f+v4RyqCAyzlkwRdksmkLeECTboojNnmRCrE3C
|
|
|
34
34
|
d/o3ZWE1TTj1zYwlCLN5qRKr3hU8nC3xEYNEbkB9SfTRaOq9Q7P8WmfLkoCPm3pR
|
|
35
35
|
mwIDAQAB
|
|
36
36
|
-----END PUBLIC KEY-----
|
|
37
|
-
`;function Yr(e){return uo.default.verify(e,_b,{algorithms:["RS256"]})}function Rb(e,t){return uo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var jn={};R(jn,{getFeatures:()=>po});var l=require("@budibase/types");var xb={[l.PlanType.FREE]:[...Ee.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS]},Ob={[l.PlanType.FREE]:[...Ee.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI]};function po(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(xb);break;case l.Hosting.CLOUD:r=n(Ob);break}return r}var Wn={};R(Wn,{UNLIMITED:()=>g,getQuotas:()=>co});var K=require("@budibase/types");var p=ut,qu=Ee,g=-1,zr=e=>e*1e6,Tb={[K.PlanType.FREE]:{...qu.CLOUD_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}},Pb={[K.PlanType.FREE]:{...qu.SELF_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:void 0,[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}};function co(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case K.Hosting.SELF:r=n(Pb);break;case K.Hosting.CLOUD:r=n(Tb);break}return JSON.parse(JSON.stringify(r))}var Zt={};R(Zt,{appExists:()=>qb,encoding:()=>Xt});var Cu=require("@budibase/backend-core");async function qb(e){return(await Cu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Xt={};R(Xt,{base64ToObject:()=>Ub,objectToBase64:()=>Cb});function Cb(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Ub(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var md=require("@budibase/types"),dr=require("@budibase/backend-core"),yd=N(Yc()),hd=N(Go());async function ux(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function px(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function Ad(){return(await Ue.get()).offlineLicenseToken}async function ko(){let t=(await dr.installation.getInstall()).installId,r=dr.context.getTenantId(),n=await dr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function cx(){let e=await ko();return Xt.objectToBase64(e)}function lx(e){return Xt.base64ToObject(e)}function Id(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function bd(e){let t=await ko();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function Sd(e){let t=e.plan.type,r=md.Hosting.SELF,n=po(r,t),a=co(r,t);return e.features=(0,yd.default)(e.features,n),e.quotas=(0,hd.default)(e.quotas,a),e}async function Fo(){try{let e=await Ad();if(e){let t=await Yr(e);return Id(t),await bd(t),Sd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};R(yn,{deleteDevLicense:()=>yx,getOfflineLicense:()=>gx,writeDevLicenseToDisk:()=>mx});var wd=require("@budibase/backend-core"),$o=require("path"),vd=require("os"),Dt=N(require("fs"));var dx=wd.env.isTest()?".budibase-test":".budibase",Qo=(0,$o.join)((0,vd.tmpdir)(),dx),fx="dev_license.txt",mn=(0,$o.join)(Qo,fx);if(!Dt.default.existsSync(Qo))try{Dt.default.mkdirSync(Qo)}catch{}function gx(){try{if(Dt.default.existsSync(mn)){let e=Dt.default.readFileSync(mn,{encoding:"utf-8"});return Yr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function mx(e){console.log(`Writing license to: ${mn}`),Dt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function yx(){Dt.default.rmSync(mn,{force:!0})}var Wo=async()=>{if(jo.env.OFFLINE_MODE)return Fo();let e=await Jt();return e||(e=yn.getOfflineLicense()),e},Vo=()=>jo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ko={};R(Ko,{activateLicenseKey:()=>hx,deleteLicenseKey:()=>Ix,getLicenseKey:()=>Ax});async function hx(e){await io(e),await Ue.save({licenseKey:e}),await Lt()}async function Ax(){return(await Ue.get()).licenseKey}async function Ix(){await Ue.save({licenseKey:void 0}),await Lt()}var hn=require("@budibase/backend-core"),ia=N(require("dd-trace")),Ed=3600,Lt=async()=>{await xd(),await Rd()},_d=async(e,t)=>{let{populateLicense:r=Wo,populateFreeLicense:n=Vo}=t||{};return await ia.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Va(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ia.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ia.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:Ed}),await i.store(o,s,Ed),s)})};hn.env.isJest()&&(_d=jest.fn());var Rd=_d,xd=async()=>{let e=hn.tenancy.getTenantId();await(await Va()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function ua(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Yo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Re(e){return async(...t)=>(await ua(fe.Feature.APP_BACKUPS),e(...t))}async function Ho(){return ge(fe.Feature.APP_BACKUPS)}async function zo(){return ge(fe.Feature.BRANDING)}async function Od(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function Sx(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function wx(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function pa(){return ge(fe.Feature.AUDIT_LOGS)}async function Jo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function vx(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Od())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var Xo=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await pt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function Ex(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function _x(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function Rx(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var xx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Ox(e){return await zo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:xx}var la={};R(la,{enrichAIConfig:()=>Zo});var Tx="budibase_ai";async function Zo(e){return await An()&&(e.config[Tx]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Ve={};R(Ve,{addApp:()=>Lx,addAutomation:()=>kx,addCustomAIConfig:()=>Fx,addGroup:()=>ts,addPlugin:()=>ns,addRow:()=>Bx,addRows:()=>Mx,addUsers:()=>fa,bustCache:()=>ru,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>su,getLicensedQuota:()=>Pd,getQuotaUsage:()=>Tt,increment:()=>Oe,incrementBudibaseAICredits:()=>ss,incrementMany:()=>Nt,removeApp:()=>Dx,removeCustomAIConfig:()=>Qx,removeCustomAIConfigs:()=>$x,removeGroup:()=>rs,removePlugin:()=>as,removeRow:()=>Nx,removeRows:()=>Gx,removeUsers:()=>yr,set:()=>es,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,updatePluginCount:()=>os,updateUsage:()=>fr,usageLimitIsExceeded:()=>Ux,utils:()=>Pr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Oe=(e,t,r)=>Td({change:1,name:e,type:t,opts:r}),Nt=e=>Td(e),Td=async e=>{let t=Array.isArray(e)?e:[e];await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},je=(e,t,r={})=>fr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return fr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},es=async(e,t,r)=>Xe.setUsage(r,e,t),Px=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},qx=async(e,t,r,n)=>{try{await Be.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await At.triggerQuota(a)})}catch(a){Be.logging.logAlert("Error triggering quota",a)}},Cx=async(e,t,r,n)=>{let a=await Tt(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await Px(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,d]of s.entries())if(c>=d&&n.value!==ut.UNLIMITED){if(!i[d]){i[d]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===d)&&await qx(t,n,c,o)}}else i[d]=void 0;return i},fr=async e=>{let t=Array.isArray(e)?e:[e],r=null,n,a=[],o={},i={},s={},c={};for(let d of t){try{r=Be.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(d.name)&&!r)throw new Error("App context required for quota update");try{n=await Pd(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:y,app:v,breakdown:C}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);y+=d.usageChange,v!=null&&(v+=d.usageChange),C!=null&&(C+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await Cx(d.type,d.name,y,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&y>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(y=Math.max(0,y),v&&(v=Math.max(0,v)),C&&(C=Math.max(0,C),s={...s,[d.name]:C}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(y=await L(),v=y),o={...o,[d.name]:y},i={...i,[d.name]:v}}}catch(y){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,y),y}}let f=t.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:o[d.name],app:i[d.name],breakdown:s[d.name],triggers:c[d.name]},opts:d.opts}));f.length>0&&await Xe.setAllUsage(f)},Pd=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Ux=async(e,t)=>{try{return await fr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Be.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var gr=require("@budibase/types"),qd=require("@budibase/backend-core"),Cd=async()=>{let e=await qd.db.getAllApps({dev:!0});return e?e.length:0},Lx=async(e,{appId:t}={})=>Oe(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{fn:e,valueFn:Cd,id:t}),Dx=async({appId:e}={})=>je(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{valueFn:Cd,id:e});var rt=require("@budibase/types"),Bx=async(e,{tableId:t}={})=>Oe(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),Nx=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),Mx=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),Gx=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var da=require("@budibase/types"),kx=async(e,{automationId:t}={})=>Oe(da.MonthlyQuotaName.AUTOMATIONS,da.QuotaUsageType.MONTHLY,{fn:e,id:t});var mr=require("@budibase/types"),ts=async e=>Oe(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC,{fn:e}),rs=async()=>je(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC);var St=require("@budibase/types"),ns=async e=>Oe(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),as=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),os=async e=>es(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),In=require("@budibase/backend-core");var fa=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:In.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}});let a=await Nt(n);return await Jt(),a},yr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}}),await Mt(r),await Jt()};var We=require("@budibase/types"),ss=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),Fx=async()=>Oe(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),Qx=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),$x=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};R(lt,{addAppBuilder:()=>Yx,db:()=>at,removeAppBuilder:()=>Hx});var Sn=require("@budibase/backend-core");var J={};R(J,{addAppBuilder:()=>ls,addUsers:()=>us,adjustGroupCreatorsQuotas:()=>Kx,cleanupApp:()=>Vx,enrichUserRolesFromGroups:()=>Wx,fetch:()=>bn,get:()=>kt,getBulk:()=>Gd,getGroupBuilderAppIds:()=>Md,getGroupRoleId:()=>jx,remove:()=>is,removeAppBuilder:()=>ds,removeUsers:()=>ps,save:()=>hr,updateGroupApps:()=>cs});var q=require("@budibase/backend-core");var Ud=require("@budibase/backend-core"),ga=class extends Ud.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Bd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[q.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await q.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw q.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Nd(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Md(e,t){if(!e.userGroups)return[];let r=await Nd(e.userGroups,t?.groups),n=t?.appId?q.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function jx(e,t,r){if(!e.userGroups)return null;let n=await Nd(e.userGroups,r?.groups),a=q.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Bd(n,t))}async function Wx(e){if(!e||!e.userGroups)return e;let t=await Gd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await q.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Bd(t,a);o&&(e.roles[a]=o)});let n=await Md(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function bn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function Gd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Ld(e){if(await V.getByName(e))throw new ga(e)}async function Dd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let r=q.tenancy.getGlobalDB(),n=await Promise.all(t.map(o=>r.get(o._id)));return(await Promise.all(n.map(q.userUtils.isCreator))).filter(o=>!!o).length}async function hr(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Ld(e.name),t.push(q.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Ld(e.name),t.push(q.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Dd(o)),Object.values(e.roles).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(q.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ts(a);{let o=await a();if(n>0)await fa(0,n);else if(n<0){let i=await Dd(e),s=Math.abs(n)-i;s>0&&await yr(0,s)}return o}}async function is(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=q.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(v=>i.get(v._id)))).map(v=>({...v,userGroups:v.userGroups.filter(C=>C!==e)})),m=(await Promise.all(f.map(q.userUtils.isCreator))).filter(v=>!!v).length,y=s.length-m;y&&(a=()=>yr(0,y))}let o=await V.destroy(e,t);return await q.events.group.deleted(r),await rs(),await a(),o}async function us(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await q.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await Promise.all(a.map(q.userUtils.isCreator))).filter(m=>!!m).length,d=a.length-f;d&&await fa(0,d)}let s=[];for(let c of t)s.push(q.cache.user.invalidateUser(c));return await Promise.all(s),await q.events.group.usersAdded(o.length,r),o}async function ps(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await q.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await Promise.all(a.map(q.userUtils.isCreator))).filter(d=>!!d).length,f=a.length-c;f&&await yr(0,f)}let i=[];for(let s of t)i.push(q.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await q.events.group.usersDeleted(a.length,r),a}async function cs(e,t){let r=await kt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await hr(r)}async function Vx(e){let t=await bn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function ls(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await hr(n))}async function ds(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await hr(n))}async function Kx(){if(!await Jo()){let e=q.tenancy.getGlobalDB(),r=(await bn()||[]).filter(n=>Object.values(n?.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(d=>e.get(d._id)))).map(d=>({...d,userGroups:d.userGroups.filter(m=>m!==n._id)})),c=(await Promise.all(i.map(q.userUtils.isCreator))).filter(d=>!!d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await yr(0,f)}}}Sn.users.UserDB.init(Ve,J,xe);var at=Sn.users.UserDB;async function Yx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function Hx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var ya={};R(ya,{logs:()=>bs});var bs={};R(bs,{logSearch:()=>aO,oldestLogDate:()=>Vd,storeLog:()=>oO});var Wd=require("@budibase/types"),ma=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var kd=require("@budibase/backend-core");async function Fd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||kd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:zx,DocumentType:Qd,AutomationViewMode:fs,ViewName:Jx,getQueryIndex:Xx}=pe.db,Zx=new Date(0).toISOString(),eO=100,gs=async()=>Fn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function $d(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${fs.ALL}${dt}${i}${o}`:r?s=`${fs.STATUS}${dt}${i}`:n?s=`${fs.AUTOMATION}${dt}${o}`:s=`${Qd.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${zx}`,endkey:`${s}${e}`}}function ms(e){let t=wt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=wt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=wt.AutomationStatus.STOPPED;break}}else{t=wt.AutomationStatus.ERROR;break}}return t}function tO(e,t,r){return`${Qd.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function ys(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=$d(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Cr(s,{paginate:r?.paginate,pageSize:9})}async function hs(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=$d(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(Xx(Jx.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await yu(),hs(e,t,r);throw o}return Cr(a,{paginate:!0,pageSize:9})}async function jd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=ms(t),i=new Date().toISOString(),s=tO(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function As(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Fd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function rO(){let e=await gs();try{return await ys(Zx,e,{docs:!1,paginate:!1,limit:eO})}catch{return{data:[],hasNextPage:!1}}}async function Is(){let e=pe.context.getProdAppDB();try{let t=await rO();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(pe.db.SEPARATOR);return o[o.length-1]===wt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await As(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Vd=gs;async function nO(e,t,r,n){let a,o=new Date().toISOString(),i=await Vd();return(!e||e<i)&&(e=i),r||t?a=await hs(e,o,{automationId:r,status:t,page:n}):a=await ys(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function aO(e){return await Is(),await nO(e.startDate,e.status,e.automationId,e.page)}async function oO(e,t){if(!ma.db.isProdAppID(ma.context.getAppId()))return;let r=ms(t),n=await jd(e,t);r===Wd.AutomationStatus.ERROR&&await As([n]),await Is()}var ha={};R(ha,{checkPluginQuotas:()=>uO,deletePlugin:()=>iO,storePlugin:()=>sO});var zd=require("@budibase/types"),oe=require("@budibase/backend-core");var Kd=N(require("fs")),Yd=require("path");function Hd(e,t){return Kd.default.readFileSync((0,Yd.join)(e,t),"utf8")}async function sO(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===zd.PluginType.DATASOURCE){let js=Hd(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ns(write)}async function iO(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await as()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function uO(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await os(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};R(ot,{fetch:()=>cO,fetchValues:()=>lO,isEncryptionKeyAvailable:()=>pO,isValid:()=>Zd,remove:()=>fO,update:()=>dO});var wn=require("@budibase/types"),Jd=require("@budibase/backend-core");function pO(){return!!Jd.env.ENCRYPTION_KEY}async function cO(){let e=await Ct.get();return Object.keys(e.variables)}async function lO(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function Xd(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ct.get();r.variables=e(r.variables),await Ct.update(r)}async function dO(e,t){if(Zd(e))await Xd(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function fO(e){await Xd(t=>(delete t[e],t))}function Zd(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};R(vt,{definitions:()=>EO,download:()=>vO,fetch:()=>wO,write:()=>bO});var Ia=require("@budibase/types");var re=require("@budibase/backend-core"),Ke=require("@budibase/types");var ef=require("memorystream"),tf=new re.sql.Sql(Ke.SqlClient.SQL_LITE);async function gO(e,t,r){let n={operation:Ke.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ke.SortOrder.DESCENDING,type:Ke.SortType.STRING}}},a=tf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function mO(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function rf(e){e._id||(e._id=mO(e.timestamp)),e.type||(e.type=Ke.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function Ss(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await gO(e,t,a),i=zt.searchTable(),s=tf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await yO(),await iu(),await Ss(e,t,{isRetry:!0});throw a}}async function yO(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ke.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function nf(e){let t=re.context.getAuditLogsDB(),r=new ef,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,d)=>{!f||f.length===0||(s=!!(s&&d&&f.includes(d)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new ef;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
-
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Aa=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),AO=En.constants.MIN_VALID_DATE.toISOString(),IO=En.constants.MAX_VALID_DATE.toISOString();function ws(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||AO,e.endDate=e.endDate||IO),e}async function af(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=ws(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function vs(e,t,r){let n={_id:e,status:Aa.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Es(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function of(e,t){let r=Aa.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=Es(r)),n}async function bO(e,t,r){if(!await pa()||!Se.utils.isAudited(e))return;let n=of(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||Ia.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await rf(o)}async function SO(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(m=>m?._id===s.userId),f=o.find(m=>Se.db.isSameAppID(m?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||vs(s.userId,"user",s.fallback)};s.appId&&(d.app=f||vs(s.appId,"app",s.fallback)),i.push(d)}return i}async function wO(e){if(!await pa())throw new Error("Audit logs not available - license required.");let t=await af(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ss(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await SO(r.rows)}}function vO(e){return e=ws(e),nf(e)}function EO(){let e=Object.entries(Ia.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Es(r[1]);return t}var ba={};R(ba,{applications:()=>Os,roles:()=>Rs,users:()=>_s});var _s={};R(_s,{roleCheck:()=>RO});function _O(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function RO(e,t){return await ct()||_O(e,t),e}var Rs={};R(Rs,{assign:()=>xO,unAssign:()=>OO});var _n=require("@budibase/backend-core");async function xO(e,t){if(!await ct())throw new Error("Unable to assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await at.bulkUpdate(r)}async function OO(e,t){if(!await ct())throw new Error("Unable to un-assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Os={};R(Os,{buildExportFn:()=>PO,buildImportFn:()=>TO});var xs=require("@budibase/backend-core");function TO(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await xs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function PO(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await xs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var st=require("@budibase/backend-core"),Ie=require("@budibase/types");var Ts=require("@budibase/backend-core"),sf;function uf(){sf=Ts.queue.createQueue(Ts.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return sf}var pf=require("path"),cf=N(require("fs"));async function Ps(e,t={}){return Le.storeAppBackupMetadata(e,t)}function lf(e){let t=new Date().toISOString();switch(e){case Ie.AppBackupStatus.COMPLETE:case Ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function qO(e,t,r,n){let a=await Sa(e);return await Le.storeAppBackupMetadata({...a,...lf(t),contents:r,status:t,type:Ie.AppBackupType.BACKUP},{filename:n,docId:e})}async function CO(e,t,r){let n=await Sa(e);return await Le.storeAppBackupMetadata({...n,...lf(r),status:r,type:Ie.AppBackupType.RESTORE,trigger:Ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Sa(e){return Le.getAppBackupMetadata(e)}async function UO(e,t){return Le.updateAppBackupMetadata(e,t)}async function LO(e){let t=await Le.getAppBackupMetadata(e);return t.filename&&await st.objectStore.deleteFile(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Le.deleteAppBackupMetadata(e)}async function DO(e,t){return Le.fetchAppBackups(e,t)}async function df(e){let t=await Le.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await st.objectStore.getReadStream(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function BO(e){let{stream:t}=await df(e),r=(0,pf.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=cf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function NO(e,t,r={}){let n;try{n=await Ps({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,Ie.AppBackupType.BACKUP,t,r?.name),n.id}async function MO(e,t,r,n){let a=await Sa(t),o;try{o=await Ps({appId:e,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var GO={isEnabled:Ho,triggerAppRestore:Re(MO),triggerAppBackup:Re(NO),getBackupDownloadStream:Re(df),downloadAppBackup:Re(BO),fetchAppBackups:Re(DO),storeAppBackupMetadata:Re(Ps),updateBackupStatus:Re(qO),updateRestoreStatus:Re(CO),getAppBackup:Re(Sa),updateAppBackup:Re(UO),deleteAppBackup:Re(LO)},ft=GO;var Cs={};R(Cs,{init:()=>qs});var se=require("@budibase/backend-core");var Ye=require("@budibase/types");var Ar=N(require("fs"));async function qs(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return QO(t,e);if(r.import)return FO(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function kO(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function ff(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await ft.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await ft.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ye.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),d=`${o}/backup-${i}.tar.gz`,m=se.objectStore.ObjectStoreBuckets.BACKUPS,y=Ar.default.createReadStream(c);await se.objectStore.streamUpload({bucket:m,filename:d,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ye.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ar.default.existsSync(c)&&Ar.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ye.AppBackupStatus.FAILED)}}async function FO(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ye.AppBackupStatus.STARTED);await ff(Ye.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await kO(c);let m=Ye.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(y){se.logging.logAlert("App restore error",y),m=Ye.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,m),Ar.default.existsSync(d)&&Ar.default.rmSync(d,{force:!0})})}async function QO(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ft.updateBackupStatus(r.docId,Ye.AppBackupStatus.STARTED);return ff(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var $O=async e=>{uf(),await qs(e.processing)},Ne={...ft,processing:Cs,init:$O,getBackupQueue:Ft};var gf=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};R(ve,{create:()=>BN,find:()=>DN,get:()=>LN,remove:()=>MN,update:()=>NN});var Bh=N(xi()),gt=require("@budibase/backend-core");var Nh=require("@budibase/types");async function LN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,Nh.SearchIndex.USER);r.setIndexBuilder(gt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function DN(e){return await gt.users.getById(e)}async function BN(e){let t=await at.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new gt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,Bh.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await at.save(e,{requirePassword:!1})}async function NN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function MN(e){return await at.destroy(e)}var Er={};R(Er,{create:()=>GN});var Mh=N(xi());var Gh=require("@budibase/backend-core");async function GN(e){let t=await to(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new Gh.HTTPError("Group is already synched",409);r=t._id,t.users&&(await J.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,Mh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var $t={};R($t,{logRequest:()=>QN,logResponse:()=>$N});var Fh=N(kh()),Et=require("@budibase/backend-core"),{DocWritethrough:kN}=Et.cache.docWritethrough;function FN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Fh.default)().format("YYYYMMDD")}`}var Qh=async()=>{let e=Et.context.getScimDBName();return new kN(Et.db.getDB(e),FN())};async function QN(e){let t=Date.now().toString();return await(await Qh()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function $N(e,t){await(await Qh()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Li={};R(Li,{doInScimContext:()=>qi,feature:()=>H,internalGroupOnly:()=>Ba,licensing:()=>$h,requireSCIM:()=>Ci,scimGroupOnly:()=>Tn,scimUserOnly:()=>On});var _t=require("@budibase/backend-core");var La=require("@budibase/types"),jN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(_t.env.SELF_HOSTED&&_t.env.DEFAULT_LICENSE)return t.user.license=no,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(_t.utils.isServingApp(t)||_t.utils.isServingBuilder(t)||_t.utils.isServingBuilderPreview(t)||_t.utils.isPublicApiRequest(t))&&await Ve.usageLimitIsExceeded(La.StaticQuotaName.USERS,La.QuotaUsageType.STATIC)}return r()},$h=jN;var H={};R(H,{requireFeature:()=>WN,requireFeatures:()=>VN});var WN=e=>async(t,r)=>{await ua(e),await r()},VN=(...e)=>async(t,r)=>{await Yo(e),await r()};var Da=require("@budibase/backend-core");var qi=async(e,t)=>{let r;return Da.env.DISABLE_SCIM_CALLS||(r=await $t.logRequest({...e.request.toJSON(),body:e.request.body})),await Da.context.doInScimContext(async()=>{let n=await t();return r&&await $t.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Ci=async(e,t)=>{await Xo(),await t()};var jh=require("@budibase/backend-core");var On=e=>Ui(jh.users.getById,e,!0),Tn=e=>Ui(V.get,e,!0),Ba=e=>Ui(V.get,e,!1);function Ui(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var Ki={};R(Ki,{ai:()=>aA,appBackups:()=>$A,auditLogs:()=>UA,environmentVariables:()=>_A,groups:()=>yA,scim:()=>II,users:()=>EI});var Mi={};R(Mi,{LargeLanguageModel:()=>Rr});var Jh=require("@budibase/backend-core"),Rt=require("@budibase/types"),Xh=require("@budibase/shared-core");var Di=N(require("openai"));function _r(e){return`Summarize this text:
|
|
37
|
+
`;function Yr(e){return uo.default.verify(e,Rb,{algorithms:["RS256"]})}function xb(e,t){return uo.default.sign(t,e,{encoding:"utf-8",algorithm:"RS256"})}var jn={};R(jn,{getFeatures:()=>po});var l=require("@budibase/types");var Tb={[l.PlanType.FREE]:[...Ee.SELF_FREE_LICENSE.features],[l.PlanType.PREMIUM]:void 0,[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS]},Ob={[l.PlanType.FREE]:[...Ee.CLOUD_FREE_LICENSE.features],[l.PlanType.PREMIUM]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS],[l.PlanType.PREMIUM_PLUS]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PREMIUM_PLUS_TRIAL]:[l.Feature.APP_BACKUPS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.BUDIBASE_AI],[l.PlanType.PRO]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.TEAM]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.BRANDING],[l.PlanType.BUSINESS]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.OFFLINE,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE_BASIC_TRIAL]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI],[l.PlanType.ENTERPRISE]:[l.Feature.USER_GROUPS,l.Feature.APP_BACKUPS,l.Feature.ENVIRONMENT_VARIABLES,l.Feature.ENFORCEABLE_SSO,l.Feature.AUDIT_LOGS,l.Feature.BRANDING,l.Feature.SYNC_AUTOMATIONS,l.Feature.APP_BUILDERS,l.Feature.EXPANDED_PUBLIC_API,l.Feature.VIEW_PERMISSIONS,l.Feature.TRIGGER_AUTOMATION_RUN,l.Feature.SCIM,l.Feature.VIEW_READONLY_COLUMNS,l.Feature.AI_CUSTOM_CONFIGS,l.Feature.BUDIBASE_AI]};function po(e,t){let r=[];function n(a){let o=a[t];if(!o)throw new Error(`Features do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case l.Hosting.SELF:r=n(Tb);break;case l.Hosting.CLOUD:r=n(Ob);break}return r}var Wn={};R(Wn,{UNLIMITED:()=>g,getQuotas:()=>co});var K=require("@budibase/types");var p=ut,Cu=Ee,g=-1,zr=e=>e*1e6,Pb={[K.PlanType.FREE]:{...Cu.CLOUD_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(1e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(zr(2))},static:{...p.rows(25e3),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(1e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(5e3),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(1e4),...p.budibaseAICredits(0)},static:{...p.rows(5e4),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(365),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(zr(4))},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}},qb={[K.PlanType.FREE]:{...Cu.SELF_FREE_LICENSE.quotas},[K.PlanType.PREMIUM]:void 0,[K.PlanType.PREMIUM_PLUS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PREMIUM_PLUS_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(0),...p.plugins(g),...p.customAIConfigurations(1)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(30)}},[K.PlanType.PRO]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(5),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(7),...p.appBackupRetentionDays(7)}},[K.PlanType.TEAM]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(10),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(30),...p.appBackupRetentionDays(90)}},[K.PlanType.BUSINESS]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(50),...p.plugins(g),...p.customAIConfigurations(0)}},constant:{...p.automationLogRetentionDays(90),...p.appBackupRetentionDays(365)}},[K.PlanType.ENTERPRISE_BASIC]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}},[K.PlanType.ENTERPRISE_BASIC_TRIAL]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(15),...p.appBackupRetentionDays(15)}},[K.PlanType.ENTERPRISE]:{usage:{monthly:{...p.queries(g),...p.automations(g),...p.budibaseAICredits(0)},static:{...p.rows(g),...p.apps(g),...p.users(g),...p.creators(g),...p.userGroups(g),...p.plugins(g),...p.customAIConfigurations(g)}},constant:{...p.automationLogRetentionDays(g),...p.appBackupRetentionDays(g)}}};function co(e,t){let r;function n(a){let o=a[t];if(!o)throw new Error(`Quotas do not exist for planType=${t} and hosting=${e}`);return o}switch(e){case K.Hosting.SELF:r=n(qb);break;case K.Hosting.CLOUD:r=n(Pb);break}return JSON.parse(JSON.stringify(r))}var Zt={};R(Zt,{appExists:()=>Cb,encoding:()=>Xt});var Uu=require("@budibase/backend-core");async function Cb(e){return(await Uu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Xt={};R(Xt,{base64ToObject:()=>Lb,objectToBase64:()=>Ub});function Ub(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function Lb(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var yd=require("@budibase/types"),dr=require("@budibase/backend-core"),hd=N(Hc()),Ad=N(Go());async function px(e){await Ue.save({offlineLicenseToken:e}),await Lt()}async function cx(){await Ue.save({offlineLicenseToken:void 0}),await Lt()}async function Id(){return(await Ue.get()).offlineLicenseToken}async function ko(){let t=(await dr.installation.getInstall()).installId,r=dr.context.getTenantId(),n=await dr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function lx(){let e=await ko();return Xt.objectToBase64(e)}function dx(e){return Xt.base64ToObject(e)}function bd(e){let t=Date.now(),r=new Date(e.expireAt).getTime();if(t>r)throw new Error(`Offline license has expired. expireAt=${e.expireAt}`)}async function Sd(e){let t=await ko();if(e.identifier.installId!==t.installId||e.identifier.tenantId!==t.tenantId)throw new Error("Invalid offline license")}function wd(e){let t=e.plan.type,r=yd.Hosting.SELF,n=po(r,t),a=co(r,t);return e.features=(0,hd.default)(e.features,n),e.quotas=(0,Ad.default)(e.quotas,a),e}async function Fo(){try{let e=await Id();if(e){let t=await Yr(e);return bd(t),await Sd(t),wd(t)}}catch(e){console.error("Error retrieving offline license",e)}}var yn={};R(yn,{deleteDevLicense:()=>hx,getOfflineLicense:()=>mx,writeDevLicenseToDisk:()=>yx});var vd=require("@budibase/backend-core"),$o=require("path"),Ed=require("os"),Dt=N(require("fs"));var fx=vd.env.isTest()?".budibase-test":".budibase",Qo=(0,$o.join)((0,Ed.tmpdir)(),fx),gx="dev_license.txt",mn=(0,$o.join)(Qo,gx);if(!Dt.default.existsSync(Qo))try{Dt.default.mkdirSync(Qo)}catch{}function mx(){try{if(Dt.default.existsSync(mn)){let e=Dt.default.readFileSync(mn,{encoding:"utf-8"});return Yr(e)}}catch(e){console.error("Error retrieving offline license from disk",e)}}function yx(e){console.log(`Writing license to: ${mn}`),Dt.default.writeFileSync(mn,e,{encoding:"utf-8"})}function hx(){Dt.default.rmSync(mn,{force:!0})}var Wo=async()=>{if(jo.env.OFFLINE_MODE)return Fo();let e=await Jt();return e||(e=yn.getOfflineLicense()),e},Vo=()=>jo.env.SELF_HOSTED?Ee.SELF_FREE_LICENSE:Ee.CLOUD_FREE_LICENSE;var Ko={};R(Ko,{activateLicenseKey:()=>Ax,deleteLicenseKey:()=>bx,getLicenseKey:()=>Ix});async function Ax(e){await io(e),await Ue.save({licenseKey:e}),await Lt()}async function Ix(){return(await Ue.get()).licenseKey}async function bx(){await Ue.save({licenseKey:void 0}),await Lt()}var hn=require("@budibase/backend-core"),ia=N(require("dd-trace")),_d=3600,Lt=async()=>{await Td(),await xd()},Rd=async(e,t)=>{let{populateLicense:r=Wo,populateFreeLicense:n=Vo}=t||{};return await ia.default.trace("getCachedLicense",async a=>{let o=hn.tenancy.getTenantId(),i=await Va(),s=await i.get(o);return a.addTags({tenantId:o,foundInCache:!!s}),s||(s=await ia.default.trace("populateLicense",async()=>await r(o)),a.addTags({populatedLicense:!!s}),s||(s=ia.default.trace("populateFreeLicense",()=>n(e,o)),a.addTags({populatedFreeLicense:!!s})),s.refreshedAt=new Date().toISOString(),a.addTags({refreshedAt:s.refreshedAt,expirySeconds:_d}),await i.store(o,s,_d),s)})};hn.env.isJest()&&(Rd=jest.fn());var xd=Rd,Td=async()=>{let e=hn.tenancy.getTenantId();await(await Va()).delete(e)};async function ge(e,t){Array.isArray(e)||(e=[e]),t||(t=await Qe.getCachedLicense());for(let r of e)if(!t?.features.includes(r))return!1;return!0}async function ua(e,t){if(!await ge(e,t))throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e)}async function Yo(e,t){if(!await ge(e,t)){let r=e.join(", ");throw new pt.FeatureDisabledError(`${r} are not currently enabled`,r)}}function Re(e){return async(...t)=>(await ua(fe.Feature.APP_BACKUPS),e(...t))}async function Ho(){return ge(fe.Feature.APP_BACKUPS)}async function zo(){return ge(fe.Feature.BRANDING)}async function Od(){return ge(fe.Feature.ENFORCEABLE_SSO)}async function wx(){return ge(fe.Feature.SYNC_AUTOMATIONS)}async function vx(){return ge(fe.Feature.TRIGGER_AUTOMATION_RUN)}async function Bt(){return ge(fe.Feature.APP_BUILDERS)}async function pa(){return ge(fe.Feature.AUDIT_LOGS)}async function Jo(){return ge(fe.Feature.USER_GROUPS)}async function ct(){return ge(fe.Feature.EXPANDED_PUBLIC_API)}async function Ex(e){if(pt.env.ENABLE_SSO_MAINTENANCE_MODE||!await Od())return!1;let r;return e?.config?r=e.config:r=await pt.configs.getSettingsConfig(),!!r.isSSOEnforced}var Xo=async()=>{let e=fe.Feature.SCIM,t=await ge(e),r=await pt.configs.getSCIMConfig();if(!t||!r?.enabled)throw new pt.FeatureDisabledError(`${e} is not currently enabled`,e);return!0};async function _x(){return ge(fe.Feature.VIEW_PERMISSIONS)}async function Rx(){return ge(fe.Feature.VIEW_READONLY_COLUMNS)}async function An(){return ge(fe.Feature.BUDIBASE_AI)}async function xx(){return ge(fe.Feature.AI_CUSTOM_CONFIGS)}var Tx={faviconUrl:void 0,faviconUrlEtag:void 0,emailBrandingEnabled:!0,testimonialsEnabled:!0,platformTitle:void 0,loginHeading:void 0,loginButton:void 0,metaDescription:void 0,metaImageUrl:void 0,metaTitle:void 0};async function Ox(e){return await zo()?{faviconUrl:e.faviconUrl,faviconUrlEtag:e.faviconUrlEtag,emailBrandingEnabled:e.emailBrandingEnabled,testimonialsEnabled:e.testimonialsEnabled,platformTitle:e.platformTitle,loginHeading:e.loginHeading,loginButton:e.loginButton,metaDescription:e.metaDescription,metaImageUrl:e.metaImageUrl,metaTitle:e.metaTitle}:Tx}var la={};R(la,{enrichAIConfig:()=>Zo});var Px="budibase_ai";async function Zo(e){return await An()&&(e.config[Px]={provider:"OpenAI",active:!0,isDefault:Object.keys(e.config).every(t=>!e.config[t].isDefault),defaultModel:process.env.BUDIBASE_AI_DEFAULT_MODEL||"gpt-4o-mini",apiKey:process.env.OPENAI_API_KEY,name:"Budibase AI"}),e}var Ve={};R(Ve,{addApp:()=>Dx,addAutomation:()=>Fx,addCustomAIConfig:()=>Qx,addGroup:()=>ts,addPlugin:()=>ns,addRow:()=>Nx,addRows:()=>Gx,addUsers:()=>fa,bustCache:()=>ru,decrement:()=>je,decrementMany:()=>Mt,getCurrentUsageValues:()=>su,getLicensedQuota:()=>qd,getQuotaUsage:()=>Ot,increment:()=>Te,incrementBudibaseAICredits:()=>ss,incrementMany:()=>Nt,removeApp:()=>Bx,removeCustomAIConfig:()=>$x,removeCustomAIConfigs:()=>jx,removeGroup:()=>rs,removePlugin:()=>as,removeRow:()=>Mx,removeRows:()=>kx,removeUsers:()=>yr,set:()=>es,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,updatePluginCount:()=>os,updateUsage:()=>fr,usageLimitIsExceeded:()=>Lx,utils:()=>Pr});var ce=require("@budibase/types");var Be=require("@budibase/backend-core");var Te=(e,t,r)=>Pd({change:1,name:e,type:t,opts:r}),Nt=e=>Pd(e),Pd=async e=>{let t=Array.isArray(e)?e:[e];await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!0,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}})));let r=[];for(let n of t){let a=n.opts?.fn;a&&r.push(await a())}return await fr(t.map(n=>({usageChange:n.change,name:n.name,type:n.type,opts:{dryRun:!1,valueFn:n.opts?.valueFn,suppressErrorLog:n.opts?.suppressErrorLog,id:n.opts?.id}}))),r[0]},je=(e,t,r={})=>fr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return fr(t.map(r=>({usageChange:-r.change,name:r.name,type:r.type,opts:r.opts})))},es=async(e,t,r)=>Xe.setUsage(r,e,t),qx=(e,t,r)=>{if(e==ce.QuotaUsageType.STATIC){let n=r.usageQuota.triggers;return n?n[t]||{}:{}}else{let n=Xe.utils.getCurrentMonthString(),a=r.monthly[n].triggers;return a?a[t]||{}:{}}},Cx=async(e,t,r,n)=>{try{await Be.locks.doWithLock({type:ce.LockType.TRY_ONCE,name:ce.LockName.TRIGGER_QUOTA,resource:e,ttl:1e4},async()=>{let a={percentage:r,name:t.name};n&&(a.resetDate=n),await At.triggerQuota(a)})}catch(a){Be.logging.logAlert("Error triggering quota",a)}},Ux=async(e,t,r,n)=>{let a=await Ot(),o=e===ce.QuotaUsageType.MONTHLY?a.quotaReset:void 0,i=await qx(e,t,a),s=n.triggers,c=r/n.value*100;c>100&&(c=100);for(let[f,d]of s.entries())if(c>=d&&n.value!==ut.UNLIMITED){if(!i[d]){i[d]=new Date().toISOString();let y=s[f+1]||100;(!(c>=y)||c===d)&&await Cx(t,n,c,o)}}else i[d]=void 0;return i},fr=async e=>{let t=Array.isArray(e)?e:[e],r=null,n,a=[],o={},i={},s={},c={};for(let d of t){try{r=Be.context.getAppId()}catch{}if(ce.APP_QUOTA_NAMES.includes(d.name)&&!r)throw new Error("App context required for quota update");try{n=await qd(ce.QuotaType.USAGE,d.name,d.type),a.push(n);let{total:y,app:v,breakdown:C}=await Xe.getCurrentUsageValues(d.type,d.name,d.opts?.id);y+=d.usageChange,v!=null&&(v+=d.usageChange),C!=null&&(C+=d.usageChange);let D={};if(d.opts?.dryRun||(D=await Ux(d.type,d.name,y,n),c={...c,[d.name]:D}),n.value!==ut.UNLIMITED&&y>n.value&&d.usageChange>0)throw new Be.UsageLimitError(`Licensed ${n.name} of ${n.value} has been exceeded`,n.name);if(y=Math.max(0,y),v&&(v=Math.max(0,v)),C&&(C=Math.max(0,C),s={...s,[d.name]:C}),!d.opts?.dryRun){let L=d.opts?.valueFn;L&&(y=await L(),v=y),o={...o,[d.name]:y},i={...i,[d.name]:v}}}catch(y){throw d.opts?.suppressErrorLog||console.error(`Error updating usage quotas for ${d.name}`,y),y}}let f=t.filter(d=>!d.opts?.dryRun).map(d=>({name:d.name,type:d.type,values:{total:o[d.name],app:i[d.name],breakdown:s[d.name],triggers:c[d.name]},opts:d.opts}));f.length>0&&await Xe.setAllUsage(f)},qd=async(e,t,r)=>{let n=await Qe.getCachedLicense();if(!n){let a=Be.tenancy.getTenantId();throw new Error("License not found for tenant id "+a)}if(r&&(0,ce.isStaticQuota)(e,r,t))return n.quotas[e][r][t];if(r&&(0,ce.isMonthlyQuota)(e,r,t))return n.quotas[e][r][t];if((0,ce.isConstantQuota)(e,t))return n.quotas[e][t];throw new Error("Invalid quota type")},Lx=async(e,t)=>{try{return await fr({usageChange:1,name:e,type:t,opts:{dryRun:!0}}),!1}catch(r){if(r.code===Be.ErrorCode.USAGE_LIMIT_EXCEEDED)return!0;throw r}};var gr=require("@budibase/types"),Cd=require("@budibase/backend-core"),Ud=async()=>{let e=await Cd.db.getAllApps({dev:!0});return e?e.length:0},Dx=async(e,{appId:t}={})=>Te(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{fn:e,valueFn:Ud,id:t}),Bx=async({appId:e}={})=>je(gr.StaticQuotaName.APPS,gr.QuotaUsageType.STATIC,{valueFn:Ud,id:e});var rt=require("@budibase/types"),Nx=async(e,{tableId:t}={})=>Te(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{fn:e,id:t}),Mx=async({tableId:e}={})=>je(rt.StaticQuotaName.ROWS,rt.QuotaUsageType.STATIC,{id:e}),Gx=async(e,t,{tableId:r}={})=>Nt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{fn:t,id:r}}),kx=async(e,{tableId:t}={})=>Mt({change:e,name:rt.StaticQuotaName.ROWS,type:rt.QuotaUsageType.STATIC,opts:{id:t}});var da=require("@budibase/types"),Fx=async(e,{automationId:t}={})=>Te(da.MonthlyQuotaName.AUTOMATIONS,da.QuotaUsageType.MONTHLY,{fn:e,id:t});var mr=require("@budibase/types"),ts=async e=>Te(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC,{fn:e}),rs=async()=>je(mr.StaticQuotaName.USER_GROUPS,mr.QuotaUsageType.STATIC);var St=require("@budibase/types"),ns=async e=>Te(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,{fn:e}),as=async()=>je(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC),os=async e=>es(St.StaticQuotaName.PLUGINS,St.QuotaUsageType.STATIC,e);var nt=require("@budibase/types"),In=require("@budibase/backend-core");var fa=async(e,t,r)=>{let n=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{fn:r,valueFn:In.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}});let a=await Nt(n);return await Jt(),a},yr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:In.users.getCreatorCount}}),await Mt(r),await Jt()};var We=require("@budibase/types"),ss=async e=>Nt({change:e,name:We.MonthlyQuotaName.BUDIBASE_AI_CREDITS,type:We.QuotaUsageType.MONTHLY}),Qx=async()=>Te(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),$x=async()=>je(We.StaticQuotaName.AI_CUSTOM_CONFIGS,We.QuotaUsageType.STATIC),jx=async e=>Mt({change:e,name:We.StaticQuotaName.AI_CUSTOM_CONFIGS,type:We.QuotaUsageType.STATIC});var lt={};R(lt,{addAppBuilder:()=>Hx,db:()=>at,removeAppBuilder:()=>zx});var Sn=require("@budibase/backend-core");var J={};R(J,{addAppBuilder:()=>ls,addUsers:()=>us,adjustGroupCreatorsQuotas:()=>Yx,cleanupApp:()=>Kx,enrichUserRolesFromGroups:()=>Vx,fetch:()=>bn,get:()=>kt,getBulk:()=>kd,getGroupBuilderAppIds:()=>Gd,getGroupRoleId:()=>Wx,remove:()=>is,removeAppBuilder:()=>ds,removeUsers:()=>ps,save:()=>hr,updateGroupApps:()=>cs});var q=require("@budibase/backend-core");var Ld=require("@budibase/backend-core"),ga=class extends Ld.HTTPError{constructor(t){super(`Group name "${t}" is unavailable`,409)}};async function Nd(e,t){try{let r=[];for(let s of e)if(s.roles){let c=s.roles[q.db.getProdAppID(t)];c&&r.push(c)}let n=await Promise.all(r.map(async s=>({[s]:await q.roles.roleToNumber(s)}))),a,o,i={};n.forEach(s=>{let[c,f]=Object.entries(s)[0];i[c]={roleId:c,roleNum:f}});for(let{roleId:s,roleNum:c}of Object.values(i))(o===void 0||c>o)&&(o=c,a=s);return a}catch(r){throw q.logging.logAlert(`Error finding higest role for ${e.length} on app ${t}`,r),r}}async function Md(e,t){return t?t=t.filter(r=>e.includes(r._id)):t=await V.getBulk(e,{enriched:!1}),t}async function Gd(e,t){if(!e.userGroups)return[];let r=await Md(e.userGroups,t?.groups),n=t?.appId?q.db.getProdAppID(t?.appId):null,a=[];for(let o of r){let i=o.builder?.apps;n&&i?.includes(n)?a.push(n):n||(a=a.concat(i||[]))}return[...new Set(a)]}async function Wx(e,t,r){if(!e.userGroups)return null;let n=await Md(e.userGroups,r?.groups),a=q.db.getProdAppID(t);return e.roles?.[a]?e.roles[a]:(n=n.filter(o=>o?.roles?Object.keys(o.roles).includes(a):!1),await Nd(n,t))}async function Vx(e){if(!e||!e.userGroups)return e;let t=await kd(e.userGroups,{enriched:!1}),r=[];for(let a of t)a?.roles&&(r=r.concat(Object.keys(a.roles)));r=[...new Set(r)];for(let a of r)await q.context.doInAppContext(a,async()=>{if(e.roles[a])return;let o=await Nd(t,a);o&&(e.roles[a]=o)});let n=await Gd(e,{groups:t});if(n.length&&!e.builder?.global){let a=e.builder?.apps||[];e.builder={apps:a.concat(n)}}return e}async function bn(){return await V.fetch()}async function kt(e){return await V.get(e)}async function kd(e,t={enriched:!0}){return await V.getBulk(e,t)}async function Dd(e){if(await V.getByName(e))throw new ga(e)}async function Bd(e){let t=await V.getGroupUsers(e._id);if(!t.length)return 0;let r=q.tenancy.getGlobalDB(),n=await Promise.all(t.map(o=>r.get(o._id)));return(await Promise.all(n.map(q.userUtils.isCreator))).filter(o=>!!o).length}async function hr(e){let t=[],r=!e._id,n=0;if(delete e.users,!e._id)e._id=V.generateUserGroupID(),await Dd(e.name),t.push(q.events.group.created(e));else{let o=await V.get(e._id);if(o.name!==e.name&&await Dd(e.name),t.push(q.events.group.updated(e)),JSON.stringify(o.roles)!==JSON.stringify(e.roles)){let i=o.users?.length||0,s=0;i>0&&(s=await Bd(o)),Object.values(e.roles).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)?n=i-s:n=-i,t.push(q.events.group.permissionsEdited(e))}}await Promise.all(t);let a=()=>V.save(e);if(r)return await ts(a);{let o=await a();if(n>0)await fa(0,n);else if(n<0){let i=await Bd(e),s=Math.abs(n)-i;s>0&&await yr(0,s)}return o}}async function is(e,t){let r;try{r=await V.get(e)}catch{throw new Error("Group not found")}let n=Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN),a=()=>{};if(n){let i=q.tenancy.getGlobalDB(),s=await V.getGroupUsers(e),f=(await Promise.all(s.map(v=>i.get(v._id)))).map(v=>({...v,userGroups:v.userGroups.filter(C=>C!==e)})),m=(await Promise.all(f.map(q.userUtils.isCreator))).filter(v=>!!v).length,y=s.length-m;y&&(a=()=>yr(0,y))}let o=await V.destroy(e,t);return await q.events.group.deleted(r),await rs(),await a(),o}async function us(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let c of n)c.userGroups||(c.userGroups=[]),c.userGroups.includes(e)||a.push(c);if(!a.length)return a;let o=a.map(c=>({...c,userGroups:[...c?.userGroups||[],e]}));if(await q.users.bulkUpdateGlobalUsers(o),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let f=(await Promise.all(a.map(q.userUtils.isCreator))).filter(m=>!!m).length,d=a.length-f;d&&await fa(0,d)}let s=[];for(let c of t)s.push(q.cache.user.invalidateUser(c));return await Promise.all(s),await q.events.group.usersAdded(o.length,r),o}async function ps(e,t){let r=await V.get(e),n=await q.users.bulkGetGlobalUsersById(t),a=[];for(let s of n){if(!s.userGroups||!s.userGroups.includes(e))continue;let c=s.userGroups.indexOf(e);s.userGroups.splice(c,1),a.push(s)}if(await q.users.bulkUpdateGlobalUsers(a),Object.values(r.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN)){let c=(await Promise.all(a.map(q.userUtils.isCreator))).filter(d=>!!d).length,f=a.length-c;f&&await yr(0,f)}let i=[];for(let s of t)i.push(q.cache.user.invalidateUser(s));return await Promise.all(i),a.length&&await q.events.group.usersDeleted(a.length,r),a}async function cs(e,t){let r=await kt(e);if(r.roles||(r.roles={}),t.appsToAdd)for(let n of t.appsToAdd)r.roles[n.appId]=n.roleId;if(t.appsToRemove)for(let n of t.appsToRemove)delete r.roles[n.appId];return await hr(r)}async function Kx(e){let t=await bn(),r=[];for(let n of t)!n.roles||!n.roles[e]||(delete n.roles[e],r.push(n));return await V.bulkSave(r)}async function ls(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder??={apps:[]},n.builder.apps.includes(t)||(n.builder.apps.push(r),await hr(n))}async function ds(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");let r=q.db.getProdAppID(t),n=await kt(e);n.builder?.apps.includes(t)&&(n.builder.apps=n.builder.apps.filter(a=>a!==r),await hr(n))}async function Yx(){if(!await Jo()){let e=q.tenancy.getGlobalDB(),r=(await bn()||[]).filter(n=>Object.values(n?.roles||{}).includes(q.roles.BUILTIN_ROLE_IDS.ADMIN));for(let n of r){let a=await V.getGroupUsers(n._id),i=(await Promise.all(a.map(d=>e.get(d._id)))).map(d=>({...d,userGroups:d.userGroups.filter(m=>m!==n._id)})),c=(await Promise.all(i.map(q.userUtils.isCreator))).filter(d=>!!d).length,f=a.length-c;await V.save({...n,roles:{}}),f&&await yr(0,f)}}}Sn.users.UserDB.init(Ve,J,xe);var at=Sn.users.UserDB;async function Hx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.addAppBuilder(e,t)}async function zx(e,t){if(!await Bt())throw new Error("Feature not enabled, please check license");await Sn.users.removeAppBuilder(e,t)}var ya={};R(ya,{logs:()=>bs});var bs={};R(bs,{logSearch:()=>oT,oldestLogDate:()=>Kd,storeLog:()=>sT});var Vd=require("@budibase/types"),ma=require("@budibase/backend-core");var wt=require("@budibase/types");var pe=require("@budibase/backend-core");var Fd=require("@budibase/backend-core");async function Qd(e,t){let r,n=5,a=!1,o,i=!0;for(;n>0;n--)try{i?o=await e():o=await exports.randomDelay(e),a=!0;break}catch(s){r=s}return a||Fd.logging.logWarn(`Failed to backoff: ${t}`,r),o}var{SEPARATOR:dt,UNICODE_MAX:Jx,DocumentType:$d,AutomationViewMode:fs,ViewName:Xx,getQueryIndex:Zx}=pe.db,eT=new Date(0).toISOString(),tT=100,gs=async()=>Fn(wt.ConstantQuotaName.AUTOMATION_LOG_RETENTION_DAYS);function jd(e,t,{status:r,automationId:n}={},a={}){let o=n?`${n}${dt}`:"",i=r?`${r}${dt}`:"",s;return r&&n?s=`${fs.ALL}${dt}${i}${o}`:r?s=`${fs.STATUS}${dt}${i}`:n?s=`${fs.AUTOMATION}${dt}${o}`:s=`${$d.AUTOMATION_LOG}${dt}`,{...a,descending:!0,startkey:`${s}${t}${Jx}`,endkey:`${s}${e}`}}function ms(e){let t=wt.AutomationStatus.SUCCESS,r=!0;for(let n of e.steps){let a=n.outputs?.status?.toLowerCase(),o=a==="stopped_error";if(r&&!o){r=!1;continue}if(o){t=wt.AutomationStatus.STOPPED_ERROR;break}else if(n.outputs?.success){if(a==="stopped"){t=wt.AutomationStatus.STOPPED;break}}else{t=wt.AutomationStatus.ERROR;break}}return t}function rT(e,t,r){return`${$d.AUTOMATION_LOG}${dt}${e}${dt}${r}${dt}${t}`}async function ys(e,t,r={docs:!0}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a={status:r.status},o=r?.limit?r.limit:r?.paginate?9+1:void 0,i=jd(e,t,a,{include_docs:r.docs,limit:o});r?.page&&(i.startkey=r.page);let s=await n.allDocs(i);return Cr(s,{paginate:r?.paginate,pageSize:9})}async function hs(e,t,r={}){let n=pe.context.getProdAppDB();await n.exists()||(n=pe.context.getDevAppDB());let a;try{let o={automationId:r?.automationId,status:r?.status},i=jd(e,t,o,{include_docs:!0,limit:9+1});r?.page&&(i.startkey=r.page),a=await n.query(Zx(Xx.AUTOMATION_LOGS),i)}catch(o){if(o!=null&&(o.name==="not_found"||o.error==="not_found"))return await hu(),hs(e,t,r);throw o}return Cr(a,{paginate:!0,pageSize:9})}async function Wd(e,t){let r=pe.context.getProdAppDB(),n=e._id,a=e.name,o=ms(t),i=new Date().toISOString(),s=rT(i,o,n),c={...t,automationId:n,status:o,automationName:a,createdAt:i,_id:s};return await r.put(c),s}async function As(e,{clearing:t}={clearing:!1}){let r=pe.context.getProdAppDB();await Qd(async()=>{let n=await r.get(pe.db.DocumentType.APP_METADATA);for(let a of e){let o=a.split(pe.db.SEPARATOR),i=`${o[o.length-3]}${pe.db.SEPARATOR}${o[o.length-2]}`,s={};n.automationErrors&&(s=n.automationErrors),Array.isArray(s[i])||(s[i]=[]);let c=s[i].indexOf(a);t&&c!==-1?s[i].splice(c,1):s[i].push(a),s[i].length===0&&delete s[i],n.automationErrors=s}await r.put(n),await pe.cache.app.invalidateAppMetadata(n.appId,n)},"Failed to update app metadata with automation log error")}async function nT(){let e=await gs();try{return await ys(eT,e,{docs:!1,paginate:!1,limit:tT})}catch{return{data:[],hasNextPage:!1}}}async function Is(){let e=pe.context.getProdAppDB();try{let t=await nT();if(!t.data||t.data.length===0)return;let r=t.data.map(a=>({_id:a.id,_rev:a.value.rev,_deleted:!0})),n=t.data.filter(a=>{let o=a.id.split(pe.db.SEPARATOR);return o[o.length-1]===wt.AutomationStatus.ERROR}).map(a=>a.id);await e.bulkDocs(r),n.length&&await As(n,{clearing:!0})}catch(t){pe.logging.logAlert(`Failed to cleanup automation log history - Database "${e.name}"`,t)}}var Kd=gs;async function aT(e,t,r,n){let a,o=new Date().toISOString(),i=await Kd();return(!e||e<i)&&(e=i),r||t?a=await hs(e,o,{automationId:r,status:t,page:n}):a=await ys(e,o,{status:t,page:n,docs:!0,paginate:!0}),a}async function oT(e){return await Is(),await aT(e.startDate,e.status,e.automationId,e.page)}async function sT(e,t){if(!ma.db.isProdAppID(ma.context.getAppId()))return;let r=ms(t),n=await Wd(e,t);r===Vd.AutomationStatus.ERROR&&await As([n]),await Is()}var ha={};R(ha,{checkPluginQuotas:()=>pT,deletePlugin:()=>uT,storePlugin:()=>iT});var Jd=require("@budibase/types"),oe=require("@budibase/backend-core");var Yd=N(require("fs")),Hd=require("path");function zd(e,t){return Yd.default.readFileSync((0,Hd.join)(e,t),"utf8")}async function iT(metadata,directory,source){let db=oe.tenancy.getGlobalDB(),version=metadata.package.version,name=metadata.package.name,description=metadata.package.description,hash=metadata.schema.hash,bucketPath=oe.objectStore.getPluginS3Dir(name),files=await oe.objectStore.uploadDirectory(oe.objectStore.ObjectStoreBuckets.PLUGINS,directory,bucketPath),jsFile=files.find(e=>e.name.endsWith(".js")),iconFile=files.find(e=>e.name.endsWith(".svg"));if(!jsFile)throw new Error("Plugin missing .js file.");if(metadata.schema.type===Jd.PluginType.DATASOURCE){let js=zd(directory,jsFile.name);try{eval(js)}catch(e){let t=e?.message?e.message:JSON.stringify(e);throw new Error(`JS invalid: ${t}`)}}let iconFileName=iconFile?iconFile.name:null,pluginId=oe.db.generatePluginID(name),rev;try{rev=(await db.get(pluginId))._rev}catch(e){rev=void 0}let doc={_id:pluginId,_rev:rev,...metadata,name,version,hash,description,source};iconFileName&&(doc.iconFileName=iconFileName),source&&(doc={...doc,source});let write=async()=>{let e=await db.put(doc);return await oe.events.plugin.imported(doc),{...doc,_rev:e.rev}};return rev?await write():await ns(write)}async function uT(e){let t=oe.tenancy.getGlobalDB();try{let r=await t.get(e),n=oe.objectStore.getPluginS3Dir(r.name);await oe.objectStore.deleteFolder(oe.objectStore.ObjectStoreBuckets.PLUGINS,n),await t.remove(e,r._rev),await oe.events.plugin.deleted(r),await as()}catch(r){let n=r?.message?r?.message:r;throw new Error(`Failed to delete plugin: ${n}`)}}async function pT(){let e=oe.tenancy.getGlobalDB();try{let r=(await e.allDocs(oe.db.getPluginParams())).rows.length;console.log(`Syncing plugin count: ${r}`),await os(r)}catch(t){oe.logging.logAlert("Unable to retrieve plugins for quota check",t)}}var ot={};R(ot,{fetch:()=>lT,fetchValues:()=>dT,isEncryptionKeyAvailable:()=>cT,isValid:()=>ef,remove:()=>gT,update:()=>fT});var wn=require("@budibase/types"),Xd=require("@budibase/backend-core");function cT(){return!!Xd.env.ENCRYPTION_KEY}async function lT(){let e=await Ct.get();return Object.keys(e.variables)}async function dT(e){let r=(await Ct.get()).variables,n={};for(let[a,o]of Object.entries(r))switch(e){case wn.AppEnvironment.DEVELOPMENT:n[a]=o.development;break;case wn.AppEnvironment.PRODUCTION:default:n[a]=o.production;break}return n}async function Zd(e){if(!(await tt.cache.getCachedLicense()).features.includes(wn.Feature.ENVIRONMENT_VARIABLES))throw new Error("User does not have access to environment variables feature.");let r=await Ct.get();r.variables=e(r.variables),await Ct.update(r)}async function fT(e,t){if(ef(e))await Zd(n=>(n[e]=t,n));else throw new Error("Variable name has characters that are not allowed")}async function gT(e){await Zd(t=>(delete t[e],t))}function ef(e){return/^[a-zA-Z0-9-_]+$/.test(e)}var vt={};R(vt,{definitions:()=>_T,download:()=>ET,fetch:()=>vT,write:()=>ST});var Ia=require("@budibase/types");var re=require("@budibase/backend-core"),Ke=require("@budibase/types");var tf=require("memorystream"),rf=new re.sql.Sql(Ke.SqlClient.SQL_LITE);async function mT(e,t,r){let n={operation:Ke.Operation.READ,table:zt.searchTable(),tables:{},paginate:{limit:r||9,page:t},filters:e,resource:{fields:[]},sort:{timestamp:{direction:Ke.SortOrder.DESCENDING,type:Ke.SortType.STRING}}},a=rf._query(n);if(Array.isArray(a))throw new Error("Cannot execute multiple queries for audit log search");return{sql:a.sql,bindings:a.bindings}}function yT(e){return`${re.DocumentType.AUDIT_LOG}${re.SEPARATOR}${e}${re.SEPARATOR}${re.utils.newid()}`}async function nf(e){e._id||(e._id=yT(e.timestamp)),e.type||(e.type=Ke.AUDIT_LOG_TYPE);try{let r=await re.context.getAuditLogsDB().put(e);return{...e,_rev:r.rev}}catch(t){re.logging.logAlert("Failed to write audit log",t)}}async function Ss(e,t,r){t||(t=1);let n=re.context.getAuditLogsDB();try{let a=9+1,o=await mT(e,t,a),i=zt.searchTable(),s=rf.convertJsonStringColumns(i,await n.sql(o.sql,o.bindings)),c;s.length>a&&(c=s.pop());let f={rows:s,hasNextPage:!!c};return f.hasNextPage&&(f.bookmark=t+1),f}catch(a){if(a.status===404&&!r?.isRetry)return await hT(),await iu(),await Ss(e,t,{isRetry:!0});throw a}}async function hT(){let e=re.context.getAuditLogsDB(),r=(await e.allDocs(re.db.getDocParams(re.DocumentType.AUDIT_LOG,null,{include_docs:!0}))).rows.map(n=>n.doc).filter(n=>n&&!n.type).map(n=>({...n,type:Ke.AUDIT_LOG_TYPE}));await e.bulkDocs(r)}function af(e){let t=re.context.getAuditLogsDB(),r=new tf,n=t.dump(r,{filter:o=>{let i=o;if(!i._id?.startsWith(re.DocumentType.AUDIT_LOG))return!1;let s=!0,c=(f,d)=>{!f||f.length===0||(s=!!(s&&d&&f.includes(d)))};if(c(e.userIds,i.userId),c(e.appIds,i.appId),c(e.events,i.event),(e.startDate||e.endDate)&&(s=s&&i.timestamp>=e.startDate&&i.timestamp<=e.endDate),e.fullSearch){let f=JSON.stringify(o);s=s&&f.includes(e.fullSearch)}return s}}),a=new tf;return r.on("data",o=>{let i=JSON.parse(Buffer.from(o).toString());if(Array.isArray(i.docs)){let s="";for(let c of i.docs)s+=JSON.stringify(c)+`
|
|
38
|
+
`;a.write(s)}}),r.on("end",()=>{a.end()}),{promise:n,stream:a}}var Se=require("@budibase/backend-core");var Aa=require("@budibase/types"),vn=require("@budibase/string-templates"),En=require("@budibase/backend-core"),IT=En.constants.MIN_VALID_DATE.toISOString(),bT=En.constants.MAX_VALID_DATE.toISOString();function ws(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||IT,e.endDate=e.endDate||bT),e}async function of(e){Array.isArray(e.appIds)&&(e.appIds=e.appIds.map(n=>En.db.getProdAppID(n)));let t={};function r(n,a){a?.length&&(t.oneOf={...t.oneOf,[n]:a})}return r("userId",e.userIds),r("appId",e.appIds),r("event",e.events),e.fullSearch&&(t.fuzzyOr=!0,t.fuzzy={name:e.fullSearch,fallback:e.fullSearch}),(e.startDate||e.endDate)&&(e=ws(e),t.range={timestamp:{high:e.endDate,low:e.startDate}}),Object.keys(t).length===0&&(t.notEmpty={event:!0}),t}function vs(e,t,r){let n={_id:e,status:Aa.AuditLogResourceStatus.DELETED};switch(t){case"app":n.name=r?.appName;break;case"user":n.email=r?.email;break}return n}function Es(e){let t=(0,vn.findHBSBlocks)(e);for(let r of t){let n=` "${r}"`;e=e.replace(e.includes(n)?n:` ${r}`,""),e=(0,vn.processStringSync)(e,{})}return e}function sf(e,t){let r=Aa.AuditedEventFriendlyName[e];if(!r)throw new Error("No friendly name found.");let n=(0,vn.processStringSync)(r,t);return n.includes('""')&&(n=Es(r)),n}async function ST(e,t,r){if(!await pa()||!Se.utils.isAudited(e))return;let n=sf(e,t),a=new Date;r?.timestamp&&(a=new Date(r.timestamp));let o={timestamp:a.toISOString(),event:e,name:n,userId:r?.userId||Ia.AuditLogSystemUser,metadata:{...t,...r?.hostInfo}},i={};try{if(r?.appId){o.appId=Se.db.getProdAppID(r.appId);let s=await Se.cache.app.getAppMetadata(r.appId);"name"in s&&(i.appName=s.name)}if(r?.userId){let s=await Se.users.getById(r?.userId);i.email=s.email}}catch(s){Se.logging.logAlert("Failed to retrieve fallback information for audit log",s)}return o.fallback=i,await nf(o)}async function wT(e){let t=e.map(s=>s.userId),n=e.filter(s=>s.appId).map(s=>Se.db.getDevAppID(s.appId)),a=await Se.users.bulkGetGlobalUsersById([...new Set(t)],{cleanup:!0}),o=await Se.db.getAppsByIDs([...new Set(n)]),i=[];for(let s of e){let c=a.find(m=>m?._id===s.userId),f=o.find(m=>Se.db.isSameAppID(m?.appId,s.appId)),d={event:s.event,timestamp:s.timestamp,name:s.name,metadata:s.metadata,user:c||vs(s.userId,"user",s.fallback)};s.appId&&(d.app=f||vs(s.appId,"app",s.fallback)),i.push(d)}return i}async function vT(e){if(!await pa())throw new Error("Audit logs not available - license required.");let t=await of(e);if(typeof e.bookmark=="string")throw new Error("String based bookmark not supported.");let r=await Ss(t,e.bookmark);return{hasNextPage:r.hasNextPage,bookmark:r.bookmark,data:await wT(r.rows)}}function ET(e){return e=ws(e),af(e)}function _T(){let e=Object.entries(Ia.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Es(r[1]);return t}var ba={};R(ba,{applications:()=>Ts,roles:()=>Rs,users:()=>_s});var _s={};R(_s,{roleCheck:()=>xT});function RT(e,t){let r=e.request.body;return r.builder&&(r.builder=t?.builder||void 0),r.admin&&(r.admin=t?.admin||void 0),r.roles&&(r.roles=t?.roles||{}),e.request.body=r,e}async function xT(e,t){return await ct()||RT(e,t),e}var Rs={};R(Rs,{assign:()=>TT,unAssign:()=>OT});var _n=require("@budibase/backend-core");async function TT(e,t){if(!await ct())throw new Error("Unable to assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role&&t.role.roleId){let a=_n.db.getProdAppID(t.role.appId);n.roles[a]=t.role.roleId}if(t.appBuilder){let a=_n.db.getProdAppID(t.appBuilder.appId),o=n.builder?.apps||[];n.builder={apps:o.concat([a])}}t.builder&&(n.builder={global:!0}),t.admin&&(n.admin={global:!0}),n.roles}await at.bulkUpdate(r)}async function OT(e,t){if(!await ct())throw new Error("Unable to un-assign roles - license required.");let r=await at.bulkGet(e);for(let n of r){if(t.role){let a=_n.db.getProdAppID(t.role?.appId);n.roles[a]===t.role.roleId&&delete n.roles[a]}if(t.appBuilder&&n.builder?.apps){let a=_n.db.getProdAppID(t.appBuilder.appId);n.builder.apps=n.builder.apps.filter(o=>o!==a)}t.builder&&n.builder&&delete n.builder,t.admin&&n.admin&&delete n.admin}}var Ts={};R(Ts,{buildExportFn:()=>qT,buildImportFn:()=>PT});var xs=require("@budibase/backend-core");function PT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required."),t.request.files?.appExport||t.throw(400,"Must provide app export file for import."),await xs.context.doInAppContext(t.params.appId,async()=>{await e(t),t.body=void 0,t.status=204,await r()})}}function qT(e){return async(t,r)=>{await ct()||t.throw(403,"Endpoint unavailable, license required.");let{encryptPassword:n,excludeRows:a}=t.request.body;await xs.context.doInAppContext(t.params.appId,async()=>{t.request.body={encryptPassword:n,excludeRows:a},t.query.appId=t.params.appId,await e(t),await r()})}}var st=require("@budibase/backend-core"),Ie=require("@budibase/types");var Os=require("@budibase/backend-core"),uf;function pf(){uf=Os.queue.createQueue(Os.queue.JobQueue.APP_BACKUP,{maxStalledCount:3,jobOptions:{attempts:3,removeOnFail:!0,removeOnComplete:!0}})}function Ft(){return uf}var cf=require("path"),lf=N(require("fs"));async function Ps(e,t={}){return Le.storeAppBackupMetadata(e,t)}function df(e){let t=new Date().toISOString();switch(e){case Ie.AppBackupStatus.COMPLETE:case Ie.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case Ie.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case Ie.AppBackupStatus.PENDING:return{timestamp:t,createdAt:t}}}async function CT(e,t,r,n){let a=await Sa(e);return await Le.storeAppBackupMetadata({...a,...df(t),contents:r,status:t,type:Ie.AppBackupType.BACKUP},{filename:n,docId:e})}async function UT(e,t,r){let n=await Sa(e);return await Le.storeAppBackupMetadata({...n,...df(r),status:r,type:Ie.AppBackupType.RESTORE,trigger:Ie.AppBackupTrigger.MANUAL},{docId:e,docRev:t})}async function Sa(e){return Le.getAppBackupMetadata(e)}async function LT(e,t){return Le.updateAppBackupMetadata(e,t)}async function DT(e){let t=await Le.getAppBackupMetadata(e);return t.filename&&await st.objectStore.deleteFile(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename),Le.deleteAppBackupMetadata(e)}async function BT(e,t){return Le.fetchAppBackups(e,t)}async function ff(e){let t=await Le.getAppBackupMetadata(e);if(!t.filename)throw new Error("Backup incomplete - cannot download.");let r=await st.objectStore.getReadStream(st.objectStore.ObjectStoreBuckets.BACKUPS,t.filename);return{metadata:t,stream:r}}async function NT(e){let{stream:t}=await ff(e),r=(0,cf.join)(st.objectStore.budibaseTempDir(),st.utils.newid()),n=lf.default.createWriteStream(r);return new Promise((a,o)=>{t.on("error",o),n.on("error",o),t.pipe(n).on("close",()=>a(r))})}async function MT(e,t,r={}){let n;try{n=await Ps({appId:e,trigger:t,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.BACKUP,...r})}catch(a){if(a.status===409)return;throw a}return await Ft().add({docId:n.id,docRev:n.rev,appId:e,export:{trigger:t,...r}}),await st.events.backup.appBackupTriggered(e,n.id,Ie.AppBackupType.BACKUP,t,r?.name),n.id}async function GT(e,t,r,n){let a=await Sa(t),o;try{o=await Ps({appId:e,timestamp:new Date().toISOString(),status:Ie.AppBackupStatus.PENDING,type:Ie.AppBackupType.RESTORE,createdBy:n})}catch(i){if(i?.status===409)return;throw i}return await Ft().add({appId:e,docId:o.id,docRev:o.rev,import:{nameForBackup:r,backupId:t,createdBy:n}}),{restoreId:o.id,metadata:a}}var kT={isEnabled:Ho,triggerAppRestore:Re(GT),triggerAppBackup:Re(MT),getBackupDownloadStream:Re(ff),downloadAppBackup:Re(NT),fetchAppBackups:Re(BT),storeAppBackupMetadata:Re(Ps),updateBackupStatus:Re(CT),updateRestoreStatus:Re(UT),getAppBackup:Re(Sa),updateAppBackup:Re(LT),deleteAppBackup:Re(DT)},ft=kT;var Cs={};R(Cs,{init:()=>qs});var se=require("@budibase/backend-core");var Ye=require("@budibase/types");var Ar=N(require("fs"));async function qs(e){Ft().process(async t=>{let r=t.data;try{if(r.export)return $T(t,e);if(r.import)return QT(t,e)}catch(n){se.logging.logAlert(`Failed to perform backup for app ID: ${r.appId}`,n)}})}async function FT(e){await se.db.getDB(e,{skip_setup:!0}).destroy()}async function gf(e,t,r,n){let a=se.db.getDevAppID(r),o=se.db.getProdAppID(r),i=new Date().toISOString(),s=async(c,f)=>{n?.doc?await ft.updateBackupStatus(n.doc.id,c,f?.contents,f?.filename):await ft.storeAppBackupMetadata({appId:o,timestamp:i,trigger:e,status:c,name:n?.name,type:Ye.AppBackupType.BACKUP,contents:f?.contents,createdBy:n?.createdBy},{filename:f?.filename})};try{let c=await n.processing.exportAppFn(a,{tar:!0}),f=await n.processing.statsFn(a),d=`${o}/backup-${i}.tar.gz`,m=se.objectStore.ObjectStoreBuckets.BACKUPS,y=Ar.default.createReadStream(c);await se.objectStore.streamUpload({bucket:m,filename:d,stream:y,extra:{type:"application/gzip",metadata:{name:n?.name,trigger:e,timestamp:i,appId:o}}}),await s(Ye.AppBackupStatus.COMPLETE,{filename:d,contents:f}),Ar.default.existsSync(c)&&Ar.default.rmSync(c)}catch(c){se.logging.logAlert("App backup error",c),await s(Ye.AppBackupStatus.FAILED)}}async function QT(e,t){let r=e.data,n=r.appId,a=r.import.backupId,o=r.import.nameForBackup,i=r.import.createdBy,s=se.tenancy.getTenantIDFromAppID(n);return se.tenancy.doInTenant(s,async()=>{let c=se.db.getDevAppID(n),{rev:f}=await ft.updateRestoreStatus(r.docId,r.docRev,Ye.AppBackupStatus.STARTED);await gf(Ye.AppBackupTrigger.RESTORING,s,n,{processing:t,createdBy:i,name:o});let d=await ft.downloadAppBackup(a);await FT(c);let m=Ye.AppBackupStatus.COMPLETE;try{await t.importAppFn(c,se.db.getDB(c),{file:{type:"application/gzip",path:d},key:d})}catch(y){se.logging.logAlert("App restore error",y),m=Ye.AppBackupStatus.FAILED}await ft.updateRestoreStatus(r.docId,f,m),Ar.default.existsSync(d)&&Ar.default.rmSync(d,{force:!0})})}async function $T(e,t){let r=e.data,n=r.appId,a=r.export.trigger,o=r.export.name,i=se.tenancy.getTenantIDFromAppID(n);await se.tenancy.doInTenant(i,async()=>{try{let{rev:s}=await ft.updateBackupStatus(r.docId,Ye.AppBackupStatus.STARTED);return gf(a,i,n,{processing:t,doc:{id:r.docId,rev:s},name:o})}catch(s){se.logging.logAlert("App backup error",s)}})}var jT=async e=>{pf(),await qs(e.processing)},Ne={...ft,processing:Cs,init:jT,getBackupQueue:Ft};var mf=async e=>{e.backups&&await Ne.init(e.backups)};var ve={};R(ve,{create:()=>NN,find:()=>BN,get:()=>DN,remove:()=>GN,update:()=>MN});var Nh=N(xi()),gt=require("@budibase/backend-core");var Mh=require("@budibase/types");async function DN(e){let t=gt.tenancy.getGlobalDB(),r=new gt.db.QueryBuilder(t.name,Mh.SearchIndex.USER);r.setIndexBuilder(gt.db.searchIndexes.createUserIndex),r.setLimit(e.pageSize),r.addEqual("scimInfo.isSync",!0);for(let[a,o]of Object.entries(e.filters?.equal??{}))r.addEqual(a,o);r.setSort("_id"),r.setSkip(e.skip);let n=await r.run();return{users:n.rows,total:n.totalRows}}async function BN(e){return await gt.users.getById(e)}async function NN(e){let t=await at.getUserByEmail(e.email);if(t){if(t.scimInfo?.isSync)throw new gt.HTTPError("User is already synched",409);e={...t,scimInfo:(0,Nh.default)(t.scimInfo,e.scimInfo),password:void 0,firstName:e.firstName,lastName:e.lastName,updatedAt:e.updatedAt}}return await at.save(e,{requirePassword:!1})}async function MN(e,t){return await at.save(e,{requirePassword:!1,allowChangingEmail:t?.allowChangingEmail})}async function GN(e){return await at.destroy(e)}var Er={};R(Er,{create:()=>kN});var Gh=N(xi());var kh=require("@budibase/backend-core");async function kN(e){let t=await to(e.name),r;if(!t)r=(await J.save(e)).id;else{if(t.scimInfo?.isSync)throw new kh.HTTPError("Group is already synched",409);r=t._id,t.users&&(await J.removeUsers(r,t.users.map(a=>a._id)),delete t.users),t.scimInfo=(0,Gh.default)(t.scimInfo,e.scimInfo),await J.save(t)}return await J.get(r)}var $t={};R($t,{logRequest:()=>$N,logResponse:()=>jN});var Qh=N(Fh()),Et=require("@budibase/backend-core"),{DocWritethrough:FN}=Et.cache.docWritethrough;function QN(){return`${Et.db.DocumentType.SCIM_LOG}${Et.db.SEPARATOR}${(0,Qh.default)().format("YYYYMMDD")}`}var $h=async()=>{let e=Et.context.getScimDBName();return new FN(Et.db.getDB(e),QN())};async function $N(e){let t=Date.now().toString();return await(await $h()).patch({[`${t}_request`]:{ts:new Date().toISOString(),...e}}),t}async function jN(e,t){await(await $h()).patch({[`${e}_response`]:{ts:new Date().toISOString(),...t}})}var Li={};R(Li,{doInScimContext:()=>qi,feature:()=>H,internalGroupOnly:()=>Ba,licensing:()=>jh,requireSCIM:()=>Ci,scimGroupOnly:()=>On,scimUserOnly:()=>Tn});var _t=require("@budibase/backend-core");var La=require("@budibase/types"),WN=(e={checkUsersLimit:!0})=>async(t,r)=>{if((e.licensingCheck?e.licensingCheck:()=>!!t.user)(t)){if(_t.env.SELF_HOSTED&&_t.env.DEFAULT_LICENSE)return t.user.license=no,r();t.user.license=await tt.cache.getCachedLicense(t,{populateLicense:e.populateLicense,populateFreeLicense:e.populateFreeLicense}),e.checkUsersLimit&&(_t.utils.isServingApp(t)||_t.utils.isServingBuilder(t)||_t.utils.isServingBuilderPreview(t)||_t.utils.isPublicApiRequest(t))&&await Ve.usageLimitIsExceeded(La.StaticQuotaName.USERS,La.QuotaUsageType.STATIC)}return r()},jh=WN;var H={};R(H,{requireFeature:()=>VN,requireFeatures:()=>KN});var VN=e=>async(t,r)=>{await ua(e),await r()},KN=(...e)=>async(t,r)=>{await Yo(e),await r()};var Da=require("@budibase/backend-core");var qi=async(e,t)=>{let r;return Da.env.DISABLE_SCIM_CALLS||(r=await $t.logRequest({...e.request.toJSON(),body:e.request.body})),await Da.context.doInScimContext(async()=>{let n=await t();return r&&await $t.logResponse(r,{...e.response.toJSON(),body:e.response.body}),n})};var Ci=async(e,t)=>{await Xo(),await t()};var Wh=require("@budibase/backend-core");var Tn=e=>Ui(Wh.users.getById,e,!0),On=e=>Ui(V.get,e,!0),Ba=e=>Ui(V.get,e,!1);function Ui(e,t,r){return async(n,a)=>{let o=n.params[t];return typeof o!="string"&&n.throw(404),!!(await e(o)).scimInfo?.isSync!==r&&n.throw(404),a()}}var Ki={};R(Ki,{ai:()=>oA,appBackups:()=>jA,auditLogs:()=>LA,environmentVariables:()=>RA,groups:()=>hA,scim:()=>bI,users:()=>_I});var Mi={};R(Mi,{LargeLanguageModel:()=>Rr});var Xh=require("@budibase/backend-core"),Rt=require("@budibase/types"),Zh=require("@budibase/shared-core");var Di=N(require("openai"));function _r(e){return`Summarize this text:
|
|
39
39
|
${e}.
|
|
40
|
-
Only return the summary.`}function
|
|
41
|
-
${e}`}function Yh(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function Hh(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function zh(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Di.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Di.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var Bi=N(require("@anthropic-ai/sdk"));var Ma=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Bi.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Bi.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var YN={OpenAI:jt,Anthropic:Ma,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Ni(e,t){return t.map(r=>e[r]).join(" ")}var Rr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await Jh.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={config:{}});let n=await Zo(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=YN[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case Rt.AIOperationEnum.SUMMARISE_TEXT:return _r(Ni(r,t.columns));case Rt.AIOperationEnum.CLEAN_DATA:return Vh(r[t.column]);case Rt.AIOperationEnum.TRANSLATE:return Yh(r[t.column],t.language);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Wh(Ni(r,t.columns),t.categories.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return Hh(r[t.column]);case Rt.AIOperationEnum.PROMPT:return t.prompt;case Rt.AIOperationEnum.SEARCH_WEB:return zh(Ni(r,t.columns));default:throw Xh.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await ss(r.tokensUsed||0),r.message}};async function Zh(e){let{prompt:t}=e.request.body,n=await(await Rr.forCurrentTenant("gpt-4o-mini")).run(Kh(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}var eA=require("@budibase/types"),tA=N(require("@koa/router")),rA=require("@budibase/backend-core"),nA=new tA.default;nA.post("/api/ai/cron",H.requireFeature(eA.Feature.BUDIBASE_AI),rA.auth.builderOrAdmin,Zh);var aA=nA;async function oA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await kt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await hr(t);e.body={_id:r.id,_rev:r.rev}}async function sA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await us(t,r)),n&&(o=await ps(t,n)),e.body={added:a,removed:o}}async function iA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await cs(t,{appsToAdd:r,appsToRemove:n})}async function uA(e){e.body={data:await bn()}}async function pA(e){let{groupId:t,rev:r}=e.params;try{await is(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function cA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function lA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Gn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function dA(e){let{groupId:t,appId:r}=e.params;await ls(t,r),e.body={message:"Group app builder access updated."}}async function fA(e){let{groupId:t,appId:r}=e.params;await ds(t,r),e.body={message:"group app builder access removed."}}var gA=N(require("@koa/router")),Te=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),mA=new gA.default;function JN(){return it.auth.joiValidator.body(Te.default.object({_id:Te.default.string().optional(),_rev:Te.default.string().optional(),color:Te.default.string().required(),icon:Te.default.string().required(),name:Te.default.string().trim().required().max(50),role:Te.default.string().optional(),users:Te.default.array().optional(),apps:Te.default.array().optional(),roles:Te.default.object().optional(),createdAt:Te.default.string().optional(),updatedAt:Te.default.string().optional()}).required())}mA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),JN(),oA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),uA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Ba("groupId"),pA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,cA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,lA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Ba("groupId"),sA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),iA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),dA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),fA);var yA=mA;var Gi=require("@budibase/types");var ki=require("@budibase/backend-core");async function hA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function AA(e){e.body={variables:await ot.fetch()}}async function IA(e){let{name:t,production:r,development:n}=e.request.body;await ot.update(t,{production:r,development:n});let a=[Gi.AppEnvironment.PRODUCTION];r!==n&&a.push(Gi.AppEnvironment.DEVELOPMENT),await ki.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function bA(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ot.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function SA(e){let t=e.params.varName;await ot.remove(t),await ki.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Wt=require("@budibase/backend-core"),vA=N(require("@koa/router")),Pn=N(require("joi")),EA=new vA.default;function wA(){return Wt.auth.joiValidator.body(Pn.default.object({name:Pn.default.string().optional(),production:Pn.default.string().required(),development:Pn.default.string().required()}))}EA.get("/api/env/variables/status",Wt.auth.builderOrAdmin,hA).get("/api/env/variables",Wt.auth.builderOrAdmin,AA).post("/api/env/variables",Wt.auth.builderOrAdmin,wA(),IA).patch("/api/env/variables/:varName",Wt.auth.builderOrAdmin,wA(),bA).delete("/api/env/variables/:varName",Wt.auth.builderOrAdmin,SA);var _A=EA;var Fi=require("@budibase/backend-core");async function RA(e){let t=e.request.body,r=await vt.fetch(t);await Fi.events.auditLog.filtered(t),e.body=r}async function xA(e){let t=e.request.body,{stream:r}=vt.download(t);await Fi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function OA(e){e.body={events:vt.definitions()}}var PA=require("@budibase/types"),Vt=require("@budibase/backend-core"),qA=N(require("@koa/router")),Ge=N(require("joi"));function TA(){return Vt.auth.joiValidator.body(Ge.default.object({userIds:Ge.default.array().items(Ge.default.string()).optional(),appIds:Ge.default.array().items(Ge.default.string()).optional(),events:Ge.default.array().items(Ge.default.string().valid(...Object.values(PA.Event))).optional(),startDate:Ge.default.string().optional().allow(""),endDate:Ge.default.string().optional().allow(""),fullSearch:Ge.default.string().optional().allow(""),bookmark:Ge.default.number()}))}var CA=new qA.default;CA.post("/api/global/auditlogs/search",Vt.auth.adminOnly,TA(),RA).get("/api/global/auditlogs/download",Vt.auth.adminOnly,Vt.middleware.querystringToBody,TA(),xA).get("/api/global/auditlogs/definitions",Vt.auth.adminOnly,OA);var UA=CA;var Qi=require("@budibase/types");var LA=require("@budibase/backend-core");async function xr(e,t){await Zt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function DA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Qi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function BA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await LA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function NA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function MA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Qi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function GA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function kA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var FA=N(require("@koa/router")),Kt=N(require("joi")),Ga=require("@budibase/types"),xt=require("@budibase/backend-core"),QA=new FA.default;function tM(){return xt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(Ga.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(Ga.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}QA.post("/api/apps/:appId/backups",xt.auth.builderOrAdmin,DA).post("/api/apps/:appId/backups/search",xt.auth.builderOrAdmin,tM(),MA).get("/api/apps/:appId/backups/:backupId/file",xt.auth.builderOrAdmin,kA).patch("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,GA).delete("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,NA).post("/api/apps/:appId/backups/:backupId/import",xt.auth.builderOrAdmin,BA);var $A=QA;var AI=N(require("@koa/router"));var ka=require("scim-patch");var WA=require("@budibase/backend-core");function jA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var VA=async e=>{let t=jA(e,"pageSize")??20,r=jA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},KA=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},YA=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof WA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function rM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var HA=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,ka.patchBodyValidation)(n)}catch{}if(rM(n))return $i(e);let a;try{a=(0,ka.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},$i=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var cI=N(pI()),lI=require("@budibase/shared-core"),Fa=require("scim-patch");var Qa=require("scim2-parse-filter");function dI(e,t){for(let r of t.split(","))delete e[r]}var fI=async e=>{let r=(await J.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Qa.filter)((0,Qa.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{dI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},gI=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await Er.create(t);e.body=ne.group.toScimGroupResponse(r)},mI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&dI(n,a),e.body=n},yI=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},hI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,Fa.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,cI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Fa.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await J.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:d}of o)switch(f){case"add":case"Add":for(let m of d)s.push(await ve.find(m.value));break;case"remove":case"Remove":for(let m of d)c.push(await ve.find(m.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:lI.utils.unreachable(f)}s.length&&await J.addUsers(t,s.map(f=>f._id)),c.length&&await J.removeUsers(t,c.map(f=>f._id))}e.body=ne.group.toScimGroupResponse(await J.get(t))};var qn=require("@budibase/types"),Pe=new AI.default({prefix:"/api/global/scim/v2"});Pe.use(Ci);Pe.use(qi);Pe.get("/users",VA);Pe.get("/users/:id",On("id"),KA);Pe.post("/users",YA);Pe.patch("/users/:id",On("id"),HA);Pe.delete("/users/:id",On("id"),$i);Pe.get("/groups",fI);Pe.post("/groups",H.requireFeature(qn.Feature.USER_GROUPS),gI);Pe.get("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),Tn("id"),mI);Pe.delete("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),Tn("id"),yI);Pe.patch("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),Tn("id"),hI);var II=Pe;var wI=N(require("@koa/router"));var ji=require("@budibase/backend-core");async function bI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(ji.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await lt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function SI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(ji.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await lt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Wi=require("@budibase/types"),Vi=require("@budibase/backend-core"),vI=new wI.default;vI.post("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),bI).delete("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),SI);var EI=vI;var ne={};R(ne,{group:()=>Hi,user:()=>Yi});var Yi={};R(Yi,{fromScimUser:()=>qM,toScimUserResponse:()=>OM,userFilters:()=>CM});var $a=require("@budibase/types"),_I=require("scim2-parse-filter"),RI=require("@budibase/backend-core"),xI=require("@budibase/shared-core"),{unreachable:xM}=xI.utils,OM=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===$a.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},TM=e=>!!e?.id;function PM(e){if(RI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var qM=e=>{let t=TM(e)?e:void 0,r=PM(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:xM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?$a.UserStatus.ACTIVE:$a.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},CM=e=>{let t={equal:{}},r=(0,_I.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Hi={};R(Hi,{fromScimGroup:()=>DM,toScimGroupResponse:()=>UM});var UM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),LM=e=>!!e?.id,DM=e=>{let t=LM(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
|
40
|
+
Only return the summary.`}function Vh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function Kh(e){return`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`}function Yh(e){return`Generate a node-cron compatible expression based on the following prompt. Return only the cron expression (without backticks), and if not possible return only 'Error generating cron' with a short explanation:
|
|
41
|
+
${e}`}function Hh(e,t){return`Translate the following text: "${e}" into ${t}. Only return the translation.`}function zh(e){return`Return the sentiment of this text: "${e}". Only return the sentiment.`}function Jh(e){return`Search the web for the following: "${e}". Only return the top results.`}var jt=class{constructor({model:t,apiKey:r,measureUsage:n}){this.model=t,this.client=new Di.default({apiKey:r}),this.measureUsage=n}measureTokenUsage(t){let r=0;if(this.measureUsage&&t){let{prompt_tokens:n,completion_tokens:a}=t;r=a*3+n}return r}async chatCompletion(t){try{let r=await this.client.chat.completions.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}),n=this.measureTokenUsage(r.usage);return{message:r?.choices[0]?.message?.content,tokensUsed:n}}catch(r){throw r instanceof Di.default.APIError&&console.error(`OpenAI Prompt failed with error of type ${r.type} and status: ${r.status}:${r.code} - ${r.message}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var Bi=N(require("@anthropic-ai/sdk"));var Ma=class{constructor({model:t,apiKey:r}){this.model=t,this.client=new Bi.default({apiKey:r})}async chatCompletion(t){try{return{message:((await this.client.messages.create({model:this.model,messages:[{role:"user",content:t}],max_tokens:parseInt(process.env.BUDIBASE_AI_MAX_PROMPT_TOKENS||"300")}))?.content[0]).text}}catch(r){throw r instanceof Bi.default.APIError&&console.error(`Anthropic Prompt failed with error ${r.name} and status: ${r.status}`),r}}async prompt(t){return this.chatCompletion(t)}async summarizeText(t){return this.chatCompletion(_r(t))}};var HN={OpenAI:jt,Anthropic:Ma,TogetherAI:jt,AzureOpenAI:jt,Custom:jt};function Ni(e,t){return t.map(r=>e[r]).join(" ")}var Rr=class e{static async forCurrentTenant(t){let r=new e(t);return await r.init(),r}constructor(t){this.model=t}determineDefault(t){for(let r in t)if(t[r].isDefault)return t[r]}async init(){let t=await Xh.configs.getAIConfig(),r=await An();if(!t&&!r)return;t||(t={config:{}});let n=await Zo(t),a=this.determineDefault(n.config);if(!a)return;let o={model:a.defaultModel||this.model,apiKey:a.apiKey,measureUsage:t?.config?.budibase_ai?.apiKey===a.apiKey},i=HN[a.provider],s=new i(o);if(!s)throw Error("LLM Initialisation failed. No model configured.");this.llm=s}buildPromptFromAIOperation({schema:t,row:r}){let{operation:n}=t;switch(n){case Rt.AIOperationEnum.SUMMARISE_TEXT:return _r(Ni(r,t.columns));case Rt.AIOperationEnum.CLEAN_DATA:return Kh(r[t.column]);case Rt.AIOperationEnum.TRANSLATE:return Hh(r[t.column],t.language);case Rt.AIOperationEnum.CATEGORISE_TEXT:if(!t.categories)throw Error("No categories provided for categorise text operation. Please provide categories.");return Vh(Ni(r,t.columns),t.categories.split(","));case Rt.AIOperationEnum.SENTIMENT_ANALYSIS:return zh(r[t.column]);case Rt.AIOperationEnum.PROMPT:return t.prompt;case Rt.AIOperationEnum.SEARCH_WEB:return Jh(Ni(r,t.columns));default:throw Zh.utils.unreachable(n)}}async run(t){if(!this.llm)throw Error("No model configuration selected. You must instantiate an LLM before prompting.");let r=await this.llm.prompt(t);return await ss(r.tokensUsed||0),r.message}};async function eA(e){let{prompt:t}=e.request.body,n=await(await Rr.forCurrentTenant("gpt-4o-mini")).run(Yh(t));n?.startsWith("Error generating cron:")?e.throw(400,n):e.body={message:n}}var tA=require("@budibase/types"),rA=N(require("@koa/router")),nA=require("@budibase/backend-core"),aA=new rA.default;aA.post("/api/ai/cron",H.requireFeature(tA.Feature.BUDIBASE_AI),nA.auth.builderOrAdmin,eA);var oA=aA;async function sA(e){let t=e.request.body;if(t.name=t.name.trim(),delete t.roles,t._id){let n=await kt(t._id);t.roles=n.roles,t.scimInfo=n.scimInfo}let r=await hr(t);e.body={_id:r.id,_rev:r.rev}}async function iA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of users to add or to remove");let a,o;r&&(a=await us(t,r)),n&&(o=await ps(t,n)),e.body={added:a,removed:o}}async function uA(e){let t=e.params.groupId,r=e.request.body.add,n=e.request.body.remove;(r&&!Array.isArray(r)||n&&!Array.isArray(n))&&e.throw(400,"Must supply a list of objects, with appId and roleId to add or remove"),e.body=await cs(t,{appsToAdd:r,appsToRemove:n})}async function pA(e){e.body={data:await bn()}}async function cA(e){let{groupId:t,rev:r}=e.params;try{await is(t,r),e.body={message:"Group deleted successfully"}}catch(n){e.throw(n.status,n)}}async function lA(e){try{e.body=await kt(e.params.groupId)}catch(t){e.throw(t.status,t)}}async function dA(e){let{pageSize:t=10,bookmark:r,emailSearch:n}=e.request.query,a=e.params.groupId,o={limit:t+1},i=await Gn(a,{...o,emailSearch:n,bookmark:r}),s=n?i[t]?.email:i[t]?._id,c=!!s;e.body={users:i.slice(0,t),bookmark:s,hasNextPage:c}}async function fA(e){let{groupId:t,appId:r}=e.params;await ls(t,r),e.body={message:"Group app builder access updated."}}async function gA(e){let{groupId:t,appId:r}=e.params;await ds(t,r),e.body={message:"group app builder access removed."}}var mA=N(require("@koa/router")),Oe=N(require("joi"));var Me=require("@budibase/types"),it=require("@budibase/backend-core"),yA=new mA.default;function XN(){return it.auth.joiValidator.body(Oe.default.object({_id:Oe.default.string().optional(),_rev:Oe.default.string().optional(),color:Oe.default.string().required(),icon:Oe.default.string().required(),name:Oe.default.string().trim().required().max(50),role:Oe.default.string().optional(),users:Oe.default.array().optional(),apps:Oe.default.array().optional(),roles:Oe.default.object().optional(),createdAt:Oe.default.string().optional(),updatedAt:Oe.default.string().optional()}).required())}yA.post("/api/global/groups",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),XN(),sA).get("/api/global/groups",H.requireFeature(Me.Feature.USER_GROUPS),pA).delete("/api/global/groups/:groupId/:rev",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.adminOnly,Ba("groupId"),cA).get("/api/global/groups/:groupId",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,lA).get("/api/global/groups/:groupId/users",H.requireFeature(Me.Feature.USER_GROUPS),it.auth.builderOrAdmin,dA).post("/api/global/groups/:groupId/users",it.auth.adminOnly,H.requireFeature(Me.Feature.USER_GROUPS),Ba("groupId"),iA).post("/api/global/groups/:groupId/apps",it.auth.builderOrAdmin,H.requireFeature(Me.Feature.USER_GROUPS),uA).post("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),fA).delete("/api/global/groups/:groupId/app/:appId/builder",it.auth.builderOrAdmin,H.requireFeatures(Me.Feature.USER_GROUPS,Me.Feature.APP_BUILDERS),gA);var hA=yA;var Gi=require("@budibase/types");var ki=require("@budibase/backend-core");async function AA(e){e.body={encryptionKeyAvailable:ot.isEncryptionKeyAvailable()}}async function IA(e){e.body={variables:await ot.fetch()}}async function bA(e){let{name:t,production:r,development:n}=e.request.body;await ot.update(t,{production:r,development:n});let a=[Gi.AppEnvironment.PRODUCTION];r!==n&&a.push(Gi.AppEnvironment.DEVELOPMENT),await ki.events.environmentVariable.created(t,a),e.body={message:`Environment variable "${t}" created.`}}async function SA(e){let{production:t,development:r}=e.request.body,n=e.params.varName;await ot.update(n,{production:t,development:r}),e.body={message:`Environment variable "${n}" updated.`}}async function wA(e){let t=e.params.varName;await ot.remove(t),await ki.events.environmentVariable.deleted(t),e.body={message:`Environment variable "${t}" deleted.`}}var Wt=require("@budibase/backend-core"),EA=N(require("@koa/router")),Pn=N(require("joi")),_A=new EA.default;function vA(){return Wt.auth.joiValidator.body(Pn.default.object({name:Pn.default.string().optional(),production:Pn.default.string().required(),development:Pn.default.string().required()}))}_A.get("/api/env/variables/status",Wt.auth.builderOrAdmin,AA).get("/api/env/variables",Wt.auth.builderOrAdmin,IA).post("/api/env/variables",Wt.auth.builderOrAdmin,vA(),bA).patch("/api/env/variables/:varName",Wt.auth.builderOrAdmin,vA(),SA).delete("/api/env/variables/:varName",Wt.auth.builderOrAdmin,wA);var RA=_A;var Fi=require("@budibase/backend-core");async function xA(e){let t=e.request.body,r=await vt.fetch(t);await Fi.events.auditLog.filtered(t),e.body=r}async function TA(e){let t=e.request.body,{stream:r}=vt.download(t);await Fi.events.auditLog.downloaded(t),e.attachment(`audit-logs-${Date.now()}.log`),e.body=r}async function OA(e){e.body={events:vt.definitions()}}var qA=require("@budibase/types"),Vt=require("@budibase/backend-core"),CA=N(require("@koa/router")),Ge=N(require("joi"));function PA(){return Vt.auth.joiValidator.body(Ge.default.object({userIds:Ge.default.array().items(Ge.default.string()).optional(),appIds:Ge.default.array().items(Ge.default.string()).optional(),events:Ge.default.array().items(Ge.default.string().valid(...Object.values(qA.Event))).optional(),startDate:Ge.default.string().optional().allow(""),endDate:Ge.default.string().optional().allow(""),fullSearch:Ge.default.string().optional().allow(""),bookmark:Ge.default.number()}))}var UA=new CA.default;UA.post("/api/global/auditlogs/search",Vt.auth.adminOnly,PA(),xA).get("/api/global/auditlogs/download",Vt.auth.adminOnly,Vt.middleware.querystringToBody,PA(),TA).get("/api/global/auditlogs/definitions",Vt.auth.adminOnly,OA);var LA=UA;var Qi=require("@budibase/types");var DA=require("@budibase/backend-core");async function xr(e,t){await Zt.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function BA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body,n=e.user?._id,a=await Ne.triggerAppBackup(t,Qi.AppBackupTrigger.MANUAL,{name:r.name,createdBy:n});a||e.throw(500,"Unable to start backup."),e.body={backupId:a,message:"Backup triggered - process starting."}}async function NA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body.name,a=await Ne.triggerAppRestore(t,r,n,e.user?._id);a||e.throw(500,"Unable to start restore."),await DA.events.backup.appBackupRestored(a.metadata),e.body={restoredId:a?.restoreId,message:"Restore triggered - process starting."}}async function MA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId;await Ne.deleteAppBackup(r),e.body={message:"Backup deleted successfully."}}async function GA(e){let t=e.params.appId;await xr(e,t);let r=e.request.body;r?.trigger&&(r.trigger=r.trigger.toLowerCase(),Object.values(Qi.AppBackupTrigger).includes(r.trigger)||e.throw(400,"Provided trigger is not a valid option.")),e.body=await Ne.fetchAppBackups(t,{paginate:!0,...r})}async function kA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,n=e.request.body;e.body=await Ne.updateAppBackup(r,n.name)}async function FA(e){let t=e.params.appId;await xr(e,t);let r=e.params.backupId,{metadata:n,stream:a}=await Ne.getBackupDownloadStream(r);e.attachment(`backup-${n.timestamp}.tar.gz`),e.body=a}var QA=N(require("@koa/router")),Kt=N(require("joi")),Ga=require("@budibase/types"),xt=require("@budibase/backend-core"),$A=new QA.default;function rM(){return xt.auth.joiValidator.body(Kt.default.object({trigger:Kt.default.string().valid(...Object.values(Ga.AppBackupTrigger)),type:Kt.default.string().valid(...Object.values(Ga.AppBackupType)),startDate:Kt.default.date(),endDate:Kt.default.date(),page:Kt.default.string()}))}$A.post("/api/apps/:appId/backups",xt.auth.builderOrAdmin,BA).post("/api/apps/:appId/backups/search",xt.auth.builderOrAdmin,rM(),GA).get("/api/apps/:appId/backups/:backupId/file",xt.auth.builderOrAdmin,FA).patch("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,kA).delete("/api/apps/:appId/backups/:backupId",xt.auth.builderOrAdmin,MA).post("/api/apps/:appId/backups/:backupId/import",xt.auth.builderOrAdmin,NA);var jA=$A;var II=N(require("@koa/router"));var ka=require("scim-patch");var VA=require("@budibase/backend-core");function WA(e,t){let r=e.request.query[t];if(r!==void 0)return+r}var KA=async e=>{let t=WA(e,"pageSize")??20,r=WA(e,"startIndex"),n;e.request.query.filter&&(n=ne.user.userFilters(e.request.query.filter));let a=await ve.get({pageSize:t,skip:r,filters:n});e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:a.total,Resources:a.users.map(ne.user.toScimUserResponse),startIndex:(r||0)+1,itemsPerPage:t}},YA=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404);let r=await ve.find(t);e.body=ne.user.toScimUserResponse(r)},HA=async e=>{let t=ne.user.fromScimUser(e.request.body);try{let r=await ve.create(t);e.body=ne.user.toScimUserResponse(r)}catch(r){throw r instanceof VA.EmailUnavailableError&&e.throw(409,"Email already in use"),r}};function nM(e){let t=e.Operations.find(r=>(r.op==="Replace"||r.op==="replace")&&r.path==="active");return t?t.value===!1||t.value?.toLowerCase?.()==="false":!1}var zA=async e=>{let t=await ve.find(e.params.id);t||e.throw(404);let r=ne.user.toScimUserResponse(t),n=e.request.body;try{(0,ka.patchBodyValidation)(n)}catch{}if(nM(n))return $i(e);let a;try{a=(0,ka.scimPatch)(r,n.Operations)}catch{}a||e.throw(500);let o=ne.user.fromScimUser(a);await ve.update(o,{allowChangingEmail:!0}),e.body=ne.user.toScimUserResponse(o)},$i=async e=>{let{id:t}=e.params;typeof t!="string"&&e.throw(404),await ve.remove(t),e.status=204};var lI=N(cI()),dI=require("@budibase/shared-core"),Fa=require("scim-patch");var Qa=require("scim2-parse-filter");function fI(e,t){for(let r of t.split(","))delete e[r]}var gI=async e=>{let r=(await J.fetch()).filter(o=>o.scimInfo?.isSync).map(ne.group.toScimGroupResponse),{filter:n,excludedAttributes:a}=e.request.query;if(n){let o=(0,Qa.filter)((0,Qa.parse)(n));r=r.filter(o)}a&&r.forEach(o=>{fI(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},mI=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await Er.create(t);e.body=ne.group.toScimGroupResponse(r)},yI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&fI(n,a),e.body=n},hI=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},AI=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),a=e.request.body;try{(0,Fa.patchBodyValidation)(a)}catch{e.throw(400)}let{true:o,false:i}=(0,lI.default)(a.Operations,s=>s.path==="members");if(i?.length){let s=(0,Fa.scimPatch)(n,i);s||e.throw(500);let c={...ne.group.fromScimGroup(s),_rev:r._rev};await J.save(c)}if(o?.length){let s=[],c=[];for(let{op:f,value:d}of o)switch(f){case"add":case"Add":for(let m of d)s.push(await ve.find(m.value));break;case"remove":case"Remove":for(let m of d)c.push(await ve.find(m.value));break;case"replace":case"Replace":throw new Error("Replacing members is not allowed");default:dI.utils.unreachable(f)}s.length&&await J.addUsers(t,s.map(f=>f._id)),c.length&&await J.removeUsers(t,c.map(f=>f._id))}e.body=ne.group.toScimGroupResponse(await J.get(t))};var qn=require("@budibase/types"),Pe=new II.default({prefix:"/api/global/scim/v2"});Pe.use(Ci);Pe.use(qi);Pe.get("/users",KA);Pe.get("/users/:id",Tn("id"),YA);Pe.post("/users",HA);Pe.patch("/users/:id",Tn("id"),zA);Pe.delete("/users/:id",Tn("id"),$i);Pe.get("/groups",gI);Pe.post("/groups",H.requireFeature(qn.Feature.USER_GROUPS),mI);Pe.get("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),On("id"),yI);Pe.delete("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),On("id"),hI);Pe.patch("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),On("id"),AI);var bI=Pe;var vI=N(require("@koa/router"));var ji=require("@budibase/backend-core");async function SI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(ji.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions updated."};return}await lt.addAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access updated.`}}async function wI(e){let{userId:t,appId:r}=e.params,n=await lt.db.getUser(t);if(ji.users.isGlobalBuilder(n)){e.body={message:"User already admin - no permissions removed."};return}await lt.removeAppBuilder(n,r),e.body={message:`User "${n.email}" app builder access removed.`}}var Wi=require("@budibase/types"),Vi=require("@budibase/backend-core"),EI=new vI.default;EI.post("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),SI).delete("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),wI);var _I=EI;var ne={};R(ne,{group:()=>Hi,user:()=>Yi});var Yi={};R(Yi,{fromScimUser:()=>CM,toScimUserResponse:()=>OM,userFilters:()=>UM});var $a=require("@budibase/types"),RI=require("scim2-parse-filter"),xI=require("@budibase/backend-core"),TI=require("@budibase/shared-core"),{unreachable:TM}=TI.utils,OM=e=>{let{isSync:t,roles:r,...n}=e.scimInfo||{},a={...n,schemas:["urn:ietf:params:scim:schemas:core:2.0:User"],id:e._id,meta:{resourceType:"User",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},active:e.status===$a.UserStatus.ACTIVE};return(e.firstName||e.lastName)&&(a.name={formatted:[e.firstName,e.lastName].filter(o=>o).join(" "),familyName:e.lastName,givenName:e.firstName}),a},PM=e=>!!e?.id;function qM(e){if(xI.utils.validEmail(e.userName))return e.userName;if(e.emails)return e.emails.find(t=>t.primary)?.value||e.emails[0]?.value}var CM=e=>{let t=PM(e)?e:void 0,r=qM(e);if(!r)throw new Error("Email is required");let n;switch(e.active){case"True":case"true":case!0:n=!0;break;case"False":case"false":case!1:n=!1;break;default:TM(e.active)}let a,o;return e.name?.givenName?(a=e.name?.givenName,o=e.name?.familyName):a=e.displayName,{tenantId:"",_id:t?.id,userId:t?.id,email:r,firstName:a,lastName:o,scimInfo:{...e,isSync:!0},roles:{},status:n?$a.UserStatus.ACTIVE:$a.UserStatus.INACTIVE,createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}},UM=e=>{let t={equal:{}},r=(0,RI.parse)(e);function n(a){switch(a.op){case"eq":{let o=a.attrPath,i;switch(o){case"emails.value":i="email";break;default:i=`scimInfo.${o}`}t.equal[i]=a.compValue;break}case"and":for(let o of a.filters)n(o);break;default:console.warn("Filter not handled",{filter:a})}}return n(r),t};var Hi={};R(Hi,{fromScimGroup:()=>BM,toScimGroupResponse:()=>LM});var LM=e=>({schemas:["urn:ietf:params:scim:schemas:core:2.0:Group"],id:e._id,externalId:e.scimInfo.externalId,meta:{resourceType:"Group",created:new Date(e.createdAt),lastModified:new Date(e.updatedAt)},displayName:e.name,members:e.users?.map(t=>({value:t._id}))}),DM=e=>!!e?.id,BM=e=>{let t=DM(e)?e:void 0;return{_id:t?.id,name:e.displayName,scimInfo:{externalId:e.externalId,isSync:!0},icon:"UserGroup",color:"var(--spectrum-global-color-blue-600)",createdAt:t?.meta.created.getTime(),updatedAt:t?.meta.lastModified.toISOString()}};0&&(module.exports={Method,ai,api,auditLogs,automations,backups,branding,constants,environmentVariables,features,groups,init,licensing,logger,mappers,middleware,plugins,publicApi,quotas,scimGroups,scimUsers,sdk,users,utils});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PluginSource } from "@budibase/types";
|
|
2
|
-
export declare function storePlugin(metadata:
|
|
1
|
+
import { Plugin, PluginMetadata, PluginSource } from "@budibase/types";
|
|
2
|
+
export declare function storePlugin(metadata: PluginMetadata, directory: any, source: PluginSource): Promise<Plugin>;
|
|
3
3
|
export declare function deletePlugin(pluginId: string): Promise<void>;
|
|
4
4
|
export declare function checkPluginQuotas(): Promise<void>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const addPlugin: (addPluginFn:
|
|
1
|
+
export declare const addPlugin: <T>(addPluginFn: () => Promise<T>) => Promise<T>;
|
|
2
2
|
export declare const removePlugin: () => Promise<void>;
|
|
3
3
|
export declare const updatePluginCount: (count: number) => Promise<import("@budibase/types").QuotaUsage>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ConstantQuotaName, MeteredQuotaName, MonthlyQuotaName, Quota, QuotaType, QuotaUsage, QuotaUsageType, StaticQuotaName } from "@budibase/types";
|
|
2
|
-
interface IncrementOptions {
|
|
2
|
+
interface IncrementOptions<T = any> {
|
|
3
3
|
/**
|
|
4
4
|
* The function being wrapped by this quota usage.
|
|
5
5
|
*/
|
|
6
|
-
fn?: () => Promise<
|
|
6
|
+
fn?: () => Promise<T>;
|
|
7
7
|
/**
|
|
8
8
|
* If provided, the new usage value will be calculated using this function.
|
|
9
9
|
*/
|
|
@@ -17,11 +17,11 @@ interface IncrementOptions {
|
|
|
17
17
|
*/
|
|
18
18
|
id?: string;
|
|
19
19
|
}
|
|
20
|
-
export interface IncrementManyParams {
|
|
20
|
+
export interface IncrementManyParams<T = any> {
|
|
21
21
|
change: number;
|
|
22
22
|
name: MeteredQuotaName;
|
|
23
23
|
type: QuotaUsageType;
|
|
24
|
-
opts?: IncrementOptions
|
|
24
|
+
opts?: IncrementOptions<T>;
|
|
25
25
|
}
|
|
26
26
|
interface UpdateUsageParams {
|
|
27
27
|
usageChange: number;
|
|
@@ -35,7 +35,7 @@ interface DecrementManyParams {
|
|
|
35
35
|
type: QuotaUsageType;
|
|
36
36
|
opts?: DecrementOptions;
|
|
37
37
|
}
|
|
38
|
-
export declare const increment: (name: MeteredQuotaName, type: QuotaUsageType, opts?: IncrementOptions) => Promise<
|
|
38
|
+
export declare const increment: <T = any>(name: MeteredQuotaName, type: QuotaUsageType, opts?: IncrementOptions<T>) => Promise<T>;
|
|
39
39
|
export declare const incrementMany: (params: IncrementManyParams | IncrementManyParams[]) => Promise<any>;
|
|
40
40
|
interface DecrementOptions {
|
|
41
41
|
/**
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"dist"
|
|
5
5
|
],
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
|
-
"version": "3.4.
|
|
7
|
+
"version": "3.4.22",
|
|
8
8
|
"description": "Budibase Pro (Backend)",
|
|
9
9
|
"main": "dist/index.js",
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "d13bdcbc41f1c15066ef24c19290452cd5c4dd46"
|
|
75
75
|
}
|