@budibase/pro 3.4.2 → 3.4.3
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 +9 -9
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
"use strict";var Pb=Object.create;var Un=Object.defineProperty;var qb=Object.getOwnPropertyDescriptor;var Cb=Object.getOwnPropertyNames;var Ub=Object.getPrototypeOf,Lb=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 Cb(t))!Lb.call(e,a)&&a!==r&&Un(e,a,{get:()=>t[a],enumerable:!(n=qb(t,a))||n.enumerable});return e};var N=(e,t,r)=>(r=e!=null?Pb(Ub(e)):{},Ji(t||!e||!e.__esModule?Un(r,"default",{value:e,enumerable:!0}):r,e)),Db=e=>Ji(Un({},"__esModule",{value:!0}),e);var Vn=u((J0,Uu)=>{"use strict";function LI(e,t){for(var r=-1,n=t.length,a=e.length;++r<n;)e[a+r]=t[r];return e}Uu.exports=LI});var lo=u((X0,Lu)=>{"use strict";var DI=typeof global=="object"&&global&&global.Object===Object&&global;Lu.exports=DI});var Ae=u((Z0,Du)=>{"use strict";var BI=lo(),NI=typeof self=="object"&&self&&self.Object===Object&&self,MI=BI||NI||Function("return this")();Du.exports=MI});var Ut=u((eG,Bu)=>{"use strict";var GI=Ae(),kI=GI.Symbol;Bu.exports=kI});var ku=u((tG,Gu)=>{"use strict";var Nu=Ut(),Mu=Object.prototype,FI=Mu.hasOwnProperty,QI=Mu.toString,Jr=Nu?Nu.toStringTag:void 0;function $I(e){var t=FI.call(e,Jr),r=e[Jr];try{e[Jr]=void 0;var n=!0}catch{}var a=QI.call(e);return n&&(t?e[Jr]=r:delete e[Jr]),a}Gu.exports=$I});var Qu=u((rG,Fu)=>{"use strict";var jI=Object.prototype,WI=jI.toString;function VI(e){return WI.call(e)}Fu.exports=VI});var bt=u((nG,Wu)=>{"use strict";var $u=Ut(),KI=ku(),YI=Qu(),HI="[object Null]",zI="[object Undefined]",ju=$u?$u.toStringTag:void 0;function JI(e){return e==null?e===void 0?zI:HI:ju&&ju in Object(e)?KI(e):YI(e)}Wu.exports=JI});var _e=u((aG,Vu)=>{"use strict";function XI(e){return e!=null&&typeof e=="object"}Vu.exports=XI});var Yu=u((oG,Ku)=>{"use strict";var ZI=bt(),eS=_e(),tS="[object Arguments]";function rS(e){return eS(e)&&ZI(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 bS=bt(),IS=De(),SS="[object AsyncFunction]",wS="[object Function]",vS="[object GeneratorFunction]",ES="[object Proxy]";function _S(e){if(!IS(e))return!1;var t=bS(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 Ip=u((bG,bp)=>{"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))}bp.exports=$S});var wp=u((IG,Sp)=>{"use strict";function jS(e,t){return e?.[t]}Sp.exports=jS});var It=u((SG,vp)=>{"use strict";var WS=Ip(),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=It(),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 bo=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=It(),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 bw=tn(),Iw=Object.prototype,Sw=Iw.hasOwnProperty;function ww(e){var t=this.__data__;return bw?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 tr(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])}}tr.prototype.clear=Rw;tr.prototype.delete=xw;tr.prototype.get=Ow;tr.prototype.has=Tw;tr.prototype.set=Pw;$p.exports=tr});var Vp=u((LG,Wp)=>{"use strict";function qw(){this.__data__=[],this.size=0}Wp.exports=qw});var rr=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=rr();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 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=Ww;nr.prototype.delete=Vw;nr.prototype.get=Kw;nr.prototype.has=Yw;nr.prototype.set=Hw;nc.exports=nr});var Hn=u((QG,ac)=>{"use strict";var zw=It(),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,bc)=>{"use strict";var fv=ic(),gv=dc(),mv=gc(),yv=yc(),hv=Ac();function ar(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])}}ar.prototype.clear=fv;ar.prototype.delete=gv;ar.prototype.get=mv;ar.prototype.has=yv;ar.prototype.set=hv;bc.exports=ar});var Sc=u((JG,Ic)=>{"use strict";var Av="__lodash_hash_undefined__";function bv(e){return this.__data__.set(e,Av),this}Ic.exports=bv});var vc=u((XG,wc)=>{"use strict";function Iv(e){return this.__data__.has(e)}wc.exports=Iv});var Io=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=It(),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=Io(),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 or=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=or(),aE=_e();function oE(e){return aE(e)&&nE(e)}Vc.exports=oE});var Yc=u((mk,Kc)=>{"use strict";var sE=fo(),iE=bo(),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((bk,tl)=>{"use strict";function mE(e){return this.__data__.has(e)}tl.exports=mE});var al=u((Ik,nl)=>{"use strict";var yE=nn(),hE=Hn(),AE=zn(),bE=200;function IE(e,t){var r=this.__data__;if(r instanceof yE){var n=r.__data__;if(!hE||n.length<bE-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=IE});var on=u((Sk,ol)=>{"use strict";var SE=nn(),wE=zc(),vE=Xc(),EE=el(),_E=rl(),RE=al();function sr(e){var t=this.__data__=new SE(e);this.size=t.size}sr.prototype.clear=wE;sr.prototype.delete=vE;sr.prototype.get=EE;sr.prototype.has=_E;sr.prototype.set=RE;ol.exports=sr});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=rr();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,ir)=>{"use strict";var LE=Ae(),ml=typeof un=="object"&&un&&!un.nodeType&&un,dl=ml&&typeof ir=="object"&&ir&&!ir.nodeType&&ir,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}ir.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,bl)=>{"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)}bl.exports=FE});var ur=u((Tk,Il)=>{"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}Il.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,pr)=>{"use strict";var t_=Ae(),r_=Ol(),ql=typeof cn=="object"&&cn&&!cn.nodeType&&cn,Tl=ql&&typeof pr=="object"&&pr&&!pr.nodeType&&pr,n_=Tl&&Tl.exports===ql,Pl=n_?t_.Buffer:void 0,a_=Pl?Pl.isBuffer:void 0,o_=a_||r_;pr.exports=o_});var Lo=u((Bk,Ul)=>{"use strict";var s_=bt(),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_=bt(),y_=Zn(),h_=_e(),A_="[object Arguments]",b_="[object Array]",I_="[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[b_]=j[q_]=j[I_]=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,cr)=>{"use strict";var j_=lo(),Nl=typeof dn=="object"&&dn&&!dn.nodeType&&dn,fn=Nl&&typeof cr=="object"&&cr&&!cr.nodeType&&cr,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{}}();cr.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_=rr(),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 lr=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 bR=De(),IR=ra(),SR=Hl(),wR=Object.prototype,vR=wR.hasOwnProperty;function ER(e){if(!bR(e))return SR(e);var t=IR(e),r=[];for(var n in e)n=="constructor"&&(t||!vR.call(e,n))||r.push(n);return r}zl.exports=ER});var dr=u((Yk,Xl)=>{"use strict";var _R=Mo(),RR=Jl(),xR=or();function OR(e){return xR(e)?_R(e,!0):RR(e)}Xl.exports=OR});var ed=u((Hk,Zl)=>{"use strict";var TR=lr(),PR=dr();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=ur(),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=dr(),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=rr(),XR=or(),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=bo(),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 If=u((wQ,bf)=>{"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,k=y.isArray,Ie=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 k(A)?w(Af(A)):w.apply(void 0,arguments)}},iteratee:function(w){return function(){var A=arguments[0],b=arguments[1],E=w(A,b),P=E.length;return i.cap&&typeof b=="number"?(b=b>2?b-2:1,P&&P<=b?E:Ls(E,b)):E}},mixin:function(w){return function(A){var b=this;if(!ee(b))return w(b,Object(A));var E=[];return U(He(A),function(P){ee(A[P])&&E.push([P,b.prototype[P]])}),w(b,Object(A)),U(E,function(P){var Z=P[1];ee(Z)?b.prototype[P[0]]=Z:delete b.prototype[P[0]]}),b}},nthArg:function(w){return function(A){var b=A<0?1:W(A)+1;return L(w(A),b)}},rearg:function(w){return function(A,b){var E=b?b.length:0;return L(w(A,b),E)}},runInContext:function(w){return function(A){return Bs(e,w(A),n)}}};function x(w,A){if(i.cap){var b=ie.iterateeRearg[w];if(b)return Y(A,b);var E=!a&&ie.iterateeAry[w];if(E)return M(A,E)}return A}function S(w,A,b){return c||i.curry&&b>1?L(A,b):A}function h(w,A,b){if(i.fixed&&(f||!ie.skipFixed[w])){var E=ie.methodSpread[w],P=E&&E.start;return P===void 0?v(A,b):KO(A,P)}return A}function _(w,A,b){return i.rearg&&b>1&&(d||!ie.skipRearg[w])?ze(A,ie.methodRearg[w]||ie.aryRearg[b]):A}function I(w,A){A=B(A);for(var b=-1,E=A.length,P=E-1,Z=D(Object(w)),me=Z;me!=null&&++b<E;){var Ce=A[b],Je=me[Ce];Je!=null&&!(ee(Je)||Ie(Je)||ke(Je))&&(me[Ce]=D(b==P?Je:Object(Je))),me=me[Ce]}return Z}function T(w){return F.runInContext.convert(w)(void 0)}function O(w,A){var b=ie.aliasToReal[w]||w,E=ie.remap[b]||b,P=n;return function(Z){var me=a?m:y,Ce=a?m[E]:A,Je=C(C({},P),Z);return Bs(me,b,Ce,Je)}}function M(w,A){return X(w,function(b){return typeof b=="function"?Ls(b,A):b})}function Y(w,A){return X(w,function(b){var E=A.length;return WO(ze(Ls(b,E),A),E)})}function X(w,A){return function(){var b=arguments.length;if(!b)return w();for(var E=Array(b);b--;)E[b]=arguments[b];var P=i.rearg?0:b-1;return E[P]=A(E[P]),w.apply(void 0,E)}}function ae(w,A,b){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,I))),U(Ot,function(Ce){return U(ie.aryMethod[Ce],function(Je){if(P==Je){var zi=ie.methodSpread[P],Tb=zi&&zi.afterRearg;return E=Tb?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=b,E}if(!o)return ae(t,r,s);var F=r,qe=[];return U(Ot,function(w){U(ie.aryMethod[w],function(A){var b=F[ie.remap[A]||A];b&&qe.push([A,ae(A,b,F)])})}),U(He(F),function(w){var A=F[w];if(typeof A=="function"){for(var b=qe.length;b--;)if(qe[b][0]==w)return;A.convert=O(w,A),qe.push([w,A])}}),U(qe,function(w){F[w[0]]=w[1]}),F.convert=T,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((vQ,Sf)=>{"use strict";var YO=It(),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(),bT=Object.prototype,IT=bT.hasOwnProperty;function ST(e){for(var t=e.name+"",r=Gf[t],n=IT.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=ur();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 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,`{
|
|
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,bP=8,og=32,sg=64;function IP(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?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=IP});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=ur(),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,k=Array(U),Ie=U;Ie--;)k[Ie]=arguments[Ie];if(v)var ee=qP(L),ke=TP(k,ee);if(n&&(k=xP(k,n,a,v)),o&&(k=OP(k,o,i,v)),U-=ke,v&&U<f){var He=UP(k,ee);return PP(e,t,gg,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=CP(k,s):C&&U>1&&k.reverse(),d&&c<U&&(k.length=c),this&&this!==LP&&this instanceof L&&(W=D||fg(W)),W.apply(ze,k)}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 bg=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(),Ig=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?Ig(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?Ig(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=bt(),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,bq=/^0o[0-7]+$/i,Iq=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||bq.test(e)?Iq(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=bg(),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 Sr=u((c$,Hg)=>{"use strict";var Hq=Mo(),zq=ti(),Jq=or();function Xq(e){return Jq(e)?Hq(e):zq(e)}Hg.exports=Xq});var ri=u((l$,zg)=>{"use strict";var Zq=lr(),eC=Sr();function tC(e,t){return e&&Zq(t,eC(t),e)}zg.exports=tC});var Xg=u((d$,Jg)=>{"use strict";var rC=lr(),nC=dr();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=lr(),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(),bC=Object.getOwnPropertySymbols,IC=bC?function(e){for(var t=[];e;)mC(t,hC(e)),e=yC(e);return t}:AC;sm.exports=IC});var um=u((A$,im)=>{"use strict";var SC=lr(),wC=ai();function vC(e,t){return SC(e,wC(e),t)}im.exports=vC});var oi=u((b$,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((I$,cm)=>{"use strict";var xC=oi(),OC=Pa(),TC=Sr();function PC(e){return xC(e,TC,OC)}cm.exports=PC});var dm=u((S$,lm)=>{"use strict";var qC=oi(),CC=ai(),UC=dr();function LC(e){return qC(e,UC,CC)}lm.exports=LC});var gm=u((w$,fm)=>{"use strict";var DC=It(),BC=Ae(),NC=DC(BC,"DataView");fm.exports=NC});var ym=u((v$,mm)=>{"use strict";var MC=It(),GC=Ae(),kC=MC(GC,"Promise");mm.exports=kC});var vr=u((E$,vm)=>{"use strict";var ii=gm(),ui=Hn(),pi=ym(),ci=vo(),li=Ns(),wm=bt(),wr=yo(),hm="[object Map]",FC="[object Object]",Am="[object Promise]",bm="[object Set]",Im="[object WeakMap]",Sm="[object DataView]",QC=wr(ii),$C=wr(ui),jC=wr(pi),WC=wr(ci),VC=wr(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)!=bm||li&&Qt(new li)!=Im)&&(Qt=function(e){var t=wm(e),r=t==FC?e.constructor:void 0,n=r?wr(r):"";if(n)switch(n){case QC:return Sm;case $C:return hm;case jC:return Am;case WC:return bm;case VC:return Im}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]",bU="[object Int16Array]",IU="[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 bU:case IU: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=vr(),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=vr(),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=ur(),KU=om(),YU=um(),HU=si(),zU=dm(),JU=vr(),XU=_m(),ZU=Bm(),eL=Uo(),tL=de(),rL=ln(),nL=Qm(),aL=De(),oL=Ym(),sL=Sr(),iL=dr(),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]",bL="[object Set]",IL="[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]=$[bL]=$[IL]=$[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=bt(),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=vr(),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=Io(),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,k){if(!XL(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}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=rr(),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]",bD="[object DataView]",gy=dy?dy.prototype:void 0,mi=gy?gy.valueOf:void 0;function ID(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 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=ID});var by=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],k=t[y];if(n)var Ie=i?n(k,U,y,t,e,o):n(U,k,y,e,t,o);if(!(Ie===void 0?U===k||a(U,k,r,n,o):Ie)){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=by(),Iy=vr(),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:Iy(e),f=s?Ey:Iy(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=Sr();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 bi=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=bi();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 Ii(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(Ii.Cache||ky),r}Ii.Cache=ky;Fy.exports=Ii});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 Er=u((oj,th)=>{"use strict";var bB=Ir(),IB=1/0;function SB(e){if(typeof e=="string"||bB(e))return e;var t=e+"";return t=="0"&&1/e==-IB?"-0":t}th.exports=SB});var _i=u((sj,rh)=>{"use strict";var wB=Ei(),vB=Er();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=Er();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=bi(),jB=Er(),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=Er();function tN(e){return ZB(e)?JB(eN(e)):XB(e)}hh.exports=tN});var Ri=u((mj,bh)=>{"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)}bh.exports=iN});var Sh=u((yj,Ih)=>{"use strict";var uN=di(),pN=Ri(),cN=1;function lN(e){return pN(typeof e=="function"?e:uN(e,cN))}Ih.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((bj,Rh)=>{"use strict";var AN=Ta(),bN=_h(),IN=256,SN=bN(function(e,t){return AN(e,IN,void 0,void 0,void 0,t)});Rh.exports=SN});var Th=u((Ij,Oh)=>{"use strict";var wN=wi(),vN=ur(),EN=de(),_N=Ir(),RN=Si(),xN=Er(),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=If(),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},k={s:U,z:function(x){var S=-x.utcOffset(),h=Math.abs(S),_=Math.floor(h/60),I=h%60;return(S<=0?"+":"-")+U(_,2,"0")+":"+U(I,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()),I=S.clone().add(_,f),T=h-I<0,O=S.clone().add(_+(T?-1:1),f);return+(-(_+(h-I)/(T?I-O:O-I))||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}},Ie="en",ee={};ee[Ie]=L;var ke="$isDayjsObject",He=function(x){return x instanceof Ot||!(!x||!x[ke])},ze=function x(S,h,_){var I;if(!S)return Ie;if(typeof S=="string"){var T=S.toLowerCase();ee[T]&&(I=T),h&&(ee[T]=h,I=T);var O=S.split("-");if(!I&&O.length>1)return x(O[0])}else{var M=S.name;ee[M]=S,I=M}return!_&&I&&(Ie=I),I||!_&&Ie},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=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 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 I=_.date,T=_.utc;if(I===null)return new Date(NaN);if(B.u(I))return new Date;if(I instanceof Date)return new Date(I);if(typeof I=="string"&&!/Z$/i.test(I)){var O=I.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(I)}(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 I=W(h);return this.startOf(_)<=I&&I<=this.endOf(_)},S.isAfter=function(h,_){return W(h)<this.startOf(_)},S.isBefore=function(h,_){return this.endOf(_)<W(h)},S.$g=function(h,_,I){return B.u(h)?this[_]:this.set(I,h)},S.unix=function(){return Math.floor(this.valueOf()/1e3)},S.valueOf=function(){return this.$d.getTime()},S.startOf=function(h,_){var I=this,T=!!B.u(_)||_,O=B.p(h),M=function(b,E){var P=B.w(I.$u?Date.UTC(I.$y,E,b):new Date(I.$y,E,b),I);return T?P:P.endOf(s)},Y=function(b,E){return B.w(I.toDate()[b].apply(I.toDate("s"),(T?[0,0,0,0]:[23,59,59,999]).slice(E)),I)},X=this.$W,ae=this.$M,F=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?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 I,T=B.p(h),O="set"+(this.$u?"UTC":""),M=(I={},I[s]=O+"Date",I[y]=O+"Date",I[f]=O+"Month",I[m]=O+"FullYear",I[i]=O+"Hours",I[o]=O+"Minutes",I[a]=O+"Seconds",I[n]=O+"Milliseconds",I)[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 I,T=this;h=Number(h);var O=B.p(_),M=function(ae){var F=W(T);return B.w(F.date(F.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=(I={},I[o]=t,I[i]=r,I[a]=e,I)[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,I=this.$locale();if(!this.isValid())return I.invalidDate||v;var T=h||"YYYY-MM-DDTHH:mm:ssZ",O=B.z(this),M=this.$H,Y=this.$m,X=this.$M,ae=I.weekdays,F=I.months,qe=I.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")},b=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(I.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(I.weekdaysMin,_.$W,ae,2);case"ddd":return w(I.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 b(M,Y,!0);case"A":return b(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,_,I){var T,O=this,M=B.p(_),Y=W(h),X=(Y.utcOffset()-this.utcOffset())*t,ae=this-Y,F=function(){return B.m(O,Y)};switch(M){case m:T=F()/12;break;case f:T=F();break;case d:T=F()/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 I?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 I=this.clone(),T=ze(h,_,!0);return T&&(I.$L=T),I},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[Ie],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=Sr();function iM(e,t){return e&&oM(e,t,sM)}XA.exports=iM});var tb=u((xW,eb)=>{"use strict";var uM=or();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}}eb.exports=pM});var nb=u((OW,rb)=>{"use strict";var cM=ZA(),lM=tb(),dM=lM(cM);rb.exports=dM});var ob=u((TW,ab)=>{"use strict";var fM=nb();function gM(e,t,r,n){return fM(e,function(a,o,i){t(n,a,r(a),i)}),n}ab.exports=gM});var ib=u((PW,sb)=>{"use strict";var mM=JA(),yM=ob(),hM=Ri(),AM=de();function bM(e,t){return function(r,n){var a=AM(r)?mM:yM,o=t?t():{};return a(r,e,hM(n,2),o)}}sb.exports=bM});var pb=u((qW,ub)=>{"use strict";var IM=sn(),SM=ib(),wM=Object.prototype,vM=wM.hasOwnProperty,EM=SM(function(e,t,r){vM.call(e,r)?e[r].push(t):IM(e,r,[t])});ub.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:()=>Ia,quotas:()=>Ve,scimGroups:()=>_r,scimUsers:()=>ve,sdk:()=>Pi,users:()=>lt,utils:()=>er});module.exports=Db(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:()=>Ia,quotas:()=>Ve,scimGroups:()=>_r,scimUsers:()=>ve,users:()=>lt,utils:()=>er});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"),Tr,Bb=async()=>{Tr=await new Wa.redis.Client(Wa.redis.utils.Databases.LICENSES).init()},Nb=async()=>{Tr&&await Tr.finish()};process.on("exit",async()=>{await Nb()});var Va=async()=>(Tr||await Bb(),Tr);var At={};R(At,{activateLicenseKey:()=>io,getLicense:()=>Xt,triggerQuota:()=>EI});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"),Q=require("@budibase/backend-core");var Xe={};R(Xe,{bustCache:()=>ru,getCurrentUsageValues:()=>su,getQuotaUsage:()=>Tt,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,utils:()=>qr});var ye=require("@budibase/types"),le=require("@budibase/backend-core");var qr={};R(qr,{generateBaseQuotaUsage:()=>Dn,generateNewMonthlyQuotas:()=>Pr,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()]:Pr()}}),za=()=>{let e={_id:Ln.db.StaticDatabases.GLOBAL.docs.usageQuota,quotaReset:eu(),...Dn(),apps:{}};return Bn(e),e},Pr=()=>({[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]=Pr()),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 Gb=le.Duration.fromSeconds(60).toMs(),{Writethrough:kb}=le.cache.writethrough;function Fb(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 kb(le.tenancy.getGlobalDB(),Gb),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 Fb(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},Qb=(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]=Pr(),f=i.monthly[s]),f[c]=a.app,ye.BREAKDOWN_QUOTA_NAMES.includes(c)&&n?.id&&(f=Qb(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}},$b=(e,t,r)=>{t.usageQuota.triggers||(t.usageQuota.triggers={}),r&&(t.usageQuota.triggers[e]=r)},jb=(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,$b(t,e,n.triggers);else if(r===ye.QuotaUsageType.MONTHLY){t=t;let o=mt();e.monthly[o][t]=n.total,jb(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:()=>Kb,get:()=>eo,save:()=>Vb});var yt=require("@budibase/backend-core"),Wb=()=>({_id:yt.StaticDatabases.GLOBAL.docs.licenseInfo}),Vb=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 Wb();throw t}},Kb=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:()=>oI,destroy:()=>sI,fetch:()=>tI,generateUserGroupID:()=>Zb,get:()=>rI,getBulk:()=>nI,getByName:()=>to,getGroupUsers:()=>Gn,getGroupUsersParams:()=>lu,getUserGroupsParams:()=>cu,save:()=>aI});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:Yb,SEPARATOR:Hb,DocumentType:zb,createView:Jb}=Mn.db,Xb=zb.USER+Hb;async function uu(){let e=Mn.tenancy.getGlobalDB(),t=`function(doc) {
|
|
4
|
-
if (doc._id.startsWith("${
|
|
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("${JI}") && 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 zI(e,t,KI.USER_BY_GROUP)}var pu=`${G.DocumentType.GROUP}${G.SEPARATOR}`;function cu(e,t={}){e||(e="");let r=e?.startsWith(G.DocumentType.GROUP)?"":pu;return{...t,startkey:`${r}${e}`,endkey:`${r}${e}${G.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}${G.UNICODE_MAX}`}:{...t,startkey:`g_${e}`,endkey:`g_${e}${G.UNICODE_MAX}`,startkey_docid:n}}function XI(){return`${pu}${G.utils.newid()}`}async function Gn(e,t){let r=G.tenancy.getGlobalDB();return(await G.db.queryView(G.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 ZI(e){let r=(await qr(e)).users?.map(o=>o._id),n=await G.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 G.users.bulkUpdateGlobalUsers(a)}async function eb(){let t=(await G.tenancy.getGlobalDB().allDocs(cu(null,{include_docs:!0}))).rows.map(n=>n.doc),r=[];for(let n of t)r.push(qr(n));return await Promise.all(r)}async function tb(e){let r=await G.tenancy.getGlobalDB().get(e);return await qr(r)}async function rb(e,t={enriched:!0}){let n=await G.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 nb(e){return await G.tenancy.getGlobalDB().put(e)}async function ab(e){return await G.tenancy.getGlobalDB().bulkDocs(e)}async function ob(e,t){let r=G.tenancy.getGlobalDB(),n=await r.get(e),a=await r.remove(e,t);return await ZI(n),a}async function to(e){let t=await G.db.directCouchFind(G.tenancy.getGlobalDBName(),{selector:{name:{$regex:`^(?i)${e}$`}},limit:1}),[r]=t.rows;if(r)return await qr(r)}var Le={};R(Le,{deleteAppBackupMetadata:()=>Ib,fetchAppBackups:()=>yb,generateAppBackupID:()=>_u,getAppBackupMetadata:()=>bb,oldestBackupDate:()=>vu,storeAppBackupMetadata:()=>hb,updateAppBackupMetadata:()=>Ab});var z=require("@budibase/backend-core"),wu=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:fu,AutomationViewMode:ro,SEPARATOR:Ze,DocumentType:gu,createView:mu}=Ht.db,sb=gu.AUTOMATION_LOG+Ze,du=gu.APP_BACKUP+Ze;async function yu(){let e=Ht.context.getProdAppDB(),t=`function(doc) {
|
|
11
|
+
if (doc._id.startsWith("${sb}")) {
|
|
12
12
|
let autoId = doc.automationId + "${Ze}"
|
|
13
13
|
let status = doc.status + "${Ze}"
|
|
14
14
|
let autoKey = "${ro.AUTOMATION}${Ze}" + autoId + doc.createdAt
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
full += doc.type.toLowerCase() + "${Ze}"
|
|
26
26
|
emit("${du}" + full + doc.timestamp)
|
|
27
27
|
}
|
|
28
|
-
}`;await mu(e,t,fu.APP_BACKUP_BY_TRIGGER)}var Su=require("@budibase/types");var Vr={};R(Vr,{GENERIC_PAGE_SIZE:()=>et,auditLogs:()=>
|
|
28
|
+
}`;await mu(e,t,fu.APP_BACKUP_BY_TRIGGER)}var Su=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:()=>ub,SELF_FREE_LICENSE:()=>no,UNLIMITED:()=>te,UNLIMITED_LICENSE:()=>pb});var ht=require("@budibase/types");var ut={};R(ut,{UNLIMITED:()=>ib,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"),ib=-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,ub={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}},pb={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:()=>cb,getProVersion:()=>Iu});var Pt=require("@budibase/backend-core"),kn=N(require("fs")),Au=N(require("path")),cb=()=>{if(Pt.env.isDev()){let e="dev-version.txt",t=Au.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 Iu()},Iu=()=>{let e=Pt.env.VERSION;if(!e)throw new Error("No budibase pro version was specified");return e};var zt={};R(zt,{searchTable:()=>lb});var qt=require("@budibase/types"),bu=require("@budibase/backend-core");function lb(){return{type:"table",sourceType:qt.TableSourceType.INTERNAL,name:qt.AUDIT_LOG_TYPE,sourceId:bu.SQS_DATASOURCE_INTERNAL,primary:["_id"],schema:{metadata:{name:"metadata",type:qt.FieldType.JSON},fallback:{name:"fallback",type:qt.FieldType.JSON}}}}var et=9;var fb=new Date(864e13).toISOString(),gb=1e3*60*60*24;async function Fn(e){let r=(await Qe.getCachedLicense()).quotas?.[Su.QuotaType.CONSTANT]?.[e]?.value||0;return r===Ee.UNLIMITED?new Date(fb).toISOString():new Date(new Date().getTime()-gb*r).toISOString()}async function vu(){return Fn(wu.ConstantQuotaName.APP_BACKUPS_RETENTION_DAYS)}var ao=`${z.db.DocumentType.APP_BACKUP}${z.db.SEPARATOR}`;async function mb(e,t,r={}){let n=await vu(),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 Eu(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 hu(),Eu(e,t);throw r}}function _u(e,t){return`${ao}${e}${z.db.SEPARATOR}${t}`}async function yb(e,t={}){let r=z.tenancy.getGlobalDB(),n,a=t.limit||9,o=await mb(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 Eu(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 hb(e,t={}){let r=z.tenancy.getGlobalDB(),n=z.db.getProdAppID(e.appId),a=_u(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 Ab(e,t){let r=z.tenancy.getGlobalDB(),n=await r.get(e);return n.name=t,await r.put(n)}async function Ib(e){let t=z.tenancy.getGlobalDB(),r=await t.get(e);await t.remove(r._id,r._rev)}async function bb(e){return await z.tenancy.getGlobalDB().get(e)}var Ct={};R(Ct,{get:()=>wb,getCacheEnvVarID:()=>Ou,getEnvVarID:()=>Qn,update:()=>vb});var $e=require("@budibase/backend-core"),xu=N(require("lru-cache")),Sb=1e3,Ru=new xu.default({max:Sb});function Qn(){return $e.StaticDatabases.GLOBAL.docs.environmentVariables}function Ou(e){return`${$e.tenancy.getTenantId()}/${Qn()}/${e||""}`}async function wb(){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=Ru.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:{}},Ru.set(a,i),i}async function vb(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(k.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{}},Tu=async e=>{let t,r;if(k.env.SELF_HOSTED){if(t=await Ue.get(),!t.licenseKey)return;r={[k.constants.Header.LICENSE_KEY]:t.licenseKey}}else{let n=k.tenancy.getTenantId();r={[k.constants.Header.API_KEY]:k.env.ACCOUNT_PORTAL_API_KEY,[k.constants.Header.TENANT_ID]:n}}return e(r)},Pu=async()=>Tu(async e=>{let t=await Xe.getQuotaUsage();if(t.usageQuota.users==null){let s=await k.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 k.installation.getInstallFromDB(),n=k.tenancy.getTenantId(),a=await k.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 k.HTTPError(`Error getting license: ${c}`,s.status)}return s.json()}catch(s){if(k.env.DISABLE_ACCOUNT_PORTAL)return;throw s}});k.env.isJest()&&(Pu=jest.fn());var Jt=Pu,Eb=e=>Tu(async t=>{let r=await oo.post("/api/license/usage/triggered",{headers:{...t},body:e});if(r.status!==200){let n=await so(r);k.logging.logAlert(`Error triggering quota usage: ${n}`)}}),io=async e=>{let t=await k.installation.getInstall(),r={installVersion:t.version,installId:t.installId},n=await oo.post("/api/license/activate",{headers:{[k.constants.Header.LICENSE_KEY]:e},body:r});if(n.status===403)throw new k.HTTPError("Invalid license key",400);if(n.status!==200){let a=await so(n);throw new k.HTTPError(`Error activating license key: ${a}`,n.status)}return n.json()};var jo=require("@budibase/backend-core");var sa={};R(sa,{activateOfflineLicenseToken:()=>ux,deleteOfflineLicenseToken:()=>px,dev:()=>yn,enrichLicense:()=>Sd,getIdentifier:()=>ko,getIdentifierBase64:()=>cx,getIdentifierFromBase64:()=>lx,getOfflineLicense:()=>Fo,getOfflineLicenseToken:()=>Ad,signing:()=>Hr,verifyExpiry:()=>Id,verifyInstallation:()=>bd});var Hr={};R(Hr,{sign:()=>Rb,verifyLicenseToken:()=>Yr});var uo=N(require("jsonwebtoken")),_b=`-----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,_I,{algorithms:["RS256"]})}function RI(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 xI={[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]},OI={[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(xI);break;case l.Hosting.CLOUD:r=n(OI);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,TI={[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)}}},PI={[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(PI);break;case K.Hosting.CLOUD:r=n(TI);break}return JSON.parse(JSON.stringify(r))}var er={};R(er,{appExists:()=>qI,encoding:()=>Zt});var Cu=require("@budibase/backend-core");async function qI(e){return(await Cu.db.getAllApps({all:!0,idsOnly:!0})).includes(e)}var Zt={};R(Zt,{base64ToObject:()=>UI,objectToBase64:()=>CI});function CI(e){let t=JSON.stringify(e);return Buffer.from(t).toString("base64")}function UI(e){let t=Buffer.from(e,"base64").toString();return JSON.parse(t)}var md=require("@budibase/types"),fr=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 fr.installation.getInstall()).installId,r=fr.context.getTenantId(),n=await fr.events.identification.getUniqueTenantId(r);return{installId:t,tenantId:n}}async function cx(){let e=await ko();return Zt.objectToBase64(e)}function lx(e){return Zt.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 Id(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 bd(t),await Id(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 Xt();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:()=>bx,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 bx(){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:()=>hr,set:()=>es,setAllUsage:()=>Za,setAppUsageValue:()=>Xa,setUsage:()=>nu,setUsagePerApp:()=>au,updatePluginCount:()=>os,updateUsage:()=>gr,usageLimitIsExceeded:()=>Ux,utils:()=>qr});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 gr(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 gr(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={})=>gr({usageChange:-1,name:e,type:t,opts:r}),Mt=e=>{let t=Array.isArray(e)?e:[e];return gr(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},gr=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 gr({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 mr=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(mr.StaticQuotaName.APPS,mr.QuotaUsageType.STATIC,{fn:e,valueFn:Cd,id:t}),Dx=async({appId:e}={})=>je(mr.StaticQuotaName.APPS,mr.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 yr=require("@budibase/types"),ts=async e=>Oe(yr.StaticQuotaName.USER_GROUPS,yr.QuotaUsageType.STATIC,{fn:e}),rs=async()=>je(yr.StaticQuotaName.USER_GROUPS,yr.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"),bn=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:bn.users.getUserCount}}];t>0&&n.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getCreatorCount}});let a=await Nt(n);return await Xt(),a},hr=async(e,t)=>{let r=[{change:e,name:nt.StaticQuotaName.USERS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getUserCount}}];t>0&&r.push({change:t,name:nt.StaticQuotaName.CREATORS,type:nt.QuotaUsageType.STATIC,opts:{valueFn:bn.users.getCreatorCount}}),await Mt(r),await Xt()};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:()=>In,get:()=>kt,getBulk:()=>Gd,getGroupBuilderAppIds:()=>Md,getGroupRoleId:()=>jx,remove:()=>is,removeAppBuilder:()=>ds,removeUsers:()=>ps,save:()=>Ar,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 In(){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 Ar(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 hr(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=()=>hr(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 hr(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 Ar(r)}async function Vx(e){let t=await In(),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 Ar(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 Ar(n))}async function Kx(){if(!await Jo()){let e=q.tenancy.getGlobalDB(),r=(await In()||[]).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 hr(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:()=>Is});var Is={};R(Is,{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 Ur(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 Ur(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 bs(){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 bs(),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 bs()}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:()=>IO});var ba=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:Jt.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=Jt.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(),bO=En.constants.MAX_VALID_DATE.toISOString();function ws(e){return(e.startDate||e.endDate)&&(e.startDate=e.startDate||AO,e.endDate=e.endDate||bO),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 IO(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||ba.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(ba.AuditedEventFriendlyName).filter(r=>r[1]!=null),t={};for(let r of e)t[r[0]]=Es(r[1]);return t}var Ia={};R(Ia,{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"),be=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 be.AppBackupStatus.COMPLETE:case be.AppBackupStatus.FAILED:return{timestamp:t,finishedAt:t};case be.AppBackupStatus.STARTED:return{timestamp:t,startedAt:t};case be.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:be.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:be.AppBackupType.RESTORE,trigger:be.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:be.AppBackupStatus.PENDING,type:be.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,be.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:be.AppBackupStatus.PENDING,type:be.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 br=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=br.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}),br.default.existsSync(c)&&br.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),br.default.existsSync(d)&&br.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 _r={};R(_r,{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:()=>Ib,users:()=>_b});var Mi={};R(Mi,{LargeLanguageModel:()=>xr});var Jh=require("@budibase/backend-core"),Rt=require("@budibase/types"),Xh=require("@budibase/shared-core");var Di=N(require("openai"));function Rr(e){return`Summarize this text:
|
|
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:
|
|
39
39
|
${e}.
|
|
40
40
|
Only return the summary.`}function Wh(e,t){return`Return the category of this text: "${e}". Based on these categories: ${t.join(", ")}. Only return the category.`}function Vh(e){return`Clean the following string: "${e}". Remove any spelling mistakes or data issues. Only return the cleaned string itself and nothing else.`}function Kh(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 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(Rr(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(Rr(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 xr=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 Rr(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 xr.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 Ar(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 In()}}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 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 IA(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(),bA).patch("/api/env/variables/:varName",Wt.auth.builderOrAdmin,wA(),IA).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 Or(e,t){await er.appExists(t)||e.throw(400,`Provided app ID: ${t} - is invalid.`)}async function DA(e){let t=e.params.appId;await Or(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 Or(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 Or(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 Or(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 Or(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 Or(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 bb=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 cb=N(pb()),lb=require("@budibase/shared-core"),Fa=require("scim-patch");var Qa=require("scim2-parse-filter");function fb(e,t){for(let r of t.split(","))delete e[r]}var gb=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=>{fb(o,a)}),e.body={schemas:["urn:ietf:params:scim:api:messages:2.0:ListResponse"],totalResults:r.length,Resources:r,startIndex:1,itemsPerPage:r.length}},mb=async e=>{let t=ne.group.fromScimGroup(e.request.body),r=await _r.create(t);e.body=ne.group.toScimGroupResponse(r)},yb=async e=>{let{id:t}=e.params,r=await J.get(t),n=ne.group.toScimGroupResponse(r),{excludedAttributes:a}=e.request.query;a&&fb(n,a),e.body=n},hb=async e=>{let{id:t}=e.params,r=await J.get(t);await J.remove(t,r._rev),e.status=204},Ab=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,cb.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:lb.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 bb.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",gb);Pe.post("/groups",H.requireFeature(qn.Feature.USER_GROUPS),mb);Pe.get("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),Tn("id"),yb);Pe.delete("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),Tn("id"),hb);Pe.patch("/groups/:id",H.requireFeature(qn.Feature.USER_GROUPS),Tn("id"),Ab);var Ib=Pe;var vb=N(require("@koa/router"));var ji=require("@budibase/backend-core");async function Sb(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 wb(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"),Eb=new vb.default;Eb.post("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),Sb).delete("/api/global/users/:userId/app/:appId/builder",Vi.auth.builderOrAdmin,H.requireFeatures(Wi.Feature.APP_BUILDERS),wb);var _b=Eb;var ne={};R(ne,{group:()=>Hi,user:()=>Yi});var Yi={};R(Yi,{fromScimUser:()=>qM,toScimUserResponse:()=>OM,userFilters:()=>CM});var $a=require("@budibase/types"),Rb=require("scim2-parse-filter"),xb=require("@budibase/backend-core"),Ob=require("@budibase/shared-core"),{unreachable:xM}=Ob.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(xb.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,Rb.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});
|
|
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});
|
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.3",
|
|
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": "2983095231e843a4d78238f2c167b5e01f9a40d1"
|
|
75
75
|
}
|