@malloydata/render 0.0.179-dev240904162152 → 0.0.179-dev240904175913
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/index.mjs +12227 -11985
- package/dist/module/index.umd.js +248 -248
- package/dist/register/register.mjs +1 -1
- package/dist/register/register.umd.js +1 -1
- package/dist/webcomponent/malloy-render.mjs +1 -1
- package/dist/webcomponent/malloy-render.umd.js +1 -1
- package/package.json +2 -2
|
@@ -1300,7 +1300,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
|
|
|
1300
1300
|
`)+`
|
|
1301
1301
|
${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Wu)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)}}We.MalloyElement=Wu;class LEe extends Wu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}We.Unimplemented=LEe;class yD extends Wu{constructor(e){super(),this.name=e,this.elementType="modelEntryReference"}get refString(){return this.name}toString(){return this.refString}getNamed(){var e;return(e=this.modelEntry(this))===null||e===void 0?void 0:e.entry}}We.ModelEntryReference=yD;class IEe extends Wu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}We.ExperimentalExperiment=IEe;function cQ(t){return t.execute!==void 0}We.isDocStatement=cQ;function $Ee(t){return t instanceof Pm||cQ(t)}We.isDocStatementOrDocStatementList=$Ee;class fQ extends Wu{constructor(e){super(),this.elements=e,this.newContents()}newContents(){this.has({listOf:this.elements})}get list(){return this.elements}empty(){return this.elements.length===0}notEmpty(){return this.elements.length>0}push(...e){return this.elements.push(...e),this.newContents(),this.elements}needs(e){for(const n of this.elements){const r=n.needs(e);if(r)return r}}}We.ListOf=fQ;class Pm extends fQ{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=lQ.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,lQ.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof Pm){const r=n.executeList(e);if(r)return r}else{const r=n.needs(e);if(r)return r;n.execute(e)}this.execCursor+=1}}}We.DocStatementList=Pm;const BEe="5a79a191-06bc-43cf-9b12-58741cd82970";function xQ(t){const e=t.inherits?xQ(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 kEe(t){const e=xQ(t).join("");return(0,wEe.v5)(e,BEe)}class ED extends Wu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new FEe.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new DEe.Tag({}),this.modelAnnotationTodoList=[],this.statements=new Pm(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=kEe(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,REe.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}We.Document=ED;var g_={},l2={},Wr={},$0={};Object.defineProperty($0,"__esModule",{value:!0}),$0.canMakeEntry=$0.SpaceEntry=void 0;class PEe{}$0.SpaceEntry=PEe;function MEe(t){return"makeEntry"in t}$0.canMakeEntry=MEe,Object.defineProperty(Wr,"__esModule",{value:!0}),Wr.SpaceField=void 0;const jEe=le,UEe=$0;class qEe extends UEe.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,jEe.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(){}}Wr.SpaceField=qEe,Object.defineProperty(l2,"__esModule",{value:!0}),l2.ViewField=void 0;const zEe=Wr;class HEe extends zEe.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}l2.ViewField=HEe,Object.defineProperty(g_,"__esModule",{value:!0}),g_.ASTViewField=void 0;const QEe=l2;class GEe extends QEe.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)}}g_.ASTViewField=GEe,Object.defineProperty(Lm,"__esModule",{value:!0}),Lm.ViewFieldDeclaration=void 0;const WEe=We,VEe=Gr,YEe=o2,KEe=g_;class XEe extends WEe.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=VEe.extendNoteMethod}makeEntry(e){const n=new KEe.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,YEe.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}Lm.ViewFieldDeclaration=XEe;var On={};Object.defineProperty(On,"__esModule",{value:!0}),On.LegalRefinementStage=On.QueryClass=void 0;var dQ;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(dQ||(On.QueryClass=dQ={}));var hQ;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(hQ||(On.LegalRefinementStage=hQ={})),Object.defineProperty(wm,"__esModule",{value:!0}),wm.NestFieldDeclaration=void 0;const JEe=o2,ZEe=Lm,pQ=On;class eAe extends ZEe.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=pQ.LegalRefinementStage.Single,this.forceQueryClass=pQ.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,JEe.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")}}wm.NestFieldDeclaration=eAe;var c2={},Vr={};Object.defineProperty(Vr,"__esModule",{value:!0}),Vr.ErrorFactory=void 0;const gQ={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class AD{static get structDef(){return{...gQ}}static isErrorStructDef(e){return e.name.includes(gQ.name)}static get query(){return{structRef:AD.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Vr.ErrorFactory=AD,Object.defineProperty(c2,"__esModule",{value:!0}),c2.DefineSourceList=c2.DefineSource=void 0;const tAe=Vr,mQ=We,nAe=Gr;class rAe extends mQ.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=nAe.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),tAe.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`)}}c2.DefineSource=rAe;class iAe extends mQ.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}c2.DefineSourceList=iAe;var f2={};Object.defineProperty(f2,"__esModule",{value:!0}),f2.DefineQueryList=f2.DefineQuery=void 0;const yQ=We,sAe=Gr;class oAe extends yQ.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=sAe.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})}}f2.DefineQuery=oAe;class uAe extends yQ.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}f2.DefineQueryList=uAe;var jo={};Object.defineProperty(jo,"__esModule",{value:!0}),jo.Source=void 0;const aAe=We;class lAe extends aAe.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)}}}jo.Source=lAe;var Mm={},x2={},m_={},B0={};Object.defineProperty(B0,"__esModule",{value:!0}),B0.mergeFields=B0.nameFromDef=void 0;function vD(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}B0.nameFromDef=vD;function cAe(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>vD(i))),r=t.filter(i=>!n.has(vD(i)));return r.push(...e),r}B0.mergeFields=cAe;var jm={},Yr={},Vu={};Object.defineProperty(Vu,"__esModule",{value:!0}),Vu.DefinedParameter=Vu.AbstractParameter=Vu.SpaceParam=void 0;const fAe=$0;class SD extends fAe.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Vu.SpaceParam=SD;class xAe extends SD{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"}}}Vu.AbstractParameter=xAe;class dAe extends SD{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Vu.DefinedParameter=dAe;var dx={};Object.defineProperty(dx,"__esModule",{value:!0}),dx.StructSpaceFieldBase=void 0;const hAe=Wr;class pAe extends hAe.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"}}}dx.StructSpaceFieldBase=pAe;var Um={};Object.defineProperty(Um,"__esModule",{value:!0}),Um.ColumnSpaceField=void 0;const gAe=Wr;class mAe extends gAe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Um.ColumnSpaceField=mAe;var y_={};Object.defineProperty(y_,"__esModule",{value:!0}),y_.IRViewField=void 0;const yAe=l2;class EAe extends yAe.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()}}y_.IRViewField=EAe,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.StructSpaceField=Yr.StaticSpace=void 0;const AAe=Ou,vAe=le,SAe=Vu,_Ae=Wr,E_=dx,CAe=Um,bAe=y_;class EQ{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,AAe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new AQ(e):(0,vAe.isTurtleDef)(e)?new bAe.IRViewField(this,e):new CAe.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 SAe.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 _Ae.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof E_.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof E_.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof E_.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}}Yr.StaticSpace=EQ;class AQ extends E_.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new EQ(this.sourceDef)}}Yr.StructSpaceField=AQ,Object.defineProperty(jm,"__esModule",{value:!0}),jm.JoinSpaceField=void 0;const TAe=Yr;class OAe extends TAe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}jm.JoinSpaceField=OAe;var qm={};Object.defineProperty(qm,"__esModule",{value:!0}),qm.SpaceSeed=void 0;const RAe=Yr;function vQ(t){return t.type==="fieldSpace"}class NAe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return vQ(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return vQ(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new RAe.StaticSpace(this.spaceSpec)),this.asFS)}}qm.SpaceSeed=NAe;var d2={};Object.defineProperty(d2,"__esModule",{value:!0}),d2.ParameterSpace=void 0;const DAe=Vu;class FAe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new DAe.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}}d2.ParameterSpace=FAe,Object.defineProperty(m_,"__esModule",{value:!0}),m_.DynamicSpace=void 0;const wAe=B0,LAe=Vr,IAe=Wr,$Ae=jm,BAe=l2,SQ=Vu,kAe=qm,PAe=Yr,MAe=dx,jAe=d2;class UAe extends PAe.StaticSpace{constructor(e){const n=new kAe.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 SQ.AbstractParameter(n)));return this}parameterSpace(){return new jAe.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,wAe.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 SQ.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 MAe.StructSpaceFieldBase?r.push([a,l]):l instanceof BAe.ViewField?i.push([a,l]):l instanceof IAe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof $Ae.JoinSpaceField){const l=a.join.structDef(u);LAe.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}}m_.DynamicSpace=UAe,Object.defineProperty(x2,"__esModule",{value:!0}),x2.RefinedSpace=void 0;const qAe=m_,zAe=$0;class _D extends qAe.DynamicSpace{static filteredFrom(e,n,r){const i=new _D(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,zAe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}x2.RefinedSpace=_D;var k0={},bs={};Object.defineProperty(bs,"__esModule",{value:!0}),bs.DefinitionList=void 0;const HAe=We,_Q=Gr;class QAe extends HAe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,_Q.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,_Q.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}bs.DefinitionList=QAe,Object.defineProperty(k0,"__esModule",{value:!0}),k0.DeclareFields=void 0;const GAe=bs,WAe=On;class VAe extends GAe.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=WAe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}k0.DeclareFields=VAe;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Filter=Uo.FilterElement=void 0;const CQ=le,bQ=We,CD=On;class YAe extends bQ.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}}}Uo.FilterElement=YAe;let KAe=class extends bQ.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=CD.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?CD.LegalRefinementStage.Tail:CD.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,CQ.expressionIsAggregate)(i.expressionType),o=(0,CQ.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}};Uo.Filter=KAe;var Xi={};Object.defineProperty(Xi,"__esModule",{value:!0}),Xi.Joins=Xi.ExpressionJoin=Xi.KeyJoin=Xi.Join=void 0;const XAe=le,JAe=jm,ZAe=bs,eve=We,tve=Gr,nve=On,TQ=Vr;class bD extends eve.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=tve.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new JAe.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"),TQ.ErrorFactory.structDef)}}Xi.Join=bD;class rve extends bD{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")}}Xi.KeyJoin=rve;class ive extends bD{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,XAe.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"),TQ.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}}Xi.ExpressionJoin=ive;class sve extends ZAe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=nve.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}Xi.Joins=sve;var h2={};Object.defineProperty(h2,"__esModule",{value:!0}),h2.FieldListEdit=void 0;const ove=We;class uve extends ove.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}h2.FieldListEdit=uve;var p2={};Object.defineProperty(p2,"__esModule",{value:!0}),p2.PrimaryKey=void 0;const ave=We;class lve extends ave.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}p2.PrimaryKey=lve;var g2={};Object.defineProperty(g2,"__esModule",{value:!0}),g2.Views=void 0;const cve=bs;class fve extends cve.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}g2.Views=fve;var m2={};Object.defineProperty(m2,"__esModule",{value:!0}),m2.TimezoneStatement=void 0;const xve=We;class dve extends xve.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)}}m2.TimezoneStatement=dve;var P0={};Object.defineProperty(P0,"__esModule",{value:!0}),P0.ModelAnnotation=P0.ObjectAnnotation=void 0;const hve=gl,pve=We;class OQ extends pve.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}P0.ObjectAnnotation=OQ;class gve extends OQ{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=hve.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)}}P0.ModelAnnotation=gve;var M0={},A_={};Object.defineProperty(A_,"__esModule",{value:!0}),A_.RenameSpaceField=void 0;const mve=Wr;class yve extends mve.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()}}A_.RenameSpaceField=yve,Object.defineProperty(M0,"__esModule",{value:!0}),M0.Renames=M0.RenameField=void 0;const Eve=A_,RQ=We,Ave=Wr;class vve extends RQ.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 Ave.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new Eve.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}M0.RenameField=vve;class Sve extends RQ.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}M0.Renames=Sve,Object.defineProperty(Mm,"__esModule",{value:!0}),Mm.RefinedSource=void 0;const _ve=le,Cve=x2,bve=k0,Tve=Uo,Ove=Xi,Rve=h2,Nve=p2,Dve=g2,Fve=jo,wve=m2,Lve=P0,Ive=M0,$ve=d2;class Bve extends Fve.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 Lve.ObjectAnnotation)continue;const g=m;m instanceof Nve.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof Rve.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof bve.DeclareFields||m instanceof Ove.Joins||m instanceof Dve.Views||m instanceof Ive.Renames?o.push(...m.list):m instanceof Tve.Filter?u.push(m):m instanceof wve.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new $ve.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=Cve.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,_ve.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)}}Mm.RefinedSource=Bve;var Yu={};Object.defineProperty(Yu,"__esModule",{value:!0}),Yu.SourceQueryElement=void 0;const kve=We;class TD extends kve.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 TD&&n.errored){e=!1;break}return e}}Yu.SourceQueryElement=TD;var v_={},hx={};Object.defineProperty(hx,"__esModule",{value:!0}),hx.QuerySource=void 0;const Pve=jo;class Mve extends Pve.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)}}}hx.QuerySource=Mve;var y2={},zm={};Object.defineProperty(zm,"__esModule",{value:!0}),zm.QueryBase=void 0;const jve=o2,Uve=We;class qve extends Uve.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,jve.detectAndRemovePartialStages)(e.pipeline,this)}}}zm.QueryBase=qve,Object.defineProperty(y2,"__esModule",{value:!0}),y2.QueryArrow=void 0;const zve=le,Hve=jo,NQ=Yr,Qve=zm;class Gve extends Qve.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 Hve.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,zve.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new NQ.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new NQ.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}}}y2.QueryArrow=Gve,Object.defineProperty(v_,"__esModule",{value:!0}),v_.SQArrow=void 0;const Wve=Yu,Vve=hx,Yve=y2;class Kve extends Wve.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 Yve.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 Vve.QuerySource(e);return this.has({asSource:n}),n}}v_.SQArrow=Kve;var S_={},E2={},Ts={};Object.defineProperty(Ts,"__esModule",{value:!0}),Ts.getStructFieldDef=Ts.getFinalStruct=Ts.opOutputStruct=void 0;const Xve=y0,Jve=Df,OD=le,DQ=Vr;function FQ(t,e,n){const r=DQ.ErrorFactory.isErrorStructDef(e)||(0,OD.structHasErrors)(e);(0,OD.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,OD.segmentHasErrors)(n);if(!r&&!i)try{return Jve.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
|
|
1302
1302
|
QUERY: ${(0,Xve.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...DQ.ErrorFactory.structDef,dialect:e.dialect}}Ts.opOutputStruct=FQ;function Zve(t,e,n){for(const r of n)e=FQ(t,e,r);return e}Ts.getFinalStruct=Zve;function eSe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ts.getStructFieldDef=eSe,Object.defineProperty(E2,"__esModule",{value:!0}),E2.QueryRefine=void 0;const tSe=Yr,nSe=Ts,rSe=zm;class iSe extends rSe.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 tSe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,nSe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}E2.QueryRefine=iSe;var Hm={},A2={},lr={};Object.defineProperty(lr,"__esModule",{value:!0}),lr.timeResult=lr.resolution=lr.castDateToTimestamp=lr.castTimestampToDate=lr.castTo=lr.timeOffset=void 0;const sSe=le;function oSe(t,e,n,r,i){return{node:"delta",kids:{base:{...e,dataType:t},delta:r},op:n,units:i}}lr.timeOffset=oSe;function uSe(t,e,n,r=!1){const i={node:"cast",dstType:t,e,safe:r};return(0,sSe.isAtomicFieldType)(n)&&(i.srcType=n),i}lr.castTo=uSe;function aSe(t,e=!1){return{node:"cast",dstType:"date",srcType:"timestamp",e:t,safe:e}}lr.castTimestampToDate=aSe;function lSe(t,e=!1){return{node:"cast",dstType:"timestamp",srcType:"date",e:t,safe:e}}lr.castDateToTimestamp=lSe;function cSe(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}lr.resolution=cSe;function fSe(t,e){return e?{...t,timeframe:e}:t}lr.timeResult=fSe;var px={},cr={};Object.defineProperty(cr,"__esModule",{value:!0}),cr.errorFor=void 0;function xSe(t){return{dataType:"error",expressionType:"scalar",value:{node:"error",message:t},evalSpace:"constant"}}cr.errorFor=xSe;var xt={},v2={};Object.defineProperty(v2,"__esModule",{value:!0}),v2.nullsafeNot=void 0;function dSe(t,e){return e===void 0||e==="!="||e==="!~"?{node:"not",e:{node:"coalesce",kids:{left:t,right:{node:"false"}}}}:t}v2.nullsafeNot=dSe;var an={};Object.defineProperty(an,"__esModule",{value:!0}),an.FT=void 0;const hSe=Ru;function gx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class Rr{static in(e,n){return e?n.find(i=>Rr.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=>Rr.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,hSe.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}an.FT=Rr,Rr.nullT=gx("null"),Rr.numberT=gx("number"),Rr.stringT=gx("string"),Rr.dateT=gx("date"),Rr.timestampT=gx("timestamp"),Rr.boolT=gx("boolean"),Rr.anyAtomicT=[Rr.numberT,Rr.stringT,Rr.dateT,Rr.timestampT,Rr.boolT],Rr.aggregateBoolT=gx("boolean","aggregate");var S2={};Object.defineProperty(S2,"__esModule",{value:!0}),S2.isGranularResult=void 0;function pSe(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}S2.isGranularResult=pSe;var Ku={};Object.defineProperty(Ku,"__esModule",{value:!0}),Ku.isComparison=Ku.isEquality=Ku.getExprNode=void 0;function gSe(t){switch(t){case"~":return"like";case"!~":return"!like"}return t}Ku.getExprNode=gSe;function wQ(t){return t==="="||t==="!="||t==="~"||t==="!~"}Ku.isEquality=wQ;function mSe(t){return wQ(t)||t===">="||t==="<="||t===">"||t==="<"}Ku.isComparison=mSe,Object.defineProperty(xt,"__esModule",{value:!0}),xt.applyBinary=xt.getMorphicValue=xt.ExprDuration=xt.ExpressionDef=void 0;const Rn=le,_2=cr,LQ=v2,mx=an,__=lr,IQ=S2,ySe=We,Qm=Ku;class ESe extends Error{}class $Q extends ySe.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=mx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!mx.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 ${mx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return jQ(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Rn.expressionIsAggregate)(e.expressionType)}}xt.ExpressionDef=$Q;class RD extends $Q{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[mx.FT.timestampT,mx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Rn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!mx.FT.typeEq(s,mx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,_2.errorFor)("illegal unit expression");let o;if((0,IQ.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,__.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,__.timeResult)({dataType:"timestamp",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Rn.isDateUnit)(this.timeframe)?(0,__.timeResult)({dataType:"date",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,__.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,_2.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"}}}xt.ExprDuration=RD;function BQ(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function ASe(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}xt.getMorphicValue=ASe;function kQ(t,e,n,r){const i=(0,Rn.isTimeFieldType)(e.dataType),s=(0,Rn.isTimeFieldType)(r.dataType),o=(0,Qm.getExprNode)(n);if(i&&s)if(e.dataType!==r.dataType){const u=BQ(e,"timestamp"),a=BQ(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 PQ(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 vSe(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 SSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=(0,Qm.getExprNode)(n),u=Gm("boolean",i,s);if(u)return u;if(i.dataType==="sql native"||s.dataType==="sql native"){const c=i.dataType==="null"||s.dataType==="null",f=i.rawType&&i.rawType===s.rawType;if(!(c||f)){const x=Wm(e,i,r,s);if(x)return{...x,dataType:"boolean"}}}let l=kQ(e,i,n,s)||{node:o,kids:{left:i.value,right:s.value}};if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType!=="string"||s.dataType!=="string"){const c=PQ(i,s);if(c===void 0)throw new ESe("Incompatible types for match('~') operator");l=c}l=(0,LQ.nullsafeNot)(l,n);break}case"=":case"!=":{const c=vSe(i,n,s),f=l;c?l=c:l=(0,LQ.nullsafeNot)(PQ(i,s)||f,n);break}}return{dataType:"boolean",expressionType:(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function _Se(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gm("boolean",i,s);if(o)return o;const u=(0,Rn.maxExpressionType)(i.expressionType,s.expressionType),a=Wm(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=kQ(e,i,n,s)||{node:(0,Qm.getExprNode)(n),kids:{left:i.value,right:s.value}};return{dataType:"boolean",expressionType:u,evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function MQ(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Gm("number",i,s);if(o)return o;const u=Wm(e,i,r,s);if(u)return u;const a=(0,Rn.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,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,_2.errorFor)("numbers required")}function CSe(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Wm(e,i,r,s);if(o)return o;const u=(0,Rn.isTimeFieldType)(i.dataType),a=Gm(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,IQ.isGranularResult)(i))l=new RD(r,i.timeframe);else if(i.dataType==="date")l=new RD(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,_2.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return MQ(t,e,n,r)}function jQ(t,e,n,r){if((0,Qm.isEquality)(n))return SSe(t,e,n,r);if((0,Qm.isComparison)(n))return _Se(t,e,n,r);if(n==="+"||n==="-")return CSe(t,e,n,r);if(n==="*")return MQ(t,e,n,r);if(n==="/"||n==="%"){const i=e.getExpression(t),s=r.getExpression(t),o=Wm(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=Gm("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,Rn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Rn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}return(0,_2.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,_2.errorFor)("applybinary bad operator")}xt.applyBinary=jQ;function Gm(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Rn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:{node:"error",message:"cascading error"},evalSpace:(0,Rn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Wm(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Rn.maxExpressionType)(e.expressionType,r.expressionType),value:{node:"error",message:"sql-native unsupported"},evalSpace:(0,Rn.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(px,"__esModule",{value:!0}),px.ExprIdReference=void 0;const bSe=le,TSe=cr,OSe=xt;class RSe extends OSe.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,bSe.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,TSe.errorFor)(n.error)}}px.ExprIdReference=RSe,Object.defineProperty(A2,"__esModule",{value:!0}),A2.NamedSource=void 0;const ND=le,NSe=jo,DSe=Vr,FSe=lr,DD=We,wSe=px,LSe=d2;class ISe extends NSe.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 DD.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof DD.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 DD.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,ND.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 wSe.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 LSe.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,ND.isCastType)(f.type)&&(p=(0,FSe.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,ND.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=DSe.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}}A2.NamedSource=ISe;var Vm={},C_={};Object.defineProperty(C_,"__esModule",{value:!0}),C_.QueryHeadStruct=void 0;const $Se=le,BSe=jo,kSe=A2;class PSe extends BSe.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,$Se.refIsStructDef)(this.fromRef))return this.fromRef;const n=new kSe.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}C_.QueryHeadStruct=PSe,Object.defineProperty(Vm,"__esModule",{value:!0}),Vm.QueryReference=void 0;const FD=Vr,MSe=We,jSe=C_,USe=le,qSe=Ts;class zSe extends MSe.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:FD.ErrorFactory.structDef,outputStruct:FD.ErrorFactory.structDef,query:FD.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new jSe.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,qSe.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,USe.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}}Vm.QueryReference=zSe,Object.defineProperty(Hm,"__esModule",{value:!0}),Hm.SQReference=void 0;const HSe=Yu,QSe=hx,GSe=A2,UQ=Vm;class WSe extends HSe.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 UQ.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 UQ.QueryReference(this.ref);this.asSource=new QSe.QuerySource(n)}else if(e.type==="struct")this.asSource=new GSe.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}}Hm.SQReference=WSe,Object.defineProperty(S_,"__esModule",{value:!0}),S_.SQRefine=void 0;const VSe=Yu,YSe=hx,KSe=E2,XSe=Hm;class JSe extends VSe.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 XSe.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 KSe.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new YSe.QuerySource(e);return this.has({queryAsSource:n}),n}}}S_.SQRefine=JSe;var b_={},Ym={};Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.QueryRaw=void 0;const ZSe=le,e4e=We;class t4e extends e4e.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,ZSe.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}}Ym.QueryRaw=t4e;var Km={},T_={};Object.defineProperty(T_,"__esModule",{value:!0}),T_.makeSQLBlock=void 0;const n4e=le,r4e=It;function i4e(t,e){const n={name:`md5:/${e||"$default"}//${s4e(t)}`,select:t};return e&&(n.connection=e),n}T_.makeSQLBlock=i4e;function s4e(t){const e=t.map(n=>(0,n4e.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,r4e.generateHash)(e.join(";"))}Object.defineProperty(Km,"__esModule",{value:!0}),Km.SQLSource=void 0;const o4e=T_,u4e=jo,O_=Vr;class a4e extends u4e.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,o4e.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 O_.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"),O_.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(`
|
|
1303
|
-
`)),O_.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"),O_.ErrorFactory.structDef}}Km.SQLSource=a4e,Object.defineProperty(b_,"__esModule",{value:!0}),b_.SQSource=void 0;const l4e=Yu,c4e=Ym,f4e=Km;class x4e extends l4e.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 f4e.SQLSource){const e=new c4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}b_.SQSource=x4e;var R_={};Object.defineProperty(R_,"__esModule",{value:!0}),R_.SQExtend=void 0;const d4e=Mm,h4e=Yu;class p4e extends h4e.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 d4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}R_.SQExtend=p4e;var N_={},Xm={},Jm={};Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.BinaryBoolean=void 0;const qQ=le,g4e=cr,m4e=an,y4e=Ku,E4e=xt;class A4e extends E4e.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=[m4e.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,qQ.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,qQ.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,y4e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,g4e.errorFor)("logial required boolean")}}Jm.BinaryBoolean=A4e,Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.ExprCompare=void 0;const Vt=an,v4e=Jm,S4e={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class _4e extends v4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=S4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Xm.ExprCompare=_4e;var Zm={},C2={};Object.defineProperty(C2,"__esModule",{value:!0}),C2.ExprTime=void 0;const C4e=le,b4e=xt;class wD extends b4e.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,C4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new wD(e,r,n.expressionType)}}C2.ExprTime=wD;var j0={};Object.defineProperty(j0,"__esModule",{value:!0}),j0.Range=void 0;const zQ=le,T4e=cr,O4e=xt;class R4e extends O4e.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,zQ.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,zQ.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,T4e.errorFor)("a range is not a value")}}j0.Range=R4e,Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.ExprGranularTime=void 0;const HQ=le,N4e=cr,QQ=an,GQ=lr,D4e=xt,D_=C2,WQ=j0;class F4e extends D4e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[QQ.FT.timestampT,QQ.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,HQ.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,HQ.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,N4e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=D_.ExprTime.fromValue("timestamp",n),a=new D_.ExprTime("timestamp",(0,GQ.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new WQ.Range(u,a)}const i=new D_.ExprTime("date",n.value,n.expressionType),s=(0,GQ.timeOffset)("date",n.value,"+",r,this.units),o=new D_.ExprTime("date",s,n.expressionType);return new WQ.Range(i,o)}}Zm.ExprGranularTime=F4e,Object.defineProperty(N_,"__esModule",{value:!0}),N_.Apply=void 0;const w4e=Xm,L4e=S2,VQ=Zm;class I4e extends w4e.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,L4e.isGranularResult)(r)&&(n=new VQ.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof VQ.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}N_.Apply=I4e;var b2={};Object.defineProperty(b2,"__esModule",{value:!0}),b2.BinaryNumeric=void 0;const $4e=an,B4e=xt;class k4e extends B4e.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=[$4e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}b2.BinaryNumeric=k4e;var F_={};Object.defineProperty(F_,"__esModule",{value:!0}),F_.Boolean=void 0;const P4e=xt,M4e=an;let j4e=class extends P4e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...M4e.FT.boolT,value:{node:this.value}}}};F_.Boolean=j4e;var U0={};Object.defineProperty(U0,"__esModule",{value:!0}),U0.FunctionOrdering=U0.FunctionOrderBy=void 0;const LD=le,YQ=We,U4e=px;class q4e extends YQ.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,LD.expressionIsAggregate)(n.expressionType)||((0,LD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof U4e.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,LD.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}}}U0.FunctionOrderBy=q4e;class z4e extends YQ.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))}}U0.FunctionOrdering=z4e;var w_={};Object.defineProperty(w_,"__esModule",{value:!0}),w_.ExprAddSub=void 0;const H4e=b2;class Q4e extends H4e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}w_.ExprAddSub=Q4e;var yl={},ht={},e3={};Object.defineProperty(e3,"__esModule",{value:!0}),e3.ReferenceField=void 0;const KQ=Wr;class G4e extends KQ.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 KQ.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"}}}e3.ReferenceField=G4e;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.typecheckGroupBy=Gn.typecheckAggregate=Gn.typecheckCalculate=Gn.typecheckDeclare=Gn.typecheckMeasure=Gn.typecheckDimension=Gn.typecheckIndex=Gn.typecheckProject=void 0;const Nn=Ru;function W4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckProject=W4e;function V4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Nn.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`)}}Gn.typecheckIndex=V4e;function Y4e(t,e){if(!(0,Nn.expressionIsScalar)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckDimension=Y4e;function K4e(t,e){if(!(0,Nn.expressionIsAggregate)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckMeasure=K4e;function X4e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Nn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Gn.typecheckDeclare=X4e;function J4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Nn.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?`)}}Gn.typecheckCalculate=J4e;function Z4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckAggregate=Z4e;function e_e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckGroupBy=e_e,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const t_e=e3,n_e=bs,XQ=We,JQ=Gr,q0=Gn;class Ji extends XQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=JQ.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 t_e.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}ht.FieldReference=Ji;class r_e extends Ji{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=r_e;class i_e extends Ji{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=i_e;class s_e extends Ji{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=s_e;class o_e extends Ji{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=o_e;class u_e extends Ji{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,q0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=u_e;class ID extends Ji{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,q0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return ID.indexOutputName(this.path)}}ht.IndexFieldReference=ID;class a_e extends Ji{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,q0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=a_e;class l_e extends Ji{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,q0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=l_e;class c_e extends Ji{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,q0.typecheckProject)(e,this)}}ht.ProjectFieldReference=c_e;class f_e extends Ji{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,q0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=f_e;class x_e extends Ji{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,q0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=x_e;class d_e extends Ji{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,q0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=d_e;class h_e extends Ji{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=h_e;class p_e extends XQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=JQ.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}ht.WildcardFieldReference=p_e;class g_e extends n_e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=g_e,Object.defineProperty(yl,"__esModule",{value:!0}),yl.ExprAggregateFunction=void 0;const ZQ=le,m_e=It,t3=cr,y_e=Yr,E_e=dx,A_e=an,v_e=ht,S_e=xt,__e=Wr,C_e=px;class b_e extends S_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[A_e.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,ZQ.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=>T_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof E_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,t3.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,t3.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,t3.errorFor)("agggregate without expression");if((0,ZQ.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,t3.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=BD(a,c),p=kD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=O_e(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,t3.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(...$D(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...$D(e,r))}return n}}yl.ExprAggregateFunction=b_e;function T_e(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 $D(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 y_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof __e.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,m_e.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=$D(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 BD(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 kD(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 O_e(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=BD(i,e),o=kD(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=BD(l,e),f=kD(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 v_e.FieldReference?`${n.refString}.${r}()`:n instanceof C_e.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 L_={};Object.defineProperty(L_,"__esModule",{value:!0}),L_.ExprAlternationTree=void 0;const eG=le,R_e=cr,N_e=xt;class D_e extends N_e.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,eG.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,eG.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,R_e.errorFor)("no value from alternation tree")}}L_.ExprAlternationTree=D_e;var T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ExprAsymmetric=void 0;const F_e=yl;class w_e extends F_e.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}`}}}}T2.ExprAsymmetric=w_e;var I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.ExprAvg=void 0;const L_e=T2;class I_e extends L_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}I_.ExprAvg=I_e;var $_={};Object.defineProperty($_,"__esModule",{value:!0}),$_.ExprCast=void 0;const $_e=lr,B_e=xt;class k_e extends B_e.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,$_e.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}$_.ExprCast=k_e;var B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.ExprCoalesce=void 0;const tG=Ru,nG=an,P_e=xt;class M_e extends P_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=nG.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(nG.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,tG.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,tG.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}B_.ExprCoalesce=M_e;var k_={};Object.defineProperty(k_,"__esModule",{value:!0}),k_.ExprCount=void 0;const j_e=yl;class U_e extends j_e.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"}}}k_.ExprCount=U_e;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.ExprCountDistinct=void 0;const M_=an,q_e=yl;class z_e extends q_e.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[M_.FT.numberT,M_.FT.stringT,M_.FT.dateT,M_.FT.timestampT]}}P_.ExprCountDistinct=z_e;var j_={},z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.Limit=void 0;const H_e=We,Q_e=On;class G_e extends H_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Q_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}z0.Limit=G_e;var O2={};Object.defineProperty(O2,"__esModule",{value:!0}),O2.PartitionBy=void 0;const W_e=We;class V_e extends W_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}O2.PartitionBy=V_e;var n3={},H0={};Object.defineProperty(H0,"__esModule",{value:!0}),H0.FieldName=void 0;const Y_e=We;class K_e extends Y_e.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])}}H0.FieldName=K_e,Object.defineProperty(n3,"__esModule",{value:!0}),n3.ExprFunc=void 0;const ro=le,Xu=cr,X_e=dx,J_e=xt,Z_e=H0,rG=It;class e5e extends J_e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(O=>O.getExpression(e));if(this.isRaw){let O="scalar",I;const j=[`${this.name}(`];for(const G of a)O=(0,ro.maxExpressionType)(O,G.expressionType),I?j.push(","):I=G.dataType,j.push(G.value);return j.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:O,value:(0,rG.composeSQLExpr)(j),evalSpace:(0,ro.mergeEvalSpaces)(...a.map(G=>G.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,Xu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Xu.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const O=this.source.getField(e).found;if(O){const I=O.typeDesc();if((0,ro.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:{node:"field",path:this.source.path},evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(O instanceof X_e.StructSpaceFieldBase)){const j=`Aggregate source cannot be a ${I.dataType}`;return this.log(j),(0,Xu.errorFor)(j)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Xu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=t5e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(O=>O.dataType).join(", ")})`),(0,Xu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const O of m){const I=O.argIndex-(c?1:0),j=(0,ro.expressionIsScalar)(O.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualExpressionType}`)}for(const O of g){const I=O.argIndex-(c?1:0),j=O.maxEvalSpace==="literal"?"literal":O.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualEvalSpace}`)}for(const O of y){const I=O.argIndex-(c?1:0);this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,ro.maxOfExpressionTypes)([E.expressionType,...x.map(O=>O.expressionType)]);if(!(0,ro.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(O=>O.dataType).join(", ")}) with source`),(0,Xu.errorFor)("cannot call with source");const v={node:"function_call",overload:p,name:this.name,kids:{args:x.map(O=>O.value)},expressionType:A,structPath:f};let S=v;const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const O=(0,ro.expressionIsAnalytic)(p.returnType.expressionType);if(O||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||O){const I=C.supportsOrderBy!=="only_default",j=n.orderBys.flatMap(Q=>O?Q.getAnalyticOrderBy(e):Q.getAggregateOrderBy(e,I));v.kids.orderBy=j}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?v.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const O=[];for(const I of n.partitionBys)for(const j of I.partitionFields){const Q=j.getField(e);Q.found===void 0?j.log(`${j.refString} is not defined`):(0,ro.expressionIsAnalytic)(Q.found.typeDesc().expressionType)||(0,ro.expressionIsUngroupedAggregate)(Q.found.typeDesc().expressionType)?j.log("Partition expression must be scalar or aggregate"):O.push(j.nameString)}v.partitionBy=O}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,Xu.errorFor)("sql_function used without enabling")}const O=x[0].value;if(O.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=O.literal,j=n5e(I),Q=j.filter(P=>P.type==="interpolation"&&P.name.includes(".")).map(P=>P.type==="interpolation"?`\${${P.name}}`:`\${${P.value}}`);if(Q.length>0){const P=Q.length===1?`'.' paths are not yet supported in sql interpolations, found ${Q.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${Q.join(", ")})`;return this.log(P),(0,Xu.errorFor)(`${P}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const G=[];for(const P of j)if(P.type==="string")G.push(P.value);else if(P.name==="TABLE")G.push({node:"source-reference"});else{const W=new Z_e.FieldName(P.name);this.has({name:W});const oe=e.lookup([W]);if(oe.found===void 0)return this.log(`Invalid interpolation: ${oe.error}`),(0,Xu.errorFor)("invalid interpolated field");oe.found.refType==="parameter"?G.push({node:"parameter",path:[P.name]}):G.push({node:"field",path:[P.name]})}S=(0,rG.composeSQLExpr)(G)}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Xu.errorFor)("invalid return type");const b=(0,ro.mergeEvalSpaces)(...x.map(O=>O.evalSpace)),R=b==="constant"?"constant":(0,ro.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:S,evalSpace:R}}}n3.ExprFunc=e5e;function t5e(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,ro.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")||h.evalSpace==="output"&&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 n5e(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(j_,"__esModule",{value:!0}),j_.ExprProps=void 0;const r5e=le,i5e=cr,s5e=an,o5e=U0,u5e=z0,a5e=O2,l5e=xt,c5e=n3;class f5e extends l5e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=s5e.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,r5e.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,i5e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof a5e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof u5e.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 o5e.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 c5e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}j_.ExprProps=f5e;var U_={};Object.defineProperty(U_,"__esModule",{value:!0}),U_.ExprLogicalOp=void 0;const x5e=Jm,iG=an;class d5e extends x5e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[iG.FT.boolT,iG.FT.aggregateBoolT]}}U_.ExprLogicalOp=d5e;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.ExprMax=void 0;const z_=an,h5e=yl;class p5e extends h5e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[z_.FT.numberT,z_.FT.stringT,z_.FT.dateT,z_.FT.timestampT]}returns(e){return e.dataType}}q_.ExprMax=p5e;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.ExprMin=void 0;const Q_=an,g5e=yl;class m5e extends g5e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Q_.FT.numberT,Q_.FT.stringT,Q_.FT.dateT,Q_.FT.timestampT]}returns(e){return e.dataType}}H_.ExprMin=m5e;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.ExprMinus=void 0;const y5e=cr,sG=an,E5e=xt;class A5e extends E5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[sG.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return sG.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,y5e.errorFor)("negate requires number")}}G_.ExprMinus=A5e;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.ExprMulDiv=void 0;const v5e=b2;class S5e extends v5e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}W_.ExprMulDiv=S5e;var V_={},r3={};Object.defineProperty(r3,"__esModule",{value:!0}),r3.Unary=void 0;const _5e=xt;class C5e extends _5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}r3.Unary=C5e,Object.defineProperty(V_,"__esModule",{value:!0}),V_.ExprNot=void 0;const oG=an,b5e=r3,T5e=v2;class O5e extends b5e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[oG.FT.boolT,oG.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,T5e.nullsafeNot)(n.value):{node:"false"}}}}V_.ExprNot=O5e;var Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.ExprNow=void 0;const R5e=xt;class N5e extends R5e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Y_.ExprNow=N5e;var K_={};Object.defineProperty(K_,"__esModule",{value:!0}),K_.ExprNULL=void 0;const D5e=xt;class F5e extends D5e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}K_.ExprNULL=F5e;var X_={};Object.defineProperty(X_,"__esModule",{value:!0}),X_.ExprNumber=void 0;const w5e=an,L5e=xt;class I5e extends L5e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...w5e.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}X_.ExprNumber=I5e;var J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.ExprParens=void 0;const $5e=xt;class B5e extends $5e.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}}}}J_.ExprParens=B5e;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ExprRegEx=void 0;const k5e=xt;class P5e extends k5e.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"}}}Z_.ExprRegEx=P5e;var e5={};Object.defineProperty(e5,"__esModule",{value:!0}),e5.ExprString=void 0;const M5e=xt,j5e=an;class U5e extends M5e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...j5e.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}e5.ExprString=U5e;var t5={};Object.defineProperty(t5,"__esModule",{value:!0}),t5.ExprSum=void 0;const q5e=T2;class z5e extends q5e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}t5.ExprSum=z5e;var n5={};Object.defineProperty(n5,"__esModule",{value:!0}),n5.ExprTimeExtract=void 0;const yx=le,Q0=cr,PD=xt,H5e=j0;class i3 extends PD.ExpressionDef{static extractor(e){const n=i3.pluralMap[e];if(n)return n;if((0,yx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=i3.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,Q0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof H5e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,yx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,yx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Q0.errorFor)("extract from error").value};if(!(0,yx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,Q0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,yx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,Q0.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,PD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,PD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,Q0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,Q0.errorFor)(`${n} civil extraction`)):(0,yx.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,Q0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,yx.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,Q0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}n5.ExprTimeExtract=i3,i3.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var r5={},qo={},i5={};Object.defineProperty(i5,"__esModule",{value:!0}),i5.QueryInputSpace=void 0;const Q5e=Xi,G5e=qm,W5e=x2;class V5e extends W5e.RefinedSpace{constructor(e,n){const r=new G5e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Q5e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}i5.QueryInputSpace=V5e;var Y5e=F&&F.__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]}),K5e=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),X5e=F&&F.__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)&&Y5e(e,t,n);return K5e(e,t),e};Object.defineProperty(qo,"__esModule",{value:!0}),qo.ReduceFieldSpace=qo.QuerySpace=qo.QueryOperationSpace=void 0;const s5=X5e(le),MD=B0,J5e=H0,Z5e=Wr,eCe=ht,tCe=x2,nCe=Um,rCe=Yr,iCe=i5;class uG extends tCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new iCe.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 rCe.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();s5.isAtomicFieldType(l.dataType)&&s5.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)}}qo.QueryOperationSpace=uG;class aG extends uG{addRefineFromFields(e){var n;if(s5.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new J5e.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 nCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof eCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Z5e.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)&&!oCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(s5.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,MD.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,MD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,MD.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}}qo.QuerySpace=aG;class sCe extends aG{constructor(){super(...arguments),this.segmentType="reduce"}}qo.ReduceFieldSpace=sCe;function oCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(r5,"__esModule",{value:!0}),r5.ExprUngroup=void 0;const lG=le,jD=cr,uCe=qo,aCe=an,lCe=xt;class cCe extends lCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=aCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,lG.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,jD.errorFor)("ungrouped scalar");if((0,lG.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,jD.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 uCe.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,jD.errorFor)("ungrouped type check")}}r5.ExprUngroup=cCe;var o5={};Object.defineProperty(o5,"__esModule",{value:!0}),o5.ForRange=void 0;const cG=Ru,UD=cr,fG=an,u5=lr,fCe=xt,a5=C2,xG=j0;class xCe extends fCe.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=[fG.FT.timestampT,fG.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,UD.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,cG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,cG.maxExpressionType)(i.expressionType,s.expressionType),value:(0,UD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,u5.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,u5.timeOffset)("date",i.value,"+",o.value,u),g=new a5.ExprTime("date",m);return new xG.Range(p,g).apply(e,n,r)}const l=a5.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,u5.castDateToTimestamp)(f),c=new a5.ExprTime("timestamp",f,i.expressionType)}const x=(0,u5.timeOffset)("timestamp",f,"+",o.value,u),h=new a5.ExprTime("timestamp",x,i.expressionType);return new xG.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,UD.errorFor)("range has no value")}}o5.ForRange=xCe;var fr={},Zi={};Object.defineProperty(Zi,"__esModule",{value:!0});class Ex extends Error{}class dCe extends Ex{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class hCe extends Ex{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class pCe extends Ex{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class s3 extends Ex{}class dG extends Ex{constructor(e){super(`Invalid unit ${e}`)}}class io extends Ex{}class G0 extends Ex{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Os="long",qD={year:ke,month:ke,day:ke},hG={year:ke,month:zo,day:ke},gCe={year:ke,month:zo,day:ke,weekday:zo},pG={year:ke,month:Os,day:ke},gG={year:ke,month:Os,day:ke,weekday:Os},mG={hour:ke,minute:ke},yG={hour:ke,minute:ke,second:ke},EG={hour:ke,minute:ke,second:ke,timeZoneName:zo},AG={hour:ke,minute:ke,second:ke,timeZoneName:Os},vG={hour:ke,minute:ke,hourCycle:"h23"},SG={hour:ke,minute:ke,second:ke,hourCycle:"h23"},_G={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},CG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Os},bG={year:ke,month:ke,day:ke,hour:ke,minute:ke},TG={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},OG={year:ke,month:zo,day:ke,hour:ke,minute:ke},RG={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},mCe={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},NG={year:ke,month:Os,day:ke,hour:ke,minute:ke,timeZoneName:zo},DG={year:ke,month:Os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},FG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,timeZoneName:Os},wG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,second:ke,timeZoneName:Os};function St(t){return typeof t>"u"}function Ax(t){return typeof t=="number"}function l5(t){return typeof t=="number"&&t%1===0}function yCe(t){return typeof t=="string"}function ECe(t){return Object.prototype.toString.call(t)==="[object Date]"}function LG(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ACe(t){return Array.isArray(t)?t:[t]}function IG(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 vCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function R2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function El(t,e,n){return l5(t)&&t>=e&&t<=n}function SCe(t,e){return t-e*Math.floor(t/e)}function Mn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function W0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function vx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function zD(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function HD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function o3(t){return t%4===0&&(t%100!==0||t%400===0)}function u3(t){return o3(t)?366:365}function c5(t,e){const n=SCe(e-1,12)+1,r=t+(e-n)/12;return n===2?o3(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function QD(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 f5(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 GD(t){return t>99?t:t>60?1900+t:2e3+t}function $G(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 x5(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 BG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new io(`Invalid unit value ${t}`);return e}function d5(t,e){const n={};for(const r in t)if(R2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=BG(i)}return n}function a3(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}${Mn(n,2)}:${Mn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Mn(n,2)}${Mn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function h5(t){return vCe(t,["hour","minute","second","millisecond"])}const kG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,_Ce=["January","February","March","April","May","June","July","August","September","October","November","December"],PG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function MG(t){switch(t){case"narrow":return[...CCe];case"short":return[...PG];case"long":return[..._Ce];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 jG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],UG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],bCe=["M","T","W","T","F","S","S"];function qG(t){switch(t){case"narrow":return[...bCe];case"short":return[...UG];case"long":return[...jG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const zG=["AM","PM"],TCe=["Before Christ","Anno Domini"],OCe=["BC","AD"],RCe=["B","A"];function HG(t){switch(t){case"narrow":return[...RCe];case"short":return[...OCe];case"long":return[...TCe];default:return null}}function NCe(t){return zG[t.hour<12?0:1]}function DCe(t,e){return qG(e)[t.weekday-1]}function FCe(t,e){return MG(e)[t.month-1]}function wCe(t,e){return HG(e)[t.year<0?0:1]}function LCe(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 QG(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const ICe={D:qD,DD:hG,DDD:pG,DDDD:gG,t:mG,tt:yG,ttt:EG,tttt:AG,T:vG,TT:SG,TTT:_G,TTTT:CG,f:bG,ff:OG,fff:NG,ffff:FG,F:TG,FF:RG,FFF:DG,FFFF:wG};class es{static create(e,n={}){return new es(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 ICe[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 Mn(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?NCe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?FCe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?DCe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=es.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?wCe(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 QG(es.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=es.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 QG(s,i(u))}}class Ho{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let N2=class{get type(){throw new G0}get name(){throw new G0}get ianaName(){return this.name}get isUniversal(){throw new G0}offsetName(e,n){throw new G0}formatOffset(e,n){throw new G0}offset(e){throw new G0}equals(e){throw new G0}get isValid(){throw new G0}},WD=null;class p5 extends N2{static get instance(){return WD===null&&(WD=new p5),WD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return $G(e,n,r)}formatOffset(e,n){return a3(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let g5={};function $Ce(t){return g5[t]||(g5[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"})),g5[t]}const BCe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function kCe(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 PCe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=BCe[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let m5={};class Ju extends N2{static create(e){return m5[e]||(m5[e]=new Ju(e)),m5[e]}static resetCache(){m5={},g5={}}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=Ju.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return $G(e,n,r,this.name)}formatOffset(e,n){return a3(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=$Ce(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?PCe(r,n):kCe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=QD({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 VD=null;class Kr extends N2{static get utcInstance(){return VD===null&&(VD=new Kr(0)),VD}static instance(e){return e===0?Kr.utcInstance:new Kr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Kr(x5(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${a3(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${a3(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return a3(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 GG extends N2{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 V0(t,e){if(St(t)||t===null)return e;if(t instanceof N2)return t;if(yCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Kr.utcInstance:Kr.parseSpecifier(n)||Ju.create(t)}else return Ax(t)?Kr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new GG(t)}let WG=()=>Date.now(),VG="system",YG=null,KG=null,XG=null,JG;class jn{static get now(){return WG}static set now(e){WG=e}static set defaultZone(e){VG=e}static get defaultZone(){return V0(VG,p5.instance)}static get defaultLocale(){return YG}static set defaultLocale(e){YG=e}static get defaultNumberingSystem(){return KG}static set defaultNumberingSystem(e){KG=e}static get defaultOutputCalendar(){return XG}static set defaultOutputCalendar(e){XG=e}static get throwOnInvalid(){return JG}static set throwOnInvalid(e){JG=e}static resetCaches(){dn.resetCache(),Ju.resetCache()}}let ZG={};function MCe(t,e={}){const n=JSON.stringify([t,e]);let r=ZG[n];return r||(r=new Intl.ListFormat(t,e),ZG[n]=r),r}let YD={};function KD(t,e={}){const n=JSON.stringify([t,e]);let r=YD[n];return r||(r=new Intl.DateTimeFormat(t,e),YD[n]=r),r}let XD={};function jCe(t,e={}){const n=JSON.stringify([t,e]);let r=XD[n];return r||(r=new Intl.NumberFormat(t,e),XD[n]=r),r}let JD={};function UCe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=JD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),JD[i]=s),s}let l3=null;function qCe(){return l3||(l3=new Intl.DateTimeFormat().resolvedOptions().locale,l3)}function zCe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=KD(t).resolvedOptions()}catch{n=KD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function HCe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function QCe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function GCe(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function y5(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function WCe(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 VCe{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=jCe(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):HD(e,3);return Mn(n,this.padTo)}}}class YCe{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&&Ju.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=KD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class KCe{constructor(e,n,r){this.opts={style:"long",...r},!n&&LG()&&(this.rtf=UCe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):LCe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class dn{static fromOpts(e){return dn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||jn.defaultLocale,o=s||(i?"en-US":qCe()),u=n||jn.defaultNumberingSystem,a=r||jn.defaultOutputCalendar;return new dn(o,u,a,s)}static resetCache(){l3=null,YD={},XD={},JD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return dn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=zCe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=HCe(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=WCe(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:dn.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 y5(this,e,r,MG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=QCe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return y5(this,e,r,qG,()=>{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]=GCe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return y5(this,void 0,e,()=>zG,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return y5(this,e,n,HG,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new VCe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new YCe(e,this.intl,n)}relFormatter(e={}){return new KCe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return MCe(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 D2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function F2(...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 w2(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 eW(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=W0(e[n+i]);return[r,null,n+i]}}const tW=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,XCe=`(?:${tW.source}?(?:\\[(${kG.source})\\])?)?`,ZD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,nW=RegExp(`${ZD.source}${XCe}`),e8=RegExp(`(?:T${nW.source})?`),JCe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ZCe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,ebe=/(\d{4})-?(\d{3})/,tbe=eW("weekYear","weekNumber","weekDay"),nbe=eW("year","ordinal"),rbe=/(\d{4})-(\d\d)-(\d\d)/,rW=RegExp(`${ZD.source} ?(?:${tW.source}|(${kG.source}))?`),ibe=RegExp(`(?: ${rW.source})?`);function L2(t,e,n){const r=t[e];return St(r)?n:W0(r)}function sbe(t,e){return[{year:L2(t,e),month:L2(t,e+1,1),day:L2(t,e+2,1)},null,e+3]}function I2(t,e){return[{hours:L2(t,e,0),minutes:L2(t,e+1,0),seconds:L2(t,e+2,0),milliseconds:zD(t[e+3])},null,e+4]}function c3(t,e){const n=!t[e]&&!t[e+1],r=x5(t[e+1],t[e+2]),i=n?null:Kr.instance(r);return[{},i,e+3]}function f3(t,e){const n=t[e]?Ju.create(t[e]):null;return[{},n,e+1]}const obe=RegExp(`^T?${ZD.source}$`),ube=/^-?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 abe(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(vx(n)),months:x(vx(r)),weeks:x(vx(i)),days:x(vx(s)),hours:x(vx(o)),minutes:x(vx(u)),seconds:x(vx(a),a==="-0"),milliseconds:x(zD(l),f)}]}const lbe={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 t8(t,e,n,r,i,s,o){const u={year:e.length===2?GD(W0(e)):W0(e),month:PG.indexOf(n)+1,day:W0(r),hour:W0(i),minute:W0(s)};return o&&(u.second=W0(o)),t&&(u.weekday=t.length>3?jG.indexOf(t)+1:UG.indexOf(t)+1),u}const cbe=/^(?:(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 fbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=t8(e,i,r,n,s,o,u);let h;return a?h=lbe[a]:l?h=0:h=x5(c,f),[x,new Kr(h)]}function xbe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const dbe=/^(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$/,hbe=/^(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$/,pbe=/^(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 iW(t){const[,e,n,r,i,s,o,u]=t;return[t8(e,i,r,n,s,o,u),Kr.utcInstance]}function gbe(t){const[,e,n,r,i,s,o,u]=t;return[t8(e,u,n,r,i,s,o),Kr.utcInstance]}const mbe=D2(JCe,e8),ybe=D2(ZCe,e8),Ebe=D2(ebe,e8),Abe=D2(nW),sW=F2(sbe,I2,c3,f3),vbe=F2(tbe,I2,c3,f3),Sbe=F2(nbe,I2,c3,f3),_be=F2(I2,c3,f3);function Cbe(t){return w2(t,[mbe,sW],[ybe,vbe],[Ebe,Sbe],[Abe,_be])}function bbe(t){return w2(xbe(t),[cbe,fbe])}function Tbe(t){return w2(t,[dbe,iW],[hbe,iW],[pbe,gbe])}function Obe(t){return w2(t,[ube,abe])}const Rbe=F2(I2);function Nbe(t){return w2(t,[obe,Rbe])}const Dbe=D2(rbe,ibe),Fbe=D2(rW),wbe=F2(I2,c3,f3);function Lbe(t){return w2(t,[Dbe,sW],[Fbe,wbe])}const Ibe="Invalid Duration",oW={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}},$be={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},...oW},so=146097/400,$2=146097/4800,Bbe={years:{quarters:4,months:12,weeks:so/7,days:so,hours:so*24,minutes:so*24*60,seconds:so*24*60*60,milliseconds:so*24*60*60*1e3},quarters:{months:3,weeks:so/28,days:so/4,hours:so*24/4,minutes:so*24*60/4,seconds:so*24*60*60/4,milliseconds:so*24*60*60*1e3/4},months:{weeks:$2/7,days:$2,hours:$2*24,minutes:$2*24*60,seconds:$2*24*60*60,milliseconds:$2*24*60*60*1e3},...oW},Sx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],kbe=Sx.slice(0).reverse();function _x(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 Pbe(t){return t<0?Math.floor(t):Math.ceil(t)}function uW(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?Pbe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Mbe(t,e){kbe.reduce((n,r)=>St(e[r])?n:(n&&uW(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||dn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Bbe:$be,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 io(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new _t({values:d5(e,_t.normalizeUnit),loc:dn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Ax(e))return _t.fromMillis(e);if(_t.isDuration(e))return e;if(typeof e=="object")return _t.fromObject(e);throw new io(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=Obe(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]=Nbe(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 io("need to specify a reason the Duration is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new pCe(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 dG(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?es.create(this.loc,r).formatDurationFromString(this,e):Ibe}toHuman(e={}){const n=Sx.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+=HD(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 Sx)(R2(n.values,i)||R2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return _x(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]=BG(e(this.values[r],r));return _x(this,{values:n},!0)}get(e){return this[_t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...d5(e,_t.normalizeUnit)};return _x(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),_x(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Mbe(this.matrix,e),_x(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 Sx)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;Ax(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)Sx.indexOf(l)>Sx.indexOf(o)&&uW(this.matrix,i,l,n,o)}else Ax(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 _x(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 _x(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 Sx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const x3="Invalid Interval";function jbe(t,e){return!t||!t.isValid?hn.invalid("missing or invalid start"):!e||!e.isValid?hn.invalid("missing or invalid end"):e<t?hn.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 hn{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 io("need to specify a reason the Interval is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new hCe(r);return new hn({invalid:r})}static fromDateTimes(e,n){const r=g3(e),i=g3(n),s=jbe(r,i);return s??new hn({start:r,end:i})}static after(e,n){const r=_t.fromDurationLike(n),i=g3(e);return hn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=_t.fromDurationLike(n),i=g3(e);return hn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return hn.fromDateTimes(s,u);if(o){const l=_t.fromISO(i,n);if(l.isValid)return hn.after(s,l)}else if(a){const l=_t.fromISO(r,n);if(l.isValid)return hn.before(u,l)}}return hn.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?hn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(g3).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(hn.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(hn.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:hn.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 hn.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(hn.fromDateTimes(n,a.time)),n=null);return hn.merge(i)}difference(...e){return hn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:x3}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:x3}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:x3}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:x3}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:x3}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):_t.invalid(this.invalidReason)}mapEndpoints(e){return hn.fromDateTimes(e(this.s),e(this.e))}}let d3=class{static hasDST(e=jn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ju.isValidZone(e)}static normalizeZone(e){return V0(e,jn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return dn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return dn.create(n,null,"gregory").eras(e)}static features(){return{relative:LG()}}};function aW(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 Ube(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=aW(u,a);return(l-l%7)/7}],["days",aW]],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 qbe(t,e,n,r){let[i,s,o,u]=Ube(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 n8={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},lW={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]},zbe=n8.hanidec.replace(/[\[|\]]/g,"").split("");function Hbe(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(n8.hanidec)!==-1)e+=zbe.indexOf(t[n]);else for(const i in lW){const[s,o]=lW[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Qo({numberingSystem:t},e=""){return new RegExp(`${n8[t||"latn"]}${e}`)}const Qbe="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(Hbe(n))}}const cW="[ ]",fW=new RegExp(cW,"g");function Gbe(t){return t.replace(/\./g,"\\.?").replace(fW,cW)}function xW(t){return t.replace(/\./g,"").replace(fW," ").toLowerCase()}function Go(t,e){return t===null?null:{regex:RegExp(t.map(Gbe).join("|")),deser:([n])=>t.findIndex(r=>xW(n)===xW(r))+e}}function dW(t,e){return{regex:t,deser:([,n,r])=>x5(n,r),groups:e}}function r8(t){return{regex:t,deser:([e])=>e}}function Wbe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Vbe(t,e){const n=Qo(e),r=Qo(e,"{2}"),i=Qo(e,"{3}"),s=Qo(e,"{4}"),o=Qo(e,"{6}"),u=Qo(e,"{1,2}"),a=Qo(e,"{1,3}"),l=Qo(e,"{1,6}"),c=Qo(e,"{1,9}"),f=Qo(e,"{2,4}"),x=Qo(e,"{4,6}"),h=g=>({regex:RegExp(Wbe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Go(e.eras("short",!1),0);case"GG":return Go(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,GD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Go(e.months("short",!0,!1),1);case"MMMM":return Go(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Go(e.months("short",!1,!1),1);case"LLLL":return Go(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return r8(c);case"uu":return r8(u);case"uuu":return $t(n);case"a":return Go(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,GD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Go(e.weekdays("short",!1,!1),1);case"EEEE":return Go(e.weekdays("long",!1,!1),1);case"ccc":return Go(e.weekdays("short",!0,!1),1);case"cccc":return Go(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return dW(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return dW(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return r8(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:Qbe};return m.token=t,m}const Ybe={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 Kbe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Ybe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Xbe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Jbe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(R2(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 Zbe(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=Ju.create(t.z)),St(t.Z)||(n||(n=new Kr(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=zD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let i8=null;function eTe(){return i8||(i8=st.fromMillis(1555555555555)),i8}function tTe(t,e){if(t.literal)return t;const n=es.macroTokenToFormatOpts(t.val);if(!n)return t;const s=es.create(e,n).formatDateTimeParts(eTe()).map(o=>Kbe(o,e,n));return s.includes(void 0)?t:s}function nTe(t,e){return Array.prototype.concat(...t.map(n=>tTe(n,e)))}function hW(t,e,n){const r=nTe(es.parseFormat(n),t),i=r.map(o=>Vbe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Xbe(i),a=RegExp(o,"i"),[l,c]=Jbe(e,a,u),[f,x,h]=c?Zbe(c):[null,null,void 0];if(R2(c,"a")&&R2(c,"H"))throw new s3("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 rTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=hW(t,e,n);return[r,i,s,o]}const pW=[0,31,59,90,120,151,181,212,243,273,304,334],gW=[0,31,60,91,121,152,182,213,244,274,305,335];function oo(t,e){return new Ho("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function mW(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 yW(t,e,n){return n+(o3(t)?gW:pW)[e-1]}function EW(t,e){const n=o3(t)?gW:pW,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function s8(t){const{year:e,month:n,day:r}=t,i=yW(e,n,r),s=mW(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=f5(u)):o>f5(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...h5(t)}}function AW(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=mW(e,1,4),s=u3(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=u3(u)):o>s?(u=e+1,o-=u3(e)):u=e;const{month:a,day:l}=EW(u,o);return{year:u,month:a,day:l,...h5(t)}}function o8(t){const{year:e,month:n,day:r}=t,i=yW(e,n,r);return{year:e,ordinal:i,...h5(t)}}function vW(t){const{year:e,ordinal:n}=t,{month:r,day:i}=EW(e,n);return{year:e,month:r,day:i,...h5(t)}}function iTe(t){const e=l5(t.weekYear),n=El(t.weekNumber,1,f5(t.weekYear)),r=El(t.weekday,1,7);return e?n?r?!1:oo("weekday",t.weekday):oo("week",t.week):oo("weekYear",t.weekYear)}function sTe(t){const e=l5(t.year),n=El(t.ordinal,1,u3(t.year));return e?n?!1:oo("ordinal",t.ordinal):oo("year",t.year)}function SW(t){const e=l5(t.year),n=El(t.month,1,12),r=El(t.day,1,c5(t.year,t.month));return e?n?r?!1:oo("day",t.day):oo("month",t.month):oo("year",t.year)}function _W(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=El(e,0,23)||e===24&&n===0&&r===0&&i===0,o=El(n,0,59),u=El(r,0,59),a=El(i,0,999);return s?o?u?a?!1:oo("millisecond",i):oo("second",r):oo("minute",n):oo("hour",e)}const u8="Invalid DateTime",CW=864e13;function E5(t){return new Ho("unsupported zone",`the zone "${t.name}" is not supported`)}function a8(t){return t.weekData===null&&(t.weekData=s8(t.c)),t.weekData}function h3(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function bW(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 TW(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 A5(t,e,n){return bW(QD(t),e,n)}function OW(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,c5(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=QD(s);let[a,l]=bW(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function p3(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Ho("unparsable",`the input "${i}" can't be parsed as ${r}`))}function v5(t,e,n=!0){return t.isValid?es.create(dn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function l8(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Mn(t.c.year,n?6:4),e?(r+="-",r+=Mn(t.c.month),r+="-",r+=Mn(t.c.day)):(r+=Mn(t.c.month),r+=Mn(t.c.day)),r}function RW(t,e,n,r,i,s){let o=Mn(t.c.hour);return e?(o+=":",o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=Mn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Mn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Mn(Math.trunc(-t.o/60)),o+=":",o+=Mn(Math.trunc(-t.o%60))):(o+="+",o+=Mn(Math.trunc(t.o/60)),o+=":",o+=Mn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const NW={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},oTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},uTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},DW=["year","month","day","hour","minute","second","millisecond"],aTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],lTe=["year","ordinal","hour","minute","second","millisecond"];function FW(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 dG(t);return e}function wW(t,e){const n=V0(e.zone,jn.defaultZone),r=dn.fromObject(e),i=jn.now();let s,o;if(St(t.year))s=i;else{for(const l of DW)St(t[l])&&(t[l]=NW[l]);const u=SW(t)||_W(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=A5(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function LW(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=HD(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 IW(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class st{constructor(e){const n=e.zone||jn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Ho("invalid input"):null)||(n.isValid?null:E5(n));this.ts=St(e.ts)?jn.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=TW(this.ts,u),r=Number.isNaN(i.year)?new Ho("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||dn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=IW(arguments),[r,i,s,o,u,a,l]=n;return wW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=IW(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Kr.utcInstance,wW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=ECe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=V0(n.zone,jn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:dn.fromObject(n)}):st.invalid(E5(i))}static fromMillis(e,n={}){if(Ax(e))return e<-CW||e>CW?st.invalid("Timestamp out of range"):new st({ts:e,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Ax(e))return new st({ts:e*1e3,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=V0(n.zone,jn.defaultZone);if(!r.isValid)return st.invalid(E5(r));const i=jn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=d5(e,FW),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=dn.fromObject(n);if((c||u)&&f)throw new s3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new s3("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=TW(i,s);h?(p=aTe,m=oTe,g=s8(g)):u?(p=lTe,m=uTe,g=o8(g)):(p=DW,m=NW);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?iTe(o):u?sTe(o):SW(o),A=E||_W(o);if(A)return st.invalid(A);const v=h?AW(o):u?vW(o):o,[S,_]=A5(v,s,r),C=new st({ts:S,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=Cbe(e);return p3(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=bbe(e);return p3(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Tbe(e);return p3(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new io("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=rTe(o,e,n);return c?st.invalid(c):p3(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=Lbe(e);return p3(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the DateTime is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new dCe(r);return new st({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?a8(this).weekYear:NaN}get weekNumber(){return this.isValid?a8(this).weekNumber:NaN}get weekday(){return this.isValid?a8(this).weekday:NaN}get ordinal(){return this.isValid?o8(this.c).ordinal:NaN}get monthShort(){return this.isValid?d3.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?d3.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?d3.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?d3.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 o3(this.year)}get daysInMonth(){return c5(this.year,this.month)}get daysInYear(){return this.isValid?u3(this.year):NaN}get weeksInWeekYear(){return this.isValid?f5(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=es.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Kr.instance(e),n)}toLocal(){return this.setZone(jn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=V0(e,jn.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]=A5(o,s,e)}return h3(this,{ts:i,zone:e})}else return st.invalid(E5(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return h3(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=d5(e,FW),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 s3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new s3("Can't mix ordinal dates with month/day");let l;r?l=AW({...s8(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(c5(l.year,l.month),l.day))):l=vW({...o8(this.c),...n});const[c,f]=A5(l,this.o,this.zone);return h3(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return h3(this,OW(this,n))}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e).negate();return h3(this,OW(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?es.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):u8}toLocaleString(e=qD,n={}){return this.isValid?es.create(this.loc.clone(n),e).formatDateTime(this):u8}toLocaleParts(e={}){return this.isValid?es.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=l8(this,o);return u+="T",u+=RW(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?l8(this,e==="extended"):null}toISOWeekDate(){return v5(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":"")+RW(this,o==="extended",n,e,r,s):null}toRFC2822(){return v5(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return v5(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?l8(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")),v5(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():u8}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=ACe(n).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=qbe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?hn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||st.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),LW(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?LW(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new io("min requires all arguments be DateTimes");return IG(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new io("max requires all arguments be DateTimes");return IG(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return hW(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return qD}static get DATE_MED(){return hG}static get DATE_MED_WITH_WEEKDAY(){return gCe}static get DATE_FULL(){return pG}static get DATE_HUGE(){return gG}static get TIME_SIMPLE(){return mG}static get TIME_WITH_SECONDS(){return yG}static get TIME_WITH_SHORT_OFFSET(){return EG}static get TIME_WITH_LONG_OFFSET(){return AG}static get TIME_24_SIMPLE(){return vG}static get TIME_24_WITH_SECONDS(){return SG}static get TIME_24_WITH_SHORT_OFFSET(){return _G}static get TIME_24_WITH_LONG_OFFSET(){return CG}static get DATETIME_SHORT(){return bG}static get DATETIME_SHORT_WITH_SECONDS(){return TG}static get DATETIME_MED(){return OG}static get DATETIME_MED_WITH_SECONDS(){return RG}static get DATETIME_MED_WITH_WEEKDAY(){return mCe}static get DATETIME_FULL(){return NG}static get DATETIME_FULL_WITH_SECONDS(){return DG}static get DATETIME_HUGE(){return FG}static get DATETIME_HUGE_WITH_SECONDS(){return wG}}function g3(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Ax(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new io(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const cTe="2.5.2";var fTe=Zi.DateTime=st;Zi.Duration=_t,Zi.FixedOffsetZone=Kr,Zi.IANAZone=Ju,Zi.Info=d3,Zi.Interval=hn,Zi.InvalidZone=GG,Zi.Settings=jn,Zi.SystemZone=p5,Zi.VERSION=cTe,Zi.Zone=N2,Object.defineProperty(fr,"__esModule",{value:!0}),fr.LiteralYear=fr.LiteralQuarter=fr.LiteralMonth=fr.LiteralWeek=fr.LiteralDay=fr.LiteralHour=fr.LiteralTimestamp=fr.TimeFormatError=void 0;const Y0=Zi,xTe=le,dTe=j0,$W=C2,c8=xt;class hTe extends Error{}fr.TimeFormatError=hTe;function Cx(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 BW="yyyy",kW=`${BW}-LL`,uo=`${kW}-dd`,PW=`${uo} HH`,MW=`${PW}:mm`,f8=`${MW}:ss`;class jW extends c8.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 x8 extends jW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Cx(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=Y0.DateTime.fromFormat(e,f8);if(s.isValid)return new x8(r,n);if(s=Y0.DateTime.fromFormat(e,MW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(f8);return new d8(r,n,"timestamp",o)}}}fr.LiteralTimestamp=x8;class d8 extends jW{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,c8.getMorphicValue)(i,"timestamp"),a=(0,c8.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,xTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new dTe.Range(new $W.ExprTime(u,i.value),new $W.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class h8 extends d8{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,PW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(f8),new h8(n,r)}}fr.LiteralHour=h8;class m3 extends d8{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 p8 extends m3{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,uo);if(i.isValid)return r=i.plus({day:1}).toFormat(uo),new p8(n,r)}}fr.LiteralDay=p8;class g8 extends m3{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Y0.DateTime.fromFormat(i,uo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(uo),r=u.toFormat(uo),new g8(n,r)}}}fr.LiteralWeek=g8;class m8 extends m3{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,kW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new m8(n,r)}}}fr.LiteralMonth=m8;class y8 extends m3{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Cx(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=Y0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(uo),r=u.toFormat(uo),new y8(n,r)}}}fr.LiteralQuarter=y8;class E8 extends m3{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,BW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new E8(n,r)}}}fr.LiteralYear=E8;var S5={};Object.defineProperty(S5,"__esModule",{value:!0}),S5.PartialCompare=void 0;const pTe=cr,gTe=xt;class mTe extends gTe.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,pTe.errorFor)("no value for partial compare")}}S5.PartialCompare=mTe;var B2={};Object.defineProperty(B2,"__esModule",{value:!0}),B2.PickWhen=B2.Pick=void 0;const Zu=le,K0=cr,Wo=an,yTe=xt,ETe=We;function _5(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class ATe extends yTe.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,Zu.maxExpressionType)(o,(0,Zu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Zu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Wo.FT.typeEq(s,x,!0)){const h=Wo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick when type")}s=_5(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=_5(s,l),!Wo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Wo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Zu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Zu.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,K0.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,K0.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,K0.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(!Wo.FT.typeEq(a.when,Wo.FT.boolT))return this.log(`when expression must be boolean, not '${Wo.FT.inspect(a.when)}`),(0,K0.errorFor)("pick when type");if(i&&!Wo.FT.typeEq(i,a.pick,!0)){const l=Wo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type")}i=_5(i,a.pick),s=(0,Zu.maxExpressionType)(s,(0,Zu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Zu.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,Zu.maxExpressionType)(s,u.expressionType),o=(0,Zu.mergeEvalSpaces)(o,u.evalSpace),i=_5(i,u),Wo.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${Wo.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type mismatch"))}}B2.Pick=ATe;class vTe extends ETe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}B2.PickWhen=vTe;var C5={};Object.defineProperty(C5,"__esModule",{value:!0}),C5.Timeframe=void 0;const STe=le,_Te=We;class CTe extends _Te.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,STe.isTimestampUnit)(n)?n:"second"}}C5.Timeframe=CTe;var b5={};Object.defineProperty(b5,"__esModule",{value:!0}),b5.TopBy=void 0;const bTe=le,UW=xt,TTe=We;class OTe extends TTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof UW.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof UW.ExpressionDef){const n=this.by.getExpression(e);return(0,bTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}b5.TopBy=OTe;var X0={};Object.defineProperty(X0,"__esModule",{value:!0}),X0.ImportStatement=X0.ImportSelect=X0.ImportSourceName=void 0;const A8=We;class RTe extends A8.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}X0.ImportSourceName=RTe;class NTe extends A8.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}X0.ImportSelect=NTe;class DTe extends A8.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}'`)}}}X0.ImportStatement=DTe;var y3={};Object.defineProperty(y3,"__esModule",{value:!0}),y3.ExtendBlock=void 0;const FTe=We,wTe=On;class LTe extends FTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=wTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}y3.ExtendBlock=LTe;var T5={};Object.defineProperty(T5,"__esModule",{value:!0}),T5.Argument=void 0;const ITe=We;class $Te extends ITe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}T5.Argument=$Te;var O5={};Object.defineProperty(O5,"__esModule",{value:!0}),O5.HasParameter=void 0;const qW=le,BTe=We;class kTe extends BTe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,qW.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,qW.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"}}}O5.HasParameter=kTe;var R5={};Object.defineProperty(R5,"__esModule",{value:!0}),R5.AnonymousQuery=void 0;const PTe=We,MTe=Gr;class jTe extends PTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=MTe.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)}}R5.AnonymousQuery=jTe;var J0={};Object.defineProperty(J0,"__esModule",{value:!0}),J0.View=void 0;const UTe=We;let qTe=class extends UTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};J0.View=qTe;var N5={};Object.defineProperty(N5,"__esModule",{value:!0}),N5.ViewArrow=void 0;const zTe=Yr,HTe=J0;class QTe extends HTe.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 zTe.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()}}N5.ViewArrow=QTe;var D5={},E3={};Object.defineProperty(E3,"__esModule",{value:!0}),E3.refine=void 0;const v8=Ru,S8=B0;function GTe(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,v8.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,v8.isQuerySegment)(o)&&(0,v8.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,S8.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,S8.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(S8.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}E3.refine=GTe,Object.defineProperty(D5,"__esModule",{value:!0}),D5.ViewRefine=void 0;const WTe=Vr,VTe=Ts,YTe=E3,KTe=J0;class XTe extends KTe.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,VTe.getFinalStruct)(this.refinement,e.structDef(),i):WTe.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,YTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}D5.ViewRefine=XTe;var F5={};Object.defineProperty(F5,"__esModule",{value:!0}),F5.ReferenceView=void 0;const zW=le,HW=Vr,JTe=Ts,ZTe=Wr,e6e=E3,t6e=J0;class n6e extends t6e.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:HW.ErrorFactory.structDef,outputStruct:HW.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof ZTe.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,zW.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,zW.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,JTe.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,e6e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}F5.ReferenceView=n6e;var w5={},A3={},L5={},v3={};Object.defineProperty(v3,"__esModule",{value:!0}),v3.Index=void 0;const r6e=We,i6e=On;let s6e=class extends r6e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=i6e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};v3.Index=s6e;var S3={};Object.defineProperty(S3,"__esModule",{value:!0}),S3.SampleProperty=void 0;const o6e=We,QW=On;class u6e extends o6e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=QW.LegalRefinementStage.Tail,this.forceQueryClass=QW.QueryClass.Index}sampling(){return this.sample}}S3.SampleProperty=u6e;var I5={};Object.defineProperty(I5,"__esModule",{value:!0}),I5.IndexFieldSpace=void 0;const GW=le,_8=ht,a6e=Wr,l6e=qo,c6e=e3,f6e=Yr;class x6e extends l6e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof _8.FieldReference?super.pushFields(n):n instanceof _8.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 a6e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof c6e.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 f6e.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=_8.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,GW.isAtomicFieldType)(c.dataType)&&(0,GW.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)}}I5.IndexFieldSpace=x6e,Object.defineProperty(L5,"__esModule",{value:!0}),L5.IndexBuilder=void 0;const C8=le,d6e=Vr,h6e=Uo,p6e=v3,g6e=z0,m6e=S3,y6e=I5;class E6e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new y6e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof h6e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof g6e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof p6e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof m6e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,C8.isIndexSegment)(e)&&!(0,C8.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),d6e.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,C8.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}L5.IndexBuilder=E6e;var $5={},_3={};Object.defineProperty(_3,"__esModule",{value:!0}),_3.GroupBy=void 0;const A6e=bs,WW=On;class v6e extends A6e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=WW.LegalRefinementStage.Single,this.forceQueryClass=WW.QueryClass.Grouping}}_3.GroupBy=v6e;var B5={};Object.defineProperty(B5,"__esModule",{value:!0}),B5.ProjectFieldSpace=void 0;const b8=le,S6e=qo;class _6e extends S6e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,b8.expressionIsAggregate)(e.expressionType)?!1:(0,b8.expressionInvolvesAggregate)(e.expressionType)&&(0,b8.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}B5.ProjectFieldSpace=_6e;var Z0={},bx={};Object.defineProperty(bx,"__esModule",{value:!0}),bx.Ordering=bx.OrderBy=void 0;const C6e=le,VW=H0,YW=We,b6e=On;class T6e extends YW.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof VW.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 VW.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,C6e.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}}bx.OrderBy=T6e;class O6e extends YW.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=b6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}bx.Ordering=O6e;var C3={};Object.defineProperty(C3,"__esModule",{value:!0}),C3.Top=void 0;const KW=le,R6e=H0,N6e=We,D6e=On;let F6e=class extends N6e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=D6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof R6e.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,KW.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,KW.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}}}};C3.Top=F6e,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.ReduceBuilder=Z0.QuerySegmentBuilder=void 0;const XW=le,w6e=Vr,L6e=Uo,I6e=z0,JW=bx,ZW=C3,$6e=qo,B6e=bs;class eV{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof B6e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof L6e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof ZW.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 I6e.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof JW.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 ZW.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof JW.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])}}Z0.QuerySegmentBuilder=eV;class k6e extends eV{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new $6e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,XW.isReduceSegment)(e)||(0,XW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),w6e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Z0.ReduceBuilder=k6e,Object.defineProperty($5,"__esModule",{value:!0}),$5.ProjectBuilder=void 0;const tV=le,P6e=Vr,M6e=_3,j6e=B5,U6e=Z0;class q6e extends U6e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new j6e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof M6e.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,tV.isProjectSegment)(e)||(0,tV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),P6e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}$5.ProjectBuilder=q6e;var k5={};Object.defineProperty(k5,"__esModule",{value:!0}),k5.PartialBuilder=void 0;const z6e=Ru,H6e=Z0;class Q6e extends H6e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,z6e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}k5.PartialBuilder=Q6e,Object.defineProperty(A3,"__esModule",{value:!0}),A3.QOpDesc=void 0;const G6e=L5,W6e=$5,V6e=Z0,Y6e=We,K6e=Ts,X6e=Yr,Tx=On,J6e=k5;class Z6e extends Y6e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Tx.QueryClass.Grouping:this.refineThis.type==="project"?n=Tx.QueryClass.Project:this.refineThis.type==="index"&&(n=Tx.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=Tx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Tx.QueryClass.Grouping:return new V6e.ReduceBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Project:return new W6e.ProjectBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Index:return new G6e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new J6e.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 X6e.StaticSpace((0,K6e.opOutputStruct)(this,e.structDef(),i))}}}A3.QOpDesc=Z6e,Object.defineProperty(w5,"__esModule",{value:!0}),w5.QOpDescView=void 0;const eOe=le,tOe=Yr,nV=A3,nOe=Ts,T8=On,rOe=J0;class iOe extends rOe.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,eOe.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 nV.QOpDesc([]),o=new nV.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case T8.LegalRefinementStage.Head:s.push(u);break;case T8.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case T8.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,nOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new tOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}w5.QOpDescView=iOe;var pn={};Object.defineProperty(pn,"__esModule",{value:!0}),pn.FieldDefinitionValue=pn.DefSpace=pn.DimensionFieldDeclaration=pn.MeasureFieldDeclaration=pn.DeclareFieldDeclaration=pn.ProjectFieldDeclaration=pn.GroupByFieldDeclaration=pn.AggregateFieldDeclaration=pn.CalculateFieldDeclaration=pn.AtomicFieldDeclaration=void 0;const sOe=le,oOe=an,uOe=S2,aOe=We,Ox=Gn,lOe=Gr,cOe=Wr;class ec extends aOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new O8(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,sOe.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,uOe.isGranularResult)(r)&&u.type==="timestamp"&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof O8&&e.foundCircle)&&r.dataType!=="error"){const u=oOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new rV(e,this))}}pn.AtomicFieldDeclaration=ec;class fOe extends ec{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}pn.CalculateFieldDeclaration=fOe;class xOe extends ec{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckAggregate)(e,this)}}pn.AggregateFieldDeclaration=xOe;class dOe extends ec{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckGroupBy)(e,this)}}pn.GroupByFieldDeclaration=dOe;class hOe extends ec{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckProject)(e,this)}}pn.ProjectFieldDeclaration=hOe;class pOe extends ec{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDeclare)(e,this)}}pn.DeclareFieldDeclaration=pOe;class gOe extends ec{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckMeasure)(e,this)}}pn.MeasureFieldDeclaration=gOe;class mOe extends ec{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDimension)(e,this)}}pn.DimensionFieldDeclaration=mOe;class O8{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")}}pn.DefSpace=O8;class rV extends cOe.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)}}pn.FieldDefinitionValue=rV;var P5={};Object.defineProperty(P5,"__esModule",{value:!0}),P5.Aggregate=void 0;const yOe=bs,iV=On;let EOe=class extends yOe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=iV.LegalRefinementStage.Single,this.forceQueryClass=iV.QueryClass.Grouping}};P5.Aggregate=EOe;var M5={};Object.defineProperty(M5,"__esModule",{value:!0}),M5.Calculate=void 0;const AOe=bs,vOe=On;class SOe extends AOe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vOe.LegalRefinementStage.Single}}M5.Calculate=SOe;var b3={};Object.defineProperty(b3,"__esModule",{value:!0}),b3.Dimensions=void 0;const _Oe=k0;class COe extends _Oe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}b3.Dimensions=COe;var T3={};Object.defineProperty(T3,"__esModule",{value:!0}),T3.Measures=void 0;const bOe=k0;class TOe extends bOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}T3.Measures=TOe;var j5={};Object.defineProperty(j5,"__esModule",{value:!0}),j5.Nests=void 0;const OOe=bs,sV=On;class ROe extends OOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=sV.LegalRefinementStage.Single,this.forceQueryClass=sV.QueryClass.Grouping}}j5.Nests=ROe;var U5={};Object.defineProperty(U5,"__esModule",{value:!0}),U5.ProjectStatement=void 0;const NOe=bs,oV=On;class DOe extends NOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=oV.QueryClass.Project,this.queryRefinementStage=oV.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}U5.ProjectStatement=DOe;var tc={},Al={};Object.defineProperty(Al,"__esModule",{value:!0}),Al.findReferences=Al.deprecatedParseTableURI=Al.constructTableKey=void 0;const FOe=I0,R8=un;function N8(t){const e=(0,R8.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,R8.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class wOe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=uV(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,R8.getId)(e.connectionId()),r=N8(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=N8(e.tableURI()),{connectionName:r,tablePath:i}=aV(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=N8(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function uV(t,e){return t===void 0?e:`${t}:${e}`}Al.constructTableKey=uV;function aV(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Al.deprecatedParseTableURI=aV;function LOe(t,e,n){const r=new wOe(t,e),i=r;return FOe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Al.findReferences=LOe,Object.defineProperty(tc,"__esModule",{value:!0}),tc.TableFunctionSource=tc.TableMethodSource=tc.TableSource=void 0;const lV=Al,IOe=jo,cV=Vr;class D8 extends IOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return cV.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,lV.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),cV.ErrorFactory.structDef}}tc.TableSource=D8;class $Oe extends D8{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}}}tc.TableMethodSource=$Oe;class BOe extends D8{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,lV.deprecatedParseTableURI)(this.tableURI)}}tc.TableFunctionSource=BOe;var q5={};Object.defineProperty(q5,"__esModule",{value:!0}),q5.SQLString=void 0;const kOe=We,fV=Yu;class POe extends kOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(MOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof fV.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}}q5.SQLString=POe;function MOe(t){return t instanceof fV.SourceQueryElement}var z5={};Object.defineProperty(z5,"__esModule",{value:!0}),z5.SourceDesc=void 0;const jOe=We;class UOe extends jOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}z5.SourceDesc=UOe;var H5={};Object.defineProperty(H5,"__esModule",{value:!0}),H5.isSourceProperty=void 0;const qOe=Uo,zOe=Xi,HOe=k0,QOe=h2,GOe=M0,WOe=p2,VOe=g2,YOe=m2,KOe=P0;function XOe(t){return t instanceof qOe.Filter||t instanceof zOe.Joins||t instanceof HOe.DeclareFields||t instanceof QOe.FieldListEdit||t instanceof GOe.Renames||t instanceof WOe.PrimaryKey||t instanceof KOe.ObjectAnnotation||t instanceof VOe.Views||t instanceof YOe.TimezoneStatement}H5.isSourceProperty=XOe;var Q5={};Object.defineProperty(Q5,"__esModule",{value:!0}),Q5.isFieldCollectionMember=void 0;const JOe=pn,xV=ht;function ZOe(t){return t instanceof xV.FieldReference||t instanceof xV.WildcardFieldReference||t instanceof JOe.AtomicFieldDeclaration}Q5.isFieldCollectionMember=ZOe;var G5={};Object.defineProperty(G5,"__esModule",{value:!0}),G5.isQueryElement=void 0;const eRe=y2,tRe=E2,nRe=Vm,rRe=Ym;function iRe(t){return t instanceof eRe.QueryArrow||t instanceof tRe.QueryRefine||t instanceof nRe.QueryReference||t instanceof rRe.QueryRaw}G5.isQueryElement=iRe;var dV={};Object.defineProperty(dV,"__esModule",{value:!0});var W5={};Object.defineProperty(W5,"__esModule",{value:!0}),W5.isQueryProperty=void 0;function sRe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}W5.isQueryProperty=sRe;var V5={};Object.defineProperty(V5,"__esModule",{value:!0}),V5.isQueryExtendProperty=void 0;const oRe=b3,uRe=Xi,aRe=T3;function lRe(t){return t instanceof oRe.Dimensions||t instanceof aRe.Measures||t instanceof uRe.Joins}V5.isQueryExtendProperty=lRe;var Y5={};Object.defineProperty(Y5,"__esModule",{value:!0}),Y5.isFieldPropStatement=void 0;const cRe=U0,fRe=Uo,xRe=z0,dRe=O2;function hRe(t){return t instanceof fRe.Filter||t instanceof xRe.Limit||t instanceof dRe.PartitionBy||t instanceof cRe.FunctionOrdering}Y5.isFieldPropStatement=hRe,function(t){var e=F&&F.__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=F&&F.__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(wm,t),n(c2,t),n(f2,t),n(jo,t),n(Mm,t),n(Yu,t),n(v_,t),n(S_,t),n(b_,t),n(Hm,t),n(R_,t),n(h2,t),n(p2,t),n(M0,t),n(g2,t),n(m2,t),n(N_,t),n(b2,t),n(F_,t),n(U0,t),n(w_,t),n(yl,t),n(L_,t),n(T2,t),n(I_,t),n($_,t),n(B_,t),n(Xm,t),n(k_,t),n(P_,t),n(j_,t),n(n3,t),n(Zm,t),n(px,t),n(U_,t),n(q_,t),n(H_,t),n(G_,t),n(W_,t),n(V_,t),n(Y_,t),n(K_,t),n(X_,t),n(J_,t),n(Z_,t),n(e5,t),n(t5,t),n(n5,t),n(r5,t),n(o5,t),n(fr,t),n(S5,t),n(O2,t),n(B2,t),n(j0,t),n(C5,t),n(b5,t),n(r3,t),n(v2,t),n(X0,t),n(y3,t),n(T5,t),n(O5,t),n(R5,t),n(E2,t),n(y2,t),n(J0,t),n(N5,t),n(D5,t),n(F5,t),n(w5,t),n(pn,t),n(ht,t),n(P5,t),n(M5,t),n(k0,t),n(b3,t),n(y3,t),n(Uo,t),n(_3,t),n(v3,t),n(Xi,t),n(Lm,t),n(z0,t),n(T3,t),n(wm,t),n(j5,t),n(bx,t),n(U5,t),n(A3,t),n(S3,t),n(C3,t),n(A2,t),n(hx,t),n(Km,t),n(tc,t),n(q5,t),n(P0,t),n(Ku,t),n(z5,t),n(H5,t),n(xt,t),n(Q5,t),n(H0,t),n(We,t),n(G5,t),n(dV,t),n(W5,t),n(V5,t),n(Y5,t)}(o_);var K5={},k2={};Object.defineProperty(k2,"__esModule",{value:!0}),k2.ConstantExpression=k2.ConstantFieldSpace=void 0;const pRe=xt;class hV{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}}k2.ConstantFieldSpace=hV;class gRe extends pRe.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 hV),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)}}k2.ConstantExpression=gRe;var mRe=F&&F.__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]}),yRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ERe=F&&F.__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)&&mRe(e,t,n);return yRe(e,t),e};Object.defineProperty(K5,"__esModule",{value:!0}),K5.MalloyToAST=void 0;const pV=aS,ARe=Im,te=ERe(o_),vRe=ur,SRe=o_,Wn=un,F8=le,_Re=gl,CRe=k2;class gV extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class w8 extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bRe=["##! m4warnings=error"];class TRe extends ARe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bRe){const s=_Re.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})}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 w8||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 te.FieldName((0,Wn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,Wn.getId)(e)),e.id())}defaultResult(){return new te.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 vRe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new te.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 te.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 te.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Wn.getPlainString)(e);for(const i of r)i instanceof pV.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,Wn.getStringParts)(e))r instanceof pV.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 te.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=>te.isDocStatementOrDocStatementList(r)&&r,"statement");return new te.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new te.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new CRe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new te.HasParameter({name:(0,Wn.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 te.DefineSource((0,Wn.getId)(e.sourceNameDef()),n instanceof te.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=>te.isSourceProperty(s)&&s,"source property"),i=new te.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new te.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 te.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new te.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Wn.getShortString)(o));const u=new te.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 te.Join&&(n.push(s),s instanceof te.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof te.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new te.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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin&&(s.joinType="one"));const i=new te.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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new te.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 te.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new te.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 te.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,F8.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 te.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,Wn.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(),te.DimensionFieldDeclaration),r=new te.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.MeasureFieldDeclaration),r=new te.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(te.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new te.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.DeclareFieldDeclaration),r=new te.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 te.RenameField((0,Wn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new te.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new te.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 te.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 te.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new te.AcceptExceptFieldReference([this.getFieldName(r)]));return new te.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new te.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new te.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=>te.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new te.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 te.FieldReference||i instanceof te.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new te.Aggregate(this.getQueryItems(e.queryFieldList(),te.AggregateFieldDeclaration,te.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new te.GroupBy(this.getQueryItems(e.queryFieldList(),te.GroupByFieldDeclaration,te.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new te.Calculate(this.getQueryItems(e.queryFieldList(),te.CalculateFieldDeclaration,te.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(),te.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new te.ExprGranularTime(new te.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new te.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,te.ProjectFieldDeclaration,te.ProjectFieldReference));return this.astAt(new te.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,te.ProjectFieldReference):void 0,s=this.astAt(new te.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,Wn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new te.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,te.IndexFieldReference);return r.STAR()?this.astAt(new te.WildcardFieldReference(s),e):this.astAt(s,e)});return new te.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new te.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 te.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 te.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 te.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new te.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new te.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 te.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 te.Top(r,u)}const o=n.fieldExpr();o&&(i=new te.Top(r,this.getFieldExpr(o)))}return i||(i=new te.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 te.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Wn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof te.SourceQueryElement){const s=new te.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 te.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 te.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 te.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof te.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Wn.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 te.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,Wn.getId)(e.exploreQueryNameDef()),r=new te.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 te.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new te.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 te.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new te.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new te.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(te.isComparison(i))return this.astAt(new te.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new te.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new te.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new te.ExprNow}visitExprNumber(e){return new te.ExprNumber(e.text)}visitExprFieldPath(e){const n=new te.ExprIdReference(this.getFieldPath(e.fieldPath(),te.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new te.ExprNULL}visitExprExpr(e){return new te.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new te.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 te.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new te.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(te.isComparison(n))return new te.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 te.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,te.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 te.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 te.ExprIdReference(r),n);return s==="min"?new te.ExprMin(a):new te.ExprMax(a)}else{if(s==="avg")return new te.ExprAvg(u,i);if(s==="sum")return new te.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new te.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 te.ExprCountDistinct(r):new te.ExprCount,e);if(s==="min"){if(r)return new te.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new te.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new te.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new te.ExprAvg(r,i,o);if(s==="sum")return new te.ExprSum(r,i,o)}return new te.ExprNULL}visitExprApply(e){return new te.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new te.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new te.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,F8.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 te.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new te.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new te.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new te.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Wn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,te.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return te.ExprTimeExtract.extractor(i)?this.astAt(new te.ExprTimeExtract(i,r),e):this.astAt(new te.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,F8.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Wn.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"),te.ExprTimeExtract.extractor(l)?this.astAt(new te.ExprTimeExtract(l,s),e):this.astAt(new te.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new te.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 te.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new te.Pick(n,this.getFieldExpr(e._pickElse)):new te.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>te.isFieldPropStatement(r)&&r,"field property statement");return new te.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new te.PartitionBy(e.id().map(n=>this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,Wn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,te.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,te.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,te.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,te.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,te.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,te.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,te.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new te.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 te.ImportSourceName((0,Wn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,Wn.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 te.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new te.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new te.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new te.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 w8(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new w8(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new te.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,Wn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new te.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 te.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof te.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new gV)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new te.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 te.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof te.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new te.ReferenceView(this.getFieldPath(e.fieldPath(),te.ViewOrScalarFieldReference))}visitSegOps(e){return new te.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new te.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new te.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new te.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof SRe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new gV}visitSQSQL(e){const n=new te.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new te.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}K5.MalloyToAST=TRe;var X5={};Object.defineProperty(X5,"__esModule",{value:!0}),X5.MessageLog=void 0;class ORe{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}}X5.MessageLog=ORe;var J5={};Object.defineProperty(J5,"__esModule",{value:!0}),J5.Zone=void 0;class RRe{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})}}J5.Zone=RRe;var Z5={};Object.defineProperty(Z5,"__esModule",{value:!0}),Z5.walkForDocumentSymbols=void 0;const NRe=I0,DRe=un;class FRe{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,DRe.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 wRe(t,e,n){const r=new FRe(t,e,[],[]),i=r;return NRe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Z5.walkForDocumentSymbols=wRe;var eC={};Object.defineProperty(eC,"__esModule",{value:!0}),eC.walkForDocumentCompletions=void 0;const LRe=I0,IRe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],$Re=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],BRe=["source","explore","query","sql"];class kRe{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 IRe)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 $Re)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 BRe)this.completions.push({type:"model_property",text:`${r}: `})}}}function PRe(t,e,n){const r=new kRe(t,[],n),i=r;return LRe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}eC.walkForDocumentCompletions=PRe;var tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.walkForDocumentHelpContext=void 0;const MRe=hD;class jRe extends MRe.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 URe(t,e){return new jRe(e).visit(t)}tC.walkForDocumentHelpContext=URe;var nC={},O3={};Object.defineProperty(O3,"__esModule",{value:!0}),O3.locationContainsPosition=void 0;function qRe(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)}O3.locationContainsPosition=qRe,Object.defineProperty(nC,"__esModule",{value:!0}),nC.ReferenceList=void 0;const zRe=O3;class HRe{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,zRe.locationContainsPosition)(r.location,e))return r}}nC.ReferenceList=HRe;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.isNeedResponse=void 0;function QRe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}rC.isNeedResponse=QRe;var iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.walkForModelAnnotation=void 0;const GRe=I0;class WRe{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 VRe(t,e,n){const r=new WRe(t,e,n),i=r;return GRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}iC.walkForModelAnnotation=VRe;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.walkForTablePath=void 0;const mV=un,YRe=I0;class KRe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,mV.getId)(e.connectionId()),[r,i]=(0,mV.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function XRe(t,e,n){const r=new KRe(t,e),i=r;return YRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}sC.walkForTablePath=XRe;var JRe=F&&F.__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]}),ZRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eNe=F&&F.__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)&&JRe(e,t,n);return ZRe(e,t),e};Object.defineProperty(Du,"__esModule",{value:!0}),Du.MalloyParserErrorHandler=Du.MalloyTranslator=Du.MalloyChildTranslator=Du.MalloyTranslation=void 0;const yV=aS,tNe=v4,nNe=w,EV=eNe(o_),rNe=K5,iNe=X5,sNe=Al,L8=J5,oNe=Z5,uNe=eC,aNe=tC,lNe=nC,oC=rC,cNe=O3,AV=gl,fNe=iC,xNe=sC;class dNe extends tNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class hNe{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===""?`
|
|
1303
|
+
`)),O_.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"),O_.ErrorFactory.structDef}}Km.SQLSource=a4e,Object.defineProperty(b_,"__esModule",{value:!0}),b_.SQSource=void 0;const l4e=Yu,c4e=Ym,f4e=Km;class x4e extends l4e.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 f4e.SQLSource){const e=new c4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}b_.SQSource=x4e;var R_={};Object.defineProperty(R_,"__esModule",{value:!0}),R_.SQExtend=void 0;const d4e=Mm,h4e=Yu;class p4e extends h4e.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 d4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}R_.SQExtend=p4e;var N_={},Xm={},Jm={};Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.BinaryBoolean=void 0;const qQ=le,g4e=cr,m4e=an,y4e=Ku,E4e=xt;class A4e extends E4e.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=[m4e.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,qQ.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,qQ.maxExpressionType)(n.expressionType,r.expressionType),value:{node:(0,y4e.getExprNode)(this.op),kids:{left:n.value,right:r.value}},evalSpace:i}}return(0,g4e.errorFor)("logial required boolean")}}Jm.BinaryBoolean=A4e,Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.ExprCompare=void 0;const Vt=an,v4e=Jm,S4e={"~":[Vt.FT.stringT],"!~":[Vt.FT.stringT],"<":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"<=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],"!=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">=":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT],">":[Vt.FT.numberT,Vt.FT.stringT,Vt.FT.dateT,Vt.FT.timestampT]};class _4e extends v4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=S4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}Xm.ExprCompare=_4e;var Zm={},C2={};Object.defineProperty(C2,"__esModule",{value:!0}),C2.ExprTime=void 0;const C4e=le,b4e=xt;class wD extends b4e.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,C4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=i}return new wD(e,r,n.expressionType)}}C2.ExprTime=wD;var j0={};Object.defineProperty(j0,"__esModule",{value:!0}),j0.Range=void 0;const zQ=le,T4e=cr,O4e=xt;class R4e extends O4e.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,zQ.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,zQ.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,T4e.errorFor)("a range is not a value")}}j0.Range=R4e,Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.ExprGranularTime=void 0;const HQ=le,N4e=cr,QQ=an,GQ=lr,D4e=xt,D_=C2,WQ=j0;class F4e extends D4e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[QQ.FT.timestampT,QQ.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,HQ.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,HQ.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,N4e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e),r={node:"numberLiteral",literal:"1"};if(n.dataType==="timestamp"){const u=D_.ExprTime.fromValue("timestamp",n),a=new D_.ExprTime("timestamp",(0,GQ.timeOffset)("timestamp",n.value,"+",r,this.units),n.expressionType);return new WQ.Range(u,a)}const i=new D_.ExprTime("date",n.value,n.expressionType),s=(0,GQ.timeOffset)("date",n.value,"+",r,this.units),o=new D_.ExprTime("date",s,n.expressionType);return new WQ.Range(i,o)}}Zm.ExprGranularTime=F4e,Object.defineProperty(N_,"__esModule",{value:!0}),N_.Apply=void 0;const w4e=Xm,L4e=S2,VQ=Zm;class I4e extends w4e.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,L4e.isGranularResult)(r)&&(n=new VQ.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof VQ.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}N_.Apply=I4e;var b2={};Object.defineProperty(b2,"__esModule",{value:!0}),b2.BinaryNumeric=void 0;const $4e=an,B4e=xt;class k4e extends B4e.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=[$4e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}b2.BinaryNumeric=k4e;var F_={};Object.defineProperty(F_,"__esModule",{value:!0}),F_.Boolean=void 0;const P4e=xt,M4e=an;let j4e=class extends P4e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...M4e.FT.boolT,value:{node:this.value}}}};F_.Boolean=j4e;var U0={};Object.defineProperty(U0,"__esModule",{value:!0}),U0.FunctionOrdering=U0.FunctionOrderBy=void 0;const LD=le,YQ=We,U4e=px;class q4e extends YQ.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,LD.expressionIsAggregate)(n.expressionType)||((0,LD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof U4e.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,LD.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}}}U0.FunctionOrderBy=q4e;class z4e extends YQ.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))}}U0.FunctionOrdering=z4e;var w_={};Object.defineProperty(w_,"__esModule",{value:!0}),w_.ExprAddSub=void 0;const H4e=b2;class Q4e extends H4e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}w_.ExprAddSub=Q4e;var yl={},ht={},e3={};Object.defineProperty(e3,"__esModule",{value:!0}),e3.ReferenceField=void 0;const KQ=Wr;class G4e extends KQ.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 KQ.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"}}}e3.ReferenceField=G4e;var Gn={};Object.defineProperty(Gn,"__esModule",{value:!0}),Gn.typecheckGroupBy=Gn.typecheckAggregate=Gn.typecheckCalculate=Gn.typecheckDeclare=Gn.typecheckMeasure=Gn.typecheckDimension=Gn.typecheckIndex=Gn.typecheckProject=void 0;const Nn=Ru;function W4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckProject=W4e;function V4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Nn.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`)}}Gn.typecheckIndex=V4e;function Y4e(t,e){if(!(0,Nn.expressionIsScalar)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckDimension=Y4e;function K4e(t,e){if(!(0,Nn.expressionIsAggregate)(t.expressionType))if((0,Nn.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,Nn.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`)}Gn.typecheckMeasure=K4e;function X4e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Nn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Gn.typecheckDeclare=X4e;function J4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Nn.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?`)}}Gn.typecheckCalculate=J4e;function Z4e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckAggregate=Z4e;function e_e(t,e){if(t.dataType==="turtle"||!(0,Nn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Nn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Nn.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?`)}}Gn.typecheckGroupBy=e_e,Object.defineProperty(ht,"__esModule",{value:!0}),ht.FieldReferences=ht.WildcardFieldReference=ht.ViewOrScalarFieldReference=ht.DimensionFieldReference=ht.MeasureFieldReference=ht.DeclareFieldReference=ht.ProjectFieldReference=ht.GroupByFieldReference=ht.AggregateFieldReference=ht.IndexFieldReference=ht.CalculateFieldReference=ht.ParameterFieldReference=ht.PartitionByFieldReference=ht.ExpressionFieldReference=ht.AcceptExceptFieldReference=ht.FieldReference=void 0;const t_e=e3,n_e=bs,XQ=We,JQ=Gr,q0=Gn;class Ji extends XQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=JQ.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 t_e.ReferenceField(this,r))}}get refToField(){return{type:"fieldref",path:this.list.map(e=>e.refString)}}get refString(){return this.path.join(".")}get path(){return this.list.map(e=>e.refString)}get outputName(){return this.list[this.list.length-1].refString}get sourceString(){if(this.list.length>1)return this.list.slice(0,-1).map(e=>e.refString).join(".")}get nameString(){return this.list[this.list.length-1].refString}getField(e){const n=e.lookup(this.list);if(n.found){const r=n.found.typeDesc();this.typecheck(r)}return n}}ht.FieldReference=Ji;class r_e extends Ji{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=r_e;class i_e extends Ji{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=i_e;class s_e extends Ji{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=s_e;class o_e extends Ji{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=o_e;class u_e extends Ji{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,q0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=u_e;class ID extends Ji{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,q0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return ID.indexOutputName(this.path)}}ht.IndexFieldReference=ID;class a_e extends Ji{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,q0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=a_e;class l_e extends Ji{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,q0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=l_e;class c_e extends Ji{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,q0.typecheckProject)(e,this)}}ht.ProjectFieldReference=c_e;class f_e extends Ji{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,q0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=f_e;class x_e extends Ji{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,q0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=x_e;class d_e extends Ji{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,q0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=d_e;class h_e extends Ji{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=h_e;class p_e extends XQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=JQ.extendNoteMethod,this.except=new Set,this.has({joinPath:e})}getFieldDef(){throw this.internalError("fielddef request from wildcard reference")}get refString(){return this.joinPath?`${this.joinPath.refString}.*`:"*"}}ht.WildcardFieldReference=p_e;class g_e extends n_e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=g_e,Object.defineProperty(yl,"__esModule",{value:!0}),yl.ExprAggregateFunction=void 0;const ZQ=le,m_e=It,t3=cr,y_e=Yr,E_e=dx,A_e=an,v_e=ht,S_e=xt,__e=Wr,C_e=px;class b_e extends S_e.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[A_e.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,ZQ.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=>T_e(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof E_e.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,t3.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,t3.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,t3.errorFor)("agggregate without expression");if((0,ZQ.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,t3.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=BD(a,c),p=kD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=O_e(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,t3.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(...$D(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...$D(e,r))}return n}}yl.ExprAggregateFunction=b_e;function T_e(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 $D(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 y_e.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof __e.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,m_e.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=$D(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 BD(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 kD(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 O_e(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=BD(i,e),o=kD(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=BD(l,e),f=kD(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 v_e.FieldReference?`${n.refString}.${r}()`:n instanceof C_e.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 L_={};Object.defineProperty(L_,"__esModule",{value:!0}),L_.ExprAlternationTree=void 0;const eG=le,R_e=cr,N_e=xt;class D_e extends N_e.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,eG.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,eG.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,R_e.errorFor)("no value from alternation tree")}}L_.ExprAlternationTree=D_e;var T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ExprAsymmetric=void 0;const F_e=yl;class w_e extends F_e.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}`}}}}T2.ExprAsymmetric=w_e;var I_={};Object.defineProperty(I_,"__esModule",{value:!0}),I_.ExprAvg=void 0;const L_e=T2;class I_e extends L_e.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}I_.ExprAvg=I_e;var $_={};Object.defineProperty($_,"__esModule",{value:!0}),$_.ExprCast=void 0;const $_e=lr,B_e=xt;class k_e extends B_e.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,$_e.castTo)(this.castType,s.value,s.dataType,this.safe),evalSpace:s.evalSpace}}}$_.ExprCast=k_e;var B_={};Object.defineProperty(B_,"__esModule",{value:!0}),B_.ExprCoalesce=void 0;const tG=Ru,nG=an,P_e=xt;class M_e extends P_e.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=nG.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(nG.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,tG.maxExpressionType)(n.expressionType,r.expressionType),value:{node:"coalesce",kids:{left:n.value,right:r.value}},evalSpace:(0,tG.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}B_.ExprCoalesce=M_e;var k_={};Object.defineProperty(k_,"__esModule",{value:!0}),k_.ExprCount=void 0;const j_e=yl;class U_e extends j_e.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"}}}k_.ExprCount=U_e;var P_={};Object.defineProperty(P_,"__esModule",{value:!0}),P_.ExprCountDistinct=void 0;const M_=an,q_e=yl;class z_e extends q_e.ExprAggregateFunction{constructor(e){super("distinct",e),this.legalChildTypes=[M_.FT.numberT,M_.FT.stringT,M_.FT.dateT,M_.FT.timestampT]}}P_.ExprCountDistinct=z_e;var j_={},z0={};Object.defineProperty(z0,"__esModule",{value:!0}),z0.Limit=void 0;const H_e=We,Q_e=On;class G_e extends H_e.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=Q_e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}z0.Limit=G_e;var O2={};Object.defineProperty(O2,"__esModule",{value:!0}),O2.PartitionBy=void 0;const W_e=We;class V_e extends W_e.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}O2.PartitionBy=V_e;var n3={},H0={};Object.defineProperty(H0,"__esModule",{value:!0}),H0.FieldName=void 0;const Y_e=We;class K_e extends Y_e.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])}}H0.FieldName=K_e,Object.defineProperty(n3,"__esModule",{value:!0}),n3.ExprFunc=void 0;const ro=le,Xu=cr,X_e=dx,J_e=xt,Z_e=H0,rG=It;class e5e extends J_e.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)}getPropsExpression(e,n){var r,i,s,o,u;const a=this.args.map(O=>O.getExpression(e));if(this.isRaw){let O="scalar",I;const j=[`${this.name}(`];for(const G of a)O=(0,ro.maxExpressionType)(O,G.expressionType),I?j.push(","):I=G.dataType,j.push(G.value);return j.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:O,value:(0,rG.composeSQLExpr)(j),evalSpace:(0,ro.mergeEvalSpaces)(...a.map(G=>G.evalSpace))}}const l=(s=this.modelEntry(this.name.toLowerCase()))===null||s===void 0?void 0:s.entry;if(l===void 0)return this.log(`Unknown function '${this.name}'. Use '${this.name}!(...)' to call a SQL function directly.`),(0,Xu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Xu.errorFor)("called non function");l.name!==this.name&&this.log(`Case insensitivity for function names is deprecated, use '${l.name}' instead`,"warn");let c,f=(o=this.source)===null||o===void 0?void 0:o.path;if(this.source){const O=this.source.getField(e).found;if(O){const I=O.typeDesc();if((0,ro.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:{node:"field",path:this.source.path},evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(O instanceof X_e.StructSpaceFieldBase)){const j=`Aggregate source cannot be a ${I.dataType}`;return this.log(j),(0,Xu.errorFor)(j)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Xu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=t5e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(O=>O.dataType).join(", ")})`),(0,Xu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const O of m){const I=O.argIndex-(c?1:0),j=(0,ro.expressionIsScalar)(O.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualExpressionType}`)}for(const O of g){const I=O.argIndex-(c?1:0),j=O.maxEvalSpace==="literal"?"literal":O.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must be ${j}, but received ${O.actualEvalSpace}`)}for(const O of y){const I=O.argIndex-(c?1:0);this.args[I].log(`Parameter ${O.argIndex+1} ('${O.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,ro.maxOfExpressionTypes)([E.expressionType,...x.map(O=>O.expressionType)]);if(!(0,ro.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(O=>O.dataType).join(", ")}) with source`),(0,Xu.errorFor)("cannot call with source");const v={node:"function_call",overload:p,name:this.name,kids:{args:x.map(O=>O.value)},expressionType:A,structPath:f};let S=v;const _=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=_?p.dialect[_]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${_}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const O=(0,ro.expressionIsAnalytic)(p.returnType.expressionType);if(O||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||O){const I=C.supportsOrderBy!=="only_default",j=n.orderBys.flatMap(Q=>O?Q.getAnalyticOrderBy(e):Q.getAggregateOrderBy(e,I));v.kids.orderBy=j}else n.orderBys[0].log(`Function \`${this.name}\` does not support \`order_by\``)}(n==null?void 0:n.limit)!==void 0&&(C.supportsLimit?v.limit=n.limit.limit:this.log(`Function ${this.name} does not support limit`))}if(n!=null&&n.partitionBys&&n.partitionBys.length>0){const O=[];for(const I of n.partitionBys)for(const j of I.partitionFields){const Q=j.getField(e);Q.found===void 0?j.log(`${j.refString} is not defined`):(0,ro.expressionIsAnalytic)(Q.found.typeDesc().expressionType)||(0,ro.expressionIsUngroupedAggregate)(Q.found.typeDesc().expressionType)?j.log("Partition expression must be scalar or aggregate"):O.push(j.nameString)}v.partitionBy=O}if(["sql_number","sql_string","sql_date","sql_timestamp","sql_boolean"].includes(l.name)){if(!this.inExperiment("sql_functions",!0)){const I=`Cannot use sql_function \`${l.name}\`; use \`sql_functions\` experiment to enable this behavior`;return this.log(I),(0,Xu.errorFor)("sql_function used without enabling")}const O=x[0].value;if(O.node!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=O.literal,j=n5e(I),Q=j.filter(P=>P.type==="interpolation"&&P.name.includes(".")).map(P=>P.type==="interpolation"?`\${${P.name}}`:`\${${P.value}}`);if(Q.length>0){const P=Q.length===1?`'.' paths are not yet supported in sql interpolations, found ${Q.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${Q.join(", ")})`;return this.log(P),(0,Xu.errorFor)(`${P}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const G=[];for(const P of j)if(P.type==="string")G.push(P.value);else if(P.name==="TABLE")G.push({node:"source-reference"});else{const W=new Z_e.FieldName(P.name);this.has({name:W});const oe=e.lookup([W]);if(oe.found===void 0)return this.log(`Invalid interpolation: ${oe.error}`),(0,Xu.errorFor)("invalid interpolated field");oe.found.refType==="parameter"?G.push({node:"parameter",path:[P.name]}):G.push({node:"field",path:[P.name]})}S=(0,rG.composeSQLExpr)(G)}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Xu.errorFor)("invalid return type");const b=(0,ro.mergeEvalSpaces)(...x.map(O=>O.evalSpace)),R=b==="constant"?"constant":(0,ro.expressionIsScalar)(A)?b:"output";return{dataType:E.dataType,expressionType:A,value:S,evalSpace:R}}}n3.ExprFunc=e5e;function t5e(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,ro.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")||h.evalSpace==="output"&&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 n5e(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(j_,"__esModule",{value:!0}),j_.ExprProps=void 0;const r5e=le,i5e=cr,s5e=an,o5e=U0,u5e=z0,a5e=O2,l5e=xt,c5e=n3;class f5e extends l5e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=s5e.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,r5e.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,i5e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof a5e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof u5e.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 o5e.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 c5e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}j_.ExprProps=f5e;var U_={};Object.defineProperty(U_,"__esModule",{value:!0}),U_.ExprLogicalOp=void 0;const x5e=Jm,iG=an;class d5e extends x5e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[iG.FT.boolT,iG.FT.aggregateBoolT]}}U_.ExprLogicalOp=d5e;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.ExprMax=void 0;const z_=an,h5e=yl;class p5e extends h5e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[z_.FT.numberT,z_.FT.stringT,z_.FT.dateT,z_.FT.timestampT]}returns(e){return e.dataType}}q_.ExprMax=p5e;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.ExprMin=void 0;const Q_=an,g5e=yl;class m5e extends g5e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[Q_.FT.numberT,Q_.FT.stringT,Q_.FT.dateT,Q_.FT.timestampT]}returns(e){return e.dataType}}H_.ExprMin=m5e;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.ExprMinus=void 0;const y5e=cr,sG=an,E5e=xt;class A5e extends E5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[sG.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return sG.FT.typeIn(n,this.legalChildTypes)?{...n,dataType:"number",value:{node:"unary-",e:n.value}}:(0,y5e.errorFor)("negate requires number")}}G_.ExprMinus=A5e;var W_={};Object.defineProperty(W_,"__esModule",{value:!0}),W_.ExprMulDiv=void 0;const v5e=b2;class S5e extends v5e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}W_.ExprMulDiv=S5e;var V_={},r3={};Object.defineProperty(r3,"__esModule",{value:!0}),r3.Unary=void 0;const _5e=xt;class C5e extends _5e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}r3.Unary=C5e,Object.defineProperty(V_,"__esModule",{value:!0}),V_.ExprNot=void 0;const oG=an,b5e=r3,T5e=v2;class O5e extends b5e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[oG.FT.boolT,oG.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,T5e.nullsafeNot)(n.value):{node:"false"}}}}V_.ExprNot=O5e;var Y_={};Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.ExprNow=void 0;const R5e=xt;class N5e extends R5e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:{node:"now"}}}}Y_.ExprNow=N5e;var K_={};Object.defineProperty(K_,"__esModule",{value:!0}),K_.ExprNULL=void 0;const D5e=xt;class F5e extends D5e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:{node:"null"},expressionType:"scalar",evalSpace:"literal"}}}K_.ExprNULL=F5e;var X_={};Object.defineProperty(X_,"__esModule",{value:!0}),X_.ExprNumber=void 0;const w5e=an,L5e=xt;class I5e extends L5e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...w5e.FT.numberT,evalSpace:"literal",value:{node:"numberLiteral",literal:this.n}}}}X_.ExprNumber=I5e;var J_={};Object.defineProperty(J_,"__esModule",{value:!0}),J_.ExprParens=void 0;const $5e=xt;class B5e extends $5e.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}}}}J_.ExprParens=B5e;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ExprRegEx=void 0;const k5e=xt;class P5e extends k5e.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"}}}Z_.ExprRegEx=P5e;var e5={};Object.defineProperty(e5,"__esModule",{value:!0}),e5.ExprString=void 0;const M5e=xt,j5e=an;class U5e extends M5e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...j5e.FT.stringT,value:{node:"stringLiteral",literal:this.value},evalSpace:"literal"}}}e5.ExprString=U5e;var t5={};Object.defineProperty(t5,"__esModule",{value:!0}),t5.ExprSum=void 0;const q5e=T2;class z5e extends q5e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}t5.ExprSum=z5e;var n5={};Object.defineProperty(n5,"__esModule",{value:!0}),n5.ExprTimeExtract=void 0;const yx=le,Q0=cr,PD=xt,H5e=j0;class i3 extends PD.ExpressionDef{static extractor(e){const n=i3.pluralMap[e];if(n)return n;if((0,yx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=i3.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,Q0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof H5e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,yx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,yx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,Q0.errorFor)("extract from error").value};if(!(0,yx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,Q0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,yx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,Q0.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,PD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,PD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,Q0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,Q0.errorFor)(`${n} civil extraction`)):(0,yx.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,Q0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,yx.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,Q0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}n5.ExprTimeExtract=i3,i3.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var r5={},qo={},i5={};Object.defineProperty(i5,"__esModule",{value:!0}),i5.QueryInputSpace=void 0;const Q5e=Xi,G5e=qm,W5e=x2;class V5e extends W5e.RefinedSpace{constructor(e,n){const r=new G5e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof Q5e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}i5.QueryInputSpace=V5e;var Y5e=F&&F.__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]}),K5e=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),X5e=F&&F.__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)&&Y5e(e,t,n);return K5e(e,t),e};Object.defineProperty(qo,"__esModule",{value:!0}),qo.ReduceFieldSpace=qo.QuerySpace=qo.QueryOperationSpace=void 0;const s5=X5e(le),MD=B0,J5e=H0,Z5e=Wr,eCe=ht,tCe=x2,nCe=Um,rCe=Yr,iCe=i5;class uG extends tCe.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new iCe.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 rCe.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();s5.isAtomicFieldType(l.dataType)&&s5.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)}}qo.QueryOperationSpace=uG;class aG extends uG{addRefineFromFields(e){var n;if(s5.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new J5e.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 nCe.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof eCe.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof Z5e.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)&&!oCe(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(s5.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,MD.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,MD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,MD.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}}qo.QuerySpace=aG;class sCe extends aG{constructor(){super(...arguments),this.segmentType="reduce"}}qo.ReduceFieldSpace=sCe;function oCe(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(r5,"__esModule",{value:!0}),r5.ExprUngroup=void 0;const lG=le,jD=cr,uCe=qo,aCe=an,lCe=xt;class cCe extends lCe.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=aCe.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,lG.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,jD.errorFor)("ungrouped scalar");if((0,lG.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,jD.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 uCe.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,jD.errorFor)("ungrouped type check")}}r5.ExprUngroup=cCe;var o5={};Object.defineProperty(o5,"__esModule",{value:!0}),o5.ForRange=void 0;const cG=Ru,UD=cr,fG=an,u5=lr,fCe=xt,a5=C2,xG=j0;class xCe extends fCe.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=[fG.FT.timestampT,fG.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,UD.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,cG.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,cG.maxExpressionType)(i.expressionType,s.expressionType),value:(0,UD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,u5.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,u5.timeOffset)("date",i.value,"+",o.value,u),g=new a5.ExprTime("date",m);return new xG.Range(p,g).apply(e,n,r)}const l=a5.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,u5.castDateToTimestamp)(f),c=new a5.ExprTime("timestamp",f,i.expressionType)}const x=(0,u5.timeOffset)("timestamp",f,"+",o.value,u),h=new a5.ExprTime("timestamp",x,i.expressionType);return new xG.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,UD.errorFor)("range has no value")}}o5.ForRange=xCe;var fr={},Zi={};Object.defineProperty(Zi,"__esModule",{value:!0});class Ex extends Error{}class dCe extends Ex{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class hCe extends Ex{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class pCe extends Ex{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class s3 extends Ex{}class dG extends Ex{constructor(e){super(`Invalid unit ${e}`)}}class io extends Ex{}class G0 extends Ex{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Os="long",qD={year:ke,month:ke,day:ke},hG={year:ke,month:zo,day:ke},gCe={year:ke,month:zo,day:ke,weekday:zo},pG={year:ke,month:Os,day:ke},gG={year:ke,month:Os,day:ke,weekday:Os},mG={hour:ke,minute:ke},yG={hour:ke,minute:ke,second:ke},EG={hour:ke,minute:ke,second:ke,timeZoneName:zo},AG={hour:ke,minute:ke,second:ke,timeZoneName:Os},vG={hour:ke,minute:ke,hourCycle:"h23"},SG={hour:ke,minute:ke,second:ke,hourCycle:"h23"},_G={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},CG={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Os},bG={year:ke,month:ke,day:ke,hour:ke,minute:ke},TG={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},OG={year:ke,month:zo,day:ke,hour:ke,minute:ke},RG={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},mCe={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},NG={year:ke,month:Os,day:ke,hour:ke,minute:ke,timeZoneName:zo},DG={year:ke,month:Os,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},FG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,timeZoneName:Os},wG={year:ke,month:Os,day:ke,weekday:Os,hour:ke,minute:ke,second:ke,timeZoneName:Os};function St(t){return typeof t>"u"}function Ax(t){return typeof t=="number"}function l5(t){return typeof t=="number"&&t%1===0}function yCe(t){return typeof t=="string"}function ECe(t){return Object.prototype.toString.call(t)==="[object Date]"}function LG(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function ACe(t){return Array.isArray(t)?t:[t]}function IG(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 vCe(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function R2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function El(t,e,n){return l5(t)&&t>=e&&t<=n}function SCe(t,e){return t-e*Math.floor(t/e)}function Mn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function W0(t){if(!(St(t)||t===null||t===""))return parseInt(t,10)}function vx(t){if(!(St(t)||t===null||t===""))return parseFloat(t)}function zD(t){if(!(St(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function HD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function o3(t){return t%4===0&&(t%100!==0||t%400===0)}function u3(t){return o3(t)?366:365}function c5(t,e){const n=SCe(e-1,12)+1,r=t+(e-n)/12;return n===2?o3(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function QD(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 f5(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 GD(t){return t>99?t:t>60?1900+t:2e3+t}function $G(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 x5(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 BG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new io(`Invalid unit value ${t}`);return e}function d5(t,e){const n={};for(const r in t)if(R2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=BG(i)}return n}function a3(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}${Mn(n,2)}:${Mn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Mn(n,2)}${Mn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function h5(t){return vCe(t,["hour","minute","second","millisecond"])}const kG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,_Ce=["January","February","March","April","May","June","July","August","September","October","November","December"],PG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],CCe=["J","F","M","A","M","J","J","A","S","O","N","D"];function MG(t){switch(t){case"narrow":return[...CCe];case"short":return[...PG];case"long":return[..._Ce];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 jG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],UG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],bCe=["M","T","W","T","F","S","S"];function qG(t){switch(t){case"narrow":return[...bCe];case"short":return[...UG];case"long":return[...jG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const zG=["AM","PM"],TCe=["Before Christ","Anno Domini"],OCe=["BC","AD"],RCe=["B","A"];function HG(t){switch(t){case"narrow":return[...RCe];case"short":return[...OCe];case"long":return[...TCe];default:return null}}function NCe(t){return zG[t.hour<12?0:1]}function DCe(t,e){return qG(e)[t.weekday-1]}function FCe(t,e){return MG(e)[t.month-1]}function wCe(t,e){return HG(e)[t.year<0?0:1]}function LCe(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 QG(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const ICe={D:qD,DD:hG,DDD:pG,DDDD:gG,t:mG,tt:yG,ttt:EG,tttt:AG,T:vG,TT:SG,TTT:_G,TTTT:CG,f:bG,ff:OG,fff:NG,ffff:FG,F:TG,FF:RG,FFF:DG,FFFF:wG};class es{static create(e,n={}){return new es(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 ICe[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 Mn(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?NCe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?FCe(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?DCe(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=es.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?wCe(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 QG(es.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=es.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 QG(s,i(u))}}class Ho{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let N2=class{get type(){throw new G0}get name(){throw new G0}get ianaName(){return this.name}get isUniversal(){throw new G0}offsetName(e,n){throw new G0}formatOffset(e,n){throw new G0}offset(e){throw new G0}equals(e){throw new G0}get isValid(){throw new G0}},WD=null;class p5 extends N2{static get instance(){return WD===null&&(WD=new p5),WD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return $G(e,n,r)}formatOffset(e,n){return a3(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let g5={};function $Ce(t){return g5[t]||(g5[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"})),g5[t]}const BCe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function kCe(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 PCe(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=BCe[s];s==="era"?r[u]=o:St(u)||(r[u]=parseInt(o,10))}return r}let m5={};class Ju extends N2{static create(e){return m5[e]||(m5[e]=new Ju(e)),m5[e]}static resetCache(){m5={},g5={}}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=Ju.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return $G(e,n,r,this.name)}formatOffset(e,n){return a3(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=$Ce(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?PCe(r,n):kCe(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=QD({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 VD=null;class Kr extends N2{static get utcInstance(){return VD===null&&(VD=new Kr(0)),VD}static instance(e){return e===0?Kr.utcInstance:new Kr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Kr(x5(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${a3(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${a3(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return a3(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 GG extends N2{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 V0(t,e){if(St(t)||t===null)return e;if(t instanceof N2)return t;if(yCe(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Kr.utcInstance:Kr.parseSpecifier(n)||Ju.create(t)}else return Ax(t)?Kr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new GG(t)}let WG=()=>Date.now(),VG="system",YG=null,KG=null,XG=null,JG;class jn{static get now(){return WG}static set now(e){WG=e}static set defaultZone(e){VG=e}static get defaultZone(){return V0(VG,p5.instance)}static get defaultLocale(){return YG}static set defaultLocale(e){YG=e}static get defaultNumberingSystem(){return KG}static set defaultNumberingSystem(e){KG=e}static get defaultOutputCalendar(){return XG}static set defaultOutputCalendar(e){XG=e}static get throwOnInvalid(){return JG}static set throwOnInvalid(e){JG=e}static resetCaches(){dn.resetCache(),Ju.resetCache()}}let ZG={};function MCe(t,e={}){const n=JSON.stringify([t,e]);let r=ZG[n];return r||(r=new Intl.ListFormat(t,e),ZG[n]=r),r}let YD={};function KD(t,e={}){const n=JSON.stringify([t,e]);let r=YD[n];return r||(r=new Intl.DateTimeFormat(t,e),YD[n]=r),r}let XD={};function jCe(t,e={}){const n=JSON.stringify([t,e]);let r=XD[n];return r||(r=new Intl.NumberFormat(t,e),XD[n]=r),r}let JD={};function UCe(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=JD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),JD[i]=s),s}let l3=null;function qCe(){return l3||(l3=new Intl.DateTimeFormat().resolvedOptions().locale,l3)}function zCe(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=KD(t).resolvedOptions()}catch{n=KD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function HCe(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function QCe(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function GCe(t){const e=[];for(let n=1;n<=7;n++){const r=st.utc(2016,11,13+n);e.push(t(r))}return e}function y5(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function WCe(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 VCe{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=jCe(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):HD(e,3);return Mn(n,this.padTo)}}}class YCe{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&&Ju.create(u).valid?(i=u,this.dt=e):(i="UTC",r.timeZoneName?this.dt=e:this.dt=e.offset===0?e:st.fromMillis(e.ts+e.offset*60*1e3))}else e.zone.type==="system"?this.dt=e:(this.dt=e,i=e.zone.name);const s={...this.opts};i&&(s.timeZone=i),this.dtf=KD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class KCe{constructor(e,n,r){this.opts={style:"long",...r},!n&&LG()&&(this.rtf=UCe(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):LCe(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class dn{static fromOpts(e){return dn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||jn.defaultLocale,o=s||(i?"en-US":qCe()),u=n||jn.defaultNumberingSystem,a=r||jn.defaultOutputCalendar;return new dn(o,u,a,s)}static resetCache(){l3=null,YD={},XD={},JD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return dn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=zCe(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=HCe(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=WCe(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:dn.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 y5(this,e,r,MG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=QCe(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return y5(this,e,r,qG,()=>{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]=GCe(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return y5(this,void 0,e,()=>zG,()=>{if(!this.meridiemCache){const n={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[st.utc(2016,11,13,9),st.utc(2016,11,13,19)].map(r=>this.extract(r,n,"dayperiod"))}return this.meridiemCache})}eras(e,n=!0){return y5(this,e,n,HG,()=>{const r={era:e};return this.eraCache[e]||(this.eraCache[e]=[st.utc(-40,1,1),st.utc(2017,1,1)].map(i=>this.extract(i,r,"era"))),this.eraCache[e]})}extract(e,n,r){const i=this.dtFormatter(e,n),s=i.formatToParts(),o=s.find(u=>u.type.toLowerCase()===r);return o?o.value:null}numberFormatter(e={}){return new VCe(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new YCe(e,this.intl,n)}relFormatter(e={}){return new KCe(this.intl,this.isEnglish(),e)}listFormatter(e={}){return MCe(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 D2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function F2(...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 w2(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 eW(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=W0(e[n+i]);return[r,null,n+i]}}const tW=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,XCe=`(?:${tW.source}?(?:\\[(${kG.source})\\])?)?`,ZD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,nW=RegExp(`${ZD.source}${XCe}`),e8=RegExp(`(?:T${nW.source})?`),JCe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,ZCe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,ebe=/(\d{4})-?(\d{3})/,tbe=eW("weekYear","weekNumber","weekDay"),nbe=eW("year","ordinal"),rbe=/(\d{4})-(\d\d)-(\d\d)/,rW=RegExp(`${ZD.source} ?(?:${tW.source}|(${kG.source}))?`),ibe=RegExp(`(?: ${rW.source})?`);function L2(t,e,n){const r=t[e];return St(r)?n:W0(r)}function sbe(t,e){return[{year:L2(t,e),month:L2(t,e+1,1),day:L2(t,e+2,1)},null,e+3]}function I2(t,e){return[{hours:L2(t,e,0),minutes:L2(t,e+1,0),seconds:L2(t,e+2,0),milliseconds:zD(t[e+3])},null,e+4]}function c3(t,e){const n=!t[e]&&!t[e+1],r=x5(t[e+1],t[e+2]),i=n?null:Kr.instance(r);return[{},i,e+3]}function f3(t,e){const n=t[e]?Ju.create(t[e]):null;return[{},n,e+1]}const obe=RegExp(`^T?${ZD.source}$`),ube=/^-?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 abe(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(vx(n)),months:x(vx(r)),weeks:x(vx(i)),days:x(vx(s)),hours:x(vx(o)),minutes:x(vx(u)),seconds:x(vx(a),a==="-0"),milliseconds:x(zD(l),f)}]}const lbe={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 t8(t,e,n,r,i,s,o){const u={year:e.length===2?GD(W0(e)):W0(e),month:PG.indexOf(n)+1,day:W0(r),hour:W0(i),minute:W0(s)};return o&&(u.second=W0(o)),t&&(u.weekday=t.length>3?jG.indexOf(t)+1:UG.indexOf(t)+1),u}const cbe=/^(?:(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 fbe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=t8(e,i,r,n,s,o,u);let h;return a?h=lbe[a]:l?h=0:h=x5(c,f),[x,new Kr(h)]}function xbe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const dbe=/^(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$/,hbe=/^(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$/,pbe=/^(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 iW(t){const[,e,n,r,i,s,o,u]=t;return[t8(e,i,r,n,s,o,u),Kr.utcInstance]}function gbe(t){const[,e,n,r,i,s,o,u]=t;return[t8(e,u,n,r,i,s,o),Kr.utcInstance]}const mbe=D2(JCe,e8),ybe=D2(ZCe,e8),Ebe=D2(ebe,e8),Abe=D2(nW),sW=F2(sbe,I2,c3,f3),vbe=F2(tbe,I2,c3,f3),Sbe=F2(nbe,I2,c3,f3),_be=F2(I2,c3,f3);function Cbe(t){return w2(t,[mbe,sW],[ybe,vbe],[Ebe,Sbe],[Abe,_be])}function bbe(t){return w2(xbe(t),[cbe,fbe])}function Tbe(t){return w2(t,[dbe,iW],[hbe,iW],[pbe,gbe])}function Obe(t){return w2(t,[ube,abe])}const Rbe=F2(I2);function Nbe(t){return w2(t,[obe,Rbe])}const Dbe=D2(rbe,ibe),Fbe=D2(rW),wbe=F2(I2,c3,f3);function Lbe(t){return w2(t,[Dbe,sW],[Fbe,wbe])}const Ibe="Invalid Duration",oW={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}},$be={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},...oW},so=146097/400,$2=146097/4800,Bbe={years:{quarters:4,months:12,weeks:so/7,days:so,hours:so*24,minutes:so*24*60,seconds:so*24*60*60,milliseconds:so*24*60*60*1e3},quarters:{months:3,weeks:so/28,days:so/4,hours:so*24/4,minutes:so*24*60/4,seconds:so*24*60*60/4,milliseconds:so*24*60*60*1e3/4},months:{weeks:$2/7,days:$2,hours:$2*24,minutes:$2*24*60,seconds:$2*24*60*60,milliseconds:$2*24*60*60*1e3},...oW},Sx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],kbe=Sx.slice(0).reverse();function _x(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 Pbe(t){return t<0?Math.floor(t):Math.ceil(t)}function uW(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?Pbe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function Mbe(t,e){kbe.reduce((n,r)=>St(e[r])?n:(n&&uW(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||dn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?Bbe:$be,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 io(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new _t({values:d5(e,_t.normalizeUnit),loc:dn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(Ax(e))return _t.fromMillis(e);if(_t.isDuration(e))return e;if(typeof e=="object")return _t.fromObject(e);throw new io(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=Obe(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]=Nbe(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 io("need to specify a reason the Duration is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new pCe(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 dG(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?es.create(this.loc,r).formatDurationFromString(this,e):Ibe}toHuman(e={}){const n=Sx.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+=HD(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 Sx)(R2(n.values,i)||R2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return _x(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]=BG(e(this.values[r],r));return _x(this,{values:n},!0)}get(e){return this[_t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...d5(e,_t.normalizeUnit)};return _x(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),_x(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return Mbe(this.matrix,e),_x(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 Sx)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;Ax(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)Sx.indexOf(l)>Sx.indexOf(o)&&uW(this.matrix,i,l,n,o)}else Ax(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 _x(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 _x(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 Sx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const x3="Invalid Interval";function jbe(t,e){return!t||!t.isValid?hn.invalid("missing or invalid start"):!e||!e.isValid?hn.invalid("missing or invalid end"):e<t?hn.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 hn{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 io("need to specify a reason the Interval is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new hCe(r);return new hn({invalid:r})}static fromDateTimes(e,n){const r=g3(e),i=g3(n),s=jbe(r,i);return s??new hn({start:r,end:i})}static after(e,n){const r=_t.fromDurationLike(n),i=g3(e);return hn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=_t.fromDurationLike(n),i=g3(e);return hn.fromDateTimes(i.minus(r),i)}static fromISO(e,n){const[r,i]=(e||"").split("/",2);if(r&&i){let s,o;try{s=st.fromISO(r,n),o=s.isValid}catch{o=!1}let u,a;try{u=st.fromISO(i,n),a=u.isValid}catch{a=!1}if(o&&a)return hn.fromDateTimes(s,u);if(o){const l=_t.fromISO(i,n);if(l.isValid)return hn.after(s,l)}else if(a){const l=_t.fromISO(r,n);if(l.isValid)return hn.before(u,l)}}return hn.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?hn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(g3).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(hn.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(hn.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:hn.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 hn.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(hn.fromDateTimes(n,a.time)),n=null);return hn.merge(i)}difference(...e){return hn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:x3}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:x3}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:x3}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:x3}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:x3}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):_t.invalid(this.invalidReason)}mapEndpoints(e){return hn.fromDateTimes(e(this.s),e(this.e))}}let d3=class{static hasDST(e=jn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Ju.isValidZone(e)}static normalizeZone(e){return V0(e,jn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||dn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||dn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return dn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return dn.create(n,null,"gregory").eras(e)}static features(){return{relative:LG()}}};function aW(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 Ube(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=aW(u,a);return(l-l%7)/7}],["days",aW]],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 qbe(t,e,n,r){let[i,s,o,u]=Ube(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 n8={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},lW={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]},zbe=n8.hanidec.replace(/[\[|\]]/g,"").split("");function Hbe(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(n8.hanidec)!==-1)e+=zbe.indexOf(t[n]);else for(const i in lW){const[s,o]=lW[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Qo({numberingSystem:t},e=""){return new RegExp(`${n8[t||"latn"]}${e}`)}const Qbe="missing Intl.DateTimeFormat.formatToParts support";function $t(t,e=n=>n){return{regex:t,deser:([n])=>e(Hbe(n))}}const cW="[ ]",fW=new RegExp(cW,"g");function Gbe(t){return t.replace(/\./g,"\\.?").replace(fW,cW)}function xW(t){return t.replace(/\./g,"").replace(fW," ").toLowerCase()}function Go(t,e){return t===null?null:{regex:RegExp(t.map(Gbe).join("|")),deser:([n])=>t.findIndex(r=>xW(n)===xW(r))+e}}function dW(t,e){return{regex:t,deser:([,n,r])=>x5(n,r),groups:e}}function r8(t){return{regex:t,deser:([e])=>e}}function Wbe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Vbe(t,e){const n=Qo(e),r=Qo(e,"{2}"),i=Qo(e,"{3}"),s=Qo(e,"{4}"),o=Qo(e,"{6}"),u=Qo(e,"{1,2}"),a=Qo(e,"{1,3}"),l=Qo(e,"{1,6}"),c=Qo(e,"{1,9}"),f=Qo(e,"{2,4}"),x=Qo(e,"{4,6}"),h=g=>({regex:RegExp(Wbe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Go(e.eras("short",!1),0);case"GG":return Go(e.eras("long",!1),0);case"y":return $t(l);case"yy":return $t(f,GD);case"yyyy":return $t(s);case"yyyyy":return $t(x);case"yyyyyy":return $t(o);case"M":return $t(u);case"MM":return $t(r);case"MMM":return Go(e.months("short",!0,!1),1);case"MMMM":return Go(e.months("long",!0,!1),1);case"L":return $t(u);case"LL":return $t(r);case"LLL":return Go(e.months("short",!1,!1),1);case"LLLL":return Go(e.months("long",!1,!1),1);case"d":return $t(u);case"dd":return $t(r);case"o":return $t(a);case"ooo":return $t(i);case"HH":return $t(r);case"H":return $t(u);case"hh":return $t(r);case"h":return $t(u);case"mm":return $t(r);case"m":return $t(u);case"q":return $t(u);case"qq":return $t(r);case"s":return $t(u);case"ss":return $t(r);case"S":return $t(a);case"SSS":return $t(i);case"u":return r8(c);case"uu":return r8(u);case"uuu":return $t(n);case"a":return Go(e.meridiems(),0);case"kkkk":return $t(s);case"kk":return $t(f,GD);case"W":return $t(u);case"WW":return $t(r);case"E":case"c":return $t(n);case"EEE":return Go(e.weekdays("short",!1,!1),1);case"EEEE":return Go(e.weekdays("long",!1,!1),1);case"ccc":return Go(e.weekdays("short",!0,!1),1);case"cccc":return Go(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return dW(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return dW(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return r8(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:Qbe};return m.token=t,m}const Ybe={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 Kbe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=Ybe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function Xbe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function Jbe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(R2(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 Zbe(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=Ju.create(t.z)),St(t.Z)||(n||(n=new Kr(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=zD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let i8=null;function eTe(){return i8||(i8=st.fromMillis(1555555555555)),i8}function tTe(t,e){if(t.literal)return t;const n=es.macroTokenToFormatOpts(t.val);if(!n)return t;const s=es.create(e,n).formatDateTimeParts(eTe()).map(o=>Kbe(o,e,n));return s.includes(void 0)?t:s}function nTe(t,e){return Array.prototype.concat(...t.map(n=>tTe(n,e)))}function hW(t,e,n){const r=nTe(es.parseFormat(n),t),i=r.map(o=>Vbe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=Xbe(i),a=RegExp(o,"i"),[l,c]=Jbe(e,a,u),[f,x,h]=c?Zbe(c):[null,null,void 0];if(R2(c,"a")&&R2(c,"H"))throw new s3("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 rTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=hW(t,e,n);return[r,i,s,o]}const pW=[0,31,59,90,120,151,181,212,243,273,304,334],gW=[0,31,60,91,121,152,182,213,244,274,305,335];function oo(t,e){return new Ho("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function mW(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 yW(t,e,n){return n+(o3(t)?gW:pW)[e-1]}function EW(t,e){const n=o3(t)?gW:pW,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function s8(t){const{year:e,month:n,day:r}=t,i=yW(e,n,r),s=mW(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=f5(u)):o>f5(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...h5(t)}}function AW(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=mW(e,1,4),s=u3(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=u3(u)):o>s?(u=e+1,o-=u3(e)):u=e;const{month:a,day:l}=EW(u,o);return{year:u,month:a,day:l,...h5(t)}}function o8(t){const{year:e,month:n,day:r}=t,i=yW(e,n,r);return{year:e,ordinal:i,...h5(t)}}function vW(t){const{year:e,ordinal:n}=t,{month:r,day:i}=EW(e,n);return{year:e,month:r,day:i,...h5(t)}}function iTe(t){const e=l5(t.weekYear),n=El(t.weekNumber,1,f5(t.weekYear)),r=El(t.weekday,1,7);return e?n?r?!1:oo("weekday",t.weekday):oo("week",t.week):oo("weekYear",t.weekYear)}function sTe(t){const e=l5(t.year),n=El(t.ordinal,1,u3(t.year));return e?n?!1:oo("ordinal",t.ordinal):oo("year",t.year)}function SW(t){const e=l5(t.year),n=El(t.month,1,12),r=El(t.day,1,c5(t.year,t.month));return e?n?r?!1:oo("day",t.day):oo("month",t.month):oo("year",t.year)}function _W(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=El(e,0,23)||e===24&&n===0&&r===0&&i===0,o=El(n,0,59),u=El(r,0,59),a=El(i,0,999);return s?o?u?a?!1:oo("millisecond",i):oo("second",r):oo("minute",n):oo("hour",e)}const u8="Invalid DateTime",CW=864e13;function E5(t){return new Ho("unsupported zone",`the zone "${t.name}" is not supported`)}function a8(t){return t.weekData===null&&(t.weekData=s8(t.c)),t.weekData}function h3(t,e){const n={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new st({...n,...e,old:n})}function bW(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 TW(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 A5(t,e,n){return bW(QD(t),e,n)}function OW(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,c5(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=QD(s);let[a,l]=bW(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function p3(t,e,n,r,i,s){const{setZone:o,zone:u}=n;if(t&&Object.keys(t).length!==0){const a=e||u,l=st.fromObject(t,{...n,zone:a,specificOffset:s});return o?l:l.setZone(u)}else return st.invalid(new Ho("unparsable",`the input "${i}" can't be parsed as ${r}`))}function v5(t,e,n=!0){return t.isValid?es.create(dn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function l8(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Mn(t.c.year,n?6:4),e?(r+="-",r+=Mn(t.c.month),r+="-",r+=Mn(t.c.day)):(r+=Mn(t.c.month),r+=Mn(t.c.day)),r}function RW(t,e,n,r,i,s){let o=Mn(t.c.hour);return e?(o+=":",o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Mn(t.c.minute),(t.c.second!==0||!n)&&(o+=Mn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Mn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Mn(Math.trunc(-t.o/60)),o+=":",o+=Mn(Math.trunc(-t.o%60))):(o+="+",o+=Mn(Math.trunc(t.o/60)),o+=":",o+=Mn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const NW={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},oTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},uTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},DW=["year","month","day","hour","minute","second","millisecond"],aTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],lTe=["year","ordinal","hour","minute","second","millisecond"];function FW(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 dG(t);return e}function wW(t,e){const n=V0(e.zone,jn.defaultZone),r=dn.fromObject(e),i=jn.now();let s,o;if(St(t.year))s=i;else{for(const l of DW)St(t[l])&&(t[l]=NW[l]);const u=SW(t)||_W(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=A5(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function LW(t,e,n){const r=St(n.round)?!0:n.round,i=(o,u)=>(o=HD(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 IW(t){let e={},n;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],n=Array.from(t).slice(0,t.length-1)):n=Array.from(t),[e,n]}class st{constructor(e){const n=e.zone||jn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Ho("invalid input"):null)||(n.isValid?null:E5(n));this.ts=St(e.ts)?jn.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=TW(this.ts,u),r=Number.isNaN(i.year)?new Ho("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||dn.create(),this.invalid=r,this.weekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new st({})}static local(){const[e,n]=IW(arguments),[r,i,s,o,u,a,l]=n;return wW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=IW(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Kr.utcInstance,wW({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=ECe(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=V0(n.zone,jn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:dn.fromObject(n)}):st.invalid(E5(i))}static fromMillis(e,n={}){if(Ax(e))return e<-CW||e>CW?st.invalid("Timestamp out of range"):new st({ts:e,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(Ax(e))return new st({ts:e*1e3,zone:V0(n.zone,jn.defaultZone),loc:dn.fromObject(n)});throw new io("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=V0(n.zone,jn.defaultZone);if(!r.isValid)return st.invalid(E5(r));const i=jn.now(),s=St(n.specificOffset)?r.offset(i):n.specificOffset,o=d5(e,FW),u=!St(o.ordinal),a=!St(o.year),l=!St(o.month)||!St(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=dn.fromObject(n);if((c||u)&&f)throw new s3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new s3("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=TW(i,s);h?(p=aTe,m=oTe,g=s8(g)):u?(p=lTe,m=uTe,g=o8(g)):(p=DW,m=NW);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?iTe(o):u?sTe(o):SW(o),A=E||_W(o);if(A)return st.invalid(A);const v=h?AW(o):u?vW(o):o,[S,_]=A5(v,s,r),C=new st({ts:S,zone:r,o:_,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=Cbe(e);return p3(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=bbe(e);return p3(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=Tbe(e);return p3(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(St(e)||St(n))throw new io("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=rTe(o,e,n);return c?st.invalid(c):p3(u,a,r,`format ${n}`,e,l)}static fromString(e,n,r={}){return st.fromFormat(e,n,r)}static fromSQL(e,n={}){const[r,i]=Lbe(e);return p3(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new io("need to specify a reason the DateTime is invalid");const r=e instanceof Ho?e:new Ho(e,n);if(jn.throwOnInvalid)throw new dCe(r);return new st({invalid:r})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?a8(this).weekYear:NaN}get weekNumber(){return this.isValid?a8(this).weekNumber:NaN}get weekday(){return this.isValid?a8(this).weekday:NaN}get ordinal(){return this.isValid?o8(this.c).ordinal:NaN}get monthShort(){return this.isValid?d3.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?d3.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?d3.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?d3.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 o3(this.year)}get daysInMonth(){return c5(this.year,this.month)}get daysInYear(){return this.isValid?u3(this.year):NaN}get weeksInWeekYear(){return this.isValid?f5(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=es.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Kr.instance(e),n)}toLocal(){return this.setZone(jn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=V0(e,jn.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]=A5(o,s,e)}return h3(this,{ts:i,zone:e})}else return st.invalid(E5(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return h3(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=d5(e,FW),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 s3("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new s3("Can't mix ordinal dates with month/day");let l;r?l=AW({...s8(this.c),...n}):St(n.ordinal)?(l={...this.toObject(),...n},St(n.day)&&(l.day=Math.min(c5(l.year,l.month),l.day))):l=vW({...o8(this.c),...n});const[c,f]=A5(l,this.o,this.zone);return h3(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e);return h3(this,OW(this,n))}minus(e){if(!this.isValid)return this;const n=_t.fromDurationLike(e).negate();return h3(this,OW(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?es.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):u8}toLocaleString(e=qD,n={}){return this.isValid?es.create(this.loc.clone(n),e).formatDateTime(this):u8}toLocaleParts(e={}){return this.isValid?es.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=l8(this,o);return u+="T",u+=RW(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?l8(this,e==="extended"):null}toISOWeekDate(){return v5(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":"")+RW(this,o==="extended",n,e,r,s):null}toRFC2822(){return v5(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return v5(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?l8(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")),v5(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():u8}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=ACe(n).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=qbe(u,a,s,i);return o?l.negate():l}diffNow(e="milliseconds",n={}){return this.diff(st.now(),e,n)}until(e){return this.isValid?hn.fromDateTimes(this,e):this}hasSame(e,n){if(!this.isValid)return!1;const r=e.valueOf(),i=this.setZone(e.zone,{keepLocalTime:!0});return i.startOf(n)<=r&&r<=i.endOf(n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;const n=e.base||st.fromObject({},{zone:this.zone}),r=e.padding?this<n?-e.padding:e.padding:0;let i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),LW(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?LW(e.base||st.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(st.isDateTime))throw new io("min requires all arguments be DateTimes");return IG(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new io("max requires all arguments be DateTimes");return IG(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=dn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return hW(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return qD}static get DATE_MED(){return hG}static get DATE_MED_WITH_WEEKDAY(){return gCe}static get DATE_FULL(){return pG}static get DATE_HUGE(){return gG}static get TIME_SIMPLE(){return mG}static get TIME_WITH_SECONDS(){return yG}static get TIME_WITH_SHORT_OFFSET(){return EG}static get TIME_WITH_LONG_OFFSET(){return AG}static get TIME_24_SIMPLE(){return vG}static get TIME_24_WITH_SECONDS(){return SG}static get TIME_24_WITH_SHORT_OFFSET(){return _G}static get TIME_24_WITH_LONG_OFFSET(){return CG}static get DATETIME_SHORT(){return bG}static get DATETIME_SHORT_WITH_SECONDS(){return TG}static get DATETIME_MED(){return OG}static get DATETIME_MED_WITH_SECONDS(){return RG}static get DATETIME_MED_WITH_WEEKDAY(){return mCe}static get DATETIME_FULL(){return NG}static get DATETIME_FULL_WITH_SECONDS(){return DG}static get DATETIME_HUGE(){return FG}static get DATETIME_HUGE_WITH_SECONDS(){return wG}}function g3(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&Ax(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new io(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const cTe="2.5.2";var fTe=Zi.DateTime=st;Zi.Duration=_t,Zi.FixedOffsetZone=Kr,Zi.IANAZone=Ju,Zi.Info=d3,Zi.Interval=hn,Zi.InvalidZone=GG,Zi.Settings=jn,Zi.SystemZone=p5,Zi.VERSION=cTe,Zi.Zone=N2,Object.defineProperty(fr,"__esModule",{value:!0}),fr.LiteralYear=fr.LiteralQuarter=fr.LiteralMonth=fr.LiteralWeek=fr.LiteralDay=fr.LiteralHour=fr.LiteralTimestamp=fr.TimeFormatError=void 0;const Y0=Zi,xTe=le,dTe=j0,$W=C2,c8=xt;class hTe extends Error{}fr.TimeFormatError=hTe;function Cx(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 BW="yyyy",kW=`${BW}-LL`,uo=`${kW}-dd`,PW=`${uo} HH`,MW=`${PW}:mm`,f8=`${MW}:ss`;class jW extends c8.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 x8 extends jW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=Cx(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=Y0.DateTime.fromFormat(e,f8);if(s.isValid)return new x8(r,n);if(s=Y0.DateTime.fromFormat(e,MW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(f8);return new d8(r,n,"timestamp",o)}}}fr.LiteralTimestamp=x8;class d8 extends jW{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,c8.getMorphicValue)(i,"timestamp"),a=(0,c8.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,xTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new dTe.Range(new $W.ExprTime(u,i.value),new $W.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class h8 extends d8{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,PW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(f8),new h8(n,r)}}fr.LiteralHour=h8;class m3 extends d8{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 p8 extends m3{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,uo);if(i.isValid)return r=i.plus({day:1}).toFormat(uo),new p8(n,r)}}fr.LiteralDay=p8;class g8 extends m3{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=Y0.DateTime.fromFormat(i,uo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(uo),r=u.toFormat(uo),new g8(n,r)}}}fr.LiteralWeek=g8;class m8 extends m3{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,kW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new m8(n,r)}}}fr.LiteralMonth=m8;class y8 extends m3{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=Cx(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=Y0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(uo),r=u.toFormat(uo),new y8(n,r)}}}fr.LiteralQuarter=y8;class E8 extends m3{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=Cx(e,!1);let r=n.text;const i=Y0.DateTime.fromFormat(n.text,BW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(uo),r=s.toFormat(uo),new E8(n,r)}}}fr.LiteralYear=E8;var S5={};Object.defineProperty(S5,"__esModule",{value:!0}),S5.PartialCompare=void 0;const pTe=cr,gTe=xt;class mTe extends gTe.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,pTe.errorFor)("no value for partial compare")}}S5.PartialCompare=mTe;var B2={};Object.defineProperty(B2,"__esModule",{value:!0}),B2.PickWhen=B2.Pick=void 0;const Zu=le,K0=cr,Wo=an,yTe=xt,ETe=We;function _5(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class ATe extends yTe.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,Zu.maxExpressionType)(o,(0,Zu.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Zu.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Wo.FT.typeEq(s,x,!0)){const h=Wo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick when type")}s=_5(s,x),i.kids.pickWhen.push(f.value),i.kids.pickThen.push(x.value)}const l=(this.elsePick||r).getExpression(e);if(s=_5(s,l),!Wo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Wo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick else type")}return i.kids.pickElse=l.value,{dataType:s.dataType,expressionType:(0,Zu.maxExpressionType)(o,l.expressionType),evalSpace:(0,Zu.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,K0.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,K0.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,K0.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(!Wo.FT.typeEq(a.when,Wo.FT.boolT))return this.log(`when expression must be boolean, not '${Wo.FT.inspect(a.when)}`),(0,K0.errorFor)("pick when type");if(i&&!Wo.FT.typeEq(i,a.pick,!0)){const l=Wo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type")}i=_5(i,a.pick),s=(0,Zu.maxExpressionType)(s,(0,Zu.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Zu.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,Zu.maxExpressionType)(s,u.expressionType),o=(0,Zu.mergeEvalSpaces)(o,u.evalSpace),i=_5(i,u),Wo.FT.typeEq(i,u,!0)?(n.kids.pickElse=u.value,{dataType:i.dataType,expressionType:s,value:n,evalSpace:o}):(this.elsePick.log(`else type '${Wo.FT.inspect(u)}', expected '${i.dataType}'[pick-values-must-match]`),(0,K0.errorFor)("pick value type mismatch"))}}B2.Pick=ATe;class vTe extends ETe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}B2.PickWhen=vTe;var C5={};Object.defineProperty(C5,"__esModule",{value:!0}),C5.Timeframe=void 0;const STe=le,_Te=We;class CTe extends _Te.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,STe.isTimestampUnit)(n)?n:"second"}}C5.Timeframe=CTe;var b5={};Object.defineProperty(b5,"__esModule",{value:!0}),b5.TopBy=void 0;const bTe=le,UW=xt,TTe=We;class OTe extends TTe.MalloyElement{constructor(e){super(),this.by=e,this.elementType="topBy",e instanceof UW.ExpressionDef&&this.has({by:e})}getBy(e){if(this.by instanceof UW.ExpressionDef){const n=this.by.getExpression(e);return(0,bTe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:n.value}}return{by:"name",name:this.by}}}b5.TopBy=OTe;var X0={};Object.defineProperty(X0,"__esModule",{value:!0}),X0.ImportStatement=X0.ImportSelect=X0.ImportSourceName=void 0;const A8=We;class RTe extends A8.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}X0.ImportSourceName=RTe;class NTe extends A8.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}X0.ImportSelect=NTe;class DTe extends A8.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}'`)}}}X0.ImportStatement=DTe;var y3={};Object.defineProperty(y3,"__esModule",{value:!0}),y3.ExtendBlock=void 0;const FTe=We,wTe=On;class LTe extends FTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=wTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}y3.ExtendBlock=LTe;var T5={};Object.defineProperty(T5,"__esModule",{value:!0}),T5.Argument=void 0;const ITe=We;class $Te extends ITe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}T5.Argument=$Te;var O5={};Object.defineProperty(O5,"__esModule",{value:!0}),O5.HasParameter=void 0;const qW=le,BTe=We;class kTe extends BTe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,qW.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,qW.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"}}}O5.HasParameter=kTe;var R5={};Object.defineProperty(R5,"__esModule",{value:!0}),R5.AnonymousQuery=void 0;const PTe=We,MTe=Gr;class jTe extends PTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=MTe.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)}}R5.AnonymousQuery=jTe;var J0={};Object.defineProperty(J0,"__esModule",{value:!0}),J0.View=void 0;const UTe=We;let qTe=class extends UTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};J0.View=qTe;var N5={};Object.defineProperty(N5,"__esModule",{value:!0}),N5.ViewArrow=void 0;const zTe=Yr,HTe=J0;class QTe extends HTe.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 zTe.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()}}N5.ViewArrow=QTe;var D5={},E3={};Object.defineProperty(E3,"__esModule",{value:!0}),E3.refine=void 0;const v8=Ru,S8=B0;function GTe(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,v8.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,v8.isQuerySegment)(o)&&(0,v8.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,S8.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,S8.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(S8.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}E3.refine=GTe,Object.defineProperty(D5,"__esModule",{value:!0}),D5.ViewRefine=void 0;const WTe=Vr,VTe=Ts,YTe=E3,KTe=J0;class XTe extends KTe.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,VTe.getFinalStruct)(this.refinement,e.structDef(),i):WTe.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,YTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}D5.ViewRefine=XTe;var F5={};Object.defineProperty(F5,"__esModule",{value:!0}),F5.ReferenceView=void 0;const zW=le,HW=Vr,JTe=Ts,ZTe=Wr,e6e=E3,t6e=J0;class n6e extends t6e.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:HW.ErrorFactory.structDef,outputStruct:HW.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof ZTe.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,zW.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,zW.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,JTe.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,e6e.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}F5.ReferenceView=n6e;var w5={},A3={},L5={},v3={};Object.defineProperty(v3,"__esModule",{value:!0}),v3.Index=void 0;const r6e=We,i6e=On;let s6e=class extends r6e.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=i6e.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};v3.Index=s6e;var S3={};Object.defineProperty(S3,"__esModule",{value:!0}),S3.SampleProperty=void 0;const o6e=We,QW=On;class u6e extends o6e.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=QW.LegalRefinementStage.Tail,this.forceQueryClass=QW.QueryClass.Index}sampling(){return this.sample}}S3.SampleProperty=u6e;var I5={};Object.defineProperty(I5,"__esModule",{value:!0}),I5.IndexFieldSpace=void 0;const GW=le,_8=ht,a6e=Wr,l6e=qo,c6e=e3,f6e=Yr;class x6e extends l6e.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof _8.FieldReference?super.pushFields(n):n instanceof _8.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 a6e.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof c6e.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 f6e.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=_8.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,GW.isAtomicFieldType)(c.dataType)&&(0,GW.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)}}I5.IndexFieldSpace=x6e,Object.defineProperty(L5,"__esModule",{value:!0}),L5.IndexBuilder=void 0;const C8=le,d6e=Vr,h6e=Uo,p6e=v3,g6e=z0,m6e=S3,y6e=I5;class E6e{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new y6e.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof h6e.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof g6e.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof p6e.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof m6e.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,C8.isIndexSegment)(e)&&!(0,C8.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),d6e.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,C8.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}L5.IndexBuilder=E6e;var $5={},_3={};Object.defineProperty(_3,"__esModule",{value:!0}),_3.GroupBy=void 0;const A6e=bs,WW=On;class v6e extends A6e.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=WW.LegalRefinementStage.Single,this.forceQueryClass=WW.QueryClass.Grouping}}_3.GroupBy=v6e;var B5={};Object.defineProperty(B5,"__esModule",{value:!0}),B5.ProjectFieldSpace=void 0;const b8=le,S6e=qo;class _6e extends S6e.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,b8.expressionIsAggregate)(e.expressionType)?!1:(0,b8.expressionInvolvesAggregate)(e.expressionType)&&(0,b8.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}B5.ProjectFieldSpace=_6e;var Z0={},bx={};Object.defineProperty(bx,"__esModule",{value:!0}),bx.Ordering=bx.OrderBy=void 0;const C6e=le,VW=H0,YW=We,b6e=On;class T6e extends YW.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof VW.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 VW.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,C6e.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}}bx.OrderBy=T6e;class O6e extends YW.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=b6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}bx.Ordering=O6e;var C3={};Object.defineProperty(C3,"__esModule",{value:!0}),C3.Top=void 0;const KW=le,R6e=H0,N6e=We,D6e=On;let F6e=class extends N6e.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=D6e.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof R6e.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,KW.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,KW.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}}}};C3.Top=F6e,Object.defineProperty(Z0,"__esModule",{value:!0}),Z0.ReduceBuilder=Z0.QuerySegmentBuilder=void 0;const XW=le,w6e=Vr,L6e=Uo,I6e=z0,JW=bx,ZW=C3,$6e=qo,B6e=bs;class eV{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof B6e.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof L6e.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof ZW.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 I6e.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof JW.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 ZW.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof JW.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])}}Z0.QuerySegmentBuilder=eV;class k6e extends eV{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new $6e.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,XW.isReduceSegment)(e)||(0,XW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),w6e.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}Z0.ReduceBuilder=k6e,Object.defineProperty($5,"__esModule",{value:!0}),$5.ProjectBuilder=void 0;const tV=le,P6e=Vr,M6e=_3,j6e=B5,U6e=Z0;class q6e extends U6e.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new j6e.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof M6e.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,tV.isProjectSegment)(e)||(0,tV.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),P6e.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}$5.ProjectBuilder=q6e;var k5={};Object.defineProperty(k5,"__esModule",{value:!0}),k5.PartialBuilder=void 0;const z6e=Ru,H6e=Z0;class Q6e extends H6e.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,z6e.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}k5.PartialBuilder=Q6e,Object.defineProperty(A3,"__esModule",{value:!0}),A3.QOpDesc=void 0;const G6e=L5,W6e=$5,V6e=Z0,Y6e=We,K6e=Ts,X6e=Yr,Tx=On,J6e=k5;class Z6e extends Y6e.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Tx.QueryClass.Grouping:this.refineThis.type==="project"?n=Tx.QueryClass.Project:this.refineThis.type==="index"&&(n=Tx.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=Tx.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Tx.QueryClass.Grouping:return new V6e.ReduceBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Project:return new W6e.ProjectBuilder(e,this.refineThis,n,r);case Tx.QueryClass.Index:return new G6e.IndexBuilder(e,this.refineThis,n,r);case void 0:return new J6e.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 X6e.StaticSpace((0,K6e.opOutputStruct)(this,e.structDef(),i))}}}A3.QOpDesc=Z6e,Object.defineProperty(w5,"__esModule",{value:!0}),w5.QOpDescView=void 0;const eOe=le,tOe=Yr,nV=A3,nOe=Ts,T8=On,rOe=J0;class iOe extends rOe.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,eOe.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 nV.QOpDesc([]),o=new nV.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case T8.LegalRefinementStage.Head:s.push(u);break;case T8.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case T8.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,nOe.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new tOe.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}w5.QOpDescView=iOe;var pn={};Object.defineProperty(pn,"__esModule",{value:!0}),pn.FieldDefinitionValue=pn.DefSpace=pn.DimensionFieldDeclaration=pn.MeasureFieldDeclaration=pn.DeclareFieldDeclaration=pn.ProjectFieldDeclaration=pn.GroupByFieldDeclaration=pn.AggregateFieldDeclaration=pn.CalculateFieldDeclaration=pn.AtomicFieldDeclaration=void 0;const sOe=le,oOe=an,uOe=S2,aOe=We,Ox=Gn,lOe=Gr,cOe=Wr;class ec extends aOe.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=lOe.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new O8(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,sOe.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,uOe.isGranularResult)(r)&&(u.type==="timestamp"||u.type==="date")&&(u.timeframe=r.timeframe),this.note&&(u.annotation=this.note),u}if(!(e instanceof O8&&e.foundCircle)&&r.dataType!=="error"){const u=oOe.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${u}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new rV(e,this))}}pn.AtomicFieldDeclaration=ec;class fOe extends ec{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}pn.CalculateFieldDeclaration=fOe;class xOe extends ec{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckAggregate)(e,this)}}pn.AggregateFieldDeclaration=xOe;class dOe extends ec{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckGroupBy)(e,this)}}pn.GroupByFieldDeclaration=dOe;class hOe extends ec{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckProject)(e,this)}}pn.ProjectFieldDeclaration=hOe;class pOe extends ec{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDeclare)(e,this)}}pn.DeclareFieldDeclaration=pOe;class gOe extends ec{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckMeasure)(e,this)}}pn.MeasureFieldDeclaration=gOe;class mOe extends ec{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,Ox.typecheckDimension)(e,this)}}pn.DimensionFieldDeclaration=mOe;class O8{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")}}pn.DefSpace=O8;class rV extends cOe.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)}}pn.FieldDefinitionValue=rV;var P5={};Object.defineProperty(P5,"__esModule",{value:!0}),P5.Aggregate=void 0;const yOe=bs,iV=On;let EOe=class extends yOe.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=iV.LegalRefinementStage.Single,this.forceQueryClass=iV.QueryClass.Grouping}};P5.Aggregate=EOe;var M5={};Object.defineProperty(M5,"__esModule",{value:!0}),M5.Calculate=void 0;const AOe=bs,vOe=On;class SOe extends AOe.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=vOe.LegalRefinementStage.Single}}M5.Calculate=SOe;var b3={};Object.defineProperty(b3,"__esModule",{value:!0}),b3.Dimensions=void 0;const _Oe=k0;class COe extends _Oe.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}b3.Dimensions=COe;var T3={};Object.defineProperty(T3,"__esModule",{value:!0}),T3.Measures=void 0;const bOe=k0;class TOe extends bOe.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}T3.Measures=TOe;var j5={};Object.defineProperty(j5,"__esModule",{value:!0}),j5.Nests=void 0;const OOe=bs,sV=On;class ROe extends OOe.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=sV.LegalRefinementStage.Single,this.forceQueryClass=sV.QueryClass.Grouping}}j5.Nests=ROe;var U5={};Object.defineProperty(U5,"__esModule",{value:!0}),U5.ProjectStatement=void 0;const NOe=bs,oV=On;class DOe extends NOe.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=oV.QueryClass.Project,this.queryRefinementStage=oV.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}U5.ProjectStatement=DOe;var tc={},Al={};Object.defineProperty(Al,"__esModule",{value:!0}),Al.findReferences=Al.deprecatedParseTableURI=Al.constructTableKey=void 0;const FOe=I0,R8=un;function N8(t){const e=(0,R8.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,R8.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class wOe{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=uV(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,R8.getId)(e.connectionId()),r=N8(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=N8(e.tableURI()),{connectionName:r,tablePath:i}=aV(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=N8(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function uV(t,e){return t===void 0?e:`${t}:${e}`}Al.constructTableKey=uV;function aV(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}Al.deprecatedParseTableURI=aV;function LOe(t,e,n){const r=new wOe(t,e),i=r;return FOe.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}Al.findReferences=LOe,Object.defineProperty(tc,"__esModule",{value:!0}),tc.TableFunctionSource=tc.TableMethodSource=tc.TableSource=void 0;const lV=Al,IOe=jo,cV=Vr;class D8 extends IOe.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return cV.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,lV.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),cV.ErrorFactory.structDef}}tc.TableSource=D8;class $Oe extends D8{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}}}tc.TableMethodSource=$Oe;class BOe extends D8{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,lV.deprecatedParseTableURI)(this.tableURI)}}tc.TableFunctionSource=BOe;var q5={};Object.defineProperty(q5,"__esModule",{value:!0}),q5.SQLString=void 0;const kOe=We,fV=Yu;class POe extends kOe.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(MOe)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof fV.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}}q5.SQLString=POe;function MOe(t){return t instanceof fV.SourceQueryElement}var z5={};Object.defineProperty(z5,"__esModule",{value:!0}),z5.SourceDesc=void 0;const jOe=We;class UOe extends jOe.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}z5.SourceDesc=UOe;var H5={};Object.defineProperty(H5,"__esModule",{value:!0}),H5.isSourceProperty=void 0;const qOe=Uo,zOe=Xi,HOe=k0,QOe=h2,GOe=M0,WOe=p2,VOe=g2,YOe=m2,KOe=P0;function XOe(t){return t instanceof qOe.Filter||t instanceof zOe.Joins||t instanceof HOe.DeclareFields||t instanceof QOe.FieldListEdit||t instanceof GOe.Renames||t instanceof WOe.PrimaryKey||t instanceof KOe.ObjectAnnotation||t instanceof VOe.Views||t instanceof YOe.TimezoneStatement}H5.isSourceProperty=XOe;var Q5={};Object.defineProperty(Q5,"__esModule",{value:!0}),Q5.isFieldCollectionMember=void 0;const JOe=pn,xV=ht;function ZOe(t){return t instanceof xV.FieldReference||t instanceof xV.WildcardFieldReference||t instanceof JOe.AtomicFieldDeclaration}Q5.isFieldCollectionMember=ZOe;var G5={};Object.defineProperty(G5,"__esModule",{value:!0}),G5.isQueryElement=void 0;const eRe=y2,tRe=E2,nRe=Vm,rRe=Ym;function iRe(t){return t instanceof eRe.QueryArrow||t instanceof tRe.QueryRefine||t instanceof nRe.QueryReference||t instanceof rRe.QueryRaw}G5.isQueryElement=iRe;var dV={};Object.defineProperty(dV,"__esModule",{value:!0});var W5={};Object.defineProperty(W5,"__esModule",{value:!0}),W5.isQueryProperty=void 0;function sRe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}W5.isQueryProperty=sRe;var V5={};Object.defineProperty(V5,"__esModule",{value:!0}),V5.isQueryExtendProperty=void 0;const oRe=b3,uRe=Xi,aRe=T3;function lRe(t){return t instanceof oRe.Dimensions||t instanceof aRe.Measures||t instanceof uRe.Joins}V5.isQueryExtendProperty=lRe;var Y5={};Object.defineProperty(Y5,"__esModule",{value:!0}),Y5.isFieldPropStatement=void 0;const cRe=U0,fRe=Uo,xRe=z0,dRe=O2;function hRe(t){return t instanceof fRe.Filter||t instanceof xRe.Limit||t instanceof dRe.PartitionBy||t instanceof cRe.FunctionOrdering}Y5.isFieldPropStatement=hRe,function(t){var e=F&&F.__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=F&&F.__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(wm,t),n(c2,t),n(f2,t),n(jo,t),n(Mm,t),n(Yu,t),n(v_,t),n(S_,t),n(b_,t),n(Hm,t),n(R_,t),n(h2,t),n(p2,t),n(M0,t),n(g2,t),n(m2,t),n(N_,t),n(b2,t),n(F_,t),n(U0,t),n(w_,t),n(yl,t),n(L_,t),n(T2,t),n(I_,t),n($_,t),n(B_,t),n(Xm,t),n(k_,t),n(P_,t),n(j_,t),n(n3,t),n(Zm,t),n(px,t),n(U_,t),n(q_,t),n(H_,t),n(G_,t),n(W_,t),n(V_,t),n(Y_,t),n(K_,t),n(X_,t),n(J_,t),n(Z_,t),n(e5,t),n(t5,t),n(n5,t),n(r5,t),n(o5,t),n(fr,t),n(S5,t),n(O2,t),n(B2,t),n(j0,t),n(C5,t),n(b5,t),n(r3,t),n(v2,t),n(X0,t),n(y3,t),n(T5,t),n(O5,t),n(R5,t),n(E2,t),n(y2,t),n(J0,t),n(N5,t),n(D5,t),n(F5,t),n(w5,t),n(pn,t),n(ht,t),n(P5,t),n(M5,t),n(k0,t),n(b3,t),n(y3,t),n(Uo,t),n(_3,t),n(v3,t),n(Xi,t),n(Lm,t),n(z0,t),n(T3,t),n(wm,t),n(j5,t),n(bx,t),n(U5,t),n(A3,t),n(S3,t),n(C3,t),n(A2,t),n(hx,t),n(Km,t),n(tc,t),n(q5,t),n(P0,t),n(Ku,t),n(z5,t),n(H5,t),n(xt,t),n(Q5,t),n(H0,t),n(We,t),n(G5,t),n(dV,t),n(W5,t),n(V5,t),n(Y5,t)}(o_);var K5={},k2={};Object.defineProperty(k2,"__esModule",{value:!0}),k2.ConstantExpression=k2.ConstantFieldSpace=void 0;const pRe=xt;class hV{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}}k2.ConstantFieldSpace=hV;class gRe extends pRe.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 hV),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)}}k2.ConstantExpression=gRe;var mRe=F&&F.__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]}),yRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),ERe=F&&F.__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)&&mRe(e,t,n);return yRe(e,t),e};Object.defineProperty(K5,"__esModule",{value:!0}),K5.MalloyToAST=void 0;const pV=aS,ARe=Im,te=ERe(o_),vRe=ur,SRe=o_,Wn=un,F8=le,_Re=gl,CRe=k2;class gV extends te.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class w8 extends te.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const bRe=["##! m4warnings=error"];class TRe extends ARe.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of bRe){const s=_Re.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})}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 w8||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 te.FieldName((0,Wn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new te.ModelEntryReference((0,Wn.getId)(e)),e.id())}defaultResult(){return new te.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 vRe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new te.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 te.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 te.Filter([n])}getPlainStringFrom(e){const[n,r]=(0,Wn.getPlainString)(e);for(const i of r)i instanceof pV.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,Wn.getStringParts)(e))r instanceof pV.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 te.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=>te.isDocStatementOrDocStatementList(r)&&r,"statement");return new te.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new te.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new CRe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new te.HasParameter({name:(0,Wn.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 te.DefineSource((0,Wn.getId)(e.sourceNameDef()),n instanceof te.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=>te.isSourceProperty(s)&&s,"source property"),i=new te.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainStringFrom(e.tableURI()),r=this.astAt(new te.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 te.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new te.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Wn.getShortString)(o));const u=new te.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 te.Join&&(n.push(s),s instanceof te.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof te.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new te.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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin&&(s.joinType="one"));const i=new te.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 te.Join&&(r.push(s),s instanceof te.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new te.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 te.SQReference(r,this.getSQArguments(i)),e),notes:[],joinAs:r}:{joinAs:r,joinFrom:new te.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 te.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,F8.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 te.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,Wn.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(),te.DimensionFieldDeclaration),r=new te.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.MeasureFieldDeclaration),r=new te.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(te.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new te.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),te.DeclareFieldDeclaration),r=new te.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 te.RenameField((0,Wn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new te.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new te.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 te.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 te.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new te.AcceptExceptFieldReference([this.getFieldName(r)]));return new te.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new te.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainStringFrom(e),r=this.astAt(new te.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=>te.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new te.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 te.FieldReference||i instanceof te.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new te.Aggregate(this.getQueryItems(e.queryFieldList(),te.AggregateFieldDeclaration,te.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new te.GroupBy(this.getQueryItems(e.queryFieldList(),te.GroupByFieldDeclaration,te.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new te.Calculate(this.getQueryItems(e.queryFieldList(),te.CalculateFieldDeclaration,te.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(),te.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new te.ExprGranularTime(new te.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new te.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,te.ProjectFieldDeclaration,te.ProjectFieldReference));return this.astAt(new te.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,te.ProjectFieldReference):void 0,s=this.astAt(new te.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,Wn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new te.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,te.IndexFieldReference);return r.STAR()?this.astAt(new te.WildcardFieldReference(s),e):this.astAt(s,e)});return new te.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new te.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 te.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 te.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 te.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new te.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new te.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 te.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 te.Top(r,u)}const o=n.fieldExpr();o&&(i=new te.Top(r,this.getFieldExpr(o)))}return i||(i=new te.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 te.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Wn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof te.SourceQueryElement){const s=new te.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 te.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 te.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 te.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof te.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Wn.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 te.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,Wn.getId)(e.exploreQueryNameDef()),r=new te.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 te.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new te.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 te.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new te.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new te.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new te.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(te.isComparison(i))return this.astAt(new te.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainStringFrom(e);return new te.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new te.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new te.ExprNow}visitExprNumber(e){return new te.ExprNumber(e.text)}visitExprFieldPath(e){const n=new te.ExprIdReference(this.getFieldPath(e.fieldPath(),te.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new te.ExprNULL}visitExprExpr(e){return new te.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new te.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 te.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new te.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(te.isComparison(n))return new te.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 te.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,te.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 te.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 te.ExprIdReference(r),n);return s==="min"?new te.ExprMin(a):new te.ExprMax(a)}else{if(s==="avg")return new te.ExprAvg(u,i);if(s==="sum")return new te.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new te.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 te.ExprCountDistinct(r):new te.ExprCount,e);if(s==="min"){if(r)return new te.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new te.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new te.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new te.ExprAvg(r,i,o);if(s==="sum")return new te.ExprSum(r,i,o)}return new te.ExprNULL}visitExprApply(e){return new te.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new te.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new te.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,F8.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 te.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new te.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new te.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new te.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Wn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,te.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return te.ExprTimeExtract.extractor(i)?this.astAt(new te.ExprTimeExtract(i,r),e):this.astAt(new te.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,F8.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Wn.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"),te.ExprTimeExtract.extractor(l)?this.astAt(new te.ExprTimeExtract(l,s),e):this.astAt(new te.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new te.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 te.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new te.Pick(n,this.getFieldExpr(e._pickElse)):new te.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>te.isFieldPropStatement(r)&&r,"field property statement");return new te.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new te.PartitionBy(e.id().map(n=>this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,Wn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,te.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,te.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,te.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,te.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,te.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,te.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,te.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainStringFrom(e.importURL()),r=this.astAt(new te.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 te.ImportSourceName((0,Wn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new te.ImportSelect((0,Wn.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 te.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new te.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new te.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new te.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 w8(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new w8(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new te.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new te.PartitionByFieldReference([this.astAt(new te.FieldName((0,Wn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new te.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 te.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof te.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new gV)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new te.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 te.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof te.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new te.ReferenceView(this.getFieldPath(e.fieldPath(),te.ViewOrScalarFieldReference))}visitSegOps(e){return new te.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new te.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new te.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new te.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof SRe.TableSource){const r=new te.SQSource(n);return this.astAt(r,e)}return new gV}visitSQSQL(e){const n=new te.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new te.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}K5.MalloyToAST=TRe;var X5={};Object.defineProperty(X5,"__esModule",{value:!0}),X5.MessageLog=void 0;class ORe{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}}X5.MessageLog=ORe;var J5={};Object.defineProperty(J5,"__esModule",{value:!0}),J5.Zone=void 0;class RRe{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})}}J5.Zone=RRe;var Z5={};Object.defineProperty(Z5,"__esModule",{value:!0}),Z5.walkForDocumentSymbols=void 0;const NRe=I0,DRe=un;class FRe{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,DRe.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 wRe(t,e,n){const r=new FRe(t,e,[],[]),i=r;return NRe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}Z5.walkForDocumentSymbols=wRe;var eC={};Object.defineProperty(eC,"__esModule",{value:!0}),eC.walkForDocumentCompletions=void 0;const LRe=I0,IRe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],$Re=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],BRe=["source","explore","query","sql"];class kRe{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 IRe)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 $Re)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 BRe)this.completions.push({type:"model_property",text:`${r}: `})}}}function PRe(t,e,n){const r=new kRe(t,[],n),i=r;return LRe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}eC.walkForDocumentCompletions=PRe;var tC={};Object.defineProperty(tC,"__esModule",{value:!0}),tC.walkForDocumentHelpContext=void 0;const MRe=hD;class jRe extends MRe.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 URe(t,e){return new jRe(e).visit(t)}tC.walkForDocumentHelpContext=URe;var nC={},O3={};Object.defineProperty(O3,"__esModule",{value:!0}),O3.locationContainsPosition=void 0;function qRe(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)}O3.locationContainsPosition=qRe,Object.defineProperty(nC,"__esModule",{value:!0}),nC.ReferenceList=void 0;const zRe=O3;class HRe{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,zRe.locationContainsPosition)(r.location,e))return r}}nC.ReferenceList=HRe;var rC={};Object.defineProperty(rC,"__esModule",{value:!0}),rC.isNeedResponse=void 0;function QRe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}rC.isNeedResponse=QRe;var iC={};Object.defineProperty(iC,"__esModule",{value:!0}),iC.walkForModelAnnotation=void 0;const GRe=I0;class WRe{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 VRe(t,e,n){const r=new WRe(t,e,n),i=r;return GRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}iC.walkForModelAnnotation=VRe;var sC={};Object.defineProperty(sC,"__esModule",{value:!0}),sC.walkForTablePath=void 0;const mV=un,YRe=I0;class KRe{constructor(e,n){this.translator=e,this.tokens=n,this.pathInfos=[]}enterTableMethod(e){const n=(0,mV.getId)(e.connectionId()),[r,i]=(0,mV.getPlainString)(e.tablePath(),!0);r!==void 0&&this.pathInfos.push({connectionId:n,tablePath:r,range:this.translator.rangeFromContext(e)})}}function XRe(t,e,n){const r=new KRe(t,e),i=r;return YRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.pathInfos}sC.walkForTablePath=XRe;var JRe=F&&F.__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]}),ZRe=F&&F.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eNe=F&&F.__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)&&JRe(e,t,n);return ZRe(e,t),e};Object.defineProperty(Du,"__esModule",{value:!0}),Du.MalloyParserErrorHandler=Du.MalloyTranslator=Du.MalloyChildTranslator=Du.MalloyTranslation=void 0;const yV=aS,tNe=v4,nNe=w,EV=eNe(o_),rNe=K5,iNe=X5,sNe=Al,L8=J5,oNe=Z5,uNe=eC,aNe=tC,lNe=nC,oC=rC,cNe=O3,AV=gl,fNe=iC,xNe=sC;class dNe extends tNe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class hNe{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===""?`
|
|
1304
1304
|
`: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=yV.CharStreams.fromString(e),i=new dNe(r),s=new yV.CommonTokenStream(i),o=new nNe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new SV(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 pNe{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,sNe.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,oC.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,oC.isNeedResponse)(u))return u}return null}}class gNe{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 rNe.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 EV.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,oC.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class mNe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,oNe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class yNe{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,uNe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class ENe{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,aNe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class ANe{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,fNe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class vNe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){const r=(0,xNe.walkForTablePath)(e,n.parse.tokenStream,n.parse);this.response={pathInfo:r}}else return n}return this.response}}class SNe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=AV.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,oC.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof EV.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 I8{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new AV.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new hNe,this.modelAnnotationStep=new ANe(this.parseStep),this.metadataStep=new mNe(this.parseStep),this.completionsStep=new yNe(this.parseStep),this.helpContextStep=new ENe(this.parseStep),this.importsAndTablesStep=new pNe(this.parseStep),this.astStep=new gNe(this.importsAndTablesStep),this.tablePathInfoStep=new vNe(this.parseStep),this.translateStep=new SNe(this.astStep),this.references=new lNe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new vV(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}
|
|
1305
1305
|
| ${l}`,u>0&&(i=i+`
|
|
1306
1306
|
| ${" ".repeat(u)}^`)}else i=`line ${o+1}: char ${u}: ${r.message}`}n!==s&&(i=`FILE: ${s}
|