@malloydata/render 0.0.183-dev240916205710 → 0.0.183

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.
@@ -1297,7 +1297,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1297
1297
  `+o.map(u=>u.stringify("",n+4)).join(`
1298
1298
  `)+`
1299
1299
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof lu)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 this.log(`INTERNAL ERROR IN TRANSLATION: ${e}`),new Error(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.log(`Experimental flag '${e}' is not set, feature not available`),!1)}}Ge.MalloyElement=lu;class Hpe extends lu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ge.Unimplemented=Hpe;class pO extends lu{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}}Ge.ModelEntryReference=pO;class Qpe extends lu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ge.ExperimentalExperiment=Qpe;function hq(t){return t.execute!==void 0}Ge.isDocStatement=hq;function Gpe(t){return t instanceof jp||hq(t)}Ge.isDocStatementOrDocStatementList=Gpe;class pq extends lu{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}}}Ge.ListOf=pq;class jp extends pq{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=dq.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,dq.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof jp){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}}}Ge.DocStatementList=jp;const Wpe="5a79a191-06bc-43cf-9b12-58741cd82970";function gq(t){const e=t.inherits?gq(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 Vpe(t){const e=gq(t).join("");return(0,zpe.v5)(e,Wpe)}class gO extends lu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new qpe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new jpe.Tag({}),this.modelAnnotationTodoList=[],this.dialectNameSpaces=new Map,this.statements=new jp(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(i.type==="struct"||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=Vpe(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(r.type==="struct"||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}`,declaredSQLBlock:!0};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.log(`Cannot redefine '${e}', which is in global namespace`),n.entry.type==="struct"&&this.checkExperimentalDialect(this,n.entry.dialect),this.documentModel[e]=n}checkExperimentalDialect(e,n){const r=this.translator();r&&r.firstReferenceToDialect(n)&&(0,xq.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}getDialectNamespace(e){if(this.dialectNameSpaces.has(e))return this.dialectNameSpaces.get(e);const n=(0,xq.getDialect)(e),r=new Upe.DialectNameSpace(n);return this.dialectNameSpaces.set(e,r),r}}Ge.Document=gO;var av={},_d={},Br={},jl={};Object.defineProperty(jl,"__esModule",{value:!0}),jl.canMakeEntry=jl.SpaceEntry=void 0;class Ype{}jl.SpaceEntry=Ype;function Xpe(t){return"makeEntry"in t}jl.canMakeEntry=Xpe,Object.defineProperty(Br,"__esModule",{value:!0}),Br.SpaceField=void 0;const Kpe=ce,Jpe=jl;class Zpe extends Jpe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,Kpe.isFieldTypeDef)(e)&&e.expressionType&&(n.expressionType=e.expressionType),n.dataType==="sql native"&&e.type==="sql native"&&e.rawType&&(n.rawType=e.rawType),n}getQueryFieldDef(e){}fieldDef(){}}Br.SpaceField=Zpe,Object.defineProperty(_d,"__esModule",{value:!0}),_d.ViewField=void 0;const ege=Br;class tge extends ege.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}_d.ViewField=tge,Object.defineProperty(av,"__esModule",{value:!0}),av.ASTViewField=void 0;const nge=_d;class rge extends nge.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)}}av.ASTViewField=rge,Object.defineProperty(Bp,"__esModule",{value:!0}),Bp.ViewFieldDeclaration=void 0;const ige=Ge,sge=Ir,oge=Ed,uge=av;class age extends ige.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=sge.extendNoteMethod}makeEntry(e){const n=new uge.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,oge.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}Bp.ViewFieldDeclaration=age;var En={};Object.defineProperty(En,"__esModule",{value:!0}),En.LegalRefinementStage=En.QueryClass=void 0;var mq;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(mq||(En.QueryClass=mq={}));var yq;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(yq||(En.LegalRefinementStage=yq={})),Object.defineProperty(Ip,"__esModule",{value:!0}),Ip.NestFieldDeclaration=void 0;const lge=Ed,cge=Bp,Eq=En;class fge extends cge.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Eq.LegalRefinementStage.Single,this.forceQueryClass=Eq.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,lge.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")}}Ip.NestFieldDeclaration=fge;var Cd={},$r={};Object.defineProperty($r,"__esModule",{value:!0}),$r.ErrorFactory=void 0;const Aq={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class mO{static get structDef(){return{...Aq}}static isErrorStructDef(e){return e.name.includes(Aq.name)}static get query(){return{structRef:mO.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}$r.ErrorFactory=mO,Object.defineProperty(Cd,"__esModule",{value:!0}),Cd.DefineSourceList=Cd.DefineSource=void 0;const xge=$r,vq=Ge,dge=Ir;class hge extends vq.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=dge.extendNoteMethod,n&&this.has({sourceExpr:n}),i&&this.has({parameters:i})}execute(e){var n;if(e.modelEntry(this.name))this.log(`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),xge.ErrorFactory.isErrorStructDef(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.log(`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.log(`Illegal shadowing of field \`${r.name}\` by parameter with the same name`)}}Cd.DefineSource=hge;class pge extends vq.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Cd.DefineSourceList=pge;var bd={};Object.defineProperty(bd,"__esModule",{value:!0}),bd.DefineQueryList=bd.DefineQuery=void 0;const Sq=Ge,gge=Ir;class mge extends Sq.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=gge.extendNoteMethod}execute(e){if(e.getEntry(this.name)){this.log(`'${this.name}' is already defined, cannot redefine`);return}const r=this.queryExpr.getQuery();if(!r){this.queryExpr.sqLog("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})}}bd.DefineQuery=mge;class yge extends Sq.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}bd.DefineQueryList=yge;var uo={};Object.defineProperty(uo,"__esModule",{value:!0}),uo.Source=void 0;const Ege=Ge;class Age extends Ege.MalloyElement{structRef(e){return{structRef:this.structDef(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.structDef(e),parameters:this.packParameters(n)}}}uo.Source=Age;var Up={},Td={},lv={},Ul={};Object.defineProperty(Ul,"__esModule",{value:!0}),Ul.mergeFields=Ul.nameFromDef=void 0;function yO(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}Ul.nameFromDef=yO;function vge(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>yO(i))),r=t.filter(i=>!n.has(yO(i)));return r.push(...e),r}Ul.mergeFields=vge;var qp={},kr={},cu={};Object.defineProperty(cu,"__esModule",{value:!0}),cu.DefinedParameter=cu.AbstractParameter=cu.SpaceParam=void 0;const Sge=jl;class EO extends Sge.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}cu.SpaceParam=EO;class _ge extends EO{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"}}}cu.AbstractParameter=_ge;class Cge extends EO{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}cu.DefinedParameter=Cge;var Jc={};Object.defineProperty(Jc,"__esModule",{value:!0}),Jc.StructSpaceFieldBase=void 0;const bge=Br;class Tge extends bge.SpaceField{constructor(e){super(),this.sourceDef=e}get structRelationship(){return this.sourceDef.structRelationship}fieldDef(){return this.sourceDef}typeDesc(){return{dataType:"struct",expressionType:"scalar",evalSpace:"input"}}}Jc.StructSpaceFieldBase=Tge;var zp={};Object.defineProperty(zp,"__esModule",{value:!0}),zp.ColumnSpaceField=void 0;const Rge=Br;class Oge extends Rge.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}zp.ColumnSpaceField=Oge;var cv={};Object.defineProperty(cv,"__esModule",{value:!0}),cv.IRViewField=void 0;const Dge=_d;class Nge extends Dge.ViewField{constructor(e,n){super(e),this.turtleDef=n,this.haveFieldDef=n}rename(e){this.turtleDef={...this.turtleDef,as:e}}fieldDef(){return this.turtleDef}getQueryFieldDef(e){return this.fieldDef()}}cv.IRViewField=Nge,Object.defineProperty(kr,"__esModule",{value:!0}),kr.StructSpaceField=kr.StaticSpace=void 0;const wge=zo,Fge=ce,Lge=cu,Ige=Br,fv=Jc,Bge=zp,$ge=cv;class _q{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,wge.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new Cq(e):(0,Fge.isTurtleDef)(e)?new $ge.IRViewField(this,e):new Bge.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(this.fromStruct.parameters)for(const[e,n]of Object.entries(this.fromStruct.parameters))e in this.memoMap||(this.memoMap[e]=new Lge.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(){return{...this.fromStruct,fields:[],parameters:{}}}lookup(e){const n=e[0],r=e.slice(1),i=this.entry(n.refString);if(!i)return{error:`'${n}' is not defined`,found:i};if(i instanceof Ige.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof fv.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof fv.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof fv.StructSpaceFieldBase){const o=i.fieldSpace.lookup(r);return o.found?{...o,relationship:[...s,...o.relationship]}:o}return{error:`'${n}' cannot contain a '${r[0]}'`,found:void 0}}return{found:i,error:void 0,relationship:s,isOutputField:!1}}isQueryFieldSpace(){return!1}}kr.StaticSpace=_q;class Cq extends fv.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new _q(this.sourceDef)}}kr.StructSpaceField=Cq,Object.defineProperty(qp,"__esModule",{value:!0}),qp.JoinSpaceField=void 0;const kge=kr;class Pge extends kge.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}qp.JoinSpaceField=Pge;var Hp={};Object.defineProperty(Hp,"__esModule",{value:!0}),Hp.SpaceSeed=void 0;const Mge=kr;function bq(t){return t.type==="fieldSpace"}class jge{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return bq(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return bq(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new Mge.StaticSpace(this.spaceSpec)),this.asFS)}}Hp.SpaceSeed=jge;var Rd={};Object.defineProperty(Rd,"__esModule",{value:!0}),Rd.ParameterSpace=void 0;const Uge=cu;class qge{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new Uge.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:"Invalid reference",found:void 0};const r=this.entry(n.refString);return r===void 0?{error:`\`${n}\` is not defined`,found:void 0}:e.length>1?{error:`\`${n}\` cannot contain a \`${e.slice(1).join(".")}\``,found:void 0}:{found:r,error:void 0,relationship:[],isOutputField:!1}}entries(){return Object.entries(this._map)}dialectObj(){}isQueryFieldSpace(){return!1}}Rd.ParameterSpace=qge,Object.defineProperty(lv,"__esModule",{value:!0}),lv.DynamicSpace=void 0;const zge=Ul,Hge=$r,Qge=Br,Gge=qp,Wge=_d,Tq=cu,Vge=Hp,Yge=kr,Xge=Jc,Kge=Rd;class Jge extends Yge.StaticSpace{constructor(e){const n=new Vge.SpaceSeed(e);super(structuredClone(n.structDef)),this.completions=[],this.complete=!1,this.parameters=[],this.final=void 0,this.source=n}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 Tq.AbstractParameter(n)));return this}parameterSpace(){return new Kge.ParameterSpace(this.parameters)}newEntry(e,n,r){if(this.entry(e)){n.log(`Cannot redefine '${e}'`);return}this.setEntry(e,r)}renameEntry(e,n,r){this.dropEntry(e),this.setEntry(n,r)}addFieldDef(e){this.setEntry((0,zge.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 Tq.SpaceParam&&(e[a]=l.parameter());this.final={...this.fromStruct,fields:[],parameters:e};const n=[],r=[],i=[],s=[];for(const[a,l]of this.entries())l instanceof Xge.StructSpaceFieldBase?r.push([a,l]):l instanceof Wge.ViewField?i.push([a,l]):l instanceof Qge.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof Gge.JoinSpaceField){const l=a.join.structDef(u);Hge.ErrorFactory.isErrorStructDef(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&&(this.final.queryTimezone=this.newTimezone),this.isComplete(),this.final}}lv.DynamicSpace=Jge,Object.defineProperty(Td,"__esModule",{value:!0}),Td.RefinedSpace=void 0;const Zge=lv,eme=jl;class AO extends Zge.DynamicSpace{static filteredFrom(e,n,r){const i=new AO(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.log(`Illegal \`${n.edit}:\` of parameter`):u.log(`\`${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,eme.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}Td.RefinedSpace=AO;var ql={},Zi={};Object.defineProperty(Zi,"__esModule",{value:!0}),Zi.DefinitionList=void 0;const tme=Ge,Rq=Ir;class nme extends tme.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,Rq.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,Rq.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Zi.DefinitionList=nme,Object.defineProperty(ql,"__esModule",{value:!0}),ql.DeclareFields=void 0;const rme=Zi,ime=En;class sme extends rme.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=ime.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ql.DeclareFields=sme;var ao={};Object.defineProperty(ao,"__esModule",{value:!0}),ao.Filter=ao.FilterElement=void 0;const Oq=ce,Dq=Ge,vO=En;class ome extends Dq.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.log("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}}}ao.FilterElement=ome;let ume=class extends Dq.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=vO.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?vO.LegalRefinementStage.Tail:vO.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,Oq.expressionIsAggregate)(i.expressionType),o=(0,Oq.expressionIsAnalytic)(i.expressionType);if(this.havingClause){if(o){r.log("Analytic expressions are not allowed in `having:`");continue}}else if(o){r.log("Analytic expressions are not allowed in `where:`");continue}else s&&r.log("Aggregate expressions are not allowed in `where:`; use `having:`")}n.push(i)}return n}};ao.Filter=ume;var Ri={};Object.defineProperty(Ri,"__esModule",{value:!0}),Ri.Joins=Ri.ExpressionJoin=Ri.KeyJoin=Ri.Join=void 0;const ame=ce,lme=qp,cme=Zi,fme=Ge,xme=Ir,dme=En,Nq=$r;class SO extends fme.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=xme.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new lme.JoinSpaceField(e.parameterSpace(),this))}getStructDefFromExpr(e){const n=this.sourceExpr.getSource();return n?n.structDef(e):(this.sourceExpr.sqLog("Cannot great a source to join from"),Nq.ErrorFactory.structDef)}}Ri.Join=SO;class hme extends SO{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),i={...r,structRelationship:{type:"one",matrixOperation:"left",onExpression:{node:"error",message:"('join fixup'='not done yet')"}},location:this.location};return r.structSource.type==="query"?i.name=this.name.refString:i.as=this.name.refString,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(n.primaryKey){const i=n.fields.find(s=>(s.as||s.name)===n.primaryKey);if(i)if(i.type===r.dataType){n.structRelationship={type:"one",matrixOperation:"left",onExpression:{node:"=",kids:{left:{node:"field",path:[this.name.refString,n.primaryKey]},right:r.value}}};return}else this.log(`join_one: with type mismatch with primary key: ${r.dataType}/${i.type}`);else this.log(`join_one: Primary key '${i}' not found in source`)}else this.log("join_one: Cannot use with unless source has a primary key")}}Ri.KeyJoin=hme;class pme extends SO{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.log("join conditions must be boolean expressions");return}const i=n.structRelationship;(0,ame.isJoinOn)(i)&&(i.onExpression=r.value)}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Nq.ErrorFactory.structDef;const i=r.structDef(e);let s="left";this.inExperiment("join_types",!0)&&(s=this.matrixOperation);const o={...i,structRelationship:{type:this.joinType,matrixOperation:s},location:this.location};return i.structSource.type==="query"?(o.name=this.name.refString,delete o.as):o.as=this.name.refString,this.note&&(o.annotation=this.note),(n=this.document())===null||n===void 0||n.rememberToAddModelAnnotations(o),o}}Ri.ExpressionJoin=pme;class gme extends cme.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=dme.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Ri.Joins=gme;var Od={};Object.defineProperty(Od,"__esModule",{value:!0}),Od.FieldListEdit=void 0;const mme=Ge;class yme extends mme.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}Od.FieldListEdit=yme;var Dd={};Object.defineProperty(Dd,"__esModule",{value:!0}),Dd.PrimaryKey=void 0;const Eme=Ge;class Ame extends Eme.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}Dd.PrimaryKey=Ame;var Nd={};Object.defineProperty(Nd,"__esModule",{value:!0}),Nd.Views=void 0;const vme=Zi;class Sme extends vme.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}Nd.Views=Sme;var wd={};Object.defineProperty(wd,"__esModule",{value:!0}),wd.TimezoneStatement=void 0;const _me=Ge;class Cme extends _me.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)}}wd.TimezoneStatement=Cme;var zl={};Object.defineProperty(zl,"__esModule",{value:!0}),zl.ModelAnnotation=zl.ObjectAnnotation=void 0;const bme=_a,Tme=Ge;class wq extends Tme.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}zl.ObjectAnnotation=wq;class Rme extends wq{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=bme.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)}}zl.ModelAnnotation=Rme;var Hl={},xv={};Object.defineProperty(xv,"__esModule",{value:!0}),xv.RenameSpaceField=void 0;const Ome=Br;class Dme extends Ome.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()}}xv.RenameSpaceField=Dme,Object.defineProperty(Hl,"__esModule",{value:!0}),Hl.Renames=Hl.RenameField=void 0;const Nme=xv,Fq=Ge,wme=Br;class Fme extends Fq.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.log("Can't rename field to itself");return}const n=this.oldName.getField(e);n.found?n.found instanceof wme.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Nme.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}Hl.RenameField=Fme;class Lme extends Fq.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}Hl.Renames=Lme,Object.defineProperty(Up,"__esModule",{value:!0}),Up.RefinedSource=void 0;const Ime=ce,Bme=Td,$me=ql,kme=ao,Pme=Ri,Mme=Od,jme=Dd,Ume=Nd,qme=uo,zme=wd,Hme=zl,Qme=Hl,Gme=Rd;class Wme extends qme.Source{constructor(e,n){super({source:e,refinement:n}),this.source=e,this.refinement=n,this.elementType="refinedSource"}structDef(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 Hme.ObjectAnnotation)continue;const g=m;m instanceof jme.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof Mme.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof $me.DeclareFields||m instanceof Pme.Joins||m instanceof Ume.Views||m instanceof Qme.Renames?o.push(...m.list):m instanceof kme.Filter?u.push(m):m instanceof zme.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new Gme.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=Bme.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.log(m.error)}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,Ime.expressionIsCalculation)(y.expressionType)?g.log("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)}}Up.RefinedSource=Wme;var fu={};Object.defineProperty(fu,"__esModule",{value:!0}),fu.SourceQueryElement=void 0;const Vme=Ge;class _O extends Vme.MalloyElement{constructor(){super(...arguments),this.errored=!1}getSource(){}getQuery(){}isSource(){return!1}sqLog(e){this.isErrorFree()&&this.log(e),this.errored=!0}isErrorFree(){if(this.errored)return!1;let e=!0;for(const n of this.walk())if(n instanceof _O&&n.errored){e=!1;break}return e}}fu.SourceQueryElement=_O;var dv={},Zc={};Object.defineProperty(Zc,"__esModule",{value:!0}),Zc.QuerySource=void 0;const Yme=uo;class Xme extends Yme.Source{constructor(e){super({query:e}),this.query=e,this.elementType="querySource"}structDef(e){return this.withParameters(e,void 0)}withParameters(e,n){var r;const i=this.query.queryComp(!1),s={...i.outputStruct,structSource:{type:"query",query:i.query}};return(r=this.document())===null||r===void 0||r.rememberToAddModelAnnotations(s),{...s,parameters:this.packParameters(n)}}}Zc.QuerySource=Xme;var Fd={},Qp={};Object.defineProperty(Qp,"__esModule",{value:!0}),Qp.QueryBase=void 0;const Kme=Ed,Jme=Ge;class Zme extends Jme.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,Kme.detectAndRemovePartialStages)(e.pipeline,this)}}}Qp.QueryBase=Zme,Object.defineProperty(Fd,"__esModule",{value:!0}),Fd.QueryArrow=void 0;const e3e=ce,t3e=uo,Lq=kr,n3e=Qp;class r3e extends n3e.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 t3e.Source){const l=e?this.source.structRef(void 0):{structRef:this.source.structDef(void 0)};r={type:"query",...l,pipeline:[],location:this.location},n=(0,e3e.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Lq.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Lq.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}}}Fd.QueryArrow=r3e,Object.defineProperty(dv,"__esModule",{value:!0}),dv.SQArrow=void 0;const i3e=fu,s3e=Zc,o3e=Fd;class u3e extends i3e.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("Could not get LHS of arrow operation");return}const n=new o3e.QueryArrow(e,this.operation);return this.has({query:n}),n}getSource(){const e=this.getQuery();if(!e){this.sqLog("Couldn't comprehend query well enough to make a source");return}const n=new s3e.QuerySource(e);return this.has({asSource:n}),n}}dv.SQArrow=u3e;var hv={},Ld={},es={};Object.defineProperty(es,"__esModule",{value:!0}),es.getStructFieldDef=es.getFinalStruct=es.opOutputStruct=void 0;const a3e=_l,l3e=pc,CO=ce,Iq=$r;function Bq(t,e,n){const r=Iq.ErrorFactory.isErrorStructDef(e)||(0,CO.structHasErrors)(e);(0,CO.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,CO.segmentHasErrors)(n);if(!r&&!i)try{return l3e.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1300
- QUERY: ${(0,a3e.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Iq.ErrorFactory.structDef,dialect:e.dialect}}es.opOutputStruct=Bq;function c3e(t,e,n){for(const r of n)e=Bq(t,e,r);return e}es.getFinalStruct=c3e;function f3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}es.getStructFieldDef=f3e,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.QueryRefine=void 0;const x3e=kr,d3e=es,h3e=Qp;class p3e extends h3e.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 x3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,d3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ld.QueryRefine=p3e;var Gp={},Id={},Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.timeResult=Kn.resolution=Kn.castDateToTimestamp=Kn.castTimestampToDate=Kn.castTo=Kn.timeOffset=void 0;const g3e=ce;function m3e(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Kn.timeOffset=m3e;function y3e(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,g3e.isAtomicFieldType)(n)&&(i.srcType=n),i}Kn.castTo=y3e;function E3e(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Kn.castTimestampToDate=E3e;function A3e(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Kn.castDateToTimestamp=A3e;function v3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Kn.resolution=v3e;function S3e(t,e){return e?{...t,timeframe:e}:t}Kn.timeResult=S3e;var ef={},Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.errorFor=void 0;function _3e(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}Jn.errorFor=_3e;var dt={},sn={};Object.defineProperty(sn,"__esModule",{value:!0}),sn.FT=void 0;const C3e=Ho;function tf(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class mr{static in(e,n){return e?n.find(i=>mr.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=>mr.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,C3e.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}sn.FT=mr,mr.nullT=tf("null"),mr.numberT=tf("number"),mr.stringT=tf("string"),mr.dateT=tf("date"),mr.timestampT=tf("timestamp"),mr.boolT=tf("boolean"),mr.anyAtomicT=[mr.numberT,mr.stringT,mr.dateT,mr.timestampT,mr.boolT],mr.aggregateBoolT=tf("boolean","aggregate");var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.isGranularResult=void 0;function b3e(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}Bd.isGranularResult=b3e;var xu={};Object.defineProperty(xu,"__esModule",{value:!0}),xu.isComparison=xu.isEquality=xu.getExprNode=void 0;function T3e(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}xu.getExprNode=T3e;function $q(t){return t==="="||t==="!="||t==="~"||t==="!~"}xu.isEquality=$q;function R3e(t){return $q(t)||t===">="||t==="<="||t===">"||t==="<"}xu.isComparison=R3e,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,$d=Jn,nf=sn,pv=Kn,kq=Bd,O3e=Ge,Wp=xu;class D3e extends Error{}class Pq extends O3e.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=nf.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!nf.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${nf.FT.inspect(n)}`),!1):!0}apply(e,n,r){return qq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=Pq;class bO extends Pq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[nf.FT.timestampT,nf.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!nf.FT.typeEq(s,nf.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,$d.errorFor)("illegal unit expression");let o;if((0,kq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,pv.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,pv.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,pv.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,pv.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,$d.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=bO;function Mq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function N3e(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=N3e;function jq(t,e,n,r){const i=(0,An.isTimeFieldType)(e.dataType),s=(0,An.isTimeFieldType)(r.dataType),o=(0,Wp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=Mq(e,"timestamp"),a=Mq(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.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function w3e(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 F3e(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 L3e(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,Wp.getExprNode)(n),a=Vp("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=Yp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=jq(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"){const f=w3e(s,o);if(f===void 0)throw new D3e("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=F3e(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function I3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Vp("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=Yp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=jq(e,i,n,s)||{node:(0,Wp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Uq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Vp("number",i,s);if(o)return o;const u=Yp(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`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,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,$d.errorFor)("numbers required")}function B3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Yp(e,i,r,s);if(o)return o;const u=(0,An.isTimeFieldType)(i.dataType),a=Vp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,kq.isGranularResult)(i))l=new bO(r,i.timeframe);else if(i.dataType==="date")l=new bO(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,$d.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return Uq(t,e,n,r)}function qq(t,e,n,r){if((0,Wp.isEquality)(n))return L3e(t,e,n,r);if((0,Wp.isComparison)(n))return I3e(t,e,n,r);if(n==="+"||n==="-")return B3e(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=Yp(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=Vp("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,$d.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,$d.errorFor)("applybinary bad operator")}dt.applyBinary=qq;function Vp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Yp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(ef,"__esModule",{value:!0}),ef.ExprIdReference=void 0;const $3e=ce,k3e=Jn,P3e=dt;class M3e extends P3e.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,$3e.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,k3e.errorFor)(n.error)}}ef.ExprIdReference=M3e,Object.defineProperty(Id,"__esModule",{value:!0}),Id.NamedSource=void 0;const TO=ce,j3e=uo,U3e=$r,q3e=Kn,RO=Ge,z3e=ef,H3e=Rd;class Q3e extends j3e.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 RO.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof RO.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof RO.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,TO.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}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 z3e.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new H3e.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,TO.isCastType)(f.type)&&(p=(0,q3e.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,TO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLog(`Argument not provided for required parameter \`${a}\``));return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=U3e.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}}Id.NamedSource=Q3e;var Xp={},gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.QueryHeadStruct=void 0;const G3e=ce,W3e=uo,V3e=Id;class Y3e extends W3e.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,G3e.refIsStructDef)(this.fromRef))return this.fromRef;const n=new V3e.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}gv.QueryHeadStruct=Y3e,Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.QueryReference=void 0;const OO=$r,X3e=Ge,K3e=gv,J3e=ce,Z3e=es;class eye extends X3e.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:OO.ErrorFactory.structDef,outputStruct:OO.ErrorFactory.structDef,query:OO.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new K3e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Z3e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,J3e.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Xp.QueryReference=eye,Object.defineProperty(Gp,"__esModule",{value:!0}),Gp.SQReference=void 0;const tye=fu,nye=Zc,rye=Id,zq=Xp;class iye extends tye.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 zq.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new zq.QueryReference(this.ref);this.asSource=new nye.QuerySource(n)}else if(e.type==="struct")this.asSource=new rye.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Gp.SQReference=iye,Object.defineProperty(hv,"__esModule",{value:!0}),hv.SQRefine=void 0;const sye=fu,oye=Zc,uye=Ld,aye=Gp;class lye extends sye.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 aye.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new uye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new oye.QuerySource(e);return this.has({queryAsSource:n}),n}}}hv.SQRefine=lye;var mv={},Kp={};Object.defineProperty(Kp,"__esModule",{value:!0}),Kp.QueryRaw=void 0;const cye=ce,fye=Ge;class xye extends fye.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.structDef(void 0)},r=(0,cye.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}Kp.QueryRaw=xye;var Jp={},yv={};Object.defineProperty(yv,"__esModule",{value:!0}),yv.makeSQLBlock=void 0;const dye=ce,hye=Lt;function pye(t,e){const n={name:`md5:/${e||"$default"}//${gye(t)}`,select:t};return e&&(n.connection=e),n}yv.makeSQLBlock=pye;function gye(t){const e=t.map(n=>(0,dye.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,hye.generateHash)(e.join(";"))}Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.SQLSource=void 0;const mye=yv,yye=uo,Ev=$r;class Eye extends yye.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,mye.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}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.log(`${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.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("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)}structDef(){var e;if(!this.validateConnectionName())return Ev.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),Ev.ErrorFactory.structDef;const r=this.sqlBlock();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.log("Invalid SQL, "+s.join(`
1300
+ QUERY: ${(0,a3e.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Iq.ErrorFactory.structDef,dialect:e.dialect}}es.opOutputStruct=Bq;function c3e(t,e,n){for(const r of n)e=Bq(t,e,r);return e}es.getFinalStruct=c3e;function f3e(t,e){return t.fields.find(n=>(n.as||n.name)===e)}es.getStructFieldDef=f3e,Object.defineProperty(Ld,"__esModule",{value:!0}),Ld.QueryRefine=void 0;const x3e=kr,d3e=es,h3e=Qp;class p3e extends h3e.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 x3e.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,d3e.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}Ld.QueryRefine=p3e;var Gp={},Id={},Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.timeResult=Kn.resolution=Kn.castDateToTimestamp=Kn.castTimestampToDate=Kn.castTo=Kn.timeOffset=void 0;const g3e=ce;function m3e(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}Kn.timeOffset=m3e;function y3e(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,g3e.isAtomicFieldType)(n)&&(i.srcType=n),i}Kn.castTo=y3e;function E3e(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}Kn.castTimestampToDate=E3e;function A3e(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}Kn.castDateToTimestamp=A3e;function v3e(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Kn.resolution=v3e;function S3e(t,e){return e?{...t,timeframe:e}:t}Kn.timeResult=S3e;var ef={},Jn={};Object.defineProperty(Jn,"__esModule",{value:!0}),Jn.errorFor=void 0;function _3e(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}Jn.errorFor=_3e;var dt={},sn={};Object.defineProperty(sn,"__esModule",{value:!0}),sn.FT=void 0;const C3e=Ho;function tf(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class mr{static in(e,n){return e?n.find(i=>mr.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=>mr.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,C3e.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}sn.FT=mr,mr.nullT=tf("null"),mr.numberT=tf("number"),mr.stringT=tf("string"),mr.dateT=tf("date"),mr.timestampT=tf("timestamp"),mr.boolT=tf("boolean"),mr.anyAtomicT=[mr.numberT,mr.stringT,mr.dateT,mr.timestampT,mr.boolT],mr.aggregateBoolT=tf("boolean","aggregate");var Bd={};Object.defineProperty(Bd,"__esModule",{value:!0}),Bd.isGranularResult=void 0;function b3e(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}Bd.isGranularResult=b3e;var xu={};Object.defineProperty(xu,"__esModule",{value:!0}),xu.isComparison=xu.isEquality=xu.getExprNode=void 0;function T3e(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}xu.getExprNode=T3e;function $q(t){return t==="="||t==="!="||t==="~"||t==="!~"}xu.isEquality=$q;function R3e(t){return $q(t)||t===">="||t==="<="||t===">"||t==="<"}xu.isComparison=R3e,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const An=ce,$d=Jn,nf=sn,pv=Kn,kq=Bd,O3e=Ge,Wp=xu;class D3e extends Error{}class Pq extends O3e.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=nf.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!nf.FT.in(n,this.legalChildTypes)?(e.log(n.dataType==="sql native"?`'${this.elementType}' Can't be used with unsupported SQL native type '${n.rawType}'[unsupported-sql-native-type-not-allowed-in-expression]`:`'${this.elementType}' Can't use type ${nf.FT.inspect(n)}`),!1):!0}apply(e,n,r){return qq(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,An.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=Pq;class bO extends Pq{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[nf.FT.timestampT,nf.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,An.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!nf.FT.typeEq(s,nf.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,$d.errorFor)("illegal unit expression");let o;if((0,kq.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,pv.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,pv.timeResult)({dataType:"timestamp",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,An.isDateUnit)(this.timeframe)?(0,pv.timeResult)({dataType:"date",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,pv.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,$d.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:{node:"error",message:"Duration is not a value"},evalSpace:"constant"}}}dt.ExprDuration=bO;function Mq(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function N3e(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=N3e;function jq(t,e,n,r){const i=(0,An.isTimeFieldType)(e.dataType),s=(0,An.isTimeFieldType)(r.dataType),o=(0,Wp.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=Mq(e,"timestamp"),a=Mq(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.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),{node:"false"}}function w3e(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 F3e(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 L3e(t,e,n,r){var i;const s=e.getExpression(t),o=r.getExpression(t),u=(0,Wp.getExprNode)(n),a=Vp("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=Yp(e,s,r,o);if(h)return{...h,dataType:"boolean"}}}let c=jq(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=w3e(s,o);if(f)n[0]==="!"&&(f={node:"not",e:{...f}});else throw new D3e("Incompatible types for match('~') operator");c=f}break}case"=":case"!=":{c=(i=F3e(s,n,o))!==null&&i!==void 0?i:c;break}}return{dataType:"boolean",expressionType:(0,An.maxExpressionType)(s.expressionType,o.expressionType),evalSpace:(0,An.mergeEvalSpaces)(s.evalSpace,o.evalSpace),value:c}}function I3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Vp("boolean",i,s);if(o)return o;const u=(0,An.maxExpressionType)(i.expressionType,s.expressionType),a=Yp(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=jq(e,i,n,s)||{node:(0,Wp.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function Uq(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Vp("number",i,s);if(o)return o;const u=Yp(e,i,r,s);if(u)return u;const a=(0,An.maxExpressionType)(i.expressionType,s.expressionType);if(i.dataType!=="number")e.log(`The '${n}' operator requires a number, not a '${i.dataType}'`);else if(s.dataType!=="number")r.log(`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,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,$d.errorFor)("numbers required")}function B3e(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Yp(e,i,r,s);if(o)return o;const u=(0,An.isTimeFieldType)(i.dataType),a=Vp(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,kq.isGranularResult)(i))l=new bO(r,i.timeframe);else if(i.dataType==="date")l=new bO(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,$d.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return Uq(t,e,n,r)}function qq(t,e,n,r){if((0,Wp.isEquality)(n))return L3e(t,e,n,r);if((0,Wp.isComparison)(n))return I3e(t,e,n,r);if(n==="+"||n==="-")return B3e(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=Yp(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=Vp("number",i,s);if(u)return u;if(i.dataType!=="number")e.log("Numerator must be a number");else if(s.dataType!=="number")r.log("Denominator must be a number");else{const a={node:n,kids:{left:i.value,right:s.value}};return{dataType:"number",expressionType:(0,An.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,An.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,$d.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,$d.errorFor)("applybinary bad operator")}dt.applyBinary=qq;function Vp(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,An.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,An.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Yp(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,An.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,An.mergeEvalSpaces)(e.evalSpace,r.evalSpace)};if(e.dataType==="sql native")return t.log(`Unsupported SQL native type '${e.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i.dataType=r.dataType,i;if(r.dataType==="sql native")return n.log(`Unsupported SQL native type '${r.rawType}' not allowed in expression[unsupported-sql-native-type-not-allowed-in-expression]`),i}Object.defineProperty(ef,"__esModule",{value:!0}),ef.ExprIdReference=void 0;const $3e=ce,k3e=Jn,P3e=dt;class M3e extends P3e.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,$3e.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,k3e.errorFor)(n.error)}}ef.ExprIdReference=M3e,Object.defineProperty(Id,"__esModule",{value:!0}),Id.NamedSource=void 0;const TO=ce,j3e=uo,U3e=$r,q3e=Kn,RO=Ge,z3e=ef,H3e=Rd;class Q3e extends j3e.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 RO.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof RO.ModelEntryReference?this.ref.name:this.ref}structRef(e){const n=this.modelEntry(this.ref);return n&&!n.exported?{structRef:this.structDef(e)}:{structRef:this.refName,sourceArguments:this.evaluateArgumentsForRef(e)}}refLog(e,n){typeof this.ref=="string"?this.log(e,n):this.ref.log(e,n)}modelStruct(){var e;const n=this.modelEntry(this.ref),r=n==null?void 0:n.entry;if(!r){const i=`Undefined source '${this.refName}'`;(this.ref instanceof RO.ModelEntryReference?this.ref:this).log(i);return}if(r.type==="query"){this.log(`Cannot construct a source from a query '${this.refName}'`);return}else if(r.type==="function"){this.log(`Cannot construct a source from a function '${this.refName}'`);return}else if(r.type==="connection"){this.log(`Cannot construct a source from a connection '${this.refName}'`);return}else if((0,TO.isSQLBlockStruct)(r)&&r.declaredSQLBlock){this.log(`Must use 'from_sql()' for sql source '${this.refName}'`);return}else(e=this.document())===null||e===void 0||e.checkExperimentalDialect(this,r.dialect);return{...r}}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 z3e.ExprIdReference?a.value.fieldReference:void 0;if(l===void 0){a.value.log("Parameterized source arguments must be named with `parameter_name is`");continue}const c=l.outputName;if(u.has(c)){a.log(`Cannot pass argument for \`${c}\` more than once`);continue}u.add(c);const f=(n??{})[c];if(!f)l.log(`\`${this.refName}\` has no declared parameter named \`${l.refString}\``);else{const x=e??new H3e.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,TO.isCastType)(f.type)&&(p=(0,q3e.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,TO.paramHasValue)(n[a])?o[a]={...n[a]}:this.refLog(`Argument not provided for required parameter \`${a}\``));return o}structDef(e){return this.withParameters(e,[])}withParameters(e,n){var r;const i=this.modelStruct();if(!i){const a=U3e.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}}Id.NamedSource=Q3e;var Xp={},gv={};Object.defineProperty(gv,"__esModule",{value:!0}),gv.QueryHeadStruct=void 0;const G3e=ce,W3e=uo,V3e=Id;class Y3e extends W3e.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,G3e.refIsStructDef)(this.fromRef))return this.fromRef;const n=new V3e.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}gv.QueryHeadStruct=Y3e,Object.defineProperty(Xp,"__esModule",{value:!0}),Xp.QueryReference=void 0;const OO=$r,X3e=Ge,K3e=gv,J3e=ce,Z3e=es;class eye extends X3e.MalloyElement{constructor(e){super(),this.name=e,this.elementType="query-reference"}queryComp(e){const n=this.modelEntry(this.name),r=n==null?void 0:n.entry,i=function(){return{inputStruct:OO.ErrorFactory.structDef,outputStruct:OO.ErrorFactory.structDef,query:OO.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new K3e.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Z3e.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,J3e.refIsStructDef)(r.structRef)?r:{...r,structRef:o},outputStruct:u,inputStruct:o}}return this.log(`Illegal reference to '${this.name}', query expected`),i()}query(){return this.queryComp(!0).query}}Xp.QueryReference=eye,Object.defineProperty(Gp,"__esModule",{value:!0}),Gp.SQReference=void 0;const tye=fu,nye=Zc,rye=Id,zq=Xp;class iye extends tye.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 zq.QueryReference(this.ref);return this.has({query:n}),n}else this.sqLog(`Illegal reference to '${e.as||e.name}', query expected`);else this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0}isSource(){var e;return((e=this.ref.getNamed())===null||e===void 0?void 0:e.type)==="struct"}getSource(){if(this.asSource)return this.asSource;const e=this.ref.getNamed();if(!e){this.ref.log(`Reference to undefined object '${this.ref.refString}'`),this.errored=!0;return}if(e.type==="query"){this.args!==void 0&&this.ref.log("Arguments cannot be passed to queries");const n=new zq.QueryReference(this.ref);this.asSource=new nye.QuerySource(n)}else if(e.type==="struct")this.asSource=new rye.NamedSource(this.ref,void 0,this.args);else{this.sqLog(`Expected '${this.ref.refString}' to be of type query or source, not '${e.type}'`);return}return this.has({asSource:this.asSource}),this.asSource}}Gp.SQReference=iye,Object.defineProperty(hv,"__esModule",{value:!0}),hv.SQRefine=void 0;const sye=fu,oye=Zc,uye=Ld,aye=Gp;class lye extends sye.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 aye.SQReference?this.sqLog(`Cannot add view refinements to '${this.toRefine.ref.refString}' because it is a source`):this.sqLog("Cannot add view refinements to a source");return}const e=this.toRefine.getQuery();if(e){const n=new uye.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new oye.QuerySource(e);return this.has({queryAsSource:n}),n}}}hv.SQRefine=lye;var mv={},Kp={};Object.defineProperty(Kp,"__esModule",{value:!0}),Kp.QueryRaw=void 0;const cye=ce,fye=Ge;class xye extends fye.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.structDef(void 0)},r=(0,cye.refIsStructDef)(n.structRef)?n.structRef:this.source.structDef(void 0);return{query:{type:"query",...n,pipeline:[{type:"raw",fields:[]}],location:this.location},outputStruct:r,inputStruct:r}}query(){return this.queryComp(!0).query}}Kp.QueryRaw=xye;var Jp={},yv={};Object.defineProperty(yv,"__esModule",{value:!0}),yv.makeSQLBlock=void 0;const dye=ce,hye=Lt;function pye(t,e){const n={name:`md5:/${e||"$default"}//${gye(t)}`,select:t};return e&&(n.connection=e),n}yv.makeSQLBlock=pye;function gye(t){const e=t.map(n=>(0,dye.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,hye.generateHash)(e.join(";"))}Object.defineProperty(Jp,"__esModule",{value:!0}),Jp.SQLSource=void 0;const mye=yv,yye=uo,Ev=$r;class Eye extends yye.Source{constructor(e,n){super({connectionName:e,select:n}),this.connectionName=e,this.select=n,this.elementType="sqlSource",this.connectionNameInvalid=!1}sqlBlock(){return this.requestBlock||(this.requestBlock=(0,mye.makeSQLBlock)(this.select.sqlPhrases(),this.connectionName.refString)),this.requestBlock}structRef(){return{structRef:this.structDef()}}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.log(`${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.sqlBlock(),s=(n=this.translator())===null||n===void 0?void 0:n.root.sqlQueryZone;if(!s){this.log("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)}structDef(){var e;if(!this.validateConnectionName())return Ev.ErrorFactory.structDef;const n=(e=this.translator())===null||e===void 0?void 0:e.root.sqlQueryZone;if(!n)return this.log("Cant't look up schema for sql block"),Ev.ErrorFactory.structDef;const r=this.sqlBlock();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.log("Invalid SQL, "+s.join(`
1301
1301
  `)),Ev.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.log("`connection_name.sql(...)` can currently only be used in top level source/query definitions"),Ev.ErrorFactory.structDef}}Jp.SQLSource=Eye,Object.defineProperty(mv,"__esModule",{value:!0}),mv.SQSource=void 0;const Aye=fu,vye=Kp,Sye=Jp;class _ye extends Aye.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 Sye.SQLSource){const e=new vye.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}mv.SQSource=_ye;var Av={};Object.defineProperty(Av,"__esModule",{value:!0}),Av.SQExtend=void 0;const Cye=Up,bye=fu;class Tye extends bye.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 Cye.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}Av.SQExtend=Tye;var vv={},Zp={},eg={};Object.defineProperty(eg,"__esModule",{value:!0}),eg.BinaryBoolean=void 0;const Hq=ce,Rye=Jn,Oye=sn,Dye=xu,Nye=dt;class wye extends Nye.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=[Oye.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,Hq.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,Hq.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,Dye.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,Rye.errorFor)("logial required boolean")}}eg.BinaryBoolean=wye,Object.defineProperty(Zp,"__esModule",{value:!0}),Zp.ExprCompare=void 0;const Gt=sn,Fye=eg,Lye={"~":[Gt.FT.stringT],"!~":[Gt.FT.stringT],"<":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],"<=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],"=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],"!=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],">=":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT],">":[Gt.FT.numberT,Gt.FT.stringT,Gt.FT.dateT,Gt.FT.timestampT]};class Iye extends Fye.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=Lye[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Zp.ExprCompare=Iye;var tg={},kd={};Object.defineProperty(kd,"__esModule",{value:!0}),kd.ExprTime=void 0;const Bye=ce,$ye=dt;class DO extends $ye.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,Bye.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new DO(e,r,n.expressionType)}}kd.ExprTime=DO;var Ql={};Object.defineProperty(Ql,"__esModule",{value:!0}),Ql.Range=void 0;const Qq=ce,kye=Jn,Pye=dt;class Mye extends Pye.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,Qq.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,Qq.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.log("A Range is not a value"),(0,kye.errorFor)("a range is not a value")}}Ql.Range=Mye,Object.defineProperty(tg,"__esModule",{value:!0}),tg.ExprGranularTime=void 0;const Gq=ce,jye=Jn,Wq=sn,Vq=Kn,Uye=dt,Sv=kd,Yq=Ql;class qye extends Uye.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[Wq.FT.timestampT,Wq.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Gq.isTimeFieldType)(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.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Gq.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,jye.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=Sv.ExprTime.fromValue("timestamp",n),a=new Sv.ExprTime("timestamp",(0,Vq.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new Yq.Range(u,a)}const i=new Sv.ExprTime("date",n.value,n.expressionType),s=(0,Vq.timeOffset)("date",n.value,"+",r,this.units),o=new Sv.ExprTime("date",s,n.expressionType);return new Yq.Range(i,o)}}tg.ExprGranularTime=qye,Object.defineProperty(vv,"__esModule",{value:!0}),vv.Apply=void 0;const zye=Zp,Hye=Bd,Xq=tg;class Qye extends zye.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,Hye.isGranularResult)(r)&&(n=new Xq.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof Xq.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}vv.Apply=Qye;var Pd={};Object.defineProperty(Pd,"__esModule",{value:!0}),Pd.BinaryNumeric=void 0;const Gye=sn,Wye=dt;class Vye extends Wye.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=[Gye.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Pd.BinaryNumeric=Vye;var _v={};Object.defineProperty(_v,"__esModule",{value:!0}),_v.Boolean=void 0;const Yye=dt,Xye=sn;let Kye=class extends Yye.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...Xye.FT.boolT,value:{node:this.value}}}};_v.Boolean=Kye;var Gl={};Object.defineProperty(Gl,"__esModule",{value:!0}),Gl.FunctionOrdering=Gl.FunctionOrderBy=void 0;const NO=ce,Kq=Ge,Jye=ef;class Zye extends Kq.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.log("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,NO.expressionIsAggregate)(n.expressionType)||((0,NO.expressionIsScalar)(n.expressionType)?(!(this.field instanceof Jye.ExprIdReference)||n.evalSpace==="input")&&this.field.log("analytic `order_by` must be an aggregate or an output field reference"):this.field.log("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,NO.expressionIsScalar)(r.expressionType)||this.field.log("aggregate `order_by` must be scalar"),n||this.field.log("`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.log("field or order direction must be specified"),{node:"functionDefaultOrderBy",dir:"asc"}):{node:"functionDefaultOrderBy",dir:this.dir}}}Gl.FunctionOrderBy=Zye;class eEe extends Kq.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))}}Gl.FunctionOrdering=eEe;var Cv={};Object.defineProperty(Cv,"__esModule",{value:!0}),Cv.ExprAddSub=void 0;const tEe=Pd;class nEe extends tEe.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}Cv.ExprAddSub=nEe;var ba={},pt={},ng={};Object.defineProperty(ng,"__esModule",{value:!0}),ng.ReferenceField=void 0;const Jq=Br;class rEe extends Jq.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.log(r.error);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 Jq.SpaceField&&o.haveFieldDef){const u=o.haveFieldDef,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"}}}ng.ReferenceField=rEe;var $n={};Object.defineProperty($n,"__esModule",{value:!0}),$n.typecheckGroupBy=$n.typecheckAggregate=$n.typecheckCalculate=$n.typecheckDeclare=$n.typecheckMeasure=$n.typecheckDimension=$n.typecheckIndex=$n.typecheckProject=void 0;const vn=Ho;function iEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a select operation, did you mean to use ${n} operation instead?`)}}$n.typecheckProject=iEe;function sEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${n} field in an index operation`)}}$n.typecheckIndex=sEe;function oEe(t,e){if(!(0,vn.expressionIsScalar)(t.expressionType))if((0,vn.expressionIsAggregate)(t.expressionType))e.log("Cannot use an aggregate field in a dimension declaration, did you mean to use a measure declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a dimension declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}$n.typecheckDimension=oEe;function uEe(t,e){if(!(0,vn.expressionIsAggregate)(t.expressionType))if((0,vn.expressionIsScalar)(t.expressionType))e.log("Cannot use a scalar field in a measure declaration, did you mean to use a dimension declaration instead?");else if((0,vn.expressionIsAnalytic)(t.expressionType))e.log("Cannot use an analytic field in a measure declaration");else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`)}$n.typecheckMeasure=uEe;function aEe(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,vn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}$n.typecheckDeclare=aEe;function lEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a calculate operation, did you mean to use ${n} operation instead?`)}}$n.typecheckCalculate=lEe;function cEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,vn.expressionIsScalar)(t.expressionType))n="a group_by or select",r="a scalar";else throw new Error(`Unexpected expression type ${t} not handled here`);e.log(`Cannot use ${r} field in an aggregate operation, did you mean to use ${n} operation instead?`)}}$n.typecheckAggregate=cEe;function fEe(t,e){if(t.dataType==="turtle"||!(0,vn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,vn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,vn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else throw new Error(`Unexpected expression type ${t.expressionType} not handled here`);e.log(`Cannot use ${r} field in a group_by operation, did you mean to use ${n} operation instead?`)}}$n.typecheckGroupBy=fEe,Object.defineProperty(pt,"__esModule",{value:!0}),pt.FieldReferences=pt.WildcardFieldReference=pt.ViewOrScalarFieldReference=pt.DimensionFieldReference=pt.MeasureFieldReference=pt.DeclareFieldReference=pt.ProjectFieldReference=pt.GroupByFieldReference=pt.AggregateFieldReference=pt.IndexFieldReference=pt.CalculateFieldReference=pt.ParameterFieldReference=pt.PartitionByFieldReference=pt.ExpressionFieldReference=pt.AcceptExceptFieldReference=pt.FieldReference=void 0;const xEe=ng,dEe=Zi,Zq=Ge,ez=Ir,Wl=$n;class Oi extends Zq.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=ez.extendNoteMethod}makeEntry(e){const n=this.outputName;if(e.entry(n))this.log(`Output already has a field named '${n}'`);else{const r=e.isQueryFieldSpace()?e.inputSpace():e;e.newEntry(n,this,new xEe.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}}pt.FieldReference=Oi;class hEe extends Oi{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}pt.AcceptExceptFieldReference=hEe;class pEe extends Oi{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}pt.ExpressionFieldReference=pEe;class gEe extends Oi{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}pt.PartitionByFieldReference=gEe;class mEe extends Oi{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}pt.ParameterFieldReference=mEe;class yEe extends Oi{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,Wl.typecheckCalculate)(e,this)}}pt.CalculateFieldReference=yEe;class wO extends Oi{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 wO.indexOutputName(this.path)}}pt.IndexFieldReference=wO;class EEe extends Oi{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,Wl.typecheckAggregate)(e,this)}}pt.AggregateFieldReference=EEe;class AEe extends Oi{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,Wl.typecheckGroupBy)(e,this)}}pt.GroupByFieldReference=AEe;class vEe extends Oi{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,Wl.typecheckProject)(e,this)}}pt.ProjectFieldReference=vEe;class SEe extends Oi{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,Wl.typecheckDeclare)(e,this)}}pt.DeclareFieldReference=SEe;class _Ee extends Oi{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,Wl.typecheckMeasure)(e,this)}}pt.MeasureFieldReference=_Ee;class CEe extends Oi{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,Wl.typecheckDimension)(e,this)}}pt.DimensionFieldReference=CEe;class bEe extends Oi{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}pt.ViewOrScalarFieldReference=bEe;class TEe extends Zq.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=ez.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}.*`:"*"}}pt.WildcardFieldReference=TEe;class REe extends dEe.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}pt.FieldReferences=REe,Object.defineProperty(ba,"__esModule",{value:!0}),ba.ExprAggregateFunction=void 0;const tz=ce,OEe=Lt,rg=Jn,DEe=kr,NEe=Jc,wEe=sn,FEe=pt,LEe=dt,IEe=Br,BEe=ef;class $Ee extends LEe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[wEe.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;const i=e.isQueryFieldSpace()?e.inputSpace():e;let s=this.expr,o=(n=this.expr)===null||n===void 0?void 0:n.getExpression(i),u=(r=this.source)===null||r===void 0?void 0:r.path,a=[];if(this.source){const c=this.source.getField(i);if(c.found){a=c.relationship;const f=c.found,x=f.typeDesc();if((0,tz.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:x.evalSpace==="output"?{node:"outputField",name:this.source.refString}:{node:"field",path:this.source.path},evalSpace:x.evalSpace},u=this.source.path;const h=this.getJoinUsage(i);(h.length===1||h.length>1&&h.slice(1).every(m=>kEe(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof NEe.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,rg.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,rg.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,rg.errorFor)("agggregate without expression");if((0,tz.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,rg.errorFor)("reagggregate");if(!(o.dataType==="error")){const c=this.getJoinUsage(i),f=this.source!==void 0||this.explicitSource;if(s&&!(!this.source&&c.every(h=>h.length===0))&&!this.isSymmetricFunction()){const h=LO(a,c),p=IO(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=PEe(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={node:"aggregate",function:this.func,e:o.value};return u&&u.length>0&&(c.structPath=u),{dataType:this.returns(o),expressionType:"aggregate",value:c,evalSpace:"output"}}return(0,rg.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(...FO(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...FO(e,r))}return n}}ba.ExprAggregateFunction=$Ee;function kEe(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 FO(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 DEe.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof IEe.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,relationship:[]};throw new Error("No field def")}else throw new Error("expected a field def or struct")};for(const i of(0,OEe.exprWalk)(e))if(i.node==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=FO(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.node==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([]);return n}function LO(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 IO(t,e){for(const n of e)for(const r of n){if(r.structRelationship.type==="cross")return`Cannot compute \`${t}\` across \`join_cross\` relationship \`${r.name}\``;if(r.structRelationship.type==="many"&&!r.reverse)return`Cannot compute \`${t}\` across \`join_many\` relationship \`${r.name}\``;if(r.structRelationship.type==="nested"&&!r.reverse)return`Cannot compute \`${t}\` across repeated relationship \`${r.name}\``}}function PEe(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=LO(i,e),o=IO(r,s),u=i.slice().reverse().findIndex(p=>p.structRelationship.type==="many"||p.structRelationship.type==="cross"),a=u===-1?0:i.length-u,l=i.slice(0,a),c=LO(l,e),f=IO(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 FEe.FieldReference?`${n.refString}.${r}()`:n instanceof BEe.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 bv={};Object.defineProperty(bv,"__esModule",{value:!0}),bv.ExprAlternationTree=void 0;const nz=ce,MEe=Jn,jEe=dt;class UEe extends jEe.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,nz.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,nz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:{node:this.op==="&"?"and":"or",kids:{left:i.value,right:s.value}}}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,MEe.errorFor)("no value from alternation tree")}}bv.ExprAlternationTree=UEe;var Md={};Object.defineProperty(Md,"__esModule",{value:!0}),Md.ExprAsymmetric=void 0;const qEe=ba;class zEe extends qEe.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}`}}}}Md.ExprAsymmetric=zEe;var Tv={};Object.defineProperty(Tv,"__esModule",{value:!0}),Tv.ExprAvg=void 0;const HEe=Md;class QEe extends HEe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}Tv.ExprAvg=QEe;var Rv={};Object.defineProperty(Rv,"__esModule",{value:!0}),Rv.ExprCast=void 0;const GEe=Kn,WEe=dt;class VEe extends WEe.ExpressionDef{constructor(e,n,r=!1){super({expr:e}),this.expr=e,this.castType=n,this.safe=r,this.elementType="cast"}getExpression(e){var n,r,i;const s=this.expr.getExpression(e);let o="sql native";if(typeof this.castType=="string")o=this.castType;else{const u=e.dialectObj();u&&(u.validateTypeName(this.castType.raw)?o=(i=(r=(n=e.dialectObj())===null||n===void 0?void 0:n.sqlTypeToMalloyType(this.castType.raw))===null||r===void 0?void 0:r.type)!==null&&i!==void 0?i:"sql native":this.log(`Cast type \`${this.castType.raw}\` is invalid for ${u.name} dialect`))}return{dataType:o,expressionType:s.expressionType,value:(0,GEe.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}Rv.ExprCast=VEe;var Ov={};Object.defineProperty(Ov,"__esModule",{value:!0}),Ov.ExprCoalesce=void 0;const rz=Ho,iz=sn,YEe=dt;class XEe extends YEe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=iz.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(iz.FT.typeEq(n,r)||this.log(`Mismatched types for coalesce (${n.dataType}, ${r.dataType})`),{...r,dataType:n.dataType==="error"?r.dataType:n.dataType,expressionType:(0,rz.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,rz.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}Ov.ExprCoalesce=XEe;var Dv={};Object.defineProperty(Dv,"__esModule",{value:!0}),Dv.ExprCount=void 0;const KEe=ba;class JEe extends KEe.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"}}}Dv.ExprCount=JEe;var Nv={};Object.defineProperty(Nv,"__esModule",{value:!0}),Nv.ExprCountDistinct=void 0;const wv=sn,ZEe=ba;class eAe extends ZEe.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[wv.FT.numberT,wv.FT.stringT,wv.FT.dateT,wv.FT.timestampT]}}Nv.ExprCountDistinct=eAe;var Fv={},Vl={};Object.defineProperty(Vl,"__esModule",{value:!0}),Vl.Limit=void 0;const tAe=Ge,nAe=En;class rAe extends tAe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=nAe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}Vl.Limit=rAe;var jd={};Object.defineProperty(jd,"__esModule",{value:!0}),jd.PartitionBy=void 0;const iAe=Ge;class sAe extends iAe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}jd.PartitionBy=sAe;var ig={},Yl={};Object.defineProperty(Yl,"__esModule",{value:!0}),Yl.FieldName=void 0;const oAe=Ge;class uAe extends oAe.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])}}Yl.FieldName=uAe,Object.defineProperty(ig,"__esModule",{value:!0}),ig.ExprFunc=void 0;const ts=ce,Ta=Jn,aAe=Jc,lAe=dt,cAe=Yl,sz=Lt;class fAe extends lAe.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.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),{found:void 0,error:"unknown function"}):u.type!=="function"?(this.log(`Cannot call '${this.name}', which is of type ${u.type}`),{found:void 0,error:"called non function"}):(u.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${u.name}' instead`,"warn"),{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 H of u)R=(0,ts.maxExpressionType)(R,H.expressionType),O?I.push(","):O=H.dataType,I.push(H.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,sz.composeSQLExpr)(I),evalSpace:(0,ts.mergeEvalSpaces)(...u.map(H=>H.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,Ta.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,ts.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 aAe.StructSpaceFieldBase)){const I=`Aggregate source cannot be a ${O.dataType}`;return this.log(I),(0,Ta.errorFor)(I)}}else{const O=`Reference to undefined value ${this.source.refString}`;return this.log(O),(0,Ta.errorFor)(O)}}const h=[...f?[f]:[],...u],p=xAe(l,h);if(p===void 0)return this.log(`No matching overload for function ${this.name}(${h.map(R=>R.dataType).join(", ")})`),(0,Ta.errorFor)("no matching overload");const{overload:m,expressionTypeErrors:g,evalSpaceErrors:y,nullabilityErrors:E}=p;for(const R of g){const O=R.argIndex-(f?1:0),I=(0,ts.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[O].log(`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].log(`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].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const A=m.returnType,v=(0,ts.maxOfExpressionTypes)([A.expressionType,...h.map(R=>R.expressionType)]);if(!(0,ts.expressionIsAggregate)(m.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${h.map(R=>R.dataType).join(", ")}) with source`),(0,Ta.errorFor)("cannot call with source");const S={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,ts.expressionIsAnalytic)(m.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("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(M=>R?M.getAnalyticOrderBy(e):M.getAggregateOrderBy(e,O));S.kids.orderBy=I}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}if((n==null?void 0:n.limit)!==void 0&&(m.supportsLimit?S.limit=n.limit.limit:this.log(`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 M=I.getField(e);M.found===void 0?I.log(`${I.refString} is not defined`):(0,ts.expressionIsAnalytic)(M.found.typeDesc().expressionType)||(0,ts.expressionIsUngroupedAggregate)(M.found.typeDesc().expressionType)?I.log("Partition expression must be scalar or aggregate"):R.push(I.nameString)}S.partitionBy=R}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const O=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(O),(0,Ta.errorFor)("sql_function used without enabling")}const R=h[0].value;if(R.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const O=R.literal,I=dAe(O),M=I.filter(W=>W.type==="interpolation"&&W.name.includes(".")).map(W=>W.type==="interpolation"?`\${${W.name}}`:`\${${W.value}}`);if(M.length>0){const W=M.length===1?`'.' paths are not yet supported in sql interpolations, found ${M.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${M.join(", ")})`;return this.log(W),(0,Ta.errorFor)(`${W}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const H=[];for(const W of I)if(W.type==="string")H.push(W.value);else if(W.name==="TABLE")H.push({node:"source-reference"});else{const Q=new cAe.FieldName(W.name);this.has({name:Q});const ee=e.lookup([Q]);if(ee.found===void 0)return this.log(`Invalid interpolation: ${ee.error}`),(0,Ta.errorFor)("invalid interpolated field");ee.found.refType==="parameter"?H.push({node:"parameter",path:[W.name]}):H.push({node:"field",path:[W.name]})}_=(0,sz.composeSQLExpr)(H)}}if(A.dataType==="any")return this.log(`Invalid return type ${A.dataType} for function '${this.name}'`),(0,Ta.errorFor)("invalid return type");const C=(0,ts.mergeEvalSpaces)(...h.map(R=>R.evalSpace)),b=C==="constant"?"constant":(0,ts.expressionIsScalar)(v)?C:"output";return{dataType:A.dataType,expressionType:v,value:_,evalSpace:b}}}ig.ExprFunc=fAe;function xAe(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,ts.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,ts.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 dAe(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(Fv,"__esModule",{value:!0}),Fv.ExprProps=void 0;const hAe=ce,pAe=Jn,gAe=sn,mAe=Gl,yAe=Vl,EAe=jd,AAe=dt,vAe=ig;class SAe extends AAe.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=gAe.FT.anyAtomicT}getFilteredExpression(e,n,r){if(r.length>0){if(!this.expr.supportsWhere(n))return this.expr.log("Filtered expression requires an aggregate computation"),n;const i=[];for(const s of r){const o=s.getFilterList(e);if(o.find(u=>(0,hAe.expressionIsCalculation)(u.expressionType)))return s.log("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.log(`Cannot filter '${n.dataType}' data`),(0,pAe.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof EAe.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof yAe.Limit?r?u.log("limit already specified"):this.expr.canSupportLimit()?r=u:u.log("`limit` is not supported for this kind of expression"):u instanceof mAe.FunctionOrdering?this.expr.canSupportPartitionBy()?i.push(u):u.log("`order_by` is not supported for this kind of expression"):s.push(u);const o=this.expr instanceof vAe.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}Fv.ExprProps=SAe;var Lv={};Object.defineProperty(Lv,"__esModule",{value:!0}),Lv.ExprLogicalOp=void 0;const _Ae=eg,oz=sn;class CAe extends _Ae.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[oz.FT.boolT,oz.FT.aggregateBoolT]}}Lv.ExprLogicalOp=CAe;var Iv={};Object.defineProperty(Iv,"__esModule",{value:!0}),Iv.ExprMax=void 0;const Bv=sn,bAe=ba;class TAe extends bAe.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[Bv.FT.numberT,Bv.FT.stringT,Bv.FT.dateT,Bv.FT.timestampT]}returns(e){return e.dataType}}Iv.ExprMax=TAe;var $v={};Object.defineProperty($v,"__esModule",{value:!0}),$v.ExprMin=void 0;const kv=sn,RAe=ba;class OAe extends RAe.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[kv.FT.numberT,kv.FT.stringT,kv.FT.dateT,kv.FT.timestampT]}returns(e){return e.dataType}}$v.ExprMin=OAe;var Pv={};Object.defineProperty(Pv,"__esModule",{value:!0}),Pv.ExprMinus=void 0;const DAe=Jn,uz=sn,NAe=dt;class wAe extends NAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[uz.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return uz.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,DAe.errorFor)("negate requires number")}}Pv.ExprMinus=wAe;var Mv={};Object.defineProperty(Mv,"__esModule",{value:!0}),Mv.ExprMulDiv=void 0;const FAe=Pd;class LAe extends FAe.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}Mv.ExprMulDiv=LAe;var jv={},sg={};Object.defineProperty(sg,"__esModule",{value:!0}),sg.Unary=void 0;const IAe=dt;class BAe extends IAe.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}sg.Unary=BAe,Object.defineProperty(jv,"__esModule",{value:!0}),jv.ExprNot=void 0;const az=sn,$Ae=sg;class kAe extends $Ae.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[az.FT.boolT,az.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"}}}}}jv.ExprNot=kAe;var Uv={};Object.defineProperty(Uv,"__esModule",{value:!0}),Uv.ExprNow=void 0;const PAe=dt;class MAe extends PAe.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Uv.ExprNow=MAe;var qv={};Object.defineProperty(qv,"__esModule",{value:!0}),qv.ExprNULL=void 0;const jAe=dt;class UAe extends jAe.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}qv.ExprNULL=UAe;var zv={};Object.defineProperty(zv,"__esModule",{value:!0}),zv.ExprNumber=void 0;const qAe=sn,zAe=dt;class HAe extends zAe.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...qAe.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}zv.ExprNumber=HAe;var Hv={};Object.defineProperty(Hv,"__esModule",{value:!0}),Hv.ExprParens=void 0;const QAe=dt;class GAe extends QAe.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}}}}Hv.ExprParens=GAe;var Qv={};Object.defineProperty(Qv,"__esModule",{value:!0}),Qv.ExprRegEx=void 0;const WAe=dt;class VAe extends WAe.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"}}}Qv.ExprRegEx=VAe;var Gv={};Object.defineProperty(Gv,"__esModule",{value:!0}),Gv.ExprString=void 0;const YAe=dt,XAe=sn;class KAe extends YAe.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...XAe.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}Gv.ExprString=KAe;var Wv={};Object.defineProperty(Wv,"__esModule",{value:!0}),Wv.ExprSum=void 0;const JAe=Md;class ZAe extends JAe.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}Wv.ExprSum=ZAe;var Vv={};Object.defineProperty(Vv,"__esModule",{value:!0}),Vv.ExprTimeExtract=void 0;const rf=ce,Xl=Jn,BO=dt,eve=Ql;class og extends BO.ExpressionDef{static extractor(e){const n=og.pluralMap[e];if(n)return n;if((0,rf.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=og.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,Xl.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof eve.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,rf.maxExpressionType)(i.expressionType,s.expressionType),u=(0,rf.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Xl.errorFor)("extract from error").value};if(!(0,rf.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,Xl.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,rf.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,Xl.errorFor)(`${n} bad type ${s.dataType}`);let a=i.dataType;if(i.dataType!==s.dataType){let l=!0;if(a="timestamp",i.dataType==="date"){const c=(0,BO.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,BO.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,Xl.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,Xl.errorFor)(`${n} civil extraction`)):(0,rf.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.log(`Cannot extract ${n} from a range`),(0,Xl.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,rf.isTimeFieldType)(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.log(`${this.extractText}() requires time type, not '${i.dataType}'`),{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:(0,Xl.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}Vv.ExprTimeExtract=og,og.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var Yv={},lo={},Xv={};Object.defineProperty(Xv,"__esModule",{value:!0}),Xv.QueryInputSpace=void 0;const tve=Ri,nve=Hp,rve=Td;class ive extends rve.RefinedSpace{constructor(e,n){const r=new nve.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof tve.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}Xv.QueryInputSpace=ive;var sve=w&&w.__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]}),ove=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),uve=w&&w.__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)&&sve(e,t,n);return ove(e,t),e};Object.defineProperty(lo,"__esModule",{value:!0}),lo.ReduceFieldSpace=lo.QuerySpace=lo.QueryOperationSpace=void 0;const Kv=uve(ce),$O=Ul,ave=Yl,lve=Br,cve=pt,fve=Td,xve=zp,dve=kr,hve=Xv;class lz extends fve.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new hve.QueryInputSpace(e,this),n&&this.addRefineFromFields(n)}log(e){this.astEl&&this.astEl.log(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 dve.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${l?` (conflicts with ${l})`:""}`)}else{const l=a.typeDesc();Kv.isAtomicFieldType(l.dataType)&&Kv.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)}}lo.QueryOperationSpace=lz;class cz extends lz{addRefineFromFields(e){var n;if(Kv.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new ave.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 xve.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof cve.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof lve.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)&&!gve(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(Kv.isQuerySegment(n))return n;throw new Error("TODO NOT POSSIBLE")}getPipeSegment(e){if(this.segmentType==="index")return this.log("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,$O.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,$O.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,$O.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}}lo.QuerySpace=cz;class pve extends cz{constructor(){super(...arguments),this.segmentType="reduce"}}lo.ReduceFieldSpace=pve;function gve(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(Yv,"__esModule",{value:!0}),Yv.ExprUngroup=void 0;const fz=ce,kO=Jn,mve=lo,yve=sn,Eve=dt;class Ave extends Eve.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=yve.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,fz.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,kO.errorFor)("ungrouped scalar");if((0,fz.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,kO.errorFor)("doubly-ungrouped aggregate");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 mve.QuerySpace){u=u.nestParent;continue}break}if(a){const l=s?"exclude()":"all()";o.log(`${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.log(`${this.control}() incompatible type`),(0,kO.errorFor)("ungrouped type check")}}Yv.ExprUngroup=Ave;var Jv={};Object.defineProperty(Jv,"__esModule",{value:!0}),Jv.ForRange=void 0;const xz=Ho,PO=Jn,dz=sn,Zv=Kn,vve=dt,e4=kd,hz=Ql;class Sve extends vve.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=[dz.FT.timestampT,dz.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,PO.errorFor)("no time for range");const o=this.duration.getExpression(e);if(o.dataType!=="number")return o.dataType!=="error"&&this.log(`FOR duration count must be a number, not '${o.dataType}'`),{dataType:"boolean",evalSpace:(0,xz.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,xz.maxExpressionType)(i.expressionType,s.expressionType),value:(0,PO.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,Zv.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,Zv.timeOffset)("date",i.value,"+",o.value,u),g=new e4.ExprTime("date",m);return new hz.Range(p,g).apply(e,n,r)}const l=e4.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,Zv.castDateToTimestamp)(f),c=new e4.ExprTime("timestamp",f,i.expressionType)}const x=(0,Zv.timeOffset)("timestamp",f,"+",o.value,u),h=new e4.ExprTime("timestamp",x,i.expressionType);return new hz.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,PO.errorFor)("range has no value")}}Jv.ForRange=Sve;var Zn={},Di={};Object.defineProperty(Di,"__esModule",{value:!0});class sf extends Error{}class _ve extends sf{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class Cve extends sf{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class bve extends sf{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class ug extends sf{}class pz extends sf{constructor(e){super(`Invalid unit ${e}`)}}class Os extends sf{}class Kl extends sf{constructor(){super("Zone is an abstract class")}}const ke="numeric",co="short",ns="long",MO={year:ke,month:ke,day:ke},gz={year:ke,month:co,day:ke},Tve={year:ke,month:co,day:ke,weekday:co},mz={year:ke,month:ns,day:ke},yz={year:ke,month:ns,day:ke,weekday:ns},Ez={hour:ke,minute:ke},Az={hour:ke,minute:ke,second:ke},vz={hour:ke,minute:ke,second:ke,timeZoneName:co},Sz={hour:ke,minute:ke,second:ke,timeZoneName:ns},_z={hour:ke,minute:ke,hourCycle:"h23"},Cz={hour:ke,minute:ke,second:ke,hourCycle:"h23"},bz={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:co},Tz={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:ns},Rz={year:ke,month:ke,day:ke,hour:ke,minute:ke},Oz={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},Dz={year:ke,month:co,day:ke,hour:ke,minute:ke},Nz={year:ke,month:co,day:ke,hour:ke,minute:ke,second:ke},Rve={year:ke,month:co,day:ke,weekday:co,hour:ke,minute:ke},wz={year:ke,month:ns,day:ke,hour:ke,minute:ke,timeZoneName:co},Fz={year:ke,month:ns,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:co},Lz={year:ke,month:ns,day:ke,weekday:ns,hour:ke,minute:ke,timeZoneName:ns},Iz={year:ke,month:ns,day:ke,weekday:ns,hour:ke,minute:ke,second:ke,timeZoneName:ns};function St(t){return typeof t>"u"}function of(t){return typeof t=="number"}function t4(t){return typeof t=="number"&&t%1===0}function Ove(t){return typeof t=="string"}function Dve(t){return Object.prototype.toString.call(t)==="[object Date]"}function Bz(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function Nve(t){return Array.isArray(t)?t:[t]}function $z(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 wve(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function Ud(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Ra(t,e,n){return t4(t)&&t>=e&&t<=n}function Fve(t,e){return t-e*Math.floor(t/e)}function wn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function Jl(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function uf(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function jO(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function UO(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function ag(t){return t%4===0&&(t%100!==0||t%400===0)}function lg(t){return ag(t)?366:365}function n4(t,e){const n=Fve(e-1,12)+1,r=t+(e-n)/12;return n===2?ag(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function qO(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 r4(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 zO(t){return t>99?t:t>60?1900+t:2e3+t}function kz(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 i4(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 Pz(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new Os(`Invalid unit value ${t}`);return e}function s4(t,e){const n={};for(const r in t)if(Ud(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=Pz(i)}return n}function cg(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}${wn(n,2)}:${wn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${wn(n,2)}${wn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function o4(t){return wve(t,["hour","minute","second","millisecond"])}const Mz=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,Lve=["January","February","March","April","May","June","July","August","September","October","November","December"],jz=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Ive=["J","F","M","A","M","J","J","A","S","O","N","D"];function Uz(t){switch(t){case"narrow":return[...Ive];case"short":return[...jz];case"long":return[...Lve];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 qz=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],zz=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],Bve=["M","T","W","T","F","S","S"];function Hz(t){switch(t){case"narrow":return[...Bve];case"short":return[...zz];case"long":return[...qz];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const Qz=["AM","PM"],$ve=["Before Christ","Anno Domini"],kve=["BC","AD"],Pve=["B","A"];function Gz(t){switch(t){case"narrow":return[...Pve];case"short":return[...kve];case"long":return[...$ve];default:return null}}function Mve(t){return Qz[t.hour<12?0:1]}function jve(t,e){return Hz(e)[t.weekday-1]}function Uve(t,e){return Uz(e)[t.month-1]}function qve(t,e){return Gz(e)[t.year<0?0:1]}function zve(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 Wz(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const Hve={D:MO,DD:gz,DDD:mz,DDDD:yz,t:Ez,tt:Az,ttt:vz,tttt:Sz,T:_z,TT:Cz,TTT:bz,TTTT:Tz,f:Rz,ff:Dz,fff:wz,ffff:Lz,F:Oz,FF:Nz,FFF:Fz,FFFF:Iz};class Ni{static create(e,n={}){return new Ni(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 Hve[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 wn(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?Mve(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?Uve(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?jve(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=Ni.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?qve(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 Wz(Ni.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=Ni.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 Wz(s,i(u))}}class fo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let qd=class{get type(){throw new Kl}get name(){throw new Kl}get ianaName(){return this.name}get isUniversal(){throw new Kl}offsetName(e,n){throw new Kl}formatOffset(e,n){throw new Kl}offset(e){throw new Kl}equals(e){throw new Kl}get isValid(){throw new Kl}},HO=null;class u4 extends qd{static get instance(){return HO===null&&(HO=new u4),HO}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return kz(e,n,r)}formatOffset(e,n){return cg(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let a4={};function Qve(t){return a4[t]||(a4[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"})),a4[t]}const Gve={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function Wve(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 Vve(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=Gve[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let l4={};class du extends qd{static create(e){return l4[e]||(l4[e]=new du(e)),l4[e]}static resetCache(){l4={},a4={}}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=du.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return kz(e,n,r,this.name)}formatOffset(e,n){return cg(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=Qve(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?Vve(r,n):Wve(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=qO({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 QO=null;class Pr extends qd{static get utcInstance(){return QO===null&&(QO=new Pr(0)),QO}static instance(e){return e===0?Pr.utcInstance:new Pr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Pr(i4(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${cg(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${cg(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return cg(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 Vz extends qd{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 Zl(t,e){if(St(t)||t===null)return e;if(t instanceof qd)return t;if(Ove(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Pr.utcInstance:Pr.parseSpecifier(n)||du.create(t)}else return of(t)?Pr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new Vz(t)}let Yz=()=>Date.now(),Xz="system",Kz=null,Jz=null,Zz=null,eH;class Fn{static get now(){return Yz}static set now(e){Yz=e}static set defaultZone(e){Xz=e}static get defaultZone(){return Zl(Xz,u4.instance)}static get defaultLocale(){return Kz}static set defaultLocale(e){Kz=e}static get defaultNumberingSystem(){return Jz}static set defaultNumberingSystem(e){Jz=e}static get defaultOutputCalendar(){return Zz}static set defaultOutputCalendar(e){Zz=e}static get throwOnInvalid(){return eH}static set throwOnInvalid(e){eH=e}static resetCaches(){cn.resetCache(),du.resetCache()}}let tH={};function Yve(t,e={}){const n=JSON.stringify([t,e]);let r=tH[n];return r||(r=new Intl.ListFormat(t,e),tH[n]=r),r}let GO={};function WO(t,e={}){const n=JSON.stringify([t,e]);let r=GO[n];return r||(r=new Intl.DateTimeFormat(t,e),GO[n]=r),r}let VO={};function Xve(t,e={}){const n=JSON.stringify([t,e]);let r=VO[n];return r||(r=new Intl.NumberFormat(t,e),VO[n]=r),r}let YO={};function Kve(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 fg=null;function Jve(){return fg||(fg=new Intl.DateTimeFormat().resolvedOptions().locale,fg)}function Zve(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=WO(t).resolvedOptions()}catch{n=WO(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function e4e(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function t4e(t){const e=[];for(let n=1;n<=12;n++){const r=ot.utc(2016,n,1);e.push(t(r))}return e}function n4e(t){const e=[];for(let n=1;n<=7;n++){const r=ot.utc(2016,11,13+n);e.push(t(r))}return e}function c4(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function r4e(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 i4e{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=Xve(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):UO(e,3);return wn(n,this.padTo)}}}class s4e{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&&du.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:ot.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=WO(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class o4e{constructor(e,n,r){this.opts={style:"long",...r},!n&&Bz()&&(this.rtf=Kve(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):zve(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||Fn.defaultLocale,o=s||(i?"en-US":Jve()),u=n||Fn.defaultNumberingSystem,a=r||Fn.defaultOutputCalendar;return new cn(o,u,a,s)}static resetCache(){fg=null,GO={},VO={},YO={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return cn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=Zve(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=e4e(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=r4e(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 c4(this,e,r,Uz,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=t4e(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return c4(this,e,r,Hz,()=>{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]=n4e(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return c4(this,void 0,e,()=>Qz,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[ot.utc(2016,11,13,9),ot.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return c4(this,e,n,Gz,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[ot.utc(-40,1,1),ot.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 i4e(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new s4e(e,this.intl,n)}relFormatter(e={}){return new o4e(this.intl,this.isEnglish(),e)}listFormatter(e={}){return Yve(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 zd(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function Hd(...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 Qd(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 nH(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=Jl(e[n+i]);return[r,null,n+i]}}const rH=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,u4e=`(?:${rH.source}?(?:\\[(${Mz.source})\\])?)?`,XO=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,iH=RegExp(`${XO.source}${u4e}`),KO=RegExp(`(?:T${iH.source})?`),a4e=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,l4e=/(\d{4})-?W(\d\d)(?:-?(\d))?/,c4e=/(\d{4})-?(\d{3})/,f4e=nH("weekYear","weekNumber","weekDay"),x4e=nH("year","ordinal"),d4e=/(\d{4})-(\d\d)-(\d\d)/,sH=RegExp(`${XO.source} ?(?:${rH.source}|(${Mz.source}))?`),h4e=RegExp(`(?: ${sH.source})?`);function Gd(t,e,n){const r=t[e];return St(r)?n:Jl(r)}function p4e(t,e){return[{year:Gd(t,e),month:Gd(t,e+1,1),day:Gd(t,e+2,1)},null,e+3]}function Wd(t,e){return[{hours:Gd(t,e,0),minutes:Gd(t,e+1,0),seconds:Gd(t,e+2,0),milliseconds:jO(t[e+3])},null,e+4]}function xg(t,e){const n=!t[e]&&!t[e+1],r=i4(t[e+1],t[e+2]),i=n?null:Pr.instance(r);return[{},i,e+3]}function dg(t,e){const n=t[e]?du.create(t[e]):null;return[{},n,e+1]}const g4e=RegExp(`^T?${XO.source}$`),m4e=/^-?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 y4e(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(uf(n)),months:x(uf(r)),weeks:x(uf(i)),days:x(uf(s)),hours:x(uf(o)),minutes:x(uf(u)),seconds:x(uf(a),a==="-0"),milliseconds:x(jO(l),f)}]}const E4e={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 JO(t,e,n,r,i,s,o){const u={year:e.length===2?zO(Jl(e)):Jl(e),month:jz.indexOf(n)+1,day:Jl(r),hour:Jl(i),minute:Jl(s)};return o&&(u.second=Jl(o)),t&&(u.weekday=t.length>3?qz.indexOf(t)+1:zz.indexOf(t)+1),u}const A4e=/^(?:(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 v4e(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=JO(e,i,r,n,s,o,u);let h;return a?h=E4e[a]:l?h=0:h=i4(c,f),[x,new Pr(h)]}function S4e(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const _4e=/^(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$/,b4e=/^(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 oH(t){const[,e,n,r,i,s,o,u]=t;return[JO(e,i,r,n,s,o,u),Pr.utcInstance]}function T4e(t){const[,e,n,r,i,s,o,u]=t;return[JO(e,u,n,r,i,s,o),Pr.utcInstance]}const R4e=zd(a4e,KO),O4e=zd(l4e,KO),D4e=zd(c4e,KO),N4e=zd(iH),uH=Hd(p4e,Wd,xg,dg),w4e=Hd(f4e,Wd,xg,dg),F4e=Hd(x4e,Wd,xg,dg),L4e=Hd(Wd,xg,dg);function I4e(t){return Qd(t,[R4e,uH],[O4e,w4e],[D4e,F4e],[N4e,L4e])}function B4e(t){return Qd(S4e(t),[A4e,v4e])}function $4e(t){return Qd(t,[_4e,oH],[C4e,oH],[b4e,T4e])}function k4e(t){return Qd(t,[m4e,y4e])}const P4e=Hd(Wd);function M4e(t){return Qd(t,[g4e,P4e])}const j4e=zd(d4e,h4e),U4e=zd(sH),q4e=Hd(Wd,xg,dg);function z4e(t){return Qd(t,[j4e,uH],[U4e,q4e])}const H4e="Invalid Duration",aH={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}},Q4e={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},...aH},Ds=146097/400,Vd=146097/4800,G4e={years:{quarters:4,months:12,weeks:Ds/7,days:Ds,hours:Ds*24,minutes:Ds*24*60,seconds:Ds*24*60*60,milliseconds:Ds*24*60*60*1e3},quarters:{months:3,weeks:Ds/28,days:Ds/4,hours:Ds*24/4,minutes:Ds*24*60/4,seconds:Ds*24*60*60/4,milliseconds:Ds*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},...aH},af=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],W4e=af.slice(0).reverse();function lf(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 _t(r)}function V4e(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?V4e(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Y4e(t,e){W4e.reduce((n,r)=>St(e[r])?n:(n&&lH(t,e,n,e,r),r),null)}class _t{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?G4e:Q4e,this.isLuxonDuration=!0}static fromMillis(e,n){return _t.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new Os(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new _t({values:s4(e,_t.normalizeUnit),loc:cn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(of(e))return _t.fromMillis(e);if(_t.isDuration(e))return e;if(typeof e=="object")return _t.fromObject(e);throw new Os(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=k4e(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=M4e(e);return r?_t.fromObject(r,n):_t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new Os("need to specify a reason the Duration is invalid");const r=e instanceof fo?e:new fo(e,n);if(Fn.throwOnInvalid)throw new bve(r);return new _t({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 pz(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?Ni.create(this.loc,r).formatDurationFromString(this,e):H4e}toHuman(e={}){const n=af.map(r=>{const i=this.values[r];return St(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+=UO(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=_t.fromDurationLike(e),r={};for(const i of af)(Ud(n.values,i)||Ud(this.values,i))&&(r[i]=n.get(i)+this.get(i));return lf(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=_t.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]=Pz(e(this.values[r],r));return lf(this,{values:n},!0)}get(e){return this[_t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...s4(e,_t.normalizeUnit)};return lf(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),lf(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Y4e(this.matrix,e),lf(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>_t.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of af)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;of(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)af.indexOf(l)>af.indexOf(o)&&lH(this.matrix,i,l,n,o)}else of(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 lf(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 lf(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 af)if(!n(this.values[r],e.values[r]))return!1;return!0}}const hg="Invalid Interval";function X4e(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 Os("need to specify a reason the Interval is invalid");const r=e instanceof fo?e:new fo(e,n);if(Fn.throwOnInvalid)throw new Cve(r);return new fn({invalid:r})}static fromDateTimes(e,n){const r=yg(e),i=yg(n),s=X4e(r,i);return s??new fn({start:r,end:i})}static after(e,n){const r=_t.fromDurationLike(n),i=yg(e);return fn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=_t.fromDurationLike(n),i=yg(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=ot.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=ot.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return fn.fromDateTimes(s,u);if(o){const l=_t.fromISO(i,n);if(l.isValid)return fn.after(s,l)}else if(a){const l=_t.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(yg).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=_t.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()})`:hg}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:hg}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:hg}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:hg}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:hg}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):_t.invalid(this.invalidReason)}mapEndpoints(e){return fn.fromDateTimes(e(this.s),e(this.e))}}let pg=class{static hasDST(e=Fn.defaultZone){const n=ot.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return du.isValidZone(e)}static normalizeZone(e){return Zl(e,Fn.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:Bz()}}};function cH(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(_t.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=cH(u,a);return(l-l%7)/7}],["days",cH]],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 J4e(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=_t.fromObject(s,r);return l.length>0?_t.fromMillis(a,r).shiftTo(...l).plus(c):c}const ZO={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},fH={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]},Z4e=ZO.hanidec.replace(/[\[|\]]/g,"").split("");function eSe(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(ZO.hanidec)!==-1)e+=Z4e.indexOf(t[n]);else for(const i in fH){const[s,o]=fH[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function xo({numberingSystem:t},e=""){return new RegExp(`${ZO[t||"latn"]}${e}`)}const tSe="missing Intl.DateTimeFormat.formatToParts support";function It(t,e=n=>n){return{regex:t,deser:([n])=>e(eSe(n))}}const xH="[  ]",dH=new RegExp(xH,"g");function nSe(t){return t.replace(/\./g,"\\.?").replace(dH,xH)}function hH(t){return t.replace(/\./g,"").replace(dH," ").toLowerCase()}function ho(t,e){return t===null?null:{regex:RegExp(t.map(nSe).join("|")),deser:([n])=>t.findIndex(r=>hH(n)===hH(r))+e}}function pH(t,e){return{regex:t,deser:([,n,r])=>i4(n,r),groups:e}}function e7(t){return{regex:t,deser:([e])=>e}}function rSe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function iSe(t,e){const n=xo(e),r=xo(e,"{2}"),i=xo(e,"{3}"),s=xo(e,"{4}"),o=xo(e,"{6}"),u=xo(e,"{1,2}"),a=xo(e,"{1,3}"),l=xo(e,"{1,6}"),c=xo(e,"{1,9}"),f=xo(e,"{2,4}"),x=xo(e,"{4,6}"),h=g=>({regex:RegExp(rSe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return ho(e.eras("short",!1),0);case"GG":return ho(e.eras("long",!1),0);case"y":return It(l);case"yy":return It(f,zO);case"yyyy":return It(s);case"yyyyy":return It(x);case"yyyyyy":return It(o);case"M":return It(u);case"MM":return It(r);case"MMM":return ho(e.months("short",!0,!1),1);case"MMMM":return ho(e.months("long",!0,!1),1);case"L":return It(u);case"LL":return It(r);case"LLL":return ho(e.months("short",!1,!1),1);case"LLLL":return ho(e.months("long",!1,!1),1);case"d":return It(u);case"dd":return It(r);case"o":return It(a);case"ooo":return It(i);case"HH":return It(r);case"H":return It(u);case"hh":return It(r);case"h":return It(u);case"mm":return It(r);case"m":return It(u);case"q":return It(u);case"qq":return It(r);case"s":return It(u);case"ss":return It(r);case"S":return It(a);case"SSS":return It(i);case"u":return e7(c);case"uu":return e7(u);case"uuu":return It(n);case"a":return ho(e.meridiems(),0);case"kkkk":return It(s);case"kk":return It(f,zO);case"W":return It(u);case"WW":return It(r);case"E":case"c":return It(n);case"EEE":return ho(e.weekdays("short",!1,!1),1);case"EEEE":return ho(e.weekdays("long",!1,!1),1);case"ccc":return ho(e.weekdays("short",!0,!1),1);case"cccc":return ho(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return pH(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return pH(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return e7(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:tSe};return m.token=t,m}const sSe={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 oSe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=sSe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function uSe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function aSe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(Ud(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 lSe(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 St(t.z)||(n=du.create(t.z)),St(t.Z)||(n||(n=new Pr(t.Z)),r=t.Z),St(t.q)||(t.M=(t.q-1)*3+1),St(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),St(t.u)||(t.S=jO(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let t7=null;function cSe(){return t7||(t7=ot.fromMillis(1555555555555)),t7}function fSe(t,e){if(t.literal)return t;const n=Ni.macroTokenToFormatOpts(t.val);if(!n)return t;const s=Ni.create(e,n).formatDateTimeParts(cSe()).map(o=>oSe(o,e,n));return s.includes(void 0)?t:s}function xSe(t,e){return Array.prototype.concat(...t.map(n=>fSe(n,e)))}function gH(t,e,n){const r=xSe(Ni.parseFormat(n),t),i=r.map(o=>iSe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=uSe(i),a=RegExp(o,"i"),[l,c]=aSe(e,a,u),[f,x,h]=c?lSe(c):[null,null,void 0];if(Ud(c,"a")&&Ud(c,"H"))throw new ug("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 dSe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=gH(t,e,n);return[r,i,s,o]}const mH=[0,31,59,90,120,151,181,212,243,273,304,334],yH=[0,31,60,91,121,152,182,213,244,274,305,335];function Ns(t,e){return new fo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function EH(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 AH(t,e,n){return n+(ag(t)?yH:mH)[e-1]}function vH(t,e){const n=ag(t)?yH:mH,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function n7(t){const{year:e,month:n,day:r}=t,i=AH(e,n,r),s=EH(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=r4(u)):o>r4(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...o4(t)}}function SH(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=EH(e,1,4),s=lg(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=lg(u)):o>s?(u=e+1,o-=lg(e)):u=e;const{month:a,day:l}=vH(u,o);return{year:u,month:a,day:l,...o4(t)}}function r7(t){const{year:e,month:n,day:r}=t,i=AH(e,n,r);return{year:e,ordinal:i,...o4(t)}}function _H(t){const{year:e,ordinal:n}=t,{month:r,day:i}=vH(e,n);return{year:e,month:r,day:i,...o4(t)}}function hSe(t){const e=t4(t.weekYear),n=Ra(t.weekNumber,1,r4(t.weekYear)),r=Ra(t.weekday,1,7);return e?n?r?!1:Ns("weekday",t.weekday):Ns("week",t.week):Ns("weekYear",t.weekYear)}function pSe(t){const e=t4(t.year),n=Ra(t.ordinal,1,lg(t.year));return e?n?!1:Ns("ordinal",t.ordinal):Ns("year",t.year)}function CH(t){const e=t4(t.year),n=Ra(t.month,1,12),r=Ra(t.day,1,n4(t.year,t.month));return e?n?r?!1:Ns("day",t.day):Ns("month",t.month):Ns("year",t.year)}function bH(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=Ra(e,0,23)||e===24&&n===0&&r===0&&i===0,o=Ra(n,0,59),u=Ra(r,0,59),a=Ra(i,0,999);return s?o?u?a?!1:Ns("millisecond",i):Ns("second",r):Ns("minute",n):Ns("hour",e)}const i7="Invalid DateTime",TH=864e13;function f4(t){return new fo("unsupported zone",`the zone "${t.name}" is not supported`)}function s7(t){return t.weekData===null&&(t.weekData=n7(t.c)),t.weekData}function gg(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new ot({...n,...e,old:n})}function RH(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 OH(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 x4(t,e,n){return RH(qO(t),e,n)}function DH(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,n4(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=_t.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=qO(s);let[a,l]=RH(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function mg(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=ot.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return ot.invalid(new fo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function d4(t,e,n=!0){return t.isValid?Ni.create(cn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function o7(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=wn(t.c.year,n?6:4),e?(r+="-",r+=wn(t.c.month),r+="-",r+=wn(t.c.day)):(r+=wn(t.c.month),r+=wn(t.c.day)),r}function NH(t,e,n,r,i,s){let o=wn(t.c.hour);return e?(o+=":",o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=wn(t.c.minute),(t.c.second!==0||!n)&&(o+=wn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=wn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=wn(Math.trunc(-t.o/60)),o+=":",o+=wn(Math.trunc(-t.o%60))):(o+="+",o+=wn(Math.trunc(t.o/60)),o+=":",o+=wn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const wH={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},gSe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},mSe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},FH=["year","month","day","hour","minute","second","millisecond"],ySe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],ESe=["year","ordinal","hour","minute","second","millisecond"];function LH(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 pz(t);return e}function IH(t,e){const n=Zl(e.zone,Fn.defaultZone),r=cn.fromObject(e),i=Fn.now();let s,o;if(St(t.year))s=i;else{for(const l of FH)St(t[l])&&(t[l]=wH[l]);const u=CH(t)||bH(t);if(u)return ot.invalid(u);const a=n.offset(i);[s,o]=x4(t,a,n)}return new ot({ts:s,zone:n,loc:r,o})}function BH(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=UO(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 $H(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 ot{constructor(e){const n=e.zone||Fn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new fo("invalid input"):null)||(n.isValid?null:f4(n));this.ts=St(e.ts)?Fn.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=OH(this.ts,u),r=Number.isNaN(i.year)?new fo("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 ot({})}static local(){const[e,n]=$H(arguments),[r,i,s,o,u,a,l]=n;return IH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=$H(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Pr.utcInstance,IH({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=Dve(e)?e.valueOf():NaN;if(Number.isNaN(r))return ot.invalid("invalid input");const i=Zl(n.zone,Fn.defaultZone);return i.isValid?new ot({ts:r,zone:i,loc:cn.fromObject(n)}):ot.invalid(f4(i))}static fromMillis(e,n={}){if(of(e))return e<-TH||e>TH?ot.invalid("Timestamp out of range"):new ot({ts:e,zone:Zl(n.zone,Fn.defaultZone),loc:cn.fromObject(n)});throw new Os(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(of(e))return new ot({ts:e*1e3,zone:Zl(n.zone,Fn.defaultZone),loc:cn.fromObject(n)});throw new Os("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=Zl(n.zone,Fn.defaultZone);if(!r.isValid)return ot.invalid(f4(r));const i=Fn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=s4(e,LH),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=cn.fromObject(n);if((c||u)&&f)throw new ug("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new ug("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=OH(i,s);h?(p=ySe,m=gSe,g=n7(g)):u?(p=ESe,m=mSe,g=r7(g)):(p=FH,m=wH);let y=!1;for(const b of p){const R=o[b];St(R)?y?o[b]=m[b]:o[b]=g[b]:y=!0}const E=h?hSe(o):u?pSe(o):CH(o),A=E||bH(o);if(A)return ot.invalid(A);const v=h?SH(o):u?_H(o):o,[S,_]=x4(v,s,r),C=new ot({ts:S,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?ot.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]=I4e(e);return mg(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=B4e(e);return mg(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=$4e(e);return mg(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new Os("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]=dSe(o,e,n);return c?ot.invalid(c):mg(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return ot.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=z4e(e);return mg(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new Os("need to specify a reason the DateTime is invalid");const r=e instanceof fo?e:new fo(e,n);if(Fn.throwOnInvalid)throw new _ve(r);return new ot({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?s7(this).weekYear:NaN}get weekNumber(){return this.isValid?s7(this).weekNumber:NaN}get weekday(){return this.isValid?s7(this).weekday:NaN}get ordinal(){return this.isValid?r7(this.c).ordinal:NaN}get monthShort(){return this.isValid?pg.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?pg.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?pg.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?pg.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 ag(this.year)}get daysInMonth(){return n4(this.year,this.month)}get daysInYear(){return this.isValid?lg(this.year):NaN}get weeksInWeekYear(){return this.isValid?r4(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=Ni.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Pr.instance(e),n)}toLocal(){return this.setZone(Fn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=Zl(e,Fn.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]=x4(o,s,e)}return gg(this,{ts:i,zone:e})}else return ot.invalid(f4(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return gg(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=s4(e,LH),r=!St(n.weekYear)||!St(n.weekNumber)||!St(n.weekday),i=!St(n.ordinal),s=!St(n.year),o=!St(n.month)||!St(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new ug("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new ug("Can't mix ordinal dates with month/day");let l;r?l=SH({...n7(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(n4(l.year,l.month),l.day))):l=_H({...r7(this.c),...n});const[c,f]=x4(l,this.o,this.zone);return gg(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return gg(this,DH(this,n))}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e).negate();return gg(this,DH(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=_t.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?Ni.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):i7}toLocaleString(e=MO,n={}){return this.isValid?Ni.create(this.loc.clone(n),e).formatDateTime(this):i7}toLocaleParts(e={}){return this.isValid?Ni.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=o7(this,o);return u+="T",u+=NH(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?o7(this,e==="extended"):null}toISOWeekDate(){return d4(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":"")+NH(this,o==="extended",n,e,r,s):null}toRFC2822(){return d4(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return d4(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?o7(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")),d4(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():i7}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 _t.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=Nve(n).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=J4e(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(ot.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||ot.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),BH(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?BH(e.base||ot.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(ot.isDateTime))throw new Os("min requires all arguments be DateTimes");return $z(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(ot.isDateTime))throw new Os("max requires all arguments be DateTimes");return $z(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 gH(o,e,n)}static fromStringExplain(e,n,r={}){return ot.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return MO}static get DATE_MED(){return gz}static get DATE_MED_WITH_WEEKDAY(){return Tve}static get DATE_FULL(){return mz}static get DATE_HUGE(){return yz}static get TIME_SIMPLE(){return Ez}static get TIME_WITH_SECONDS(){return Az}static get TIME_WITH_SHORT_OFFSET(){return vz}static get TIME_WITH_LONG_OFFSET(){return Sz}static get TIME_24_SIMPLE(){return _z}static get TIME_24_WITH_SECONDS(){return Cz}static get TIME_24_WITH_SHORT_OFFSET(){return bz}static get TIME_24_WITH_LONG_OFFSET(){return Tz}static get DATETIME_SHORT(){return Rz}static get DATETIME_SHORT_WITH_SECONDS(){return Oz}static get DATETIME_MED(){return Dz}static get DATETIME_MED_WITH_SECONDS(){return Nz}static get DATETIME_MED_WITH_WEEKDAY(){return Rve}static get DATETIME_FULL(){return wz}static get DATETIME_FULL_WITH_SECONDS(){return Fz}static get DATETIME_HUGE(){return Lz}static get DATETIME_HUGE_WITH_SECONDS(){return Iz}}function yg(t){if(ot.isDateTime(t))return t;if(t&&t.valueOf&&of(t.valueOf()))return ot.fromJSDate(t);if(t&&typeof t=="object")return ot.fromObject(t);throw new Os(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const ASe="2.5.2";var vSe=Di.DateTime=ot;Di.Duration=_t,Di.FixedOffsetZone=Pr,Di.IANAZone=du,Di.Info=pg,Di.Interval=fn,Di.InvalidZone=Vz,Di.Settings=Fn,Di.SystemZone=u4,Di.VERSION=ASe,Di.Zone=qd,Object.defineProperty(Zn,"__esModule",{value:!0}),Zn.LiteralYear=Zn.LiteralQuarter=Zn.LiteralMonth=Zn.LiteralWeek=Zn.LiteralDay=Zn.LiteralHour=Zn.LiteralTimestamp=Zn.TimeFormatError=void 0;const e0=Di,SSe=ce,_Se=Ql,kH=kd,u7=dt;class CSe extends Error{}Zn.TimeFormatError=CSe;function cf(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 PH="yyyy",MH=`${PH}-LL`,ws=`${MH}-dd`,jH=`${ws} HH`,UH=`${jH}:mm`,a7=`${UH}:ss`;class qH extends u7.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 l7 extends qH{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=cf(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=e0.DateTime.fromFormat(e,a7);if(s.isValid)return new l7(r,n);if(s=e0.DateTime.fromFormat(e,UH),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(a7);return new c7(r,n,"timestamp",o)}}}Zn.LiteralTimestamp=l7;class c7 extends qH{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,u7.getMorphicValue)(i,"timestamp"),a=(0,u7.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,SSe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new _Se.Range(new kH.ExprTime(u,i.value),new kH.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class f7 extends c7{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,jH);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(a7),new f7(n,r)}}Zn.LiteralHour=f7;class Eg extends c7{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 x7 extends Eg{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,ws);if(i.isValid)return r=i.plus({day:1}).toFormat(ws),new x7(n,r)}}Zn.LiteralDay=x7;class d7 extends Eg{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=cf(e,!1);let r=n.text;const i=n.text.slice(0,10),s=e0.DateTime.fromFormat(i,ws);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(ws),r=u.toFormat(ws),new d7(n,r)}}}Zn.LiteralWeek=d7;class h7 extends Eg{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,MH);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(ws),r=s.toFormat(ws),new h7(n,r)}}}Zn.LiteralMonth=h7;class p7 extends Eg{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=cf(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=e0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(ws),r=u.toFormat(ws),new p7(n,r)}}}Zn.LiteralQuarter=p7;class g7 extends Eg{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=cf(e,!1);let r=n.text;const i=e0.DateTime.fromFormat(n.text,PH);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(ws),r=s.toFormat(ws),new g7(n,r)}}}Zn.LiteralYear=g7;var h4={};Object.defineProperty(h4,"__esModule",{value:!0}),h4.PartialCompare=void 0;const bSe=Jn,TSe=dt;class RSe extends TSe.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.log("Partial comparison does not have a value"),(0,bSe.errorFor)("no value for partial compare")}}h4.PartialCompare=RSe;var Yd={};Object.defineProperty(Yd,"__esModule",{value:!0}),Yd.PickWhen=Yd.Pick=void 0;const hu=ce,t0=Jn,po=sn,OSe=dt,DSe=Ge;function p4(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class NSe extends OSe.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,hu.maxExpressionType)(o,(0,hu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,hu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!po.FT.typeEq(s,x,!0)){const h=po.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick when type")}s=p4(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=p4(s,l),!po.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${po.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,hu.maxExpressionType)(o,l.expressionType),evalSpace:(0,hu.mergeEvalSpaces)(u,l.evalSpace),value:i}}getExpression(e){const n={node:"pick",kids:{pickWhen:[],pickThen:[],pickElse:{node:"error",message:"pick statement not complete"}}};if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,t0.errorFor)("no value for partial pick");const r=[];for(const a of this.choices){if(a.pick===void 0)return this.log("pick with no value can only be used with apply"),(0,t0.errorFor)("no value for partial pick");if(a.when.requestExpression(e)===void 0)return this.log("pick with partial when can only be used with apply"),(0,t0.errorFor)("partial when");r.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let i,s="scalar",o="constant";for(const a of r){if(!po.FT.typeEq(a.when,po.FT.boolT))return this.log(`when expression must be boolean, not '${po.FT.inspect(a.when)}`),(0,t0.errorFor)("pick when type");if(i&&!po.FT.typeEq(i,a.pick,!0)){const l=po.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick value type")}i=p4(i,a.pick),s=(0,hu.maxExpressionType)(s,(0,hu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,hu.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,hu.maxExpressionType)(s,u.expressionType),o=(0,hu.mergeEvalSpaces)(o,u.evalSpace),i=p4(i,u),po.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${po.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,t0.errorFor)("pick value type mismatch"))}}Yd.Pick=NSe;class wSe extends DSe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}Yd.PickWhen=wSe;var g4={};Object.defineProperty(g4,"__esModule",{value:!0}),g4.Timeframe=void 0;const FSe=ce,LSe=Ge;class ISe extends LSe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,FSe.isTimestampUnit)(n)?n:"second"}}g4.Timeframe=ISe;var m4={};Object.defineProperty(m4,"__esModule",{value:!0}),m4.TopBy=void 0;const BSe=ce,zH=dt,$Se=Ge;class kSe extends $Se.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof zH.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof zH.ExpressionDef){const n=this.by.getExpression(e);return(0,BSe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}m4.TopBy=kSe;var n0={};Object.defineProperty(n0,"__esModule",{value:!0}),n0.ImportStatement=n0.ImportSelect=n0.ImportSourceName=void 0;const m7=Ge;class PSe extends m7.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}n0.ImportSourceName=PSe;class MSe extends m7.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}n0.ImportSelect=MSe;class jSe extends m7.ListOf{constructor(e,n){super([]),this.url=e,this.elementType="import statement";try{this.fullURL=decodeURI(new URL(e,n).toString())}catch{this.log("Invalid URI 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.log("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.log(`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.log(`Cannot find '${o.text}', not imported`)}else for(const[s,o]of Object.entries(n.getChildExports(this.fullURL)))e.getEntry(s)?this.log(`Cannot redefine '${s}'`):e.setEntry(s,{entry:o,exported:!1})}else r.status==="error"?this.log(`import failed: '${r.message}'`):this.log(`import failed with status: '${r.status}'`)}}}n0.ImportStatement=jSe;var Ag={};Object.defineProperty(Ag,"__esModule",{value:!0}),Ag.ExtendBlock=void 0;const USe=Ge,qSe=En;class zSe extends USe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=qSe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Ag.ExtendBlock=zSe;var y4={};Object.defineProperty(y4,"__esModule",{value:!0}),y4.Argument=void 0;const HSe=Ge;class QSe extends HSe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}y4.Argument=QSe;var E4={};Object.defineProperty(E4,"__esModule",{value:!0}),E4.HasParameter=void 0;const HH=ce,GSe=Ge;class WSe extends GSe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,HH.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.log(`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.log("Default value cannot have type `null` unless parameter type is also specified"),{value:n.value,name:this.name,type:"error"}):!(0,HH.isCastType)(n.dataType)&&n.dataType!=="error"?(this.default.log(`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.log("Parameter must have default value or declared type"),{value:null,name:this.name,type:(e=this.type)!==null&&e!==void 0?e:"error"}}}E4.HasParameter=WSe;var A4={};Object.defineProperty(A4,"__esModule",{value:!0}),A4.AnonymousQuery=void 0;const VSe=Ge,YSe=Ir;class XSe extends VSe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=YSe.extendNoteMethod,this.has({queryExpr:e})}execute(e){const n=this.queryExpr.getQuery();if(!n){this.queryExpr.sqLog("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)}}A4.AnonymousQuery=XSe;var r0={};Object.defineProperty(r0,"__esModule",{value:!0}),r0.View=void 0;const KSe=Ge;let JSe=class extends KSe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};r0.View=JSe;var v4={};Object.defineProperty(v4,"__esModule",{value:!0}),v4.ViewArrow=void 0;const ZSe=kr,e5e=r0;class t5e extends e5e.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 ZSe.StaticSpace(n.outputStruct),i=this.operation.pipelineComp(r);return{pipeline:[...n.pipeline,...i.pipeline],outputStruct:i.outputStruct}}refine(e,n,r){return this.log("A multi-segment view cannot be used as a refinement"),[]}getImplicitName(){return this.operation.getImplicitName()}}v4.ViewArrow=t5e;var S4={},vg={};Object.defineProperty(vg,"__esModule",{value:!0}),vg.refine=void 0;const y7=Ho,E7=Ul;function n5e(t,e,n){var r,i;if(e.length!==1)return t.log("Named refinements of multi-stage views are not supported"),e;const s={...e[0]},o=n;if((0,y7.isRawSegment)(s))t.log("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.log(`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.log("refinement cannot override existing ordering")),o.limit!==void 0&&(s.limit===void 0?s.limit=o.limit:t.log("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,y7.isQuerySegment)(o)&&(0,y7.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,E7.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,E7.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(E7.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}vg.refine=n5e,Object.defineProperty(S4,"__esModule",{value:!0}),S4.ViewRefine=void 0;const r5e=$r,i5e=es,s5e=vg,o5e=r0;class u5e extends o5e.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,i5e.getFinalStruct)(this.refinement,e.structDef(),i):r5e.ErrorFactory.structDef}}refine(e,n,r){const i=this.pipeline(e,r);return i.length!==1?(this.refinement.log("refinement must have exactly one stage"),n):(0,s5e.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}S4.ViewRefine=u5e;var _4={};Object.defineProperty(_4,"__esModule",{value:!0}),_4.ReferenceView=void 0;const QH=ce,GH=$r,a5e=es,l5e=Br,c5e=vg,f5e=r0;class x5e extends f5e.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:GH.ErrorFactory.structDef,outputStruct:GH.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof l5e.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,QH.isAtomicFieldType)(s.type)){const o={type:"reduce",queryFields:[this.reference.refToField]},{dialect:u,queryTimezone:a,structRelationship:l}=e.structDef(),c=this.reference.nameString;return{pipeline:[o],name:c,outputStruct:{type:"struct",dialect:u,queryTimezone:a,name:c,fields:[s],structRelationship:l,structSource:{type:"query_result"}}}}else return(0,QH.isTurtleDef)(s)?this.reference.list.length>1?(n?this.log("Cannot use view from join as refinement"):this.log("Cannot use view from join"),i()):{pipeline:[...s.pipeline],name:s.name,annotation:s.annotation,outputStruct:(0,a5e.getFinalStruct)(this.reference,e.structDef(),s.pipeline)}:(n?this.reference.log(`named refinement \`${this.reference.refString}\` must be a view, found a ${s.type}`):this.reference.log("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.log(`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,c5e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}_4.ReferenceView=x5e;var C4={},Sg={},b4={},_g={};Object.defineProperty(_g,"__esModule",{value:!0}),_g.Index=void 0;const d5e=Ge,h5e=En;let p5e=class extends d5e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=h5e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};_g.Index=p5e;var Cg={};Object.defineProperty(Cg,"__esModule",{value:!0}),Cg.SampleProperty=void 0;const g5e=Ge,WH=En;class m5e extends g5e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=WH.LegalRefinementStage.Tail,this.forceQueryClass=WH.QueryClass.Index}sampling(){return this.sample}}Cg.SampleProperty=m5e;var T4={};Object.defineProperty(T4,"__esModule",{value:!0}),T4.IndexFieldSpace=void 0;const VH=ce,A7=pt,y5e=Br,E5e=lo,A5e=ng,v5e=kr;class S5e extends E5e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof A7.FieldReference?super.pushFields(n):n instanceof A7.WildcardFieldReference?this.addWild(n):n.log("Internal error, not expected in index query")}getPipeSegment(e){if(e)return this.log("index query operations cannot be refined"),{type:"index",indexFields:[]};const n=[];for(const[r,i]of this.entries())if(i instanceof y5e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof A5e.ReferenceField){const o=i.fieldRef,u=o.getField(this.exprSpace);u.error?o.log(u.error):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 v5e.StructSpaceField)r=l.fieldSpace;else{u.log(`Field '${a}' does not contain rows and cannot be expanded with '*'`);return}else{u.log(`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=A7.IndexFieldReference.indexOutputName([...i,u]);if(this.entry(l)){const c=(n=this.expandedWild[l])===null||n===void 0?void 0:n.join(".");e.log(`Cannot expand '${u}' in '${e.refString}' because a field with that name already exists${c?` (conflicts with ${c})`:""}`)}else{const c=a.typeDesc();(0,VH.isAtomicFieldType)(c.dataType)&&(0,VH.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)}}T4.IndexFieldSpace=S5e,Object.defineProperty(b4,"__esModule",{value:!0}),b4.IndexBuilder=void 0;const v7=ce,_5e=$r,C5e=ao,b5e=_g,T5e=Vl,R5e=Cg,O5e=T4;class D5e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new O5e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof C5e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof T5e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof b5e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof R5e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,v7.isIndexSegment)(e)&&!(0,v7.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),_5e.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,v7.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}b4.IndexBuilder=D5e;var R4={},bg={};Object.defineProperty(bg,"__esModule",{value:!0}),bg.GroupBy=void 0;const N5e=Zi,YH=En;class w5e extends N5e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=YH.LegalRefinementStage.Single,this.forceQueryClass=YH.QueryClass.Grouping}}bg.GroupBy=w5e;var O4={};Object.defineProperty(O4,"__esModule",{value:!0}),O4.ProjectFieldSpace=void 0;const S7=ce,F5e=lo;class L5e extends F5e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,S7.expressionIsAggregate)(e.expressionType)?!1:(0,S7.expressionInvolvesAggregate)(e.expressionType)&&(0,S7.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}O4.ProjectFieldSpace=L5e;var i0={},ff={};Object.defineProperty(ff,"__esModule",{value:!0}),ff.Ordering=ff.OrderBy=void 0;const I5e=ce,XH=Yl,KH=Ge,B5e=En;class $5e extends KH.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof XH.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 XH.FieldName&&e.isQueryFieldSpace()){const i=e.outputSpace(),s=this.field.getField(i);s.error&&this.field.log(s.error),(!s.found||!s.isOutputField)&&this.log(`Unknown field ${this.field.refString} in output space`),(0,I5e.expressionIsAnalytic)((n=s.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.log(`Illegal order by of analytic field ${this.field.refString}`)}const r={field:this.modelField};return this.dir&&(r.dir=this.dir),r}}ff.OrderBy=$5e;class k5e extends KH.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=B5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}ff.Ordering=k5e;var Tg={};Object.defineProperty(Tg,"__esModule",{value:!0}),Tg.Top=void 0;const JH=ce,P5e=Yl,M5e=Ge,j5e=En;let U5e=class extends M5e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=j5e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof P5e.FieldName){if(e.isQueryFieldSpace()){const r=e.outputSpace(),i=this.by.getField(r);i.error&&this.by.log(i.error),(!i.found||!i.isOutputField)&&this.by.log(`Unknown field ${this.by.refString} in output space`),(0,JH.expressionIsAnalytic)((n=i.found)===null||n===void 0?void 0:n.typeDesc().expressionType)&&this.by.log(`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,JH.expressionIsAggregate)(r.expressionType)&&this.by.log("top by expression must be an aggregate"),r.evalSpace==="output"&&this.by.log("top by expression must be an output expression"),{by:"expression",e:r.value}}}};Tg.Top=U5e,Object.defineProperty(i0,"__esModule",{value:!0}),i0.ReduceBuilder=i0.QuerySegmentBuilder=void 0;const ZH=ce,q5e=$r,z5e=ao,H5e=Vl,eQ=ff,tQ=Tg,Q5e=lo,G5e=Zi;class nQ{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof G5e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof z5e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof tQ.Top?(this.limit?e.log("Query operation already limited"):this.limit=e.limit,e.by&&(this.order?e.log("Query operation is already sorted"):this.order=e)):e instanceof H5e.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof eQ.Ordering&&(this.order?e.log("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 tQ.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof eQ.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])}}i0.QuerySegmentBuilder=nQ;class W5e extends nQ{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new Q5e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,ZH.isReduceSegment)(e)||(0,ZH.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),q5e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}i0.ReduceBuilder=W5e,Object.defineProperty(R4,"__esModule",{value:!0}),R4.ProjectBuilder=void 0;const rQ=ce,V5e=$r,Y5e=bg,X5e=O4,K5e=i0;class J5e extends K5e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new X5e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof Y5e.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,rQ.isProjectSegment)(e)||(0,rQ.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),V5e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}R4.ProjectBuilder=J5e;var D4={};Object.defineProperty(D4,"__esModule",{value:!0}),D4.PartialBuilder=void 0;const Z5e=Ho,e_e=i0;class t_e extends e_e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,Z5e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}D4.PartialBuilder=t_e,Object.defineProperty(Sg,"__esModule",{value:!0}),Sg.QOpDesc=void 0;const n_e=b4,r_e=R4,i_e=i0,s_e=Ge,o_e=es,u_e=kr,xf=En,a_e=D4;class l_e extends s_e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=xf.QueryClass.Grouping:this.refineThis.type==="project"?n=xf.QueryClass.Project:this.refineThis.type==="index"&&(n=xf.QueryClass.Index));for(const i of this.list)i.forceQueryClass&&(n?n!==i.forceQueryClass&&i.log(`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.log("Can't determine view type (`group_by` / `aggregate` / `nest`, `project`, `index`)"),n=xf.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case xf.QueryClass.Grouping:return new i_e.ReduceBuilder(e,this.refineThis,n,r);case xf.QueryClass.Project:return new r_e.ProjectBuilder(e,this.refineThis,n,r);case xf.QueryClass.Index:return new n_e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new a_e.PartialBuilder(e,this.refineThis,n,r)}}getOp(e,n){const r=this.getBuilder(e,n,this);for(const s of this.list)r.execute(s);const i=r.finalize(this.refineThis);return{segment:i,outputSpace:()=>new u_e.StaticSpace((0,o_e.opOutputStruct)(this,e.structDef(),i))}}}Sg.QOpDesc=l_e,Object.defineProperty(C4,"__esModule",{value:!0}),C4.QOpDescView=void 0;const c_e=ce,f_e=kr,iQ=Sg,x_e=es,_7=En,d_e=r0;class h_e extends d_e.View{constructor(e){super({operation:e}),this.operation=e,this.elementType="qopdesc-view"}pipelineComp(e,n){const r=this.operation.getOp(e,n);return{pipeline:[r.segment],outputStruct:r.outputSpace().structDef()}}getOp(e,n,r,i){return(0,c_e.isRawSegment)(i)?(this.log("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 iQ.QOpDesc([]),o=new iQ.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case _7.LegalRefinementStage.Head:s.push(u);break;case _7.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case _7.LegalRefinementStage.Tail:o.push(u);break;default:u.log("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,x_e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new f_e.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}C4.QOpDescView=h_e;var xn={};Object.defineProperty(xn,"__esModule",{value:!0}),xn.FieldDefinitionValue=xn.DefSpace=xn.DimensionFieldDeclaration=xn.MeasureFieldDeclaration=xn.DeclareFieldDeclaration=xn.ProjectFieldDeclaration=xn.GroupByFieldDeclaration=xn.AggregateFieldDeclaration=xn.CalculateFieldDeclaration=xn.AtomicFieldDeclaration=void 0;const p_e=ce,g_e=sn,m_e=Bd,y_e=Ge,df=$n,E_e=Ir,A_e=Br;class s0 extends y_e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=E_e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new C7(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.log(`Cannot define '${n}', ${u.message}`),{name:n,type:"error"}}let s=r.dataType;if(s==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),s="number"),(0,p_e.isAtomicFieldType)(s)&&s!=="error"){const u={name:n,type:s,location:this.location};return u.e=r.value,r.expressionType&&(u.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(u.code=this.exprSrc),(0,m_e.isGranularResult)(r)&&(u.type==="timestamp"||u.type==="date")&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof C7&&e.foundCircle)&&r.dataType!=="error"){const u=g_e.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new sQ(e,this))}}xn.AtomicFieldDeclaration=s0;class v_e extends s0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}xn.CalculateFieldDeclaration=v_e;class S_e extends s0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckAggregate)(e,this)}}xn.AggregateFieldDeclaration=S_e;class __e extends s0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckGroupBy)(e,this)}}xn.GroupByFieldDeclaration=__e;class C_e extends s0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckProject)(e,this)}}xn.ProjectFieldDeclaration=C_e;class b_e extends s0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckDeclare)(e,this)}}xn.DeclareFieldDeclaration=b_e;class T_e extends s0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckMeasure)(e,this)}}xn.MeasureFieldDeclaration=T_e;class R_e extends s0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,df.typecheckDimension)(e,this)}}xn.DimensionFieldDeclaration=R_e;class C7{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:`Circular reference to '${this.circular.defineName}' in definition`,found:void 0}):this.realFS.lookup(e)}entries(){return this.realFS.entries()}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=C7;class sQ extends A_e.SpaceField{constructor(e,n){super(),this.space=e,this.exprDef=n,this.fieldName=n.defineName}get name(){return this.fieldName}fieldDef(){return this.haveFieldDef||(this.haveFieldDef=this.exprDef.fieldDef(this.space,this.name)),this.haveFieldDef}getQueryFieldDef(e){if(!this.qfd){const n=this.exprDef.queryFieldDef(e,this.name);this.qfd=n}return this.qfd}typeDesc(){const e=this.qfd||this.fieldDef();return this.fieldTypeFromFieldDef(e)}}xn.FieldDefinitionValue=sQ;var N4={};Object.defineProperty(N4,"__esModule",{value:!0}),N4.Aggregate=void 0;const O_e=Zi,oQ=En;let D_e=class extends O_e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=oQ.LegalRefinementStage.Single,this.forceQueryClass=oQ.QueryClass.Grouping}};N4.Aggregate=D_e;var w4={};Object.defineProperty(w4,"__esModule",{value:!0}),w4.Calculate=void 0;const N_e=Zi,w_e=En;class F_e extends N_e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=w_e.LegalRefinementStage.Single}}w4.Calculate=F_e;var Rg={};Object.defineProperty(Rg,"__esModule",{value:!0}),Rg.Dimensions=void 0;const L_e=ql;class I_e extends L_e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}Rg.Dimensions=I_e;var Og={};Object.defineProperty(Og,"__esModule",{value:!0}),Og.Measures=void 0;const B_e=ql;class $_e extends B_e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}Og.Measures=$_e;var F4={};Object.defineProperty(F4,"__esModule",{value:!0}),F4.Nests=void 0;const k_e=Zi,uQ=En;class P_e extends k_e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=uQ.LegalRefinementStage.Single,this.forceQueryClass=uQ.QueryClass.Grouping}}F4.Nests=P_e;var L4={};Object.defineProperty(L4,"__esModule",{value:!0}),L4.ProjectStatement=void 0;const M_e=Zi,aQ=En;class j_e extends M_e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=aQ.QueryClass.Project,this.queryRefinementStage=aQ.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}L4.ProjectStatement=j_e;var o0={},Oa={};Object.defineProperty(Oa,"__esModule",{value:!0}),Oa.findReferences=Oa.deprecatedParseTableURI=Oa.constructTableKey=void 0;const U_e=Ml,b7=rn;function T7(t){const e=(0,b7.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,b7.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class q_e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=lQ(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,b7.getId)(e.connectionId()),r=T7(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=T7(e.tableURI()),{connectionName:r,tablePath:i}=cQ(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=T7(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function lQ(t,e){return t===void 0?e:`${t}:${e}`}Oa.constructTableKey=lQ;function cQ(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Oa.deprecatedParseTableURI=cQ;function z_e(t,e,n){const r=new q_e(t,e),i=r;return U_e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Oa.findReferences=z_e,Object.defineProperty(o0,"__esModule",{value:!0}),o0.TableFunctionSource=o0.TableMethodSource=o0.TableSource=void 0;const fQ=Oa,H_e=uo,xQ=$r;class R7 extends H_e.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return xQ.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,fQ.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.log(l),xQ.ErrorFactory.structDef}}o0.TableSource=R7;class Q_e extends R7{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.log(`${this.connectionName.refString} is not a connection`);return}return{tablePath:this.tablePath,connectionName:this.connectionName.refString}}}o0.TableMethodSource=Q_e;class G_e extends R7{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,fQ.deprecatedParseTableURI)(this.tableURI)}}o0.TableFunctionSource=G_e;var I4={};Object.defineProperty(I4,"__esModule",{value:!0}),I4.SQLString=void 0;const W_e=Ge,dQ=fu;class V_e extends W_e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(Y_e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof dQ.SourceQueryElement?(this.elements.push(e),this.containsQueries=!0,e.parent=this):e.log("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("Cannot expand into a query")}return e}}I4.SQLString=V_e;function Y_e(t){return t instanceof dQ.SourceQueryElement}var B4={};Object.defineProperty(B4,"__esModule",{value:!0}),B4.SourceDesc=void 0;const X_e=Ge;class K_e extends X_e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}B4.SourceDesc=K_e;var $4={};Object.defineProperty($4,"__esModule",{value:!0}),$4.isSourceProperty=void 0;const J_e=ao,Z_e=Ri,eCe=ql,tCe=Od,nCe=Hl,rCe=Dd,iCe=Nd,sCe=wd,oCe=zl;function uCe(t){return t instanceof J_e.Filter||t instanceof Z_e.Joins||t instanceof eCe.DeclareFields||t instanceof tCe.FieldListEdit||t instanceof nCe.Renames||t instanceof rCe.PrimaryKey||t instanceof oCe.ObjectAnnotation||t instanceof iCe.Views||t instanceof sCe.TimezoneStatement}$4.isSourceProperty=uCe;var k4={};Object.defineProperty(k4,"__esModule",{value:!0}),k4.isFieldCollectionMember=void 0;const aCe=xn,hQ=pt;function lCe(t){return t instanceof hQ.FieldReference||t instanceof hQ.WildcardFieldReference||t instanceof aCe.AtomicFieldDeclaration}k4.isFieldCollectionMember=lCe;var P4={};Object.defineProperty(P4,"__esModule",{value:!0}),P4.isQueryElement=void 0;const cCe=Fd,fCe=Ld,xCe=Xp,dCe=Kp;function hCe(t){return t instanceof cCe.QueryArrow||t instanceof fCe.QueryRefine||t instanceof xCe.QueryReference||t instanceof dCe.QueryRaw}P4.isQueryElement=hCe;var pQ={};Object.defineProperty(pQ,"__esModule",{value:!0});var M4={};Object.defineProperty(M4,"__esModule",{value:!0}),M4.isQueryProperty=void 0;function pCe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}M4.isQueryProperty=pCe;var j4={};Object.defineProperty(j4,"__esModule",{value:!0}),j4.isQueryExtendProperty=void 0;const gCe=Rg,mCe=Ri,yCe=Og;function ECe(t){return t instanceof gCe.Dimensions||t instanceof yCe.Measures||t instanceof mCe.Joins}j4.isQueryExtendProperty=ECe;var U4={};Object.defineProperty(U4,"__esModule",{value:!0}),U4.isFieldPropStatement=void 0;const ACe=Gl,vCe=ao,SCe=Vl,_Ce=jd;function CCe(t){return t instanceof vCe.Filter||t instanceof SCe.Limit||t instanceof _Ce.PartitionBy||t instanceof ACe.FunctionOrdering}U4.isFieldPropStatement=CCe,function(t){var e=w&&w.__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=w&&w.__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(Ip,t),n(Cd,t),n(bd,t),n(uo,t),n(Up,t),n(fu,t),n(dv,t),n(hv,t),n(mv,t),n(Gp,t),n(Av,t),n(Od,t),n(Dd,t),n(Hl,t),n(Nd,t),n(wd,t),n(vv,t),n(Pd,t),n(_v,t),n(Gl,t),n(Cv,t),n(ba,t),n(bv,t),n(Md,t),n(Tv,t),n(Rv,t),n(Ov,t),n(Zp,t),n(Dv,t),n(Nv,t),n(Fv,t),n(ig,t),n(tg,t),n(ef,t),n(Lv,t),n(Iv,t),n($v,t),n(Pv,t),n(Mv,t),n(jv,t),n(Uv,t),n(qv,t),n(zv,t),n(Hv,t),n(Qv,t),n(Gv,t),n(Wv,t),n(Vv,t),n(Yv,t),n(Jv,t),n(Zn,t),n(h4,t),n(jd,t),n(Yd,t),n(Ql,t),n(g4,t),n(m4,t),n(sg,t),n(n0,t),n(Ag,t),n(y4,t),n(E4,t),n(A4,t),n(Ld,t),n(Fd,t),n(r0,t),n(v4,t),n(S4,t),n(_4,t),n(C4,t),n(xn,t),n(pt,t),n(N4,t),n(w4,t),n(ql,t),n(Rg,t),n(Ag,t),n(ao,t),n(bg,t),n(_g,t),n(Ri,t),n(Bp,t),n(Vl,t),n(Og,t),n(Ip,t),n(F4,t),n(ff,t),n(L4,t),n(Sg,t),n(Cg,t),n(Tg,t),n(Id,t),n(Zc,t),n(Jp,t),n(o0,t),n(I4,t),n(zl,t),n(xu,t),n(B4,t),n($4,t),n(dt,t),n(k4,t),n(Yl,t),n(Ge,t),n(P4,t),n(pQ,t),n(M4,t),n(j4,t),n(U4,t)}(JA);var q4={},Xd={};Object.defineProperty(Xd,"__esModule",{value:!0}),Xd.ConstantExpression=Xd.ConstantFieldSpace=void 0;const bCe=dt;class gQ{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:"Only constants allowed in parameter default values",found:void 0}}entries(){return[]}entry(){}dialectObj(){}isQueryFieldSpace(){return!1}}Xd.ConstantFieldSpace=gQ;class TCe extends bCe.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 gQ),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)}}Xd.ConstantExpression=TCe;var RCe=w&&w.__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]}),OCe=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),DCe=w&&w.__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)&&RCe(e,t,n);return OCe(e,t),e};Object.defineProperty(q4,"__esModule",{value:!0}),q4.MalloyToAST=void 0;const mQ=eE,NCe=$p,ie=DCe(JA),wCe=Yn,FCe=JA,kn=rn,O7=ce,LCe=_a,ICe=Xd;class yQ extends ie.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class D7 extends ie.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const BCe=["##! m4warnings=error"];class $Ce extends NCe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of BCe){const s=LCe.Tag.fromTagline(i,this.compilerFlags);this.compilerFlags=s.tag}}internalError(e,n){const r=`Internal Translator Error: ${n}`;return this.contextError(e,r),new Error(r)}astError(e,n,r="error"){this.msgLog.log({message:n,at:e.location,severity:r})}getLocation(e){return{url:this.parseInfo.sourceURL,range:this.parseInfo.rangeFromContext(e)}}contextError(e,n,r="error"){this.msgLog.log({message:n,at:this.getLocation(e),severity:r})}warnWithReplacement(e,n,r){this.msgLog.log({message:e,at:{url:this.parseInfo.sourceURL,range:n},severity:"warn",replacement:r})}inExperiment(e,n){const r=this.compilerFlags.tag("experimental");return r&&(r.bare()||r.has(e))?!0:(this.contextError(n,`Experimental flag '${e}' required to enable this feature`),!1)}m4Severity(){const e=this.compilerFlags.tag("m4warnings");return e?e.text()==="warn"?"warn":"error":!1}m4advisory(e,n){const r=this.m4Severity();r&&this.contextError(e,n,r)}only(e,n,r){const i=[];for(const s of e){const o=n(s);o?i.push(o):s instanceof D7||this.astError(s,`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 ie.FieldName((0,kn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ie.ModelEntryReference((0,kn.getId)(e)),e.id())}defaultResult(){return new ie.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 wCe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ie.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 ie.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 `{? condition }` is deprecated; use `{ where: condition } instead"),new ie.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,kn.getPlainString)(e);for(const i of r)i instanceof mQ.ParserRuleContext&&this.contextError(i,"%{ query } illegal in this string");return n||""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,kn.getStringParts)(e))r instanceof mQ.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,"Time data parse error"),r=new ie.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=>ie.isDocStatementOrDocStatementList(r)&&r,"statement");return new ie.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ie.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new ICe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ie.HasParameter({name:(0,kn.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 ie.DefineSource((0,kn.getId)(e.sourceNameDef()),n instanceof ie.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=>ie.isSourceProperty(s)&&s,"source property"),i=new ie.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new ie.TableFunctionSource(n),e);return this.m4advisory(e,"`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 ie.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ie.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,kn.getShortString)(o));const u=new ie.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 ie.Join&&(n.push(s),s instanceof ie.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof ie.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new ie.Joins(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 ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin&&(s.joinType="one"));const i=new ie.Joins(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 ie.Join&&(r.push(s),s instanceof ie.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new ie.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}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 ie.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new ie.SQReference(r),notes:[]}}visitQueryJoinStatement(e){const n=this.astAt(this.visit(e.joinStatement()),e);return this.m4advisory(e,"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 ie.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,O7.isMatrixOperation)(a)?o.matrixOperation=a:this.contextError(e,"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 ie.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,kn.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(),ie.DimensionFieldDeclaration),r=new ie.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.MeasureFieldDeclaration),r=new ie.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(ie.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ie.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ie.DeclareFieldDeclaration),r=new ie.DeclareFields(n),i=this.astAt(r,e);return this.m4advisory(e,"`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 ie.RenameField((0,kn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ie.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ie.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 ie.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,"Use view: inside of a source instead of query:"),n}visitDefExplorePrimaryKey(e){const n=new ie.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ie.AcceptExceptFieldReference([this.getFieldName(r)]));return new ie.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ie.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new ie.TimezoneStatement(n),e.string());return r.isValid||this.astError(r,`Invalid timezone: ${r.tz}`),this.astAt(r,e)}visitQueryProperties(e){const n=this.only(e.queryStatement().map(i=>this.astAt(this.visit(i),i)),i=>ie.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ie.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 ie.FieldReference||i instanceof ie.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ie.Aggregate(this.getQueryItems(e.queryFieldList(),ie.AggregateFieldDeclaration,ie.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ie.GroupBy(this.getQueryItems(e.queryFieldList(),ie.GroupByFieldDeclaration,ie.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ie.Calculate(this.getQueryItems(e.queryFieldList(),ie.CalculateFieldDeclaration,ie.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(),ie.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ie.ExprGranularTime(new ie.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ie.ExprSum(void 0,o);else return this.contextError(l,`\`${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,ie.ProjectFieldDeclaration,ie.ProjectFieldReference));return this.astAt(new ie.ProjectStatement(n),e)}visitProjectStatement(e){e.PROJECT()&&this.m4advisory(e,"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,ie.ProjectFieldReference):void 0,s=this.astAt(new ie.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,kn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ie.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ie.IndexFieldReference);return r.STAR()?this.astAt(new ie.WildcardFieldReference(s),e):this.astAt(s,e)});return new ie.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ie.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 ie.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 ie.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 ie.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ie.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ie.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 ie.Ordering(n),e)}visitTopStatement(e){const n=e.bySpec(),r=this.getNumber(e.INTEGER_LITERAL());let i;if(n){this.m4advisory(n,"by clause of top statement unupported. Use order_by instead");const s=n.fieldName();if(s){const u=this.getFieldName(s);i=new ie.Top(r,u)}const o=n.fieldExpr();o&&(i=new ie.Top(r,this.getFieldExpr(o)))}return i||(i=new ie.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 ie.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,kn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ie.SourceQueryElement){const s=new ie.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 ie.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:` 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 ie.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 ie.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ie.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,kn.getId)(n);else{const u=i.getImplicitName();u===void 0&&this.contextError(e,"`nest:` view requires a name (add `nest_name is ...`)"),r=u??"__unnamed__"}const s=new ie.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,kn.getId)(e.exploreQueryNameDef()),r=new ie.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 ie.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ie.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 ie.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ie.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ie.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ie.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(ie.isComparison(i))return this.astAt(new ie.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new ie.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ie.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ie.ExprNow}visitExprNumber(e){return new ie.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ie.ExprIdReference(this.getFieldPath(e.fieldPath(),ie.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ie.ExprNULL}visitExprExpr(e){return new ie.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ie.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 ie.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ie.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ie.isComparison(n))return new ie.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 ie.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,ie.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,"Expression illegal inside path.count()"),new ie.ExprCount(i);const u=o?this.getFieldExpr(o):void 0;if(s==="min"||s==="max")if(u)this.contextError(e,this.symmetricAggregateUsageError(s));else{const a=this.astAt(new ie.ExprIdReference(r),n);return s==="min"?new ie.ExprMin(a):new ie.ExprMax(a)}else{if(s==="avg")return new ie.ExprAvg(u,i);if(s==="sum")return new ie.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new ie.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,`* illegal inside ${s}()`),s==="count")return this.astAt(r?new ie.ExprCountDistinct(r):new ie.ExprCount,e);if(s==="min"){if(r)return new ie.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ie.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new ie.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ie.ExprAvg(r,i,o);if(s==="sum")return new ie.ExprSum(r,i,o)}return new ie.ExprNULL}visitExprApply(e){return new ie.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ie.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,O7.isCastType)(n))return n;throw this.internalError(e,`unknown type '${n}'`)}getMalloyOrSQLType(e){const n=e.malloyType();if(n)return this.getMalloyType(n);const r=e.string();if(r)return{raw:this.getPlainStringFrom({string:()=>r})};throw this.internalError(e,"Expected Malloy or SQL type to either be a Malloy type or a string")}visitExprSafeCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ie.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ie.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ie.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ie.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,kn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ie.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ie.ExprTimeExtract.extractor(i)?this.astAt(new ie.ExprTimeExtract(i,r),e):this.astAt(new ie.ExprFunc(i,r,!1,void 0,u),e)}visitExprFunc(e){var n,r;const i=e.argumentList(),s=i?this.allFieldExpressions(i.fieldExpr()):[],o=e.EXCLAM()!==void 0,u=(n=e.malloyType())===null||n===void 0?void 0:n.text;let a;u&&((0,O7.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,kn.getOptionalId)(e)||((r=e.timeframe())===null||r===void 0?void 0:r.text);return l===void 0&&(this.contextError(e,"Function name error"),l="FUNCTION_NAME_ERROR"),ie.ExprTimeExtract.extractor(l)?this.astAt(new ie.ExprTimeExtract(l,s),e):this.astAt(new ie.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ie.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 ie.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ie.Pick(n,this.getFieldExpr(e._pickElse)):new ie.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ie.isFieldPropStatement(r)&&r,"field property statement");return new ie.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ie.PartitionBy(e.id().map(n=>this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,kn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ie.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ie.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ie.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ie.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ie.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ie.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ie.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new ie.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 ie.ImportSourceName((0,kn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ie.ImportSelect((0,kn.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 ie.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ie.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ie.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ie.ModelAnnotation(n);return this.compilerFlags=r.getCompilerFlags(this.compilerFlags,this.msgLog),r}visitIgnoredObjectAnnotations(e){return this.contextError(e,"Object annotation not connected to any object"),new D7(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new D7(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ie.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ie.PartitionByFieldReference([this.astAt(new ie.FieldName((0,kn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ie.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 ie.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ie.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new yQ)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ie.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 ie.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ie.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ie.ReferenceView(this.getFieldPath(e.fieldPath(),ie.ViewOrScalarFieldReference))}visitSegOps(e){return new ie.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ie.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ie.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ie.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof FCe.TableSource){const r=new ie.SQSource(n);return this.astAt(r,e)}return new yQ}visitSQSQL(e){const n=new ie.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ie.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("Use Malloy operator '!~' instead of 'NOT LIKE'",s,`${r.text} !~ ${i.text}`)):this.warnWithReplacement("Use Malloy operator '~' instead of 'LIKE'",s,`${r.text} ~ ${i.text}`),this.astAt(new ie.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("Use '!= NULL' to check for NULL instead of 'IS NOT NULL'",i,`${r.text} != null`)):this.warnWithReplacement("Use '= NULL' to check for NULL instead of 'IS NULL'",i,`${r.text} = null`);const s=new ie.ExprNULL;return this.astAt(new ie.ExprCompare(this.getFieldExpr(r),n,s),e)}}q4.MalloyToAST=$Ce;var z4={};Object.defineProperty(z4,"__esModule",{value:!0}),z4.MessageLog=void 0;class kCe{constructor(){this.rawLog=[]}getLog(){return this.rawLog}log(e){const n=e.message;if(n.endsWith("]")){const r=n.lastIndexOf("[");r>0&&(e.message=n.slice(0,r),e.errorTag=n.slice(r+1,-1))}this.rawLog.push(e)}reset(){this.rawLog.length=0}noErrors(){return!this.hasErrors()}hasErrors(){return this.rawLog.find(n=>n.severity!=="warn")!==void 0}empty(){return this.rawLog.length===0}}z4.MessageLog=kCe;var H4={};Object.defineProperty(H4,"__esModule",{value:!0}),H4.Zone=void 0;class PCe{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})}}H4.Zone=PCe;var Q4={};Object.defineProperty(Q4,"__esModule",{value:!0}),Q4.walkForDocumentSymbols=void 0;const MCe=Ml,jCe=rn;class UCe{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,jCe.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 qCe(t,e,n){const r=new UCe(t,e,[],[]),i=r;return MCe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Q4.walkForDocumentSymbols=qCe;var G4={};Object.defineProperty(G4,"__esModule",{value:!0}),G4.walkForDocumentCompletions=void 0;const zCe=Ml,HCe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],QCe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],GCe=["source","explore","query","sql"];class WCe{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 HCe)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 QCe)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 GCe)this.completions.push({type:"model_property",text:`${r}: `})}}}function VCe(t,e,n){const r=new WCe(t,[],n),i=r;return zCe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}G4.walkForDocumentCompletions=VCe;var W4={};Object.defineProperty(W4,"__esModule",{value:!0}),W4.walkForDocumentHelpContext=void 0;const YCe=fO;class XCe extends YCe.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 KCe(t,e){return new XCe(e).visit(t)}W4.walkForDocumentHelpContext=KCe;var V4={},Dg={};Object.defineProperty(Dg,"__esModule",{value:!0}),Dg.locationContainsPosition=void 0;function JCe(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)}Dg.locationContainsPosition=JCe,Object.defineProperty(V4,"__esModule",{value:!0}),V4.ReferenceList=void 0;const ZCe=Dg;class ebe{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,ZCe.locationContainsPosition)(r.location,e))return r}}V4.ReferenceList=ebe;var Y4={};Object.defineProperty(Y4,"__esModule",{value:!0}),Y4.isNeedResponse=void 0;function tbe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}Y4.isNeedResponse=tbe;var X4={};Object.defineProperty(X4,"__esModule",{value:!0}),X4.walkForModelAnnotation=void 0;const nbe=Ml;class rbe{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 ibe(t,e,n){const r=new rbe(t,e,n),i=r;return nbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}X4.walkForModelAnnotation=ibe;var K4={};Object.defineProperty(K4,"__esModule",{value:!0}),K4.walkForTablePath=void 0;const EQ=rn,sbe=Ml;class obe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,EQ.getId)(e.connectionId()),[r,i]=(0,EQ.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function ube(t,e,n){const r=new obe(t,e),i=r;return sbe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}K4.walkForTablePath=ube;var abe=w&&w.__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]}),lbe=w&&w.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),cbe=w&&w.__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)&&abe(e,t,n);return lbe(e,t),e};Object.defineProperty(Go,"__esModule",{value:!0}),Go.MalloyParserErrorHandler=Go.MalloyTranslator=Go.MalloyChildTranslator=Go.MalloyTranslation=void 0;const AQ=eE,fbe=dA,xbe=F,vQ=cbe(JA),dbe=q4,hbe=z4,pbe=Oa,N7=H4,gbe=Q4,mbe=G4,ybe=W4,Ebe=V4,J4=Y4,Abe=Dg,SQ=_a,vbe=X4,Sbe=K4;class _be extends fbe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class Cbe{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.logger.log({message:`Could not compute full path URL: ${o}`,severity:"error"})}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.message.includes(e.sourceURL)?`import error: ${n.message}`:`import '${e.sourceURL}' error: ${n.message}`,o=n.firstReference||e.defaultLocation();return e.root.logger.log({message:s,at:o,severity:"error"}),this.response=e.fatalResponse(),this.response}return{urls:[e.sourceURL]}}const r=n.value===""?`
1302
1302
  `:n.value;this.sourceInfo=this.getSourceInfo(r);let i;try{i=this.runParser(r,e)}catch(s){e.root.logger.log({message:`Malloy internal parser exception [${s.message}]`,severity:"error"}),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=AQ.CharStreams.fromString(e),i=new _be(r),s=new AQ.CommonTokenStream(i),o=new xbe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new CQ(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 bbe{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,pbe.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.logger.log({message:`Malformed URL '${o}'"`,at:{url:e.sourceURL,range:u},severity:"error"})}}}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,J4.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,J4.isNeedResponse)(u))return u}return null}}class Tbe{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 dbe.MalloyToAST(i,e.root.logger,e.compilerFlags),o=s.visit(i.root);if(e.compilerFlags=s.compilerFlags,o.elementType==="unimplemented"&&o.log("INTERNAL COMPILER ERROR: Untranslated parse node"),!this.walked){for(const u of o.walk())u instanceof vQ.Unimplemented&&u.log("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,J4.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class Rbe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,gbe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class Obe{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,mbe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class Dbe{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,ybe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class Nbe{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,vbe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class wbe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,Sbe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class Fbe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=SQ.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,J4.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof vQ.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.logger.log({message:`'${e.sourceURL}' did not parse to malloy document`,at:e.defaultLocation(),severity:"error"});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 w7{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new SQ.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new Cbe,this.modelAnnotationStep=new Nbe(this.parseStep),this.metadataStep=new Rbe(this.parseStep),this.completionsStep=new Obe(this.parseStep),this.helpContextStep=new Dbe(this.parseStep),this.importsAndTablesStep=new bbe(this.parseStep),this.astStep=new Tbe(this.importsAndTablesStep),this.tablePathInfoStep=new wbe(this.parseStep),this.translateStep=new Fbe(this.astStep),this.references=new Ebe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new _Q(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}
1303
1303
  | ${l}`,u>0&&(i=i+`