UNPKG

mingo

Version:

MongoDB query language for in-memory objects

1 lines 87.4 kB
var mingo=(()=>{var Ge=Object.defineProperty;var go=Object.getOwnPropertyDescriptor;var ho=Object.getOwnPropertyNames;var jo=Object.prototype.hasOwnProperty;var yt=(t,e)=>{for(var n in e)Ge(t,n,{get:e[n],enumerable:!0})},$o=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ho(e))!jo.call(t,o)&&o!==n&&Ge(t,o,{get:()=>e[o],enumerable:!(r=go(e,o))||r.enumerable});return t};var Eo=t=>$o(Ge({},"__esModule",{value:!0}),t);var Up={};yt(Up,{Aggregator:()=>le,Context:()=>ct,ProcessingMode:()=>bt,Query:()=>me,aggregate:()=>yo,default:()=>Rp,find:()=>fo,update:()=>Oo,updateMany:()=>Ao,updateOne:()=>bo});var Ft=[];function Q(t,e){return t*16777619^e>>>0}function cn(t){if(Number.isNaN(t))return 2143289344;if(!Number.isFinite(t))return t>0?2139095040:4286578688;let e=Math.trunc(t),n=t-e,r=e|0;if(n!==0){let o=Math.floor(n*4294967296);r=Q(r,o|0)}return r>>>0}function St(t){let e=0;for(let n=0;n<t.length;n++)e=Q(e,t.charCodeAt(n));return e>>>0}function To(t){let e=0,n=t<0n,r=n?-t:t;if(r===0n)e=Q(e,0);else for(;r>0n;){let o=Number(r&0xffn);e=Q(e,o),r>>=8n}return Q(e,+n)>>>0}function Io(t){let e=St((t.name||"")+t.toString());return e=Q(e,t.length),e>>>0}function wo(t){let e=0;for(let n=0;n<t.length;n++)e=Q(e,t[n]);return e>>>0}function No(t){let e=St(t.constructor.name),n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);return e=Q(e,wo(n)),e>>>0}function Co(t,e){if(e.has(t))return 13;e.add(t);let n=1;for(let r=0;r<t.length;r++)n=Q(n,Xe(t[r],e));return e.delete(t),n>>>0}function So(t,e){if(e.has(t))return 13;if(e.add(t),Ft.length=0,Object.getPrototypeOf(t)===Object.prototype)for(let r in t)Ft.push(r);else{Array.prototype.push.apply(Ft,Object.keys(t));for(let r of Object.getOwnPropertyNames(Object.getPrototypeOf(t)))typeof t[r]!="function"&&Ft.push(r)}Ft.sort();let n=St(t?.constructor?.name);for(let r of Ft)n=Q(n,St(r)),n=Q(n,Xe(t[r],e));return e.delete(t),n>>>0}var ko=[3735928559,305441741].map(t=>Q(3,t)),Mo=Q(1,0),Do=Q(2,0);function Xe(t,e){if(t===null)return Mo;switch(typeof t){case"undefined":return Do;case"boolean":return ko[+t];case"number":return Q(4,cn(t));case"string":return Q(5,St(t));case"bigint":return Q(6,To(t));case"function":return Q(7,Io(t));default:{if(ArrayBuffer.isView(t)&&!(t instanceof DataView))return Q(12,No(t));if(t instanceof Date)return Q(10,cn(t.getTime()));if(t instanceof RegExp){let r=St(t.source);return Q(11,Q(r,St(t.flags)))}return Array.isArray(t)?Q(8,Co(t,e)):Q(9,So(t,e))}}}function ot(t){return Xe(t,new WeakSet)>>>0}var kt=class extends Error{},Bt=Symbol("missing"),_o="mingo: cycle detected while processing object/array",Wt=t=>typeof t!="object"&&typeof t!="function"||t===null,ln=t=>Wt(t)||v(t)||et(t),ye={undefined:1,null:2,number:3,string:4,symbol:5,object:6,array:7,arraybuffer:8,boolean:9,date:10,regexp:11,function:12},un=Object.keys(ye).length*2,At=(t,e)=>t<e?-1:t>e?1:0,vo=(t,e)=>{let n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength),r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),o=Math.min(n.length,r.length);for(let s=0;s<o;s++){let i=At(n[s],r[s]);if(i!==0)return i}return At(n.length,r.length)};function Ot(t,e,n=!1){let r=0;if(t===Bt&&(t=void 0),e===Bt&&(e=void 0),t===e||Object.is(t,e))return 0;let o=Je(t)?"arraybuffer":G(t),s=Je(e)?"arraybuffer":G(e);if(o!==s){if(o=="undefined")return-1;if(s=="undefined")return 1;if(n&&o=="array"&&!t.length)return-1;if(n&&s=="array"&&!e.length)return 1;if(n){if(O(t)){let a=t.slice().sort(Ot);r=1;for(let u of a)if((r=Math.min(r,Ot(u,e)))<0)return r;return r}else if(O(e)){let a=e.slice().sort(Ot);r=-1;for(let u of a)if((r=Math.max(r,Ot(t,u)))>0)return r;return r}}let i=ye[o]??un,p=ye[s]??un;if(i!==p)return At(i,p)}switch(o){case"number":case"string":return At(t,e);case"boolean":case"date":return At(+t,+e);case"regexp":return(r=At(t.source,e.source))||(r=At(t.flags,e.flags))?r:0;case"arraybuffer":return vo(t,e);case"array":{let i=t.slice().sort(Ot),p=e.slice().sort(Ot),a=Math.min(i.length,p.length);for(let u=0;u<a;u++)if(r=Ot(i[u],p[u]))return r;return At(i.length,p.length)}default:{if(o!=="object"){if(t?.constructor===e?.constructor&&fn(t))return At(t.toString(),e.toString());if(r=At(t?.constructor?.name,e?.constructor?.name))return r}let i=Object.keys(t).sort(),p=Object.keys(e).sort();if(r=Ot(i,p))return r;for(let a of i)if(r=Ot(t[a],e[a]))return r;return 0}}}function C(t,e){return Ot(t,e,!0)}var fn=t=>t!=null&&t.toString!==Object.prototype.toString;function L(t,e){if(t===e||Object.is(t,e))return!0;if(t===null||e===null||typeof t!=typeof e||typeof t!="object"||t.constructor!==e.constructor)return!1;if(v(t))return v(e)&&+t==+e;if(et(t))return et(e)&&t.source===e.source&&t.flags===e.flags;if(O(t)&&O(e))return t.length===e.length&&t.every((o,s)=>L(o,e[s]));if(t?.constructor!==Object&&fn(t))return t?.toString()===e?.toString();let n=Object.keys(t),r=Object.keys(e);return n.length!==r.length?!1:n.every(o=>R(e,o)&&L(t[o],e[o]))}var q=class t extends Map{#t=new Map;#e=e=>{let n=ot(e);return[(this.#t.get(n)||[]).find(r=>L(r,e)),n]};constructor(){super()}static init(){return new t}clear(){super.clear(),this.#t.clear()}delete(e){if(Wt(e))return super.delete(e);let[n,r]=this.#e(e);return super.delete(n)?(this.#t.set(r,this.#t.get(r).filter(o=>!L(o,n))),!0):!1}get(e){if(Wt(e))return super.get(e);let[n,r]=this.#e(e);return super.get(n)}has(e){if(Wt(e))return super.has(e);let[n,r]=this.#e(e);return super.has(n)}set(e,n){if(Wt(e))return super.set(e,n);let[r,o]=this.#e(e);if(super.has(r))super.set(r,n);else{super.set(e,n);let s=this.#t.get(o)||[];s.push(e),this.#t.set(o,s)}return this}get size(){return super.size}};function c(t,e){if(!t)throw new kt(e)}function G(t){if(t===null)return"null";let e=typeof t;return e!=="object"&&ye[e]?e:O(t)?"array":v(t)?"date":et(t)?"regexp":t?.constructor?.name?.toLowerCase()??"object"}var It=t=>typeof t=="boolean",j=t=>typeof t=="string";var b=t=>!isNaN(t)&&typeof t=="number",O=Array.isArray,$=t=>G(t)==="object",tr=t=>!Wt(t),v=t=>t instanceof Date,et=t=>t instanceof RegExp,er=t=>typeof t=="function",f=t=>t==null,Y=(t,e=!0)=>!!t||e&&t==="",nt=t=>f(t)||j(t)&&!t||O(t)&&t.length===0||$(t)&&Object.keys(t).length===0,rt=t=>O(t)?t:[t],R=(t,e)=>!!t&&Object.prototype.hasOwnProperty.call(t,e),Je=t=>typeof ArrayBuffer<"u"&&ArrayBuffer.isView(t),H=(t,e)=>{if(f(t)||It(t)||b(t)||j(t))return t;if(v(t))return new Date(t);if(et(t))return new RegExp(t);if(Je(t)){let n=t.constructor;return new n(t)}if(e instanceof Set||(e=new Set),e.has(t))throw new Error(_o);e.add(t);try{if(O(t)){let n=new Array(t.length);for(let r=0;r<t.length;r++)n[r]=H(t[r],e);return n}if($(t)){let n={};for(let r of Object.keys(t))n[r]=H(t[r],e);return n}}finally{e.delete(t)}return t};function gt(t){if(t.length===0)return[];if(t.some(n=>n.length===0))return[];if(t.length===1)return t[0].slice();let e=[q.init(),q.init()];t[t.length-1].forEach(n=>e[0].set(n,!0));for(let n=t.length-2;n>-1;n--){if(t[n].forEach(r=>{e[0].has(r)&&e[1].set(r,!0)}),e[1].size===0)return[];e.reverse(),e[1].clear()}return Array.from(e[0].keys())}function st(t,e=1){let n=new Array;function r(o,s){for(let i=0,p=o.length;i<p;i++)O(o[i])&&(s>0||s<0)?r(o[i],Math.max(-1,s-1)):n.push(o[i])}return r(t,e),n}function ht(t){let e=q.init();return t.forEach(n=>e.set(n,!0)),Array.from(e.keys())}function Mt(t,e){if(t.length<1)return new Map;let n=q.init();for(let r=0;r<t.length;r++){let o=t[r],s=e(o,r)??null,i=n.get(s);i?i.push(o):(i=[o],n.set(s,i))}return n}function Ze(t,e){return tr(t)?t[e]:void 0}function Po(t,e){if(e<1)return t;for(;e--&&t.length===1&&O(t[0]);)t=t[0];return t}function N(t,e,n){let r=0;function o(i,p){let a=i;for(let u=0;u<p.length;u++){let l=p[u];if(/^\d+$/.exec(l)===null&&O(a)){if(u===0&&r>0)break;r+=1;let A=p.slice(u);a=a.reduce((d,x)=>{let g=o(x,A);return g!==void 0&&d.push(g),d},[]);break}else a=Ze(a,l);if(a===void 0)break}return a}let s=ln(t)?t:o(t,e.split("."));return O(s)&&n?.unwrapArray?Po(s,r):s}function dt(t,e,n){let r=e.indexOf("."),o=r==-1?e:e.substring(0,r),s=e.substring(r+1),i=r!=-1;if(O(t)){let u=/^\d+$/.test(o),l=u&&n?.preserveIndex?t.slice():[];if(u){let y=parseInt(o),A=Ze(t,y);i&&(A=dt(A,s,n)),n?.preserveIndex?l[y]=A:l.push(A)}else for(let y of t){let A=dt(y,e,n);n?.preserveMissing?l.push(A??Bt):(A!=null||n?.preserveIndex)&&l.push(A)}return l}let p=n?.preserveKeys?{...t}:{},a=Ze(t,o);if(i&&(a=dt(a,s,n)),a!==void 0)return p[o]=a,p}function Oe(t){if(O(t))for(let e=t.length-1;e>=0;e--)t[e]===Bt?t.splice(e,1):Oe(t[e]);else if($(t))for(let e of Object.keys(t))R(t,e)&&Oe(t[e])}var mn=/^\d+$/;function Lt(t,e,n,r){let o=e.split("."),s=o[0],i=o.slice(1).join(".");if(o.length===1)($(t)||O(t)&&mn.test(s))&&n(t,s);else{r?.buildGraph&&f(t[s])&&(t[s]={});let p=t[s];if(!p)return;let a=!!(o.length>1&&mn.test(o[1]));O(p)&&r?.descendArray&&!a?p.forEach((u=>Lt(u,i,n,r))):Lt(p,i,n,r)}}function pt(t,e,n){Lt(t,e,(r,o)=>r[o]=n,{buildGraph:!0})}function Dt(t,e,n){Lt(t,e,((r,o)=>{O(r)?r.splice(parseInt(o),1):$(r)&&delete r[o]}),n)}var J=t=>t&&t[0]==="$"&&/^\$[a-zA-Z0-9_]+$/.test(t);function _t(t){if(ln(t))return et(t)?{$regex:t}:{$eq:t};if(tr(t)){if(!Object.keys(t).some(J))return{$eq:t};if(R(t,"$regex")){let e={...t};return e.$regex=new RegExp(t.$regex,t.$options),delete e.$options,e}}return t}function vt(t,e,n=C){let r=0,o=t.length-1;for(;r<=o;){let s=Math.round(r+(o-r)/2);if(n(e,t[s])<0)o=s-1;else if(n(e,t[s])>0)r=s+1;else return s}return r}var xt=class{constructor(){this.root={children:new Map,isTerminal:!1}}add(e){let n=e.split("."),r=this.root;for(let o of n){if(r.isTerminal)return!1;r.children.has(o)||r.children.set(o,{children:new Map,isTerminal:!1}),r=r.children.get(o)}return r.isTerminal||r.children.size?!1:r.isTerminal=!0}};var bt=(o=>(o[o.CLONE_OFF=0]="CLONE_OFF",o[o.CLONE_INPUT=1]="CLONE_INPUT",o[o.CLONE_OUTPUT=2]="CLONE_OUTPUT",o[o.CLONE_ALL=3]="CLONE_ALL",o))(bt||{}),I=class t{constructor(e,n){this.options=e;this.#t=n?{...n}:{}}#t;static init(e){return e instanceof t?new t(e.options,e.#t):new t({idKey:"_id",scriptEnabled:!0,useStrictMode:!0,processingMode:0,...e,context:e?.context?ct.from(e?.context):ct.init()})}update(e){return Object.assign(this.#t,e,{timestamp:this.#t.timestamp,variables:{...this.#t?.variables,...e?.variables}}),this}get local(){return this.#t}get now(){return this.#t?.timestamp||Object.assign(this.#t,{timestamp:Date.now()}),new Date(this.#t.timestamp)}get idKey(){return this.options.idKey}get collation(){return this.options?.collation}get processingMode(){return this.options?.processingMode}get useStrictMode(){return this.options?.useStrictMode}get scriptEnabled(){return this.options?.scriptEnabled}get collectionResolver(){return this.options?.collectionResolver}get jsonSchemaValidator(){return this.options?.jsonSchemaValidator}get variables(){return this.options?.variables}get context(){return this.options?.context}},wt=(i=>(i.ACCUMULATOR="accumulator",i.EXPRESSION="expression",i.PIPELINE="pipeline",i.PROJECTION="projection",i.QUERY="query",i.WINDOW="window",i))(wt||{}),ct=class t{#t=new Map(Object.values(wt).map(e=>[e,{}]));constructor(){}static init(e={}){let n=new t;for(let[r,o]of Object.entries(e))n.#t.has(r)&&o&&n.addOps(r,o);return n}static from(...e){let n=new t;for(let r of e)for(let o of Object.values(wt))n.addOps(o,r.#t.get(o));return n}addOps(e,n){return this.#t.set(e,Object.assign({},n,this.#t.get(e))),this}getOperator(e,n){return this.#t.get(e)[n]??null}addAccumulatorOps(e){return this.addOps("accumulator",e)}addExpressionOps(e){return this.addOps("expression",e)}addQueryOps(e){return this.addOps("query",e)}addPipelineOps(e){return this.addOps("pipeline",e)}addProjectionOps(e){return this.addOps("projection",e)}addWindowOps(e){return this.addOps("window",e)}};function m(t,e,n,r){let o=!(r instanceof I)||f(r.local.root)?I.init(r).update({root:t}):r;return J(n)?yn(t,e,n,o):Ae(t,e,o)}var Ro=["$$ROOT","$$CURRENT","$$REMOVE","$$NOW"];function Ae(t,e,n){if(j(e)&&e.length>0&&e[0]==="$"){if(e==="$$KEEP"||e==="$$PRUNE"||e==="$$DESCEND")return e;let r=n.local.root,o=e.split(".");if(Ro.includes(o[0])){switch(o[0]){case"$$ROOT":break;case"$$CURRENT":r=t;break;case"$$REMOVE":r=void 0;break;case"$$NOW":r=new Date(n.now);break}e=e.slice(o[0].length+1)}else if(o[0].slice(0,2)==="$$"){r=Object.assign({},n.variables,{this:t},n?.local?.variables);let s=o[0].slice(2);c(R(r,s),`Use of undefined variable: ${s}`),e=e.slice(2)}else e=e.slice(1);return e===""?r:N(r,e)}if(O(e))return e.map(r=>Ae(t,r,n));if($(e)){let r={},o=Object.entries(e);for(let[s,i]of o){if(J(s))return c(o.length===1,`Expression must contain a single operator. got [${Object.keys(e).join(",")}]`),yn(t,i,s,n);r[s]=Ae(t,i,n)}return r}return e}function yn(t,e,n,r){let o=r.context,s=o.getOperator("expression",n);if(s)return s(t,e,r);let i=o.getOperator("accumulator",n);return c(!!i,`accumulator '${n}' is not registered.`),O(t)||(t=Ae(t,e,r),e=null),c(O(t),`arguments must resolve to array for ${n}.`),i(t,e,r)}function S(t){return t instanceof zt?t:new zt(t)}function jt(...t){let e=0;return S(()=>{for(;e<t.length;){let n=t[e].next();if(!n.done)return n;e++}return{done:!0,value:void 0}})}function Uo(t){return!!t&&typeof t=="object"&&typeof t?.next=="function"}function Vo(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t[Symbol.iterator]=="function"}var zt=class{#t=[];#e=[];#r;#o=!1;constructor(e){let n=Vo(e)?e[Symbol.iterator]():Uo(e)?e:typeof e=="function"?{next:e}:null;c(!!n,"Iterator must be initialized with an iterable or function.");let r=-1,o={done:!1};this.#r=()=>{for(;!o.done&&(o=n.next(),!o.done);){let s=o.value;if(r++,this.#t.every(({op:p,fn:a})=>{let u=a(s,r);return p==="map"?!!(s=u)||!0:u}))return{value:s,done:!1}}return{done:!0}}}push(e,n){return this.#t.push({op:e,fn:n}),this}next(){return this.#r()}map(e){return this.push("map",e)}filter(e){return this.push("filter",e)}take(e){return c(e>=0,"value must be a non\u2011negative integer"),this.filter(n=>e-- >0)}drop(e){return c(e>=0,"value must be a non\u2011negative integer"),this.filter(n=>e--<=0)}transform(e){let n=this,r;return S(()=>(r||(r=S(e(n.collect()))),r.next()))}collect(){for(;!this.#o;){let{done:e,value:n}=this.#r();e||this.#e.push(n),this.#o=e}return this.#e}each(e){for(let n=this.next();n.done!==!0;n=this.next())e(n.value)}reduce(e,n){let r=this.next();for(n===void 0&&!r.done&&(n=r.value,r=this.next());!r.done;)n=e(n,r.value),r=this.next();return n}size(){return this.collect().length}[Symbol.iterator](){return this}};var ut=class{#t;#e;constructor(e,n){this.#t=e,this.#e=I.init(n)}stream(e,n){let r=S(e),o=n??this.#e,s=o.processingMode;return s&1&&r.map(i=>H(i)),r=this.#t.map((i,p)=>{let a=Object.keys(i);c(a.length===1,`aggregation stage must have single operator, got ${a.toString()}.`);let u=a[0];c(u!=="$documents"||p==0,"$documents must be first stage in pipeline.");let l=o.context.getOperator("pipeline",u);return c(!!l,`unregistered pipeline operator ${u}.`),[l,i[u]]}).reduce((i,[p,a])=>p(i,a,o),r),s&2&&r.map(i=>H(i)),r}run(e,n){return this.stream(e,n).collect()}};var pr={};yt(pr,{$accumulator:()=>Fo,$addToSet:()=>Wo,$avg:()=>Bo,$bottom:()=>Qo,$bottomN:()=>rr,$count:()=>Ko,$covariancePop:()=>Yo,$covarianceSamp:()=>qo,$first:()=>nr,$firstN:()=>xe,$last:()=>or,$lastN:()=>ge,$max:()=>Ho,$maxN:()=>he,$median:()=>sr,$mergeObjects:()=>ir,$min:()=>Go,$minN:()=>je,$percentile:()=>ee,$push:()=>T,$stdDevPop:()=>Xo,$stdDevSamp:()=>Jo,$sum:()=>Zo,$top:()=>ts,$topN:()=>ar});var T=(t,e,n)=>{if(f(e))return t;let r=I.init(n);return t.map(o=>m(o,e,null,r.update({root:o}))??null)};var Fo=(t,e,n)=>{c(!!n&&n.scriptEnabled,"$accumulator operator requires 'scriptEnabled' option to be true");let r=I.init(n),o=m(r?.local?.groupId,e.initArgs||[],null,r.update({root:r?.local?.groupId})),s=T(t,e.accumulateArgs,r);s.forEach(a=>a.forEach((u,l)=>a[l]=u??null));let i=e.init.apply(null,o),p=s.reduce((a,u)=>e.accumulate.apply(null,[a,...u]),i);return e.finalize?e.finalize.call(null,p):p};var Wo=(t,e,n)=>ht(T(t,e,n));var Bo=(t,e,n)=>{let r=T(t,e,n).filter(b);return r.length===0?null:r.reduce((s,i)=>s+i,0)/r.length};var Z=(t,e,n)=>{if(nt(e)||!$(e))return t;let r=C,o=n.collation;return $(o)&&j(o.locale)&&(r=zo(o)),t.transform(s=>{let i=Object.keys(e);for(let p of i.reverse()){let a=Mt(s,A=>N(A,p)),u=Array.from(a.keys()),l=!1;if(r===C){let A=!0,d=!0;l=u.every(x=>+(A&&=j(x))^+(d&&=b(x))),A?u.sort():d&&new Float64Array(u).sort().forEach((x,g)=>u[g]=x)}l||u.sort(r),e[p]===-1&&u.reverse();let y=0;for(let A of u)for(let d of a.get(A))s[y++]=d;c(y==s.length,"bug: counter must match collection size.")}return s})},Lo={1:"base",2:"accent",3:"variant"};function zo(t){let e={sensitivity:Lo[t.strength||3],caseFirst:t.caseFirst==="off"?"false":t.caseFirst||"false",numeric:t.numericOrdering||!1,ignorePunctuation:t.alternate==="shifted"};t.caseLevel===!0&&(e.sensitivity==="base"&&(e.sensitivity="case"),e.sensitivity==="accent"&&(e.sensitivity="variant"));let n=new Intl.Collator(t.locale,e);return(r,o)=>{if(!j(r)||!j(o))return C(r,o);let s=n.compare(r,o);return s<0?-1:s>0?1:0}}var rr=(t,e,n)=>{let r=n,o=m(r?.local?.groupId,e.n,null,r),s=Z(S(t),e.sortBy,n).collect(),i=s.length;return T(i<=o?s:s.slice(i-o),e.output,r)};var Qo=(t,e,n)=>rr(t,{...e,n:1},n);var Ko=(t,e,n)=>t.length;function be(t,e=!0){let n=t.reduce((s,i)=>s+i,0),r=Math.max(t.length,1),o=n/r;return Math.sqrt(t.reduce((s,i)=>s+Math.pow(i-o,2),0)/(r-Number(e)))}function de(t,e=!0){if(!t)return null;if(t.length<2)return e?null:0;let n=0,r=0;for(let[s,i]of t)n+=s,r+=i;n/=t.length,r/=t.length;let o=0;for(let[s,i]of t)o+=(s-n)*(i-r);return o/(t.length-Number(e))}var Yo=(t,e,n)=>de(T(t,e,n),!1);var qo=(t,e,n)=>de(T(t,e,n),!0);var nr=(t,e,n)=>{let r=t[0],o=I.init(n).update({root:r});return m(r,e,null,o)??null};var xe=(t,e,n)=>{let r=n,o=t.length,s=m(r?.local?.groupId,e.n,null,r);return c(s>0,"$firstN: 'n' must resolve to a positive integer."),T(o<=s?t:t.slice(0,s),e.input,n)};var or=(t,e,n)=>{let r=t[t.length-1],o=I.init(n).update({root:r});return m(r,e,null,o)??null};var ge=(t,e,n)=>{let r=n,o=t.length,s=m(r?.local?.groupId,e.n,null,r);return T(o<=s?t:t.slice(o-s),e.input,n)};var Ho=(t,e,n)=>{let r=T(t,e,n).filter(o=>!f(o));return r.length?r.reduce((o,s)=>C(o,s)>=0?o:s):null};var he=(t,e,n)=>{let r=n,o=t.length,s=m(r?.local?.groupId,e.n,null,r),i=T(t,e.input,n).filter(p=>!f(p));return i.sort((p,a)=>-1*C(p,a)),o<=s?i:i.slice(0,s)};var ee=(t,e,n)=>{let r=T(t,e.input,n).filter(b).sort(),o=T(e.p,"$$CURRENT",n).filter(b),s=e.method||"approximate";return o.map(i=>{c(i>0&&i<=1,`percentile value must be between 0 (exclusive) and 1 (inclusive): invalid '${i}'.`);let p=i*(r.length-1)+1,a=Math.floor(p),u=p===a?r[p-1]:r[a-1]+p%1*(r[a]-r[a-1]||0);switch(s){case"exact":return u;case"approximate":{let l=vt(r,u);return l/r.length>=i?r[Math.max(l-1,0)]:r[l]}}})};var sr=(t,e,n)=>ee(t,{...e,p:[.5]},n).pop();var ir=(t,e,n)=>{let r={};for(let o of t)if(!f(o))for(let s of Object.keys(o))o[s]!==void 0&&(r[s]=o[s]);return r};var Go=(t,e,n)=>{let r=T(t,e,n).filter(o=>!f(o));return r.length?r.reduce((o,s)=>C(o,s)<=0?o:s):null};var je=(t,e,n)=>{let r=n,o=t.length,s=m(r?.local?.groupId,e.n,null,r),i=T(t,e.input,n).filter(p=>!f(p));return i.sort(C),o<=s?i:i.slice(0,s)};var Xo=(t,e,n)=>be(T(t,e,n).filter(b),!1);var Jo=(t,e,n)=>be(T(t,e,n).filter(b),!0);var Zo=(t,e,n)=>b(e)?t.length*e:T(t,e,n).filter(b).reduce((o,s)=>o+s,0);var ar=(t,e,n)=>{let r=n,{n:o,sortBy:s}=m(r?.local?.groupId,e,null,r),i=Z(S(t),s,n).take(o).collect();return T(i,e.output,r)};var ts=(t,e,n)=>ar(t,{...e,n:1},n);var Wr={};yt(Wr,{$abs:()=>es,$acos:()=>sa,$acosh:()=>ia,$add:()=>rs,$allElementsTrue:()=>Ci,$and:()=>Tn,$anyElementTrue:()=>Si,$arrayElemAt:()=>ds,$arrayToObject:()=>xs,$asin:()=>aa,$asinh:()=>pa,$atan:()=>ca,$atan2:()=>ua,$atanh:()=>ma,$bitAnd:()=>Ys,$bitNot:()=>qs,$bitOr:()=>Hs,$bitXor:()=>Gs,$ceil:()=>ns,$cmp:()=>Nn,$concat:()=>Pi,$concatArrays:()=>gs,$cond:()=>Xs,$convert:()=>ja,$cos:()=>la,$cosh:()=>fa,$dateAdd:()=>Rt,$dateDiff:()=>si,$dateFromParts:()=>pi,$dateFromString:()=>fi,$dateSubtract:()=>yi,$dateToParts:()=>Oi,$dateToString:()=>Mr,$dateTrunc:()=>xi,$dayOfMonth:()=>hr,$dayOfWeek:()=>jr,$dayOfYear:()=>$r,$degreesToRadians:()=>Oa,$divide:()=>os,$eq:()=>Cn,$exp:()=>ss,$filter:()=>hs,$first:()=>js,$firstN:()=>$s,$floor:()=>is,$function:()=>br,$getField:()=>$i,$gt:()=>Sn,$gte:()=>kn,$hour:()=>Er,$ifNull:()=>Ar,$in:()=>Es,$indexOfArray:()=>Ts,$indexOfBytes:()=>Ri,$isArray:()=>Is,$isNumber:()=>$a,$isoDayOfWeek:()=>Tr,$isoWeek:()=>Ir,$isoWeekYear:()=>gi,$last:()=>ws,$lastN:()=>Ns,$let:()=>Ia,$literal:()=>hi,$ln:()=>as,$log:()=>ps,$log10:()=>cs,$lt:()=>Mn,$lte:()=>Dn,$ltrim:()=>Vi,$map:()=>Cs,$maxN:()=>Ss,$median:()=>ji,$mergeObjects:()=>Dr,$millisecond:()=>wr,$minN:()=>ks,$minute:()=>Nr,$mod:()=>us,$month:()=>Cr,$multiply:()=>ms,$ne:()=>_n,$nin:()=>Fs,$not:()=>In,$objectToArray:()=>Ii,$or:()=>wn,$percentile:()=>Ni,$pow:()=>ls,$radiansToDegrees:()=>ba,$rand:()=>Ei,$range:()=>Ws,$reduce:()=>Bs,$regexFind:()=>Fi,$regexFindAll:()=>Wi,$regexMatch:()=>Bi,$replaceAll:()=>Li,$replaceOne:()=>zi,$reverseArray:()=>Ls,$round:()=>fs,$rtrim:()=>Qi,$sampleRate:()=>Ti,$second:()=>Sr,$setDifference:()=>ki,$setEquals:()=>Mi,$setField:()=>_r,$setIntersection:()=>Di,$setIsSubset:()=>_i,$setUnion:()=>vi,$sigmoid:()=>ys,$sin:()=>da,$sinh:()=>xa,$size:()=>zs,$slice:()=>Or,$sortArray:()=>Qs,$split:()=>Ki,$sqrt:()=>Os,$strLenBytes:()=>qi,$strLenCP:()=>Hi,$strcasecmp:()=>Yi,$substr:()=>vr,$substrBytes:()=>Zi,$substrCP:()=>ta,$subtract:()=>As,$switch:()=>Js,$tan:()=>ga,$tanh:()=>ha,$toBool:()=>Pr,$toDate:()=>Rr,$toDecimal:()=>Ea,$toDouble:()=>ae,$toHashedIndexKey:()=>oa,$toInt:()=>Ur,$toLong:()=>Vr,$toLower:()=>ea,$toString:()=>Fr,$toUpper:()=>ra,$trim:()=>na,$trunc:()=>bs,$type:()=>Ta,$unsetField:()=>wi,$week:()=>kr,$year:()=>Be,$zip:()=>Ks});var es=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:Math.abs(r)};var rs=(t,e,n)=>{let r=m(t,e,null,n),o=!1,s=0;for(let i of r)v(i)&&(c(!o,"'$add' can only have one date value"),o=!0),s+=+i;return o?new Date(s):s};var ns=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r)||isNaN(r),"$ceil expression must resolve to a number."),Math.ceil(r))};var os=(t,e,n)=>{let r=m(t,e,null,n);return r[0]/r[1]};var ss=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r)||isNaN(r),"$exp expression must resolve to a number."),Math.exp(r))};var is=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r)||isNaN(r),"$floor expression must resolve to a number."),Math.floor(r))};var as=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r)||isNaN(r),"$ln expression must resolve to a number."),Math.log(r))};var ps=(t,e,n)=>{let r=m(t,e,null,n),o="$log expression must resolve to array(2) of numbers";return c(O(r)&&r.length===2,o),r.some(f)?null:(c(r.some(isNaN)||r.every(b),o),Math.log10(r[0])/Math.log10(r[1]))};var cs=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r)||isNaN(r),"$log10 expression must resolve to a number."),Math.log10(r))};var us=(t,e,n)=>{let r=m(t,e,null,n);return r[0]%r[1]};var ms=(t,e,n)=>m(t,e,null,n).reduce((o,s)=>o*s,1);var ls=(t,e,n)=>{let r=m(t,e,null,n);return c(O(r)&&r.length===2&&r.every(b),"$pow expression must resolve to array(2) of numbers"),c(!(r[0]===0&&r[1]<0),"$pow cannot raise 0 to a negative exponent"),Math.pow(r[0],r[1])};function $e(t,e=0,n=!1){let r=Math.abs(t)===t?1:-1;t=Math.abs(t);let o=Math.trunc(t),s=parseFloat((t-o).toFixed(Math.abs(e)+1));if(e===0){let i=Math.trunc(10*s);n&&((o&1)===1&&i>=5||i>5)&&o++}else if(e>0){let i=Math.pow(10,e),p=Math.trunc(s*i),a=Math.trunc(s*i*10)%10;n&&a>5&&(p+=1),o=(o*i+p)/i}else if(e<0){let i=Math.pow(10,-1*e),p=o%i;if(o=Math.max(0,o-p),n&&r===-1){for(;p>10;)p-=p/10;o>0&&p>=5&&(o+=i)}}return o*r}var fs=(t,e,n)=>{let r=m(t,e,null,n),o=r[0],s=r[1];return f(o)||isNaN(o)||Math.abs(o)===1/0?o:(c(b(o),"$round expression must resolve to a number."),$e(o,s,!0))};var On=1e10,ys=(t,e,n)=>{if(f(e))return null;let r=m(t,e,null,n),{input:o,onNull:s}=b(r)?{input:r}:r;if(f(o))return s??null;assert(b(o),`$sigmoid: expression must resolve to number: ${o}`);let i=1/(1+Math.exp(-o));return Math.round(i*On)/On};var Os=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r)&&r>0||isNaN(r),"$sqrt expression must resolve to non-negative number."),Math.sqrt(r))};var As=(t,e,n)=>{let r=m(t,e,null,n),o="$subtract: must resolve to array(2) of numbers/dates";c(O(r)&&r.length===2,o);let s=r.map(G).join("|");return s==="date|number"?new Date(+r[0]-+r[1]):(c(s==="date|date"||s==="number|number",o),+r[0]-+r[1])};var bs=(t,e,n)=>{let r=m(t,e,null,n),o=r[0],s=r[1];return f(o)||isNaN(o)||Math.abs(o)===1/0?o:(c(b(o),"$trunc expression must resolve to a number."),c(f(s)||b(s)&&s>-20&&s<100,"$trunc expression has invalid place"),$e(o,s,!1))};var ds=(t,e,n)=>{let r=m(t,e,null,n);if(c(O(r)&&r.length===2,"$arrayElemAt expression must resolve to array(2)"),r.some(f))return null;let o=r[1],s=r[0];if(o<0&&Math.abs(o)<=s.length)return s[(o+s.length)%s.length];if(o>=0&&o<s.length)return s[o]};var xs=(t,e,n)=>{let r=m(t,e,null,n);return c(O(r),"$arrayToObject: expression must resolve to an array"),r.reduce((o,s)=>{for(;O(s)&&s.length===1;)s=s[0];if(O(s)&&s.length==2)o[s[0]]=s[1];else{let i=s;c($(i)&&R(i,"k")&&R(i,"v"),"$arrayToObject expression is invalid."),o[i.k]=i.v}return o},{})};var gs=(t,e,n)=>{let r=m(t,e,null,n);c(O(r),"$concatArrays: input must resolve to an array");let o=0;for(let p of r){if(f(p))return null;o+=p.length}let s=new Array(o),i=0;for(let p of r)for(let a of p)s[i++]=a;return s};var hs=(t,e,n)=>{let r=m(t,e.input,null,n);if(f(r))return null;c(O(r),"$filter 'input' expression must resolve to an array");let o=I.init(n),s=e.as||"this",i={variables:{[s]:null}};return r.filter(p=>{i.variables[s]=p;let a=m(t,e.cond,null,o.update(i));return Y(a,n.useStrictMode)})};var js=(t,e,n)=>{if(O(t))return nr(t,e,n);let r=m(t,e,null,n);return f(r)?null:(c(O(r)&&r.length>0,"$first must resolve to a non-empty array."),st(r)[0])};var $s=(t,e,n)=>{if(O(t))return xe(t,e,n);let{input:r,n:o}=m(t,e,null,n);return f(r)?null:(c(O(r),"$firstN: 'input' must resolve to an array."),xe(r,{n:o,input:"$$this"},n))};var Es=(t,e,n)=>{let[r,o]=m(t,e,null,n);return c(O(o),"$in second argument must be an array"),o.some(s=>L(s,r))};var Ts=(t,e,n)=>{let r=m(t,e,null,n);if(f(r))return null;let o=r[0],s=r[1];if(f(o))return null;c(O(o),"$indexOfArray expression must resolve to an array.");let i=r[2]||0,p=r[3];if(f(p)&&(p=o.length),i>p)return-1;c(i>=0&&p>=0,"$indexOfArray expression is invalid"),(i>0||p<o.length)&&(o=o.slice(i,p));let a=-1;return o.some((u,l)=>{let y=L(u,s);return y&&(a=l),y}),a+i};var Is=(t,e,n)=>{let r=O(e);return c(!r||e.length===1,"$isArray takes exactly 1 argument."),O(m(t,r?e[0]:e,null,n))};var ws=(t,e,n)=>{if(O(t))return or(t,e,n);let r=m(t,e,null,n);return f(r)?null:(c(O(r)&&r.length>0,"$last must resolve to a non-empty array."),st(r)[r.length-1])};var Ns=(t,e,n)=>{if(O(t))return ge(t,e,n);let{input:r,n:o}=m(t,e,null,n);return f(r)?null:(c(O(r),"Must resolve to an array/null or missing"),ge(r,{n:o,input:"$$this"},n))};var Cs=(t,e,n)=>{let r=m(t,e.input,null,n);if(f(r))return null;c(O(r),"$map 'input' expression must resolve to an array");let o=I.init(n),s=e.as||"this",i={variables:{[s]:null}};return r.map(p=>(i.variables[s]=p,m(t,e.in,null,o.update(i))))};var Ss=(t,e,n)=>{if(O(t))return he(t,e,n);let{input:r,n:o}=m(t,e,null,n);return f(r)?null:(c(O(r),"Must resolve to an array/null or missing"),he(r,{n:o,input:"$$this"},n))};var ks=(t,e,n)=>{if(O(t))return je(t,e,n);let{input:r,n:o}=m(t,e,null,n);return f(r)?null:(c(O(r),"$minN: 'input' must resolve to an array."),je(r,{n:o,input:"$$this"},n))};var cr=(t,e,n)=>t.take(e);var ur=(t,e,n)=>{let r=m(null,e,null,n);c(O(r),"$documents: expression must resolve to an array.");let o=S(r);return n.processingMode&3?o.map(i=>H(i)):o};function Ee(t,e){let n=!!t&&t[0]?.$documents;return n?{documents:ur(null,n,e).collect(),pipeline:t.slice(1)}:{pipeline:t}}function mr(t,e,n=!0){let r={exclusions:[],inclusions:[],positional:0},o=Object.keys(t);assert(o.length,"Invalid empty sub-projection");let s=e?.idKey,i=!1;for(let p of o){if(p.startsWith("$"))return assert(!n&&o.length===1,`FieldPath field names may not start with '$', given '${p}'.`),r;p.endsWith(".$")&&r.positional++;let a=t[p];if(a===!1||b(a)&&a===0)p===s?i=!0:r.exclusions.push(p);else if(!$(a))r.inclusions.push(p);else{let u=mr(a,e,!1);!u.inclusions.length&&!u.exclusions.length?r.inclusions.includes(p)||r.inclusions.push(p):(u.inclusions.forEach(l=>r.inclusions.push(`${p}.${l}`)),u.exclusions.forEach(l=>r.exclusions.push(`${p}.${l}`))),r.positional+=u.positional}assert(!(r.exclusions.length&&r.inclusions.length),"Cannot do exclusion and inclusion in projection."),assert(r.positional<=1,"Cannot specify more than one positional projection.")}if(i&&r.exclusions.push(s),n){let p=new xt;r.exclusions.forEach(a=>assert(p.add(a),`Path collision at ${a}.`)),r.inclusions.forEach(a=>assert(p.add(a),`Path collision at ${a}.`)),r.exclusions.sort(),r.inclusions.sort()}return r}var Pt=(t,e,n)=>{if(nt(e))return t;let r=mr(e,n),o=Ms(e,I.init(n),r);return t.map(o)};function Ms(t,e,n){let r=e.idKey,{exclusions:o,inclusions:s}=n,i={},p={preserveMissing:!0};for(let A of o)i[A]=(d,x)=>{Dt(d,A,{descendArray:!0})};for(let A of s){let d=N(t,A)??t[A];if(A.endsWith(".$")&&d===1){let x=e?.local?.condition;c(x,"positional operator '.$' couldn't find matching element in the array.");let g=A.slice(0,-2);i[g]=vs(g,x,e);continue}if(O(d))i[A]=(x,g)=>{e.update({root:g});let h=d.map(E=>m(g,E,null,e)??null);pt(x,A,h)};else if(b(d)||d===!0)i[A]=(x,g)=>{e.update({root:g});let h=dt(g,A,p);bn(x,h)};else if($(d)==!1)i[A]=(x,g)=>{e.update({root:g});let h=m(g,d,null,e);pt(x,A,h)};else{let x=Object.keys(d);c(x.length===1&&J(x[0]),"Not a valid operator");let g=x[0],h=d[g],E=e.context.getOperator("projection",g);!E||g==="$slice"&&!rt(h).every(b)?i[A]=(k,z)=>{e.update({root:z});let w=m(z,h,g,e);pt(k,A,w)}:i[A]=(k,z)=>{e.update({root:z});let w=E(z,h,A,e);pt(k,A,w)}}}let a=o.length===1&&o.includes(r),u=!o.includes(r),l=!s.length,y=l&&a||l&&o.length&&!a;return A=>{let d={};y&&Object.assign(d,A);for(let x in i)i[x](d,A);return l||Oe(d),u&&!R(d,r)&&R(A,r)&&(d[r]=N(A,r)),d}}var An=(t,e,n,r)=>{let o=N(t,e);O(o)||(o=N(o,n)),c(O(o),"must resolve to array");let s=[];return o.forEach((i,p)=>r({[n]:[i]})&&s.push(p)),s},Ds=t=>e=>!t(e),_s={$and:1,$or:1,$nor:1};function vs(t,e,n){let r=Object.entries(e).slice(),o={$and:[],$or:[]};for(let a=0;a<r.length;a++){let[u,l,y]=r[a];if(u===t||u.startsWith(t+".")){let[A,d]=Object.entries(_t(l)).pop(),x=n.context.getOperator("query",A),g=u.substring(u.lastIndexOf(".")+1),h=x(g,d,n);!y||y==="$and"?o.$and.push([u,h,g]):y==="$nor"?o.$and.push([u,Ds(h),g]):y==="$or"&&o.$or.push([u,h,g])}else if(J(u)){c(_s[u],`${u} is not allowed in this context`);for(let A of l)Object.entries(A).forEach(([d,x])=>r.push([d,x,u]))}}let s=t.lastIndexOf("."),i=t.substring(0,s)||t,p=t.substring(s+1);return(a,u)=>{let l=[];for(let[d,x,g]of o.$and)l.push(An(u,d,g,x));if(o.$or.length){let d=[];for(let[x,g,h]of o.$or)d.push(...An(u,x,h,g));l.push(ht(d))}let y=gt(l).sort()[0],A=N(u,t)[y];i!=p&&!$(A)&&(A={[p]:A}),pt(a,i,[A])}}function bn(t,e){if(t===Bt||f(t))return e;if(f(e))return t;for(let n of Object.keys(e))t[n]=bn(t[n],e[n]);return t}var lr=(t,e,n)=>(assert(e>=0,"$skip value must be a non-negative integer"),t.drop(e));var Ps={$sort:Z,$skip:lr,$limit:cr},Te=class{#t;#e;#r;#o;#i={};#n=null;#s=[];constructor(e,n,r,o){this.#t=e,this.#e=n,this.#r=r,this.#o=o}fetch(){if(this.#n)return this.#n;this.#n=S(this.#t).filter(this.#e);let e=this.#o.processingMode;e&1&&this.#n.map(n=>H(n));for(let n of["$sort","$skip","$limit"])R(this.#i,n)&&(this.#n=Ps[n](this.#n,this.#i[n],this.#o));return Object.keys(this.#r).length&&(this.#n=Pt(this.#n,this.#r,this.#o)),e&2&&this.#n.map(n=>H(n)),this.#n}fetchAll(){let e=S(Array.from(this.#s));return this.#s.length=0,jt(e,this.fetch())}all(){return this.fetchAll().collect()}skip(e){return this.#i.$skip=e,this}limit(e){return this.#i.$limit=e,this}sort(e){return this.#i.$sort=e,this}collation(e){return this.#o={...this.#o,collation:e},this}next(){if(this.#s.length>0)return this.#s.pop();let e=this.fetch().next();if(!e.done)return e.value}hasNext(){if(this.#s.length>0)return!0;let e=this.fetch().next();return e.done?!1:(this.#s.push(e.value),!0)}[Symbol.iterator](){return this.fetchAll()}};var Rs=/^\$(and|or|nor|expr|jsonSchema)$/,K=class{#t;#e;#r;constructor(e,n){this.#e=H(e),this.#r=I.init(n).update({condition:e}),this.#t=[],this.compile()}compile(){c($(this.#e),`query criteria must be an object: ${JSON.stringify(this.#e)}`);let e={},n=Object.entries(this.#e);for(let[r,o]of n){if(r==="$where")c(this.#r.scriptEnabled,"$where operator requires 'scriptEnabled' option to be true."),Object.assign(e,{field:r,expr:o});else if(Rs.test(r))this.processOperator(r,r,o);else{c(!J(r),`unknown top level operator: ${r}`);for(let[s,i]of Object.entries(_t(o)))this.processOperator(r,s,i)}e.field&&this.processOperator(e.field,e.field,e.expr)}}processOperator(e,n,r){let o=this.#r.context.getOperator("query",n);c(!!o,`unknown query operator ${n}`),this.#t.push(o(e,r,this.#r))}test(e){return this.#t.every(n=>n(e))}find(e,n){return new Te(e,r=>this.test(r),n||{},this.#r)}};function P(t,e,n,r){let o={unwrapArray:!0},s=Math.max(1,t.split(".").length-1),i=I.init(n).update({depth:s});return p=>{let a=N(p,t,o);return r(a,e,i)}}function it(t,e,n,r){let[o,s]=m(t,e,null,n);return r(o,s,n)}function re(t,e,n){if(L(t,e)||f(t)&&f(e))return!0;if(O(t)){let r=n?.local?.depth??1;return t.some(o=>L(o,e))||st(t,r).some(o=>L(o,e))}return!1}function Ie(t,e,n){return!re(t,e,n)}function fr(t,e,n){return f(t)?e.some(r=>r===null):gt([rt(t),e]).length>0}function we(t,e,n){return!fr(t,e,n)}function Ne(t,e,n){return Me(t,e,(r,o)=>C(r,o)<0)}function Ce(t,e,n){return Me(t,e,(r,o)=>C(r,o)<=0)}function Se(t,e,n){return Me(t,e,(r,o)=>C(r,o)>0)}function ke(t,e,n){return Me(t,e,(r,o)=>C(r,o)>=0)}function gn(t,e,n){return rt(t).some((r=>e.length===2&&r%e[0]===e[1]))}function hn(t,e,n){let r=rt(t),o=s=>j(s)&&Y(e.exec(s),n?.useStrictMode);return r.some(o)||st(r,1).some(o)}function jn(t,e,n){if(!O(t)||!O(e)||!t.length||!e.length)return!1;let r=!0;for(let o of e){if(!r)break;$(o)&&Object.keys(o).includes("$elemMatch")?r=yr(t,o.$elemMatch,n):et(o)?r=t.some(s=>typeof s=="string"&&o.test(s)):r=t.some(s=>L(o,s))}return r}function $n(t,e,n){return Array.isArray(t)&&t.length===e}function Us(t){return J(t)&&["$and","$or","$nor"].indexOf(t)===-1}function yr(t,e,n){if(O(t)&&!nt(t)){let r=i=>i,o=e;Object.keys(e).every(Us)&&(o={temp:e},r=i=>({temp:i}));let s=new K(o,n);for(let i=0,p=t.length;i<p;i++)if(s.test(r(t[i])))return!0}return!1}var dn=t=>t===null,Vs={array:O,boolean:It,bool:It,date:v,number:b,int:b,long:b,double:b,decimal:b,null:dn,object:$,regexp:et,regex:et,string:j,undefined:f,1:b,2:j,3:$,4:O,6:f,8:It,9:v,10:dn,11:et,16:b,18:b,19:b};function xn(t,e,n){let r=Vs[e];return r?r(t):!1}function En(t,e,n){return O(e)?e.findIndex(r=>xn(t,r,n))>=0:xn(t,e,n)}function Me(t,e,n){return rt(t).some(r=>G(r)===G(e)&&n(r,e))}var Fs=(t,e,n)=>it(t,e,n,we);var Ws=(t,e,n)=>{let r=m(t,e,null,n),o=r[0],s=r[1],i=r[2]||1,p=new Array,a=o;for(;a<s&&i>0||a>s&&i<0;)p.push(a),a+=i;return p};var Bs=(t,e,n)=>{let r=m(t,e.input,null,n),o=m(t,e.initialValue,null,n),s=e.in;if(f(r))return null;c(O(r),"$reduce 'input' expression must resolve to an array");let i=I.init(n),p={variables:{value:null}};return r.reduce((a,u)=>(p.variables.value=a,m(u,s,null,i.update(p))),o)};var Ls=(t,e,n)=>{let r=m(t,e,null,n);if(f(r))return null;c(O(r),"$reverseArray expression must resolve to an array");let o=r.slice(0);return o.reverse(),o};var zs=(t,e,n)=>{let r=m(t,e,null,n);return O(r)?r.length:void 0};var Or=(t,e,n)=>{let r=m(t,e,null,n),o=r[0],s=r[1],i=r[2];return f(i)?s<0?s=Math.max(0,o.length+s):(i=s,s=0):(s<0&&(s=Math.max(0,o.length+s)),c(i>0,"Invalid argument for $slice operator. Limit must be a positive number"),i+=s),o.slice(s,i)};var Qs=(t,e,n)=>{let{input:r,sortBy:o}=m(t,e,null,n);if(f(r))return null;if(c(O(r),"$sortArray expression must resolve to an array"),$(o))return Z(S(r),o,n).collect();let s=r.slice();return s.sort(C),o===-1&&s.reverse(),s};var Ks=(t,e,n)=>{let r=m(t,e.inputs,null,n),o=e.useLongestLength||!1;if(f(r))return null;c(O(r),"'inputs' expression must resolve to an array"),c(It(o),"'useLongestLength' must be a boolean"),O(e.defaults)&&c(o,"'useLongestLength' must be set to true to use 'defaults'");let s=0;for(let a of r){if(f(a))return null;c(O(a),"'inputs' expression values must resolve to an array or null"),s=o?Math.max(s,a.length):Math.min(s||a.length,a.length)}let i=[],p=e.defaults||[];for(let a=0;a<s;a++){let u=r.map((l,y)=>f(l[a])?p[y]||null:l[a]);i.push(u)}return i};function Qt(t,e,n,r){c(O(e),"expression must be an array.");let o=m(t,e,null,n);return o.some(f)?null:(c(o.every(b),"expression must evalue to array of numbers."),r(o))}var Ys=(t,e,n)=>Qt(t,e,n,r=>r.reduce((o,s)=>o&s,-1));var qs=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(b(r),"$bitNot: expression must evaluate to a number."),~r)};var Hs=(t,e,n)=>Qt(t,e,n,r=>r.reduce((o,s)=>o|s,0));var Gs=(t,e,n)=>Qt(t,e,n,r=>r.reduce((o,s)=>o^s,0));var ne={};yt(ne,{$and:()=>Tn,$not:()=>In,$or:()=>wn});var Tn=(t,e,n)=>{let r=m(t,e,null,n);return Y(r,n.useStrictMode)&&r.every(o=>Y(o,n.useStrictMode))};var In=(t,e,n)=>{let r=rt(e);return r.length==0?!1:(c(r.length==1,"Expression $not takes exactly 1 argument"),!m(t,r[0],null,n))};var wn=(t,e,n)=>{let r=m(t,e,null,n),o=n.useStrictMode;return Y(r,o)&&r.some(s=>Y(s,o))};var oe={};yt(oe,{$cmp:()=>Nn,$eq:()=>Cn,$gt:()=>Sn,$gte:()=>kn,$lt:()=>Mn,$lte:()=>Dn,$ne:()=>_n});var Nn=(t,e,n)=>{let r=m(t,e,null,n);return c(O(r)&&r.length==2,"$cmp: expression must resolve to array of size 2."),C(r[0],r[1])};var Cn=(t,e,n)=>it(t,e,n,re);var Sn=(t,e,n)=>it(t,e,n,Se);var kn=(t,e,n)=>it(t,e,n,ke);var Mn=(t,e,n)=>it(t,e,n,Ne);var Dn=(t,e,n)=>it(t,e,n,Ce);var _n=(t,e,n)=>it(t,e,n,Ie);var Xs=(t,e,n)=>{let r,o,s,i="$cond: invalid arguments";O(e)?(c(e.length===3,i),r=e[0],o=e[1],s=e[2]):(c($(e),i),r=e.if,o=e.then,s=e.else);let p=Y(m(t,r,null,n),n.useStrictMode);return m(t,p?o:s,null,n)};var Ar=(t,e,n)=>{let r=m(t,e,null,n);return r.find(o=>!f(o))??r[r.length-1]};var Js=(t,e,n)=>{let r=null;return e.branches.some(o=>{let s=Y(m(t,o.case,null,n),n.useStrictMode);return s&&(r=o.then),s}),m(t,r!==null?r:e.default,null,n)};var br=(t,e,n)=>{c(n.scriptEnabled,"$function operator requires 'scriptEnabled' option to be true");let r=m(t,e,null,n);return r.body.apply(null,r.args)};var ie=["year","quarter","month","week","day","hour","minute","second","millisecond"],Zs={mon:1,tue:2,wed:3,thu:4,fri:5,sat:6,sun:7},ti=-1e9,Kt=7,dr=t=>(t&3)==0&&(t%100!=0||t%400==0);var ei=[365,366],ri=[[0,31,59,90,120,151,181,212,243,273,304,334],[0,31,60,91,121,152,182,213,244,274,305,335]],se=t=>ri[+dr(t.getUTCFullYear())][t.getUTCMonth()]+t.getUTCDate(),De=(t,e)=>{let n=t.getUTCDay()||7,r=e.toLowerCase().substring(0,3);return(n-Zs[r]+Kt)%Kt},vn=t=>(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,Pn=t=>52+ +(vn(t)==4||vn(t-1)==3);function Yt(t){let e=t.getUTCDay()||7,n=Math.floor((10+se(t)-e)/7);return n<1?Pn(t.getUTCFullYear()-1):n>Pn(t.getUTCFullYear())?1:n}function ve(t){return t.getUTCFullYear()-+(t.getUTCMonth()===0&&t.getUTCDate()==1&&t.getUTCDay()<1)}var Nt=60,ft={week:6048e5,day:864e5,hour:36e5,minute:6e4,second:1e3,millisecond:1},Pe="%Y-%m-%dT%H:%M:%S.%LZ",xr=[["year",0,9999],["month",1,12],["day",1,31],["hour",0,23],["minute",0,59],["second",0,59],["millisecond",0,999]],gr={jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},qt={"%b":{name:"abbr_month",padding:3,re:/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i},"%B":{name:"full_month",padding:0,re:/(January|February|March|April|May|June|July|August|September|October|November|December)/i},"%Y":{name:"year",padding:4,re:/([0-9]{4})/},"%G":{name:"year",padding:4,re:/([0-9]{4})/},"%m":{name:"month",padding:2,re:/(0[1-9]|1[012])/},"%d":{name:"day",padding:2,re:/(0[1-9]|[12][0-9]|3[01])/},"%j":{name:"day_of_year",padding:3,re:/(0[0-9][1-9]|[12][0-9]{2}|3[0-5][0-9]|36[0-6])/},"%H":{name:"hour",padding:2,re:/([01][0-9]|2[0-3])/},"%M":{name:"minute",padding:2,re:/([0-5][0-9])/},"%S":{name:"second",padding:2,re:/([0-5][0-9]|60)/},"%L":{name:"millisecond",padding:3,re:/([0-9]{3})/},"%w":{name:"day_of_week",padding:1,re:/([0-6])/},"%u":{name:"day_of_week_iso",padding:1,re:/([1-7])/},"%U":{name:"week_of_year",padding:2,re:/([1-4][0-9]?|5[0-3]?)/},"%V":{name:"week_of_year_iso",padding:2,re:/([1-4][0-9]?|5[0-3]?)/},"%z":{name:"timezone",padding:2,re:/(([+-][01][0-9]|2[0-3]):?([0-5][0-9])?)/},"%Z":{name:"minute_offset",padding:3,re:/([+-][0-9]{3})/},"%%":{name:"percent_literal",padding:1,re:/%%/}},Re=/(%[bBYGmdjHMSLwuUVzZ%])/g,Vn=/%[bBYGmdjHMSLwuUVzZ%]/,ni=/^[a-zA-Z_]+\/[a-zA-Z_]+$/;function at(t,e){if(f(t))return 0;if(ni.test(t)){let s=new Date(e.toLocaleString("en-US",{timeZone:"UTC"})),i=new Date(e.toLocaleString("en-US",{timeZone:t}));return Math.round((i.getTime()-s.getTime())/6e4)}let n=qt["%z"].re.exec(t);c(!!n,`timezone '${t}' is invalid or not supported.`);let r=parseInt(n[2])||0,o=parseInt(n[3])||0;return(Math.abs(r*Nt)+o)*(r<0?-1:1)}function Fn(t){return(t<0?"-":"+")+_e(Math.abs(Math.floor(t/Nt)),2)+_e(Math.abs(t)%Nt,2)}function mt(t,e){t.setUTCMinutes(t.getUTCMinutes()+e)}function U(t,e,n){if(v(t))return t;let r=m(t,e,null,n);if(v(r))return new Date(r);if(b(r))return new Date(r*1e3);c(!!r?.date,`cannot convert ${JSON.stringify(e)} to date`);let o=v(r.date)?new Date(r.date):new Date(r.date*1e3);return r.timezone&&mt(o,at(r.timezone,o)),o}function _e(t,e){return new Array(Math.max(e-String(t).length+1,0)).join("0")+t.toString()}var Rn=t=>{let e=t-ti;return Math.trunc(e/4)-Math.trunc(e/100)+Math.trunc(e/400)};function oi(t,e){return Math.trunc(Rn(e-1)-Rn(t-1)+(e-t)*ei[0])}var Ht=(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),Ue=(t,e)=>e.getUTCMonth()-t.getUTCMonth()+Ht(t,e)*12,Ve=(t,e)=>{let n=Math.trunc(t.getUTCMonth()/3);return Math.trunc(e.getUTCMonth()/3)-n+Ht(t,e)*4},Gt=(t,e)=>se(e)-se(t)+oi(t.getUTCFullYear(),e.getUTCFullYear()),Fe=(t,e,n)=>{let r=(n||"sun").substring(0,3);return Math.trunc((Gt(t,e)+De(t,r)-De(e,r))/Kt)},Wn=(t,e)=>e.getUTCHours()-t.getUTCHours()+Gt(t,e)*24,Un=(t,e)=>{let n=t.getUTCMonth()+e,r=Math.floor(n/12);if(n<0){let o=n%12+12;t.setUTCFullYear(t.getUTCFullYear()+r,o,t.getUTCDate())}else t.setUTCFullYear(t.getUTCFullYear()+r,n%12,t.getUTCDate())},We=(t,e,n,r)=>{let o=new Date(t);switch(e){case"year":o.setUTCFullYear(o.getUTCFullYear()+n);break;case"quarter":Un(o,3*n);break;case"month":Un(o,n);break;default:o.setTime(o.getTime()+ft[e]*n)}return o};var Rt=(t,e,n)=>{let r=m(t,e,null,n);return We(r.startDate,r.unit,r.amount,r.timezone)};var si=(t,e,n)=>{let{startDate:r,endDate:o,unit:s,timezone:i,startOfWeek:p}=m(t,e,null,n),a=new Date(r),u=new Date(o);switch(mt(a,at(i,a)),mt(u,at(i,u)),s){case"year":return Ht(a,u);case"quarter":return Ve(a,u);case"month":return Ue(a,u);case"week":return Fe(a,u,p);case"day":return Gt(a,u);case"hour":return Wn(a,u);case"minute":return a.setUTCSeconds(0),a.setUTCMilliseconds(0),u.setUTCSeconds(0),u.setUTCMilliseconds(0),Math.round((u.getTime()-a.getTime())/ft[s]);default:return Math.round((u.getTime()-a.getTime())/ft[s])}};var ii=[31,28,31,30,31,30,31,31,30,31,30,31],ai=t=>t.month==2&&dr(t.year)?29:ii[t.month-1],pi=(t,e,n)=>{let r=m(t,e,null,n),o=at(r.timezone,new Date);for(let s=xr.length-1,i=0;s>=0;s--){let p=xr[s],a=p[0],u=p[1],l=p[2],y=(r[a]||0)+i;i=0;let A=l+1;if(a=="hour"&&(y+=Math.floor(o/Nt)*-1),a=="minute"&&(y+=o%Nt*-1),y<u){let d=u-y;i=-1*Math.ceil(d/A),y=A-d%A}else y>l&&(y+=u,i=Math.trunc(y/A),y%=A);r[a]=y}return r.day=Math.min(r.day,ai(r)),new Date(Date.UTC(r.year,r.month-1,r.day,r.hour,r.minute,r.second,r.millisecond))};function ci(t){return t==="Z"?0:t>="A"&&t<"N"?t.charCodeAt(0)-64:77-t.charCodeAt(0)}var ui=t=>t.replace(/^\//,"").replace(/\/$/,"").replace(/\/i/,""),mi=["^",".","-","*","?","$"];function li(t){return mi.forEach(e=>{t=t.replace(e,`\\${e}`)}),t}var fi=(t,e,n)=>{let r=m(t,e,null,n);r.format=r.format||Pe,r.onNull=r.onNull||null;let o=r.dateString;if(f(o))return r.onNull;let s=r.format.split(Vn);s.reverse();let i=r.format.match(Re),p={},a="";for(let A=0,d=i.length;A<d;A++){let x=i[A],g=qt[x];if($(g)){let h=g.re.exec(o),E=s.pop()||"";h!==null?(p[g.name]=/^\d+$/.exec(h[0])?parseInt(h[0]):h[0],o=o.substring(h.index+h[0].length+1),a+=li(E)+ui(g.re.toString())):p[g.name]=null}}if(f(p.month)){let A=(p.full_month?.slice(0,3)??p.abbr_month??"").toLowerCase();gr[A]&&(p.month=gr[A])}if(f(p.year)||f(p.month)||f(p.day)||!new RegExp("^"+a+"[A-Z]?$").test(r.dateString))return r.onError;let u=r.dateString.match(/([A-Z])$/);c(!(u&&r.timezone),`$dateFromString: you cannot pass in a date/time string with time zone information ('${u&&u[0]}') together with a timezone argument`);let l=u?ci(u[0])*Nt:at(r.timezone,new Date),y=new Date(Date.UTC(p.year,p.month-1,p.day,0,0,0));return f(p.hour)||y.setUTCHours(p.hour),f(p.minute)||y.setUTCMinutes(p.minute),f(p.second)||y.setUTCSeconds(p.second),f(p.millisecond)||y.setUTCMilliseconds(p.millisecond),mt(y,-l),y};var yi=(t,e,n)=>{let r=m(t,e?.amount,null,n);return Rt(t,{...e,amount:-1*r},n)};var Oi=(t,e,n)=>{let r=m(t,e,null,n),o=new Date(r.date);mt(o,at(r.timezone,o));let s={hour:o.getUTCHours(),minute:o.getUTCMinutes(),second:o.getUTCSeconds(),millisecond:o.getUTCMilliseconds()};return r.iso8601==!0?Object.assign(s,{isoWeekYear:ve(o),isoWeek:Yt(o),isoDayOfWeek:o.getUTCDay()||7}):Object.assign(s,{year:o.getUTCFullYear(),month:o.getUTCMonth()+1,day:o.getUTCDate()})};var hr=(t,e,n)=>U(t,e,n).getUTCDate();var jr=(t,e,n)=>U(t,e,n).getUTCDay()+1;var $r=(t,e,n)=>se(U(t,e,n));var Er=(t,e,n)=>U(t,e,n).getUTCHours();var Tr=(t,e,n)=>U(t,e,n).getUTCDay()||7;var Ir=(t,e,n)=>Yt(U(t,e,n));var wr=(t,e,n)=>U(t,e,n).getUTCMilliseconds();var Nr=(t,e,n)=>U(t,e,n).getUTCMinutes();var Cr=(t,e,n)=>U(t,e,n).getUTCMonth()+1;var Sr=(t,e,n)=>U(t,e,n).getUTCSeconds();var kr=(t,e,n)=>{let r=U(t,e,n),o=Yt(r);return r.getUTCDay()>0&&r.getUTCDate()==1&&r.getUTCMonth()==0?0:r.getUTCDay()==0?o+1:o};var Be=(t,e,n)=>U(t,e,n).getUTCFullYear();var Ai={"%Y":Be,"%G":Be,"%m":Cr,"%d":hr,"%H":Er,"%M":Nr,"%S":Sr,"%L":wr,"%u":Tr,"%U":kr,"%V":Ir,"%j":$r,"%w":(t,e,n)=>jr(t,e,n)-1},Mr=(t,e,n)=>{let r=m(t,e,null,n);if(f(r.onNull)&&(r.onNull=null),f(r.date))return r.onNull;let o=U(t,r.date,n),s=r.format||Pe,i=at(r.timezone,o),p=s.match(Re);mt(o,i);for(let a=0,u=p.length;a<u;a++){let l=p[a];c(l in qt,`$dateToString: invalid format specifier ${l}`);let{name:y,padding:A}=qt[l],d=Ai[l],x;if(d)x=_e(d(t,o,n),A);else switch(y){case"timezone":x=Fn(i);break;case"minute_offset":x=i.toString();break;case"abbr_month":case"full_month":{let g=y.startsWith("abbr")?"short":"long";x=o.toLocaleString("en-US",{month:g});break}}s=s.replace(l,x)}return s};var Bn=9466848e5,Ln=(t,e)=>{let n=t%e;return n<0&&(n+=e),n},bi={day:Gt,month:Ue,quarter:Ve,year:Ht},di=/(mon(day)?|tue(sday)?|wed(nesday)?|thu(rsday)?|fri(day)?|sat(urday)?|sun(day)?)/i,xi=(t,e,n)=>{let{date:r,unit:o,binSize:s,timezone:i,startOfWeek:p}=m(t,e,null,n);if(f(r)||f(o))return null;let a=(p??"sun").toLowerCase().substring(0,3);c(v(r),"$dateTrunc: 'date' must resolve to a valid Date object."),c(ie.includes(o),"$dateTrunc: unit is invalid."),c(o!="week"||di.test(a),`$dateTrunc: startOfWeek '${a}' is not a valid.`),c(f(s)||s>0,"$dateTrunc requires 'binSize' to be greater than 0, but got value 0.");let u=s??1;switch(o){case"millisecond":case"second":case"minute":case"hour":{let l=u*ft[o],y=r.getTime()-Bn;return new Date(r.getTime()-Ln(y,l))}default:{c(u<=1e11,"dateTrunc unsupported binSize value");let l=new Date(r),y=new Date(Bn),A=0;if(o=="week"){let h=De(y,a),E=(Kt-h)%Kt;y.setTime(y.getTime()+E*ft.day),A=Fe(y,l,a)}else A=bi[o](y,l);let d=A-Ln(A,u),x=We(y,o,d,i),g=at(i,x);return mt(x,-g),x}}};var gi=(t,e,n)=>ve(U(t,e,n));var hi=(t,e,n)=>e;var ji=(t,e,n)=>{let r=m(t,e.input,null,n);return sr(r,{input:"$$CURRENT"},n)};var $i=(t,e,n)=>{let r=m(t,e,null,n),[o,s]=$(r)?[r.field,r.input||t]:[r,t];return f(s)?null:(c($(s),"$getField expression 'input' must evaluate to an object"),c(j(o),"$getField expression 'field' must evaluate to a string"),s[o])};var Ei=(t,e,n)=>Math.random();var Ti=(t,e,n)=>Math.random()<=m(t,e,null,n);var Dr=(t,e,n)=>{let r=m(t,e,null,n)??[];return ir(r,e,n)};var Ii=(t,e,n)=>{let r=m(t,e,null,n);if(f(r))return null;c($(r),`$objectToArray requires a document input, found: ${G(r)}`);let o=Object.entries(r),s=new Array(o.length),i=0;for(let[p,a]of o)s[i++]={k:p,v:a};return s};var _r=(t,e,n)=>{let{input:r,field:o,value:s}=m(t,e,null,n);if(f(r))return null;c($(r),"$setField expression 'input' must evaluate to an object"),c(j(o),"$setField expression 'field' must evaluate to a string");let i={...r};return e.value=="$$REMOVE"?delete i[o]:i[o]=s,i};var wi=(t,e,n)=>_r(t,{...e,value:"$$REMOVE"},n);var Ni=(t,e,n)=>{let r=m(t,e.input,null,n);return ee(r,{...e,input:"$$CURRENT"},n)};var Ci=(t,e,n)=>m(t,e,null,n)[0].every(o=>Y(o,n.useStrictMode));var Si=(t,e,n)=>m(t,e,null,n)[0].some(o=>Y(o,n.useStrictMode));var ki=(t,e,n)=>{let r=m(t,e,null,n);if(f(r)||(c(O(r),"$setDifference must be an arrays."),r.some(f)))return null;c(r.length==2,"$setDifference takes exactly 2 arguments."),c(r.every(O),"$setDifference operands must be arrays.");let o=q.init();return r[0].forEach(s=>o.set(s,!0)),r[1].forEach(s=>o.delete(s)),Array.from(o.keys())};var Mi=(t,e,n)=>{let r=m(t,e,null,n);c(O(r)&&r.every(O),"$setEquals operands must be arrays.");let o=q.init();r[0].every((s,i)=>o.set(s,i));for(let s=1;s<r.length;s++){let i=r[s],p=new Set;for(let a=0;a<i.length;a++){let u=o.get(i[a])??-1;if(u===-1)return!1;p.add(u)}if(p.size!==o.size)return!1}return!0};var Di=(t,e,n)=>{let r=m(t,e,null,n);return f(r)?null:(c(O(r)&&r.every(O),"$setIntersection operands must be arrays."),gt(r))};var _i=(t,e,n)=>{let r=m(t,e,null,n);c(O(r)&&r.every(O),"$setIsSubset operands must be arrays.");let o=r[0],s=r[1],i=q.init(),p=new Set;o.every((a,u)=>i.set(a,u));for(let a of s)if(p.add(i