@malloydata/render 0.0.197-dev241009193540 → 0.0.197-dev241009205116

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.
@@ -1318,7 +1318,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1318
1318
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof ru)yield n;else for(const r of n)yield r}}varInfo(){let e="";for(const[n,r]of Object.entries(this))n!=="elementType"&&(typeof r=="boolean"?e+=r?` ${n}`:` !${n}`:(typeof r=="string"||typeof r=="number")&&(e+=` ${n}=${r}`));return e}internalError(e){return new Error(`INTERNAL ERROR IN TRANSLATION: ${e}`)}needs(e){for(const n of this.walk()){const r=n.needs(e);if(r)return r}}inExperiment(e,n=!1){var r;const i=(r=this.translator())===null||r===void 0?void 0:r.compilerFlags.tag("experimental");return i&&(i.bare()||i.has(e))?!0:(n||this.logError("experiment-not-enabled",{experimentId:e}),!1)}}We.MalloyElement=ru;class Kpe extends ru{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=Kpe;class GR extends ru{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}We.ModelEntryReference=GR;class Zpe extends ru{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=Zpe;function zU(t){return t.execute!==void 0}We.isDocStatement=zU;function e1e(t){return t instanceof s1||zU(t)}We.isDocStatementOrDocStatementList=e1e;class QU extends ru{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}We.ListOf=QU;class s1 extends QU{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=HU.extendNoteMethod,this.noteCursor=0}executeList(e){for(;this.execCursor<this.elements.length;){const n=this.elements[this.execCursor];if(this.noteCursor===this.execCursor&&(this.note&&(0,HU.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof s1){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}We.DocStatementList=s1;const t1e="5a79a191-06bc-43cf-9b12-58741cd82970";function GU(t){const e=t.inherits?GU(t.inherits):[];return t.blockNotes&&e.push(...t.blockNotes.map(n=>n.text)),t.notes&&e.push(...t.notes.map(n=>n.text)),e}function n1e(t){const e=GU(t).join("");return(0,Xpe.v5)(e,t1e)}class WR extends ru{constructor(e){super(),this.elementType="document",this.globalNameSpace=new Jpe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new Gpe.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new s1(e),this.has({statements:e})}initModelDef(e){if(!this.didInitModel){if(this.documentModel={},this.queryList=[],this.sqlBlocks=[],e){e.annotation&&(this.annotation.inherits=e.annotation);for(const[n,r]of Object.entries(e.contents)){const i=structuredClone(r);if((0,CA.modelObjIsSource)(i)||i.type==="query"||i.type==="function"){const s=e.exports.includes(n);this.setEntry(n,{entry:i,exported:s})}}}this.didInitModel=!0}}compile(){const e=this.statements.executeList(this),n=this.modelDef();if(e===void 0){for(const i of this.queryList)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation);for(const i of this.sqlBlocks)i.modelAnnotation===void 0&&n.annotation&&(i.modelAnnotation=n.annotation)}if(n.annotation)for(const i of this.modelAnnotationTodoList)i.modelAnnotation||(i.modelAnnotation=n.annotation);return{modelDef:n,queryList:this.queryList,sqlBlocks:this.sqlBlocks,needs:e}}rememberToAddModelAnnotations(e){this.modelAnnotationTodoList.push(e)}hasAnnotation(){return this.annotation.notes&&this.annotation.notes.length>0||this.annotation.inherits!==void 0}currentModelAnnotation(){if(this.hasAnnotation()){const e={...this.annotation,id:""};return e.id=n1e(e),e}}modelDef(){const e={name:"",exports:[],contents:{}};this.hasAnnotation()&&(e.annotation=this.currentModelAnnotation());for(const n in this.documentModel){const r=this.documentModel[n].entry;if((0,CA.modelObjIsSource)(r)||r.type==="query"){this.documentModel[n].exported&&e.exports.push(n);const i=structuredClone(r);i.modelAnnotation===void 0&&e.annotation&&(i.modelAnnotation=e.annotation),e.contents[n]=i}}return e}defineSQL(e,n){const r={...e,as:`$${this.sqlBlocks.length}`};if(n){if(this.getEntry(n))return!1;r.as=n,this.setEntry(n,{entry:r})}return this.sqlBlocks.push(r),!0}getEntry(e){var n;return(n=this.globalNameSpace.getEntry(e))!==null&&n!==void 0?n:this.documentModel[e]}setEntry(e,n){this.globalNameSpace.getEntry(e)!==void 0&&this.logError("name-conflict-with-global",`Cannot redefine '${e}', which is in global namespace`),(0,CA.modelObjIsSource)(n.entry)&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,qU.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.logError("experimental-dialect-not-enabled",{dialect:n})}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,qU.getDialect)(e),r=new Ype.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}We.Document=WR;var TA={},Xx={},wr={},Rl={};Object.defineProperty(Rl,"__esModule",{value:!0}),Rl.canMakeEntry=Rl.SpaceEntry=void 0;class r1e{}Rl.SpaceEntry=r1e;function i1e(t){return"makeEntry"in t}Rl.canMakeEntry=i1e,Object.defineProperty(wr,"__esModule",{value:!0}),wr.SpaceField=void 0;const s1e=Rl;class o1e extends s1e.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}constructorFieldDef(){}}wr.SpaceField=o1e,Object.defineProperty(Xx,"__esModule",{value:!0}),Xx.ViewField=void 0;const u1e=wr;class a1e extends u1e.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Xx.ViewField=a1e,Object.defineProperty(TA,"__esModule",{value:!0}),TA.ASTViewField=void 0;const l1e=Xx;class c1e extends l1e.ViewField{constructor(e,n,r){super(e),this.view=n,this.name=r}getQueryFieldDef(e){return this.view.getFieldDef(e)}fieldDef(){return this.view.getFieldDef(this.inSpace)}}TA.ASTViewField=c1e,Object.defineProperty(i1,"__esModule",{value:!0}),i1.ViewFieldDeclaration=void 0;const f1e=We,x1e=Nr,d1e=Yx,h1e=TA;class p1e extends f1e.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=x1e.extendNoteMethod}makeEntry(e){const n=new h1e.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,d1e.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}i1.ViewFieldDeclaration=p1e;var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.LegalRefinementStage=mn.QueryClass=void 0;var WU;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(WU||(mn.QueryClass=WU={}));var VU;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(VU||(mn.LegalRefinementStage=VU={})),Object.defineProperty(r1,"__esModule",{value:!0}),r1.NestFieldDeclaration=void 0;const g1e=Yx,m1e=i1,YU=mn;class y1e extends m1e.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=YU.LegalRefinementStage.Single,this.forceQueryClass=YU.QueryClass.Grouping}queryExecute(e){e.resultFS.pushFields(this)}getFieldDef(e){if(e.isQueryFieldSpace()){const{pipeline:n,annotation:r}=this.view.pipelineComp(e,e.outputSpace()),i=(0,g1e.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}throw this.internalError("Unexpected namespace for nest")}}r1.NestFieldDeclaration=y1e;var Kx={},Fr={};Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.ErrorFactory=void 0;const JU="~malformed~";class VR{static get structDef(){return{type:"table",name:JU,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:JU,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],join:"one",matrixOperation:"left",errorFactory:!0}}static didCreate(e){return e.type==="table"&&"errorFactory"in e}static get query(){return{structRef:VR.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Fr.ErrorFactory=VR,Object.defineProperty(Kx,"__esModule",{value:!0}),Kx.DefineSourceList=Kx.DefineSource=void 0;const E1e=Fr,XU=We,A1e=Nr;class v1e extends XU.MalloyElement{constructor(e,n,r,i){super(),this.name=e,this.sourceExpr=n,this.exported=r,this.parameters=i,this.elementType="defineSource",this.isNoteableObj=!0,this.extendNote=A1e.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.logError("source-definition-name-conflict",`Cannot redefine '${this.name}'`);else{const r=(n=this.sourceExpr)===null||n===void 0?void 0:n.getSource();if(r===void 0)return;const i=this.deduplicatedParameters(),s=r.withParameters(void 0,this.parameters);if(this.validateParameterShadowing(i,s),E1e.ErrorFactory.didCreate(s))return;const o={...s,as:this.name,location:this.location};this.note&&(o.annotation=s.annotation?{...this.note,inherits:s.annotation}:this.note),e.setEntry(this.name,{entry:o,exported:this.exported})}}deduplicatedParameters(){if(this.parameters===void 0)return[];const e={},n=[];for(const r of this.parameters)r.name in e&&r.logError("parameter-name-conflict",`Cannot redefine parameter \`${r.name}\``),e[r.name]=!0,n.push(r);return n}validateParameterShadowing(e,n){for(const r of e)n.fields.find(i=>{var s;return((s=i.as)!==null&&s!==void 0?s:i.name)===r.name})&&r.logError("parameter-shadowing-field",`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Kx.DefineSource=v1e;class S1e extends XU.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Kx.DefineSourceList=S1e;var Zx={};Object.defineProperty(Zx,"__esModule",{value:!0}),Zx.DefineQueryList=Zx.DefineQuery=void 0;const KU=We,_1e=Nr;class C1e extends KU.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=_1e.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.logError("query-definition-name-conflict",`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("query-definition-from-non-query","Cannot define a query from this expression");return}const i={...r.query(),type:"query",name:this.name,location:this.location};this.note&&(i.annotation=i.annotation?{...this.note,inherits:i.annotation}:this.note),e.setEntry(this.name,{entry:i,exported:!0})}}Zx.DefineQuery=C1e;class T1e extends KU.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Zx.DefineQueryList=T1e;var io={};Object.defineProperty(io,"__esModule",{value:!0}),io.Source=void 0;const b1e=We;class R1e extends b1e.MalloyElement{structRef(e){return{structRef:this.getSourceDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.getSourceDef(e),parameters:this.packParameters(n)}}}io.Source=R1e;var o1={},ed={},bA={},Ol={};Object.defineProperty(Ol,"__esModule",{value:!0}),Ol.mergeFields=Ol.nameFromDef=void 0;function YR(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Ol.nameFromDef=YR;function O1e(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>YR(i))),r=t.filter(i=>!n.has(YR(i)));return r.push(...e),r}Ol.mergeFields=O1e;var u1={},hr={},iu={};Object.defineProperty(iu,"__esModule",{value:!0}),iu.DefinedParameter=iu.AbstractParameter=iu.SpaceParam=void 0;const D1e=Rl;class JR extends D1e.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}iu.SpaceParam=JR;class N1e extends JR{constructor(e){super(),this.astParam=e,this._parameter=void 0}parameter(){return this._parameter!==void 0?this._parameter:(this._parameter=this.astParam.parameter(),this._parameter)}typeDesc(){var e;return{dataType:(e=this.parameter().type)!==null&&e!==void 0?e:"error",expressionType:"scalar",evalSpace:"constant"}}}iu.AbstractParameter=N1e;class w1e extends JR{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}iu.DefinedParameter=w1e;var td={};Object.defineProperty(td,"__esModule",{value:!0}),td.StructSpaceFieldBase=void 0;const F1e=wr;class L1e extends F1e.SpaceField{constructor(e){super(),this.sourceDef=e}fieldDef(){return this.sourceDef}get joinPathElement(){return{name:this.sourceDef.as||this.sourceDef.name,joinType:this.sourceDef.join,joinElementType:this.sourceDef.type}}typeDesc(){return{dataType:this.sourceDef.type,expressionType:"scalar",evalSpace:"input"}}}td.StructSpaceFieldBase=L1e;var a1={};Object.defineProperty(a1,"__esModule",{value:!0}),a1.ColumnSpaceField=void 0;const I1e=wr;class $1e extends I1e.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}a1.ColumnSpaceField=$1e;var RA={};Object.defineProperty(RA,"__esModule",{value:!0}),RA.IRViewField=void 0;const B1e=Xx;class k1e extends B1e.ViewField{constructor(e,n){super(e),this.turtleDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}constructorFieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}RA.IRViewField=k1e,Object.defineProperty(hr,"__esModule",{value:!0}),hr.StaticSourceSpace=hr.StructSpaceField=hr.StaticSpace=void 0;const P1e=Bo,OA=oe,M1e=iu,j1e=wr,DA=td,U1e=a1,q1e=RA;class XR{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,P1e.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,OA.isJoined)(e)?new ZU(e,this.fromStruct.dialect):(0,OA.isTurtleDef)(e)?new q1e.IRViewField(this,e):new U1e.ColumnSpaceField(e)}get map(){if(this.memoMap===void 0){this.memoMap={};for(const e of this.fromStruct.fields){const n=e.as||e.name;this.memoMap[n]=this.defToSpaceField(e)}if((0,OA.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new M1e.DefinedParameter(n))}return this.memoMap}dropEntries(){this.memoMap={}}dropEntry(e){delete this.map[e]}entry(e){return this.map[e]}setEntry(e,n){this.map[e]=n}entries(){return Object.entries(this.map)}structDef(){return this.fromStruct}emptyStructDef(){const e={...this.fromStruct};return(0,OA.isSourceDef)(e)&&(e.parameters={}),e.fields=[],e}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:{message:`'${n}' is not defined`,code:"field-not-found"},found:i};if(i instanceof j1e.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof DA.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof DA.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof DA.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,joinPath:[...s,...o.joinPath]}:o}return{error:{message:`'${n}' cannot contain a '${r[0]}'`,code:"invalid-property-access-in-field-reference"},found:void 0}}return{found:i,error:void 0,joinPath:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}hr.StaticSpace=XR;class ZU extends DA.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new XR(this.sourceDef)}}hr.StructSpaceField=ZU;class H1e extends XR{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}hr.StaticSourceSpace=H1e,Object.defineProperty(u1,"__esModule",{value:!0}),u1.JoinSpaceField=void 0;const z1e=hr;class Q1e extends z1e.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}u1.JoinSpaceField=Q1e;var nd={};Object.defineProperty(nd,"__esModule",{value:!0}),nd.ParameterSpace=void 0;const G1e=iu;class W1e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new G1e.AbstractParameter(n)}structDef(){throw new Error("Parameter space does not have a structDef")}emptyStructDef(){throw new Error("Parameter space does not have an emptyStructDef")}entry(e){return this._map[e]}lookup(e){const n=e[0];if(n===void 0)return{error:{message:"Invalid reference",code:"invalid-parameter-reference"},found:void 0};const r=this.entry(n.refString);return r===void 0?{error:{message:`\`${n}\` is not defined`,code:"parameter-not-found"},found:void 0}:e.length>1?{error:{message:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,code:"invalid-parameter-reference"},found:void 0}:{found:r,error:void 0,joinPath:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectName(){return"~parameter-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}nd.ParameterSpace=W1e;var V1e=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),Y1e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),J1e=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&V1e(e,t,n);return Y1e(e,t),e};Object.defineProperty(bA,"__esModule",{value:!0}),bA.DynamicSpace=void 0;const X1e=J1e(oe),K1e=Ol,Z1e=Fr,ege=wr,tge=u1,nge=Xx,eq=iu,rge=hr,ige=td,sge=nd;class oge extends rge.StaticSpace{constructor(e){super(structuredClone(e)),this.completions=[],this.complete=!1,this.parameters=[],this.fromSource=e,this.final=void 0}isComplete(){this.complete=!0}setEntry(e,n){if(this.final)throw new Error("Space already final");super.setEntry(e,n)}addParameters(e){for(const n of e)this.entry(n.name)===void 0&&(this.parameters.push(n),this.setEntry(n.name,new eq.AbstractParameter(n)));return this}parameterSpace(){return new sge.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.logError("definition-name-conflict",`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,K1e.nameFromDef)(e),this.defToSpaceField(e))}setTimezone(e){this.newTimezone=e}structDef(){if(this.final===void 0){const e={};for(const[a,l]of this.entries())l instanceof eq.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromSource,fields:[]},this.final.parameters=e;const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof ige.StructSpaceFieldBase?r.push([a,l]):l instanceof nge.ViewField?i.push([a,l]):l instanceof ege.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof tge.JoinSpaceField){const l=a.join.structDef(u);Z1e.ErrorFactory.didCreate(l)||(this.final.fields.push(l),s.push([a.join,l]))}else{const l=a.fieldDef();l&&this.final.fields.push(l)}for(const[a,l]of s)a.fixupJoinOn(this,l)}return this.newTimezone&&X1e.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}bA.DynamicSpace=oge,Object.defineProperty(ed,"__esModule",{value:!0}),ed.RefinedSpace=void 0;const uge=bA,age=Rl;class KR extends uge.DynamicSpace{static filteredFrom(e,n,r){const i=new KR(e);if(n){const s=n.refs.list,o=i.entries();for(const u of s)o.find(([l])=>l===u.refString)===void 0&&(r!=null&&r.entry(u.refString)?u.logError(`${n.edit}-parameter`,`Illegal \`${n.edit}:\` of parameter`):u.logError("field-list-edit-not-found",`\`${u.refString}\` is not defined`));i.dropEntries();for(const[u,a]of o){const l=!!s.find(f=>f.refString===u),c=n.edit==="accept";l===c&&i.setEntry(u,a)}}return i}pushFields(...e){for(const n of e)(0,age.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}ed.RefinedSpace=KR;var Dl={},Ji={};Object.defineProperty(Ji,"__esModule",{value:!0}),Ji.DefinitionList=void 0;const lge=We,tq=Nr;class cge extends lge.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,tq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,tq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ji.DefinitionList=cge,Object.defineProperty(Dl,"__esModule",{value:!0}),Dl.DeclareFields=void 0;const fge=Ji,xge=mn;class dge extends fge.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=xge.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Dl.DeclareFields=dge;var so={};Object.defineProperty(so,"__esModule",{value:!0}),so.Filter=so.FilterElement=void 0;const nq=oe,rq=We,ZR=mn;class hge extends rq.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterCondition(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.logError("non-boolean-filter","Filter expression must have boolean value"),{node:"filterCondition",code:this.exprSrc,e:{node:"false"},expressionType:"scalar"}):{node:"filterCondition",code:this.exprSrc,e:n.value,expressionType:n.expressionType}}}so.FilterElement=hge;let pge=class extends rq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=ZR.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?ZR.LegalRefinementStage.Tail:ZR.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterCondition(e);if(this.havingClause!==void 0){const s=(0,nq.expressionIsAggregate)(i.expressionType),o=(0,nq.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.logError("analytic-in-having","Analytic expressions are not allowed in `having:`");continue}}else if(o){r.logError("analytic-in-where","Analytic expressions are not allowed in `where:`");continue}else s&&r.logError("aggregate-in-where","Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};so.Filter=pge;var rd={};Object.defineProperty(rd,"__esModule",{value:!0}),rd.FieldListEdit=void 0;const gge=We;class mge extends gge.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}rd.FieldListEdit=mge;var id={};Object.defineProperty(id,"__esModule",{value:!0}),id.PrimaryKey=void 0;const yge=We;class Ege extends yge.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}id.PrimaryKey=Ege;var sd={};Object.defineProperty(sd,"__esModule",{value:!0}),sd.Views=void 0;const Age=Ji;class vge extends Age.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}sd.Views=vge;var od={};Object.defineProperty(od,"__esModule",{value:!0}),od.TimezoneStatement=void 0;const Sge=We;class _ge extends Sge.MalloyElement{constructor(e){super(),this.tz=e,this.elementType="timezone",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}get isValid(){try{return Intl.DateTimeFormat(void 0,{timeZone:this.tz}),!0}catch{return!1}}queryExecute(e){e.resultFS.setTimezone(this.tz)}}od.TimezoneStatement=_ge;var Nl={};Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.ModelAnnotation=Nl.ObjectAnnotation=void 0;const Cge=ko,Tge=We;class iq extends Tge.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Nl.ObjectAnnotation=iq;class bge extends iq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=Cge.Tag.annotationToTag({notes:this.notes},{prefix:/^##! /,extending:e});return r.log.forEach(i=>n.log(i)),r.tag}execute(e){e.annotation.notes===void 0&&(e.annotation.notes=[]),e.annotation.notes.push(...this.notes)}}Nl.ModelAnnotation=bge;var wl={},NA={};Object.defineProperty(NA,"__esModule",{value:!0}),NA.RenameSpaceField=void 0;const Rge=wr;class Oge extends Rge.SpaceField{constructor(e,n,r){super(),this.otherField=e,this.newName=n,this.location=r}fieldDef(){const e=this.otherField.fieldDef();if(e!==void 0)return{...e,as:this.newName,location:this.location}}typeDesc(){return this.otherField.typeDesc()}}NA.RenameSpaceField=Oge,Object.defineProperty(wl,"__esModule",{value:!0}),wl.Renames=wl.RenameField=void 0;const Dge=NA,sq=We,Nge=wr;class wge extends sq.MalloyElement{constructor(e,n){super(),this.newName=e,this.oldName=n,this.elementType="renameField",this.has({oldName:n})}makeEntry(e){if(this.oldName.refString===this.newName){this.logError("invalid-rename-with-same-name","Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof Nge.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Dge.RenameSpaceField(n.found,this.newName,this.location)):this.logError("failed-rename",`'${this.oldName}' cannot be renamed`):this.logError("rename-field-not-found",`Can't rename '${this.oldName}', no such field`)}}wl.RenameField=wge;class Fge extends sq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}wl.Renames=Fge;var Ci={};Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.JoinStatement=Ci.ExpressionJoin=Ci.KeyJoin=Ci.Join=void 0;const eO=oe,Lge=u1,Ige=Ji,$ge=We,Bge=Nr,oq=Fr,kge=mn;class tO extends $ge.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=Bge.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new Lge.JoinSpaceField(e.parameterSpace(),this,e.dialect))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.getSourceDef(e):(this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),oq.ErrorFactory.structDef)}}Ci.Join=tO;class Pge extends tO{constructor(e,n,r){super({name:e,sourceExpr:n,keyExpr:r}),this.name=e,this.sourceExpr=n,this.keyExpr=r,this.elementType="joinOnKey"}structDef(e){var n;const r=this.getStructDefFromExpr(e);if(!(0,eO.isJoinable)(r))throw this.internalError(`Cannot join struct type '${r.type}'`);const i={...r,name:this.name.refString,join:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"},location:this.location};return delete i.as,this.note&&(i.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(i),i}fixupJoinOn(e,n){const r=this.keyExpr.getExpression(e);if((0,eO.isSourceDef)(n)&&n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.join="one",n.onExpression={node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}};return}else this.logError("join-on-primary-key-type-mismatch",`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.logError("join-primary-key-not-found",`join_one: Primary key '${i}' not found in source`)}else this.logError("join-with-without-primary-key","join_one: Cannot use with unless source has a primary key")}}Ci.KeyJoin=Pge;class Mge extends tO{constructor(e,n){super({name:e,sourceExpr:n}),this.name=e,this.sourceExpr=n,this.elementType="joinOnExpr",this.joinType="one",this.matrixOperation="left"}set joinOn(e){this.expr=e,this.has({on:e})}get joinOn(){return this.expr}fixupJoinOn(e,n){if(this.expr===void 0)return;const r=this.expr.getExpression(e);if(r.dataType!=="boolean"){this.logError("non-boolean-join-on","join conditions must be boolean expressions");return}n.onExpression=r.value}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("invalid-join-source","Cannot create a source to join from"),oq.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,eO.isJoinable)(i))throw this.internalError(`Can't join struct type ${i.type}`);const o={...i,name:this.name.refString,join:this.joinType,matrixOperation:s,location:this.location};return delete o.as,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Ci.ExpressionJoin=Mge;class jge extends Ige.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=kge.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ci.JoinStatement=jge,Object.defineProperty(o1,"__esModule",{value:!0}),o1.RefinedSource=void 0;const Uge=oe,qge=ed,Hge=Dl,zge=so,Qge=rd,Gge=id,Wge=sd,Vge=io,Yge=od,Jge=Nl,Xge=wl,Kge=nd,Zge=Ci;class eme extends Vge.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;let i,s;const o=[],u=[];let a;for(const m of this.refinement.list){if(m instanceof Jge.ObjectAnnotation)continue;const g=m;if(m instanceof Gge.PrimaryKey){if(i){const y="multiple-primary-keys";i.logError(y,"Primary key already defined"),m.logError(y,"Primary key redefined")}i=m}else if(m instanceof Qge.FieldListEdit){if(s){const y="multiple-field-list-edits";s.logError(y,"Too many accept/except statements"),m.logError(y,"Too many accept/except statements")}s=m}else m instanceof Hge.DeclareFields||m instanceof Zge.JoinStatement||m instanceof Wge.Views||m instanceof Xge.Renames?o.push(...m.list):m instanceof zge.Filter?u.push(m):m instanceof Yge.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new Kge.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=qge.RefinedSpace.filteredFrom(c,s,l);if(a&&f.setTimezone(a),n&&f.addParameters(n),f.pushFields(...o),i){const m=i.field.getField(f);m.error&&i.logError(m.error.code,m.error.message)}const x=f.structDef(),h=x.filterList||[];let p=!1;for(const m of u)for(const g of m.list){const y=g.filterCondition(f);(0,Uge.expressionIsCalculation)(y.expressionType)?g.logError("aggregate-in-source-filter","Can't use aggregate computations in top level filters"):(h.push(y),p=!0)}return p?{...x,filterList:h}:((r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(x),x)}}o1.RefinedSource=eme;var su={};Object.defineProperty(su,"__esModule",{value:!0}),su.SourceQueryElement=void 0;const tme=We;class nO extends tme.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e,n,r){return this.isErrorFree()&&this.logError(e,n,r),this.errored=!0,e}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof nO&&n.errored){e=!1;break}return e}}su.SourceQueryElement=nO;var wA={},Fc={};Object.defineProperty(Fc,"__esModule",{value:!0}),Fc.QuerySource=void 0;const nme=io,rme=q3;class ime extends nme.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}getSourceDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,name:`QuerySource-${(0,rme.v4)()}`,type:"query_source",query:i.query};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Fc.QuerySource=ime;var ud={},l1={};Object.defineProperty(l1,"__esModule",{value:!0}),l1.QueryBase=void 0;const sme=Yx,ome=We;class ume extends ome.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,sme.detectAndRemovePartialStages)(e.pipeline,this)}}}l1.QueryBase=ume,Object.defineProperty(ud,"__esModule",{value:!0}),ud.QueryArrow=void 0;const ame=oe,lme=io,uq=hr,cme=l1;class fme extends cme.QueryBase{constructor(e,n){super({source:e,view:n}),this.source=e,this.view=n,this.elementType="arrow"}queryComp(e){let n,r,i;if(this.source instanceof lme.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,ame.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new uq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new uq.StaticSpace(l.outputStruct)}const{pipeline:s,annotation:o,outputStruct:u,name:a}=this.view.pipelineComp(i);return{query:{...r,name:a,annotation:o,pipeline:[...r.pipeline,...s]},outputStruct:u,inputStruct:n}}}ud.QueryArrow=fme,Object.defineProperty(wA,"__esModule",{value:!0}),wA.SQArrow=void 0;const xme=su,dme=Fc,hme=ud;class pme extends xme.SourceQueryElement{constructor(e,n){super({applyTo:e,operation:n}),this.applyTo=e,this.operation=n,this.elementType="sq-arrow"}getQuery(){const e=this.applyTo.isSource()?this.applyTo.getSource():this.applyTo.getQuery();if(e===void 0){this.sqLog("failed-to-compute-arrow-source","Could not get LHS of arrow operation");return}const n=new hme.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("failed-to-compute-source-from-query","Couldn't comprehend query well enough to make a source");return}const n=new dme.QuerySource(e);return this.has({asSource:n}),n}}wA.SQArrow=pme;var FA={},ad={},Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.getStructFieldDef=Xi.getFinalStruct=Xi.opOutputStruct=void 0;const aq=dl,gme=Y0,LA=oe,lq=Fr;function cq(t,e,n){const r=lq.ErrorFactory.didCreate(e)||(0,LA.structHasErrors)(e);(0,LA.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,LA.segmentHasErrors)(n);if(!r&&!i)try{const s=gme.Segment.nextStructDef(e,n);if((0,LA.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
1319
1319
  STRUCTDEF: ${(0,aq.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1320
1320
  QUERY: ${(0,aq.inspect)(n,{breakLength:72,depth:1/0})}`)}return lq.ErrorFactory.structDef}Xi.opOutputStruct=cq;function mme(t,e,n){for(const r of n)e=cq(t,e,r);return e}Xi.getFinalStruct=mme;function yme(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Xi.getStructFieldDef=yme,Object.defineProperty(ad,"__esModule",{value:!0}),ad.QueryRefine=void 0;const Eme=hr,Ame=Xi,vme=l1;class Sme extends vme.QueryBase{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="query-refine"}queryComp(e){const n=this.base.queryComp(e),r=new Eme.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,Ame.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}ad.QueryRefine=Sme;var c1={},ld={},Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.timeResult=Jn.resolution=Jn.castDateToTimestamp=Jn.castTimestampToDate=Jn.castTo=Jn.timeOffset=void 0;const _me=oe;function Cme(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Jn.timeOffset=Cme;function Tme(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,_me.isAtomicFieldType)(n)&&(i.srcType=n),i}Jn.castTo=Tme;function bme(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Jn.castTimestampToDate=bme;function Rme(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Jn.castDateToTimestamp=Rme;function Ome(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Jn.resolution=Ome;function Dme(t,e){return e?{...t,timeframe:e}:t}Jn.timeResult=Dme;var Lc={},xt={},rn={};Object.defineProperty(rn,"__esModule",{value:!0}),rn.FT=void 0;const Nme=As;function Ic(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class pr{static in(e,n){return e?n.find(i=>pr.eq(i,e))!==void 0:!1}static eq(e,n){return n!==void 0&&e.dataType===n.dataType&&e.expressionType===n.expressionType}static typeIn(e,n){return e?n.find(i=>pr.typeEq(i,e))!==void 0:!1}static typeEq(e,n,r=!1,i=!0){const s=e.dataType===n.dataType,o=r&&(e.dataType==="null"||n.dataType==="null"),u=i&&(e.dataType==="error"||n.dataType==="error");return s||o||u}static inspect(...e){return e.map(r=>{if(r){let i=r.dataType;return(0,Nme.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}rn.FT=pr,pr.nullT=Ic("null"),pr.numberT=Ic("number"),pr.stringT=Ic("string"),pr.dateT=Ic("date"),pr.timestampT=Ic("timestamp"),pr.boolT=Ic("boolean"),pr.anyAtomicT=[pr.numberT,pr.stringT,pr.dateT,pr.timestampT,pr.boolT],pr.aggregateBoolT=Ic("boolean","aggregate");var cd={};Object.defineProperty(cd,"__esModule",{value:!0}),cd.isGranularResult=void 0;function wme(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}cd.isGranularResult=wme;var ou={};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isComparison=ou.isEquality=ou.getExprNode=void 0;function Fme(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}ou.getExprNode=Fme;function fq(t){return t==="="||t==="!="||t==="~"||t==="!~"}ou.isEquality=fq;function Lme(t){return fq(t)||t===">="||t==="<="||t===">"||t==="<"}ou.isComparison=Lme,Object.defineProperty(xt,"__esModule",{value:!0}),xt.applyBinary=xt.getMorphicValue=xt.ExprDuration=xt.ExpressionDef=void 0;const yn=oe,rO=_i,$c=rn,IA=Jn,xq=cd,Ime=We,f1=ou;class $me extends Error{}class dq extends Ime.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=$c.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!$c.FT.in(n,this.legalChildTypes)?(n.dataType==="sql native"?e.logError("sql-native-not-allowed-in-expression",{rawType:n.rawType}):e.logError("expression-type-error",`'${this.elementType}' Can't use type ${$c.FT.inspect(n)}`),!1):!0}apply(e,n,r){return mq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,yn.expressionIsAggregate)(e.expressionType)}}xt.ExpressionDef=dq;class iO extends dq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[$c.FT.timestampT,$c.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,yn.isTemporalField)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!$c.FT.typeEq(s,$c.FT.numberT))return this.logError("invalid-duration-quantity",`Duration quantity needs number not '${s.dataType}`),(0,rO.errorFor)("illegal unit expression");let o;if((0,xq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,IA.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,IA.timeResult)({dataType:"timestamp",expressionType:(0,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,yn.isDateUnit)(this.timeframe)?(0,IA.timeResult)({dataType:"date",expressionType:(0,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,IA.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):this.loggedErrorExpr("invalid-timeframe-for-time-offset",`Cannot offset date by ${this.timeframe}`)}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}xt.ExprDuration=iO;function hq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function Bme(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}xt.getMorphicValue=Bme;function pq(t,e,n,r){const i=(0,yn.isTemporalField)(e.dataType),s=(0,yn.isTemporalField)(r.dataType),o=(0,f1.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=hq(e,"timestamp"),a=hq(r,"timestamp");if(u&&a)return{node:o,kids:{left:u,right:u}}}else return{node:o,kids:{left:e.value,right:r.value}};if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.logError("time-comparison-type-mismatch",`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function kme(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:t.value,regex:e.value}}}else if(e.dataType==="string"&&t.dataType==="regular expression")return{node:"regexpMatch",kids:{expr:e.value,regex:t.value}}}function Pme(t,e,n){const r=e==="!="||e==="!~",i=r?"is-not-null":"is-null";if(t.dataType==="null"||n.dataType==="null")return t.dataType!=="null"?{node:i,e:t.value}:n.dataType!=="null"?{node:i,e:n.value}:{node:r?"false":"true"}}function Mme(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,f1.getExprNode)(n),a=x1("boolean",s,o);if(a)return a;if(s.dataType==="sql native"||o.dataType==="sql native"){const f=s.dataType==="null"||o.dataType==="null",x=s.rawType&&s.rawType===o.rawType;if(!(f||x)){const h=d1(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=pq(e,s,n,o)||{node:u,kids:{left:s.value,right:o.value}};if(s.dataType!=="error"&&o.dataType!=="error")switch(n){case"~":case"!~":{if(s.dataType!=="string"||o.dataType!=="string"){let f=kme(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new $me("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=Pme(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,yn.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function jme(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=x1("boolean",i,s);if(o)return o;const u=(0,yn.maxExpressionType)(i.expressionType,s.expressionType),a=d1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=pq(e,i,n,s)||{node:(0,f1.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function gq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=x1("number",i,s);if(o)return o;const u=d1(e,i,r,s);if(u)return u;const a=(0,yn.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch",`The '${n}' operator requires a number, not a '${s.dataType}'`);else return{dataType:"number",expressionType:a,value:{node:n,kids:{left:i.value,right:s.value}},evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,rO.errorFor)("numbers required")}function Ume(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=d1(e,i,r,s);if(o)return o;const u=(0,yn.isTemporalField)(i.dataType),a=x1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,xq.isGranularResult)(i))l=new iO(r,i.timeframe);else if(i.dataType==="date")l=new iO(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return gq(t,e,n,r)}function mq(t,e,n,r){if((0,f1.isEquality)(n))return Mme(t,e,n,r);if((0,f1.isComparison)(n))return jme(t,e,n,r);if(n==="+"||n==="-")return Ume(t,e,n,r);if(n==="*")return gq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=d1(e,i,r,s);if(o)return o;const u=x1("number",i,s);if(u)return u;if(i.dataType!=="number")e.logError("arithmetic-operation-type-mismatch","Numerator must be a number");else if(s.dataType!=="number")r.logError("arithmetic-operation-type-mismatch","Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,rO.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}xt.applyBinary=mq;function x1(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,yn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,yn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function d1(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,yn.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,yn.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.logError("sql-native-not-allowed-in-expression",{rawType:e.rawType}),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.logError("sql-native-not-allowed-in-expression",{rawType:r.rawType}),i}Object.defineProperty(Lc,"__esModule",{value:!0}),Lc.ExprIdReference=void 0;const qme=oe,Hme=xt;class zme extends Hme.ExpressionDef{constructor(e){super(),this.fieldReference=e,this.elementType="ExpressionIdReference",this.has({fieldPath:e})}get refString(){return this.fieldReference.refString}getExpression(e){const n=this.fieldReference.getField(e);if(n.found){const r=n.found.typeDesc();if(n.isOutputField)return{...r,evalSpace:r.evalSpace==="constant"?"constant":"output",value:{node:"outputField",name:this.refString}};const i={node:n.found.refType,path:this.fieldReference.path},s=(0,qme.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Lc.ExprIdReference=zme,Object.defineProperty(ld,"__esModule",{value:!0}),ld.NamedSource=void 0;const sO=oe,Qme=io,Gme=Fr,Wme=Jn,yq=We,Vme=Lc,Yme=nd;class Jme extends Qme.Source{constructor(e,n,r){super(),this.ref=e,this.sourceArguments=n,this.args=r,this.elementType="namedSource",r&&this.has({args:r}),e instanceof yq.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof yq.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.getSourceDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLogError(e,n,r){typeof this.ref=="string"?this.logError(e,n,r):this.ref.logError(e,n,r)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){this.refLogError("source-not-found",`Undefined source '${this.refName}'`);return}if(r.type==="query"){this.logError("invalid-source-from-query",`Cannot construct a source from query '${this.refName}'`);return}else if(r.type==="function"){this.logError("invalid-source-from-function",`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.logError("invalid-source-from-connection",`Cannot construct a source from a connection '${this.refName}'`);return}else if((e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect),(0,sO.isSourceDef)(r))return{...r};this.logError("invalid-source-source",`Cannot construct a source from a ${r.type}`)}evaluateArgumentsForRef(e){const n=this.modelStruct();return n===void 0?{}:this.evaluateArguments(e,n.parameters,[])}evaluateArguments(e,n,r){var i,s;const o={...this.sourceArguments},u=new Set;for(const a of(i=this.args)!==null&&i!==void 0?i:[]){const l=(s=a.id)!==null&&s!==void 0?s:a.value instanceof Vme.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.logError("unnamed-source-argument","Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.logError("duplicate-source-argument",`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.logError("source-parameter-not-found",`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new Yme.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,sO.isCastType)(f.type)&&(p=(0,Wme.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,sO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLogError("missing-source-argument",`Argument not provided for required parameter \`${a}\``));return o}getSourceDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=Gme.ErrorFactory.structDef,l=`${this.refName}-undefined`;return a.name=a.name+l,a.dialect=a.dialect+l,a}const s={};for(const a of n??[]){const l=a.parameter();s[l.name]=l}const o=this.evaluateArguments(e,i.parameters,n),u={...i,parameters:s,arguments:o};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(u),u}}ld.NamedSource=Jme;var h1={},$A={};Object.defineProperty($A,"__esModule",{value:!0}),$A.QueryHeadStruct=void 0;const Xme=oe,Kme=io,Zme=ld;class e3e extends Kme.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Xme.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Zme.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}$A.QueryHeadStruct=e3e,Object.defineProperty(h1,"__esModule",{value:!0}),h1.QueryReference=void 0;const oO=Fr,t3e=We,n3e=$A,r3e=oe,i3e=Xi;class s3e extends t3e.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:oO.ErrorFactory.structDef,outputStruct:oO.ErrorFactory.structDef,query:oO.ErrorFactory.query}};if(!r)return this.logError("query-reference-not-found",`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new n3e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,i3e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,r3e.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.logError("non-query-used-as-query",`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}h1.QueryReference=s3e,Object.defineProperty(c1,"__esModule",{value:!0}),c1.SQReference=void 0;const o3e=su,u3e=Fc,a3e=ld,Eq=h1,Aq=As;class l3e extends o3e.SourceQueryElement{constructor(e,n){super({ref:e}),this.ref=e,this.args=n,this.elementType="sq-reference",n!==void 0&&this.has({args:n})}getQuery(){const e=this.ref.getNamed();if(e)if(e.type==="query"){const n=new Eq.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog("cannot-use-as-query",`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.logError("source-or-query-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){const e=this.ref.getNamed();return e!==void 0&&(0,Aq.modelObjIsSource)(e)}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.logError("source-not-found",`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.logError("illegal-query-argument","Arguments cannot be passed to queries");const n=new Eq.QueryReference(this.ref);this.asSource=new u3e.QuerySource(n)}else if((0,Aq.modelObjIsSource)(e))this.asSource=new a3e.NamedSource(this.ref,void 0,this.args);else{this.sqLog("cannot-use-struct-as-source",`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}c1.SQReference=l3e,Object.defineProperty(FA,"__esModule",{value:!0}),FA.SQRefine=void 0;const c3e=su,f3e=Fc,x3e=ad,d3e=c1;class h3e extends c3e.SourceQueryElement{constructor(e,n){super({toRefine:e,refine:n}),this.toRefine=e,this.refine=n,this.elementType="sq-refine"}getQuery(){if(this.toRefine.isSource()){this.toRefine instanceof d3e.SQReference?this.sqLog("illegal-refinement-of-source",`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("illegal-refinement-of-source","Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new x3e.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new f3e.QuerySource(e);return this.has({queryAsSource:n}),n}}}FA.SQRefine=h3e;var BA={},p1={};Object.defineProperty(p1,"__esModule",{value:!0}),p1.QueryRaw=void 0;const p3e=oe,g3e=We;class m3e extends g3e.MalloyElement{constructor(e){super({source:e}),this.source=e,this.elementType="query-raw"}queryComp(e){const n=e?this.source.structRef(void 0):{structRef:this.source.getSourceDef(void 0)},r=(0,p3e.refIsStructDef)(n.structRef)?n.structRef:this.source.getSourceDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}p1.QueryRaw=m3e;var g1={},kA={};Object.defineProperty(kA,"__esModule",{value:!0}),kA.makeSQLSentence=void 0;const y3e=oe,E3e=Rt;function A3e(t,e){return{name:`sql://${e}/${v3e(t)}`,connection:e,select:t}}kA.makeSQLSentence=A3e;function v3e(t){const e=t.map(n=>(0,y3e.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,E3e.generateHash)(e.join(";"))}Object.defineProperty(g1,"__esModule",{value:!0}),g1.SQLSource=void 0;const S3e=kA,_3e=io,PA=Fr;class C3e extends _3e.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlSentence(){return this.requestBlock||(this.requestBlock=(0,S3e.makeSQLSentence)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.getSourceDef()}}validateConnectionName(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(this.connectionNameInvalid)return!1;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection")return this.connectionName.logError("invalid-connection-for-sql-source",`${this.connectionName.refString} is not a connection`),this.connectionNameInvalid=!0,!1;return!0}needs(e){var n;if(!this.validateConnectionName())return;const r=super.needs(e);if(r)return r;const i=this.sqlSentence(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block");return}s.reference(i.name,this.location);const o=s.getEntry(i.name);if(o.status==="reference")return{compileSQL:i,partialModel:this.select.containsQueries?e.modelDef():void 0};o.status==="present"&&e.checkExperimentalDialect(this,o.value.dialect)}getSourceDef(){var e;if(!this.validateConnectionName())return PA.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.logError("failed-to-fetch-sql-source-schema","Cant't look up schema for sql block"),PA.ErrorFactory.structDef;const r=this.sqlSentence();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.logError("invalid-sql-source","Invalid SQL, "+s.join(`
1321
- `)),PA.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),PA.ErrorFactory.structDef}}g1.SQLSource=C3e,Object.defineProperty(BA,"__esModule",{value:!0}),BA.SQSource=void 0;const T3e=su,b3e=p1,R3e=g1;class O3e extends T3e.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof R3e.SQLSource){const e=new b3e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}BA.SQSource=O3e;var MA={};Object.defineProperty(MA,"__esModule",{value:!0}),MA.SQExtend=void 0;const D3e=o1,N3e=su;class w3e extends N3e.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new D3e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}MA.SQExtend=w3e;var jA={},m1={},y1={};Object.defineProperty(y1,"__esModule",{value:!0}),y1.BinaryBoolean=void 0;const vq=oe,F3e=_i,L3e=rn,I3e=ou,$3e=xt;class B3e extends $3e.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[L3e.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,vq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,vq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,I3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,F3e.errorFor)("logial required boolean")}}y1.BinaryBoolean=B3e,Object.defineProperty(m1,"__esModule",{value:!0}),m1.ExprCompare=void 0;const Qt=rn,k3e=y1,P3e={"~":[Qt.FT.stringT],"!~":[Qt.FT.stringT],"<":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"<=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"!=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT]};class M3e extends k3e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=P3e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}m1.ExprCompare=M3e;var E1={},fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.ExprTime=void 0;const j3e=oe,U3e=xt;class uO extends U3e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,j3e.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new uO(e,r,n.expressionType)}}fd.ExprTime=uO;var Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.Range=void 0;const Sq=oe,q3e=_i,H3e=xt;class z3e extends H3e.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,Sq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Sq.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,q3e.errorFor)("a range is not a value")}}Fl.Range=z3e,Object.defineProperty(E1,"__esModule",{value:!0}),E1.ExprGranularTime=void 0;const _q=oe,Q3e=_i,Cq=rn,Tq=Jn,G3e=xt,UA=fd,bq=Fl;class W3e extends G3e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Cq.FT.timestampT,Cq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,_q.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,_q.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,Q3e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=UA.ExprTime.fromValue("timestamp",n),a=new UA.ExprTime("timestamp",(0,Tq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new bq.Range(u,a)}const i=new UA.ExprTime("date",n.value,n.expressionType),s=(0,Tq.timeOffset)("date",n.value,"+",r,this.units),o=new UA.ExprTime("date",s,n.expressionType);return new bq.Range(i,o)}}E1.ExprGranularTime=W3e,Object.defineProperty(jA,"__esModule",{value:!0}),jA.Apply=void 0;const V3e=m1,Y3e=cd,Rq=E1;class J3e extends V3e.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,Y3e.isGranularResult)(r)&&(n=new Rq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Rq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}jA.Apply=J3e;var xd={};Object.defineProperty(xd,"__esModule",{value:!0}),xd.BinaryNumeric=void 0;const X3e=rn,K3e=xt;class Z3e extends K3e.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[X3e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}xd.BinaryNumeric=Z3e;var qA={};Object.defineProperty(qA,"__esModule",{value:!0}),qA.Boolean=void 0;const eye=xt,tye=rn;let nye=class extends eye.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...tye.FT.boolT,value:{node:this.value}}}};qA.Boolean=nye;var Ll={};Object.defineProperty(Ll,"__esModule",{value:!0}),Ll.FunctionOrdering=Ll.FunctionOrderBy=void 0;const aO=oe,Oq=We,rye=Lc;class iye extends Oq.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,aO.expressionIsAggregate)(n.expressionType)||((0,aO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof rye.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,aO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Ll.FunctionOrderBy=iye;class sye extends Oq.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Ll.FunctionOrdering=sye;var HA={};Object.defineProperty(HA,"__esModule",{value:!0}),HA.ExprAddSub=void 0;const oye=xd;class uye extends oye.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}HA.ExprAddSub=uye;var da={},ht={},A1={};Object.defineProperty(A1,"__esModule",{value:!0}),A1.ReferenceField=void 0;const Dq=wr;class aye extends Dq.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Dq.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}A1.ReferenceField=aye;var In={};Object.defineProperty(In,"__esModule",{value:!0}),In.typecheckGroupBy=In.typecheckAggregate=In.typecheckCalculate=In.typecheckDeclare=In.typecheckMeasure=In.typecheckDimension=In.typecheckIndex=In.typecheckProject=void 0;const En=As;function lye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}In.typecheckProject=lye;function cye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}In.typecheckIndex=cye;function fye(t,e){if(!(0,En.expressionIsScalar)(t.expressionType))if((0,En.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,En.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}In.typecheckDimension=fye;function xye(t,e){if(!(0,En.expressionIsAggregate)(t.expressionType))if((0,En.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,En.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}In.typecheckMeasure=xye;function dye(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,En.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}In.typecheckDeclare=dye;function hye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,En.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}In.typecheckCalculate=hye;function pye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,En.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}In.typecheckAggregate=pye;function gye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}In.typecheckGroupBy=gye,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const mye=A1,yye=Ji,Nq=We,wq=Nr,Il=In;class Ti extends Nq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=wq.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new mye.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}ht.FieldReference=Ti;class Eye extends Ti{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=Eye;class Aye extends Ti{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Aye;class vye extends Ti{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=vye;class Sye extends Ti{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Sye;class _ye extends Ti{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Il.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=_ye;class lO extends Ti{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Il.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return lO.indexOutputName(this.path)}}ht.IndexFieldReference=lO;class Cye extends Ti{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Il.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Cye;class Tye extends Ti{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Il.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Tye;class bye extends Ti{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Il.typecheckProject)(e,this)}}ht.ProjectFieldReference=bye;class Rye extends Ti{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Il.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Rye;class Oye extends Ti{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Il.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Oye;class Dye extends Ti{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Il.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Dye;class Nye extends Ti{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=Nye;class wye extends Nq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=wq.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}ht.WildcardFieldReference=wye;class Fye extends yye.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=Fye,Object.defineProperty(da,"__esModule",{value:!0}),da.ExprAggregateFunction=void 0;const v1=oe,Lye=Rt,Iye=_i,Fq=hr,$ye=rn,Bye=ht,kye=xt,Pye=wr,Mye=Lc;class jye extends kye.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[$ye.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Fq.StructSpaceField))if((0,v1.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>Uye(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,v1.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=fO(l,f),m=xO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=qye(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,Iye.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...cO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...cO(e,r))}return n}}da.ExprAggregateFunction=jye;function Uye(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function cO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof Fq.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof Pye.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,Lye.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,v1.isAtomic)(o)&&!(0,v1.isJoined)(o))if((0,v1.hasExpression)(o)){const u=cO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function fO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function xO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function qye(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=fO(i,e),o=xO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=fO(l,e),f=xO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof Bye.FieldReference?`${n.refString}.${r}()`:n instanceof Mye.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var zA={};Object.defineProperty(zA,"__esModule",{value:!0}),zA.ExprAlternationTree=void 0;const Lq=oe,Hye=xt;class zye extends Hye.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Lq.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Lq.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}zA.ExprAlternationTree=zye;var dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.ExprAsymmetric=void 0;const Qye=da;class Gye extends Qye.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}dd.ExprAsymmetric=Gye;var QA={};Object.defineProperty(QA,"__esModule",{value:!0}),QA.ExprAvg=void 0;const Wye=dd;class Vye extends Wye.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}QA.ExprAvg=Vye;var GA={};Object.defineProperty(GA,"__esModule",{value:!0}),GA.ExprCast=void 0;const Yye=Jn,Jye=xt;class Xye extends Jye.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`))}return{dataType:r,expressionType:n.expressionType,value:(0,Yye.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}GA.ExprCast=Xye;var WA={};Object.defineProperty(WA,"__esModule",{value:!0}),WA.ExprCoalesce=void 0;const Iq=As,$q=rn,Kye=xt;class Zye extends Kye.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=$q.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:($q.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,Iq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Iq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}WA.ExprCoalesce=Zye;var VA={};Object.defineProperty(VA,"__esModule",{value:!0}),VA.ExprCount=void 0;const eEe=da;class tEe extends eEe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}VA.ExprCount=tEe;var YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprCountDistinct=void 0;const JA=rn,nEe=da;class rEe extends nEe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[JA.FT.numberT,JA.FT.stringT,JA.FT.dateT,JA.FT.timestampT]}}YA.ExprCountDistinct=rEe;var XA={},$l={};Object.defineProperty($l,"__esModule",{value:!0}),$l.Limit=void 0;const iEe=We,sEe=mn;class oEe extends iEe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=sEe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}$l.Limit=oEe;var hd={};Object.defineProperty(hd,"__esModule",{value:!0}),hd.PartitionBy=void 0;const uEe=We;class aEe extends uEe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}hd.PartitionBy=aEe;var S1={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.FieldName=void 0;const lEe=We;class cEe extends lEe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}Bl.FieldName=cEe,Object.defineProperty(S1,"__esModule",{value:!0}),S1.ExprFunc=void 0;const Ki=oe,fEe=_i,xEe=td,dEe=xt,hEe=Bl,Bq=Rt;class pEe extends dEe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const I=[`${this.name}(`];for(const z of u)R=(0,Ki.maxExpressionType)(R,z.expressionType),O?I.push(","):O=z.dataType,I.push(z.value);return I.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Bq.composeSQLExpr)(I),evalSpace:(0,Ki.mergeEvalSpaces)(...u.map(z=>z.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,fEe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,Ki.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof xEe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=gEe(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),I=(0,Ki.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),I=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,Ki.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,Ki.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,Ki.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",I=n.orderBys.flatMap(j=>R?j.getAnalyticOrderBy(e):j.getAggregateOrderBy(e,O));_.kids.orderBy=I}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const I of O.partitionFields){const j=I.getField(e);j.found===void 0?I.logError("partition-by-not-found",`${I.refString} is not defined`):(0,Ki.expressionIsAnalytic)(j.found.typeDesc().expressionType)||(0,Ki.expressionIsUngroupedAggregate)(j.found.typeDesc().expressionType)?I.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(I.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,I=mEe(O),j=I.filter(Y=>Y.type==="interpolation"&&Y.name.includes(".")).map(Y=>Y.type==="interpolation"?`\${${Y.name}}`:`\${${Y.value}}`);if(j.length>0){const Y=j.length===1?`'.' paths are not yet supported in sql interpolations, found ${j.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${j.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",Y)}const z=[];for(const Y of I)if(Y.type==="string")z.push(Y.value);else if(Y.name==="TABLE")z.push({node:"source-reference"});else{const Q=new hEe.FieldName(Y.name);this.has({name:Q});const se=e.lookup([Q]);if(se.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${se.error.message}`);se.found.refType==="parameter"?z.push({node:"parameter",path:[Y.name]}):z.push({node:"field",path:[Y.name]})}S=(0,Bq.composeSQLExpr)(z)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,Ki.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),T=C==="constant"?"constant":(0,Ki.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:T}}}S1.ExprFunc=pEe;function gEe(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,Ki.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,Ki.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function mEe(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(XA,"__esModule",{value:!0}),XA.ExprProps=void 0;const yEe=oe,EEe=_i,AEe=rn,vEe=Ll,SEe=$l,_Ee=hd,CEe=xt,TEe=S1;class bEe extends CEe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=AEe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,yEe.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,EEe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof _Ee.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof SEe.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof vEe.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof TEe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}XA.ExprProps=bEe;var KA={};Object.defineProperty(KA,"__esModule",{value:!0}),KA.ExprLogicalOp=void 0;const REe=y1,kq=rn;class OEe extends REe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[kq.FT.boolT,kq.FT.aggregateBoolT]}}KA.ExprLogicalOp=OEe;var ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprMax=void 0;const ev=rn,DEe=da;class NEe extends DEe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[ev.FT.numberT,ev.FT.stringT,ev.FT.dateT,ev.FT.timestampT]}returns(e){return e.dataType}}ZA.ExprMax=NEe;var tv={};Object.defineProperty(tv,"__esModule",{value:!0}),tv.ExprMin=void 0;const nv=rn,wEe=da;class FEe extends wEe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[nv.FT.numberT,nv.FT.stringT,nv.FT.dateT,nv.FT.timestampT]}returns(e){return e.dataType}}tv.ExprMin=FEe;var rv={};Object.defineProperty(rv,"__esModule",{value:!0}),rv.ExprMinus=void 0;const LEe=_i,Pq=rn,IEe=xt;class $Ee extends IEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Pq.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Pq.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,LEe.errorFor)("negate requires number")}}rv.ExprMinus=$Ee;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.ExprMulDiv=void 0;const BEe=xd;class kEe extends BEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}iv.ExprMulDiv=kEe;var sv={},_1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.Unary=void 0;const PEe=xt;class MEe extends PEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}_1.Unary=MEe,Object.defineProperty(sv,"__esModule",{value:!0}),sv.ExprNot=void 0;const Mq=rn,jEe=_1;class UEe extends jEe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Mq.FT.boolT,Mq.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}sv.ExprNot=UEe;var ov={};Object.defineProperty(ov,"__esModule",{value:!0}),ov.ExprNow=void 0;const qEe=xt;class HEe extends qEe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}ov.ExprNow=HEe;var uv={};Object.defineProperty(uv,"__esModule",{value:!0}),uv.ExprNULL=void 0;const zEe=xt;class QEe extends zEe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}uv.ExprNULL=QEe;var av={};Object.defineProperty(av,"__esModule",{value:!0}),av.ExprNumber=void 0;const GEe=rn,WEe=xt;class VEe extends WEe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...GEe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}av.ExprNumber=VEe;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.ExprParens=void 0;const YEe=xt;class JEe extends YEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}lv.ExprParens=JEe;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.ExprRegEx=void 0;const XEe=xt;class KEe extends XEe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}cv.ExprRegEx=KEe;var fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.ExprString=void 0;const ZEe=xt,eAe=rn;class tAe extends ZEe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...eAe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}fv.ExprString=tAe;var xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.ExprSum=void 0;const nAe=dd;class rAe extends nAe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}xv.ExprSum=rAe;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.ExprTimeExtract=void 0;const Bc=oe,jq=_i,dO=xt,iAe=Fl;class C1 extends dO.ExpressionDef{static extractor(e){const n=C1.pluralMap[e];if(n)return n;if((0,Bc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=C1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof iAe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Bc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Bc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,jq.errorFor)("extract from error").value};if(!(0,Bc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Bc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,dO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,dO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Bc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Bc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,jq.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}dv.ExprTimeExtract=C1,C1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var hv={},oo={},pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.QueryInputSpace=void 0;const sAe=Ci,oAe=ed;class uAe extends oAe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof sAe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}pv.QueryInputSpace=uAe;var aAe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),lAe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),cAe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&aAe(e,t,n);return lAe(e,t),e};Object.defineProperty(oo,"__esModule",{value:!0}),oo.ReduceFieldSpace=oo.QuerySpace=oo.QueryOperationSpace=void 0;const gv=cAe(oe),hO=Ol,fAe=Bl,xAe=wr,dAe=ht,hAe=ed,pAe=a1,gAe=hr,mAe=pv;class Uq extends hAe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new mAe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof gAe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();gv.isAtomicFieldType(l.dataType)&&gv.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}oo.QueryOperationSpace=Uq;class qq extends Uq{addRefineFromFields(e){var n;if(gv.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new fAe.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new pAe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof dAe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof xAe.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!EAe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(gv.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,hO.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,hO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,hO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}oo.QuerySpace=qq;class yAe extends qq{constructor(){super(...arguments),this.segmentType="reduce"}}oo.ReduceFieldSpace=yAe;function EAe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(hv,"__esModule",{value:!0}),hv.ExprUngroup=void 0;const Hq=oe,AAe=oo,vAe=rn,SAe=xt;class _Ae extends SAe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=vAe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Hq.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Hq.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof AAe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}hv.ExprUngroup=_Ae;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.ForRange=void 0;const zq=As,Qq=_i,Gq=rn,yv=Jn,CAe=xt,Ev=fd,Wq=Fl;class TAe extends CAe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[Gq.FT.timestampT,Gq.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Qq.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,zq.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,zq.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Qq.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,yv.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,yv.timeOffset)("date",i.value,"+",o.value,u),g=new Ev.ExprTime("date",m);return new Wq.Range(p,g).apply(e,n,r)}const l=Ev.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,yv.castDateToTimestamp)(f),c=new Ev.ExprTime("timestamp",f,i.expressionType)}const x=(0,yv.timeOffset)("timestamp",f,"+",o.value,u),h=new Ev.ExprTime("timestamp",x,i.expressionType);return new Wq.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}mv.ForRange=TAe;var Xn={};class kc extends Error{}class bAe extends kc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class RAe extends kc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class OAe extends kc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class T1 extends kc{}class Vq extends kc{constructor(e){super(`Invalid unit ${e}`)}}class bs extends kc{}class kl extends kc{constructor(){super("Zone is an abstract class")}}const Pe="numeric",uo="short",Zi="long",pO={year:Pe,month:Pe,day:Pe},Yq={year:Pe,month:uo,day:Pe},DAe={year:Pe,month:uo,day:Pe,weekday:uo},Jq={year:Pe,month:Zi,day:Pe},Xq={year:Pe,month:Zi,day:Pe,weekday:Zi},Kq={hour:Pe,minute:Pe},Zq={hour:Pe,minute:Pe,second:Pe},eH={hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},tH={hour:Pe,minute:Pe,second:Pe,timeZoneName:Zi},nH={hour:Pe,minute:Pe,hourCycle:"h23"},rH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},iH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:uo},sH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:Zi},oH={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},uH={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},aH={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe},lH={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe,second:Pe},NAe={year:Pe,month:uo,day:Pe,weekday:uo,hour:Pe,minute:Pe},cH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,timeZoneName:uo},fH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},xH={year:Pe,month:Zi,day:Pe,weekday:Zi,hour:Pe,minute:Pe,timeZoneName:Zi},dH={year:Pe,month:Zi,day:Pe,weekday:Zi,hour:Pe,minute:Pe,second:Pe,timeZoneName:Zi};function vt(t){return typeof t>"u"}function Pc(t){return typeof t=="number"}function Av(t){return typeof t=="number"&&t%1===0}function wAe(t){return typeof t=="string"}function FAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function hH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function LAe(t){return Array.isArray(t)?t:[t]}function pH(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function IAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function pd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ha(t,e,n){return Av(t)&&t>=e&&t<=n}function $Ae(t,e){return t-e*Math.floor(t/e)}function On(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Pl(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Mc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function gO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function mO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function b1(t){return t%4===0&&(t%100!==0||t%400===0)}function R1(t){return b1(t)?366:365}function vv(t,e){const n=$Ae(e-1,12)+1,r=t+(e-n)/12;return n===2?b1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function yO(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function Sv(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function EO(t){return t>99?t:t>60?1900+t:2e3+t}function gH(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function _v(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function mH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new bs(`Invalid unit value ${t}`);return e}function Cv(t,e){const n={};for(const r in t)if(pd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=mH(i)}return n}function O1(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${On(n,2)}:${On(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${On(n,2)}${On(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Tv(t){return IAe(t,["hour","minute","second","millisecond"])}const yH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,BAe=["January","February","March","April","May","June","July","August","September","October","November","December"],EH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],kAe=["J","F","M","A","M","J","J","A","S","O","N","D"];function AH(t){switch(t){case"narrow":return[...kAe];case"short":return[...EH];case"long":return[...BAe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const vH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],SH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],PAe=["M","T","W","T","F","S","S"];function _H(t){switch(t){case"narrow":return[...PAe];case"short":return[...SH];case"long":return[...vH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const CH=["AM","PM"],MAe=["Before Christ","Anno Domini"],jAe=["BC","AD"],UAe=["B","A"];function TH(t){switch(t){case"narrow":return[...UAe];case"short":return[...jAe];case"long":return[...MAe];default:return null}}function qAe(t){return CH[t.hour<12?0:1]}function HAe(t,e){return _H(e)[t.weekday-1]}function zAe(t,e){return AH(e)[t.month-1]}function QAe(t,e){return TH(e)[t.year<0?0:1]}function GAe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function bH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const WAe={D:pO,DD:Yq,DDD:Jq,DDDD:Xq,t:Kq,tt:Zq,ttt:eH,tttt:tH,T:nH,TT:rH,TTT:iH,TTTT:sH,f:oH,ff:aH,fff:cH,ffff:xH,F:uH,FF:lH,FFF:fH,FFFF:dH};class bi{static create(e,n={}){return new bi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return WAe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return On(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?qAe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?zAe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?HAe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=bi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?QAe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return bH(bi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=bi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return bH(s,i(u))}}class ao{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let gd=class{get type(){throw new kl}get name(){throw new kl}get ianaName(){return this.name}get isUniversal(){throw new kl}offsetName(e,n){throw new kl}formatOffset(e,n){throw new kl}offset(e){throw new kl}equals(e){throw new kl}get isValid(){throw new kl}},AO=null;class bv extends gd{static get instance(){return AO===null&&(AO=new bv),AO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return gH(e,n,r)}formatOffset(e,n){return O1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let Rv={};function VAe(t){return Rv[t]||(Rv[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),Rv[t]}const YAe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function JAe(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function XAe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=YAe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let Ov={};class uu extends gd{static create(e){return Ov[e]||(Ov[e]=new uu(e)),Ov[e]}static resetCache(){Ov={},Rv={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=uu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return gH(e,n,r,this.name)}formatOffset(e,n){return O1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=VAe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?XAe(r,n):JAe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=yO({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let vO=null;class Lr extends gd{static get utcInstance(){return vO===null&&(vO=new Lr(0)),vO}static instance(e){return e===0?Lr.utcInstance:new Lr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Lr(_v(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${O1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${O1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return O1(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class RH extends gd{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function Ml(t,e){if(vt(t)||t===null)return e;if(t instanceof gd)return t;if(wAe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Lr.utcInstance:Lr.parseSpecifier(n)||uu.create(t)}else return Pc(t)?Lr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new RH(t)}let OH=()=>Date.now(),DH="system",NH=null,wH=null,FH=null,LH;class Dn{static get now(){return OH}static set now(e){OH=e}static set defaultZone(e){DH=e}static get defaultZone(){return Ml(DH,bv.instance)}static get defaultLocale(){return NH}static set defaultLocale(e){NH=e}static get defaultNumberingSystem(){return wH}static set defaultNumberingSystem(e){wH=e}static get defaultOutputCalendar(){return FH}static set defaultOutputCalendar(e){FH=e}static get throwOnInvalid(){return LH}static set throwOnInvalid(e){LH=e}static resetCaches(){cn.resetCache(),uu.resetCache()}}let IH={};function KAe(t,e={}){const n=JSON.stringify([t,e]);let r=IH[n];return r||(r=new Intl.ListFormat(t,e),IH[n]=r),r}let SO={};function _O(t,e={}){const n=JSON.stringify([t,e]);let r=SO[n];return r||(r=new Intl.DateTimeFormat(t,e),SO[n]=r),r}let CO={};function ZAe(t,e={}){const n=JSON.stringify([t,e]);let r=CO[n];return r||(r=new Intl.NumberFormat(t,e),CO[n]=r),r}let TO={};function eve(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=TO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),TO[i]=s),s}let D1=null;function tve(){return D1||(D1=new Intl.DateTimeFormat().resolvedOptions().locale,D1)}function nve(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=_O(t).resolvedOptions()}catch{n=_O(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function rve(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function ive(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function sve(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function Dv(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function ove(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class uve{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=ZAe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):mO(e,3);return On(n,this.padTo)}}}class ave{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&uu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=_O(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class lve{constructor(e,n,r){this.opts={style:"long",...r},!n&&hH()&&(this.rtf=eve(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):GAe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class cn{static fromOpts(e){return cn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Dn.defaultLocale,o=s||(i?"en-US":tve()),u=n||Dn.defaultNumberingSystem,a=r||Dn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){D1=null,SO={},CO={},TO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=nve(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=rve(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=ove(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:cn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return Dv(this,e,r,AH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=ive(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return Dv(this,e,r,_H,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=sve(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return Dv(this,void 0,e,()=>CH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return Dv(this,e,n,TH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new uve(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new ave(e,this.intl,n)}relFormatter(e={}){return new lve(this.intl,this.isEnglish(),e)}listFormatter(e={}){return KAe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function md(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function yd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Ed(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function $H(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Pl(e[n+i]);return[r,null,n+i]}}const BH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,cve=`(?:${BH.source}?(?:\\[(${yH.source})\\])?)?`,bO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,kH=RegExp(`${bO.source}${cve}`),RO=RegExp(`(?:T${kH.source})?`),fve=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,xve=/(\d{4})-?W(\d\d)(?:-?(\d))?/,dve=/(\d{4})-?(\d{3})/,hve=$H("weekYear","weekNumber","weekDay"),pve=$H("year","ordinal"),gve=/(\d{4})-(\d\d)-(\d\d)/,PH=RegExp(`${bO.source} ?(?:${BH.source}|(${yH.source}))?`),mve=RegExp(`(?: ${PH.source})?`);function Ad(t,e,n){const r=t[e];return vt(r)?n:Pl(r)}function yve(t,e){return[{year:Ad(t,e),month:Ad(t,e+1,1),day:Ad(t,e+2,1)},null,e+3]}function vd(t,e){return[{hours:Ad(t,e,0),minutes:Ad(t,e+1,0),seconds:Ad(t,e+2,0),milliseconds:gO(t[e+3])},null,e+4]}function N1(t,e){const n=!t[e]&&!t[e+1],r=_v(t[e+1],t[e+2]),i=n?null:Lr.instance(r);return[{},i,e+3]}function w1(t,e){const n=t[e]?uu.create(t[e]):null;return[{},n,e+1]}const Eve=RegExp(`^T?${bO.source}$`),Ave=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function vve(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(Mc(n)),months:x(Mc(r)),weeks:x(Mc(i)),days:x(Mc(s)),hours:x(Mc(o)),minutes:x(Mc(u)),seconds:x(Mc(a),a==="-0"),milliseconds:x(gO(l),f)}]}const Sve={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function OO(t,e,n,r,i,s,o){const u={year:e.length===2?EO(Pl(e)):Pl(e),month:EH.indexOf(n)+1,day:Pl(r),hour:Pl(i),minute:Pl(s)};return o&&(u.second=Pl(o)),t&&(u.weekday=t.length>3?vH.indexOf(t)+1:SH.indexOf(t)+1),u}const _ve=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Cve(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=OO(e,i,r,n,s,o,u);let h;return a?h=Sve[a]:l?h=0:h=_v(c,f),[x,new Lr(h)]}function Tve(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const bve=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Rve=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Ove=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function MH(t){const[,e,n,r,i,s,o,u]=t;return[OO(e,i,r,n,s,o,u),Lr.utcInstance]}function Dve(t){const[,e,n,r,i,s,o,u]=t;return[OO(e,u,n,r,i,s,o),Lr.utcInstance]}const Nve=md(fve,RO),wve=md(xve,RO),Fve=md(dve,RO),Lve=md(kH),jH=yd(yve,vd,N1,w1),Ive=yd(hve,vd,N1,w1),$ve=yd(pve,vd,N1,w1),Bve=yd(vd,N1,w1);function kve(t){return Ed(t,[Nve,jH],[wve,Ive],[Fve,$ve],[Lve,Bve])}function Pve(t){return Ed(Tve(t),[_ve,Cve])}function Mve(t){return Ed(t,[bve,MH],[Rve,MH],[Ove,Dve])}function jve(t){return Ed(t,[Ave,vve])}const Uve=yd(vd);function qve(t){return Ed(t,[Eve,Uve])}const Hve=md(gve,mve),zve=md(PH),Qve=yd(vd,N1,w1);function Gve(t){return Ed(t,[Hve,jH],[zve,Qve])}const Wve="Invalid Duration",UH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Vve={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...UH},Rs=146097/400,Sd=146097/4800,Yve={years:{quarters:4,months:12,weeks:Rs/7,days:Rs,hours:Rs*24,minutes:Rs*24*60,seconds:Rs*24*60*60,milliseconds:Rs*24*60*60*1e3},quarters:{months:3,weeks:Rs/28,days:Rs/4,hours:Rs*24/4,minutes:Rs*24*60/4,seconds:Rs*24*60*60/4,milliseconds:Rs*24*60*60*1e3/4},months:{weeks:Sd/7,days:Sd,hours:Sd*24,minutes:Sd*24*60,seconds:Sd*24*60*60,milliseconds:Sd*24*60*60*1e3},...UH},jc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Jve=jc.slice(0).reverse();function Uc(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new St(r)}function Xve(t){return t<0?Math.floor(t):Math.ceil(t)}function qH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?Xve(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Kve(t,e){Jve.reduce((n,r)=>vt(e[r])?n:(n&&qH(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||cn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Yve:Vve,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new bs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:Cv(e,St.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Pc(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new bs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=jve(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=qve(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Duration is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new OAe(r);return new St({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new Vq(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?bi.create(this.loc,r).formatDurationFromString(this,e):Wve}toHuman(e={}){const n=jc.map(r=>{const i=this.values[r];return vt(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=mO(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e),r={};for(const i of jc)(pd(n.values,i)||pd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Uc(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=mH(e(this.values[r],r));return Uc(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...Cv(e,St.normalizeUnit)};return Uc(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),Uc(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Kve(this.matrix,e),Uc(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of jc)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;Pc(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)jc.indexOf(l)>jc.indexOf(o)&&qH(this.matrix,i,l,n,o)}else Pc(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return Uc(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return Uc(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of jc)if(!n(this.values[r],e.values[r]))return!1;return!0}}const F1="Invalid Interval";function Zve(t,e){return!t||!t.isValid?fn.invalid("missing or invalid start"):!e||!e.isValid?fn.invalid("missing or invalid end"):e<t?fn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class fn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Interval is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new RAe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=B1(e),i=B1(n),s=Zve(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=B1(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=B1(e);return fn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return fn.before(u,l)}}return fn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?fn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(B1).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(fn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(fn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:fn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return fn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(fn.fromDateTimes(n,a.time)),n=null);return fn.merge(i)}difference(...e){return fn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:F1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:F1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:F1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:F1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:F1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let L1=class{static hasDST(e=Dn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return uu.isValidZone(e)}static normalizeZone(e){return Ml(e,Dn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return cn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return cn.create(n,null,"gregory").eras(e)}static features(){return{relative:hH()}}};function HH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function e4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=HH(u,a);return(l-l%7)/7}],["days",HH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function t4e(t,e,n,r){let[i,s,o,u]=e4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const DO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},zH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},n4e=DO.hanidec.replace(/[\[|\]]/g,"").split("");function r4e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(DO.hanidec)!==-1)e+=n4e.indexOf(t[n]);else for(const i in zH){const[s,o]=zH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function lo({numberingSystem:t},e=""){return new RegExp(`${DO[t||"latn"]}${e}`)}const i4e="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(r4e(n))}}const QH="[  ]",GH=new RegExp(QH,"g");function s4e(t){return t.replace(/\./g,"\\.?").replace(GH,QH)}function WH(t){return t.replace(/\./g,"").replace(GH," ").toLowerCase()}function co(t,e){return t===null?null:{regex:RegExp(t.map(s4e).join("|")),deser:([n])=>t.findIndex(r=>WH(n)===WH(r))+e}}function VH(t,e){return{regex:t,deser:([,n,r])=>_v(n,r),groups:e}}function NO(t){return{regex:t,deser:([e])=>e}}function o4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function u4e(t,e){const n=lo(e),r=lo(e,"{2}"),i=lo(e,"{3}"),s=lo(e,"{4}"),o=lo(e,"{6}"),u=lo(e,"{1,2}"),a=lo(e,"{1,3}"),l=lo(e,"{1,6}"),c=lo(e,"{1,9}"),f=lo(e,"{2,4}"),x=lo(e,"{4,6}"),h=g=>({regex:RegExp(o4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return co(e.eras("short",!1),0);case"GG":return co(e.eras("long",!1),0);case"y":return Ft(l);case"yy":return Ft(f,EO);case"yyyy":return Ft(s);case"yyyyy":return Ft(x);case"yyyyyy":return Ft(o);case"M":return Ft(u);case"MM":return Ft(r);case"MMM":return co(e.months("short",!0,!1),1);case"MMMM":return co(e.months("long",!0,!1),1);case"L":return Ft(u);case"LL":return Ft(r);case"LLL":return co(e.months("short",!1,!1),1);case"LLLL":return co(e.months("long",!1,!1),1);case"d":return Ft(u);case"dd":return Ft(r);case"o":return Ft(a);case"ooo":return Ft(i);case"HH":return Ft(r);case"H":return Ft(u);case"hh":return Ft(r);case"h":return Ft(u);case"mm":return Ft(r);case"m":return Ft(u);case"q":return Ft(u);case"qq":return Ft(r);case"s":return Ft(u);case"ss":return Ft(r);case"S":return Ft(a);case"SSS":return Ft(i);case"u":return NO(c);case"uu":return NO(u);case"uuu":return Ft(n);case"a":return co(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,EO);case"W":return Ft(u);case"WW":return Ft(r);case"E":case"c":return Ft(n);case"EEE":return co(e.weekdays("short",!1,!1),1);case"EEEE":return co(e.weekdays("long",!1,!1),1);case"ccc":return co(e.weekdays("short",!0,!1),1);case"cccc":return co(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return VH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return VH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return NO(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:i4e};return m.token=t,m}const a4e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function l4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=a4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function c4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function f4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(pd(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function x4e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return vt(t.z)||(n=uu.create(t.z)),vt(t.Z)||(n||(n=new Lr(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),vt(t.u)||(t.S=gO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let wO=null;function d4e(){return wO||(wO=st.fromMillis(1555555555555)),wO}function h4e(t,e){if(t.literal)return t;const n=bi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=bi.create(e,n).formatDateTimeParts(d4e()).map(o=>l4e(o,e,n));return s.includes(void 0)?t:s}function p4e(t,e){return Array.prototype.concat(...t.map(n=>h4e(n,e)))}function YH(t,e,n){const r=p4e(bi.parseFormat(n),t),i=r.map(o=>u4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=c4e(i),a=RegExp(o,"i"),[l,c]=f4e(e,a,u),[f,x,h]=c?x4e(c):[null,null,void 0];if(pd(c,"a")&&pd(c,"H"))throw new T1("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function g4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=YH(t,e,n);return[r,i,s,o]}const JH=[0,31,59,90,120,151,181,212,243,273,304,334],XH=[0,31,60,91,121,152,182,213,244,274,305,335];function Os(t,e){return new ao("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function KH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function ZH(t,e,n){return n+(b1(t)?XH:JH)[e-1]}function ez(t,e){const n=b1(t)?XH:JH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function FO(t){const{year:e,month:n,day:r}=t,i=ZH(e,n,r),s=KH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=Sv(u)):o>Sv(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...Tv(t)}}function tz(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=KH(e,1,4),s=R1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=R1(u)):o>s?(u=e+1,o-=R1(e)):u=e;const{month:a,day:l}=ez(u,o);return{year:u,month:a,day:l,...Tv(t)}}function LO(t){const{year:e,month:n,day:r}=t,i=ZH(e,n,r);return{year:e,ordinal:i,...Tv(t)}}function nz(t){const{year:e,ordinal:n}=t,{month:r,day:i}=ez(e,n);return{year:e,month:r,day:i,...Tv(t)}}function m4e(t){const e=Av(t.weekYear),n=ha(t.weekNumber,1,Sv(t.weekYear)),r=ha(t.weekday,1,7);return e?n?r?!1:Os("weekday",t.weekday):Os("week",t.week):Os("weekYear",t.weekYear)}function y4e(t){const e=Av(t.year),n=ha(t.ordinal,1,R1(t.year));return e?n?!1:Os("ordinal",t.ordinal):Os("year",t.year)}function rz(t){const e=Av(t.year),n=ha(t.month,1,12),r=ha(t.day,1,vv(t.year,t.month));return e?n?r?!1:Os("day",t.day):Os("month",t.month):Os("year",t.year)}function iz(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=ha(e,0,23)||e===24&&n===0&&r===0&&i===0,o=ha(n,0,59),u=ha(r,0,59),a=ha(i,0,999);return s?o?u?a?!1:Os("millisecond",i):Os("second",r):Os("minute",n):Os("hour",e)}const IO="Invalid DateTime",sz=864e13;function Nv(t){return new ao("unsupported zone",`the zone "${t.name}" is not supported`)}function $O(t){return t.weekData===null&&(t.weekData=FO(t.c)),t.weekData}function I1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function oz(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function uz(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function wv(t,e,n){return oz(yO(t),e,n)}function az(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,vv(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=yO(s);let[a,l]=oz(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function $1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new ao("unparsable",`the input "${i}" can't be parsed as ${r}`))}function Fv(t,e,n=!0){return t.isValid?bi.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function BO(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=On(t.c.year,n?6:4),e?(r+="-",r+=On(t.c.month),r+="-",r+=On(t.c.day)):(r+=On(t.c.month),r+=On(t.c.day)),r}function lz(t,e,n,r,i,s){let o=On(t.c.hour);return e?(o+=":",o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=On(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=On(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=On(Math.trunc(-t.o/60)),o+=":",o+=On(Math.trunc(-t.o%60))):(o+="+",o+=On(Math.trunc(t.o/60)),o+=":",o+=On(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const cz={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},E4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},A4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},fz=["year","month","day","hour","minute","second","millisecond"],v4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],S4e=["year","ordinal","hour","minute","second","millisecond"];function xz(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Vq(t);return e}function dz(t,e){const n=Ml(e.zone,Dn.defaultZone),r=cn.fromObject(e),i=Dn.now();let s,o;if(vt(t.year))s=i;else{for(const l of fz)vt(t[l])&&(t[l]=cz[l]);const u=rz(t)||iz(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=wv(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function hz(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=mO(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function pz(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class st{constructor(e){const n=e.zone||Dn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new ao("invalid input"):null)||(n.isValid?null:Nv(n));this.ts=vt(e.ts)?Dn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=uz(this.ts,u),r=Number.isNaN(i.year)?new ao("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||cn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=pz(arguments),[r,i,s,o,u,a,l]=n;return dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=pz(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Lr.utcInstance,dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=FAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=Ml(n.zone,Dn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:cn.fromObject(n)}):st.invalid(Nv(i))}static fromMillis(e,n={}){if(Pc(e))return e<-sz||e>sz?st.invalid("Timestamp out of range"):new st({ts:e,zone:Ml(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Pc(e))return new st({ts:e*1e3,zone:Ml(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Ml(n.zone,Dn.defaultZone);if(!r.isValid)return st.invalid(Nv(r));const i=Dn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=Cv(e,xz),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new T1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=uz(i,s);h?(p=v4e,m=E4e,g=FO(g)):u?(p=S4e,m=A4e,g=LO(g)):(p=fz,m=cz);let y=!1;for(const T of p){const R=o[T];vt(R)?y?o[T]=m[T]:o[T]=g[T]:y=!0}const E=h?m4e(o):u?y4e(o):rz(o),A=E||iz(o);if(A)return st.invalid(A);const v=h?tz(o):u?nz(o):o,[_,S]=wv(v,s,r),C=new st({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=kve(e);return $1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=Pve(e);return $1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Mve(e);return $1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new bs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=g4e(o,e,n);return c?st.invalid(c):$1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=Gve(e);return $1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the DateTime is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new bAe(r);return new st({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?$O(this).weekYear:NaN}get weekNumber(){return this.isValid?$O(this).weekNumber:NaN}get weekday(){return this.isValid?$O(this).weekday:NaN}get ordinal(){return this.isValid?LO(this.c).ordinal:NaN}get monthShort(){return this.isValid?L1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?L1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?L1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?L1.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return b1(this.year)}get daysInMonth(){return vv(this.year,this.month)}get daysInYear(){return this.isValid?R1(this.year):NaN}get weeksInWeekYear(){return this.isValid?Sv(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=bi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Lr.instance(e),n)}toLocal(){return this.setZone(Dn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Ml(e,Dn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=wv(o,s,e)}return I1(this,{ts:i,zone:e})}else return st.invalid(Nv(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return I1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=Cv(e,xz),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new T1("Can't mix ordinal dates with month/day");let l;r?l=tz({...FO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(vv(l.year,l.month),l.day))):l=nz({...LO(this.c),...n});const[c,f]=wv(l,this.o,this.zone);return I1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return I1(this,az(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return I1(this,az(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?bi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):IO}toLocaleString(e=pO,n={}){return this.isValid?bi.create(this.loc.clone(n),e).formatDateTime(this):IO}toLocaleParts(e={}){return this.isValid?bi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=BO(this,o);return u+="T",u+=lz(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?BO(this,e==="extended"):null}toISOWeekDate(){return Fv(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+lz(this,o==="extended",n,e,r,s):null}toRFC2822(){return Fv(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Fv(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?BO(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),Fv(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():IO}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=LAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=t4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?fn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||st.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),hz(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?hz(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new bs("min requires all arguments be DateTimes");return pH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new bs("max requires all arguments be DateTimes");return pH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return YH(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return pO}static get DATE_MED(){return Yq}static get DATE_MED_WITH_WEEKDAY(){return DAe}static get DATE_FULL(){return Jq}static get DATE_HUGE(){return Xq}static get TIME_SIMPLE(){return Kq}static get TIME_WITH_SECONDS(){return Zq}static get TIME_WITH_SHORT_OFFSET(){return eH}static get TIME_WITH_LONG_OFFSET(){return tH}static get TIME_24_SIMPLE(){return nH}static get TIME_24_WITH_SECONDS(){return rH}static get TIME_24_WITH_SHORT_OFFSET(){return iH}static get TIME_24_WITH_LONG_OFFSET(){return sH}static get DATETIME_SHORT(){return oH}static get DATETIME_SHORT_WITH_SECONDS(){return uH}static get DATETIME_MED(){return aH}static get DATETIME_MED_WITH_SECONDS(){return lH}static get DATETIME_MED_WITH_WEEKDAY(){return NAe}static get DATETIME_FULL(){return cH}static get DATETIME_FULL_WITH_SECONDS(){return fH}static get DATETIME_HUGE(){return xH}static get DATETIME_HUGE_WITH_SECONDS(){return dH}}function B1(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Pc(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new bs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const gz=_$(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:Lr,IANAZone:uu,Info:L1,Interval:fn,InvalidZone:RH,Settings:Dn,SystemZone:bv,VERSION:"2.5.2",Zone:gd},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.LiteralYear=Xn.LiteralQuarter=Xn.LiteralMonth=Xn.LiteralWeek=Xn.LiteralDay=Xn.LiteralHour=Xn.LiteralTimestamp=Xn.TimeFormatError=void 0;const jl=gz,_4e=oe,C4e=Fl,mz=fd,kO=xt;class T4e extends Error{}Xn.TimeFormatError=T4e;function qc(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const yz="yyyy",Ez=`${yz}-LL`,Ds=`${Ez}-dd`,Az=`${Ds} HH`,vz=`${Az}:mm`,PO=`${vz}:ss`;class Sz extends kO.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class MO extends Sz{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=qc(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=jl.DateTime.fromFormat(e,PO);if(s.isValid)return new MO(r,n);if(s=jl.DateTime.fromFormat(e,vz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(PO);return new jO(r,n,"timestamp",o)}}}Xn.LiteralTimestamp=MO;class jO extends Sz{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,kO.getMorphicValue)(i,"timestamp"),a=(0,kO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,_4e.isTemporalField)(o.dataType)){const u=o.dataType;return new C4e.Range(new mz.ExprTime(u,i.value),new mz.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class UO extends jO{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Az);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(PO),new UO(n,r)}}Xn.LiteralHour=UO;class k1 extends jO{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class qO extends k1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Ds);if(i.isValid)return r=i.plus({day:1}).toFormat(Ds),new qO(n,r)}}Xn.LiteralDay=qO;class HO extends k1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=qc(e,!1);let r=n.text;const i=n.text.slice(0,10),s=jl.DateTime.fromFormat(i,Ds);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(Ds),r=u.toFormat(Ds),new HO(n,r)}}}Xn.LiteralWeek=HO;class zO extends k1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Ez);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new zO(n,r)}}}Xn.LiteralMonth=zO;class QO extends k1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=qc(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=jl.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(Ds),r=u.toFormat(Ds),new QO(n,r)}}}Xn.LiteralQuarter=QO;class GO extends k1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,yz);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new GO(n,r)}}}Xn.LiteralYear=GO;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.PartialCompare=void 0;const b4e=xt;class R4e extends b4e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}Lv.PartialCompare=R4e;var _d={};Object.defineProperty(_d,"__esModule",{value:!0}),_d.PickWhen=_d.Pick=void 0;const au=oe,Cd=rn,O4e=xt,D4e=We;function Iv(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class N4e extends O4e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,au.maxExpressionType)(o,(0,au.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,au.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Cd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=Iv(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=Iv(s,l),Cd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,au.maxExpressionType)(o,l.expressionType),evalSpace:(0,au.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Cd.FT.typeEq(a.when,Cd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Cd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=Iv(i,a.pick),s=(0,au.maxExpressionType)(s,(0,au.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,au.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,au.maxExpressionType)(s,u.expressionType),o=(0,au.mergeEvalSpaces)(o,u.evalSpace),i=Iv(i,u),Cd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}_d.Pick=N4e;class w4e extends D4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}_d.PickWhen=w4e;var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.RecordLiteral=Td.RecordElement=void 0;const _z=As,F4e=xt,L4e=We;class I4e extends L4e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Td.RecordElement=I4e;class $4e extends F4e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,_z.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,_z.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Td.RecordLiteral=$4e;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.Timeframe=void 0;const B4e=oe,k4e=We;class P4e extends k4e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,B4e.isTimestampUnit)(n)?n:"second"}}$v.Timeframe=P4e;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.TopBy=void 0;const M4e=oe,Cz=xt,j4e=We;class U4e extends j4e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof Cz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof Cz.ExpressionDef){const n=this.by.getExpression(e);return(0,M4e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}Bv.TopBy=U4e;var Ul={};Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.ImportStatement=Ul.ImportSelect=Ul.ImportSourceName=void 0;const WO=We;class q4e extends WO.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}Ul.ImportSourceName=q4e;class H4e extends WO.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}Ul.ImportSelect=H4e;class z4e extends WO.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}Ul.ImportStatement=z4e;var P1={};Object.defineProperty(P1,"__esModule",{value:!0}),P1.ExtendBlock=void 0;const Q4e=We,G4e=mn;class W4e extends Q4e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=G4e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}P1.ExtendBlock=W4e;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.Argument=void 0;const V4e=We;class Y4e extends V4e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}kv.Argument=Y4e;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.HasParameter=void 0;const Tz=oe,J4e=We;class X4e extends J4e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,Tz.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,Tz.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}Pv.HasParameter=X4e;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.AnonymousQuery=void 0;const K4e=We,Z4e=Nr;class eSe extends K4e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=Z4e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}Mv.AnonymousQuery=eSe;var ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.View=void 0;const tSe=We;let nSe=class extends tSe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};ql.View=nSe;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.ViewArrow=void 0;const rSe=hr,iSe=ql;class sSe extends iSe.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new rSe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}jv.ViewArrow=sSe;var Uv={},M1={};Object.defineProperty(M1,"__esModule",{value:!0}),M1.refine=void 0;const VO=As,YO=Ol;function oSe(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,VO.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,VO.isQuerySegment)(o)&&(0,VO.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,YO.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,YO.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(YO.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}M1.refine=oSe,Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ViewRefine=void 0;const uSe=Fr,aSe=Xi,lSe=M1,cSe=ql;class fSe extends cSe.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,aSe.getFinalStruct)(this.refinement,e.structDef(),i):uSe.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,lSe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}Uv.ViewRefine=fSe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ReferenceView=void 0;const JO=oe,bz=Fr,xSe=Xi,dSe=wr,hSe=M1,pSe=ql;class gSe extends pSe.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:bz.ErrorFactory.structDef,outputStruct:bz.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof dSe.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,JO.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,JO.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,JO.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,xSe.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,hSe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}qv.ReferenceView=gSe;var Hv={},j1={},zv={},U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.Index=void 0;const mSe=We,ySe=mn;let ESe=class extends mSe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=ySe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};U1.Index=ESe;var q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.SampleProperty=void 0;const ASe=We,Rz=mn;class vSe extends ASe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=Rz.LegalRefinementStage.Tail,this.forceQueryClass=Rz.QueryClass.Index}sampling(){return this.sample}}q1.SampleProperty=vSe;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.IndexFieldSpace=void 0;const Oz=oe,XO=ht,SSe=wr,_Se=oo,CSe=A1,TSe=hr;class bSe extends _Se.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof XO.FieldReference?super.pushFields(n):n instanceof XO.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof SSe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof CSe.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof TSe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=XO.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,Oz.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,Oz.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}Qv.IndexFieldSpace=bSe,Object.defineProperty(zv,"__esModule",{value:!0}),zv.IndexBuilder=void 0;const KO=oe,RSe=Fr,OSe=so,DSe=U1,NSe=$l,wSe=q1,FSe=Qv;class LSe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new FSe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof OSe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof NSe.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof DSe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof wSe.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,KO.isIndexSegment)(e)&&!(0,KO.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),RSe.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,KO.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}zv.IndexBuilder=LSe;var Gv={},H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.GroupBy=void 0;const ISe=Ji,Dz=mn;class $Se extends ISe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=Dz.LegalRefinementStage.Single,this.forceQueryClass=Dz.QueryClass.Grouping}}H1.GroupBy=$Se;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ProjectFieldSpace=void 0;const ZO=oe,BSe=oo;class kSe extends BSe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,ZO.expressionIsAggregate)(e.expressionType)?!1:(0,ZO.expressionInvolvesAggregate)(e.expressionType)&&(0,ZO.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}Wv.ProjectFieldSpace=kSe;var Hl={},Hc={};Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.Ordering=Hc.OrderBy=void 0;const PSe=oe,Nz=Bl,wz=We,MSe=mn;class jSe extends wz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof Nz.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof Nz.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,PSe.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Hc.OrderBy=jSe;class USe extends wz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=MSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Hc.Ordering=USe;var z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.Top=void 0;const Fz=oe,qSe=Bl,HSe=We,zSe=mn;let QSe=class extends HSe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=zSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof qSe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,Fz.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,Fz.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};z1.Top=QSe,Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.ReduceBuilder=Hl.QuerySegmentBuilder=void 0;const Lz=oe,GSe=Fr,WSe=so,VSe=$l,Iz=Hc,$z=z1,YSe=oo,JSe=Ji;class Bz{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof JSe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof WSe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof $z.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof VSe.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof Iz.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof $z.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof Iz.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}Hl.QuerySegmentBuilder=Bz;class XSe extends Bz{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new YSe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,Lz.isReduceSegment)(e)||(0,Lz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),GSe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Hl.ReduceBuilder=XSe,Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ProjectBuilder=void 0;const kz=oe,KSe=Fr,ZSe=H1,e_e=Wv,t_e=Hl;class n_e extends t_e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new e_e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof ZSe.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,kz.isProjectSegment)(e)||(0,kz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),KSe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Gv.ProjectBuilder=n_e;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.PartialBuilder=void 0;const r_e=As,i_e=Hl;class s_e extends i_e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,r_e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}Vv.PartialBuilder=s_e,Object.defineProperty(j1,"__esModule",{value:!0}),j1.QOpDesc=void 0;const o_e=zv,u_e=Gv,a_e=Hl,l_e=We,c_e=Xi,f_e=hr,zc=mn,x_e=Vv;class d_e extends l_e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=zc.QueryClass.Grouping:this.refineThis.type==="project"?n=zc.QueryClass.Project:this.refineThis.type==="index"&&(n=zc.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=zc.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case zc.QueryClass.Grouping:return new a_e.ReduceBuilder(e,this.refineThis,n,r);case zc.QueryClass.Project:return new u_e.ProjectBuilder(e,this.refineThis,n,r);case zc.QueryClass.Index:return new o_e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new x_e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new f_e.StaticSourceSpace((0,c_e.opOutputStruct)(this,e.structDef(),i))}}}j1.QOpDesc=d_e,Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.QOpDescView=void 0;const h_e=oe,p_e=hr,Pz=j1,g_e=Xi,e7=mn,m_e=ql;class y_e extends m_e.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,h_e.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new Pz.QOpDesc([]),o=new Pz.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case e7.LegalRefinementStage.Head:s.push(u);break;case e7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case e7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,g_e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new p_e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}Hv.QOpDescView=y_e;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const Mz=oe,E_e=rn,A_e=cd,v_e=We,Qc=In,S_e=Nr,__e=wr;class zl extends v_e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=S_e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new t7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,Mz.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,A_e.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof t7&&e.foundCircle)&&r.dataType!=="error"){const u=E_e.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new jz(e,this))}}xn.AtomicFieldDeclaration=zl;class C_e extends zl{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=C_e;class T_e extends zl{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=T_e;class b_e extends zl{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=b_e;class R_e extends zl{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=R_e;class O_e extends zl{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=O_e;class D_e extends zl{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=D_e;class N_e extends zl{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=N_e;class t7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}xn.DefSpace=t7;class jz extends __e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,Mz.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}xn.FieldDefinitionValue=jz;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.Aggregate=void 0;const w_e=Ji,Uz=mn;let F_e=class extends w_e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=Uz.LegalRefinementStage.Single,this.forceQueryClass=Uz.QueryClass.Grouping}};Yv.Aggregate=F_e;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.Calculate=void 0;const L_e=Ji,I_e=mn;class $_e extends L_e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=I_e.LegalRefinementStage.Single}}Jv.Calculate=$_e;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Dimensions=void 0;const B_e=Dl;class k_e extends B_e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Q1.Dimensions=k_e;var G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.Measures=void 0;const P_e=Dl;class M_e extends P_e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}G1.Measures=M_e;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.Nests=void 0;const j_e=Ji,qz=mn;class U_e extends j_e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=qz.LegalRefinementStage.Single,this.forceQueryClass=qz.QueryClass.Grouping}}Xv.Nests=U_e;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ProjectStatement=void 0;const q_e=Ji,Hz=mn;class H_e extends q_e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=Hz.QueryClass.Project,this.queryRefinementStage=Hz.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}Kv.ProjectStatement=H_e;var Ql={},pa={};Object.defineProperty(pa,"__esModule",{value:!0}),pa.findReferences=pa.deprecatedParseTableURI=pa.constructTableKey=void 0;const z_e=fl,n7=tn;function r7(t){const e=(0,n7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,n7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class Q_e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=zz(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,n7.getId)(e.connectionId()),r=r7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=r7(e.tableURI()),{connectionName:r,tablePath:i}=Qz(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=r7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function zz(t,e){return t===void 0?e:`${t}:${e}`}pa.constructTableKey=zz;function Qz(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}pa.deprecatedParseTableURI=Qz;function G_e(t,e,n){const r=new Q_e(t,e),i=r;return z_e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}pa.findReferences=G_e,Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.TableFunctionSource=Ql.TableMethodSource=Ql.TableSource=void 0;const Gz=pa,W_e=io,Wz=Fr;class i7 extends W_e.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return Wz.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,Gz.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),Wz.ErrorFactory.structDef}}Ql.TableSource=i7;class V_e extends i7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}Ql.TableMethodSource=V_e;class Y_e extends i7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,Gz.deprecatedParseTableURI)(this.tableURI)}}Ql.TableFunctionSource=Y_e;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.SQLString=void 0;const J_e=We,Vz=su;class X_e extends J_e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(K_e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof Vz.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}Zv.SQLString=X_e;function K_e(t){return t instanceof Vz.SourceQueryElement}var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.SourceDesc=void 0;const Z_e=We;class e5e extends Z_e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}e4.SourceDesc=e5e;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.isSourceProperty=void 0;const t5e=so,n5e=Dl,r5e=rd,i5e=wl,s5e=id,o5e=sd,u5e=od,a5e=Nl,l5e=Ci;function c5e(t){return t instanceof t5e.Filter||t instanceof l5e.JoinStatement||t instanceof n5e.DeclareFields||t instanceof r5e.FieldListEdit||t instanceof i5e.Renames||t instanceof s5e.PrimaryKey||t instanceof a5e.ObjectAnnotation||t instanceof o5e.Views||t instanceof u5e.TimezoneStatement}t4.isSourceProperty=c5e;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.isFieldCollectionMember=void 0;const f5e=xn,Yz=ht;function x5e(t){return t instanceof Yz.FieldReference||t instanceof Yz.WildcardFieldReference||t instanceof f5e.AtomicFieldDeclaration}n4.isFieldCollectionMember=x5e;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isQueryElement=void 0;const d5e=ud,h5e=ad,p5e=h1,g5e=p1;function m5e(t){return t instanceof d5e.QueryArrow||t instanceof h5e.QueryRefine||t instanceof p5e.QueryReference||t instanceof g5e.QueryRaw}r4.isQueryElement=m5e;var Jz={};Object.defineProperty(Jz,"__esModule",{value:!0});var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.isQueryProperty=void 0;function y5e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}i4.isQueryProperty=y5e;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.isQueryExtendProperty=void 0;const E5e=Q1,A5e=Ci,v5e=G1;function S5e(t){return t instanceof E5e.Dimensions||t instanceof v5e.Measures||t instanceof A5e.JoinStatement}s4.isQueryExtendProperty=S5e;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.isFieldPropStatement=void 0;const _5e=Ll,C5e=so,T5e=$l,b5e=hd;function R5e(t){return t instanceof C5e.Filter||t instanceof T5e.Limit||t instanceof b5e.PartitionBy||t instanceof _5e.FunctionOrdering}o4.isFieldPropStatement=R5e,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(r1,t),n(Kx,t),n(Zx,t),n(io,t),n(o1,t),n(su,t),n(wA,t),n(FA,t),n(BA,t),n(c1,t),n(MA,t),n(rd,t),n(id,t),n(wl,t),n(sd,t),n(od,t),n(jA,t),n(xd,t),n(qA,t),n(Ll,t),n(HA,t),n(da,t),n(zA,t),n(dd,t),n(QA,t),n(GA,t),n(WA,t),n(m1,t),n(VA,t),n(YA,t),n(XA,t),n(S1,t),n(E1,t),n(Lc,t),n(KA,t),n(ZA,t),n(tv,t),n(rv,t),n(iv,t),n(sv,t),n(ov,t),n(uv,t),n(av,t),n(lv,t),n(cv,t),n(fv,t),n(xv,t),n(dv,t),n(hv,t),n(mv,t),n(Xn,t),n(Lv,t),n(hd,t),n(_d,t),n(Td,t),n(Fl,t),n($v,t),n(Bv,t),n(_1,t),n(Ul,t),n(P1,t),n(kv,t),n(Pv,t),n(Mv,t),n(ad,t),n(ud,t),n(ql,t),n(jv,t),n(Uv,t),n(qv,t),n(Hv,t),n(xn,t),n(ht,t),n(Yv,t),n(Jv,t),n(Dl,t),n(Q1,t),n(P1,t),n(so,t),n(H1,t),n(U1,t),n(Ci,t),n(i1,t),n($l,t),n(G1,t),n(r1,t),n(Xv,t),n(Hc,t),n(Kv,t),n(j1,t),n(q1,t),n(z1,t),n(ld,t),n(Fc,t),n(g1,t),n(Ql,t),n(Zv,t),n(Nl,t),n(ou,t),n(e4,t),n(t4,t),n(xt,t),n(n4,t),n(Bl,t),n(We,t),n(r4,t),n(Jz,t),n(i4,t),n(s4,t),n(o4,t)}(vA);var u4={},bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.ConstantExpression=bd.ConstantFieldSpace=void 0;const O5e=xt;class Xz{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}bd.ConstantFieldSpace=Xz;class D5e extends O5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new Xz),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}bd.ConstantExpression=D5e;var N5e=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),w5e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),F5e=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&N5e(e,t,n);return w5e(e,t),e};Object.defineProperty(u4,"__esModule",{value:!0}),u4.MalloyToAST=void 0;const Kz=EE,L5e=o2,Z=F5e(vA),s7=SA,I5e=Qn,$5e=vA,$n=tn,o7=oe,B5e=ko,k5e=bd;class Zz extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class u7 extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const P5e=["##! m4warnings=error"];class M5e extends L5e.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of P5e){const s=B5e.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,s7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,s7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,s7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof u7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new Z.FieldName((0,$n.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new Z.ModelEntryReference((0,$n.getId)(e)),e.id())}defaultResult(){return new Z.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new I5e.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new Z.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof Z.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new Z.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,$n.getPlainString)(e);for(const i of r)i instanceof Kz.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,$n.getStringParts)(e))r instanceof Kz.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new Z.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>Z.isDocStatementOrDocStatementList(r)&&r,"statement");return new Z.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new Z.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new k5e.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new Z.HasParameter({name:(0,$n.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new Z.DefineSource((0,$n.getId)(e.sourceNameDef()),n instanceof Z.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>Z.isSourceProperty(s)&&s,"source property"),i=new Z.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new Z.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new Z.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new Z.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,$n.getShortString)(o));const u=new Z.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof Z.Join&&(n.push(s),s instanceof Z.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof Z.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new Z.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin&&(s.joinType="one"));const i=new Z.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new Z.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof Z.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new Z.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new Z.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new Z.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,o7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new Z.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,$n.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DimensionFieldDeclaration),r=new Z.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.MeasureFieldDeclaration),r=new Z.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(Z.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new Z.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DeclareFieldDeclaration),r=new Z.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new Z.RenameField((0,$n.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new Z.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new Z.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new Z.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new Z.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new Z.AcceptExceptFieldReference([this.getFieldName(r)]));return new Z.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new Z.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new Z.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>Z.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new Z.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof Z.FieldReference||i instanceof Z.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new Z.Aggregate(this.getQueryItems(e.queryFieldList(),Z.AggregateFieldDeclaration,Z.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new Z.GroupBy(this.getQueryItems(e.queryFieldList(),Z.GroupByFieldDeclaration,Z.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new Z.Calculate(this.getQueryItems(e.queryFieldList(),Z.CalculateFieldDeclaration,Z.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new Z.ExprGranularTime(new Z.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new Z.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,Z.ProjectFieldDeclaration,Z.ProjectFieldReference));return this.astAt(new Z.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,Z.ProjectFieldReference):void 0,s=this.astAt(new Z.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,$n.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new Z.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,Z.IndexFieldReference);return r.STAR()?this.astAt(new Z.WildcardFieldReference(s),e):this.astAt(s,e)});return new Z.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new Z.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new Z.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new Z.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new Z.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new Z.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new Z.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new Z.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new Z.Top(r,u)}const o=n.fieldExpr();o&&(i=new Z.Top(r,this.getFieldExpr(o)))}return i||(i=new Z.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new Z.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,$n.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof Z.SourceQueryElement){const s=new Z.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new Z.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new Z.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new Z.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof Z.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,$n.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new Z.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,$n.getId)(e.exploreQueryNameDef()),r=new Z.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new Z.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new Z.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new Z.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(Z.isComparison(i))return this.astAt(new Z.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new Z.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new Z.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new Z.ExprNow}visitExprNumber(e){return new Z.ExprNumber(e.text)}visitExprFieldPath(e){const n=new Z.ExprIdReference(this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new Z.ExprNULL}visitExprExpr(e){return new Z.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new Z.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new Z.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new Z.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(Z.isComparison(n))return new Z.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new Z.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,Z.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new Z.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new Z.ExprIdReference(r),n);return s==="min"?new Z.ExprMin(a):new Z.ExprMax(a)}else{if(s==="avg")return new Z.ExprAvg(u,i);if(s==="sum")return new Z.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new Z.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new Z.ExprCountDistinct(r):new Z.ExprCount,e);if(s==="min"){if(r)return new Z.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new Z.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new Z.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new Z.ExprAvg(r,i,o);if(s==="sum")return new Z.ExprSum(r,i,o)}return new Z.ExprNULL}visitExprApply(e){return new Z.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new Z.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,o7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new Z.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new Z.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new Z.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,$n.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,Z.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return Z.ExprTimeExtract.extractor(i)?this.astAt(new Z.ExprTimeExtract(i,r),e):this.astAt(new Z.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,o7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,$n.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),Z.ExprTimeExtract.extractor(l)?this.astAt(new Z.ExprTimeExtract(l,s),e):this.astAt(new Z.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new Z.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new Z.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new Z.Pick(n,this.getFieldExpr(e._pickElse)):new Z.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>Z.isFieldPropStatement(r)&&r,"field property statement");return new Z.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new Z.PartitionBy(e.id().map(n=>this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,Z.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,Z.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,Z.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,Z.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,Z.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,Z.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,Z.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new Z.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new Z.ImportSourceName((0,$n.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new Z.ImportSelect((0,$n.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new Z.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new Z.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new Z.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new Z.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new u7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new u7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new Z.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new Z.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new Z.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof Z.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new Zz)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new Z.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof Z.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new Z.ReferenceView(this.getFieldPath(e.fieldPath(),Z.ViewOrScalarFieldReference))}visitSegOps(e){return new Z.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new Z.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new Z.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof $5e.TableSource){const r=new Z.SQSource(n);return this.astAt(r,e)}return new Zz}visitSQSQL(e){const n=new Z.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new Z.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new Z.ExprNULL;return this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,s),e)}}u4.MalloyToAST=M5e;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.Zone=void 0;class j5e{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}a4.Zone=j5e;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.walkForDocumentSymbols=void 0;const U5e=fl,q5e=tn;class H5e{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,q5e.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function z5e(t,e,n){const r=new H5e(t,e,[],[]),i=r;return U5e.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}l4.walkForDocumentSymbols=z5e;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.walkForDocumentCompletions=void 0;const Q5e=fl,G5e=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],W5e=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],V5e=["source","explore","query","sql"];class Y5e{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of G5e)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of W5e)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of V5e)this.completions.push({type:"model_property",text:`${r}: `})}}}function J5e(t,e,n){const r=new Y5e(t,[],n),i=r;return Q5e.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}c4.walkForDocumentCompletions=J5e;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.walkForDocumentHelpContext=void 0;const X5e=hb;class K5e extends X5e.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function Z5e(t,e){return new K5e(e).visit(t)}f4.walkForDocumentHelpContext=Z5e;var x4={},W1={};Object.defineProperty(W1,"__esModule",{value:!0}),W1.locationContainsPosition=void 0;function eCe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}W1.locationContainsPosition=eCe,Object.defineProperty(x4,"__esModule",{value:!0}),x4.ReferenceList=void 0;const tCe=W1;class nCe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,tCe.locationContainsPosition)(r.location,e))return r}}x4.ReferenceList=nCe;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.isNeedResponse=void 0;function rCe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}d4.isNeedResponse=rCe;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.walkForModelAnnotation=void 0;const iCe=fl;class sCe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function oCe(t,e,n){const r=new sCe(t,e,n),i=r;return iCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}h4.walkForModelAnnotation=oCe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.walkForTablePath=void 0;const eQ=tn,uCe=fl;class aCe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,eQ.getId)(e.connectionId()),[r,i]=(0,eQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function lCe(t,e,n){const r=new aCe(t,e),i=r;return uCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}p4.walkForTablePath=lCe;var cCe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),fCe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),xCe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&cCe(e,t,n);return fCe(e,t),e};Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.MalloyParserErrorHandler=Ko.MalloyTranslator=Ko.MalloyChildTranslator=Ko.MalloyTranslation=void 0;const tQ=EE,dCe=oe,hCe=$E,pCe=F,nQ=xCe(vA),gCe=u4,a7=SA,mCe=pa,l7=a4,yCe=l4,ECe=c4,ACe=f4,vCe=x4,g4=d4,SCe=W1,rQ=ko,_Ce=h4,CCe=p4;class TCe extends hCe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class bCe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1321
+ `)),PA.ErrorFactory.structDef}else if(i.status==="present"){const s=this.select.location,o={...i.value,fields:i.value.fields.map(l=>({...l,location:s})),location:this.location},u=this.document(),a=u==null?void 0:u.currentModelAnnotation();return a&&(o.modelAnnotation=a),o}else return this.logError("non-top-level-sql-source","`connection_name.sql(...)` can currently only be used in top level source/query definitions"),PA.ErrorFactory.structDef}}g1.SQLSource=C3e,Object.defineProperty(BA,"__esModule",{value:!0}),BA.SQSource=void 0;const T3e=su,b3e=p1,R3e=g1;class O3e extends T3e.SourceQueryElement{constructor(e){super({theSource:e}),this.theSource=e,this.elementType="sq-source"}isSource(){return!0}getSource(){return this.theSource}getQuery(){if(this.theSource instanceof R3e.SQLSource){const e=new b3e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}BA.SQSource=O3e;var MA={};Object.defineProperty(MA,"__esModule",{value:!0}),MA.SQExtend=void 0;const D3e=o1,N3e=su;class w3e extends N3e.SourceQueryElement{constructor(e,n){super({sqSrc:e,extend:n}),this.sqSrc=e,this.extend=n,this.elementType="sq-extend"}getSource(){if(this.asSource)return this.asSource;const e=this.sqSrc.getSource();if(e)return this.asSource=new D3e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("failed-to-compute-source-to-extend","Could not compute source to extend")}isSource(){return!0}}MA.SQExtend=w3e;var jA={},m1={},y1={};Object.defineProperty(y1,"__esModule",{value:!0}),y1.BinaryBoolean=void 0;const vq=oe,F3e=_i,L3e=rn,I3e=ou,$3e=xt;class B3e extends $3e.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="abstract boolean binary",this.legalChildTypes=[L3e.FT.boolT]}getExpression(e){const n=this.left.getExpression(e),r=this.right.getExpression(e);if(this.typeCheck(this.left,n)&&this.typeCheck(this.right,r)){const i=(0,vq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,vq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,I3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,F3e.errorFor)("logial required boolean")}}y1.BinaryBoolean=B3e,Object.defineProperty(m1,"__esModule",{value:!0}),m1.ExprCompare=void 0;const Qt=rn,k3e=y1,P3e={"~":[Qt.FT.stringT],"!~":[Qt.FT.stringT],"<":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"<=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],"!=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">=":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT],">":[Qt.FT.numberT,Qt.FT.stringT,Qt.FT.dateT,Qt.FT.timestampT]};class M3e extends k3e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=P3e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}m1.ExprCompare=M3e;var E1={},fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.ExprTime=void 0;const j3e=oe,U3e=xt;class uO extends U3e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={node:"cast",safe:!1,dstType:e,e:n.value};(0,j3e.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new uO(e,r,n.expressionType)}}fd.ExprTime=uO;var Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.Range=void 0;const Sq=oe,q3e=_i,H3e=xt;class z3e extends H3e.ExpressionDef{constructor(e,n){super({first:e,last:n}),this.first=e,this.last=n,this.elementType="range"}apply(e,n,r){switch(n){case"=":case"!=":{const i=n==="="?">=":"<",s=n==="="?"and":"or",o=n==="="?"<":">=",u=this.first.apply(e,i,r),a=this.last.apply(e,o,r);return{dataType:"boolean",expressionType:(0,Sq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Sq.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:{node:s,kids:{left:u.value,right:a.value}}}}case">":return this.last.apply(e,">=",r);case">=":return this.first.apply(e,">=",r);case"<":return this.first.apply(e,"<",r);case"<=":return this.last.apply(e,"<",r)}throw new Error("mysterious error in range computation")}requestExpression(e){}getExpression(e){return this.logError("range-as-value","A Range is not a value"),(0,q3e.errorFor)("a range is not a value")}}Fl.Range=z3e,Object.defineProperty(E1,"__esModule",{value:!0}),E1.ExprGranularTime=void 0;const _q=oe,Q3e=_i,Cq=rn,Tq=Jn,G3e=xt,UA=fd,bq=Fl;class W3e extends G3e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Cq.FT.timestampT,Cq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,_q.isTemporalField)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value={node:"trunc",e:{...r.value,dataType:r.dataType},units:n}),s}r.dataType!=="error"&&this.logError("unsupported-type-for-time-truncation",`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,_q.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,Q3e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=UA.ExprTime.fromValue("timestamp",n),a=new UA.ExprTime("timestamp",(0,Tq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new bq.Range(u,a)}const i=new UA.ExprTime("date",n.value,n.expressionType),s=(0,Tq.timeOffset)("date",n.value,"+",r,this.units),o=new UA.ExprTime("date",s,n.expressionType);return new bq.Range(i,o)}}E1.ExprGranularTime=W3e,Object.defineProperty(jA,"__esModule",{value:!0}),jA.Apply=void 0;const V3e=m1,Y3e=cd,Rq=E1;class J3e extends V3e.ExprCompare{constructor(e,n){super(e,"=",n),this.left=e,this.right=n,this.elementType="apply"}getExpression(e){let n=this.right;if(!this.right.granular()){const r=this.right.requestExpression(e);r&&(0,Y3e.isGranularResult)(r)&&(n=new Rq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Rq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}jA.Apply=J3e;var xd={};Object.defineProperty(xd,"__esModule",{value:!0}),xd.BinaryNumeric=void 0;const X3e=rn,K3e=xt;class Z3e extends K3e.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="numeric binary abstract",this.legalChildTypes=[X3e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}xd.BinaryNumeric=Z3e;var qA={};Object.defineProperty(qA,"__esModule",{value:!0}),qA.Boolean=void 0;const eye=xt,tye=rn;let nye=class extends eye.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...tye.FT.boolT,value:{node:this.value}}}};qA.Boolean=nye;var Ll={};Object.defineProperty(Ll,"__esModule",{value:!0}),Ll.FunctionOrdering=Ll.FunctionOrderBy=void 0;const aO=oe,Oq=We,rye=Lc;class iye extends Oq.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e&&this.has({field:e})}getAnalyticOrderBy(e){if(!this.field)return this.logError("analytic-order-by-missing-field","analytic `order_by` must specify an aggregate expression or output field reference"),{node:"functionOrderBy",e:{node:"error"},dir:this.dir};const n=this.field.getExpression(e);return(0,aO.expressionIsAggregate)(n.expressionType)||((0,aO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof rye.ExprIdReference)||n.evalSpace==="input")&&this.field.logError("analytic-order-by-not-output","analytic `order_by` must be an aggregate or an output field reference"):this.field.logError("analytic-order-by-not-aggregate-or-output","analytic `order_by` must be scalar or aggregate")),{node:"functionOrderBy",e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,aO.expressionIsScalar)(r.expressionType)||this.field.logError("aggregate-order-by-not-scalar","aggregate `order_by` must be scalar"),n||this.field.logError("aggregate-order-by-expression-not-allowed","`order_by` must be only `asc` or `desc` with no expression"),{node:"functionOrderBy",e:r.value,dir:this.dir}}else return this.dir===void 0?(this.logError("aggregate-order-by-without-field-or-direction","field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Ll.FunctionOrderBy=iye;class sye extends Oq.ListOf{constructor(e){super(e),this.elementType="function-ordering"}getAnalyticOrderBy(e){return this.list.map(n=>n.getAnalyticOrderBy(e))}getAggregateOrderBy(e,n){return this.list.map(r=>r.getAggregateOrderBy(e,n))}}Ll.FunctionOrdering=sye;var HA={};Object.defineProperty(HA,"__esModule",{value:!0}),HA.ExprAddSub=void 0;const oye=xd;class uye extends oye.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}HA.ExprAddSub=uye;var da={},ht={},A1={};Object.defineProperty(A1,"__esModule",{value:!0}),A1.ReferenceField=void 0;const Dq=wr;class aye extends Dq.SpaceField{constructor(e,n){super(),this.fieldRef=e,this.inFS=n,this.didLookup=!1}get referenceTo(){return this.didLookup||(this.memoReference=this.inFS.lookup(this.fieldRef.list).found,this.didLookup=!0),this.memoReference}getQueryFieldDef(e){var n;if(!this.queryFieldDef){const r=this.fieldRef.getField(e);r.error&&this.fieldRef.logError(r.error.code,r.error.message);const i=this.fieldRef.list.map(u=>u.name),s=((n=r.found)===null||n===void 0?void 0:n.refType)==="parameter"?{type:r.found.typeDesc().dataType,name:i[0],e:{node:"parameter",path:i}}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof Dq.SpaceField){const u=o.constructorFieldDef();if(u){const a=this.fieldRef.note;if(u.annotation||a){const l=a||{};u.annotation&&(l.inherits=u.annotation),this.queryFieldDef.annotation=l}}}}return this.queryFieldDef}typeDesc(){if(this.memoTypeDesc)return this.memoTypeDesc;const e=this.referenceTo;return e?(this.memoTypeDesc=e.typeDesc(),this.memoTypeDesc):{dataType:"error",expressionType:"scalar",evalSpace:"input"}}}A1.ReferenceField=aye;var In={};Object.defineProperty(In,"__esModule",{value:!0}),In.typecheckGroupBy=In.typecheckAggregate=In.typecheckCalculate=In.typecheckDeclare=In.typecheckMeasure=In.typecheckDimension=In.typecheckIndex=In.typecheckProject=void 0;const En=As;function lye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="select-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="select-of-analytic";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="select-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}In.typecheckProject=lye;function cye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a view",r="index-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="an analytic",r="index-of-analytic";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="index-of-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(r,`Cannot use ${n} field in an index operation`)}}In.typecheckIndex=cye;function fye(t,e){if(!(0,En.expressionIsScalar)(t.expressionType))if((0,En.expressionIsAggregate)(t.expressionType))e.logError("aggregate-in-dimension","Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,En.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-dimension","Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}In.typecheckDimension=fye;function xye(t,e){if(!(0,En.expressionIsAggregate)(t.expressionType))if((0,En.expressionIsScalar)(t.expressionType))e.logError("scalar-in-measure","Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,En.expressionIsAnalytic)(t.expressionType))e.logError("analytic-in-measure","Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}In.typecheckMeasure=xye;function dye(t,e){t.dataType==="turtle"?e.logError("view-in-declare","Views cannot be used in a declare block"):(0,En.expressionIsAnalytic)(t.expressionType)&&e.logError("analytic-in-declare","Analytic expressions can not be used in a declare block")}In.typecheckDeclare=dye;function hye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAnalytic)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="calculate-of-view";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="calculate-of-aggregate";else if((0,En.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="calculate-of-scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}In.typecheckCalculate=hye;function pye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsAggregate)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="aggregate-of-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="aggregate-of-analytic";else if((0,En.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar",i="aggregate-of-scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.logError(i,`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}In.typecheckAggregate=pye;function gye(t,e){if(t.dataType==="turtle"||!(0,En.expressionIsScalar)(t.expressionType)){let n,r,i;if(t.dataType==="turtle")n="a nest",r="a view",i="group-by-view";else if((0,En.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic",i="group-by-analytic";else if((0,En.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate",i="group-by-aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.logError(i,`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}In.typecheckGroupBy=gye,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const mye=A1,yye=Ji,Nq=We,wq=Nr,Il=In;class Ti extends Nq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=wq.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.logError("output-name-conflict",`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new mye.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}ht.FieldReference=Ti;class Eye extends Ti{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=Eye;class Aye extends Ti{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=Aye;class vye extends Ti{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=vye;class Sye extends Ti{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=Sye;class _ye extends Ti{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Il.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=_ye;class lO extends Ti{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,Il.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return lO.indexOutputName(this.path)}}ht.IndexFieldReference=lO;class Cye extends Ti{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Il.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=Cye;class Tye extends Ti{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Il.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=Tye;class bye extends Ti{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Il.typecheckProject)(e,this)}}ht.ProjectFieldReference=bye;class Rye extends Ti{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Il.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=Rye;class Oye extends Ti{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Il.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=Oye;class Dye extends Ti{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Il.typecheckDimension)(e,this)}}ht.DimensionFieldReference=Dye;class Nye extends Ti{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=Nye;class wye extends Nq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=wq.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}ht.WildcardFieldReference=wye;class Fye extends yye.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=Fye,Object.defineProperty(da,"__esModule",{value:!0}),da.ExprAggregateFunction=void 0;const v1=oe,Lye=Rt,Iye=_i,Fq=hr,$ye=rn,Bye=ht,kye=xt,Pye=wr,Mye=Lc;class jye extends kye.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[$ye.FT.numberT],this.elementType=e,this.explicitSource=r,n&&(this.expr=n,this.has({expr:n}))}returns(e){return"number"}getExpression(e){var n,r,i;const s=e.isQueryFieldSpace()?e.inputSpace():e;let o=this.expr,u=(n=this.expr)===null||n===void 0?void 0:n.getExpression(s),a=(r=this.source)===null||r===void 0?void 0:r.path,l=[];if(this.source){const f=this.source.getField(s);if(f.found){l=f.joinPath;const x=f.found,h=x.typeDesc();if(!(x instanceof Fq.StructSpaceField))if((0,v1.isAtomicFieldType)(h.dataType)){o=this.source,u={dataType:h.dataType,expressionType:h.expressionType,value:h.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:h.evalSpace},a=this.source.path;const p=this.getJoinUsage(s);(p.length===1||p.length>1&&p.slice(1).every(g=>Uye(g,p[0])))&&(a=p[0].map(g=>g.name),l=p[0])}else return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${h.dataType}`)}else return this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}if(u===void 0)return this.loggedErrorExpr("missing-aggregate-expression","Missing expression for aggregate function");if((0,v1.expressionIsAggregate)(u.expressionType))return this.loggedErrorExpr("aggregate-of-aggregate","Aggregate expression cannot be aggregate");if(!(u.dataType==="error")){const f=this.getJoinUsage(s),x=this.source!==void 0||this.explicitSource;if(o&&!(!this.source&&f.every(p=>p.length===0))&&!this.isSymmetricFunction()){const p=fO(l,f),m=xO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=qye(g,f,o,this.elementType),E=(i=m==null?void 0:m.code)!==null&&i!==void 0?i:"bad-join-usage";m?this.logError(E,y):this.logWarning(E,y)}}}if(this.typeCheck(this.expr||this,{...u,expressionType:"scalar"})){const f={node:"aggregate",function:this.func,e:u.value};return a&&a.length>0&&(f.structPath=a),{dataType:this.returns(u),expressionType:"aggregate",value:f,evalSpace:"output"}}return(0,Iye.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i={node:"field",path:this.source.path};n.push(...cO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...cO(e,r))}return n}}da.ExprAggregateFunction=jye;function Uye(t,e){let n=t.length;if(n!==e.length)return!1;for(;n>0;)if(n-=1,t[n].name!==e[n].name)return!1;return!0}function cO(t,e){const n=[],r=(i,s)=>{const o=s[0],u=s.slice(1),a=i.entry(o);if(a===void 0)throw new Error(`Invalid field lookup ${o}`);if(a instanceof Fq.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof Pye.SpaceField){if(u.length!==0)throw new Error(`${o} cannot contain a ${u.join(".")}`);const l=a.fieldDef();if(l)return{fs:i,def:l,joinPath:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,Lye.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,v1.isAtomic)(o)&&!(0,v1.isJoined)(o))if((0,v1.hasExpression)(o)){const u=cO(s.fs,o.e);n.push(...u.map(a=>[...s.joinPath,...a]))}else n.push(s.joinPath)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.joinPath)}else n.push([]);return n}function fO(t,e){const n=[];for(const r of e){let i=0;for(let a=0;a<t.length&&a<r.length&&t[a].name===r[a].name;a++)i=a+1;const s=t.slice(i),o=r.slice(i),u=[...s.map(a=>({...a,reverse:!0})),...o.map(a=>({...a,reverse:!1}))];n.push(u)}return n}function xO(t,e){for(const n of e)for(const r of n){if(r.joinType==="cross")return{code:"aggregate-traverses-join-cross",message:`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``};if(r.joinElementType==="array"&&!r.reverse)return{code:"aggregate-traverses-repeated-relationship",message:`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``};if(r.joinType==="many"&&!r.reverse)return{code:"aggregate-traverses-join-many",message:`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``}}}function qye(t,e,n,r){if(e.length===0)return t;let i=e[0];for(const p of e.slice(1))for(let m=0;m<i.length;m++){const g=i[m],y=p[m];if(g.name!==y.name){i=i.slice(0,m);break}}const s=fO(i,e),o=xO(r,s),u=i.slice().reverse().findIndex(p=>p.joinType==="many"||p.joinType==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=fO(l,e),f=xO(r,c),x=i.length>0?i.map(p=>p.name).join("."):"source",h=l.length>0?l.map(p=>p.name).join("."):"source";if(o)return"Aggregated dimensional expression contains multiple join paths; rewrite, for example `sum(first_join.field + second_join.field)` as `first_join.field.sum() + second_join.field.sum()`";{const p=n instanceof Bye.FieldReference?`${n.refString}.${r}()`:n instanceof Mye.ExprIdReference?`${n.fieldReference.refString}.${r}()`:`${x}.${r}(${n.code})`,m=`${h}.${r}(${n.code})`;let g=`${t}; use \`${p}\``;return f===void 0&&h!==x&&(g+=` or \`${m}\` to get a result weighted with respect to \`${h}\``),g}}var zA={};Object.defineProperty(zA,"__esModule",{value:!0}),zA.ExprAlternationTree=void 0;const Lq=oe,Hye=xt;class zye extends Hye.ExpressionDef{constructor(e,n,r){super({left:e,right:r}),this.left=e,this.op=n,this.right=r,this.elementType="alternation",this.elementType=`${n}alternation${n}`}apply(e,n,r){const i=this.left.apply(e,n,r),s=this.right.apply(e,n,r);return{dataType:"boolean",expressionType:(0,Lq.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Lq.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("alternation-as-value","Alternation tree has no value")}}zA.ExprAlternationTree=zye;var dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.ExprAsymmetric=void 0;const Qye=da;class Gye extends Qye.ExprAggregateFunction{constructor(e,n,r,i){super(e,n,i),this.func=e,this.expr=n,this.source=r,this.has({source:r})}isSymmetricFunction(){return!1}defaultFieldName(){if(this.source&&this.expr===void 0){const e=this.source.nameString;switch(this.func){case"sum":return`total_${e}`;case"avg":return`avg_${e}`}}}}dd.ExprAsymmetric=Gye;var QA={};Object.defineProperty(QA,"__esModule",{value:!0}),QA.ExprAvg=void 0;const Wye=dd;class Vye extends Wye.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}QA.ExprAvg=Vye;var GA={};Object.defineProperty(GA,"__esModule",{value:!0}),GA.ExprCast=void 0;const Yye=Jn,Jye=xt;class Xye extends Jye.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){const n=this.expr.getExpression(e);let r="error";if(typeof this.castType=="string")r=this.castType;else{const i=e.dialectObj();i&&(i.validateTypeName(this.castType.raw)?r=i.sqlTypeToMalloyType(this.castType.raw).type:this.logError("invalid-sql-native-type",`Cast type \`${this.castType.raw}\` is invalid for ${i.name} dialect`),this.safe&&!i.supportsSafeCast&&this.logError("dialect-cast-unsafe-only",`The SQL dialect '${e.dialectName()}' does not supply a safe cast operator`))}return{dataType:r,expressionType:n.expressionType,value:(0,Yye.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}GA.ExprCast=Xye;var WA={};Object.defineProperty(WA,"__esModule",{value:!0}),WA.ExprCoalesce=void 0;const Iq=As,$q=rn,Kye=xt;class Zye extends Kye.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=$q.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:($q.FT.typeEq(n,r)||this.logError("mismatched-coalesce-types",`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,Iq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,Iq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}WA.ExprCoalesce=Zye;var VA={};Object.defineProperty(VA,"__esModule",{value:!0}),VA.ExprCount=void 0;const eEe=da;class tEe extends eEe.ExprAggregateFunction{constructor(e){super("count"),this.source=e,this.elementType="count",this.has({source:e})}defaultFieldName(){if(this.source)return"count_"+this.source.nameString}getExpression(e){const n={node:"aggregate",function:"count",e:{node:""}};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:n,evalSpace:"output"}}}VA.ExprCount=tEe;var YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprCountDistinct=void 0;const JA=rn,nEe=da;class rEe extends nEe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[JA.FT.numberT,JA.FT.stringT,JA.FT.dateT,JA.FT.timestampT]}}YA.ExprCountDistinct=rEe;var XA={},$l={};Object.defineProperty($l,"__esModule",{value:!0}),$l.Limit=void 0;const iEe=We,sEe=mn;class oEe extends iEe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=sEe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}$l.Limit=oEe;var hd={};Object.defineProperty(hd,"__esModule",{value:!0}),hd.PartitionBy=void 0;const uEe=We;class aEe extends uEe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}hd.PartitionBy=aEe;var S1={},Bl={};Object.defineProperty(Bl,"__esModule",{value:!0}),Bl.FieldName=void 0;const lEe=We;class cEe extends lEe.MalloyElement{constructor(e){super(),this.name=e,this.elementType="fieldName"}get refString(){return this.name}toString(){return this.refString}getField(e){return e.lookup([this])}}Bl.FieldName=cEe,Object.defineProperty(S1,"__esModule",{value:!0}),S1.ExprFunc=void 0;const Ki=oe,fEe=_i,xEe=td,dEe=xt,hEe=Bl,Bq=Rt;class pEe extends dEe.ExpressionDef{constructor(e,n,r,i,s){super({args:n}),this.name=e,this.args=n,this.isRaw=r,this.rawType=i,this.source=s,this.elementType="function call()",this.has({source:s})}canSupportPartitionBy(){return!0}canSupportOrderBy(){return!0}canSupportLimit(){return!0}getExpression(e){return this.getPropsExpression(e)}findFunctionDef(e){var n,r,i;const s=this.name.toLowerCase(),o=e?(r=(n=this.getDialectNamespace(e))===null||n===void 0?void 0:n.getEntry(s))===null||r===void 0?void 0:r.entry:void 0,u=o??((i=this.modelEntry(s))===null||i===void 0?void 0:i.entry);return u===void 0?(this.logError("function-not-found",`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.logError("call-of-non-function",`'${this.name}' (with type ${u.type}) is not a function`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.logWarning("case-insensitive-function",`Case insensitivity for function names is deprecated, use '${u.name}' instead`),{found:u,error:void 0})}getPropsExpression(e,n){var r,i,s,o;const u=this.args.map(R=>R.getExpression(e));if(this.isRaw){let R="scalar",O;const I=[`${this.name}(`];for(const z of u)R=(0,Ki.maxExpressionType)(R,z.expressionType),O?I.push(","):O=z.dataType,I.push(z.value);return I.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:O)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,Bq.composeSQLExpr)(I),evalSpace:(0,Ki.mergeEvalSpaces)(...u.map(z=>z.evalSpace))}}const a=(s=e.dialectObj())===null||s===void 0?void 0:s.name,{found:l,error:c}=this.findFunctionDef(a);if(l===void 0)return(0,fEe.errorFor)(c);let f,x=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const R=this.source.getField(e).found;if(R){const O=R.typeDesc();if((0,Ki.isAtomicFieldType)(O.dataType))f={dataType:O.dataType,expressionType:O.expressionType,value:{node:"field",path:this.source.path},evalSpace:O.evalSpace},x=this.source.path.slice(0,-1);else if(!(R instanceof xEe.StructSpaceFieldBase))return this.loggedErrorExpr("invalid-aggregate-source",`Aggregate source cannot be a ${O.dataType}`)}else this.loggedErrorExpr("aggregate-source-not-found",`Reference to undefined value ${this.source.refString}`)}const h=[...f?[f]:[],...u],p=gEe(l,h);if(p===void 0)return this.loggedErrorExpr("no-matching-function-overload",`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`);const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),I=(0,Ki.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].logError("invalid-function-argument-expression-type",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualExpressionType}`)}for(const R of y){const O=R.argIndex-(f?1:0),I=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[O].logError("invalid-function-argument-evaluation-space",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${I}, but received ${R.actualEvalSpace}`)}for(const R of E){const O=R.argIndex-(f?1:0);this.args[O].logError("literal-null-function-argument",`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,Ki.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,Ki.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.loggedErrorExpr("non-aggregate-function-with-source",`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`);const _={node:"function_call",overload:m,name:this.name,kids:{args:h.map(R=>R.value)},expressionType:v,structPath:x};let S=_;if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,Ki.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].logError("aggregate-order-by-experiment-not-enabled","Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),m.supportsOrderBy||R){const O=m.supportsOrderBy!=="only_default",I=n.orderBys.flatMap(j=>R?j.getAnalyticOrderBy(e):j.getAggregateOrderBy(e,O));_.kids.orderBy=I}else n.orderBys[0].logError("function-does-not-support-order-by",`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?_.limit=n.limit.limit:this.logError("function-does-not-support-limit",`Function ${this.name} does not support limit`)),n!=null&&n.partitionBys&&n.partitionBys.length>0){const R=[];for(const O of n.partitionBys)for(const I of O.partitionFields){const j=I.getField(e);j.found===void 0?I.logError("partition-by-not-found",`${I.refString} is not defined`):(0,Ki.expressionIsAnalytic)(j.found.typeDesc().expressionType)||(0,Ki.expressionIsUngroupedAggregate)(j.found.typeDesc().expressionType)?I.logError("non-scalar-or-aggregate-partition-by","Partition expression must be scalar or aggregate"):R.push(I.nameString)}_.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0))return this.loggedErrorExpr("sql-functions-experiment-not-enabled",`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`);const R=h[0].value;if(R.node!=="stringLiteral")this.logError("invalid-sql-function-argument",`Invalid string literal for \`${l.name}\``);else{const O=R.literal,I=mEe(O),j=I.filter(Y=>Y.type==="interpolation"&&Y.name.includes(".")).map(Y=>Y.type==="interpolation"?`\${${Y.name}}`:`\${${Y.value}}`);if(j.length>0){const Y=j.length===1?`'.' paths are not yet supported in sql interpolations, found ${j.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${j.join(", ")})`;return this.loggedErrorExpr("unsupported-sql-function-interpolation",Y)}const z=[];for(const Y of I)if(Y.type==="string")z.push(Y.value);else if(Y.name==="TABLE")z.push({node:"source-reference"});else{const Q=new hEe.FieldName(Y.name);this.has({name:Q});const se=e.lookup([Q]);if(se.found===void 0)return this.loggedErrorExpr("sql-function-interpolation-not-found",`Invalid interpolation: ${se.error.message}`);se.found.refType==="parameter"?z.push({node:"parameter",path:[Y.name]}):z.push({node:"field",path:[Y.name]})}S=(0,Bq.composeSQLExpr)(z)}}if(A.dataType==="any")return this.loggedErrorExpr("function-returns-any",`Invalid return type ${A.dataType} for function '${this.name}'`);const C=(0,Ki.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),T=C==="constant"?"constant":(0,Ki.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:T}}}S1.ExprFunc=pEe;function gEe(t,e){for(const n of t.overloads){let r=0,i=!0,s=!1;const o=[],u=[],a=[];for(let l=0;l<e.length;l++){const c=e[l],f=n.params[r];if(f===void 0){i=!1;break}if(!f.allowedTypes.some(h=>{const p=h.dataType===c.dataType||h.dataType==="any"||c.dataType==="null"||c.dataType==="error";return h.expressionType&&((0,Ki.isExpressionTypeLEQ)(c.expressionType,h.expressionType)||o.push({argIndex:l,maxExpressionType:h.expressionType,actualExpressionType:c.expressionType,param:f})),(h.evalSpace==="literal"&&c.evalSpace!=="literal"||h.evalSpace==="constant"&&(c.evalSpace==="input"||c.evalSpace==="output")||(0,Ki.expressionIsAnalytic)(n.returnType.expressionType)&&c.evalSpace==="input")&&u.push({argIndex:l,param:f,maxEvalSpace:h.evalSpace,actualEvalSpace:c.evalSpace}),h.evalSpace==="literal"&&c.dataType==="null"&&a.push({argIndex:l,param:f}),p})){i=!1;break}f.isVariadic?l===e.length-1&&(s=!0):r++}if(!(!s&&(r!==e.length||r!==n.params.length))&&i)return{overload:n,expressionTypeErrors:o,evalSpaceErrors:u,nullabilityErrors:a}}}function mEe(t){const e=[];let n=t;for(;n.length;){const r=n.indexOf("${");if(r===-1){e.push({type:"string",value:n});break}else{const i=n.slice(r).indexOf("}");if(i===-1){e.push({type:"string",value:n});break}r>0&&e.push({type:"string",value:n.slice(0,r)}),e.push({type:"interpolation",name:n.slice(r+2,i+r)}),n=n.slice(i+r+1)}}return e}Object.defineProperty(XA,"__esModule",{value:!0}),XA.ExprProps=void 0;const yEe=oe,EEe=_i,AEe=rn,vEe=Ll,SEe=$l,_Ee=hd,CEe=xt,TEe=S1;class bEe extends CEe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=AEe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.logError("filter-of-non-aggregate","Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,yEe.expressionIsCalculation)(u.expressionType)))return s.logError("aggregate-filter-expression-not-scalar","Cannot filter an expresion with an aggregate or analytical computation"),n;i.push(...o)}return this.typeCheck(this.expr,{...n,expressionType:"scalar"})?{...n,value:{node:"filteredExpr",kids:{e:n.value,filterList:i}}}:(this.expr.logError("filter-of-non-aggregate",`Cannot filter '${n.expressionType}' data`),(0,EEe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof _Ee.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.logError("partition-by-of-non-window-function","`partition_by` is not supported for this kind of expression"):u instanceof SEe.Limit?r?u.logError("expression-limit-already-specified","limit already specified"):this.expr.canSupportLimit()?r=u:u.logError("limit-of-non-aggregate-function","`limit` is not supported for this kind of expression"):u instanceof vEe.FunctionOrdering?this.expr.canSupportOrderBy()?i.push(u):u.logError("order-by-of-non-aggregate-function","`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof TEe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}XA.ExprProps=bEe;var KA={};Object.defineProperty(KA,"__esModule",{value:!0}),KA.ExprLogicalOp=void 0;const REe=y1,kq=rn;class OEe extends REe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[kq.FT.boolT,kq.FT.aggregateBoolT]}}KA.ExprLogicalOp=OEe;var ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprMax=void 0;const ev=rn,DEe=da;class NEe extends DEe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[ev.FT.numberT,ev.FT.stringT,ev.FT.dateT,ev.FT.timestampT]}returns(e){return e.dataType}}ZA.ExprMax=NEe;var tv={};Object.defineProperty(tv,"__esModule",{value:!0}),tv.ExprMin=void 0;const nv=rn,wEe=da;class FEe extends wEe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[nv.FT.numberT,nv.FT.stringT,nv.FT.dateT,nv.FT.timestampT]}returns(e){return e.dataType}}tv.ExprMin=FEe;var rv={};Object.defineProperty(rv,"__esModule",{value:!0}),rv.ExprMinus=void 0;const LEe=_i,Pq=rn,IEe=xt;class $Ee extends IEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Pq.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Pq.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,LEe.errorFor)("negate requires number")}}rv.ExprMinus=$Ee;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.ExprMulDiv=void 0;const BEe=xd;class kEe extends BEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}iv.ExprMulDiv=kEe;var sv={},_1={};Object.defineProperty(_1,"__esModule",{value:!0}),_1.Unary=void 0;const PEe=xt;class MEe extends PEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}_1.Unary=MEe,Object.defineProperty(sv,"__esModule",{value:!0}),sv.ExprNot=void 0;const Mq=rn,jEe=_1;class UEe extends jEe.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Mq.FT.boolT,Mq.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:{node:"not",e:r?n.value:{node:"false"}}}}}sv.ExprNot=UEe;var ov={};Object.defineProperty(ov,"__esModule",{value:!0}),ov.ExprNow=void 0;const qEe=xt;class HEe extends qEe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}ov.ExprNow=HEe;var uv={};Object.defineProperty(uv,"__esModule",{value:!0}),uv.ExprNULL=void 0;const zEe=xt;class QEe extends zEe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}uv.ExprNULL=QEe;var av={};Object.defineProperty(av,"__esModule",{value:!0}),av.ExprNumber=void 0;const GEe=rn,WEe=xt;class VEe extends WEe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...GEe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}av.ExprNumber=VEe;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.ExprParens=void 0;const YEe=xt;class JEe extends YEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="(expression)"}requestExpression(e){return this.expr.requestExpression(e)}getExpression(e){const n=this.expr.getExpression(e);return{...n,value:{node:"()",e:n.value}}}}lv.ExprParens=JEe;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.ExprRegEx=void 0;const XEe=xt;class KEe extends XEe.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:{node:"regexpLiteral",literal:this.regex},evalSpace:"literal"}}}cv.ExprRegEx=KEe;var fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.ExprString=void 0;const ZEe=xt,eAe=rn;class tAe extends ZEe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...eAe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}fv.ExprString=tAe;var xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.ExprSum=void 0;const nAe=dd;class rAe extends nAe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}xv.ExprSum=rAe;var dv={};Object.defineProperty(dv,"__esModule",{value:!0}),dv.ExprTimeExtract=void 0;const Bc=oe,jq=_i,dO=xt,iAe=Fl;class C1 extends dO.ExpressionDef{static extractor(e){const n=C1.pluralMap[e];if(n)return n;if((0,Bc.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=C1.extractor(this.extractText);if(n){if(this.args.length!==1)return this.loggedErrorExpr("too-many-arguments-for-time-extraction",`Extraction function ${n} requires one argument`);const r=this.args[0];if(r instanceof iAe.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,Bc.maxExpressionType)(i.expressionType,s.expressionType),u=(0,Bc.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,jq.errorFor)("extract from error").value};if(!(0,Bc.isTemporalField)(i.dataType))return r.first.loggedErrorExpr("invalid-type-for-time-extraction",`Can't extract ${n} from '${i.dataType}'`);if(!(0,Bc.isTemporalField)(s.dataType))return r.last.loggedErrorExpr("invalid-type-for-time-extraction",`Cannot extract ${n} from '${s.dataType}'`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,dO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,dO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.loggedErrorExpr("invalid-types-for-time-measurement",`Cannot measure from ${i.dataType} to ${s.dataType}`)}return["week","month","quarter","year"].includes(n)?this.loggedErrorExpr("invalid-timeframe-for-time-measurement",`Cannot measure interval using '${n}'`):(0,Bc.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:{node:"timeDiff",units:n,kids:{left:{...i.value,dataType:a},right:{...s.value,dataType:a}}}}:this.loggedErrorExpr("invalid-time-extraction-unit",`Cannot extract ${n} from a range`)}else{const i=r.getExpression(e);return(0,Bc.isTemporalField)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:{node:"extract",e:{...i.value,dataType:i.dataType},units:n}}:(i.dataType!=="error"&&this.logError("unsupported-type-for-time-extraction",`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,jq.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}dv.ExprTimeExtract=C1,C1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var hv={},oo={},pv={};Object.defineProperty(pv,"__esModule",{value:!0}),pv.QueryInputSpace=void 0;const sAe=Ci,oAe=ed;class uAe extends oAe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof sAe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}pv.QueryInputSpace=uAe;var aAe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),lAe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),cAe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&aAe(e,t,n);return lAe(e,t),e};Object.defineProperty(oo,"__esModule",{value:!0}),oo.ReduceFieldSpace=oo.QuerySpace=oo.QueryOperationSpace=void 0;const gv=cAe(oe),hO=Ol,fAe=Bl,xAe=wr,dAe=ht,hAe=ed,pAe=a1,gAe=hr,mAe=pv;class Uq extends hAe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new mAe.QueryInputSpace(e.structDef(),this),n&&this.addRefineFromFields(n)}logError(e,n,r){return this.astEl&&this.astEl.logError(e,n,r),e}inputSpace(){return this.exprSpace}outputSpace(){return this}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof gAe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-defined",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries())if(!e.except.has(u)&&a.refType!=="parameter")if(this.entry(u)){const l=(n=this.expandedWild[u])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();gv.isAtomicFieldType(l.dataType)&&gv.expressionIsScalar(l.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:u,entry:a}),this.expandedWild[u]=i.concat(u))}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}oo.QueryOperationSpace=Uq;class qq extends Uq{addRefineFromFields(e){var n;if(gv.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new fAe.FieldName(s)));i.found&&this.setEntry(r.path[r.path.length-1],i.found)}else r.type!=="turtle"&&this.setEntry((n=r.as)!==null&&n!==void 0?n:r.name,new pAe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof dAe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof xAe.SpaceField){const i=this.expandedWild[n];if(i){e.push({type:"fieldref",path:i});continue}const s=r.getQueryFieldDef(this.exprSpace);if(s){const o=r.typeDesc();o.dataType!=="error"&&this.canContain(o)&&!EAe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(gv.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.logError("unexpected-index-segment","internal error generating index segment from non index query"),{type:"reduce",queryFields:[]};if(e!=null&&e.extendSource)for(const r of e.extendSource)this.exprSpace.addFieldDef(r);const n={type:this.segmentType,queryFields:this.queryFieldDefs()};if(n.queryFields=(0,hO.mergeFields)(e==null?void 0:e.queryFields,n.queryFields),e!=null&&e.extendSource&&(n.extendSource=e.extendSource),this.exprSpace.extendList.length>0){const r=[],i=this.exprSpace.structDef();for(const s of this.exprSpace.extendList){const o=i.fields.find(u=>(0,hO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,hO.mergeFields)(n.extendSource,r)}return this.newTimezone&&(n.queryTimezone=this.newTimezone),this.isComplete(),n}lookup(e){const n=super.lookup(e);return n.found?{...n,isOutputField:!0}:this.exprSpace.lookup(e)}isQueryFieldSpace(){return!0}}oo.QuerySpace=qq;class yAe extends qq{constructor(){super(...arguments),this.segmentType="reduce"}}oo.ReduceFieldSpace=yAe;function EAe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(hv,"__esModule",{value:!0}),hv.ExprUngroup=void 0;const Hq=oe,AAe=oo,vAe=rn,SAe=xt;class _Ae extends SAe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=vAe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Hq.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Hq.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-ungrouped-aggregate",`${this.control}() expression must not already be ungrouped`);const r={node:this.control,e:n.value};if(this.typeCheck(this.expr,{...n,expressionType:"scalar"})){if(e.isQueryFieldSpace()&&this.fields.length>0){const i=[],s=this.control==="exclude";for(const o of this.fields){let u=e.outputSpace(),a=!0;for(;u;){const l=u.lookup([o]);if(l.found&&l.isOutputField)i.push(o.refString),a=!1;else if(u instanceof AAe.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.logError("ungroup-field-not-in-output",`${l} '${o.refString}' is missing from query output`)}}r.fields=i}return{dataType:this.returns(n),expressionType:"ungrouped_aggregate",value:r,evalSpace:"output"}}return this.loggedErrorExpr("ungroup-with-non-scalar",`${this.control}() incompatible type`)}}hv.ExprUngroup=_Ae;var mv={};Object.defineProperty(mv,"__esModule",{value:!0}),mv.ForRange=void 0;const zq=As,Qq=_i,Gq=rn,yv=Jn,CAe=xt,Ev=fd,Wq=Fl;class TAe extends CAe.ExpressionDef{constructor(e,n,r){super({from:e,duration:n,timeframe:r}),this.from=e,this.duration=n,this.timeframe=r,this.elementType="forRange",this.legalChildTypes=[Gq.FT.timestampT,Gq.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Qq.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.logError("invalid-duration-quantity",`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,zq.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,zq.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Qq.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,yv.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,yv.timeOffset)("date",i.value,"+",o.value,u),g=new Ev.ExprTime("date",m);return new Wq.Range(p,g).apply(e,n,r)}const l=Ev.ExprTime.fromValue("timestamp",s);let c=this.from,f=i.value;if(i.dataType==="date"){const p=i.morphic&&i.morphic.timestamp;p?f=p:f=(0,yv.castDateToTimestamp)(f),c=new Ev.ExprTime("timestamp",f,i.expressionType)}const x=(0,yv.timeOffset)("timestamp",f,"+",o.value,u),h=new Ev.ExprTime("timestamp",x,i.expressionType);return new Wq.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}mv.ForRange=TAe;var Xn={};class kc extends Error{}class bAe extends kc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class RAe extends kc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class OAe extends kc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class T1 extends kc{}class Vq extends kc{constructor(e){super(`Invalid unit ${e}`)}}class bs extends kc{}class kl extends kc{constructor(){super("Zone is an abstract class")}}const Pe="numeric",uo="short",Zi="long",pO={year:Pe,month:Pe,day:Pe},Yq={year:Pe,month:uo,day:Pe},DAe={year:Pe,month:uo,day:Pe,weekday:uo},Jq={year:Pe,month:Zi,day:Pe},Xq={year:Pe,month:Zi,day:Pe,weekday:Zi},Kq={hour:Pe,minute:Pe},Zq={hour:Pe,minute:Pe,second:Pe},eH={hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},tH={hour:Pe,minute:Pe,second:Pe,timeZoneName:Zi},nH={hour:Pe,minute:Pe,hourCycle:"h23"},rH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},iH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:uo},sH={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:Zi},oH={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},uH={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},aH={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe},lH={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe,second:Pe},NAe={year:Pe,month:uo,day:Pe,weekday:uo,hour:Pe,minute:Pe},cH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,timeZoneName:uo},fH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},xH={year:Pe,month:Zi,day:Pe,weekday:Zi,hour:Pe,minute:Pe,timeZoneName:Zi},dH={year:Pe,month:Zi,day:Pe,weekday:Zi,hour:Pe,minute:Pe,second:Pe,timeZoneName:Zi};function vt(t){return typeof t>"u"}function Pc(t){return typeof t=="number"}function Av(t){return typeof t=="number"&&t%1===0}function wAe(t){return typeof t=="string"}function FAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function hH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function LAe(t){return Array.isArray(t)?t:[t]}function pH(t,e,n){if(t.length!==0)return t.reduce((r,i)=>{const s=[e(i),i];return r&&n(r[0],s[0])===r[0]?r:s},null)[1]}function IAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function pd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ha(t,e,n){return Av(t)&&t>=e&&t<=n}function $Ae(t,e){return t-e*Math.floor(t/e)}function On(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Pl(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Mc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function gO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function mO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function b1(t){return t%4===0&&(t%100!==0||t%400===0)}function R1(t){return b1(t)?366:365}function vv(t,e){const n=$Ae(e-1,12)+1,r=t+(e-n)/12;return n===2?b1(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function yO(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(e.getUTCFullYear()-1900)),+e}function Sv(t){const e=(t+Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400))%7,n=t-1,r=(n+Math.floor(n/4)-Math.floor(n/100)+Math.floor(n/400))%7;return e===4||r===3?53:52}function EO(t){return t>99?t:t>60?1900+t:2e3+t}function gH(t,e,n,r=null){const i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};r&&(s.timeZone=r);const o={timeZoneName:e,...s},u=new Intl.DateTimeFormat(n,o).formatToParts(i).find(a=>a.type.toLowerCase()==="timezonename");return u?u.value:null}function _v(t,e){let n=parseInt(t,10);Number.isNaN(n)&&(n=0);const r=parseInt(e,10)||0,i=n<0||Object.is(n,-0)?-r:r;return n*60+i}function mH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new bs(`Invalid unit value ${t}`);return e}function Cv(t,e){const n={};for(const r in t)if(pd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=mH(i)}return n}function O1(t,e){const n=Math.trunc(Math.abs(t/60)),r=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${On(n,2)}:${On(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${On(n,2)}${On(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Tv(t){return IAe(t,["hour","minute","second","millisecond"])}const yH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,BAe=["January","February","March","April","May","June","July","August","September","October","November","December"],EH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],kAe=["J","F","M","A","M","J","J","A","S","O","N","D"];function AH(t){switch(t){case"narrow":return[...kAe];case"short":return[...EH];case"long":return[...BAe];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}const vH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],SH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],PAe=["M","T","W","T","F","S","S"];function _H(t){switch(t){case"narrow":return[...PAe];case"short":return[...SH];case"long":return[...vH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const CH=["AM","PM"],MAe=["Before Christ","Anno Domini"],jAe=["BC","AD"],UAe=["B","A"];function TH(t){switch(t){case"narrow":return[...UAe];case"short":return[...jAe];case"long":return[...MAe];default:return null}}function qAe(t){return CH[t.hour<12?0:1]}function HAe(t,e){return _H(e)[t.weekday-1]}function zAe(t,e){return AH(e)[t.month-1]}function QAe(t,e){return TH(e)[t.year<0?0:1]}function GAe(t,e,n="always",r=!1){const i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(n==="auto"&&s){const f=t==="days";switch(e){case 1:return f?"tomorrow":`next ${i[t][0]}`;case-1:return f?"yesterday":`last ${i[t][0]}`;case 0:return f?"today":`this ${i[t][0]}`}}const o=Object.is(e,-0)||e<0,u=Math.abs(e),a=u===1,l=i[t],c=r?a?l[1]:l[2]||l[1]:a?i[t][0]:t;return o?`${u} ${c} ago`:`in ${u} ${c}`}function bH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const WAe={D:pO,DD:Yq,DDD:Jq,DDDD:Xq,t:Kq,tt:Zq,ttt:eH,tttt:tH,T:nH,TT:rH,TTT:iH,TTTT:sH,f:oH,ff:aH,fff:cH,ffff:xH,F:uH,FF:lH,FFF:fH,FFFF:dH};class bi{static create(e,n={}){return new bi(e,n)}static parseFormat(e){let n=null,r="",i=!1;const s=[];for(let o=0;o<e.length;o++){const u=e.charAt(o);u==="'"?(r.length>0&&s.push({literal:i,val:r}),n=null,r="",i=!i):i||u===n?r+=u:(r.length>0&&s.push({literal:!1,val:r}),r=u,n=u)}return r.length>0&&s.push({literal:i,val:r}),s}static macroTokenToFormatOpts(e){return WAe[e]}constructor(e,n){this.opts=n,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,n){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTime(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).format()}formatDateTimeParts(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).formatToParts()}resolvedOptions(e,n={}){return this.loc.dtFormatter(e,{...this.opts,...n}).resolvedOptions()}num(e,n=0){if(this.opts.forceSimple)return On(e,n);const r={...this.opts};return n>0&&(r.padTo=n),this.loc.numberFormatter(r).format(e)}formatDateTimeFromString(e,n){const r=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(h,p)=>this.loc.extract(e,h,p),o=h=>e.isOffsetFixed&&e.offset===0&&h.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,h.format):"",u=()=>r?qAe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?zAe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?HAe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=bi.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?QAe(e,h):s({era:h},"era"),x=h=>{switch(h){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return u();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return a("short",!0);case"LLLL":return a("long",!0);case"LLLLL":return a("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return a("short",!1);case"MMMM":return a("long",!1);case"MMMMM":return a("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return f("short");case"GG":return f("long");case"GGGGG":return f("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return c(h)}};return bH(bi.parseFormat(n),x)}formatDurationFromString(e,n){const r=a=>{switch(a[0]){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":return"hour";case"d":return"day";case"w":return"week";case"M":return"month";case"y":return"year";default:return null}},i=a=>l=>{const c=r(l);return c?this.num(a.get(c),l.length):l},s=bi.parseFormat(n),o=s.reduce((a,{literal:l,val:c})=>l?a:a.concat(c),[]),u=e.shiftTo(...o.map(r).filter(a=>a));return bH(s,i(u))}}class ao{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let gd=class{get type(){throw new kl}get name(){throw new kl}get ianaName(){return this.name}get isUniversal(){throw new kl}offsetName(e,n){throw new kl}formatOffset(e,n){throw new kl}offset(e){throw new kl}equals(e){throw new kl}get isValid(){throw new kl}},AO=null;class bv extends gd{static get instance(){return AO===null&&(AO=new bv),AO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return gH(e,n,r)}formatOffset(e,n){return O1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let Rv={};function VAe(t){return Rv[t]||(Rv[t]=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"})),Rv[t]}const YAe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function JAe(t,e){const n=t.format(e).replace(/\u200E/g,""),r=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(n),[,i,s,o,u,a,l,c]=r;return[o,i,s,u,a,l,c]}function XAe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=YAe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let Ov={};class uu extends gd{static create(e){return Ov[e]||(Ov[e]=new uu(e)),Ov[e]}static resetCache(){Ov={},Rv={}}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=uu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return gH(e,n,r,this.name)}formatOffset(e,n){return O1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=VAe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?XAe(r,n):JAe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=yO({year:i,month:s,day:o,hour:a===24?0:a,minute:l,second:c,millisecond:0});let h=+n;const p=h%1e3;return h-=p>=0?p:1e3+p,(x-h)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}}let vO=null;class Lr extends gd{static get utcInstance(){return vO===null&&(vO=new Lr(0)),vO}static instance(e){return e===0?Lr.utcInstance:new Lr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Lr(_v(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${O1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${O1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return O1(this.fixed,n)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}}class RH extends gd{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}}function Ml(t,e){if(vt(t)||t===null)return e;if(t instanceof gd)return t;if(wAe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Lr.utcInstance:Lr.parseSpecifier(n)||uu.create(t)}else return Pc(t)?Lr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new RH(t)}let OH=()=>Date.now(),DH="system",NH=null,wH=null,FH=null,LH;class Dn{static get now(){return OH}static set now(e){OH=e}static set defaultZone(e){DH=e}static get defaultZone(){return Ml(DH,bv.instance)}static get defaultLocale(){return NH}static set defaultLocale(e){NH=e}static get defaultNumberingSystem(){return wH}static set defaultNumberingSystem(e){wH=e}static get defaultOutputCalendar(){return FH}static set defaultOutputCalendar(e){FH=e}static get throwOnInvalid(){return LH}static set throwOnInvalid(e){LH=e}static resetCaches(){cn.resetCache(),uu.resetCache()}}let IH={};function KAe(t,e={}){const n=JSON.stringify([t,e]);let r=IH[n];return r||(r=new Intl.ListFormat(t,e),IH[n]=r),r}let SO={};function _O(t,e={}){const n=JSON.stringify([t,e]);let r=SO[n];return r||(r=new Intl.DateTimeFormat(t,e),SO[n]=r),r}let CO={};function ZAe(t,e={}){const n=JSON.stringify([t,e]);let r=CO[n];return r||(r=new Intl.NumberFormat(t,e),CO[n]=r),r}let TO={};function eve(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=TO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),TO[i]=s),s}let D1=null;function tve(){return D1||(D1=new Intl.DateTimeFormat().resolvedOptions().locale,D1)}function nve(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=_O(t).resolvedOptions()}catch{n=_O(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function rve(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function ive(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function sve(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function Dv(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function ove(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||new Intl.DateTimeFormat(t.intl).resolvedOptions().numberingSystem==="latn"}class uve{constructor(e,n,r){this.padTo=r.padTo||0,this.floor=r.floor||!1;const{padTo:i,floor:s,...o}=r;if(!n||Object.keys(o).length>0){const u={useGrouping:!1,...r};r.padTo>0&&(u.minimumIntegerDigits=r.padTo),this.inf=ZAe(e,u)}}format(e){if(this.inf){const n=this.floor?Math.floor(e):e;return this.inf.format(n)}else{const n=this.floor?Math.floor(e):mO(e,3);return On(n,this.padTo)}}}class ave{constructor(e,n,r){this.opts=r;let i;if(e.zone.isUniversal){const o=-1*(e.offset/60),u=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&uu.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=_O(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class lve{constructor(e,n,r){this.opts={style:"long",...r},!n&&hH()&&(this.rtf=eve(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):GAe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class cn{static fromOpts(e){return cn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||Dn.defaultLocale,o=s||(i?"en-US":tve()),u=n||Dn.defaultNumberingSystem,a=r||Dn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){D1=null,SO={},CO={},TO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=nve(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=rve(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=i,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=ove(this)),this.fastNumbersCached}listingMode(){const e=this.isEnglish(),n=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&n?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:cn.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,n=!1,r=!0){return Dv(this,e,r,AH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=ive(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return Dv(this,e,r,_H,()=>{const i=n?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},s=n?"format":"standalone";return this.weekdaysCache[s][e]||(this.weekdaysCache[s][e]=sve(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return Dv(this,void 0,e,()=>CH,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return Dv(this,e,n,TH,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new uve(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new ave(e,this.intl,n)}relFormatter(e={}){return new lve(this.intl,this.isEnglish(),e)}listFormatter(e={}){return KAe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||new Intl.DateTimeFormat(this.intl).resolvedOptions().locale.startsWith("en-us")}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}}function md(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function yd(...t){return e=>t.reduce(([n,r,i],s)=>{const[o,u,a]=s(e,i);return[{...n,...o},u||r,a]},[{},null,1]).slice(0,2)}function Ed(t,...e){if(t==null)return[null,null];for(const[n,r]of e){const i=n.exec(t);if(i)return r(i)}return[null,null]}function $H(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Pl(e[n+i]);return[r,null,n+i]}}const BH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,cve=`(?:${BH.source}?(?:\\[(${yH.source})\\])?)?`,bO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,kH=RegExp(`${bO.source}${cve}`),RO=RegExp(`(?:T${kH.source})?`),fve=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,xve=/(\d{4})-?W(\d\d)(?:-?(\d))?/,dve=/(\d{4})-?(\d{3})/,hve=$H("weekYear","weekNumber","weekDay"),pve=$H("year","ordinal"),gve=/(\d{4})-(\d\d)-(\d\d)/,PH=RegExp(`${bO.source} ?(?:${BH.source}|(${yH.source}))?`),mve=RegExp(`(?: ${PH.source})?`);function Ad(t,e,n){const r=t[e];return vt(r)?n:Pl(r)}function yve(t,e){return[{year:Ad(t,e),month:Ad(t,e+1,1),day:Ad(t,e+2,1)},null,e+3]}function vd(t,e){return[{hours:Ad(t,e,0),minutes:Ad(t,e+1,0),seconds:Ad(t,e+2,0),milliseconds:gO(t[e+3])},null,e+4]}function N1(t,e){const n=!t[e]&&!t[e+1],r=_v(t[e+1],t[e+2]),i=n?null:Lr.instance(r);return[{},i,e+3]}function w1(t,e){const n=t[e]?uu.create(t[e]):null;return[{},n,e+1]}const Eve=RegExp(`^T?${bO.source}$`),Ave=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function vve(t){const[e,n,r,i,s,o,u,a,l]=t,c=e[0]==="-",f=a&&a[0]==="-",x=(h,p=!1)=>h!==void 0&&(p||h&&c)?-h:h;return[{years:x(Mc(n)),months:x(Mc(r)),weeks:x(Mc(i)),days:x(Mc(s)),hours:x(Mc(o)),minutes:x(Mc(u)),seconds:x(Mc(a),a==="-0"),milliseconds:x(gO(l),f)}]}const Sve={GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function OO(t,e,n,r,i,s,o){const u={year:e.length===2?EO(Pl(e)):Pl(e),month:EH.indexOf(n)+1,day:Pl(r),hour:Pl(i),minute:Pl(s)};return o&&(u.second=Pl(o)),t&&(u.weekday=t.length>3?vH.indexOf(t)+1:SH.indexOf(t)+1),u}const _ve=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function Cve(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=OO(e,i,r,n,s,o,u);let h;return a?h=Sve[a]:l?h=0:h=_v(c,f),[x,new Lr(h)]}function Tve(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const bve=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,Rve=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,Ove=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function MH(t){const[,e,n,r,i,s,o,u]=t;return[OO(e,i,r,n,s,o,u),Lr.utcInstance]}function Dve(t){const[,e,n,r,i,s,o,u]=t;return[OO(e,u,n,r,i,s,o),Lr.utcInstance]}const Nve=md(fve,RO),wve=md(xve,RO),Fve=md(dve,RO),Lve=md(kH),jH=yd(yve,vd,N1,w1),Ive=yd(hve,vd,N1,w1),$ve=yd(pve,vd,N1,w1),Bve=yd(vd,N1,w1);function kve(t){return Ed(t,[Nve,jH],[wve,Ive],[Fve,$ve],[Lve,Bve])}function Pve(t){return Ed(Tve(t),[_ve,Cve])}function Mve(t){return Ed(t,[bve,MH],[Rve,MH],[Ove,Dve])}function jve(t){return Ed(t,[Ave,vve])}const Uve=yd(vd);function qve(t){return Ed(t,[Eve,Uve])}const Hve=md(gve,mve),zve=md(PH),Qve=yd(vd,N1,w1);function Gve(t){return Ed(t,[Hve,jH],[zve,Qve])}const Wve="Invalid Duration",UH={weeks:{days:7,hours:7*24,minutes:7*24*60,seconds:7*24*60*60,milliseconds:7*24*60*60*1e3},days:{hours:24,minutes:24*60,seconds:24*60*60,milliseconds:24*60*60*1e3},hours:{minutes:60,seconds:60*60,milliseconds:60*60*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},Vve={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:91*24,minutes:91*24*60,seconds:91*24*60*60,milliseconds:91*24*60*60*1e3},months:{weeks:4,days:30,hours:30*24,minutes:30*24*60,seconds:30*24*60*60,milliseconds:30*24*60*60*1e3},...UH},Rs=146097/400,Sd=146097/4800,Yve={years:{quarters:4,months:12,weeks:Rs/7,days:Rs,hours:Rs*24,minutes:Rs*24*60,seconds:Rs*24*60*60,milliseconds:Rs*24*60*60*1e3},quarters:{months:3,weeks:Rs/28,days:Rs/4,hours:Rs*24/4,minutes:Rs*24*60/4,seconds:Rs*24*60*60/4,milliseconds:Rs*24*60*60*1e3/4},months:{weeks:Sd/7,days:Sd,hours:Sd*24,minutes:Sd*24*60,seconds:Sd*24*60*60,milliseconds:Sd*24*60*60*1e3},...UH},jc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Jve=jc.slice(0).reverse();function Uc(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new St(r)}function Xve(t){return t<0?Math.floor(t):Math.ceil(t)}function qH(t,e,n,r,i){const s=t[i][n],o=e[n]/s,u=Math.sign(o)===Math.sign(r[i]),a=!u&&r[i]!==0&&Math.abs(o)<=1?Xve(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Kve(t,e){Jve.reduce((n,r)=>vt(e[r])?n:(n&&qH(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||cn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Yve:Vve,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new bs(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:Cv(e,St.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Pc(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new bs(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=jve(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=qve(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Duration is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new OAe(r);return new St({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new Vq(e);return n}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,n={}){const r={...n,floor:n.round!==!1&&n.floor!==!1};return this.isValid?bi.create(this.loc,r).formatDurationFromString(this,e):Wve}toHuman(e={}){const n=jc.map(r=>{const i=this.values[r];return vt(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=mO(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e),r={};for(const i of jc)(pd(n.values,i)||pd(this.values,i))&&(r[i]=n.get(i)+this.get(i));return Uc(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=mH(e(this.values[r],r));return Uc(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...Cv(e,St.normalizeUnit)};return Uc(this,{values:n})}reconfigure({locale:e,numberingSystem:n,conversionAccuracy:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n}),s={loc:i};return r&&(s.conversionAccuracy=r),Uc(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Kve(this.matrix,e),Uc(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of jc)if(e.indexOf(o)>=0){s=o;let u=0;for(const l in r)u+=this.matrix[l][o]*r[l],r[l]=0;Pc(i[o])&&(u+=i[o]);const a=Math.trunc(u);n[o]=a,r[o]=(u*1e3-a*1e3)/1e3;for(const l in i)jc.indexOf(l)>jc.indexOf(o)&&qH(this.matrix,i,l,n,o)}else Pc(i[o])&&(r[o]=i[o]);for(const o in r)r[o]!==0&&(n[s]+=o===s?r[o]:r[o]/this.matrix[s][o]);return Uc(this,{values:n},!0).normalize()}negate(){if(!this.isValid)return this;const e={};for(const n of Object.keys(this.values))e[n]=this.values[n]===0?0:-this.values[n];return Uc(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function n(r,i){return r===void 0||r===0?i===void 0||i===0:r===i}for(const r of jc)if(!n(this.values[r],e.values[r]))return!1;return!0}}const F1="Invalid Interval";function Zve(t,e){return!t||!t.isValid?fn.invalid("missing or invalid start"):!e||!e.isValid?fn.invalid("missing or invalid end"):e<t?fn.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}class fn{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the Interval is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new RAe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=B1(e),i=B1(n),s=Zve(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=B1(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=B1(e);return fn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return fn.before(u,l)}}return fn.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds"){if(!this.isValid)return NaN;const n=this.start.startOf(e),r=this.end.startOf(e);return Math.floor(r.diff(n,e).get(e))+1}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:n}={}){return this.isValid?fn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(B1).filter(o=>this.contains(o)).sort(),r=[];let{s:i}=this,s=0;for(;i<this.e;){const o=n[s]||this.e,u=+o>+this.e?this.e:o;r.push(fn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(fn.fromDateTimes(r,s)),r=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;const n=this.s>e.s?this.s:e.s,r=this.e<e.e?this.e:e.e;return n>=r?null:fn.fromDateTimes(n,r)}union(e){if(!this.isValid)return this;const n=this.s<e.s?this.s:e.s,r=this.e>e.e?this.e:e.e;return fn.fromDateTimes(n,r)}static merge(e){const[n,r]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return r&&n.push(r),n}static xor(e){let n=null,r=0;const i=[],s=e.map(a=>[{time:a.s,type:"s"},{time:a.e,type:"e"}]),o=Array.prototype.concat(...s),u=o.sort((a,l)=>a.time-l.time);for(const a of u)r+=a.type==="s"?1:-1,r===1?n=a.time:(n&&+n!=+a.time&&i.push(fn.fromDateTimes(n,a.time)),n=null);return fn.merge(i)}difference(...e){return fn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:F1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:F1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:F1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:F1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:F1}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let L1=class{static hasDST(e=Dn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return uu.isValidZone(e)}static normalizeZone(e){return Ml(e,Dn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||cn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||cn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return cn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return cn.create(n,null,"gregory").eras(e)}static features(){return{relative:hH()}}};function HH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function e4e(t,e,n){const r=[["years",(u,a)=>a.year-u.year],["quarters",(u,a)=>a.quarter-u.quarter],["months",(u,a)=>a.month-u.month+(a.year-u.year)*12],["weeks",(u,a)=>{const l=HH(u,a);return(l-l%7)/7}],["days",HH]],i={};let s,o;for(const[u,a]of r)if(n.indexOf(u)>=0){s=u;let l=a(t,e);o=t.plus({[u]:l}),o>e?(t=t.plus({[u]:l-1}),l-=1):t=o,i[u]=l}return[t,i,o,s]}function t4e(t,e,n,r){let[i,s,o,u]=e4e(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const DO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},zH={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},n4e=DO.hanidec.replace(/[\[|\]]/g,"").split("");function r4e(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);if(t[n].search(DO.hanidec)!==-1)e+=n4e.indexOf(t[n]);else for(const i in zH){const[s,o]=zH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function lo({numberingSystem:t},e=""){return new RegExp(`${DO[t||"latn"]}${e}`)}const i4e="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(r4e(n))}}const QH="[  ]",GH=new RegExp(QH,"g");function s4e(t){return t.replace(/\./g,"\\.?").replace(GH,QH)}function WH(t){return t.replace(/\./g,"").replace(GH," ").toLowerCase()}function co(t,e){return t===null?null:{regex:RegExp(t.map(s4e).join("|")),deser:([n])=>t.findIndex(r=>WH(n)===WH(r))+e}}function VH(t,e){return{regex:t,deser:([,n,r])=>_v(n,r),groups:e}}function NO(t){return{regex:t,deser:([e])=>e}}function o4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function u4e(t,e){const n=lo(e),r=lo(e,"{2}"),i=lo(e,"{3}"),s=lo(e,"{4}"),o=lo(e,"{6}"),u=lo(e,"{1,2}"),a=lo(e,"{1,3}"),l=lo(e,"{1,6}"),c=lo(e,"{1,9}"),f=lo(e,"{2,4}"),x=lo(e,"{4,6}"),h=g=>({regex:RegExp(o4e(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return co(e.eras("short",!1),0);case"GG":return co(e.eras("long",!1),0);case"y":return Ft(l);case"yy":return Ft(f,EO);case"yyyy":return Ft(s);case"yyyyy":return Ft(x);case"yyyyyy":return Ft(o);case"M":return Ft(u);case"MM":return Ft(r);case"MMM":return co(e.months("short",!0,!1),1);case"MMMM":return co(e.months("long",!0,!1),1);case"L":return Ft(u);case"LL":return Ft(r);case"LLL":return co(e.months("short",!1,!1),1);case"LLLL":return co(e.months("long",!1,!1),1);case"d":return Ft(u);case"dd":return Ft(r);case"o":return Ft(a);case"ooo":return Ft(i);case"HH":return Ft(r);case"H":return Ft(u);case"hh":return Ft(r);case"h":return Ft(u);case"mm":return Ft(r);case"m":return Ft(u);case"q":return Ft(u);case"qq":return Ft(r);case"s":return Ft(u);case"ss":return Ft(r);case"S":return Ft(a);case"SSS":return Ft(i);case"u":return NO(c);case"uu":return NO(u);case"uuu":return Ft(n);case"a":return co(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,EO);case"W":return Ft(u);case"WW":return Ft(r);case"E":case"c":return Ft(n);case"EEE":return co(e.weekdays("short",!1,!1),1);case"EEEE":return co(e.weekdays("long",!1,!1),1);case"ccc":return co(e.weekdays("short",!0,!1),1);case"cccc":return co(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return VH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return VH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return NO(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:i4e};return m.token=t,m}const a4e={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour:{numeric:"h","2-digit":"hh"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"}};function l4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=a4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function c4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function f4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(pd(n,o)){const u=n[o],a=u.groups?u.groups+1:1;!u.literal&&u.token&&(i[u.token.val[0]]=u.deser(r.slice(s,s+a))),s+=a}return[r,i]}else return[r,{}]}function x4e(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return vt(t.z)||(n=uu.create(t.z)),vt(t.Z)||(n||(n=new Lr(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),vt(t.u)||(t.S=gO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let wO=null;function d4e(){return wO||(wO=st.fromMillis(1555555555555)),wO}function h4e(t,e){if(t.literal)return t;const n=bi.macroTokenToFormatOpts(t.val);if(!n)return t;const s=bi.create(e,n).formatDateTimeParts(d4e()).map(o=>l4e(o,e,n));return s.includes(void 0)?t:s}function p4e(t,e){return Array.prototype.concat(...t.map(n=>h4e(n,e)))}function YH(t,e,n){const r=p4e(bi.parseFormat(n),t),i=r.map(o=>u4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=c4e(i),a=RegExp(o,"i"),[l,c]=f4e(e,a,u),[f,x,h]=c?x4e(c):[null,null,void 0];if(pd(c,"a")&&pd(c,"H"))throw new T1("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:r,regex:a,rawMatches:l,matches:c,result:f,zone:x,specificOffset:h}}}function g4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=YH(t,e,n);return[r,i,s,o]}const JH=[0,31,59,90,120,151,181,212,243,273,304,334],XH=[0,31,60,91,121,152,182,213,244,274,305,335];function Os(t,e){return new ao("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function KH(t,e,n){const r=new Date(Date.UTC(t,e-1,n));t<100&&t>=0&&r.setUTCFullYear(r.getUTCFullYear()-1900);const i=r.getUTCDay();return i===0?7:i}function ZH(t,e,n){return n+(b1(t)?XH:JH)[e-1]}function ez(t,e){const n=b1(t)?XH:JH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function FO(t){const{year:e,month:n,day:r}=t,i=ZH(e,n,r),s=KH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=Sv(u)):o>Sv(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...Tv(t)}}function tz(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=KH(e,1,4),s=R1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=R1(u)):o>s?(u=e+1,o-=R1(e)):u=e;const{month:a,day:l}=ez(u,o);return{year:u,month:a,day:l,...Tv(t)}}function LO(t){const{year:e,month:n,day:r}=t,i=ZH(e,n,r);return{year:e,ordinal:i,...Tv(t)}}function nz(t){const{year:e,ordinal:n}=t,{month:r,day:i}=ez(e,n);return{year:e,month:r,day:i,...Tv(t)}}function m4e(t){const e=Av(t.weekYear),n=ha(t.weekNumber,1,Sv(t.weekYear)),r=ha(t.weekday,1,7);return e?n?r?!1:Os("weekday",t.weekday):Os("week",t.week):Os("weekYear",t.weekYear)}function y4e(t){const e=Av(t.year),n=ha(t.ordinal,1,R1(t.year));return e?n?!1:Os("ordinal",t.ordinal):Os("year",t.year)}function rz(t){const e=Av(t.year),n=ha(t.month,1,12),r=ha(t.day,1,vv(t.year,t.month));return e?n?r?!1:Os("day",t.day):Os("month",t.month):Os("year",t.year)}function iz(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=ha(e,0,23)||e===24&&n===0&&r===0&&i===0,o=ha(n,0,59),u=ha(r,0,59),a=ha(i,0,999);return s?o?u?a?!1:Os("millisecond",i):Os("second",r):Os("minute",n):Os("hour",e)}const IO="Invalid DateTime",sz=864e13;function Nv(t){return new ao("unsupported zone",`the zone "${t.name}" is not supported`)}function $O(t){return t.weekData===null&&(t.weekData=FO(t.c)),t.weekData}function I1(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function oz(t,e,n){let r=t-e*60*1e3;const i=n.offset(r);if(e===i)return[r,e];r-=(i-e)*60*1e3;const s=n.offset(r);return i===s?[r,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function uz(t,e){t+=e*60*1e3;const n=new Date(t);return{year:n.getUTCFullYear(),month:n.getUTCMonth()+1,day:n.getUTCDate(),hour:n.getUTCHours(),minute:n.getUTCMinutes(),second:n.getUTCSeconds(),millisecond:n.getUTCMilliseconds()}}function wv(t,e,n){return oz(yO(t),e,n)}function az(t,e){const n=t.o,r=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:r,month:i,day:Math.min(t.c.day,vv(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=yO(s);let[a,l]=oz(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function $1(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new ao("unparsable",`the input "${i}" can't be parsed as ${r}`))}function Fv(t,e,n=!0){return t.isValid?bi.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function BO(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=On(t.c.year,n?6:4),e?(r+="-",r+=On(t.c.month),r+="-",r+=On(t.c.day)):(r+=On(t.c.month),r+=On(t.c.day)),r}function lz(t,e,n,r,i,s){let o=On(t.c.hour);return e?(o+=":",o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=On(t.c.minute),(t.c.second!==0||!n)&&(o+=On(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=On(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=On(Math.trunc(-t.o/60)),o+=":",o+=On(Math.trunc(-t.o%60))):(o+="+",o+=On(Math.trunc(t.o/60)),o+=":",o+=On(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const cz={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},E4e={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},A4e={ordinal:1,hour:0,minute:0,second:0,millisecond:0},fz=["year","month","day","hour","minute","second","millisecond"],v4e=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],S4e=["year","ordinal","hour","minute","second","millisecond"];function xz(t){const e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new Vq(t);return e}function dz(t,e){const n=Ml(e.zone,Dn.defaultZone),r=cn.fromObject(e),i=Dn.now();let s,o;if(vt(t.year))s=i;else{for(const l of fz)vt(t[l])&&(t[l]=cz[l]);const u=rz(t)||iz(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=wv(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function hz(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=mO(o,r||n.calendary?0:2,!0),e.loc.clone(n).relFormatter(n).format(o,u)),s=o=>n.calendary?e.hasSame(t,o)?0:e.startOf(o).diff(t.startOf(o),o).get(o):e.diff(t,o).get(o);if(n.unit)return i(s(n.unit),n.unit);for(const o of n.units){const u=s(o);if(Math.abs(u)>=1)return i(u,o)}return i(t>e?-0:0,n.units[n.units.length-1])}function pz(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class st{constructor(e){const n=e.zone||Dn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new ao("invalid input"):null)||(n.isValid?null:Nv(n));this.ts=vt(e.ts)?Dn.now():e.ts;let i=null,s=null;if(!r)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(n))[i,s]=[e.old.c,e.old.o];else{const u=n.offset(this.ts);i=uz(this.ts,u),r=Number.isNaN(i.year)?new ao("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||cn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=pz(arguments),[r,i,s,o,u,a,l]=n;return dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=pz(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Lr.utcInstance,dz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=FAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=Ml(n.zone,Dn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:cn.fromObject(n)}):st.invalid(Nv(i))}static fromMillis(e,n={}){if(Pc(e))return e<-sz||e>sz?st.invalid("Timestamp out of range"):new st({ts:e,zone:Ml(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Pc(e))return new st({ts:e*1e3,zone:Ml(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new bs("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Ml(n.zone,Dn.defaultZone);if(!r.isValid)return st.invalid(Nv(r));const i=Dn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=Cv(e,xz),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new T1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=uz(i,s);h?(p=v4e,m=E4e,g=FO(g)):u?(p=S4e,m=A4e,g=LO(g)):(p=fz,m=cz);let y=!1;for(const T of p){const R=o[T];vt(R)?y?o[T]=m[T]:o[T]=g[T]:y=!0}const E=h?m4e(o):u?y4e(o):rz(o),A=E||iz(o);if(A)return st.invalid(A);const v=h?tz(o):u?nz(o):o,[_,S]=wv(v,s,r),C=new st({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=kve(e);return $1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=Pve(e);return $1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Mve(e);return $1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new bs("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=g4e(o,e,n);return c?st.invalid(c):$1(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=Gve(e);return $1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new bs("need to specify a reason the DateTime is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new bAe(r);return new st({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?$O(this).weekYear:NaN}get weekNumber(){return this.isValid?$O(this).weekNumber:NaN}get weekday(){return this.isValid?$O(this).weekday:NaN}get ordinal(){return this.isValid?LO(this.c).ordinal:NaN}get monthShort(){return this.isValid?L1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?L1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?L1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?L1.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}get isInLeapYear(){return b1(this.year)}get daysInMonth(){return vv(this.year,this.month)}get daysInYear(){return this.isValid?R1(this.year):NaN}get weeksInWeekYear(){return this.isValid?Sv(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=bi.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Lr.instance(e),n)}toLocal(){return this.setZone(Dn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Ml(e,Dn.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(n||r){const s=e.offset(this.ts),o=this.toObject();[i]=wv(o,s,e)}return I1(this,{ts:i,zone:e})}else return st.invalid(Nv(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return I1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=Cv(e,xz),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new T1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new T1("Can't mix ordinal dates with month/day");let l;r?l=tz({...FO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(vv(l.year,l.month),l.day))):l=nz({...LO(this.c),...n});const[c,f]=wv(l,this.o,this.zone);return I1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return I1(this,az(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return I1(this,az(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?bi.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):IO}toLocaleString(e=pO,n={}){return this.isValid?bi.create(this.loc.clone(n),e).formatDateTime(this):IO}toLocaleParts(e={}){return this.isValid?bi.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:n=!1,suppressMilliseconds:r=!1,includeOffset:i=!0,extendedZone:s=!1}={}){if(!this.isValid)return null;const o=e==="extended";let u=BO(this,o);return u+="T",u+=lz(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?BO(this,e==="extended"):null}toISOWeekDate(){return Fv(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:n=!1,includeOffset:r=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended"}={}){return this.isValid?(i?"T":"")+lz(this,o==="extended",n,e,r,s):null}toRFC2822(){return Fv(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return Fv(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?BO(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:n=!1,includeOffsetSpace:r=!0}={}){let i="HH:mm:ss.SSS";return(n||e)&&(r&&(i+=" "),n?i+="z":e&&(i+="ZZ")),Fv(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():IO}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=LAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=t4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?fn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||st.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),hz(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?hz(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new bs("min requires all arguments be DateTimes");return pH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new bs("max requires all arguments be DateTimes");return pH(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=cn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return YH(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return pO}static get DATE_MED(){return Yq}static get DATE_MED_WITH_WEEKDAY(){return DAe}static get DATE_FULL(){return Jq}static get DATE_HUGE(){return Xq}static get TIME_SIMPLE(){return Kq}static get TIME_WITH_SECONDS(){return Zq}static get TIME_WITH_SHORT_OFFSET(){return eH}static get TIME_WITH_LONG_OFFSET(){return tH}static get TIME_24_SIMPLE(){return nH}static get TIME_24_WITH_SECONDS(){return rH}static get TIME_24_WITH_SHORT_OFFSET(){return iH}static get TIME_24_WITH_LONG_OFFSET(){return sH}static get DATETIME_SHORT(){return oH}static get DATETIME_SHORT_WITH_SECONDS(){return uH}static get DATETIME_MED(){return aH}static get DATETIME_MED_WITH_SECONDS(){return lH}static get DATETIME_MED_WITH_WEEKDAY(){return NAe}static get DATETIME_FULL(){return cH}static get DATETIME_FULL_WITH_SECONDS(){return fH}static get DATETIME_HUGE(){return xH}static get DATETIME_HUGE_WITH_SECONDS(){return dH}}function B1(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Pc(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new bs(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const gz=_$(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:Lr,IANAZone:uu,Info:L1,Interval:fn,InvalidZone:RH,Settings:Dn,SystemZone:bv,VERSION:"2.5.2",Zone:gd},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.LiteralYear=Xn.LiteralQuarter=Xn.LiteralMonth=Xn.LiteralWeek=Xn.LiteralDay=Xn.LiteralHour=Xn.LiteralTimestamp=Xn.TimeFormatError=void 0;const jl=gz,_4e=oe,C4e=Fl,mz=fd,kO=xt;class T4e extends Error{}Xn.TimeFormatError=T4e;function qc(t,e){const n=t.slice(1);if(e){const r=n.match(/\[[^\]]+]$/);if(r)return{tzSpec:r[0].slice(1,-1),text:n.slice(0,-r[0].length)}}return{text:n}}const yz="yyyy",Ez=`${yz}-LL`,Ds=`${Ez}-dd`,Az=`${Ds} HH`,vz=`${Az}:mm`,PO=`${vz}:ss`;class Sz extends kO.ExpressionDef{constructor(e,n,r){super(),this.units=n,this.timeType=r,this.literalPart=e.text,e.tzSpec&&(this.timeZone=e.tzSpec)}makeLiteral(e,n){const r={node:"timeLiteral",literal:e,dataType:n};return this.timeZone&&(r.timezone=this.timeZone),r}makeValue(e,n){const r=this.makeLiteral(e,n),i="scalar",s=r;return this.units?{dataType:n,expressionType:i,value:s,timeframe:this.units,evalSpace:"literal"}:{dataType:n,expressionType:i,value:s,evalSpace:"literal"}}getExpression(e){return this.makeValue(this.literalPart,this.timeType)}getNext(){if(this.nextLit)return this.makeValue(this.nextLit,this.timeType)}granular(){return this.nextLit!==void 0}}class MO extends Sz{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=qc(e,!0);e=r.text,e[10]==="T"&&(e=e.slice(0,10)+" "+e.slice(11),r.text=e);const i=e.match(/^([^.,]+)[,.](\d+)$/);i&&(e=i[1]);let s=jl.DateTime.fromFormat(e,PO);if(s.isValid)return new MO(r,n);if(s=jl.DateTime.fromFormat(e,vz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(PO);return new jO(r,n,"timestamp",o)}}}Xn.LiteralTimestamp=MO;class jO extends Sz{constructor(e,n,r,i){super(e,n,r),this.nextLit=i,this.elementType="granularTimeLiteral"}apply(e,n,r){let i=this.getExpression(e),s=this.getNext();if(s){const o=r.getExpression(e);if(o.dataType==="timestamp"){const u=(0,kO.getMorphicValue)(i,"timestamp"),a=(0,kO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,_4e.isTemporalField)(o.dataType)){const u=o.dataType;return new C4e.Range(new mz.ExprTime(u,i.value),new mz.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class UO extends jO{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Az);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(PO),new UO(n,r)}}Xn.LiteralHour=UO;class k1 extends jO{constructor(e,n,r){super(e,n,"date",r)}getExpression(e){const n=this.makeValue(this.literalPart,"date"),r=this.makeLiteral(`${this.literalPart} 00:00:00`,"timestamp");return{...n,morphic:{timestamp:r},evalSpace:"literal"}}getNext(){const e=this.makeValue(this.nextLit,"date"),n=this.makeLiteral(`${this.nextLit} 00:00:00`,"timestamp");return{...e,morphic:{timestamp:n}}}}class qO extends k1{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Ds);if(i.isValid)return r=i.plus({day:1}).toFormat(Ds),new qO(n,r)}}Xn.LiteralDay=qO;class HO extends k1{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=qc(e,!1);let r=n.text;const i=n.text.slice(0,10),s=jl.DateTime.fromFormat(i,Ds);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(Ds),r=u.toFormat(Ds),new HO(n,r)}}}Xn.LiteralWeek=HO;class zO extends k1{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,Ez);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new zO(n,r)}}}Xn.LiteralMonth=zO;class QO extends k1{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=qc(e,!1);let r=n.text;const i=n.text.match(/(^\d{4})-[qQ](\d)$/);if(i){const s=Number.parseInt(i[2])-1;let o=jl.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(Ds),r=u.toFormat(Ds),new QO(n,r)}}}Xn.LiteralQuarter=QO;class GO extends k1{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=qc(e,!1);let r=n.text;const i=jl.DateTime.fromFormat(n.text,yz);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new GO(n,r)}}}Xn.LiteralYear=GO;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.PartialCompare=void 0;const b4e=xt;class R4e extends b4e.ExpressionDef{constructor(e,n){super({right:n}),this.op=e,this.right=n,this.elementType="<=> a"}granular(){return this.right.granular()}apply(e,n,r){return this.right.apply(e,this.op,r)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("partial-as-value","Partial comparison does not have a value")}}Lv.PartialCompare=R4e;var _d={};Object.defineProperty(_d,"__esModule",{value:!0}),_d.PickWhen=_d.Pick=void 0;const au=oe,Cd=rn,O4e=xt,D4e=We;function Iv(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class N4e extends O4e.ExpressionDef{constructor(e,n){super({choices:e}),this.choices=e,this.elsePick=n,this.elementType="pick",this.has({elsePick:n})}requestExpression(e){if(this.elsePick!==void 0){for(const n of this.choices){if(n.pick===void 0)return;const r=n.when.requestExpression(e);if(r===void 0||r.dataType!=="boolean")return}return this.getExpression(e)}}apply(e,n,r){const i={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};let s,o="scalar",u="constant";for(const c of this.choices){const f=c.when.apply(e,"=",r),x=c.pick?c.pick.getExpression(e):r.getExpression(e);if(o=(0,au.maxExpressionType)(o,(0,au.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,au.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Cd.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=Iv(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=Iv(s,l),Cd.FT.typeEq(s,l,!0)?(i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,au.maxExpressionType)(o,l.expressionType),evalSpace:(0,au.mergeEvalSpaces)(u,l.evalSpace),value:i}):this.elsePick?this.loggedErrorExpr("pick-else-type-does-not-match",{elseType:l.dataType,returnType:s.dataType}):this.loggedErrorExpr("pick-default-type-does-not-match",{defaultType:l.dataType,returnType:s.dataType})}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.loggedErrorExpr("pick-missing-else","pick incomplete, missing 'else'");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.loggedErrorExpr("pick-missing-value","pick with no value can only be used with apply");a.when.requestExpression(e)===void 0&&this.loggedErrorExpr("pick-illegal-partial","pick with partial when can only be used with apply"),r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!Cd.FT.typeEq(a.when,Cd.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!Cd.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=Iv(i,a.pick),s=(0,au.maxExpressionType)(s,(0,au.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,au.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),n.kids.pickWhen.push(a.when.value),n.kids.pickThen.push(a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,au.maxExpressionType)(s,u.expressionType),o=(0,au.mergeEvalSpaces)(o,u.evalSpace),i=Iv(i,u),Cd.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):this.elsePick.loggedErrorExpr("pick-else-type-does-not-match",{elseType:u.dataType,returnType:i.dataType})}}_d.Pick=N4e;class w4e extends D4e.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}_d.PickWhen=w4e;var Td={};Object.defineProperty(Td,"__esModule",{value:!0}),Td.RecordLiteral=Td.RecordElement=void 0;const _z=As,F4e=xt,L4e=We;class I4e extends L4e.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Td.RecordElement=I4e;class $4e extends F4e.ExpressionDef{constructor(e){super(),this.pairs=e,this.elementType="record literal",this.has({pairs:e})}getExpression(e){const n={node:"recordLiteral",kids:{}};let r="scalar";for(const i of this.pairs){const s=i.value.getExpression(e),o={dataType:"error",...s.value};o.dataType==="error"&&(0,_z.isAtomicFieldType)(s.dataType)&&(o.dataType=s.dataType),o.dataType==="error"&&s.dataType!=="error"&&this.logError("illegal-record-property-type",`Type '${s.dataType}' not a legal record value`),n.kids[i.key]=o,r=(0,_z.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Td.RecordLiteral=$4e;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.Timeframe=void 0;const B4e=oe,k4e=We;class P4e extends k4e.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,B4e.isTimestampUnit)(n)?n:"second"}}$v.Timeframe=P4e;var Bv={};Object.defineProperty(Bv,"__esModule",{value:!0}),Bv.TopBy=void 0;const M4e=oe,Cz=xt,j4e=We;class U4e extends j4e.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof Cz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof Cz.ExpressionDef){const n=this.by.getExpression(e);return(0,M4e.expressionIsAggregate)(n.expressionType)||this.logError("top-by-non-aggregate","top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}Bv.TopBy=U4e;var Ul={};Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.ImportStatement=Ul.ImportSelect=Ul.ImportSourceName=void 0;const WO=We;class q4e extends WO.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}Ul.ImportSourceName=q4e;class H4e extends WO.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}Ul.ImportSelect=H4e;class z4e extends WO.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.logError("invalid-import-url","Invalid URL in import statement")}}needs(){const e=this.translator();if(e&&this.fullURL&&e.root.importZone.getEntry(this.fullURL).status==="present"){const r=e.childRequest(this.fullURL);if(r)return r}}execute(e){const n=this.translator();if(!n)this.logError("no-translator-for-import","Cannot import without translation context");else if(this.fullURL){const r=n.root.importZone.getEntry(this.fullURL);if(r.status==="present"){const i=n.getChildExports(this.fullURL);if(this.notEmpty())for(const s of this.list){const o=s.from||s;if(e.getEntry(s.text))s.logError("name-conflict-on-selective-import",`Cannot redefine '${s.text}'`);else if(i[o.text]){const u={...i[o.text]};s.from&&(u.as=s.text),e.setEntry(s.text,{entry:u,exported:!1})}else o.logError("selective-import-not-found",`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.logError("name-conflict-on-indiscriminate-import",`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.logError("failed-import",`import failed: '${r.message}'`):this.logError("failed-import",`import failed with status: '${r.status}'`)}}}Ul.ImportStatement=z4e;var P1={};Object.defineProperty(P1,"__esModule",{value:!0}),P1.ExtendBlock=void 0;const Q4e=We,G4e=mn;class W4e extends Q4e.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=G4e.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}P1.ExtendBlock=W4e;var kv={};Object.defineProperty(kv,"__esModule",{value:!0}),kv.Argument=void 0;const V4e=We;class Y4e extends V4e.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}kv.Argument=Y4e;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.HasParameter=void 0;const Tz=oe,J4e=We;class X4e extends J4e.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,Tz.isCastType)(e.type)&&(this.type=e.type),e.default&&(this.default=e.default,this.has({default:this.default}))}parameter(){var e;if(this.default!==void 0){const n=this.default.constantValue();return this.type&&this.type!==n.dataType&&n.dataType!=="null"&&n.dataType!=="error"&&this.default.logError("parameter-default-does-not-match-declared-type",`Default value for parameter does not match declared type \`${this.type}\``),n.dataType==="null"?this.type?{value:n.value,name:this.name,type:this.type}:(this.default.logError("parameter-null-default-without-declared-type","Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,Tz.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.logError("parameter-illegal-default-type",`Default value cannot have type \`${n.dataType}\``),{value:n.value,name:this.name,type:"error"}):{value:n.value,name:this.name,type:n.dataType}}return this.type===void 0&&this.logError("parameter-missing-default-or-type","Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}Pv.HasParameter=X4e;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.AnonymousQuery=void 0;const K4e=We,Z4e=Nr;class eSe extends K4e.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=Z4e.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("non-query-used-as-query","Cannot run this object as a query");return}const r={...n.query()},i=this.note||{};r.annotation&&(i.inherits=r.annotation),(i.notes||i.blockNotes||i.inherits)&&(r.annotation=i),e.queryList.push(r)}}Mv.AnonymousQuery=eSe;var ql={};Object.defineProperty(ql,"__esModule",{value:!0}),ql.View=void 0;const tSe=We;let nSe=class extends tSe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};ql.View=nSe;var jv={};Object.defineProperty(jv,"__esModule",{value:!0}),jv.ViewArrow=void 0;const rSe=hr,iSe=ql;class sSe extends iSe.View{constructor(e,n){super({base:e,operation:n}),this.base=e,this.operation=n,this.elementType="viewArrow"}pipelineComp(e){const n=this.base.pipelineComp(e),r=new rSe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.logError("refinement-with-multistage-view","A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}jv.ViewArrow=sSe;var Uv={},M1={};Object.defineProperty(M1,"__esModule",{value:!0}),M1.refine=void 0;const VO=As,YO=Ol;function oSe(t,e,n){var r,i;if(e.length!==1)return t.logError("refinement-with-multistage-view","Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,VO.isRawSegment)(s))t.logError("refinement-of-raw-query","Cannot refine raw query, must add an explicit query stage");else if(s.type==="partial"&&o.type!=="index"&&o.type!=="raw"?s.type=o.type:o.type!==s.type&&t.logError("mismatched-view-types-for-refinement",`cannot refine ${s.type} view with ${o.type} view`),o.type!=="index"&&s.type!=="index"&&o.type!=="raw"&&((o.orderBy!==void 0||o.by!==void 0)&&(s.orderBy===void 0&&s.by===void 0?o.orderBy?s.orderBy=o.orderBy:o.by&&(s.by=o.by):t.logError("ordering-overridden-in-refinement","refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.logError("limit-overridden-in-refinement","refinement cannot override existing limit"))),s.filterList=s.filterList!==void 0||o.filterList!==void 0?[...(r=s.filterList)!==null&&r!==void 0?r:[],...(i=o.filterList)!==null&&i!==void 0?i:[]]:void 0,(0,VO.isQuerySegment)(o)&&(0,VO.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,YO.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,YO.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.logError("name-conflict-in-refinement",`overlapping fields in refinement: ${u.map(YO.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}M1.refine=oSe,Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ViewRefine=void 0;const uSe=Fr,aSe=Xi,lSe=M1,cSe=ql;class fSe extends cSe.View{constructor(e,n){super({base:e,refinement:n}),this.base=e,this.refinement=n,this.elementType="refine"}pipelineComp(e,n){const r=this.base.pipelineComp(e),i=this.refinement.refine(e,r.pipeline,n);return{pipeline:i,annotation:r.annotation,outputStruct:i.length>0?(0,aSe.getFinalStruct)(this.refinement,e.structDef(),i):uSe.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.logError("refinement-with-multistage-view","refinement must have exactly one stage"),n):(0,lSe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}Uv.ViewRefine=fSe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ReferenceView=void 0;const JO=oe,bz=Fr,xSe=Xi,dSe=wr,hSe=M1,pSe=ql;class gSe extends pSe.View{constructor(e){super({reference:e}),this.reference=e,this.elementType="reference-view"}pipelineComp(e,n){return this._pipelineComp(e)}_pipelineComp(e,{forRefinement:n}={forRefinement:!1}){const r=this.reference.getField(e),i=function(){return{inputStruct:bz.ErrorFactory.structDef,outputStruct:bz.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.logError("view-not-found",`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof dSe.SpaceField))throw new Error("Expected space field");const s=r.found.fieldDef();if(s===void 0)throw new Error("Expected field to have definition");if((0,JO.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,JO.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,JO.isTurtleDef)(s)?this.reference.list.length>1?(n?this.logError("refinement-with-joined-view","Cannot use view from join as refinement"):this.logError("nest-of-joined-view","Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,xSe.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.logError("refinement-with-source",`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.logError("nest-of-source","This operation is not supported"),i())}getRefinementSegment(e){const{pipeline:n,error:r}=this._pipelineComp(e,{forRefinement:!0});if(!r){if(n.length!==1){this.reference.logError("refinement-with-multistage-view",`named refinement \`${this.reference.refString}\` must have exactly one stage`);return}return n[0]}}refine(e,n,r){const i=this.getRefinementSegment(e);return i?(0,hSe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}qv.ReferenceView=gSe;var Hv={},j1={},zv={},U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.Index=void 0;const mSe=We,ySe=mn;let ESe=class extends mSe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=ySe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};U1.Index=ESe;var q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.SampleProperty=void 0;const ASe=We,Rz=mn;class vSe extends ASe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=Rz.LegalRefinementStage.Tail,this.forceQueryClass=Rz.QueryClass.Index}sampling(){return this.sample}}q1.SampleProperty=vSe;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.IndexFieldSpace=void 0;const Oz=oe,XO=ht,SSe=wr,_Se=oo,CSe=A1,TSe=hr;class bSe extends _Se.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof XO.FieldReference?super.pushFields(n):n instanceof XO.WildcardFieldReference?this.addWild(n):n.logError("invalid-field-in-index-query","Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.logError("refinement-of-index-segment","index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof SSe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof CSe.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.logError(u.error.code,u.error.message):n.push(o.refToField)}}return{type:"index",indexFields:n}}addRefineFromFields(e){}addWild(e){var n;let r=this.exprSpace;const i=[];if(e.joinPath)for(const u of e.joinPath.list){const a=u.refString;i.push(a);const l=r.entry(a);if(l)if(l instanceof TSe.StructSpaceField)r=l.fieldSpace;else{u.logError("invalid-wildcard-source",`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.logError("wildcard-source-not-found",`No such field as '${a}'`);return}}const s=this.dialectObj(),o=[];for(const[u,a]of r.entries()){if(e.except.has(u)||a.refType==="parameter")continue;const l=XO.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.logError("name-conflict-in-wildcard-expansion",`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc(),f=c.dataType;(0,Oz.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,Oz.expressionIsScalar)(c.expressionType)&&(s===void 0||!s.ignoreInProject(u))&&(o.push({name:l,entry:a}),this.expandedWild[l]=i.concat(u))}}for(const u of o.sort((a,l)=>a.name.localeCompare(l.name)))this.setEntry(u.name,u.entry)}}Qv.IndexFieldSpace=bSe,Object.defineProperty(zv,"__esModule",{value:!0}),zv.IndexBuilder=void 0;const KO=oe,RSe=Fr,OSe=so,DSe=U1,NSe=$l,wSe=q1,FSe=Qv;class LSe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new FSe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof OSe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof NSe.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof DSe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.logError("index-by-already-specified","Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof wSe.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,KO.isIndexSegment)(e)&&!(0,KO.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),RSe.ErrorFactory.indexSegment;const n=this.resultFS.getPipeSegment(e),r=(e==null?void 0:e.filterList)||[];return this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters]),e!=null&&e.limit&&(n.limit=e.limit),this.limit&&(n.limit=this.limit.limit),this.indexOn&&(n.weightMeasure=this.indexOn.refString),e&&(0,KO.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}zv.IndexBuilder=LSe;var Gv={},H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.GroupBy=void 0;const ISe=Ji,Dz=mn;class $Se extends ISe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=Dz.LegalRefinementStage.Single,this.forceQueryClass=Dz.QueryClass.Grouping}}H1.GroupBy=$Se;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ProjectFieldSpace=void 0;const ZO=oe,BSe=oo;class kSe extends BSe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,ZO.expressionIsAggregate)(e.expressionType)?!1:(0,ZO.expressionInvolvesAggregate)(e.expressionType)&&(0,ZO.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}Wv.ProjectFieldSpace=kSe;var Hl={},Hc={};Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.Ordering=Hc.OrderBy=void 0;const PSe=oe,Nz=Bl,wz=We,MSe=mn;class jSe extends wz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof Nz.FieldName&&this.has({field:e})}get modelField(){return typeof this.field=="number"?this.field:this.field.refString}getOrderBy(e){var n;if(this.field instanceof Nz.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.logError(s.error.code,s.error.message),(!s.found||!s.isOutputField)&&this.logError("order-by-not-found-in-output",`Unknown field ${this.field.refString} in output space`),(0,PSe.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.logError("order-by-analytic",`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}Hc.OrderBy=jSe;class USe extends wz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=MSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Hc.Ordering=USe;var z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.Top=void 0;const Fz=oe,qSe=Bl,HSe=We,zSe=mn;let QSe=class extends HSe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=zSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof qSe.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.logError(i.error.code,i.error.message),(!i.found||!i.isOutputField)&&this.by.logError("top-by-not-found-in-output",`Unknown field ${this.by.refString} in output space`),(0,Fz.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.logError("top-by-analytic",`Illegal order by of analytic field ${this.by.refString}`)}return{by:"name",name:this.by.refString}}else{const r=this.by.getExpression(e);return(0,Fz.expressionIsAggregate)(r.expressionType)&&this.by.logError("top-by-aggregate","top by expression must not be an aggregate"),r.evalSpace==="output"&&this.by.logError("top-by-not-in-output","top by expression must be an output expression"),{by:"expression",e:r.value}}}};z1.Top=QSe,Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.ReduceBuilder=Hl.QuerySegmentBuilder=void 0;const Lz=oe,GSe=Fr,WSe=so,VSe=$l,Iz=Hc,$z=z1,YSe=oo,JSe=Ji;class Bz{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof JSe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof WSe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof $z.Top?(this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.logError("ordering-already-specified","Query operation is already sorted"):this.order=e)):e instanceof VSe.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof Iz.Ordering&&(this.order?e.logError("ordering-already-specified","Query operation already sorted"):this.order=e)}refineFrom(e,n){if(e&&e.type!=="index"&&e.type!=="raw"&&(this.order||(e.orderBy?n.orderBy=e.orderBy:e.by&&(n.by=e.by)),!this.limit&&e.limit&&(n.limit=e.limit)),this.limit&&(n.limit=this.limit),this.order instanceof $z.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof Iz.Ordering&&(n.orderBy=this.order.getOrderBy(this.inputFS));const r=(e==null?void 0:e.filterList)||[];this.filters.length>0&&!r?n.filterList=this.filters:r&&(n.filterList=[...r,...this.filters])}}Hl.QuerySegmentBuilder=Bz;class XSe extends Bz{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new YSe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,Lz.isReduceSegment)(e)||(0,Lz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),GSe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Hl.ReduceBuilder=XSe,Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ProjectBuilder=void 0;const kz=oe,KSe=Fr,ZSe=H1,e_e=Wv,t_e=Hl;class n_e extends t_e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new e_e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof ZSe.GroupBy?e.logError("illegal-operation-in-select-segment","Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,kz.isProjectSegment)(e)||(0,kz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),KSe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Gv.ProjectBuilder=n_e;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.PartialBuilder=void 0;const r_e=As,i_e=Hl;class s_e extends i_e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,r_e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}Vv.PartialBuilder=s_e,Object.defineProperty(j1,"__esModule",{value:!0}),j1.QOpDesc=void 0;const o_e=zv,u_e=Gv,a_e=Hl,l_e=We,c_e=Xi,f_e=hr,zc=mn,x_e=Vv;class d_e extends l_e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=zc.QueryClass.Grouping:this.refineThis.type==="project"?n=zc.QueryClass.Project:this.refineThis.type==="index"&&(n=zc.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.logError(`illegal-${n}-operation`,`Not legal in ${n} query`):n=i.forceQueryClass),r||(r=(e=i.needsExplicitQueryClass)!==null&&e!==void 0?e:!1);return n===void 0&&r&&(this.logError("ambiguous-view-type",{}),n=zc.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case zc.QueryClass.Grouping:return new a_e.ReduceBuilder(e,this.refineThis,n,r);case zc.QueryClass.Project:return new u_e.ProjectBuilder(e,this.refineThis,n,r);case zc.QueryClass.Index:return new o_e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new x_e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new f_e.StaticSourceSpace((0,c_e.opOutputStruct)(this,e.structDef(),i))}}}j1.QOpDesc=d_e,Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.QOpDescView=void 0;const h_e=oe,p_e=hr,Pz=j1,g_e=Xi,e7=mn,m_e=ql;class y_e extends m_e.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,h_e.isRawSegment)(i)?(this.logError("refinement-of-raw-query","A raw query cannot be refined"),i):(r.refineFrom(i),r.getOp(e,n).segment)}refine(e,n,r){const i=[...n];if(i.length===0)return i;if(i.length===1)return this.operation.refineFrom(i[0]),[this.getOp(e,r,this.operation,i[0])];const s=new Pz.QOpDesc([]),o=new Pz.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case e7.LegalRefinementStage.Head:s.push(u);break;case e7.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case e7.LegalRefinementStage.Tail:o.push(u);break;default:u.logError("illegal-refinement-operation","Illegal query refinement")}if(s.notEmpty()&&(this.has({headRefinements:s}),i[0]=this.getOp(e,void 0,s,i[0])),o.notEmpty()){const u=i.length-1;this.has({tailRefinements:o});const a=(0,g_e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new p_e.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}Hv.QOpDescView=y_e;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const Mz=oe,E_e=rn,A_e=cd,v_e=We,Qc=In,S_e=Nr,__e=wr;class zl extends v_e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=S_e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new t7(e,this),n)}executesInOutputSpace(){return!1}queryFieldDef(e,n){let r;function i(){if(e.isQueryFieldSpace())return e.outputSpace();throw new Error("must be in a query -- weird internal error")}try{const u=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(u)}catch(u){return this.logError("failed-field-definition",`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.logWarning("null-typed-field-definition",'null value defaults to type number, use "null::TYPE" to specify correct type'),s="number"),(0,Mz.isAtomicFieldType)(s)&&s!=="error"){this.typecheckExprValue(r);let u;switch(s){case"date":case"timestamp":{const a={name:n,type:s,location:this.location,e:r.value};(0,A_e.isGranularResult)(r)&&(a.timeframe=r.timeframe),u=a;break}case"json":case"boolean":case"string":case"number":case"sql native":{u={type:s,name:n,location:this.location,e:r.value};break}case"record":{const a=[];u={type:"record",name:n,location:this.location,join:"one",fields:a,e:r.value,dialect:e.dialectName()};break}case"array":throw this.internalError("Cannot return an array result from a query (yet)")}return r.expressionType&&(u.expressionType=r.expressionType),this.exprSrc&&(u.code=this.exprSrc),this.note&&(u.annotation=this.note),u}if(!(e instanceof t7&&e.foundCircle)&&r.dataType!=="error"){const u=E_e.FT.inspect(r);this.logError("invalid-type-for-field-definition",`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new jz(e,this))}}xn.AtomicFieldDeclaration=zl;class C_e extends zl{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=C_e;class T_e extends zl{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=T_e;class b_e extends zl{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=b_e;class R_e extends zl{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=R_e;class O_e extends zl{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=O_e;class D_e extends zl{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=D_e;class N_e extends zl{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=N_e;class t7{constructor(e,n){this.realFS=e,this.circular=n,this.type="fieldSpace",this.foundCircle=!1}structDef(){return this.realFS.structDef()}emptyStructDef(){return this.realFS.emptyStructDef()}entry(e){return this.realFS.entry(e)}lookup(e){return e[0]&&e[0].refString===this.circular.defineName?(this.foundCircle=!0,{error:{message:`Circular reference to '${this.circular.defineName}' in definition`,code:"circular-reference-in-field-definition"},found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}dialectName(){return this.realFS.dialectName()}dialectObj(){return this.realFS.dialectObj()}isQueryFieldSpace(){return this.realFS.isQueryFieldSpace()}outputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.outputSpace();throw new Error("Not a query field space")}inputSpace(){if(this.realFS.isQueryFieldSpace())return this.realFS.inputSpace();throw new Error("Not a query field space")}}xn.DefSpace=t7;class jz extends __e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){let e=this.defInSource;return e===void 0&&(this.defInSource=e,e=this.exprDef.fieldDef(this.space,this.name)),e}getQueryFieldDef(e){if(!this.defInQuery){const n=this.exprDef.queryFieldDef(e,this.name);this.defInQuery=n}return this.defInQuery}typeDesc(){const e=this.defInQuery||this.fieldDef();if((0,Mz.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}xn.FieldDefinitionValue=jz;var Yv={};Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.Aggregate=void 0;const w_e=Ji,Uz=mn;let F_e=class extends w_e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=Uz.LegalRefinementStage.Single,this.forceQueryClass=Uz.QueryClass.Grouping}};Yv.Aggregate=F_e;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.Calculate=void 0;const L_e=Ji,I_e=mn;class $_e extends L_e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=I_e.LegalRefinementStage.Single}}Jv.Calculate=$_e;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Dimensions=void 0;const B_e=Dl;class k_e extends B_e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Q1.Dimensions=k_e;var G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.Measures=void 0;const P_e=Dl;class M_e extends P_e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}G1.Measures=M_e;var Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.Nests=void 0;const j_e=Ji,qz=mn;class U_e extends j_e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=qz.LegalRefinementStage.Single,this.forceQueryClass=qz.QueryClass.Grouping}}Xv.Nests=U_e;var Kv={};Object.defineProperty(Kv,"__esModule",{value:!0}),Kv.ProjectStatement=void 0;const q_e=Ji,Hz=mn;class H_e extends q_e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=Hz.QueryClass.Project,this.queryRefinementStage=Hz.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}Kv.ProjectStatement=H_e;var Ql={},pa={};Object.defineProperty(pa,"__esModule",{value:!0}),pa.findReferences=pa.deprecatedParseTableURI=pa.constructTableKey=void 0;const z_e=fl,n7=tn;function r7(t){const e=(0,n7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,n7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class Q_e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=zz(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,n7.getId)(e.connectionId()),r=r7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=r7(e.tableURI()),{connectionName:r,tablePath:i}=Qz(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=r7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function zz(t,e){return t===void 0?e:`${t}:${e}`}pa.constructTableKey=zz;function Qz(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}pa.deprecatedParseTableURI=Qz;function G_e(t,e,n){const r=new Q_e(t,e),i=r;return z_e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}pa.findReferences=G_e,Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.TableFunctionSource=Ql.TableMethodSource=Ql.TableSource=void 0;const Gz=pa,W_e=io,Wz=Fr;class i7 extends W_e.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return Wz.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,Gz.constructTableKey)(o,s),a=(e=this.translator())===null||e===void 0?void 0:e.root.schemaZone.getEntry(u);let l=`Schema read failure for table '${s}' for connection '${o}'`;if(a){if(a.status==="present"){(n=this.document())===null||n===void 0||n.checkExperimentalDialect(this,a.value.dialect),a.value.location=this.location,a.value.fields.forEach(f=>{f.location=this.location});const c={...a.value,fields:a.value.fields.map(f=>({...f,location:this.location})),location:this.location};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(c),c}a.status==="error"&&(l=a.message)}return this.logError("failed-to-fetch-table-schema",l),Wz.ErrorFactory.structDef}}Ql.TableSource=i7;class V_e extends i7{constructor(e,n){super(),this.connectionName=e,this.tablePath=n,this.elementType="tableMethodSource",this.has({connectionName:e})}getTableInfo(){var e;const n=this.modelEntry(this.connectionName),r=this.connectionName.refString;if(n===void 0)(e=this.namespace())===null||e===void 0||e.setEntry(r,{entry:{type:"connection",name:r},exported:!0},!0);else if(n.entry.type!=="connection"){this.connectionName.logError("invalid-connection-for-table-source",`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}Ql.TableMethodSource=V_e;class Y_e extends i7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,Gz.deprecatedParseTableURI)(this.tableURI)}}Ql.TableFunctionSource=Y_e;var Zv={};Object.defineProperty(Zv,"__esModule",{value:!0}),Zv.SQLString=void 0;const J_e=We,Vz=su;class X_e extends J_e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(K_e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof Vz.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.logError("invalid-sql-source-interpolation","This element is not legal inside an SQL string")}sqlPhrases(){const e=[];for(const n of this.elements)if(typeof n=="string")e.push({sql:n});else{const r=n.getQuery();r?e.push(r.query()):n.sqLog("failed-to-expand-sql-source","Cannot expand into a query")}return e}}Zv.SQLString=X_e;function K_e(t){return t instanceof Vz.SourceQueryElement}var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.SourceDesc=void 0;const Z_e=We;class e5e extends Z_e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}e4.SourceDesc=e5e;var t4={};Object.defineProperty(t4,"__esModule",{value:!0}),t4.isSourceProperty=void 0;const t5e=so,n5e=Dl,r5e=rd,i5e=wl,s5e=id,o5e=sd,u5e=od,a5e=Nl,l5e=Ci;function c5e(t){return t instanceof t5e.Filter||t instanceof l5e.JoinStatement||t instanceof n5e.DeclareFields||t instanceof r5e.FieldListEdit||t instanceof i5e.Renames||t instanceof s5e.PrimaryKey||t instanceof a5e.ObjectAnnotation||t instanceof o5e.Views||t instanceof u5e.TimezoneStatement}t4.isSourceProperty=c5e;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.isFieldCollectionMember=void 0;const f5e=xn,Yz=ht;function x5e(t){return t instanceof Yz.FieldReference||t instanceof Yz.WildcardFieldReference||t instanceof f5e.AtomicFieldDeclaration}n4.isFieldCollectionMember=x5e;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.isQueryElement=void 0;const d5e=ud,h5e=ad,p5e=h1,g5e=p1;function m5e(t){return t instanceof d5e.QueryArrow||t instanceof h5e.QueryRefine||t instanceof p5e.QueryReference||t instanceof g5e.QueryRaw}r4.isQueryElement=m5e;var Jz={};Object.defineProperty(Jz,"__esModule",{value:!0});var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.isQueryProperty=void 0;function y5e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}i4.isQueryProperty=y5e;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.isQueryExtendProperty=void 0;const E5e=Q1,A5e=Ci,v5e=G1;function S5e(t){return t instanceof E5e.Dimensions||t instanceof v5e.Measures||t instanceof A5e.JoinStatement}s4.isQueryExtendProperty=S5e;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.isFieldPropStatement=void 0;const _5e=Ll,C5e=so,T5e=$l,b5e=hd;function R5e(t){return t instanceof C5e.Filter||t instanceof T5e.Limit||t instanceof b5e.PartitionBy||t instanceof _5e.FunctionOrdering}o4.isFieldPropStatement=R5e,function(t){var e=D&&D.__createBinding||(Object.create?function(r,i,s,o){o===void 0&&(o=s);var u=Object.getOwnPropertyDescriptor(i,s);(!u||("get"in u?!i.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return i[s]}}),Object.defineProperty(r,o,u)}:function(r,i,s,o){o===void 0&&(o=s),r[o]=i[s]}),n=D&&D.__exportStar||function(r,i){for(var s in r)s!=="default"&&!Object.prototype.hasOwnProperty.call(i,s)&&e(i,r,s)};Object.defineProperty(t,"__esModule",{value:!0}),n(r1,t),n(Kx,t),n(Zx,t),n(io,t),n(o1,t),n(su,t),n(wA,t),n(FA,t),n(BA,t),n(c1,t),n(MA,t),n(rd,t),n(id,t),n(wl,t),n(sd,t),n(od,t),n(jA,t),n(xd,t),n(qA,t),n(Ll,t),n(HA,t),n(da,t),n(zA,t),n(dd,t),n(QA,t),n(GA,t),n(WA,t),n(m1,t),n(VA,t),n(YA,t),n(XA,t),n(S1,t),n(E1,t),n(Lc,t),n(KA,t),n(ZA,t),n(tv,t),n(rv,t),n(iv,t),n(sv,t),n(ov,t),n(uv,t),n(av,t),n(lv,t),n(cv,t),n(fv,t),n(xv,t),n(dv,t),n(hv,t),n(mv,t),n(Xn,t),n(Lv,t),n(hd,t),n(_d,t),n(Td,t),n(Fl,t),n($v,t),n(Bv,t),n(_1,t),n(Ul,t),n(P1,t),n(kv,t),n(Pv,t),n(Mv,t),n(ad,t),n(ud,t),n(ql,t),n(jv,t),n(Uv,t),n(qv,t),n(Hv,t),n(xn,t),n(ht,t),n(Yv,t),n(Jv,t),n(Dl,t),n(Q1,t),n(P1,t),n(so,t),n(H1,t),n(U1,t),n(Ci,t),n(i1,t),n($l,t),n(G1,t),n(r1,t),n(Xv,t),n(Hc,t),n(Kv,t),n(j1,t),n(q1,t),n(z1,t),n(ld,t),n(Fc,t),n(g1,t),n(Ql,t),n(Zv,t),n(Nl,t),n(ou,t),n(e4,t),n(t4,t),n(xt,t),n(n4,t),n(Bl,t),n(We,t),n(r4,t),n(Jz,t),n(i4,t),n(s4,t),n(o4,t)}(vA);var u4={},bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.ConstantExpression=bd.ConstantFieldSpace=void 0;const O5e=xt;class Xz{constructor(){this.type="fieldSpace"}structDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}emptyStructDef(){throw new Error("ConstantFieldSpace cannot generate a structDef")}lookup(e){return{error:{message:"Only constants allowed in parameter default values",code:"illegal-reference-in-parameter-default"},found:void 0}}entries(){return[]}entry(){}dialectName(){return"~constant-space-unknown-dialect~"}dialectObj(){}isQueryFieldSpace(){return!1}}bd.ConstantFieldSpace=Xz;class D5e extends O5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="constantExpression"}getExpression(e){return this.constantValue()}get constantFs(){return this.cfs||(this.cfs=new Xz),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}bd.ConstantExpression=D5e;var N5e=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),w5e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),F5e=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&N5e(e,t,n);return w5e(e,t),e};Object.defineProperty(u4,"__esModule",{value:!0}),u4.MalloyToAST=void 0;const Kz=EE,L5e=o2,Z=F5e(vA),s7=SA,I5e=Qn,$5e=vA,$n=tn,o7=oe,B5e=ko,k5e=bd;class Zz extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class u7 extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const P5e=["##! m4warnings=error"];class M5e extends L5e.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of P5e){const s=B5e.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){return this.contextError(e,"internal-translator-error",{message:n}),new Error(`Internal Translator Error: ${n}`)}astError(e,n,r,i){this.msgLog.log((0,s7.makeLogMessage)(n,r,{at:e.location,...i}))}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r,i){this.msgLog.log((0,s7.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,s7.makeLogMessage)(e,n,{at:{url:this.parseInfo.sourceURL,range:r},severity:"warn",replacement:i}))}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,"experiment-not-enabled",{experimentId:e}),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n,r){const i=this.m4Severity();i&&this.contextError(e,n,r,{severity:i})}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof u7||this.astError(s,"unexpected-statement-in-translation",`Parser enountered unexpected statement type '${s.elementType}' when it needed '${r}'`)}return i}getNumber(e){return Number.parseInt(e.text)}getFieldName(e){return this.astAt(new Z.FieldName((0,$n.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new Z.ModelEntryReference((0,$n.getId)(e)),e.id())}defaultResult(){return new Z.Unimplemented}astAt(e,n){return e.location={url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(n)},e}getSourceCode(e){const n=e.start.startIndex,r=e.stop||e.start,i=new I5e.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new Z.FilterElement(n,this.getSourceCode(e));return this.astAt(r,e)}getFieldDefs(e,n){return e.map(r=>this.getFieldDef(r,n))}getFieldExpr(e){const n=this.visit(e);if(n instanceof Z.ExpressionDef)return this.astAt(n,e);throw this.internalError(e,`expression node unknown type '${n.elementType}'`)}getFilterShortcut(e){const n=this.getFilterElement(e.fieldExpr());return this.m4advisory(e,"filter-shortcut","Filter shortcut `{? condition }` is deprecated; use `{ where: condition } instead"),new Z.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,$n.getPlainString)(e);for(const i of r)i instanceof Kz.ParserRuleContext&&this.contextError(i,"illegal-query-interpolation-outside-sql-block","%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"percent-terminated-query-interpolation","Use %{ ... } instead of %{ ... }%");for(const r of(0,$n.getStringParts)(e))r instanceof Kz.ParserRuleContext?n.push(this.visit(r)):n.push(r);n.complete(),this.astAt(n,e)}parseTime(e,n){let r=n(e.text);return r||(this.contextError(e,"failed-to-parse-time-literal","Time data parse error"),r=new Z.LiteralTimestamp({text:e.text})),this.astAt(r,e)}getNotes(e){return e.ANNOTATION().map(n=>({text:n.text,at:this.getLocation(e)}))}getIsNotes(e){return this.getNotes(e._beforeIs).concat(this.getNotes(e._afterIs))}visitMalloyDocument(e){const n=this.only(e.malloyStatement().map(r=>this.visit(r)),r=>Z.isDocStatementOrDocStatementList(r)&&r,"statement");return new Z.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new Z.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new k5e.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new Z.HasParameter({name:(0,$n.getId)(e.parameterNameDef()),type:s,default:r}),e)}getSourceParameters(e){return e===void 0?[]:(this.inExperiment("parameters",e),e.sourceParameter().map(n=>this.getSourceParameter(n)))}visitSourceDefinition(e){const n=this.visit(e.sqExplore()),r=this.getSourceParameters(e.sourceParameters()),i=new Z.DefineSource((0,$n.getId)(e.sourceNameDef()),n instanceof Z.SourceQueryElement?n:void 0,!0,r),s=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return i.extendNote({notes:s}),this.astAt(i,e)}getSourceExtensions(e){return this.astAt(this.visitExploreProperties(e),e)}visitExploreProperties(e){const n=e.filterShortcut(),r=this.only(e.exploreStatement().map(s=>this.visit(s)),s=>Z.isSourceProperty(s)&&s,"source property"),i=new Z.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new Z.TableFunctionSource(n),e);return this.m4advisory(e,"table-function","`table('connection_name:table_path')` is deprecated; use `connection_name.table('table_path')`"),r}visitTableMethod(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=this.getPlainStringFrom(e.tablePath());return this.astAt(new Z.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new Z.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,$n.getShortString)(o));const u=new Z.SQLSource(r,i);return this.astAt(u,e)}visitDefJoinMany(e){const n=[];for(const i of e.joinList().joinDef()){const s=this.visit(i);s instanceof Z.Join&&(n.push(s),s instanceof Z.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"missing-on-in-join-many","join_many: requires ON expression")):s instanceof Z.KeyJoin&&this.contextError(e,"foreign-key-in-join-many","Foreign key join not legal in join_many:"))}const r=new Z.JoinStatement(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),r}visitDefJoinOne(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin&&(s.joinType="one"));const i=new Z.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}visitDefJoinCross(e){const n=this.getJoinList(e.joinList()),r=[];for(const s of n)s instanceof Z.Join&&(r.push(s),s instanceof Z.ExpressionJoin?s.joinType="cross":s.logError("foreign-key-in-join-cross","Foreign key join not legal in join_cross:"));const i=new Z.JoinStatement(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return this.only(e.joinDef().map(n=>this.visit(n)),n=>n instanceof Z.Join&&n,"join")}getJoinFrom(e){const n=e.isExplore(),r=this.getModelEntryName(e.joinNameDef());if(n){const s=this.getSqExpr(n.sqExpr()),o=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:s,notes:o,joinAs:r}}const i=e.sourceArguments();return i?{joinFrom:this.astAt(new Z.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new Z.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"join-statement-in-view","Joins in queries are deprecated, move into an `extend:` block."),n}visitJoinOn(e){var n;const{joinAs:r,joinFrom:i,notes:s}=this.getJoinFrom(e.joinFrom()),o=new Z.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,o7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"unknown-matrix-operation","Internal Error: Unknown matrixOperation"),u&&(o.joinOn=this.getFieldExpr(u)),o.extendNote({notes:this.getNotes(e).concat(s)}),this.astAt(o,e)}visitJoinWith(e){const{joinAs:n,joinFrom:r,notes:i}=this.getJoinFrom(e.joinFrom()),s=this.getFieldExpr(e.fieldExpr()),o=new Z.KeyJoin(n,r,s);return o.extendNote({notes:this.getNotes(e).concat(i)}),this.astAt(o,e)}getFieldDef(e,n){const r=e.fieldExpr(),i=(0,$n.getId)(e.fieldNameDef()),s=this.getFieldExpr(r),o=new n(s,i,this.getSourceCode(r)),u=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));return o.extendNote({notes:u}),this.astAt(o,e)}visitDefDimensions(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DimensionFieldDeclaration),r=new Z.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.MeasureFieldDeclaration),r=new Z.Measures(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitQueryExtend(e){const n=[],r=e.queryExtendStatementList().queryExtendStatement().map(s=>this.visit(s));for(const s of r)if(Z.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new Z.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),Z.DeclareFieldDeclaration),r=new Z.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"declare","`declare:` is deprecated; use `dimension:` or `measure:` inside a source or `extend:` block"),i}visitExploreRenameDef(e){const n=e.fieldName(0),r=e.fieldName(1),i=new Z.RenameField((0,$n.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new Z.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new Z.Filter(e.fieldExpr().map(n=>this.getFilterElement(n)))}visitWhereStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!1,this.astAt(n,e)}visitHavingStatement(e){const n=this.visitFilterClauseList(e.filterClauseList());return n.having=!0,this.astAt(n,e)}visitSubQueryDefList(e){const n=e.exploreQueryDef().map(r=>this.visitExploreQueryDef(r));return new Z.Views(n)}visitDefExploreQuery(e){const n=this.visitSubQueryDefList(e.subQueryDefList()),r=this.getNotes(e.tags());return n.extendNote({blockNotes:r}),e.QUERY()&&this.m4advisory(e,"query-in-source","Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new Z.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new Z.AcceptExceptFieldReference([this.getFieldName(r)]));return new Z.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new Z.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new Z.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,"invalid-timezone",{timezone:r.tz}),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>Z.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new Z.QOpDesc(n)}getFieldPath(e,n){const r=e.fieldName().map(i=>this.getFieldName(i));return this.astAt(new n(r),e)}getQueryFieldDef(e,n){const r=this.getFieldDef(e,n);return this.astAt(r,e)}getQueryFieldEntry(e,n,r){const i=e.taggedRef();if(i)return this.getTaggedRef(i,n,r);const s=e.fieldDef();if(s)return this.getQueryFieldDef(s,n);throw new Error("Expected query field entry to be a field reference or definition")}getQueryItems(e,n,r){return this.only(e.queryFieldEntry().map(i=>this.getQueryFieldEntry(i,n,r)),i=>i instanceof Z.FieldReference||i instanceof Z.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new Z.Aggregate(this.getQueryItems(e.queryFieldList(),Z.AggregateFieldDeclaration,Z.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new Z.GroupBy(this.getQueryItems(e.queryFieldList(),Z.GroupByFieldDeclaration,Z.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new Z.Calculate(this.getQueryItems(e.queryFieldList(),Z.CalculateFieldDeclaration,Z.CalculateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}getTaggedRef(e,n,r){const i=e.refExpr();if(i){const o=this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new Z.ExprGranularTime(new Z.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new Z.ExprSum(void 0,o);else return this.contextError(l,"invalid-reference-only-aggregation",`\`${f}\` is not legal in a reference-only aggregation`),o}const c=new n(u,o.outputName);return c.extendNote({notes:this.getNotes(e.tags())}),c}const s=this.getFieldPath(e.fieldPath(),r);return s.extendNote({notes:this.getNotes(e.tags())}),s}getFieldCollectionMember(e,n,r){const i=e.fieldDef();if(i)return this.getFieldDef(i,n);const s=e.taggedRef();if(s)return this.getTaggedRef(s,n,r);const o=e.collectionWildCard();if(o)return this.visitCollectionWildCard(o);throw this.internalError(e,"Unexpected element in fieldCollectionMember")}visitFieldCollection(e){const n=e.collectionMember().map(r=>this.getFieldCollectionMember(r,Z.ProjectFieldDeclaration,Z.ProjectFieldReference));return this.astAt(new Z.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"project","project: keyword is deprecated, use select:");const n=this.visitFieldCollection(e.fieldCollection());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCollectionWildCard(e){var n;const r=e.fieldPath(),i=r?this.getFieldPath(r,Z.ProjectFieldReference):void 0,s=this.astAt(new Z.WildcardFieldReference(i),e),o=((n=e.starQualified())===null||n===void 0?void 0:n.fieldNameList())||[];for(const u of o)for(const a of u.fieldName())s.except.add((0,$n.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new Z.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,Z.IndexFieldReference);return r.STAR()?this.astAt(new Z.WildcardFieldReference(s),e):this.astAt(s,e)});return new Z.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new Z.Index(n),i=e.fieldName();return i&&r.useWeight(this.getFieldName(i)),this.astAt(r,e)}visitFieldPropertyLimitStatement(e){return this.inExperiment("aggregate_limit",e),this.visitLimitStatement(e.limitStatement())}visitLimitStatement(e){return new Z.Limit(this.getNumber(e.INTEGER_LITERAL()))}visitAggregateOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.fieldExpr(),i=r?this.getFieldExpr(r):void 0;return this.astAt(new Z.FunctionOrderBy(i,n),e)}visitAggregateOrderByStatement(e){return this.visitAggregateOrdering(e.aggregateOrdering())}visitAggregateOrdering(e){const n=e.aggregateOrderBySpec().map(r=>this.visitAggregateOrderBySpec(r));return this.astAt(new Z.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new Z.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new Z.OrderBy(this.getFieldName(i),n);throw this.internalError(e,"can't parse order_by specification")}visitOrdering(e){const n=e.orderBySpec().map(r=>this.visitOrderBySpec(r));return this.astAt(new Z.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"top-by","by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new Z.Top(r,u)}const o=n.fieldExpr();o&&(i=new Z.Top(r,this.getFieldExpr(o)))}return i||(i=new Z.Top(r,void 0)),this.astAt(i,e)}visitTopLevelQueryDefs(e){const n=e.topLevelQueryDef().map(s=>this.visitTopLevelQueryDef(s)),r=this.getNotes(e.tags()),i=new Z.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,$n.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof Z.SourceQueryElement){const s=new Z.DefineQuery(n,r);return s.extendNote({notes:i}),this.astAt(s,e)}throw this.internalError(e,`Expected query definition, got a '${r.elementType}'`)}visitAnonymousQuery(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new Z.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.m4advisory(n,"anonymous-query","Anonymous `query:` statements are deprecated, use `run:` instead"),this.astAt(i,e)}visitRunStatement(e){const n=e.topLevelAnonQueryDef(),r=this.getSqExpr(n.sqExpr()),i=this.astAt(new Z.AnonymousQuery(r),n),s=this.getNotes(e.topLevelAnonQueryDef().tags()),o=this.getNotes(e.tags());return i.extendNote({notes:s,blockNotes:o}),this.astAt(i,e)}visitNestStatement(e){const n=this.visitNestedQueryList(e.nestedQueryList());return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitNestedQueryList(e){return new Z.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof Z.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,$n.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"anonymous-nest","`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new Z.NestFieldDeclaration(r,i),o=e.isDefine();return s.extendNote({notes:this.getNotes(e.tags()).concat(o?this.getIsNotes(o):[])}),this.astAt(s,e)}visitExploreQueryDef(e){const n=(0,$n.getId)(e.exploreQueryNameDef()),r=new Z.ViewFieldDeclaration(n,this.getVExpr(e.vExpr())),i=this.getNotes(e).concat(this.getIsNotes(e.isDefine()));return r.extendNote({notes:i}),this.astAt(r,e)}visitExprNot(e){return new Z.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new Z.Boolean(e.TRUE()?"true":"false")}allFieldExpressions(e){return e.map(n=>this.getFieldExpr(n))}visitExprLogicalOr(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new Z.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new Z.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new Z.ExprCoalesce(n,r),e)}visitPartialAllowedFieldExpr(e){var n;const r=this.getFieldExpr(e.fieldExpr()),i=(n=e.compareOp())===null||n===void 0?void 0:n.text;if(i){if(Z.isComparison(i))return this.astAt(new Z.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new Z.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new Z.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new Z.ExprNow}visitExprNumber(e){return new Z.ExprNumber(e.text)}visitExprFieldPath(e){const n=new Z.ExprIdReference(this.getFieldPath(e.fieldPath(),Z.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new Z.ExprNULL}visitExprExpr(e){return new Z.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new Z.ExprMinus(this.getFieldExpr(e.fieldExpr()))}visitExprAddSub(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1)),i=e.PLUS()?"+":"-";return new Z.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new Z.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(Z.isComparison(n))return new Z.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new Z.ExprUngroup(r==="all"?r:"exclude",this.getFieldExpr(e.fieldExpr()),n),e)}symmetricAggregateUsageError(e){return`Symmetric aggregate function \`${e}\` must be written as \`${e}(expression)\` or \`path.to.field.${e}()\``}asymmetricAggregateUsageError(e){return`Asymmetric aggregate function \`${e}\` must be written as \`path.to.field.${e}()\`, \`path.to.join.${e}(expression)\`, or \`${e}(expression)\``}visitExprAggregate(e){const n=e.fieldPath(),r=this.getFieldPath(n,Z.ExpressionFieldReference),i=n&&r?this.astAt(r,n):void 0,s=e.aggregate().text.toLowerCase(),o=e.fieldExpr();if(e.aggregate().COUNT())return o&&this.contextError(o,"count-expression-with-locality","Expression illegal inside path.count()"),new Z.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s));else{const a=this.astAt(new Z.ExprIdReference(r),n);return s==="min"?new Z.ExprMin(a):new Z.ExprMax(a)}else{if(s==="avg")return new Z.ExprAvg(u,i);if(s==="sum")return new Z.ExprSum(u,i);this.contextError(e,"aggregate-parse-error",`Cannot parse aggregate function ${s}`)}return new Z.ExprNULL}visitExprPathlessAggregate(e){const n=e.fieldExpr(),r=n?this.getFieldExpr(n):void 0,i=void 0,s=e.aggregate().text.toLowerCase();if(e.STAR()&&this.m4advisory(e,"wildcard-in-aggregate",`* illegal inside ${s}()`),s==="count")return this.astAt(r?new Z.ExprCountDistinct(r):new Z.ExprCount,e);if(s==="min"){if(r)return new Z.ExprMin(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new Z.ExprMax(r);this.contextError(e,"invalid-symmetric-aggregate",this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,"invalid-asymmetric-aggregate",this.asymmetricAggregateUsageError(s)),new Z.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new Z.ExprAvg(r,i,o);if(s==="sum")return new Z.ExprSum(r,i,o)}return new Z.ExprNULL}visitExprApply(e){return new Z.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new Z.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,o7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new Z.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new Z.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new Z.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new Z.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,$n.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,Z.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return Z.ExprTimeExtract.extractor(i)?this.astAt(new Z.ExprTimeExtract(i,r),e):this.astAt(new Z.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,o7.isCastType)(u)?a=u:(this.contextError(e,"unexpected-malloy-type",`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,$n.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"failed-to-parse-function-name","Function name error"),l="FUNCTION_NAME_ERROR"),Z.ExprTimeExtract.extractor(l)?this.astAt(new Z.ExprTimeExtract(l,s),e):this.astAt(new Z.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new Z.ExprDuration(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text)}visitPickStatement(e){const n=e.pick().map(r=>{let i;return r._pickValue&&(i=this.getFieldExpr(r._pickValue)),new Z.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new Z.Pick(n,this.getFieldExpr(e._pickElse)):new Z.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>Z.isFieldPropStatement(r)&&r,"field property statement");return new Z.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new Z.PartitionBy(e.id().map(n=>this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,Z.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,Z.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,Z.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,Z.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,Z.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,Z.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,Z.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new Z.ImportStatement(n,this.parseInfo.importBaseURL),e),i=e.importSelect();if(i)for(const s of i.importItem()){const o=s.id(),u=o[1]?this.astAt(new Z.ImportSourceName((0,$n.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new Z.ImportSelect((0,$n.idToStr)(o[0]),u),o[0]))}return r}visitJustExpr(e){return this.getFieldExpr(e.fieldExpr())}visitSampleStatement(e){const n=e.sampleSpec().INTEGER_LITERAL();if(n)return new Z.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new Z.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new Z.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new Z.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"orphaned-object-annotation","Object annotation not connected to any object"),new u7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new u7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new Z.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new Z.PartitionByFieldReference([this.astAt(new Z.FieldName((0,$n.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new Z.Argument({id:r,value:this.getFieldExpr(e.fieldExpr())}),e)}getSQArguments(e){if(e!==void 0)return this.inExperiment("parameters",e),e.sourceArgument().map(n=>this.getSQArgument(n))}visitSQID(e){const n=this.getModelEntryName(e),r=this.getSQArguments(e.sourceArguments());return this.astAt(new Z.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof Z.SourceQueryElement?n:(this.contextError(e,"unexpected-non-source-query-expression-node",`Expected a source/query expression, not '${n.elementType}'`),new Zz)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new Z.SQExtend(n,this.getSourceExtensions(e.exploreProperties()));return this.astAt(r,e)}visitSQParens(e){const n=this.getSqExpr(e.sqExpr());return this.astAt(n,e)}visitSQArrow(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof Z.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new Z.ReferenceView(this.getFieldPath(e.fieldPath(),Z.ViewOrScalarFieldReference))}visitSegOps(e){return new Z.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new Z.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new Z.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new Z.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof $5e.TableSource){const r=new Z.SQSource(n);return this.astAt(r,e)}return new Zz}visitSQSQL(e){const n=new Z.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new Z.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}visitExprWarnLike(e){let n="~";const r=e.fieldExpr(0),i=e.fieldExpr(1),s=this.parseInfo.rangeFromContext(e);return e.NOT()?(n="!~",this.warnWithReplacement("sql-not-like","Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("sql-like","Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,this.getFieldExpr(i)),e)}visitExprWarnNullCmp(e){let n="=";const r=e.fieldExpr(),i=this.parseInfo.rangeFromContext(e);e.NOT()?(n="!=",this.warnWithReplacement("sql-is-not-null","Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("sql-is-null","Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new Z.ExprNULL;return this.astAt(new Z.ExprCompare(this.getFieldExpr(r),n,s),e)}}u4.MalloyToAST=M5e;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.Zone=void 0;class j5e{constructor(){this.location={},this.zone=new Map}get(e){const n=this.zone.get(e);if((n==null?void 0:n.status)==="present")return n.value}getEntry(e){const n=this.zone.get(e);return n?n.firstReference||!this.location[e]?n:{...n,firstReference:this.location[e]}:{status:"error",message:"import reference failure"}}define(e,n){this.zone.set(e,{status:"present",value:n})}reference(e,n){const r=this.zone.get(e);(r==null?void 0:r.status)===void 0&&(this.zone.set(e,{status:"reference",firstReference:n}),this.location[e]=n)}getUndefined(){const e=[];for(const[n,r]of this.zone)r.status==="reference"&&e.push(n);return e.length>0?e:void 0}updateFrom(e,n){if(e)for(const[r,i]of Object.entries(e))i!==void 0&&this.define(r,i);if(n)for(const[r,i]of Object.entries(n))this.zone.set(r,{status:"error",message:i})}}a4.Zone=j5e;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.walkForDocumentSymbols=void 0;const U5e=fl,q5e=tn;class H5e{constructor(e,n,r,i){this.translator=e,this.tokens=n,this.scopes=r,this.symbols=i}popScope(){return this.scopes.pop()}peekScope(){return this.scopes[this.scopes.length-1]}enterTopLevelQueryDefs(e){const n=this.translator.rangeFromContext(e);e.topLevelQueryDef().length===1&&(this.blockRange=n)}enterTopLevelQueryDef(e){this.symbols.push({range:this.translator.rangeFromContext(e),name:e.queryName().text,type:"query",children:[],lensRange:this.blockRange}),this.blockRange=void 0}enterRunStatement(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterAnonymousQuery(e){this.symbols.push({range:this.translator.rangeFromContext(e.topLevelAnonQueryDef().sqExpr()),name:"unnamed_query",type:"unnamed_query",children:[],lensRange:this.translator.rangeFromContext(e)})}enterDefineSourceStatement(e){const n=this.translator.rangeFromContext(e);e.sourcePropertyList().sourceDefinition().length===1&&(this.blockRange=n)}enterSourceDefinition(e){const n=this.translator.rangeFromContext(e);this.scopes.push({range:n,name:e.sourceNameDef().id().text,type:"explore",children:[],lensRange:this.blockRange}),this.blockRange=void 0}exitSourceDefinition(e){const n=this.popScope();n&&this.symbols.push(n)}enterDefExploreQuery(e){const n=this.translator.rangeFromContext(e);e.subQueryDefList().exploreQueryDef().length===1&&(this.blockRange=n)}enterExploreQueryDef(e){const n={range:this.translator.rangeFromContext(e),name:e.exploreQueryNameDef().id().text,type:"query",children:[],lensRange:this.blockRange},r=this.peekScope();r&&r.children.push(n),this.scopes.push(n),this.blockRange=void 0}exitExploreQueryDef(e){this.popScope()}getNestDefName(e){const n=e.queryName();if(n)return n.id().text;let r,i=!1;const s={enterVArrow(u){u.vExpr().enterRule(s)},enterVSeg(u){u.segExpr().enterRule(o)}},o={enterSegField(u){const a=u.fieldPath().fieldName();i||(r??(r=a[a.length-1].id().text))},enterSegParen(u){u.vExpr().enterRule(s)},enterSegRefine(u){u._lhs.enterRule(o)},enterSegOps(){r=void 0,i=!0}};return e.vExpr().enterRule(s),r}handleNestEntry(e){const n=this.getNestDefName(e);if(n===void 0)return;const r={range:this.translator.rangeFromContext(e),name:n,type:"query",children:[]},i=this.peekScope();return i&&i.children.push(r),r}enterNestDef(e){const n=this.handleNestEntry(e);n&&this.scopes.push(n)}exitNestDef(e){this.popScope()}enterFieldDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldNameDef().id().text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterQueryFieldEntry(e){var n;const r=(n=e.taggedRef())===null||n===void 0?void 0:n.fieldPath();if(r===void 0)return;const i={range:this.translator.rangeFromContext(e),name:r.text,type:"field",children:[]},s=this.peekScope();s&&s.children.push(i)}enterExploreRenameDef(e){const n={range:this.translator.rangeFromContext(e),name:e.fieldName()[0].text,type:"field",children:[]},r=this.peekScope();r&&r.children.push(n)}enterJoinWith(e){this.handleJoinDef(e)}enterJoinOn(e){this.handleJoinDef(e)}handleJoinDef(e){const n={range:this.translator.rangeFromContext(e),name:e.joinFrom().joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,q5e.getStringIfShort)(e.importURL());n&&this.scopes.push({range:this.translator.rangeFromContext(e),name:n,type:"import",children:[]})}exitImportStatement(){const e=this.popScope();e&&this.symbols.push(e)}enterImportSelect(e){const n=this.peekScope();if(n)for(const r of e.importItem()){const i={range:this.translator.rangeFromContext(e),name:r.text,type:"import_item",children:[]};n.children.push(i)}}}function z5e(t,e,n){const r=new H5e(t,e,[],[]),i=r;return U5e.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}l4.walkForDocumentSymbols=z5e;var c4={};Object.defineProperty(c4,"__esModule",{value:!0}),c4.walkForDocumentCompletions=void 0;const Q5e=fl,G5e=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],W5e=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],V5e=["source","explore","query","sql"];class Y5e{constructor(e,n,r){this.tokens=e,this.completions=n,this.position=r}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){const{start:n,end:r}=e,i=this.position.line>n.line||this.position.line===n.line&&this.position.character>=n.character,s=this.position.line<r.line||this.position.line===r.line&&this.position.character<=r.character;return i&&s}enterExploreProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.exploreStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of G5e)this.completions.push({type:"explore_property",text:`${r}: `})}}enterQueryProperties(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.queryStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of W5e)this.completions.push({type:"query_property",text:`${r}: `})}}enterMalloyDocument(e){if(this.inRange(this.rangeOf(e))){let n=!1;for(const r of e.malloyStatement())this.inRange(this.rangeOf(r))&&(n=!0);if(!n)for(const r of V5e)this.completions.push({type:"model_property",text:`${r}: `})}}}function J5e(t,e,n){const r=new Y5e(t,[],n),i=r;return Q5e.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}c4.walkForDocumentCompletions=J5e;var f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.walkForDocumentHelpContext=void 0;const X5e=hb;class K5e extends X5e.AbstractParseTreeVisitor{constructor(e){super(),this.position=e,this.type=""}rangeOf(e){const n=e.stop||e.start;return{start:{line:e.start.line-1,character:e.start.charPositionInLine},end:{line:n.line-1,character:n.stopIndex-(n.startIndex-n.charPositionInLine)+1}}}inRange(e){return e.start.line<=this.position.line&&e.end.line>=this.position.line&&(this.position.line!==e.start.line||this.position.character>=e.start.character)&&(this.position.line!==e.end.line||this.position.character<=e.end.character)}defaultResult(){}visitChildren(e){let n=this.defaultResult();if(this.inRange(this.rangeOf(e))){n={type:this.type,token:e.start.text};const r=e.childCount;for(let i=0;i<r;i++){const o=e.getChild(i).accept(this);o&&(n=this.aggregateResult(n,o))}}return n}visitMalloyDocument(e){return this.inRange(this.rangeOf(e))?(this.type="model_property",this.visitChildren(e)):this.defaultResult()}visitExploreProperties(e){return this.inRange(this.rangeOf(e))?(this.type="explore_property",this.visitChildren(e)):this.defaultResult()}visitQueryProperties(e){return this.inRange(this.rangeOf(e))?(this.type="query_property",this.visitChildren(e)):this.defaultResult()}aggregateResult(e,n){return n}}function Z5e(t,e){return new K5e(e).visit(t)}f4.walkForDocumentHelpContext=Z5e;var x4={},W1={};Object.defineProperty(W1,"__esModule",{value:!0}),W1.locationContainsPosition=void 0;function eCe(t,e){return t.range.start.line<=e.line&&t.range.end.line>=e.line&&(e.line!==t.range.start.line||e.character>=t.range.start.character)&&(e.line!==t.range.end.line||e.character<=t.range.end.character)}W1.locationContainsPosition=eCe,Object.defineProperty(x4,"__esModule",{value:!0}),x4.ReferenceList=void 0;const tCe=W1;class nCe{constructor(e){this.sourceURL=e,this.references=[]}findIndexBefore(e){let n=0,r=this.references.length;for(;n<r;){const i=Math.floor((n+r)/2),s=this.references[i].location.range.end;s.line<e.line||s.line===e.line&&s.character<e.character?n=i+1:r=i}return n}add(e){if(e.location.url!==this.sourceURL)return;const n=this.findIndexBefore(e.location.range.end);n<this.references.length&&this.isPositionEqual(e,this.references[n])||this.references.splice(n,0,e)}isPositionEqual(e,n){const r=e.location.range,i=n.location.range;return r.start.line===i.start.line&&r.start.character===i.start.character&&r.end.line===i.end.line&&r.end.character===i.end.character}find(e){const n=this.findIndexBefore(e);if(n===this.references.length)return;const r=this.references[n];if((0,tCe.locationContainsPosition)(r.location,e))return r}}x4.ReferenceList=nCe;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.isNeedResponse=void 0;function rCe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}d4.isNeedResponse=rCe;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.walkForModelAnnotation=void 0;const iCe=fl;class sCe{constructor(e,n,r){this.translator=e,this.tokens=n,this.parseInfo=r,this.notes=[]}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}enterDocAnnotations(e){const n=e.DOC_ANNOTATION().map(r=>({text:r.text,at:this.getLocation(e)}));this.notes.push(...n)}get annotation(){return{notes:this.notes}}}function oCe(t,e,n){const r=new sCe(t,e,n),i=r;return iCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}h4.walkForModelAnnotation=oCe;var p4={};Object.defineProperty(p4,"__esModule",{value:!0}),p4.walkForTablePath=void 0;const eQ=tn,uCe=fl;class aCe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,eQ.getId)(e.connectionId()),[r,i]=(0,eQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function lCe(t,e,n){const r=new aCe(t,e),i=r;return uCe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}p4.walkForTablePath=lCe;var cCe=D&&D.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(e,n);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,i)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),fCe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),xCe=D&&D.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var n in t)n!=="default"&&Object.prototype.hasOwnProperty.call(t,n)&&cCe(e,t,n);return fCe(e,t),e};Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.MalloyParserErrorHandler=Ko.MalloyTranslator=Ko.MalloyChildTranslator=Ko.MalloyTranslation=void 0;const tQ=EE,dCe=oe,hCe=$E,pCe=F,nQ=xCe(vA),gCe=u4,a7=SA,mCe=pa,l7=a4,yCe=l4,ECe=c4,ACe=f4,vCe=x4,g4=d4,SCe=W1,rQ=ko,_Ce=h4,CCe=p4;class TCe extends hCe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class bCe{step(e){if(this.response)return this.response;if(e.urlIsFullPath===void 0)try{const s=new URL(e.sourceURL);e.urlIsFullPath=!0}catch(s){const o=s instanceof Error?s.message:"";e.urlIsFullPath=!1,e.root.logError("failed-to-compute-absolute-import-url",`Could not compute full path URL: ${o}`)}if(!e.urlIsFullPath)return e.fatalResponse();const n=e.root.importZone.getEntry(e.sourceURL);if(n.status!=="present"){if(n.status==="error"){const s=n.firstReference||e.defaultLocation();return e.root.logError("import-error",{message:n.message,url:e.sourceURL},{at:s}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1322
1322
  `:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logError("parse-exception",{message:s.message}),i=void 0}return e.root.logger.hasErrors()?this.response={parse:i,...e.fatalResponse()}:this.response={parse:i},this.response}getSourceInfo(e){const n=/\r?\n/,r={at:[],lines:[],length:e.length};let i=e,s=0;for(;i!=="";){const o=i.match(n);if(o&&o.index!==void 0){r.lines.push(i.slice(0,o.index));const u=o.index+o[0].length;r.at.push({begin:s,end:s+u}),s+=u,i=i.slice(u)}else{r.lines.push(i),r.at.push({begin:s,end:s+i.length});break}}return r}runParser(e,n){const r=tQ.CharStreams.fromString(e),i=new TCe(r),s=new tQ.CommonTokenStream(i),o=new pCe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new sQ(n,n.root.logger));const u=o[n.grammarRule];if(!u)throw new Error(`No such parse rule as ${n.grammarRule}`);return{root:u.call(o),tokenStream:s,sourceStream:r,sourceURL:n.sourceURL,importBaseURL:n.importBaseURL||n.sourceURL,rangeFromContext:a=>n.rangeFromContext(a),malloyVersion:"4.0.0"}}}class RCe{constructor(e){this.parseStep=e,this.parseReferences=void 0}step(e){const n=this.parseStep.step(e);if(n.parse===void 0)return n;if(!this.parseReferences){this.parseReferences=(0,mCe.findReferences)(e,n.parse.tokenStream,n.parse.root);for(const o in this.parseReferences.tables)e.root.schemaZone.reference(o,{url:e.sourceURL,range:this.parseReferences.tables[o].firstReference});for(const o in this.parseReferences.urls){const u=this.parseReferences.urls[o];try{const a=decodeURI(new URL(o,e.importBaseURL||e.sourceURL).toString());e.addChild(a),e.imports.push({importURL:a,location:{url:e.sourceURL,range:u}}),e.root.importZone.reference(a,{url:e.sourceURL,range:u})}catch{e.root.logError("invalid-import-url",`Malformed URL '${o}'"`,{at:{url:e.sourceURL,range:u}})}}}if(e.root.logger.hasErrors())return null;let r={};const i=e.root.schemaZone.getUndefined();if(i){const o={};for(const u of i){const a=this.parseReferences.tables[u];o[u]={connectionName:a.connectionName,tablePath:a.tablePath}}r={tables:o}}const s=e.root.importZone.getUndefined();if(s&&(r={...r,urls:s}),(0,g4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,g4.isNeedResponse)(u))return u}return null}}class OCe{constructor(e){this.importStep=e,this.walked=!1}step(e){if(this.response)return this.response;const n=this.importStep.step(e);if(n)return n;const r=e.parseStep.response;if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;const i=r==null?void 0:r.parse;if(!i)throw new Error("TRANSLATOR INTERNAL ERROR: Translator parse response had no errors, but also no parser");const s=new gCe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof nQ.Unimplemented&&u.logError("untranslated-parse-node","INTERNAL COMPILER ERROR: Untranslated parse node");this.walked=!0}if(e.root.logger.hasErrors())return this.response=e.fatalResponse(),this.response;for(const u of e.childTranslators.values()){const a=u.astStep.step(u);if((0,g4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class DCe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,yCe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class NCe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i=[];if(n!==void 0)try{i=(0,ECe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class wCe{constructor(e){this.parseStep=e}step(e,n){const r=this.parseStep.step(e);if(r.parse){let i;if(n!==void 0)try{i=(0,ACe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class FCe{constructor(e){this.parseStep=e}step(e,n){if(!this.response){const r=this.parseStep.step(e);if(!r.parse||r.final)return r;{const i=(0,_Ce.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class LCe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,CCe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class ICe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=rQ.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,g4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof nQ.Document){const i=r.ast;for(i.initModelDef(n);;){const s=i.compile();if(s.needs)return s.needs;e.modelDef=s.modelDef,e.queryList=s.queryList,e.sqlBlocks=s.sqlBlocks;break}}else e.root.logError("parsed-non-malloy-document",{url:e.sourceURL},{at:e.defaultLocation()});return e.root.logger.hasErrors()?this.response={fromSources:e.getDependencies(),...e.fatalResponse()}:this.response={translated:{modelDef:e.modelDef,queryList:e.queryList,sqlBlocks:e.sqlBlocks},fromSources:e.getDependencies(),...e.problemResponse(),final:!0},this.response}}class c7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new rQ.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new bCe,this.modelAnnotationStep=new FCe(this.parseStep),this.metadataStep=new DCe(this.parseStep),this.completionsStep=new NCe(this.parseStep),this.helpContextStep=new wCe(this.parseStep),this.importsAndTablesStep=new RCe(this.parseStep),this.astStep=new OCe(this.importsAndTablesStep),this.tablePathInfoStep=new LCe(this.parseStep),this.translateStep=new ICe(this.astStep),this.references=new vCe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new iQ(e,this.root))}getDependencies(){const e=[this.sourceURL];for(const[n,r]of this.childTranslators)e.push(...r.getDependencies());return e}addReference(e){this.references.add(e)}referenceAt(e){return this.references.find(e)}fatalResponse(){return{final:!0,...this.problemResponse()}}problemResponse(){return{problems:this.problems()}}problems(){return[...this.root.logger.getLog()]}getLineMap(e){var n,r;if(e===this.sourceURL)return(n=this.parseStep.sourceInfo)===null||n===void 0?void 0:n.lines;const i=this.childTranslators.get(e);if(i)return(r=i.parseStep.sourceInfo)===null||r===void 0?void 0:r.lines}codeAtLocation(e){const n=this.getLineMap(e.url)||[];if(e.range.start.line===e.range.end.line)return n[e.range.start.line].slice(e.range.start.character,e.range.end.character);let r="";r+=n[e.range.start.line].slice(e.range.start.character);for(let i=e.range.start.line+1;i<e.range.end.line;i++)r+=n[i];return r+=n[e.range.end.line].slice(0,e.range.end.character),r}prettyErrors(){let e="",n="";for(const r of this.root.logger.getLog()){let i=r.message,s=this.sourceURL;if(r.at){s=r.at.url;const o=r.at.range.start.line,u=r.at.range.start.character,a=this.getLineMap(r.at.url);if(a){const l=a[o];i=`line ${o+1}: ${r.message}
1323
1323
  | ${l}`,u>0&&(i=i+`
1324
1324
  | ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}