@malloydata/render 0.0.196-dev241007155641 → 0.0.196-dev241007190115

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.
@@ -1299,7 +1299,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1299
1299
  ${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 $pe extends ru{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=$pe;class MR 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=MR;class Bpe extends ru{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=Bpe;function $U(t){return t.execute!==void 0}We.isDocStatement=$U;function kpe(t){return t instanceof i1||$U(t)}We.isDocStatementOrDocStatementList=kpe;class BU 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=BU;class i1 extends BU{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=IU.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,IU.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof i1){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=i1;const Ppe="5a79a191-06bc-43cf-9b12-58741cd82970";function kU(t){const e=t.inherits?kU(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 Mpe(t){const e=kU(t).join("");return(0,Ipe.v5)(e,Ppe)}class jR extends ru{constructor(e){super(),this.elementType="document",this.globalNameSpace=new Lpe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new Dpe.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new i1(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,AA.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=Mpe(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,AA.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,AA.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,LU.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,LU.getDialect)(e),r=new Fpe.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}We.Document=jR;var vA={},Xx={},wr={},Cl={};Object.defineProperty(Cl,"__esModule",{value:!0}),Cl.canMakeEntry=Cl.SpaceEntry=void 0;class jpe{}Cl.SpaceEntry=jpe;function Upe(t){return"makeEntry"in t}Cl.canMakeEntry=Upe,Object.defineProperty(wr,"__esModule",{value:!0}),wr.SpaceField=void 0;const qpe=Cl;class Hpe extends qpe.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=Hpe,Object.defineProperty(Xx,"__esModule",{value:!0}),Xx.ViewField=void 0;const zpe=wr;class Qpe extends zpe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Xx.ViewField=Qpe,Object.defineProperty(vA,"__esModule",{value:!0}),vA.ASTViewField=void 0;const Gpe=Xx;class Wpe extends Gpe.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)}}vA.ASTViewField=Wpe,Object.defineProperty(r1,"__esModule",{value:!0}),r1.ViewFieldDeclaration=void 0;const Vpe=We,Ype=Nr,Xpe=Vx,Jpe=vA;class Kpe extends Vpe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Ype.extendNoteMethod}makeEntry(e){const n=new Jpe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Xpe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}r1.ViewFieldDeclaration=Kpe;var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.LegalRefinementStage=mn.QueryClass=void 0;var PU;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(PU||(mn.QueryClass=PU={}));var MU;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(MU||(mn.LegalRefinementStage=MU={})),Object.defineProperty(n1,"__esModule",{value:!0}),n1.NestFieldDeclaration=void 0;const Zpe=Vx,e1e=r1,jU=mn;class t1e extends e1e.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=jU.LegalRefinementStage.Single,this.forceQueryClass=jU.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,Zpe.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")}}n1.NestFieldDeclaration=t1e;var Jx={},Fr={};Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.ErrorFactory=void 0;const UU="~malformed~";class UR{static get structDef(){return{type:"table",name:UU,dialect:"~malformed~",connection:"~unknown~",tablePath:"//undefined_error_table_path",fields:[],errorFactory:!0}}static get joinDef(){return{type:"table",name:UU,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:UR.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=UR,Object.defineProperty(Jx,"__esModule",{value:!0}),Jx.DefineSourceList=Jx.DefineSource=void 0;const n1e=Fr,qU=We,r1e=Nr;class i1e extends qU.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=r1e.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),n1e.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`)}}Jx.DefineSource=i1e;class s1e extends qU.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Jx.DefineSourceList=s1e;var Kx={};Object.defineProperty(Kx,"__esModule",{value:!0}),Kx.DefineQueryList=Kx.DefineQuery=void 0;const HU=We,o1e=Nr;class u1e extends HU.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=o1e.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})}}Kx.DefineQuery=u1e;class a1e extends HU.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Kx.DefineQueryList=a1e;var io={};Object.defineProperty(io,"__esModule",{value:!0}),io.Source=void 0;const l1e=We;class c1e extends l1e.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=c1e;var s1={},Zx={},SA={},bl={};Object.defineProperty(bl,"__esModule",{value:!0}),bl.mergeFields=bl.nameFromDef=void 0;function qR(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}bl.nameFromDef=qR;function f1e(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>qR(i))),r=t.filter(i=>!n.has(qR(i)));return r.push(...e),r}bl.mergeFields=f1e;var o1={},hr={},iu={};Object.defineProperty(iu,"__esModule",{value:!0}),iu.DefinedParameter=iu.AbstractParameter=iu.SpaceParam=void 0;const x1e=Cl;class HR extends x1e.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}iu.SpaceParam=HR;class d1e extends HR{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=d1e;class h1e extends HR{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}iu.DefinedParameter=h1e;var ed={};Object.defineProperty(ed,"__esModule",{value:!0}),ed.StructSpaceFieldBase=void 0;const p1e=wr;class g1e extends p1e.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"}}}ed.StructSpaceFieldBase=g1e;var u1={};Object.defineProperty(u1,"__esModule",{value:!0}),u1.ColumnSpaceField=void 0;const m1e=wr;class y1e extends m1e.SpaceField{constructor(e){super(),this.sourceFieldDef=e}fieldDef(){return this.sourceFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.sourceFieldDef)}constructorFieldDef(){return this.sourceFieldDef}}u1.ColumnSpaceField=y1e;var _A={};Object.defineProperty(_A,"__esModule",{value:!0}),_A.IRViewField=void 0;const E1e=Xx;class A1e extends E1e.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()}}_A.IRViewField=A1e,Object.defineProperty(hr,"__esModule",{value:!0}),hr.StaticSourceSpace=hr.StructSpaceField=hr.StaticSpace=void 0;const v1e=Bo,CA=oe,S1e=iu,_1e=wr,bA=ed,C1e=u1,b1e=_A;class zR{get dialect(){return this.fromStruct.dialect}constructor(e){this.fromStruct=e,this.type="fieldSpace"}dialectName(){return this.fromStruct.dialect}dialectObj(){try{return(0,v1e.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return(0,CA.isJoined)(e)?new zU(e,this.fromStruct.dialect):(0,CA.isTurtleDef)(e)?new b1e.IRViewField(this,e):new C1e.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,CA.isSourceDef)(this.fromStruct)&&this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new S1e.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,CA.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 _1e.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof bA.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof bA.StructSpaceFieldBase?[{...i.joinPathElement,name:n.refString}]:[];if(r.length){if(i instanceof bA.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=zR;class zU extends bA.StructSpaceFieldBase{constructor(e,n){super(e),this.parentDialect=n}get fieldSpace(){return new zR(this.sourceDef)}}hr.StructSpaceField=zU;class T1e extends zR{constructor(e){super(e),this.source=e}structDef(){return this.source}emptyStructDef(){const e={...this.source};return e.parameters={},e.fields=[],e}}hr.StaticSourceSpace=T1e,Object.defineProperty(o1,"__esModule",{value:!0}),o1.JoinSpaceField=void 0;const R1e=hr;class O1e extends R1e.StructSpaceField{constructor(e,n,r){super(n.structDef(e),r),this.parameterSpace=e,this.join=n}}o1.JoinSpaceField=O1e;var td={};Object.defineProperty(td,"__esModule",{value:!0}),td.ParameterSpace=void 0;const D1e=iu;class N1e{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new D1e.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}}td.ParameterSpace=N1e;var w1e=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]}),F1e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),L1e=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)&&w1e(e,t,n);return F1e(e,t),e};Object.defineProperty(SA,"__esModule",{value:!0}),SA.DynamicSpace=void 0;const I1e=L1e(oe),$1e=bl,B1e=Fr,k1e=wr,P1e=o1,M1e=Xx,QU=iu,j1e=hr,U1e=ed,q1e=td;class H1e extends j1e.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 QU.AbstractParameter(n)));return this}parameterSpace(){return new q1e.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,$1e.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 QU.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 U1e.StructSpaceFieldBase?r.push([a,l]):l instanceof M1e.ViewField?i.push([a,l]):l instanceof k1e.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof P1e.JoinSpaceField){const l=a.join.structDef(u);B1e.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&&I1e.isSourceDef(this.final)&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}emptyStructDef(){const e={...this.fromSource};return e.fields=[],e}}SA.DynamicSpace=H1e,Object.defineProperty(Zx,"__esModule",{value:!0}),Zx.RefinedSpace=void 0;const z1e=SA,Q1e=Cl;class QR extends z1e.DynamicSpace{static filteredFrom(e,n,r){const i=new QR(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,Q1e.canMakeEntry)(n)?n.makeEntry(this):n.logError("unexpected-element-type",`Internal error, ${n.elementType} not expected in this context`)}}Zx.RefinedSpace=QR;var Tl={},Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.DefinitionList=void 0;const G1e=We,GU=Nr;class W1e extends G1e.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,GU.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,GU.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Xi.DefinitionList=W1e,Object.defineProperty(Tl,"__esModule",{value:!0}),Tl.DeclareFields=void 0;const V1e=Xi,Y1e=mn;class X1e extends V1e.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=Y1e.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Tl.DeclareFields=X1e;var so={};Object.defineProperty(so,"__esModule",{value:!0}),so.Filter=so.FilterElement=void 0;const WU=oe,VU=We,GR=mn;class J1e extends VU.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=J1e;let K1e=class extends VU.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=GR.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?GR.LegalRefinementStage.Tail:GR.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,WU.expressionIsAggregate)(i.expressionType),o=(0,WU.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=K1e;var nd={};Object.defineProperty(nd,"__esModule",{value:!0}),nd.FieldListEdit=void 0;const Z1e=We;class ege extends Z1e.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}nd.FieldListEdit=ege;var rd={};Object.defineProperty(rd,"__esModule",{value:!0}),rd.PrimaryKey=void 0;const tge=We;class nge extends tge.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}rd.PrimaryKey=nge;var id={};Object.defineProperty(id,"__esModule",{value:!0}),id.Views=void 0;const rge=Xi;class ige extends rge.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}id.Views=ige;var sd={};Object.defineProperty(sd,"__esModule",{value:!0}),sd.TimezoneStatement=void 0;const sge=We;class oge 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)}}sd.TimezoneStatement=oge;var Rl={};Object.defineProperty(Rl,"__esModule",{value:!0}),Rl.ModelAnnotation=Rl.ObjectAnnotation=void 0;const uge=ko,age=We;class YU extends age.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}Rl.ObjectAnnotation=YU;class lge extends YU{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=uge.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)}}Rl.ModelAnnotation=lge;var Ol={},TA={};Object.defineProperty(TA,"__esModule",{value:!0}),TA.RenameSpaceField=void 0;const cge=wr;class fge extends cge.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()}}TA.RenameSpaceField=fge,Object.defineProperty(Ol,"__esModule",{value:!0}),Ol.Renames=Ol.RenameField=void 0;const xge=TA,XU=We,dge=wr;class hge extends XU.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 dge.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new xge.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`)}}Ol.RenameField=hge;class pge extends XU.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Ol.Renames=pge;var Ci={};Object.defineProperty(Ci,"__esModule",{value:!0}),Ci.JoinStatement=Ci.ExpressionJoin=Ci.KeyJoin=Ci.Join=void 0;const WR=oe,gge=o1,mge=Xi,yge=We,Ege=Nr,JU=Fr,Age=mn;class VR extends yge.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=Ege.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new gge.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"),JU.ErrorFactory.structDef)}}Ci.Join=VR;class vge extends VR{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,WR.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,WR.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=vge;class Sge extends VR{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"),JU.ErrorFactory.joinDef;const i=r.getSourceDef(e);let s="left";if(this.inExperiment("join_types",!0)&&(s=this.matrixOperation),!(0,WR.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=Sge;class _ge extends mge.DefinitionList{constructor(e){super(e),this.elementType="joinStatement",this.forceQueryClass=void 0,this.queryRefinementStage=Age.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ci.JoinStatement=_ge,Object.defineProperty(s1,"__esModule",{value:!0}),s1.RefinedSource=void 0;const Cge=oe,bge=Zx,Tge=Tl,Rge=so,Oge=nd,Dge=rd,Nge=id,wge=io,Fge=sd,Lge=Rl,Ige=Ol,$ge=td,Bge=Ci;class kge extends wge.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 Lge.ObjectAnnotation)continue;const g=m;if(m instanceof Dge.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 Oge.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 Tge.DeclareFields||m instanceof Bge.JoinStatement||m instanceof Nge.Views||m instanceof Ige.Renames?o.push(...m.list):m instanceof Rge.Filter?u.push(m):m instanceof Fge.TimezoneStatement?a=m.tz:g.logError("unexpected-source-property",`Unexpected source property: '${g.elementType}'`)}const l=n?new $ge.ParameterSpace(n):void 0,c=structuredClone(this.source.getSourceDef(l));i&&(c.primaryKey=i.field.name);const f=bge.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,Cge.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)}}s1.RefinedSource=kge;var su={};Object.defineProperty(su,"__esModule",{value:!0}),su.SourceQueryElement=void 0;const Pge=We;class YR extends Pge.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 YR&&n.errored){e=!1;break}return e}}su.SourceQueryElement=YR;var RA={},Fc={};Object.defineProperty(Fc,"__esModule",{value:!0}),Fc.QuerySource=void 0;const Mge=io,jge=U3;class Uge extends Mge.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,jge.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=Uge;var od={},a1={};Object.defineProperty(a1,"__esModule",{value:!0}),a1.QueryBase=void 0;const qge=Vx,Hge=We;class zge extends Hge.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,qge.detectAndRemovePartialStages)(e.pipeline,this)}}}a1.QueryBase=zge,Object.defineProperty(od,"__esModule",{value:!0}),od.QueryArrow=void 0;const Qge=oe,Gge=io,KU=hr,Wge=a1;class Vge extends Wge.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 Gge.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,Qge.refIsStructDef)(l.structRef)?l.structRef:this.source.getSourceDef(void 0),i=new KU.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new KU.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}}}od.QueryArrow=Vge,Object.defineProperty(RA,"__esModule",{value:!0}),RA.SQArrow=void 0;const Yge=su,Xge=Fc,Jge=od;class Kge extends Yge.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 Jge.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 Xge.QuerySource(e);return this.has({asSource:n}),n}}RA.SQArrow=Kge;var OA={},ud={},Ji={};Object.defineProperty(Ji,"__esModule",{value:!0}),Ji.getStructFieldDef=Ji.getFinalStruct=Ji.opOutputStruct=void 0;const ZU=cl,Zge=Y0,DA=oe,eq=Fr;function tq(t,e,n){const r=eq.ErrorFactory.didCreate(e)||(0,DA.structHasErrors)(e);(0,DA.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,DA.segmentHasErrors)(n);if(!r&&!i)try{const s=Zge.Segment.nextStructDef(e,n);if((0,DA.isSourceDef)(s))return s;t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: RETURNED A NON SOURCE
1300
1300
  STRUCTDEF: ${(0,ZU.inspect)(s,{breakLength:72,depth:1/0})}`)}catch(s){t.logError("failed-to-compute-output-schema",`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1301
1301
  QUERY: ${(0,ZU.inspect)(n,{breakLength:72,depth:1/0})}`)}return eq.ErrorFactory.structDef}Ji.opOutputStruct=tq;function eme(t,e,n){for(const r of n)e=tq(t,e,r);return e}Ji.getFinalStruct=eme;function tme(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ji.getStructFieldDef=tme,Object.defineProperty(ud,"__esModule",{value:!0}),ud.QueryRefine=void 0;const nme=hr,rme=Ji,ime=a1;class sme extends ime.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 nme.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,rme.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}ud.QueryRefine=sme;var l1={},ad={},Xn={};Object.defineProperty(Xn,"__esModule",{value:!0}),Xn.timeResult=Xn.resolution=Xn.castDateToTimestamp=Xn.castTimestampToDate=Xn.castTo=Xn.timeOffset=void 0;const ome=oe;function ume(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Xn.timeOffset=ume;function ame(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,ome.isAtomicFieldType)(n)&&(i.srcType=n),i}Xn.castTo=ame;function lme(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Xn.castTimestampToDate=lme;function cme(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Xn.castDateToTimestamp=cme;function fme(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Xn.resolution=fme;function xme(t,e){return e?{...t,timeframe:e}:t}Xn.timeResult=xme;var Lc={},xt={},rn={};Object.defineProperty(rn,"__esModule",{value:!0}),rn.FT=void 0;const dme=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,dme.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 ld={};Object.defineProperty(ld,"__esModule",{value:!0}),ld.isGranularResult=void 0;function hme(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}ld.isGranularResult=hme;var ou={};Object.defineProperty(ou,"__esModule",{value:!0}),ou.isComparison=ou.isEquality=ou.getExprNode=void 0;function pme(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}ou.getExprNode=pme;function nq(t){return t==="="||t==="!="||t==="~"||t==="!~"}ou.isEquality=nq;function gme(t){return nq(t)||t===">="||t==="<="||t===">"||t==="<"}ou.isComparison=gme,Object.defineProperty(xt,"__esModule",{value:!0}),xt.applyBinary=xt.getMorphicValue=xt.ExprDuration=xt.ExpressionDef=void 0;const yn=oe,XR=_i,$c=rn,NA=Xn,rq=ld,mme=We,c1=ou;class yme extends Error{}class iq extends mme.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 aq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,yn.expressionIsAggregate)(e.expressionType)}}xt.ExpressionDef=iq;class JR extends iq{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,XR.errorFor)("illegal unit expression");let o;if((0,rq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,NA.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,NA.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,NA.timeResult)({dataType:"date",expressionType:(0,yn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,yn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,NA.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=JR;function sq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function Eme(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}xt.getMorphicValue=Eme;function oq(t,e,n,r){const i=(0,yn.isTemporalField)(e.dataType),s=(0,yn.isTemporalField)(r.dataType),o=(0,c1.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=sq(e,"timestamp"),a=sq(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 Ame(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 vme(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 Sme(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,c1.getExprNode)(n),a=f1("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=x1(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=oq(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=Ame(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new yme("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=vme(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 _me(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=f1("boolean",i,s);if(o)return o;const u=(0,yn.maxExpressionType)(i.expressionType,s.expressionType),a=x1(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=oq(e,i,n,s)||{node:(0,c1.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 uq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=f1("number",i,s);if(o)return o;const u=x1(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,XR.errorFor)("numbers required")}function Cme(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=x1(e,i,r,s);if(o)return o;const u=(0,yn.isTemporalField)(i.dataType),a=f1(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,rq.isGranularResult)(i))l=new JR(r,i.timeframe);else if(i.dataType==="date")l=new JR(r,"day");else return e.loggedErrorExpr("time-offset-type-mismatch",`Can not offset time by '${s.dataType}'`);return l.apply(t,n,e)}return uq(t,e,n,r)}function aq(t,e,n,r){if((0,c1.isEquality)(n))return Sme(t,e,n,r);if((0,c1.isComparison)(n))return _me(t,e,n,r);if(n==="+"||n==="-")return Cme(t,e,n,r);if(n==="*")return uq(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=x1(e,i,r,s);if(o)return o;const u=f1("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,XR.errorFor)("divide type mismatch")}return e.loggedErrorExpr("unexpected-binary-operator",`Cannot use ${n} operator here`)}xt.applyBinary=aq;function f1(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 x1(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 bme=oe,Tme=xt;class Rme extends Tme.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,bme.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.loggedErrorExpr(n.error.code,n.error.message)}}Lc.ExprIdReference=Rme,Object.defineProperty(ad,"__esModule",{value:!0}),ad.NamedSource=void 0;const KR=oe,Ome=io,Dme=Fr,Nme=Xn,lq=We,wme=Lc,Fme=td;class Lme extends Ome.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 lq.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof lq.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,KR.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 wme.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 Fme.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,KR.isCastType)(f.type)&&(p=(0,Nme.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,KR.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=Dme.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}}ad.NamedSource=Lme;var d1={},wA={};Object.defineProperty(wA,"__esModule",{value:!0}),wA.QueryHeadStruct=void 0;const Ime=oe,$me=io,Bme=ad;class kme extends $me.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}getSourceDef(e){if((0,Ime.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Bme.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.getSourceDef(e)}}wA.QueryHeadStruct=kme,Object.defineProperty(d1,"__esModule",{value:!0}),d1.QueryReference=void 0;const ZR=Fr,Pme=We,Mme=wA,jme=oe,Ume=Ji;class qme extends Pme.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:ZR.ErrorFactory.structDef,outputStruct:ZR.ErrorFactory.structDef,query:ZR.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 Mme.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.getSourceDef(void 0),u=(0,Ume.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,jme.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}}d1.QueryReference=qme,Object.defineProperty(l1,"__esModule",{value:!0}),l1.SQReference=void 0;const Hme=su,zme=Fc,Qme=ad,cq=d1,fq=As;class Gme extends Hme.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 cq.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,fq.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 cq.QueryReference(this.ref);this.asSource=new zme.QuerySource(n)}else if((0,fq.modelObjIsSource)(e))this.asSource=new Qme.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}}l1.SQReference=Gme,Object.defineProperty(OA,"__esModule",{value:!0}),OA.SQRefine=void 0;const Wme=su,Vme=Fc,Yme=ud,Xme=l1;class Jme extends Wme.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 Xme.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 Yme.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Vme.QuerySource(e);return this.has({queryAsSource:n}),n}}}OA.SQRefine=Jme;var FA={},h1={};Object.defineProperty(h1,"__esModule",{value:!0}),h1.QueryRaw=void 0;const Kme=oe,Zme=We;class e3e extends Zme.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,Kme.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}}h1.QueryRaw=e3e;var p1={},LA={};Object.defineProperty(LA,"__esModule",{value:!0}),LA.makeSQLSentence=void 0;const t3e=oe,n3e=Rt;function r3e(t,e){return{name:`sql://${e}/${i3e(t)}`,connection:e,select:t}}LA.makeSQLSentence=r3e;function i3e(t){const e=t.map(n=>(0,t3e.isSegmentSQL)(n)?n.sql:JSON.stringify(n));return(0,n3e.generateHash)(e.join(";"))}Object.defineProperty(p1,"__esModule",{value:!0}),p1.SQLSource=void 0;const s3e=LA,o3e=io,IA=Fr;class u3e extends o3e.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 IA.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"),IA.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(`
1302
- `)),IA.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"),IA.ErrorFactory.structDef}}p1.SQLSource=u3e,Object.defineProperty(FA,"__esModule",{value:!0}),FA.SQSource=void 0;const a3e=su,l3e=h1,c3e=p1;class f3e extends a3e.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 c3e.SQLSource){const e=new l3e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}FA.SQSource=f3e;var $A={};Object.defineProperty($A,"__esModule",{value:!0}),$A.SQExtend=void 0;const x3e=s1,d3e=su;class h3e extends d3e.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 x3e.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}}$A.SQExtend=h3e;var BA={},g1={},m1={};Object.defineProperty(m1,"__esModule",{value:!0}),m1.BinaryBoolean=void 0;const xq=oe,p3e=_i,g3e=rn,m3e=ou,y3e=xt;class E3e extends y3e.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=[g3e.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,xq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,xq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,m3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,p3e.errorFor)("logial required boolean")}}m1.BinaryBoolean=E3e,Object.defineProperty(g1,"__esModule",{value:!0}),g1.ExprCompare=void 0;const Qt=rn,A3e=m1,v3e={"~":[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 S3e extends A3e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=v3e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}g1.ExprCompare=S3e;var y1={},cd={};Object.defineProperty(cd,"__esModule",{value:!0}),cd.ExprTime=void 0;const _3e=oe,C3e=xt;class eO extends C3e.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,_3e.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new eO(e,r,n.expressionType)}}cd.ExprTime=eO;var Dl={};Object.defineProperty(Dl,"__esModule",{value:!0}),Dl.Range=void 0;const dq=oe,b3e=_i,T3e=xt;class R3e extends T3e.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,dq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,dq.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,b3e.errorFor)("a range is not a value")}}Dl.Range=R3e,Object.defineProperty(y1,"__esModule",{value:!0}),y1.ExprGranularTime=void 0;const hq=oe,O3e=_i,pq=rn,gq=Xn,D3e=xt,kA=cd,mq=Dl;class N3e extends D3e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[pq.FT.timestampT,pq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,hq.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,hq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,O3e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=kA.ExprTime.fromValue("timestamp",n),a=new kA.ExprTime("timestamp",(0,gq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new mq.Range(u,a)}const i=new kA.ExprTime("date",n.value,n.expressionType),s=(0,gq.timeOffset)("date",n.value,"+",r,this.units),o=new kA.ExprTime("date",s,n.expressionType);return new mq.Range(i,o)}}y1.ExprGranularTime=N3e,Object.defineProperty(BA,"__esModule",{value:!0}),BA.Apply=void 0;const w3e=g1,F3e=ld,yq=y1;class L3e extends w3e.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,F3e.isGranularResult)(r)&&(n=new yq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof yq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}BA.Apply=L3e;var fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.BinaryNumeric=void 0;const I3e=rn,$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="numeric binary abstract",this.legalChildTypes=[I3e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}fd.BinaryNumeric=B3e;var PA={};Object.defineProperty(PA,"__esModule",{value:!0}),PA.Boolean=void 0;const k3e=xt,P3e=rn;let M3e=class extends k3e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...P3e.FT.boolT,value:{node:this.value}}}};PA.Boolean=M3e;var Nl={};Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.FunctionOrdering=Nl.FunctionOrderBy=void 0;const tO=oe,Eq=We,j3e=Lc;class U3e extends Eq.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,tO.expressionIsAggregate)(n.expressionType)||((0,tO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof j3e.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,tO.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}}}Nl.FunctionOrderBy=U3e;class q3e extends Eq.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))}}Nl.FunctionOrdering=q3e;var MA={};Object.defineProperty(MA,"__esModule",{value:!0}),MA.ExprAddSub=void 0;const H3e=fd;class z3e extends H3e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}MA.ExprAddSub=z3e;var da={},ht={},E1={};Object.defineProperty(E1,"__esModule",{value:!0}),E1.ReferenceField=void 0;const Aq=wr;class Q3e extends Aq.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 Aq.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"}}}E1.ReferenceField=Q3e;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 G3e(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=G3e;function W3e(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=W3e;function V3e(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=V3e;function Y3e(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=Y3e;function X3e(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=X3e;function J3e(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=J3e;function K3e(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=K3e;function Z3e(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=Z3e,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 eye=E1,tye=Xi,vq=We,Sq=Nr,wl=In;class bi extends vq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Sq.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 eye.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=bi;class nye extends bi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=nye;class rye extends bi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=rye;class iye extends bi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=iye;class sye extends bi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=sye;class oye extends bi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,wl.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=oye;class nO extends bi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,wl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return nO.indexOutputName(this.path)}}ht.IndexFieldReference=nO;class uye extends bi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,wl.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=uye;class aye extends bi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,wl.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=aye;class lye extends bi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,wl.typecheckProject)(e,this)}}ht.ProjectFieldReference=lye;class cye extends bi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,wl.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=cye;class fye extends bi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,wl.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=fye;class xye extends bi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,wl.typecheckDimension)(e,this)}}ht.DimensionFieldReference=xye;class dye extends bi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=dye;class hye extends vq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Sq.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=hye;class pye extends tye.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=pye,Object.defineProperty(da,"__esModule",{value:!0}),da.ExprAggregateFunction=void 0;const A1=oe,gye=Rt,mye=_i,_q=hr,yye=rn,Eye=ht,Aye=xt,vye=wr,Sye=Lc;class _ye extends Aye.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[yye.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 _q.StructSpaceField))if((0,A1.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=>Cye(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,A1.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=iO(l,f),m=sO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=bye(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,mye.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(...rO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...rO(e,r))}return n}}da.ExprAggregateFunction=_ye;function Cye(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 rO(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 _q.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof vye.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,gye.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,A1.isAtomic)(o)&&!(0,A1.isJoined)(o))if((0,A1.hasExpression)(o)){const u=rO(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 iO(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 sO(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 bye(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=iO(i,e),o=sO(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=iO(l,e),f=sO(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 Eye.FieldReference?`${n.refString}.${r}()`:n instanceof Sye.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 jA={};Object.defineProperty(jA,"__esModule",{value:!0}),jA.ExprAlternationTree=void 0;const Cq=oe,Tye=xt;class Rye extends Tye.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,Cq.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Cq.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")}}jA.ExprAlternationTree=Rye;var xd={};Object.defineProperty(xd,"__esModule",{value:!0}),xd.ExprAsymmetric=void 0;const Oye=da;class Dye extends Oye.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}`}}}}xd.ExprAsymmetric=Dye;var UA={};Object.defineProperty(UA,"__esModule",{value:!0}),UA.ExprAvg=void 0;const Nye=xd;class wye extends Nye.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}UA.ExprAvg=wye;var qA={};Object.defineProperty(qA,"__esModule",{value:!0}),qA.ExprCast=void 0;const Fye=Xn,Lye=xt;class Iye extends Lye.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,Fye.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}qA.ExprCast=Iye;var HA={};Object.defineProperty(HA,"__esModule",{value:!0}),HA.ExprCoalesce=void 0;const bq=As,Tq=rn,$ye=xt;class Bye extends $ye.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Tq.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Tq.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,bq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,bq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}HA.ExprCoalesce=Bye;var zA={};Object.defineProperty(zA,"__esModule",{value:!0}),zA.ExprCount=void 0;const kye=da;class Pye extends kye.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"}}}zA.ExprCount=Pye;var QA={};Object.defineProperty(QA,"__esModule",{value:!0}),QA.ExprCountDistinct=void 0;const GA=rn,Mye=da;class jye extends Mye.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[GA.FT.numberT,GA.FT.stringT,GA.FT.dateT,GA.FT.timestampT]}}QA.ExprCountDistinct=jye;var WA={},Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.Limit=void 0;const Uye=We,qye=mn;class Hye extends Uye.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=qye.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Fl.Limit=Hye;var dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.PartitionBy=void 0;const zye=We;class Qye extends zye.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}dd.PartitionBy=Qye;var v1={},Ll={};Object.defineProperty(Ll,"__esModule",{value:!0}),Ll.FieldName=void 0;const Gye=We;class Wye extends Gye.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])}}Ll.FieldName=Wye,Object.defineProperty(v1,"__esModule",{value:!0}),v1.ExprFunc=void 0;const Ki=oe,Vye=_i,Yye=ed,Xye=xt,Jye=Ll,Rq=Rt;class Kye extends Xye.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,Rq.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,Vye.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 Yye.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=Zye(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=eEe(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 Jye.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,Rq.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)),b=C==="constant"?"constant":(0,Ki.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}v1.ExprFunc=Kye;function Zye(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 eEe(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(WA,"__esModule",{value:!0}),WA.ExprProps=void 0;const tEe=oe,nEe=_i,rEe=rn,iEe=Nl,sEe=Fl,oEe=dd,uEe=xt,aEe=v1;class lEe extends uEe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=rEe.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,tEe.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,nEe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof oEe.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 iEe.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 aEe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}WA.ExprProps=lEe;var VA={};Object.defineProperty(VA,"__esModule",{value:!0}),VA.ExprLogicalOp=void 0;const cEe=m1,Oq=rn;class fEe extends cEe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Oq.FT.boolT,Oq.FT.aggregateBoolT]}}VA.ExprLogicalOp=fEe;var YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprMax=void 0;const XA=rn,xEe=da;class dEe extends xEe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[XA.FT.numberT,XA.FT.stringT,XA.FT.dateT,XA.FT.timestampT]}returns(e){return e.dataType}}YA.ExprMax=dEe;var JA={};Object.defineProperty(JA,"__esModule",{value:!0}),JA.ExprMin=void 0;const KA=rn,hEe=da;class pEe extends hEe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[KA.FT.numberT,KA.FT.stringT,KA.FT.dateT,KA.FT.timestampT]}returns(e){return e.dataType}}JA.ExprMin=pEe;var ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprMinus=void 0;const gEe=_i,Dq=rn,mEe=xt;class yEe extends mEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Dq.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Dq.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,gEe.errorFor)("negate requires number")}}ZA.ExprMinus=yEe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.ExprMulDiv=void 0;const EEe=fd;class AEe extends EEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}e4.ExprMulDiv=AEe;var t4={},S1={};Object.defineProperty(S1,"__esModule",{value:!0}),S1.Unary=void 0;const vEe=xt;class SEe extends vEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}S1.Unary=SEe,Object.defineProperty(t4,"__esModule",{value:!0}),t4.ExprNot=void 0;const Nq=rn,_Ee=S1;class CEe extends _Ee.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Nq.FT.boolT,Nq.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"}}}}}t4.ExprNot=CEe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.ExprNow=void 0;const bEe=xt;class TEe extends bEe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}n4.ExprNow=TEe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.ExprNULL=void 0;const REe=xt;class OEe extends REe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}r4.ExprNULL=OEe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.ExprNumber=void 0;const DEe=rn,NEe=xt;class wEe extends NEe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...DEe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}i4.ExprNumber=wEe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.ExprParens=void 0;const FEe=xt;class LEe extends FEe.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}}}}s4.ExprParens=LEe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.ExprRegEx=void 0;const IEe=xt;class $Ee extends IEe.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"}}}o4.ExprRegEx=$Ee;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.ExprString=void 0;const BEe=xt,kEe=rn;class PEe extends BEe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...kEe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}u4.ExprString=PEe;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.ExprSum=void 0;const MEe=xd;class jEe extends MEe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}a4.ExprSum=jEe;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.ExprTimeExtract=void 0;const Bc=oe,wq=_i,oO=xt,UEe=Dl;class _1 extends oO.ExpressionDef{static extractor(e){const n=_1.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=_1.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 UEe.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,wq.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,oO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,oO.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,wq.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}l4.ExprTimeExtract=_1,_1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var c4={},oo={},f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.QueryInputSpace=void 0;const qEe=Ci,HEe=Zx;class zEe extends HEe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof qEe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}f4.QueryInputSpace=zEe;var QEe=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]}),GEe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),WEe=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)&&QEe(e,t,n);return GEe(e,t),e};Object.defineProperty(oo,"__esModule",{value:!0}),oo.ReduceFieldSpace=oo.QuerySpace=oo.QueryOperationSpace=void 0;const x4=WEe(oe),uO=bl,VEe=Ll,YEe=wr,XEe=ht,JEe=Zx,KEe=u1,ZEe=hr,eAe=f4;class Fq extends JEe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new eAe.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 ZEe.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();x4.isAtomicFieldType(l.dataType)&&x4.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=Fq;class Lq extends Fq{addRefineFromFields(e){var n;if(x4.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new VEe.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 KEe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof XEe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof YEe.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)&&!nAe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(x4.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,uO.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,uO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,uO.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=Lq;class tAe extends Lq{constructor(){super(...arguments),this.segmentType="reduce"}}oo.ReduceFieldSpace=tAe;function nAe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(c4,"__esModule",{value:!0}),c4.ExprUngroup=void 0;const Iq=oe,rAe=oo,iAe=rn,sAe=xt;class oAe extends sAe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=iAe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Iq.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Iq.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 rAe.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`)}}c4.ExprUngroup=oAe;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.ForRange=void 0;const $q=As,Bq=_i,kq=rn,h4=Xn,uAe=xt,p4=cd,Pq=Dl;class aAe extends uAe.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=[kq.FT.timestampT,kq.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Bq.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,$q.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,$q.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Bq.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,h4.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,h4.timeOffset)("date",i.value,"+",o.value,u),g=new p4.ExprTime("date",m);return new Pq.Range(p,g).apply(e,n,r)}const l=p4.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,h4.castDateToTimestamp)(f),c=new p4.ExprTime("timestamp",f,i.expressionType)}const x=(0,h4.timeOffset)("timestamp",f,"+",o.value,u),h=new p4.ExprTime("timestamp",x,i.expressionType);return new Pq.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}d4.ForRange=aAe;var Jn={};class kc extends Error{}class lAe extends kc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class cAe extends kc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class fAe extends kc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class C1 extends kc{}class Mq extends kc{constructor(e){super(`Invalid unit ${e}`)}}class Ts extends kc{}class Il extends kc{constructor(){super("Zone is an abstract class")}}const Pe="numeric",uo="short",Zi="long",aO={year:Pe,month:Pe,day:Pe},jq={year:Pe,month:uo,day:Pe},xAe={year:Pe,month:uo,day:Pe,weekday:uo},Uq={year:Pe,month:Zi,day:Pe},qq={year:Pe,month:Zi,day:Pe,weekday:Zi},Hq={hour:Pe,minute:Pe},zq={hour:Pe,minute:Pe,second:Pe},Qq={hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},Gq={hour:Pe,minute:Pe,second:Pe,timeZoneName:Zi},Wq={hour:Pe,minute:Pe,hourCycle:"h23"},Vq={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},Yq={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:uo},Xq={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:Zi},Jq={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},Kq={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},Zq={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe},eH={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe,second:Pe},dAe={year:Pe,month:uo,day:Pe,weekday:uo,hour:Pe,minute:Pe},tH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,timeZoneName:uo},nH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},rH={year:Pe,month:Zi,day:Pe,weekday:Zi,hour:Pe,minute:Pe,timeZoneName:Zi},iH={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 g4(t){return typeof t=="number"&&t%1===0}function hAe(t){return typeof t=="string"}function pAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function sH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function gAe(t){return Array.isArray(t)?t:[t]}function oH(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 mAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function hd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ha(t,e,n){return g4(t)&&t>=e&&t<=n}function yAe(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 $l(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Mc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function lO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function cO(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 T1(t){return b1(t)?366:365}function m4(t,e){const n=yAe(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 fO(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 y4(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 xO(t){return t>99?t:t>60?1900+t:2e3+t}function uH(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 E4(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 aH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Ts(`Invalid unit value ${t}`);return e}function A4(t,e){const n={};for(const r in t)if(hd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=aH(i)}return n}function R1(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 v4(t){return mAe(t,["hour","minute","second","millisecond"])}const lH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,EAe=["January","February","March","April","May","June","July","August","September","October","November","December"],cH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],AAe=["J","F","M","A","M","J","J","A","S","O","N","D"];function fH(t){switch(t){case"narrow":return[...AAe];case"short":return[...cH];case"long":return[...EAe];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 xH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],dH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],vAe=["M","T","W","T","F","S","S"];function hH(t){switch(t){case"narrow":return[...vAe];case"short":return[...dH];case"long":return[...xH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const pH=["AM","PM"],SAe=["Before Christ","Anno Domini"],_Ae=["BC","AD"],CAe=["B","A"];function gH(t){switch(t){case"narrow":return[...CAe];case"short":return[..._Ae];case"long":return[...SAe];default:return null}}function bAe(t){return pH[t.hour<12?0:1]}function TAe(t,e){return hH(e)[t.weekday-1]}function RAe(t,e){return fH(e)[t.month-1]}function OAe(t,e){return gH(e)[t.year<0?0:1]}function DAe(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 mH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const NAe={D:aO,DD:jq,DDD:Uq,DDDD:qq,t:Hq,tt:zq,ttt:Qq,tttt:Gq,T:Wq,TT:Vq,TTT:Yq,TTTT:Xq,f:Jq,ff:Zq,fff:tH,ffff:rH,F:Kq,FF:eH,FFF:nH,FFFF:iH};class Ti{static create(e,n={}){return new Ti(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 NAe[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?bAe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?RAe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?TAe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ti.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?OAe(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 mH(Ti.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=Ti.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 mH(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 pd=class{get type(){throw new Il}get name(){throw new Il}get ianaName(){return this.name}get isUniversal(){throw new Il}offsetName(e,n){throw new Il}formatOffset(e,n){throw new Il}offset(e){throw new Il}equals(e){throw new Il}get isValid(){throw new Il}},dO=null;class S4 extends pd{static get instance(){return dO===null&&(dO=new S4),dO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return uH(e,n,r)}formatOffset(e,n){return R1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let _4={};function wAe(t){return _4[t]||(_4[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"})),_4[t]}const FAe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function LAe(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 IAe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=FAe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let C4={};class uu extends pd{static create(e){return C4[e]||(C4[e]=new uu(e)),C4[e]}static resetCache(){C4={},_4={}}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 uH(e,n,r,this.name)}formatOffset(e,n){return R1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=wAe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?IAe(r,n):LAe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=fO({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 hO=null;class Lr extends pd{static get utcInstance(){return hO===null&&(hO=new Lr(0)),hO}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(E4(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${R1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${R1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return R1(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 yH extends pd{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 Bl(t,e){if(vt(t)||t===null)return e;if(t instanceof pd)return t;if(hAe(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 yH(t)}let EH=()=>Date.now(),AH="system",vH=null,SH=null,_H=null,CH;class Dn{static get now(){return EH}static set now(e){EH=e}static set defaultZone(e){AH=e}static get defaultZone(){return Bl(AH,S4.instance)}static get defaultLocale(){return vH}static set defaultLocale(e){vH=e}static get defaultNumberingSystem(){return SH}static set defaultNumberingSystem(e){SH=e}static get defaultOutputCalendar(){return _H}static set defaultOutputCalendar(e){_H=e}static get throwOnInvalid(){return CH}static set throwOnInvalid(e){CH=e}static resetCaches(){cn.resetCache(),uu.resetCache()}}let bH={};function $Ae(t,e={}){const n=JSON.stringify([t,e]);let r=bH[n];return r||(r=new Intl.ListFormat(t,e),bH[n]=r),r}let pO={};function gO(t,e={}){const n=JSON.stringify([t,e]);let r=pO[n];return r||(r=new Intl.DateTimeFormat(t,e),pO[n]=r),r}let mO={};function BAe(t,e={}){const n=JSON.stringify([t,e]);let r=mO[n];return r||(r=new Intl.NumberFormat(t,e),mO[n]=r),r}let yO={};function kAe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=yO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),yO[i]=s),s}let O1=null;function PAe(){return O1||(O1=new Intl.DateTimeFormat().resolvedOptions().locale,O1)}function MAe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=gO(t).resolvedOptions()}catch{n=gO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function jAe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function UAe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function qAe(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 b4(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function HAe(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 zAe{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=BAe(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):cO(e,3);return On(n,this.padTo)}}}class QAe{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=gO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class GAe{constructor(e,n,r){this.opts={style:"long",...r},!n&&sH()&&(this.rtf=kAe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):DAe(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":PAe()),u=n||Dn.defaultNumberingSystem,a=r||Dn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){O1=null,pO={},mO={},yO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=MAe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=jAe(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=HAe(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 b4(this,e,r,fH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=UAe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return b4(this,e,r,hH,()=>{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]=qAe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return b4(this,void 0,e,()=>pH,()=>{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 b4(this,e,n,gH,()=>{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 zAe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new QAe(e,this.intl,n)}relFormatter(e={}){return new GAe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return $Ae(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 gd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function md(...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 yd(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 TH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=$l(e[n+i]);return[r,null,n+i]}}const RH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,WAe=`(?:${RH.source}?(?:\\[(${lH.source})\\])?)?`,EO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,OH=RegExp(`${EO.source}${WAe}`),AO=RegExp(`(?:T${OH.source})?`),VAe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,YAe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,XAe=/(\d{4})-?(\d{3})/,JAe=TH("weekYear","weekNumber","weekDay"),KAe=TH("year","ordinal"),ZAe=/(\d{4})-(\d\d)-(\d\d)/,DH=RegExp(`${EO.source} ?(?:${RH.source}|(${lH.source}))?`),e4e=RegExp(`(?: ${DH.source})?`);function Ed(t,e,n){const r=t[e];return vt(r)?n:$l(r)}function t4e(t,e){return[{year:Ed(t,e),month:Ed(t,e+1,1),day:Ed(t,e+2,1)},null,e+3]}function Ad(t,e){return[{hours:Ed(t,e,0),minutes:Ed(t,e+1,0),seconds:Ed(t,e+2,0),milliseconds:lO(t[e+3])},null,e+4]}function D1(t,e){const n=!t[e]&&!t[e+1],r=E4(t[e+1],t[e+2]),i=n?null:Lr.instance(r);return[{},i,e+3]}function N1(t,e){const n=t[e]?uu.create(t[e]):null;return[{},n,e+1]}const n4e=RegExp(`^T?${EO.source}$`),r4e=/^-?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 i4e(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(lO(l),f)}]}const s4e={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 vO(t,e,n,r,i,s,o){const u={year:e.length===2?xO($l(e)):$l(e),month:cH.indexOf(n)+1,day:$l(r),hour:$l(i),minute:$l(s)};return o&&(u.second=$l(o)),t&&(u.weekday=t.length>3?xH.indexOf(t)+1:dH.indexOf(t)+1),u}const o4e=/^(?:(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 u4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=vO(e,i,r,n,s,o,u);let h;return a?h=s4e[a]:l?h=0:h=E4(c,f),[x,new Lr(h)]}function a4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const l4e=/^(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$/,c4e=/^(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$/,f4e=/^(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 NH(t){const[,e,n,r,i,s,o,u]=t;return[vO(e,i,r,n,s,o,u),Lr.utcInstance]}function x4e(t){const[,e,n,r,i,s,o,u]=t;return[vO(e,u,n,r,i,s,o),Lr.utcInstance]}const d4e=gd(VAe,AO),h4e=gd(YAe,AO),p4e=gd(XAe,AO),g4e=gd(OH),wH=md(t4e,Ad,D1,N1),m4e=md(JAe,Ad,D1,N1),y4e=md(KAe,Ad,D1,N1),E4e=md(Ad,D1,N1);function A4e(t){return yd(t,[d4e,wH],[h4e,m4e],[p4e,y4e],[g4e,E4e])}function v4e(t){return yd(a4e(t),[o4e,u4e])}function S4e(t){return yd(t,[l4e,NH],[c4e,NH],[f4e,x4e])}function _4e(t){return yd(t,[r4e,i4e])}const C4e=md(Ad);function b4e(t){return yd(t,[n4e,C4e])}const T4e=gd(ZAe,e4e),R4e=gd(DH),O4e=md(Ad,D1,N1);function D4e(t){return yd(t,[T4e,wH],[R4e,O4e])}const N4e="Invalid Duration",FH={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}},w4e={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},...FH},Rs=146097/400,vd=146097/4800,F4e={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:vd/7,days:vd,hours:vd*24,minutes:vd*24*60,seconds:vd*24*60*60,milliseconds:vd*24*60*60*1e3},...FH},jc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],L4e=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 I4e(t){return t<0?Math.floor(t):Math.ceil(t)}function LH(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?I4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function $4e(t,e){L4e.reduce((n,r)=>vt(e[r])?n:(n&&LH(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?F4e:w4e,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 Ts(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:A4(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 Ts(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=_4e(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]=b4e(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 Ts("need to specify a reason the Duration is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new fAe(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 Mq(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?Ti.create(this.loc,r).formatDurationFromString(this,e):N4e}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+=cO(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)(hd(n.values,i)||hd(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]=aH(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,...A4(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 $4e(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)&&LH(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 w1="Invalid Interval";function B4e(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 Ts("need to specify a reason the Interval is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new cAe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=$1(e),i=$1(n),s=B4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=$1(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=$1(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($1).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()})`:w1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:w1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:w1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:w1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:w1}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 F1=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 Bl(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:sH()}}};function IH(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 k4e(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=IH(u,a);return(l-l%7)/7}],["days",IH]],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 P4e(t,e,n,r){let[i,s,o,u]=k4e(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 SO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},$H={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]},M4e=SO.hanidec.replace(/[\[|\]]/g,"").split("");function j4e(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(SO.hanidec)!==-1)e+=M4e.indexOf(t[n]);else for(const i in $H){const[s,o]=$H[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function lo({numberingSystem:t},e=""){return new RegExp(`${SO[t||"latn"]}${e}`)}const U4e="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(j4e(n))}}const BH="[  ]",kH=new RegExp(BH,"g");function q4e(t){return t.replace(/\./g,"\\.?").replace(kH,BH)}function PH(t){return t.replace(/\./g,"").replace(kH," ").toLowerCase()}function co(t,e){return t===null?null:{regex:RegExp(t.map(q4e).join("|")),deser:([n])=>t.findIndex(r=>PH(n)===PH(r))+e}}function MH(t,e){return{regex:t,deser:([,n,r])=>E4(n,r),groups:e}}function _O(t){return{regex:t,deser:([e])=>e}}function H4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function z4e(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(H4e(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,xO);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 _O(c);case"uu":return _O(u);case"uuu":return Ft(n);case"a":return co(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,xO);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 MH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return MH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return _O(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:U4e};return m.token=t,m}const Q4e={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 G4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Q4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function W4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function V4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(hd(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 Y4e(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=lO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let CO=null;function X4e(){return CO||(CO=st.fromMillis(1555555555555)),CO}function J4e(t,e){if(t.literal)return t;const n=Ti.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ti.create(e,n).formatDateTimeParts(X4e()).map(o=>G4e(o,e,n));return s.includes(void 0)?t:s}function K4e(t,e){return Array.prototype.concat(...t.map(n=>J4e(n,e)))}function jH(t,e,n){const r=K4e(Ti.parseFormat(n),t),i=r.map(o=>z4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=W4e(i),a=RegExp(o,"i"),[l,c]=V4e(e,a,u),[f,x,h]=c?Y4e(c):[null,null,void 0];if(hd(c,"a")&&hd(c,"H"))throw new C1("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 Z4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=jH(t,e,n);return[r,i,s,o]}const UH=[0,31,59,90,120,151,181,212,243,273,304,334],qH=[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 HH(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)?qH:UH)[e-1]}function QH(t,e){const n=b1(t)?qH:UH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function bO(t){const{year:e,month:n,day:r}=t,i=zH(e,n,r),s=HH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=y4(u)):o>y4(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...v4(t)}}function GH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=HH(e,1,4),s=T1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=T1(u)):o>s?(u=e+1,o-=T1(e)):u=e;const{month:a,day:l}=QH(u,o);return{year:u,month:a,day:l,...v4(t)}}function TO(t){const{year:e,month:n,day:r}=t,i=zH(e,n,r);return{year:e,ordinal:i,...v4(t)}}function WH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=QH(e,n);return{year:e,month:r,day:i,...v4(t)}}function eve(t){const e=g4(t.weekYear),n=ha(t.weekNumber,1,y4(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 tve(t){const e=g4(t.year),n=ha(t.ordinal,1,T1(t.year));return e?n?!1:Os("ordinal",t.ordinal):Os("year",t.year)}function VH(t){const e=g4(t.year),n=ha(t.month,1,12),r=ha(t.day,1,m4(t.year,t.month));return e?n?r?!1:Os("day",t.day):Os("month",t.month):Os("year",t.year)}function YH(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 RO="Invalid DateTime",XH=864e13;function T4(t){return new ao("unsupported zone",`the zone "${t.name}" is not supported`)}function OO(t){return t.weekData===null&&(t.weekData=bO(t.c)),t.weekData}function L1(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 JH(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 KH(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 R4(t,e,n){return JH(fO(t),e,n)}function ZH(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,m4(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=fO(s);let[a,l]=JH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function I1(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 O4(t,e,n=!0){return t.isValid?Ti.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function DO(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 ez(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 tz={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},nve={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},rve={ordinal:1,hour:0,minute:0,second:0,millisecond:0},nz=["year","month","day","hour","minute","second","millisecond"],ive=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],sve=["year","ordinal","hour","minute","second","millisecond"];function rz(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 Mq(t);return e}function iz(t,e){const n=Bl(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 nz)vt(t[l])&&(t[l]=tz[l]);const u=VH(t)||YH(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=R4(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function sz(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=cO(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 oz(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:T4(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=KH(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]=oz(arguments),[r,i,s,o,u,a,l]=n;return iz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=oz(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Lr.utcInstance,iz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=pAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=Bl(n.zone,Dn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:cn.fromObject(n)}):st.invalid(T4(i))}static fromMillis(e,n={}){if(Pc(e))return e<-XH||e>XH?st.invalid("Timestamp out of range"):new st({ts:e,zone:Bl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new Ts(`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:Bl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new Ts("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Bl(n.zone,Dn.defaultZone);if(!r.isValid)return st.invalid(T4(r));const i=Dn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=A4(e,rz),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 C1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new C1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=KH(i,s);h?(p=ive,m=nve,g=bO(g)):u?(p=sve,m=rve,g=TO(g)):(p=nz,m=tz);let y=!1;for(const b of p){const R=o[b];vt(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?eve(o):u?tve(o):VH(o),A=E||YH(o);if(A)return st.invalid(A);const v=h?GH(o):u?WH(o):o,[_,S]=R4(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]=A4e(e);return I1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=v4e(e);return I1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=S4e(e);return I1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new Ts("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]=Z4e(o,e,n);return c?st.invalid(c):I1(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]=D4e(e);return I1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Ts("need to specify a reason the DateTime is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new lAe(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?OO(this).weekYear:NaN}get weekNumber(){return this.isValid?OO(this).weekNumber:NaN}get weekday(){return this.isValid?OO(this).weekday:NaN}get ordinal(){return this.isValid?TO(this.c).ordinal:NaN}get monthShort(){return this.isValid?F1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?F1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?F1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?F1.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 m4(this.year,this.month)}get daysInYear(){return this.isValid?T1(this.year):NaN}get weeksInWeekYear(){return this.isValid?y4(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ti.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=Bl(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]=R4(o,s,e)}return L1(this,{ts:i,zone:e})}else return st.invalid(T4(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return L1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=A4(e,rz),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 C1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new C1("Can't mix ordinal dates with month/day");let l;r?l=GH({...bO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(m4(l.year,l.month),l.day))):l=WH({...TO(this.c),...n});const[c,f]=R4(l,this.o,this.zone);return L1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return L1(this,ZH(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return L1(this,ZH(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?Ti.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):RO}toLocaleString(e=aO,n={}){return this.isValid?Ti.create(this.loc.clone(n),e).formatDateTime(this):RO}toLocaleParts(e={}){return this.isValid?Ti.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=DO(this,o);return u+="T",u+=ez(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?DO(this,e==="extended"):null}toISOWeekDate(){return O4(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":"")+ez(this,o==="extended",n,e,r,s):null}toRFC2822(){return O4(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return O4(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?DO(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")),O4(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():RO}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=gAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=P4e(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),sz(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?sz(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 Ts("min requires all arguments be DateTimes");return oH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new Ts("max requires all arguments be DateTimes");return oH(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 jH(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return aO}static get DATE_MED(){return jq}static get DATE_MED_WITH_WEEKDAY(){return xAe}static get DATE_FULL(){return Uq}static get DATE_HUGE(){return qq}static get TIME_SIMPLE(){return Hq}static get TIME_WITH_SECONDS(){return zq}static get TIME_WITH_SHORT_OFFSET(){return Qq}static get TIME_WITH_LONG_OFFSET(){return Gq}static get TIME_24_SIMPLE(){return Wq}static get TIME_24_WITH_SECONDS(){return Vq}static get TIME_24_WITH_SHORT_OFFSET(){return Yq}static get TIME_24_WITH_LONG_OFFSET(){return Xq}static get DATETIME_SHORT(){return Jq}static get DATETIME_SHORT_WITH_SECONDS(){return Kq}static get DATETIME_MED(){return Zq}static get DATETIME_MED_WITH_SECONDS(){return eH}static get DATETIME_MED_WITH_WEEKDAY(){return dAe}static get DATETIME_FULL(){return tH}static get DATETIME_FULL_WITH_SECONDS(){return nH}static get DATETIME_HUGE(){return rH}static get DATETIME_HUGE_WITH_SECONDS(){return iH}}function $1(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 Ts(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const uz=g$(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:Lr,IANAZone:uu,Info:F1,Interval:fn,InvalidZone:yH,Settings:Dn,SystemZone:S4,VERSION:"2.5.2",Zone:pd},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.LiteralYear=Jn.LiteralQuarter=Jn.LiteralMonth=Jn.LiteralWeek=Jn.LiteralDay=Jn.LiteralHour=Jn.LiteralTimestamp=Jn.TimeFormatError=void 0;const kl=uz,ove=oe,uve=Dl,az=cd,NO=xt;class ave extends Error{}Jn.TimeFormatError=ave;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 lz="yyyy",cz=`${lz}-LL`,Ds=`${cz}-dd`,fz=`${Ds} HH`,xz=`${fz}:mm`,wO=`${xz}:ss`;class dz extends NO.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 FO extends dz{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=kl.DateTime.fromFormat(e,wO);if(s.isValid)return new FO(r,n);if(s=kl.DateTime.fromFormat(e,xz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(wO);return new LO(r,n,"timestamp",o)}}}Jn.LiteralTimestamp=FO;class LO extends dz{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,NO.getMorphicValue)(i,"timestamp"),a=(0,NO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,ove.isTemporalField)(o.dataType)){const u=o.dataType;return new uve.Range(new az.ExprTime(u,i.value),new az.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class IO extends LO{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=kl.DateTime.fromFormat(n.text,fz);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(wO),new IO(n,r)}}Jn.LiteralHour=IO;class B1 extends LO{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 $O extends B1{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=kl.DateTime.fromFormat(n.text,Ds);if(i.isValid)return r=i.plus({day:1}).toFormat(Ds),new $O(n,r)}}Jn.LiteralDay=$O;class BO extends B1{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=kl.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 BO(n,r)}}}Jn.LiteralWeek=BO;class kO extends B1{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=kl.DateTime.fromFormat(n.text,cz);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new kO(n,r)}}}Jn.LiteralMonth=kO;class PO extends B1{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=kl.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 PO(n,r)}}}Jn.LiteralQuarter=PO;class MO extends B1{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=kl.DateTime.fromFormat(n.text,lz);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new MO(n,r)}}}Jn.LiteralYear=MO;var D4={};Object.defineProperty(D4,"__esModule",{value:!0}),D4.PartialCompare=void 0;const lve=xt;class cve extends lve.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")}}D4.PartialCompare=cve;var Sd={};Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.PickWhen=Sd.Pick=void 0;const au=oe,_d=rn,fve=xt,xve=We;function N4(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class dve extends fve.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&&!_d.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=N4(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=N4(s,l),_d.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(!_d.FT.typeEq(a.when,_d.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!_d.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=N4(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=N4(i,u),_d.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})}}Sd.Pick=dve;class hve extends xve.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Sd.PickWhen=hve;var Cd={};Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.RecordLiteral=Cd.RecordElement=void 0;const hz=As,pve=xt,gve=We;class mve extends gve.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Cd.RecordElement=mve;class yve extends pve.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,hz.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,hz.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Cd.RecordLiteral=yve;var w4={};Object.defineProperty(w4,"__esModule",{value:!0}),w4.Timeframe=void 0;const Eve=oe,Ave=We;class vve extends Ave.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,Eve.isTimestampUnit)(n)?n:"second"}}w4.Timeframe=vve;var F4={};Object.defineProperty(F4,"__esModule",{value:!0}),F4.TopBy=void 0;const Sve=oe,pz=xt,_ve=We;class Cve extends _ve.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof pz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof pz.ExpressionDef){const n=this.by.getExpression(e);return(0,Sve.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}}}F4.TopBy=Cve;var Pl={};Object.defineProperty(Pl,"__esModule",{value:!0}),Pl.ImportStatement=Pl.ImportSelect=Pl.ImportSourceName=void 0;const jO=We;class bve extends jO.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}Pl.ImportSourceName=bve;class Tve extends jO.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}Pl.ImportSelect=Tve;class Rve extends jO.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}'`)}}}Pl.ImportStatement=Rve;var k1={};Object.defineProperty(k1,"__esModule",{value:!0}),k1.ExtendBlock=void 0;const Ove=We,Dve=mn;class Nve extends Ove.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=Dve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}k1.ExtendBlock=Nve;var L4={};Object.defineProperty(L4,"__esModule",{value:!0}),L4.Argument=void 0;const wve=We;class Fve extends wve.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}L4.Argument=Fve;var I4={};Object.defineProperty(I4,"__esModule",{value:!0}),I4.HasParameter=void 0;const gz=oe,Lve=We;class Ive extends Lve.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,gz.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,gz.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"}}}I4.HasParameter=Ive;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.AnonymousQuery=void 0;const $ve=We,Bve=Nr;class kve extends $ve.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=Bve.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)}}$4.AnonymousQuery=kve;var Ml={};Object.defineProperty(Ml,"__esModule",{value:!0}),Ml.View=void 0;const Pve=We;let Mve=class extends Pve.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Ml.View=Mve;var B4={};Object.defineProperty(B4,"__esModule",{value:!0}),B4.ViewArrow=void 0;const jve=hr,Uve=Ml;class qve extends Uve.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 jve.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()}}B4.ViewArrow=qve;var k4={},P1={};Object.defineProperty(P1,"__esModule",{value:!0}),P1.refine=void 0;const UO=As,qO=bl;function Hve(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,UO.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,UO.isQuerySegment)(o)&&(0,UO.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,qO.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,qO.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(qO.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}P1.refine=Hve,Object.defineProperty(k4,"__esModule",{value:!0}),k4.ViewRefine=void 0;const zve=Fr,Qve=Ji,Gve=P1,Wve=Ml;class Vve extends Wve.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,Qve.getFinalStruct)(this.refinement,e.structDef(),i):zve.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,Gve.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}k4.ViewRefine=Vve;var P4={};Object.defineProperty(P4,"__esModule",{value:!0}),P4.ReferenceView=void 0;const HO=oe,mz=Fr,Yve=Ji,Xve=wr,Jve=P1,Kve=Ml;class Zve extends Kve.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:mz.ErrorFactory.structDef,outputStruct:mz.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 Xve.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,HO.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,HO.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,HO.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,Yve.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,Jve.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}P4.ReferenceView=Zve;var M4={},M1={},j4={},j1={};Object.defineProperty(j1,"__esModule",{value:!0}),j1.Index=void 0;const eSe=We,tSe=mn;let nSe=class extends eSe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=tSe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};j1.Index=nSe;var U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.SampleProperty=void 0;const rSe=We,yz=mn;class iSe extends rSe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=yz.LegalRefinementStage.Tail,this.forceQueryClass=yz.QueryClass.Index}sampling(){return this.sample}}U1.SampleProperty=iSe;var U4={};Object.defineProperty(U4,"__esModule",{value:!0}),U4.IndexFieldSpace=void 0;const Ez=oe,zO=ht,sSe=wr,oSe=oo,uSe=E1,aSe=hr;class lSe extends oSe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof zO.FieldReference?super.pushFields(n):n instanceof zO.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 uSe.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 aSe.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=zO.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,Ez.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,Ez.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)}}U4.IndexFieldSpace=lSe,Object.defineProperty(j4,"__esModule",{value:!0}),j4.IndexBuilder=void 0;const QO=oe,cSe=Fr,fSe=so,xSe=j1,dSe=Fl,hSe=U1,pSe=U4;class gSe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new pSe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof fSe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof dSe.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof xSe.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 hSe.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,QO.isIndexSegment)(e)&&!(0,QO.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),cSe.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,QO.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}j4.IndexBuilder=gSe;var q4={},q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.GroupBy=void 0;const mSe=Xi,Az=mn;class ySe extends mSe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=Az.LegalRefinementStage.Single,this.forceQueryClass=Az.QueryClass.Grouping}}q1.GroupBy=ySe;var H4={};Object.defineProperty(H4,"__esModule",{value:!0}),H4.ProjectFieldSpace=void 0;const GO=oe,ESe=oo;class ASe extends ESe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,GO.expressionIsAggregate)(e.expressionType)?!1:(0,GO.expressionInvolvesAggregate)(e.expressionType)&&(0,GO.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}H4.ProjectFieldSpace=ASe;var jl={},Hc={};Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.Ordering=Hc.OrderBy=void 0;const vSe=oe,vz=Ll,Sz=We,SSe=mn;class _Se extends Sz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof vz.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 vz.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,vSe.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=_Se;class CSe extends Sz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=SSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Hc.Ordering=CSe;var H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.Top=void 0;const _z=oe,bSe=Ll,TSe=We,RSe=mn;let OSe=class extends TSe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=RSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof bSe.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,_z.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,_z.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}}}};H1.Top=OSe,Object.defineProperty(jl,"__esModule",{value:!0}),jl.ReduceBuilder=jl.QuerySegmentBuilder=void 0;const Cz=oe,DSe=Fr,NSe=so,wSe=Fl,bz=Hc,Tz=H1,FSe=oo,LSe=Xi;class Rz{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof LSe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof NSe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof Tz.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 wSe.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof bz.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 Tz.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof bz.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])}}jl.QuerySegmentBuilder=Rz;class ISe extends Rz{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new FSe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,Cz.isReduceSegment)(e)||(0,Cz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),DSe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}jl.ReduceBuilder=ISe,Object.defineProperty(q4,"__esModule",{value:!0}),q4.ProjectBuilder=void 0;const Oz=oe,$Se=Fr,BSe=q1,kSe=H4,PSe=jl;class MSe extends PSe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new kSe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof BSe.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,Oz.isProjectSegment)(e)||(0,Oz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),$Se.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}q4.ProjectBuilder=MSe;var z4={};Object.defineProperty(z4,"__esModule",{value:!0}),z4.PartialBuilder=void 0;const jSe=As,USe=jl;class qSe extends USe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,jSe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}z4.PartialBuilder=qSe,Object.defineProperty(M1,"__esModule",{value:!0}),M1.QOpDesc=void 0;const HSe=j4,zSe=q4,QSe=jl,GSe=We,WSe=Ji,VSe=hr,zc=mn,YSe=z4;class XSe extends GSe.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 QSe.ReduceBuilder(e,this.refineThis,n,r);case zc.QueryClass.Project:return new zSe.ProjectBuilder(e,this.refineThis,n,r);case zc.QueryClass.Index:return new HSe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new YSe.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 VSe.StaticSourceSpace((0,WSe.opOutputStruct)(this,e.structDef(),i))}}}M1.QOpDesc=XSe,Object.defineProperty(M4,"__esModule",{value:!0}),M4.QOpDescView=void 0;const JSe=oe,KSe=hr,Dz=M1,ZSe=Ji,WO=mn,e5e=Ml;class t5e extends e5e.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,JSe.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 Dz.QOpDesc([]),o=new Dz.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case WO.LegalRefinementStage.Head:s.push(u);break;case WO.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case WO.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,ZSe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new KSe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}M4.QOpDescView=t5e;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 Nz=oe,n5e=rn,r5e=ld,i5e=We,Qc=In,s5e=Nr,o5e=wr;class Ul extends i5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=s5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new VO(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,Nz.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,r5e.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 VO&&e.foundCircle)&&r.dataType!=="error"){const u=n5e.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 wz(e,this))}}xn.AtomicFieldDeclaration=Ul;class u5e extends Ul{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=u5e;class a5e extends Ul{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=a5e;class l5e extends Ul{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=l5e;class c5e extends Ul{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=c5e;class f5e extends Ul{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=f5e;class x5e extends Ul{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=x5e;class d5e extends Ul{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=d5e;class VO{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=VO;class wz extends o5e.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,Nz.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}xn.FieldDefinitionValue=wz;var Q4={};Object.defineProperty(Q4,"__esModule",{value:!0}),Q4.Aggregate=void 0;const h5e=Xi,Fz=mn;let p5e=class extends h5e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=Fz.LegalRefinementStage.Single,this.forceQueryClass=Fz.QueryClass.Grouping}};Q4.Aggregate=p5e;var G4={};Object.defineProperty(G4,"__esModule",{value:!0}),G4.Calculate=void 0;const g5e=Xi,m5e=mn;class y5e extends g5e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=m5e.LegalRefinementStage.Single}}G4.Calculate=y5e;var z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.Dimensions=void 0;const E5e=Tl;class A5e extends E5e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}z1.Dimensions=A5e;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Measures=void 0;const v5e=Tl;class S5e extends v5e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Q1.Measures=S5e;var W4={};Object.defineProperty(W4,"__esModule",{value:!0}),W4.Nests=void 0;const _5e=Xi,Lz=mn;class C5e extends _5e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=Lz.LegalRefinementStage.Single,this.forceQueryClass=Lz.QueryClass.Grouping}}W4.Nests=C5e;var V4={};Object.defineProperty(V4,"__esModule",{value:!0}),V4.ProjectStatement=void 0;const b5e=Xi,Iz=mn;class T5e extends b5e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=Iz.QueryClass.Project,this.queryRefinementStage=Iz.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}V4.ProjectStatement=T5e;var ql={},pa={};Object.defineProperty(pa,"__esModule",{value:!0}),pa.findReferences=pa.deprecatedParseTableURI=pa.constructTableKey=void 0;const R5e=al,YO=tn;function XO(t){const e=(0,YO.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,YO.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class O5e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=$z(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,YO.getId)(e.connectionId()),r=XO(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=XO(e.tableURI()),{connectionName:r,tablePath:i}=Bz(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=XO(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function $z(t,e){return t===void 0?e:`${t}:${e}`}pa.constructTableKey=$z;function Bz(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}pa.deprecatedParseTableURI=Bz;function D5e(t,e,n){const r=new O5e(t,e),i=r;return R5e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}pa.findReferences=D5e,Object.defineProperty(ql,"__esModule",{value:!0}),ql.TableFunctionSource=ql.TableMethodSource=ql.TableSource=void 0;const kz=pa,N5e=io,Pz=Fr;class JO extends N5e.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return Pz.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,kz.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),Pz.ErrorFactory.structDef}}ql.TableSource=JO;class w5e extends JO{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=w5e;class F5e extends JO{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,kz.deprecatedParseTableURI)(this.tableURI)}}ql.TableFunctionSource=F5e;var Y4={};Object.defineProperty(Y4,"__esModule",{value:!0}),Y4.SQLString=void 0;const L5e=We,Mz=su;class I5e extends L5e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter($5e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof Mz.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}}Y4.SQLString=I5e;function $5e(t){return t instanceof Mz.SourceQueryElement}var X4={};Object.defineProperty(X4,"__esModule",{value:!0}),X4.SourceDesc=void 0;const B5e=We;class k5e extends B5e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}X4.SourceDesc=k5e;var J4={};Object.defineProperty(J4,"__esModule",{value:!0}),J4.isSourceProperty=void 0;const P5e=so,M5e=Tl,j5e=nd,U5e=Ol,q5e=rd,H5e=id,z5e=sd,Q5e=Rl,G5e=Ci;function W5e(t){return t instanceof P5e.Filter||t instanceof G5e.JoinStatement||t instanceof M5e.DeclareFields||t instanceof j5e.FieldListEdit||t instanceof U5e.Renames||t instanceof q5e.PrimaryKey||t instanceof Q5e.ObjectAnnotation||t instanceof H5e.Views||t instanceof z5e.TimezoneStatement}J4.isSourceProperty=W5e;var K4={};Object.defineProperty(K4,"__esModule",{value:!0}),K4.isFieldCollectionMember=void 0;const V5e=xn,jz=ht;function Y5e(t){return t instanceof jz.FieldReference||t instanceof jz.WildcardFieldReference||t instanceof V5e.AtomicFieldDeclaration}K4.isFieldCollectionMember=Y5e;var Z4={};Object.defineProperty(Z4,"__esModule",{value:!0}),Z4.isQueryElement=void 0;const X5e=od,J5e=ud,K5e=d1,Z5e=h1;function e_e(t){return t instanceof X5e.QueryArrow||t instanceof J5e.QueryRefine||t instanceof K5e.QueryReference||t instanceof Z5e.QueryRaw}Z4.isQueryElement=e_e;var Uz={};Object.defineProperty(Uz,"__esModule",{value:!0});var ev={};Object.defineProperty(ev,"__esModule",{value:!0}),ev.isQueryProperty=void 0;function t_e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}ev.isQueryProperty=t_e;var tv={};Object.defineProperty(tv,"__esModule",{value:!0}),tv.isQueryExtendProperty=void 0;const n_e=z1,r_e=Ci,i_e=Q1;function s_e(t){return t instanceof n_e.Dimensions||t instanceof i_e.Measures||t instanceof r_e.JoinStatement}tv.isQueryExtendProperty=s_e;var nv={};Object.defineProperty(nv,"__esModule",{value:!0}),nv.isFieldPropStatement=void 0;const o_e=Nl,u_e=so,a_e=Fl,l_e=dd;function c_e(t){return t instanceof u_e.Filter||t instanceof a_e.Limit||t instanceof l_e.PartitionBy||t instanceof o_e.FunctionOrdering}nv.isFieldPropStatement=c_e,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(n1,t),n(Jx,t),n(Kx,t),n(io,t),n(s1,t),n(su,t),n(RA,t),n(OA,t),n(FA,t),n(l1,t),n($A,t),n(nd,t),n(rd,t),n(Ol,t),n(id,t),n(sd,t),n(BA,t),n(fd,t),n(PA,t),n(Nl,t),n(MA,t),n(da,t),n(jA,t),n(xd,t),n(UA,t),n(qA,t),n(HA,t),n(g1,t),n(zA,t),n(QA,t),n(WA,t),n(v1,t),n(y1,t),n(Lc,t),n(VA,t),n(YA,t),n(JA,t),n(ZA,t),n(e4,t),n(t4,t),n(n4,t),n(r4,t),n(i4,t),n(s4,t),n(o4,t),n(u4,t),n(a4,t),n(l4,t),n(c4,t),n(d4,t),n(Jn,t),n(D4,t),n(dd,t),n(Sd,t),n(Cd,t),n(Dl,t),n(w4,t),n(F4,t),n(S1,t),n(Pl,t),n(k1,t),n(L4,t),n(I4,t),n($4,t),n(ud,t),n(od,t),n(Ml,t),n(B4,t),n(k4,t),n(P4,t),n(M4,t),n(xn,t),n(ht,t),n(Q4,t),n(G4,t),n(Tl,t),n(z1,t),n(k1,t),n(so,t),n(q1,t),n(j1,t),n(Ci,t),n(r1,t),n(Fl,t),n(Q1,t),n(n1,t),n(W4,t),n(Hc,t),n(V4,t),n(M1,t),n(U1,t),n(H1,t),n(ad,t),n(Fc,t),n(p1,t),n(ql,t),n(Y4,t),n(Rl,t),n(ou,t),n(X4,t),n(J4,t),n(xt,t),n(K4,t),n(Ll,t),n(We,t),n(Z4,t),n(Uz,t),n(ev,t),n(tv,t),n(nv,t)}(mA);var rv={},bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.ConstantExpression=bd.ConstantFieldSpace=void 0;const f_e=xt;class qz{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=qz;class x_e extends f_e.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 qz),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=x_e;var d_e=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]}),h_e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),p_e=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)&&d_e(e,t,n);return h_e(e,t),e};Object.defineProperty(rv,"__esModule",{value:!0}),rv.MalloyToAST=void 0;const Hz=pE,g_e=i2,Z=p_e(mA),KO=yA,m_e=Qn,y_e=mA,$n=tn,ZO=oe,E_e=ko,A_e=bd;class zz extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class e7 extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const v_e=["##! m4warnings=error"];class S_e extends g_e.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of v_e){const s=E_e.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,KO.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,KO.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,KO.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 e7||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 m_e.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 Hz.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 Hz.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 A_e.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,ZO.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,ZO.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,ZO.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 e7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new e7(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 y_e.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)}}rv.MalloyToAST=S_e;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.Zone=void 0;class __e{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})}}iv.Zone=__e;var sv={};Object.defineProperty(sv,"__esModule",{value:!0}),sv.walkForDocumentSymbols=void 0;const C_e=al,b_e=tn;class T_e{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,b_e.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 R_e(t,e,n){const r=new T_e(t,e,[],[]),i=r;return C_e.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}sv.walkForDocumentSymbols=R_e;var ov={};Object.defineProperty(ov,"__esModule",{value:!0}),ov.walkForDocumentCompletions=void 0;const O_e=al,D_e=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],N_e=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],w_e=["source","explore","query","sql"];class F_e{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 D_e)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 N_e)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 w_e)this.completions.push({type:"model_property",text:`${r}: `})}}}function L_e(t,e,n){const r=new F_e(t,[],n),i=r;return O_e.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}ov.walkForDocumentCompletions=L_e;var uv={};Object.defineProperty(uv,"__esModule",{value:!0}),uv.walkForDocumentHelpContext=void 0;const I_e=uT;class $_e extends I_e.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 B_e(t,e){return new $_e(e).visit(t)}uv.walkForDocumentHelpContext=B_e;var av={},G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.locationContainsPosition=void 0;function k_e(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)}G1.locationContainsPosition=k_e,Object.defineProperty(av,"__esModule",{value:!0}),av.ReferenceList=void 0;const P_e=G1;class M_e{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,P_e.locationContainsPosition)(r.location,e))return r}}av.ReferenceList=M_e;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.isNeedResponse=void 0;function j_e(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}lv.isNeedResponse=j_e;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.walkForModelAnnotation=void 0;const U_e=al;class q_e{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 H_e(t,e,n){const r=new q_e(t,e,n),i=r;return U_e.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}cv.walkForModelAnnotation=H_e;var fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.walkForTablePath=void 0;const Qz=tn,z_e=al;class Q_e{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,Qz.getId)(e.connectionId()),[r,i]=(0,Qz.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function G_e(t,e,n){const r=new Q_e(t,e),i=r;return z_e.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}fv.walkForTablePath=G_e;var W_e=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]}),V_e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Y_e=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)&&W_e(e,t,n);return V_e(e,t),e};Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.MalloyParserErrorHandler=Ko.MalloyTranslator=Ko.MalloyChildTranslator=Ko.MalloyTranslation=void 0;const Gz=pE,X_e=oe,J_e=wE,K_e=F,Wz=Y_e(mA),Z_e=rv,t7=yA,eCe=pa,n7=iv,tCe=sv,nCe=ov,rCe=uv,iCe=av,xv=lv,sCe=G1,Vz=ko,oCe=cv,uCe=fv;class aCe extends J_e.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class lCe{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===""?`
1302
+ `)),IA.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"),IA.ErrorFactory.structDef}}p1.SQLSource=u3e,Object.defineProperty(FA,"__esModule",{value:!0}),FA.SQSource=void 0;const a3e=su,l3e=h1,c3e=p1;class f3e extends a3e.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 c3e.SQLSource){const e=new l3e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("invalid-source-as-query","This source cannot be used as a query")}}FA.SQSource=f3e;var $A={};Object.defineProperty($A,"__esModule",{value:!0}),$A.SQExtend=void 0;const x3e=s1,d3e=su;class h3e extends d3e.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 x3e.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}}$A.SQExtend=h3e;var BA={},g1={},m1={};Object.defineProperty(m1,"__esModule",{value:!0}),m1.BinaryBoolean=void 0;const xq=oe,p3e=_i,g3e=rn,m3e=ou,y3e=xt;class E3e extends y3e.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=[g3e.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,xq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,xq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,m3e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,p3e.errorFor)("logial required boolean")}}m1.BinaryBoolean=E3e,Object.defineProperty(g1,"__esModule",{value:!0}),g1.ExprCompare=void 0;const Qt=rn,A3e=m1,v3e={"~":[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 S3e extends A3e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=v3e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}g1.ExprCompare=S3e;var y1={},cd={};Object.defineProperty(cd,"__esModule",{value:!0}),cd.ExprTime=void 0;const _3e=oe,C3e=xt;class eO extends C3e.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,_3e.isTemporalField)(n.dataType)&&(i.srcType=n.dataType),r=i}return new eO(e,r,n.expressionType)}}cd.ExprTime=eO;var Dl={};Object.defineProperty(Dl,"__esModule",{value:!0}),Dl.Range=void 0;const dq=oe,b3e=_i,T3e=xt;class R3e extends T3e.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,dq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,dq.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,b3e.errorFor)("a range is not a value")}}Dl.Range=R3e,Object.defineProperty(y1,"__esModule",{value:!0}),y1.ExprGranularTime=void 0;const hq=oe,O3e=_i,pq=rn,gq=Xn,D3e=xt,kA=cd,mq=Dl;class N3e extends D3e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[pq.FT.timestampT,pq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,hq.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,hq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,O3e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=kA.ExprTime.fromValue("timestamp",n),a=new kA.ExprTime("timestamp",(0,gq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new mq.Range(u,a)}const i=new kA.ExprTime("date",n.value,n.expressionType),s=(0,gq.timeOffset)("date",n.value,"+",r,this.units),o=new kA.ExprTime("date",s,n.expressionType);return new mq.Range(i,o)}}y1.ExprGranularTime=N3e,Object.defineProperty(BA,"__esModule",{value:!0}),BA.Apply=void 0;const w3e=g1,F3e=ld,yq=y1;class L3e extends w3e.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,F3e.isGranularResult)(r)&&(n=new yq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof yq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}BA.Apply=L3e;var fd={};Object.defineProperty(fd,"__esModule",{value:!0}),fd.BinaryNumeric=void 0;const I3e=rn,$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="numeric binary abstract",this.legalChildTypes=[I3e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}fd.BinaryNumeric=B3e;var PA={};Object.defineProperty(PA,"__esModule",{value:!0}),PA.Boolean=void 0;const k3e=xt,P3e=rn;let M3e=class extends k3e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...P3e.FT.boolT,value:{node:this.value}}}};PA.Boolean=M3e;var Nl={};Object.defineProperty(Nl,"__esModule",{value:!0}),Nl.FunctionOrdering=Nl.FunctionOrderBy=void 0;const tO=oe,Eq=We,j3e=Lc;class U3e extends Eq.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,tO.expressionIsAggregate)(n.expressionType)||((0,tO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof j3e.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,tO.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}}}Nl.FunctionOrderBy=U3e;class q3e extends Eq.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))}}Nl.FunctionOrdering=q3e;var MA={};Object.defineProperty(MA,"__esModule",{value:!0}),MA.ExprAddSub=void 0;const H3e=fd;class z3e extends H3e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}MA.ExprAddSub=z3e;var da={},ht={},E1={};Object.defineProperty(E1,"__esModule",{value:!0}),E1.ReferenceField=void 0;const Aq=wr;class Q3e extends Aq.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 Aq.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"}}}E1.ReferenceField=Q3e;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 G3e(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=G3e;function W3e(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=W3e;function V3e(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=V3e;function Y3e(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=Y3e;function X3e(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=X3e;function J3e(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=J3e;function K3e(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=K3e;function Z3e(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=Z3e,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 eye=E1,tye=Xi,vq=We,Sq=Nr,wl=In;class bi extends vq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=Sq.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 eye.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=bi;class nye extends bi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=nye;class rye extends bi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=rye;class iye extends bi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=iye;class sye extends bi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=sye;class oye extends bi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,wl.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=oye;class nO extends bi{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,wl.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return nO.indexOutputName(this.path)}}ht.IndexFieldReference=nO;class uye extends bi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,wl.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=uye;class aye extends bi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,wl.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=aye;class lye extends bi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,wl.typecheckProject)(e,this)}}ht.ProjectFieldReference=lye;class cye extends bi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,wl.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=cye;class fye extends bi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,wl.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=fye;class xye extends bi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,wl.typecheckDimension)(e,this)}}ht.DimensionFieldReference=xye;class dye extends bi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=dye;class hye extends vq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=Sq.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=hye;class pye extends tye.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=pye,Object.defineProperty(da,"__esModule",{value:!0}),da.ExprAggregateFunction=void 0;const A1=oe,gye=Rt,mye=_i,_q=hr,yye=rn,Eye=ht,Aye=xt,vye=wr,Sye=Lc;class _ye extends Aye.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[yye.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 _q.StructSpaceField))if((0,A1.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=>Cye(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,A1.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=iO(l,f),m=sO(this.elementType,p),g=x?m==null?void 0:m.message:"Join path is required for this calculation";if(g){const y=bye(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,mye.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(...rO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...rO(e,r))}return n}}da.ExprAggregateFunction=_ye;function Cye(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 rO(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 _q.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,joinPath:[{...a.joinPathElement,name:o},...l.joinPath]}}else if(a instanceof vye.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,gye.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path),o=s.def;if((0,A1.isAtomic)(o)&&!(0,A1.isJoined)(o))if((0,A1.hasExpression)(o)){const u=rO(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 iO(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 sO(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 bye(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=iO(i,e),o=sO(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=iO(l,e),f=sO(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 Eye.FieldReference?`${n.refString}.${r}()`:n instanceof Sye.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 jA={};Object.defineProperty(jA,"__esModule",{value:!0}),jA.ExprAlternationTree=void 0;const Cq=oe,Tye=xt;class Rye extends Tye.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,Cq.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Cq.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")}}jA.ExprAlternationTree=Rye;var xd={};Object.defineProperty(xd,"__esModule",{value:!0}),xd.ExprAsymmetric=void 0;const Oye=da;class Dye extends Oye.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}`}}}}xd.ExprAsymmetric=Dye;var UA={};Object.defineProperty(UA,"__esModule",{value:!0}),UA.ExprAvg=void 0;const Nye=xd;class wye extends Nye.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}UA.ExprAvg=wye;var qA={};Object.defineProperty(qA,"__esModule",{value:!0}),qA.ExprCast=void 0;const Fye=Xn,Lye=xt;class Iye extends Lye.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,Fye.castTo)(this.castType,n.value,n.dataType,this.safe),evalSpace:n.evalSpace}}}qA.ExprCast=Iye;var HA={};Object.defineProperty(HA,"__esModule",{value:!0}),HA.ExprCoalesce=void 0;const bq=As,Tq=rn,$ye=xt;class Bye extends $ye.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=Tq.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(Tq.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,bq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,bq.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}HA.ExprCoalesce=Bye;var zA={};Object.defineProperty(zA,"__esModule",{value:!0}),zA.ExprCount=void 0;const kye=da;class Pye extends kye.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"}}}zA.ExprCount=Pye;var QA={};Object.defineProperty(QA,"__esModule",{value:!0}),QA.ExprCountDistinct=void 0;const GA=rn,Mye=da;class jye extends Mye.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[GA.FT.numberT,GA.FT.stringT,GA.FT.dateT,GA.FT.timestampT]}}QA.ExprCountDistinct=jye;var WA={},Fl={};Object.defineProperty(Fl,"__esModule",{value:!0}),Fl.Limit=void 0;const Uye=We,qye=mn;class Hye extends Uye.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=qye.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Fl.Limit=Hye;var dd={};Object.defineProperty(dd,"__esModule",{value:!0}),dd.PartitionBy=void 0;const zye=We;class Qye extends zye.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}dd.PartitionBy=Qye;var v1={},Ll={};Object.defineProperty(Ll,"__esModule",{value:!0}),Ll.FieldName=void 0;const Gye=We;class Wye extends Gye.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])}}Ll.FieldName=Wye,Object.defineProperty(v1,"__esModule",{value:!0}),v1.ExprFunc=void 0;const Ki=oe,Vye=_i,Yye=ed,Xye=xt,Jye=Ll,Rq=Rt;class Kye extends Xye.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,Rq.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,Vye.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 Yye.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=Zye(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=eEe(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 Jye.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,Rq.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)),b=C==="constant"?"constant":(0,Ki.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:S,evalSpace:b}}}v1.ExprFunc=Kye;function Zye(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 eEe(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(WA,"__esModule",{value:!0}),WA.ExprProps=void 0;const tEe=oe,nEe=_i,rEe=rn,iEe=Nl,sEe=Fl,oEe=dd,uEe=xt,aEe=v1;class lEe extends uEe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=rEe.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,tEe.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,nEe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof oEe.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 iEe.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 aEe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}WA.ExprProps=lEe;var VA={};Object.defineProperty(VA,"__esModule",{value:!0}),VA.ExprLogicalOp=void 0;const cEe=m1,Oq=rn;class fEe extends cEe.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[Oq.FT.boolT,Oq.FT.aggregateBoolT]}}VA.ExprLogicalOp=fEe;var YA={};Object.defineProperty(YA,"__esModule",{value:!0}),YA.ExprMax=void 0;const XA=rn,xEe=da;class dEe extends xEe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[XA.FT.numberT,XA.FT.stringT,XA.FT.dateT,XA.FT.timestampT]}returns(e){return e.dataType}}YA.ExprMax=dEe;var JA={};Object.defineProperty(JA,"__esModule",{value:!0}),JA.ExprMin=void 0;const KA=rn,hEe=da;class pEe extends hEe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[KA.FT.numberT,KA.FT.stringT,KA.FT.dateT,KA.FT.timestampT]}returns(e){return e.dataType}}JA.ExprMin=pEe;var ZA={};Object.defineProperty(ZA,"__esModule",{value:!0}),ZA.ExprMinus=void 0;const gEe=_i,Dq=rn,mEe=xt;class yEe extends mEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[Dq.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return Dq.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,gEe.errorFor)("negate requires number")}}ZA.ExprMinus=yEe;var e4={};Object.defineProperty(e4,"__esModule",{value:!0}),e4.ExprMulDiv=void 0;const EEe=fd;class AEe extends EEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}e4.ExprMulDiv=AEe;var t4={},S1={};Object.defineProperty(S1,"__esModule",{value:!0}),S1.Unary=void 0;const vEe=xt;class SEe extends vEe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}S1.Unary=SEe,Object.defineProperty(t4,"__esModule",{value:!0}),t4.ExprNot=void 0;const Nq=rn,_Ee=S1;class CEe extends _Ee.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[Nq.FT.boolT,Nq.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"}}}}}t4.ExprNot=CEe;var n4={};Object.defineProperty(n4,"__esModule",{value:!0}),n4.ExprNow=void 0;const bEe=xt;class TEe extends bEe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}n4.ExprNow=TEe;var r4={};Object.defineProperty(r4,"__esModule",{value:!0}),r4.ExprNULL=void 0;const REe=xt;class OEe extends REe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}r4.ExprNULL=OEe;var i4={};Object.defineProperty(i4,"__esModule",{value:!0}),i4.ExprNumber=void 0;const DEe=rn,NEe=xt;class wEe extends NEe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...DEe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}i4.ExprNumber=wEe;var s4={};Object.defineProperty(s4,"__esModule",{value:!0}),s4.ExprParens=void 0;const FEe=xt;class LEe extends FEe.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}}}}s4.ExprParens=LEe;var o4={};Object.defineProperty(o4,"__esModule",{value:!0}),o4.ExprRegEx=void 0;const IEe=xt;class $Ee extends IEe.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"}}}o4.ExprRegEx=$Ee;var u4={};Object.defineProperty(u4,"__esModule",{value:!0}),u4.ExprString=void 0;const BEe=xt,kEe=rn;class PEe extends BEe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...kEe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}u4.ExprString=PEe;var a4={};Object.defineProperty(a4,"__esModule",{value:!0}),a4.ExprSum=void 0;const MEe=xd;class jEe extends MEe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}a4.ExprSum=jEe;var l4={};Object.defineProperty(l4,"__esModule",{value:!0}),l4.ExprTimeExtract=void 0;const Bc=oe,wq=_i,oO=xt,UEe=Dl;class _1 extends oO.ExpressionDef{static extractor(e){const n=_1.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=_1.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 UEe.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,wq.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,oO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,oO.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,wq.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}l4.ExprTimeExtract=_1,_1.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var c4={},oo={},f4={};Object.defineProperty(f4,"__esModule",{value:!0}),f4.QueryInputSpace=void 0;const qEe=Ci,HEe=Zx;class zEe extends HEe.RefinedSpace{constructor(e,n){super(e),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof qEe.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}f4.QueryInputSpace=zEe;var QEe=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]}),GEe=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),WEe=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)&&QEe(e,t,n);return GEe(e,t),e};Object.defineProperty(oo,"__esModule",{value:!0}),oo.ReduceFieldSpace=oo.QuerySpace=oo.QueryOperationSpace=void 0;const x4=WEe(oe),uO=bl,VEe=Ll,YEe=wr,XEe=ht,JEe=Zx,KEe=u1,ZEe=hr,eAe=f4;class Fq extends JEe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new eAe.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 ZEe.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();x4.isAtomicFieldType(l.dataType)&&x4.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=Fq;class Lq extends Fq{addRefineFromFields(e){var n;if(x4.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new VEe.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 KEe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof XEe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof YEe.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)&&!nAe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(x4.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,uO.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,uO.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,uO.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=Lq;class tAe extends Lq{constructor(){super(...arguments),this.segmentType="reduce"}}oo.ReduceFieldSpace=tAe;function nAe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(c4,"__esModule",{value:!0}),c4.ExprUngroup=void 0;const Iq=oe,rAe=oo,iAe=rn,sAe=xt;class oAe extends sAe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=iAe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,Iq.expressionIsAggregate)(n.expressionType))return this.expr.loggedErrorExpr("ungroup-of-non-aggregate",`${this.control}() expression must be an aggregate`);if((0,Iq.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 rAe.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`)}}c4.ExprUngroup=oAe;var d4={};Object.defineProperty(d4,"__esModule",{value:!0}),d4.ForRange=void 0;const $q=As,Bq=_i,kq=rn,h4=Xn,uAe=xt,p4=cd,Pq=Dl;class aAe extends uAe.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=[kq.FT.timestampT,kq.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,Bq.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,$q.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,$q.maxExpressionType)(i.expressionType,s.expressionType),value:(0,Bq.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,h4.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,h4.timeOffset)("date",i.value,"+",o.value,u),g=new p4.ExprTime("date",m);return new Pq.Range(p,g).apply(e,n,r)}const l=p4.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,h4.castDateToTimestamp)(f),c=new p4.ExprTime("timestamp",f,i.expressionType)}const x=(0,h4.timeOffset)("timestamp",f,"+",o.value,u),h=new p4.ExprTime("timestamp",x,i.expressionType);return new Pq.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.loggedErrorExpr("range-as-value","A Range is not a value")}}d4.ForRange=aAe;var Jn={};class kc extends Error{}class lAe extends kc{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class cAe extends kc{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class fAe extends kc{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class C1 extends kc{}class Mq extends kc{constructor(e){super(`Invalid unit ${e}`)}}class Ts extends kc{}class Il extends kc{constructor(){super("Zone is an abstract class")}}const Pe="numeric",uo="short",Zi="long",aO={year:Pe,month:Pe,day:Pe},jq={year:Pe,month:uo,day:Pe},xAe={year:Pe,month:uo,day:Pe,weekday:uo},Uq={year:Pe,month:Zi,day:Pe},qq={year:Pe,month:Zi,day:Pe,weekday:Zi},Hq={hour:Pe,minute:Pe},zq={hour:Pe,minute:Pe,second:Pe},Qq={hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},Gq={hour:Pe,minute:Pe,second:Pe,timeZoneName:Zi},Wq={hour:Pe,minute:Pe,hourCycle:"h23"},Vq={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23"},Yq={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:uo},Xq={hour:Pe,minute:Pe,second:Pe,hourCycle:"h23",timeZoneName:Zi},Jq={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe},Kq={year:Pe,month:Pe,day:Pe,hour:Pe,minute:Pe,second:Pe},Zq={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe},eH={year:Pe,month:uo,day:Pe,hour:Pe,minute:Pe,second:Pe},dAe={year:Pe,month:uo,day:Pe,weekday:uo,hour:Pe,minute:Pe},tH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,timeZoneName:uo},nH={year:Pe,month:Zi,day:Pe,hour:Pe,minute:Pe,second:Pe,timeZoneName:uo},rH={year:Pe,month:Zi,day:Pe,weekday:Zi,hour:Pe,minute:Pe,timeZoneName:Zi},iH={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 g4(t){return typeof t=="number"&&t%1===0}function hAe(t){return typeof t=="string"}function pAe(t){return Object.prototype.toString.call(t)==="[object Date]"}function sH(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function gAe(t){return Array.isArray(t)?t:[t]}function oH(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 mAe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function hd(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function ha(t,e,n){return g4(t)&&t>=e&&t<=n}function yAe(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 $l(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function Mc(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function lO(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function cO(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 T1(t){return b1(t)?366:365}function m4(t,e){const n=yAe(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 fO(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 y4(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 xO(t){return t>99?t:t>60?1900+t:2e3+t}function uH(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 E4(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 aH(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Ts(`Invalid unit value ${t}`);return e}function A4(t,e){const n={};for(const r in t)if(hd(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=aH(i)}return n}function R1(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 v4(t){return mAe(t,["hour","minute","second","millisecond"])}const lH=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,EAe=["January","February","March","April","May","June","July","August","September","October","November","December"],cH=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],AAe=["J","F","M","A","M","J","J","A","S","O","N","D"];function fH(t){switch(t){case"narrow":return[...AAe];case"short":return[...cH];case"long":return[...EAe];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 xH=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],dH=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],vAe=["M","T","W","T","F","S","S"];function hH(t){switch(t){case"narrow":return[...vAe];case"short":return[...dH];case"long":return[...xH];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const pH=["AM","PM"],SAe=["Before Christ","Anno Domini"],_Ae=["BC","AD"],CAe=["B","A"];function gH(t){switch(t){case"narrow":return[...CAe];case"short":return[..._Ae];case"long":return[...SAe];default:return null}}function bAe(t){return pH[t.hour<12?0:1]}function TAe(t,e){return hH(e)[t.weekday-1]}function RAe(t,e){return fH(e)[t.month-1]}function OAe(t,e){return gH(e)[t.year<0?0:1]}function DAe(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 mH(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const NAe={D:aO,DD:jq,DDD:Uq,DDDD:qq,t:Hq,tt:zq,ttt:Qq,tttt:Gq,T:Wq,TT:Vq,TTT:Yq,TTTT:Xq,f:Jq,ff:Zq,fff:tH,ffff:rH,F:Kq,FF:eH,FFF:nH,FFFF:iH};class Ti{static create(e,n={}){return new Ti(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 NAe[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?bAe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?RAe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?TAe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ti.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?OAe(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 mH(Ti.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=Ti.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 mH(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 pd=class{get type(){throw new Il}get name(){throw new Il}get ianaName(){return this.name}get isUniversal(){throw new Il}offsetName(e,n){throw new Il}formatOffset(e,n){throw new Il}offset(e){throw new Il}equals(e){throw new Il}get isValid(){throw new Il}},dO=null;class S4 extends pd{static get instance(){return dO===null&&(dO=new S4),dO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return uH(e,n,r)}formatOffset(e,n){return R1(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let _4={};function wAe(t){return _4[t]||(_4[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"})),_4[t]}const FAe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function LAe(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 IAe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=FAe[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let C4={};class uu extends pd{static create(e){return C4[e]||(C4[e]=new uu(e)),C4[e]}static resetCache(){C4={},_4={}}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 uH(e,n,r,this.name)}formatOffset(e,n){return R1(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=wAe(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?IAe(r,n):LAe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=fO({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 hO=null;class Lr extends pd{static get utcInstance(){return hO===null&&(hO=new Lr(0)),hO}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(E4(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${R1(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${R1(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return R1(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 yH extends pd{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 Bl(t,e){if(vt(t)||t===null)return e;if(t instanceof pd)return t;if(hAe(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 yH(t)}let EH=()=>Date.now(),AH="system",vH=null,SH=null,_H=null,CH;class Dn{static get now(){return EH}static set now(e){EH=e}static set defaultZone(e){AH=e}static get defaultZone(){return Bl(AH,S4.instance)}static get defaultLocale(){return vH}static set defaultLocale(e){vH=e}static get defaultNumberingSystem(){return SH}static set defaultNumberingSystem(e){SH=e}static get defaultOutputCalendar(){return _H}static set defaultOutputCalendar(e){_H=e}static get throwOnInvalid(){return CH}static set throwOnInvalid(e){CH=e}static resetCaches(){cn.resetCache(),uu.resetCache()}}let bH={};function $Ae(t,e={}){const n=JSON.stringify([t,e]);let r=bH[n];return r||(r=new Intl.ListFormat(t,e),bH[n]=r),r}let pO={};function gO(t,e={}){const n=JSON.stringify([t,e]);let r=pO[n];return r||(r=new Intl.DateTimeFormat(t,e),pO[n]=r),r}let mO={};function BAe(t,e={}){const n=JSON.stringify([t,e]);let r=mO[n];return r||(r=new Intl.NumberFormat(t,e),mO[n]=r),r}let yO={};function kAe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=yO[i];return s||(s=new Intl.RelativeTimeFormat(t,e),yO[i]=s),s}let O1=null;function PAe(){return O1||(O1=new Intl.DateTimeFormat().resolvedOptions().locale,O1)}function MAe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=gO(t).resolvedOptions()}catch{n=gO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function jAe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function UAe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function qAe(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 b4(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function HAe(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 zAe{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=BAe(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):cO(e,3);return On(n,this.padTo)}}}class QAe{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=gO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class GAe{constructor(e,n,r){this.opts={style:"long",...r},!n&&sH()&&(this.rtf=kAe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):DAe(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":PAe()),u=n||Dn.defaultNumberingSystem,a=r||Dn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){O1=null,pO={},mO={},yO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=MAe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=jAe(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=HAe(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 b4(this,e,r,fH,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=UAe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return b4(this,e,r,hH,()=>{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]=qAe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return b4(this,void 0,e,()=>pH,()=>{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 b4(this,e,n,gH,()=>{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 zAe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new QAe(e,this.intl,n)}relFormatter(e={}){return new GAe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return $Ae(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 gd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function md(...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 yd(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 TH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=$l(e[n+i]);return[r,null,n+i]}}const RH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,WAe=`(?:${RH.source}?(?:\\[(${lH.source})\\])?)?`,EO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,OH=RegExp(`${EO.source}${WAe}`),AO=RegExp(`(?:T${OH.source})?`),VAe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,YAe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,XAe=/(\d{4})-?(\d{3})/,JAe=TH("weekYear","weekNumber","weekDay"),KAe=TH("year","ordinal"),ZAe=/(\d{4})-(\d\d)-(\d\d)/,DH=RegExp(`${EO.source} ?(?:${RH.source}|(${lH.source}))?`),e4e=RegExp(`(?: ${DH.source})?`);function Ed(t,e,n){const r=t[e];return vt(r)?n:$l(r)}function t4e(t,e){return[{year:Ed(t,e),month:Ed(t,e+1,1),day:Ed(t,e+2,1)},null,e+3]}function Ad(t,e){return[{hours:Ed(t,e,0),minutes:Ed(t,e+1,0),seconds:Ed(t,e+2,0),milliseconds:lO(t[e+3])},null,e+4]}function D1(t,e){const n=!t[e]&&!t[e+1],r=E4(t[e+1],t[e+2]),i=n?null:Lr.instance(r);return[{},i,e+3]}function N1(t,e){const n=t[e]?uu.create(t[e]):null;return[{},n,e+1]}const n4e=RegExp(`^T?${EO.source}$`),r4e=/^-?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 i4e(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(lO(l),f)}]}const s4e={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 vO(t,e,n,r,i,s,o){const u={year:e.length===2?xO($l(e)):$l(e),month:cH.indexOf(n)+1,day:$l(r),hour:$l(i),minute:$l(s)};return o&&(u.second=$l(o)),t&&(u.weekday=t.length>3?xH.indexOf(t)+1:dH.indexOf(t)+1),u}const o4e=/^(?:(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 u4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=vO(e,i,r,n,s,o,u);let h;return a?h=s4e[a]:l?h=0:h=E4(c,f),[x,new Lr(h)]}function a4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const l4e=/^(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$/,c4e=/^(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$/,f4e=/^(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 NH(t){const[,e,n,r,i,s,o,u]=t;return[vO(e,i,r,n,s,o,u),Lr.utcInstance]}function x4e(t){const[,e,n,r,i,s,o,u]=t;return[vO(e,u,n,r,i,s,o),Lr.utcInstance]}const d4e=gd(VAe,AO),h4e=gd(YAe,AO),p4e=gd(XAe,AO),g4e=gd(OH),wH=md(t4e,Ad,D1,N1),m4e=md(JAe,Ad,D1,N1),y4e=md(KAe,Ad,D1,N1),E4e=md(Ad,D1,N1);function A4e(t){return yd(t,[d4e,wH],[h4e,m4e],[p4e,y4e],[g4e,E4e])}function v4e(t){return yd(a4e(t),[o4e,u4e])}function S4e(t){return yd(t,[l4e,NH],[c4e,NH],[f4e,x4e])}function _4e(t){return yd(t,[r4e,i4e])}const C4e=md(Ad);function b4e(t){return yd(t,[n4e,C4e])}const T4e=gd(ZAe,e4e),R4e=gd(DH),O4e=md(Ad,D1,N1);function D4e(t){return yd(t,[T4e,wH],[R4e,O4e])}const N4e="Invalid Duration",FH={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}},w4e={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},...FH},Rs=146097/400,vd=146097/4800,F4e={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:vd/7,days:vd,hours:vd*24,minutes:vd*24*60,seconds:vd*24*60*60,milliseconds:vd*24*60*60*1e3},...FH},jc=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],L4e=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 I4e(t){return t<0?Math.floor(t):Math.ceil(t)}function LH(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?I4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function $4e(t,e){L4e.reduce((n,r)=>vt(e[r])?n:(n&&LH(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?F4e:w4e,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 Ts(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:A4(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 Ts(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=_4e(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]=b4e(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 Ts("need to specify a reason the Duration is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new fAe(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 Mq(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?Ti.create(this.loc,r).formatDurationFromString(this,e):N4e}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+=cO(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)(hd(n.values,i)||hd(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]=aH(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,...A4(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 $4e(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)&&LH(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 w1="Invalid Interval";function B4e(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 Ts("need to specify a reason the Interval is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new cAe(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=$1(e),i=$1(n),s=B4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=$1(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=$1(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($1).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()})`:w1}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:w1}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:w1}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:w1}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:w1}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 F1=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 Bl(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:sH()}}};function IH(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 k4e(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=IH(u,a);return(l-l%7)/7}],["days",IH]],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 P4e(t,e,n,r){let[i,s,o,u]=k4e(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 SO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},$H={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]},M4e=SO.hanidec.replace(/[\[|\]]/g,"").split("");function j4e(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(SO.hanidec)!==-1)e+=M4e.indexOf(t[n]);else for(const i in $H){const[s,o]=$H[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function lo({numberingSystem:t},e=""){return new RegExp(`${SO[t||"latn"]}${e}`)}const U4e="missing Intl.DateTimeFormat.formatToParts support";function Ft(t,e=n=>n){return{regex:t,deser:([n])=>e(j4e(n))}}const BH="[  ]",kH=new RegExp(BH,"g");function q4e(t){return t.replace(/\./g,"\\.?").replace(kH,BH)}function PH(t){return t.replace(/\./g,"").replace(kH," ").toLowerCase()}function co(t,e){return t===null?null:{regex:RegExp(t.map(q4e).join("|")),deser:([n])=>t.findIndex(r=>PH(n)===PH(r))+e}}function MH(t,e){return{regex:t,deser:([,n,r])=>E4(n,r),groups:e}}function _O(t){return{regex:t,deser:([e])=>e}}function H4e(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function z4e(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(H4e(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,xO);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 _O(c);case"uu":return _O(u);case"uuu":return Ft(n);case"a":return co(e.meridiems(),0);case"kkkk":return Ft(s);case"kk":return Ft(f,xO);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 MH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return MH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return _O(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:U4e};return m.token=t,m}const Q4e={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 G4e(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Q4e[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function W4e(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function V4e(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(hd(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 Y4e(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=lO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let CO=null;function X4e(){return CO||(CO=st.fromMillis(1555555555555)),CO}function J4e(t,e){if(t.literal)return t;const n=Ti.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ti.create(e,n).formatDateTimeParts(X4e()).map(o=>G4e(o,e,n));return s.includes(void 0)?t:s}function K4e(t,e){return Array.prototype.concat(...t.map(n=>J4e(n,e)))}function jH(t,e,n){const r=K4e(Ti.parseFormat(n),t),i=r.map(o=>z4e(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=W4e(i),a=RegExp(o,"i"),[l,c]=V4e(e,a,u),[f,x,h]=c?Y4e(c):[null,null,void 0];if(hd(c,"a")&&hd(c,"H"))throw new C1("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 Z4e(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=jH(t,e,n);return[r,i,s,o]}const UH=[0,31,59,90,120,151,181,212,243,273,304,334],qH=[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 HH(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)?qH:UH)[e-1]}function QH(t,e){const n=b1(t)?qH:UH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function bO(t){const{year:e,month:n,day:r}=t,i=zH(e,n,r),s=HH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=y4(u)):o>y4(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...v4(t)}}function GH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=HH(e,1,4),s=T1(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=T1(u)):o>s?(u=e+1,o-=T1(e)):u=e;const{month:a,day:l}=QH(u,o);return{year:u,month:a,day:l,...v4(t)}}function TO(t){const{year:e,month:n,day:r}=t,i=zH(e,n,r);return{year:e,ordinal:i,...v4(t)}}function WH(t){const{year:e,ordinal:n}=t,{month:r,day:i}=QH(e,n);return{year:e,month:r,day:i,...v4(t)}}function eve(t){const e=g4(t.weekYear),n=ha(t.weekNumber,1,y4(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 tve(t){const e=g4(t.year),n=ha(t.ordinal,1,T1(t.year));return e?n?!1:Os("ordinal",t.ordinal):Os("year",t.year)}function VH(t){const e=g4(t.year),n=ha(t.month,1,12),r=ha(t.day,1,m4(t.year,t.month));return e?n?r?!1:Os("day",t.day):Os("month",t.month):Os("year",t.year)}function YH(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 RO="Invalid DateTime",XH=864e13;function T4(t){return new ao("unsupported zone",`the zone "${t.name}" is not supported`)}function OO(t){return t.weekData===null&&(t.weekData=bO(t.c)),t.weekData}function L1(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 JH(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 KH(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 R4(t,e,n){return JH(fO(t),e,n)}function ZH(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,m4(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=fO(s);let[a,l]=JH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function I1(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 O4(t,e,n=!0){return t.isValid?Ti.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function DO(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 ez(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 tz={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},nve={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},rve={ordinal:1,hour:0,minute:0,second:0,millisecond:0},nz=["year","month","day","hour","minute","second","millisecond"],ive=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],sve=["year","ordinal","hour","minute","second","millisecond"];function rz(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 Mq(t);return e}function iz(t,e){const n=Bl(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 nz)vt(t[l])&&(t[l]=tz[l]);const u=VH(t)||YH(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=R4(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function sz(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=cO(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 oz(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:T4(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=KH(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]=oz(arguments),[r,i,s,o,u,a,l]=n;return iz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=oz(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Lr.utcInstance,iz({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=pAe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=Bl(n.zone,Dn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:cn.fromObject(n)}):st.invalid(T4(i))}static fromMillis(e,n={}){if(Pc(e))return e<-XH||e>XH?st.invalid("Timestamp out of range"):new st({ts:e,zone:Bl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new Ts(`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:Bl(n.zone,Dn.defaultZone),loc:cn.fromObject(n)});throw new Ts("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Bl(n.zone,Dn.defaultZone);if(!r.isValid)return st.invalid(T4(r));const i=Dn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=A4(e,rz),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 C1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new C1("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=KH(i,s);h?(p=ive,m=nve,g=bO(g)):u?(p=sve,m=rve,g=TO(g)):(p=nz,m=tz);let y=!1;for(const b of p){const R=o[b];vt(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?eve(o):u?tve(o):VH(o),A=E||YH(o);if(A)return st.invalid(A);const v=h?GH(o):u?WH(o):o,[_,S]=R4(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]=A4e(e);return I1(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=v4e(e);return I1(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=S4e(e);return I1(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new Ts("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]=Z4e(o,e,n);return c?st.invalid(c):I1(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]=D4e(e);return I1(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Ts("need to specify a reason the DateTime is invalid");const r=e instanceof ao?e:new ao(e,n);if(Dn.throwOnInvalid)throw new lAe(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?OO(this).weekYear:NaN}get weekNumber(){return this.isValid?OO(this).weekNumber:NaN}get weekday(){return this.isValid?OO(this).weekday:NaN}get ordinal(){return this.isValid?TO(this.c).ordinal:NaN}get monthShort(){return this.isValid?F1.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?F1.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?F1.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?F1.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 m4(this.year,this.month)}get daysInYear(){return this.isValid?T1(this.year):NaN}get weeksInWeekYear(){return this.isValid?y4(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ti.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=Bl(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]=R4(o,s,e)}return L1(this,{ts:i,zone:e})}else return st.invalid(T4(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return L1(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=A4(e,rz),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 C1("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new C1("Can't mix ordinal dates with month/day");let l;r?l=GH({...bO(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(m4(l.year,l.month),l.day))):l=WH({...TO(this.c),...n});const[c,f]=R4(l,this.o,this.zone);return L1(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return L1(this,ZH(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return L1(this,ZH(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?Ti.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):RO}toLocaleString(e=aO,n={}){return this.isValid?Ti.create(this.loc.clone(n),e).formatDateTime(this):RO}toLocaleParts(e={}){return this.isValid?Ti.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=DO(this,o);return u+="T",u+=ez(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?DO(this,e==="extended"):null}toISOWeekDate(){return O4(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":"")+ez(this,o==="extended",n,e,r,s):null}toRFC2822(){return O4(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return O4(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?DO(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")),O4(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():RO}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=gAe(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=P4e(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),sz(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?sz(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 Ts("min requires all arguments be DateTimes");return oH(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new Ts("max requires all arguments be DateTimes");return oH(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 jH(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return aO}static get DATE_MED(){return jq}static get DATE_MED_WITH_WEEKDAY(){return xAe}static get DATE_FULL(){return Uq}static get DATE_HUGE(){return qq}static get TIME_SIMPLE(){return Hq}static get TIME_WITH_SECONDS(){return zq}static get TIME_WITH_SHORT_OFFSET(){return Qq}static get TIME_WITH_LONG_OFFSET(){return Gq}static get TIME_24_SIMPLE(){return Wq}static get TIME_24_WITH_SECONDS(){return Vq}static get TIME_24_WITH_SHORT_OFFSET(){return Yq}static get TIME_24_WITH_LONG_OFFSET(){return Xq}static get DATETIME_SHORT(){return Jq}static get DATETIME_SHORT_WITH_SECONDS(){return Kq}static get DATETIME_MED(){return Zq}static get DATETIME_MED_WITH_SECONDS(){return eH}static get DATETIME_MED_WITH_WEEKDAY(){return dAe}static get DATETIME_FULL(){return tH}static get DATETIME_FULL_WITH_SECONDS(){return nH}static get DATETIME_HUGE(){return rH}static get DATETIME_HUGE_WITH_SECONDS(){return iH}}function $1(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 Ts(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const uz=g$(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:Lr,IANAZone:uu,Info:F1,Interval:fn,InvalidZone:yH,Settings:Dn,SystemZone:S4,VERSION:"2.5.2",Zone:pd},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.LiteralYear=Jn.LiteralQuarter=Jn.LiteralMonth=Jn.LiteralWeek=Jn.LiteralDay=Jn.LiteralHour=Jn.LiteralTimestamp=Jn.TimeFormatError=void 0;const kl=uz,ove=oe,uve=Dl,az=cd,NO=xt;class ave extends Error{}Jn.TimeFormatError=ave;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 lz="yyyy",cz=`${lz}-LL`,Ds=`${cz}-dd`,fz=`${Ds} HH`,xz=`${fz}:mm`,wO=`${xz}:ss`;class dz extends NO.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 FO extends dz{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=kl.DateTime.fromFormat(e,wO);if(s.isValid)return new FO(r,n);if(s=kl.DateTime.fromFormat(e,xz),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(wO);return new LO(r,n,"timestamp",o)}}}Jn.LiteralTimestamp=FO;class LO extends dz{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,NO.getMorphicValue)(i,"timestamp"),a=(0,NO.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,ove.isTemporalField)(o.dataType)){const u=o.dataType;return new uve.Range(new az.ExprTime(u,i.value),new az.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class IO extends LO{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=kl.DateTime.fromFormat(n.text,fz);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(wO),new IO(n,r)}}Jn.LiteralHour=IO;class B1 extends LO{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 $O extends B1{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=kl.DateTime.fromFormat(n.text,Ds);if(i.isValid)return r=i.plus({day:1}).toFormat(Ds),new $O(n,r)}}Jn.LiteralDay=$O;class BO extends B1{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=kl.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 BO(n,r)}}}Jn.LiteralWeek=BO;class kO extends B1{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=kl.DateTime.fromFormat(n.text,cz);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new kO(n,r)}}}Jn.LiteralMonth=kO;class PO extends B1{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=kl.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 PO(n,r)}}}Jn.LiteralQuarter=PO;class MO extends B1{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=kl.DateTime.fromFormat(n.text,lz);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(Ds),r=s.toFormat(Ds),new MO(n,r)}}}Jn.LiteralYear=MO;var D4={};Object.defineProperty(D4,"__esModule",{value:!0}),D4.PartialCompare=void 0;const lve=xt;class cve extends lve.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")}}D4.PartialCompare=cve;var Sd={};Object.defineProperty(Sd,"__esModule",{value:!0}),Sd.PickWhen=Sd.Pick=void 0;const au=oe,_d=rn,fve=xt,xve=We;function N4(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class dve extends fve.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&&!_d.FT.typeEq(s,x,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:x.dataType,returnType:s.dataType});s=N4(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);return s=N4(s,l),_d.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(!_d.FT.typeEq(a.when,_d.FT.boolT))return this.loggedErrorExpr("pick-when-must-be-boolean",{whenType:a.when.dataType});if(i&&!_d.FT.typeEq(i,a.pick,!0))return this.loggedErrorExpr("pick-type-does-not-match",{pickType:a.pick.dataType,returnType:i.dataType});i=N4(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=N4(i,u),_d.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})}}Sd.Pick=dve;class hve extends xve.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Sd.PickWhen=hve;var Cd={};Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.RecordLiteral=Cd.RecordElement=void 0;const hz=As,pve=xt,gve=We;class mve extends gve.MalloyElement{constructor(e,n){super(),this.key=e,this.value=n,this.elementType="record element",this.has({value:n})}}Cd.RecordElement=mve;class yve extends pve.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,hz.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,hz.maxExpressionType)(s.expressionType,r)}return{dataType:"record",value:n,expressionType:r,evalSpace:"literal"}}}Cd.RecordLiteral=yve;var w4={};Object.defineProperty(w4,"__esModule",{value:!0}),w4.Timeframe=void 0;const Eve=oe,Ave=We;class vve extends Ave.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,Eve.isTimestampUnit)(n)?n:"second"}}w4.Timeframe=vve;var F4={};Object.defineProperty(F4,"__esModule",{value:!0}),F4.TopBy=void 0;const Sve=oe,pz=xt,_ve=We;class Cve extends _ve.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof pz.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof pz.ExpressionDef){const n=this.by.getExpression(e);return(0,Sve.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}}}F4.TopBy=Cve;var Pl={};Object.defineProperty(Pl,"__esModule",{value:!0}),Pl.ImportStatement=Pl.ImportSelect=Pl.ImportSourceName=void 0;const jO=We;class bve extends jO.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}Pl.ImportSourceName=bve;class Tve extends jO.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}Pl.ImportSelect=Tve;class Rve extends jO.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}'`)}}}Pl.ImportStatement=Rve;var k1={};Object.defineProperty(k1,"__esModule",{value:!0}),k1.ExtendBlock=void 0;const Ove=We,Dve=mn;class Nve extends Ove.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=Dve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}k1.ExtendBlock=Nve;var L4={};Object.defineProperty(L4,"__esModule",{value:!0}),L4.Argument=void 0;const wve=We;class Fve extends wve.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}L4.Argument=Fve;var I4={};Object.defineProperty(I4,"__esModule",{value:!0}),I4.HasParameter=void 0;const gz=oe,Lve=We;class Ive extends Lve.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,gz.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,gz.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"}}}I4.HasParameter=Ive;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.AnonymousQuery=void 0;const $ve=We,Bve=Nr;class kve extends $ve.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=Bve.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)}}$4.AnonymousQuery=kve;var Ml={};Object.defineProperty(Ml,"__esModule",{value:!0}),Ml.View=void 0;const Pve=We;let Mve=class extends Pve.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};Ml.View=Mve;var B4={};Object.defineProperty(B4,"__esModule",{value:!0}),B4.ViewArrow=void 0;const jve=hr,Uve=Ml;class qve extends Uve.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 jve.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()}}B4.ViewArrow=qve;var k4={},P1={};Object.defineProperty(P1,"__esModule",{value:!0}),P1.refine=void 0;const UO=As,qO=bl;function Hve(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,UO.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,UO.isQuerySegment)(o)&&(0,UO.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,qO.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,qO.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(qO.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}P1.refine=Hve,Object.defineProperty(k4,"__esModule",{value:!0}),k4.ViewRefine=void 0;const zve=Fr,Qve=Ji,Gve=P1,Wve=Ml;class Vve extends Wve.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,Qve.getFinalStruct)(this.refinement,e.structDef(),i):zve.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,Gve.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}k4.ViewRefine=Vve;var P4={};Object.defineProperty(P4,"__esModule",{value:!0}),P4.ReferenceView=void 0;const HO=oe,mz=Fr,Yve=Ji,Xve=wr,Jve=P1,Kve=Ml;class Zve extends Kve.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:mz.ErrorFactory.structDef,outputStruct:mz.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 Xve.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,HO.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},u=this.reference.nameString,a={...(0,HO.sourceBase)(e.structDef()),type:"query_result",name:u,fields:[s]};return{pipeline:[o],name:u,outputStruct:a}}else return(0,HO.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,Yve.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,Jve.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}P4.ReferenceView=Zve;var M4={},M1={},j4={},j1={};Object.defineProperty(j1,"__esModule",{value:!0}),j1.Index=void 0;const eSe=We,tSe=mn;let nSe=class extends eSe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=tSe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};j1.Index=nSe;var U1={};Object.defineProperty(U1,"__esModule",{value:!0}),U1.SampleProperty=void 0;const rSe=We,yz=mn;class iSe extends rSe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=yz.LegalRefinementStage.Tail,this.forceQueryClass=yz.QueryClass.Index}sampling(){return this.sample}}U1.SampleProperty=iSe;var U4={};Object.defineProperty(U4,"__esModule",{value:!0}),U4.IndexFieldSpace=void 0;const Ez=oe,zO=ht,sSe=wr,oSe=oo,uSe=E1,aSe=hr;class lSe extends oSe.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof zO.FieldReference?super.pushFields(n):n instanceof zO.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 uSe.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 aSe.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=zO.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,Ez.isAtomicFieldType)(f)&&f!=="record"&&f!=="array"&&(0,Ez.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)}}U4.IndexFieldSpace=lSe,Object.defineProperty(j4,"__esModule",{value:!0}),j4.IndexBuilder=void 0;const QO=oe,cSe=Fr,fSe=so,xSe=j1,dSe=Fl,hSe=U1,pSe=U4;class gSe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new pSe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof fSe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof dSe.Limit?(this.limit&&this.limit.logError("index-limit-already-specified","Ignored, too many limit: statements"),this.limit=e):e instanceof xSe.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 hSe.SampleProperty?this.sample=e.sampling():e.logError("illegal-operation-for-index","Not legal in an index query operation")}finalize(e){if(e&&!(0,QO.isIndexSegment)(e)&&!(0,QO.isPartialSegment)(e))return this.resultFS.logError("refinement-of-index-segment",`Can't refine index with ${e.type}`),cSe.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,QO.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}j4.IndexBuilder=gSe;var q4={},q1={};Object.defineProperty(q1,"__esModule",{value:!0}),q1.GroupBy=void 0;const mSe=Xi,Az=mn;class ySe extends mSe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=Az.LegalRefinementStage.Single,this.forceQueryClass=Az.QueryClass.Grouping}}q1.GroupBy=ySe;var H4={};Object.defineProperty(H4,"__esModule",{value:!0}),H4.ProjectFieldSpace=void 0;const GO=oe,ESe=oo;class ASe extends ESe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,GO.expressionIsAggregate)(e.expressionType)?!1:(0,GO.expressionInvolvesAggregate)(e.expressionType)&&(0,GO.expressionIsAnalytic)(e.expressionType)?(this.logError("aggregate-analytic-in-select","Cannot add aggregate analyics to select"),!1):!0}}H4.ProjectFieldSpace=ASe;var jl={},Hc={};Object.defineProperty(Hc,"__esModule",{value:!0}),Hc.Ordering=Hc.OrderBy=void 0;const vSe=oe,vz=Ll,Sz=We,SSe=mn;class _Se extends Sz.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof vz.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 vz.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,vSe.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=_Se;class CSe extends Sz.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=SSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Hc.Ordering=CSe;var H1={};Object.defineProperty(H1,"__esModule",{value:!0}),H1.Top=void 0;const _z=oe,bSe=Ll,TSe=We,RSe=mn;let OSe=class extends TSe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=RSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof bSe.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,_z.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,_z.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}}}};H1.Top=OSe,Object.defineProperty(jl,"__esModule",{value:!0}),jl.ReduceBuilder=jl.QuerySegmentBuilder=void 0;const Cz=oe,DSe=Fr,NSe=so,wSe=Fl,bz=Hc,Tz=H1,FSe=oo,LSe=Xi;class Rz{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof LSe.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof NSe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof Tz.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 wSe.Limit?this.limit?e.logError("limit-already-specified","Query operation already limited"):this.limit=e.limit:e instanceof bz.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 Tz.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof bz.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])}}jl.QuerySegmentBuilder=Rz;class ISe extends Rz{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new FSe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,Cz.isReduceSegment)(e)||(0,Cz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-reduce-refinement",`Can't refine reduce with ${e.type}`),DSe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}jl.ReduceBuilder=ISe,Object.defineProperty(q4,"__esModule",{value:!0}),q4.ProjectBuilder=void 0;const Oz=oe,$Se=Fr,BSe=q1,kSe=H4,PSe=jl;class MSe extends PSe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new kSe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof BSe.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,Oz.isProjectSegment)(e)||(0,Oz.isPartialSegment)(e))n=e;else return this.resultFS.logError("incompatible-segment-for-select-refinement",`Can't refine select with ${e.type}`),$Se.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}q4.ProjectBuilder=MSe;var z4={};Object.defineProperty(z4,"__esModule",{value:!0}),z4.PartialBuilder=void 0;const jSe=As,USe=jl;class qSe extends USe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,jSe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}z4.PartialBuilder=qSe,Object.defineProperty(M1,"__esModule",{value:!0}),M1.QOpDesc=void 0;const HSe=j4,zSe=q4,QSe=jl,GSe=We,WSe=Ji,VSe=hr,zc=mn,YSe=z4;class XSe extends GSe.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 QSe.ReduceBuilder(e,this.refineThis,n,r);case zc.QueryClass.Project:return new zSe.ProjectBuilder(e,this.refineThis,n,r);case zc.QueryClass.Index:return new HSe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new YSe.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 VSe.StaticSourceSpace((0,WSe.opOutputStruct)(this,e.structDef(),i))}}}M1.QOpDesc=XSe,Object.defineProperty(M4,"__esModule",{value:!0}),M4.QOpDescView=void 0;const JSe=oe,KSe=hr,Dz=M1,ZSe=Ji,WO=mn,e5e=Ml;class t5e extends e5e.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,JSe.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 Dz.QOpDesc([]),o=new Dz.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case WO.LegalRefinementStage.Head:s.push(u);break;case WO.LegalRefinementStage.Single:u.logError("illegal-multistage-refinement-operation","Illegal in refinement of a query with more than one stage");break;case WO.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,ZSe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new KSe.StaticSourceSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}M4.QOpDescView=t5e;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 Nz=oe,n5e=rn,r5e=ld,i5e=We,Qc=In,s5e=Nr,o5e=wr;class Ul extends i5e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=s5e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new VO(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,Nz.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,r5e.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 VO&&e.foundCircle)&&r.dataType!=="error"){const u=n5e.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 wz(e,this))}}xn.AtomicFieldDeclaration=Ul;class u5e extends Ul{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=u5e;class a5e extends Ul{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=a5e;class l5e extends Ul{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=l5e;class c5e extends Ul{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=c5e;class f5e extends Ul{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=f5e;class x5e extends Ul{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=x5e;class d5e extends Ul{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Qc.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=d5e;class VO{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=VO;class wz extends o5e.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,Nz.isAtomic)(e))return this.fieldTypeFromFieldDef(e);throw new Error(`Can't get typeDesc for ${e.type}`)}}xn.FieldDefinitionValue=wz;var Q4={};Object.defineProperty(Q4,"__esModule",{value:!0}),Q4.Aggregate=void 0;const h5e=Xi,Fz=mn;let p5e=class extends h5e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=Fz.LegalRefinementStage.Single,this.forceQueryClass=Fz.QueryClass.Grouping}};Q4.Aggregate=p5e;var G4={};Object.defineProperty(G4,"__esModule",{value:!0}),G4.Calculate=void 0;const g5e=Xi,m5e=mn;class y5e extends g5e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=m5e.LegalRefinementStage.Single}}G4.Calculate=y5e;var z1={};Object.defineProperty(z1,"__esModule",{value:!0}),z1.Dimensions=void 0;const E5e=Tl;class A5e extends E5e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}z1.Dimensions=A5e;var Q1={};Object.defineProperty(Q1,"__esModule",{value:!0}),Q1.Measures=void 0;const v5e=Tl;class S5e extends v5e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Q1.Measures=S5e;var W4={};Object.defineProperty(W4,"__esModule",{value:!0}),W4.Nests=void 0;const _5e=Xi,Lz=mn;class C5e extends _5e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=Lz.LegalRefinementStage.Single,this.forceQueryClass=Lz.QueryClass.Grouping}}W4.Nests=C5e;var V4={};Object.defineProperty(V4,"__esModule",{value:!0}),V4.ProjectStatement=void 0;const b5e=Xi,Iz=mn;class T5e extends b5e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=Iz.QueryClass.Project,this.queryRefinementStage=Iz.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}V4.ProjectStatement=T5e;var ql={},pa={};Object.defineProperty(pa,"__esModule",{value:!0}),pa.findReferences=pa.deprecatedParseTableURI=pa.constructTableKey=void 0;const R5e=al,YO=tn;function XO(t){const e=(0,YO.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,YO.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class O5e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=$z(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,YO.getId)(e.connectionId()),r=XO(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=XO(e.tableURI()),{connectionName:r,tablePath:i}=Bz(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=XO(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function $z(t,e){return t===void 0?e:`${t}:${e}`}pa.constructTableKey=$z;function Bz(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}pa.deprecatedParseTableURI=Bz;function D5e(t,e,n){const r=new O5e(t,e),i=r;return R5e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}pa.findReferences=D5e,Object.defineProperty(ql,"__esModule",{value:!0}),ql.TableFunctionSource=ql.TableMethodSource=ql.TableSource=void 0;const kz=pa,N5e=io,Pz=Fr;class JO extends N5e.Source{getSourceDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return Pz.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,kz.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),Pz.ErrorFactory.structDef}}ql.TableSource=JO;class w5e extends JO{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=w5e;class F5e extends JO{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,kz.deprecatedParseTableURI)(this.tableURI)}}ql.TableFunctionSource=F5e;var Y4={};Object.defineProperty(Y4,"__esModule",{value:!0}),Y4.SQLString=void 0;const L5e=We,Mz=su;class I5e extends L5e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter($5e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof Mz.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}}Y4.SQLString=I5e;function $5e(t){return t instanceof Mz.SourceQueryElement}var X4={};Object.defineProperty(X4,"__esModule",{value:!0}),X4.SourceDesc=void 0;const B5e=We;class k5e extends B5e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}X4.SourceDesc=k5e;var J4={};Object.defineProperty(J4,"__esModule",{value:!0}),J4.isSourceProperty=void 0;const P5e=so,M5e=Tl,j5e=nd,U5e=Ol,q5e=rd,H5e=id,z5e=sd,Q5e=Rl,G5e=Ci;function W5e(t){return t instanceof P5e.Filter||t instanceof G5e.JoinStatement||t instanceof M5e.DeclareFields||t instanceof j5e.FieldListEdit||t instanceof U5e.Renames||t instanceof q5e.PrimaryKey||t instanceof Q5e.ObjectAnnotation||t instanceof H5e.Views||t instanceof z5e.TimezoneStatement}J4.isSourceProperty=W5e;var K4={};Object.defineProperty(K4,"__esModule",{value:!0}),K4.isFieldCollectionMember=void 0;const V5e=xn,jz=ht;function Y5e(t){return t instanceof jz.FieldReference||t instanceof jz.WildcardFieldReference||t instanceof V5e.AtomicFieldDeclaration}K4.isFieldCollectionMember=Y5e;var Z4={};Object.defineProperty(Z4,"__esModule",{value:!0}),Z4.isQueryElement=void 0;const X5e=od,J5e=ud,K5e=d1,Z5e=h1;function e_e(t){return t instanceof X5e.QueryArrow||t instanceof J5e.QueryRefine||t instanceof K5e.QueryReference||t instanceof Z5e.QueryRaw}Z4.isQueryElement=e_e;var Uz={};Object.defineProperty(Uz,"__esModule",{value:!0});var ev={};Object.defineProperty(ev,"__esModule",{value:!0}),ev.isQueryProperty=void 0;function t_e(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}ev.isQueryProperty=t_e;var tv={};Object.defineProperty(tv,"__esModule",{value:!0}),tv.isQueryExtendProperty=void 0;const n_e=z1,r_e=Ci,i_e=Q1;function s_e(t){return t instanceof n_e.Dimensions||t instanceof i_e.Measures||t instanceof r_e.JoinStatement}tv.isQueryExtendProperty=s_e;var nv={};Object.defineProperty(nv,"__esModule",{value:!0}),nv.isFieldPropStatement=void 0;const o_e=Nl,u_e=so,a_e=Fl,l_e=dd;function c_e(t){return t instanceof u_e.Filter||t instanceof a_e.Limit||t instanceof l_e.PartitionBy||t instanceof o_e.FunctionOrdering}nv.isFieldPropStatement=c_e,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(n1,t),n(Jx,t),n(Kx,t),n(io,t),n(s1,t),n(su,t),n(RA,t),n(OA,t),n(FA,t),n(l1,t),n($A,t),n(nd,t),n(rd,t),n(Ol,t),n(id,t),n(sd,t),n(BA,t),n(fd,t),n(PA,t),n(Nl,t),n(MA,t),n(da,t),n(jA,t),n(xd,t),n(UA,t),n(qA,t),n(HA,t),n(g1,t),n(zA,t),n(QA,t),n(WA,t),n(v1,t),n(y1,t),n(Lc,t),n(VA,t),n(YA,t),n(JA,t),n(ZA,t),n(e4,t),n(t4,t),n(n4,t),n(r4,t),n(i4,t),n(s4,t),n(o4,t),n(u4,t),n(a4,t),n(l4,t),n(c4,t),n(d4,t),n(Jn,t),n(D4,t),n(dd,t),n(Sd,t),n(Cd,t),n(Dl,t),n(w4,t),n(F4,t),n(S1,t),n(Pl,t),n(k1,t),n(L4,t),n(I4,t),n($4,t),n(ud,t),n(od,t),n(Ml,t),n(B4,t),n(k4,t),n(P4,t),n(M4,t),n(xn,t),n(ht,t),n(Q4,t),n(G4,t),n(Tl,t),n(z1,t),n(k1,t),n(so,t),n(q1,t),n(j1,t),n(Ci,t),n(r1,t),n(Fl,t),n(Q1,t),n(n1,t),n(W4,t),n(Hc,t),n(V4,t),n(M1,t),n(U1,t),n(H1,t),n(ad,t),n(Fc,t),n(p1,t),n(ql,t),n(Y4,t),n(Rl,t),n(ou,t),n(X4,t),n(J4,t),n(xt,t),n(K4,t),n(Ll,t),n(We,t),n(Z4,t),n(Uz,t),n(ev,t),n(tv,t),n(nv,t)}(mA);var rv={},bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.ConstantExpression=bd.ConstantFieldSpace=void 0;const f_e=xt;class qz{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=qz;class x_e extends f_e.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 qz),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=x_e;var d_e=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]}),h_e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),p_e=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)&&d_e(e,t,n);return h_e(e,t),e};Object.defineProperty(rv,"__esModule",{value:!0}),rv.MalloyToAST=void 0;const Hz=pE,g_e=i2,Z=p_e(mA),KO=yA,m_e=Qn,y_e=mA,$n=tn,ZO=oe,E_e=ko,A_e=bd;class zz extends Z.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class e7 extends Z.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const v_e=["##! m4warnings=error"];class S_e extends g_e.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of v_e){const s=E_e.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,KO.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,KO.makeLogMessage)(n,r,{at:this.getLocation(e),...i}))}warnWithReplacement(e,n,r,i){this.msgLog.log((0,KO.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 e7||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 m_e.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 Hz.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 Hz.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 A_e.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")))}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,ZO.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,ZO.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,ZO.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 e7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"misplaced-model-annotation","Model annotations not allowed at this scope"),new e7(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 y_e.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)}}rv.MalloyToAST=S_e;var iv={};Object.defineProperty(iv,"__esModule",{value:!0}),iv.Zone=void 0;class __e{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})}}iv.Zone=__e;var sv={};Object.defineProperty(sv,"__esModule",{value:!0}),sv.walkForDocumentSymbols=void 0;const C_e=al,b_e=tn;class T_e{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,b_e.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 R_e(t,e,n){const r=new T_e(t,e,[],[]),i=r;return C_e.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}sv.walkForDocumentSymbols=R_e;var ov={};Object.defineProperty(ov,"__esModule",{value:!0}),ov.walkForDocumentCompletions=void 0;const O_e=al,D_e=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],N_e=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],w_e=["source","explore","query","sql"];class F_e{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 D_e)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 N_e)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 w_e)this.completions.push({type:"model_property",text:`${r}: `})}}}function L_e(t,e,n){const r=new F_e(t,[],n),i=r;return O_e.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}ov.walkForDocumentCompletions=L_e;var uv={};Object.defineProperty(uv,"__esModule",{value:!0}),uv.walkForDocumentHelpContext=void 0;const I_e=uT;class $_e extends I_e.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 B_e(t,e){return new $_e(e).visit(t)}uv.walkForDocumentHelpContext=B_e;var av={},G1={};Object.defineProperty(G1,"__esModule",{value:!0}),G1.locationContainsPosition=void 0;function k_e(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)}G1.locationContainsPosition=k_e,Object.defineProperty(av,"__esModule",{value:!0}),av.ReferenceList=void 0;const P_e=G1;class M_e{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,P_e.locationContainsPosition)(r.location,e))return r}}av.ReferenceList=M_e;var lv={};Object.defineProperty(lv,"__esModule",{value:!0}),lv.isNeedResponse=void 0;function j_e(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}lv.isNeedResponse=j_e;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.walkForModelAnnotation=void 0;const U_e=al;class q_e{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 H_e(t,e,n){const r=new q_e(t,e,n),i=r;return U_e.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}cv.walkForModelAnnotation=H_e;var fv={};Object.defineProperty(fv,"__esModule",{value:!0}),fv.walkForTablePath=void 0;const Qz=tn,z_e=al;class Q_e{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,Qz.getId)(e.connectionId()),[r,i]=(0,Qz.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function G_e(t,e,n){const r=new Q_e(t,e),i=r;return z_e.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}fv.walkForTablePath=G_e;var W_e=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]}),V_e=D&&D.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Y_e=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)&&W_e(e,t,n);return V_e(e,t),e};Object.defineProperty(Ko,"__esModule",{value:!0}),Ko.MalloyParserErrorHandler=Ko.MalloyTranslator=Ko.MalloyChildTranslator=Ko.MalloyTranslation=void 0;const Gz=pE,X_e=oe,J_e=wE,K_e=F,Wz=Y_e(mA),Z_e=rv,t7=yA,eCe=pa,n7=iv,tCe=sv,nCe=ov,rCe=uv,iCe=av,xv=lv,sCe=G1,Vz=ko,oCe=cv,uCe=fv;class aCe extends J_e.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class lCe{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===""?`
1303
1303
  `: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=Gz.CharStreams.fromString(e),i=new aCe(r),s=new Gz.CommonTokenStream(i),o=new K_e.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new Xz(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 cCe{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,eCe.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,xv.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,xv.isNeedResponse)(u))return u}return null}}class fCe{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 Z_e.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 Wz.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,xv.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class xCe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,tCe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class dCe{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,nCe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class hCe{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,rCe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class pCe{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,oCe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class gCe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,uCe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class mCe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=Vz.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,xv.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof Wz.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 r7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new Vz.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new lCe,this.modelAnnotationStep=new pCe(this.parseStep),this.metadataStep=new xCe(this.parseStep),this.completionsStep=new dCe(this.parseStep),this.helpContextStep=new hCe(this.parseStep),this.importsAndTablesStep=new cCe(this.parseStep),this.astStep=new fCe(this.importsAndTablesStep),this.tablePathInfoStep=new gCe(this.parseStep),this.translateStep=new mCe(this.astStep),this.references=new iCe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new Yz(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}
1304
1304
  | ${l}`,u>0&&(i=i+`
1305
1305
  | ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}