@malloydata/render 0.0.163-dev240807210504 → 0.0.163-dev240808193357

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.
@@ -374,7 +374,7 @@ FROM ${n}
374
374
  FROM ${h}
375
375
  `),this.resultStage}}class v2e extends no{generateSQL(e){const n=this.parent.fieldDef.structSource;if(n.type!=="sql"||n.method!=="subquery")throw new Error("Invalid struct for QueryQueryRaw, currently only supports SQL");const r=n.sqlBlock.selectStr;return e.addStage(r)}prepare(){}getResultStructDef(){return this.parent.fieldDef}getResultMetadata(e){}}class S2e extends no{constructor(e,n,r,i){super(e,n,r,i),this.stages=[],this.fieldDef=e,this.fieldsToStages()}fieldsToStages(){const e=this.firstSegment;if(this.parent.dialect.dontUnionIndex){this.stages=[e.indexFields];return}const n={};for(const r of e.indexFields){if(r.path.length>1){const i=aM(r.path.slice(0,r.path.length-1)),s=n[i];if(s===void 0){const o=this.parent.nameMap.get(r.path[0]);if(o instanceof Hr&&(o.fieldDef.structRelationship.type==="many"||o.fieldDef.structRelationship.type==="nested")&&o.fieldDef.fields.length>1){const u=[r];n[i]=u,this.stages.push(u);continue}}else{s.push(r);continue}}this.stages[0]===void 0&&(this.stages[0]=[]),this.stages[0].push(r)}}expandFields(e){}generateSQL(e){const n=this.firstSegment,r=[];for(const i of this.stages){const s=new A2e({...this.fieldDef,pipeline:[{...n,indexFields:i}]},this.parent,e,this.isJoinedSubquery);s.prepare(e);const o=s.generateSQL(e);r.push(o)}return r.length===1?this.resultStage=r[0]:this.resultStage=e.addStage(r.map(i=>`SELECT * FROM ${i}
376
376
  `).join(` UNION ALL
377
- `)),this.resultStage}getResultStructDef(){const e={type:"struct",name:this.resultStage||"result",dialect:this.parent.fieldDef.dialect,fields:[{type:"string",name:"fieldName"},{type:"string",name:"fieldPath"},{type:"string",name:"fieldValue"},{type:"string",name:"fieldType"},{type:"number",name:"weight",numberType:"integer"}],structRelationship:{type:"basetable",connectionName:this.parent.connectionName},structSource:{type:"query_result"}};return this.parent.fieldDef.modelAnnotation&&(e.modelAnnotation=this.parent.fieldDef.modelAnnotation),e}}class Hr extends lM{constructor(e,n,r){if(super(e),this.sourceArguments=n,this.nameMap=new Map,this._arguments=void 0,this.setParent(r),"model"in r)if(this.model=r.model,this.pathAliasMap=new Map,e.structRelationship.type==="basetable")this.connectionName=e.structRelationship.connectionName;else throw new Error("All root StructDefs should be a baseTable");else this.model=this.getModel(),this.pathAliasMap=this.root().pathAliasMap,this.connectionName=this.root().connectionName;this.fieldDef=e,this.dialect=(0,s2e.getDialect)(this.fieldDef.dialect),this.addFieldsFromFieldList(this.fieldDef.fields)}resolveParentParameterReferences(e){return{...e,value:e.value===null?null:(0,lr.exprMap)(e.value,n=>{if(typeof n=="string")return[n];if(n.type==="parameter"){if(this.parent===void 0)throw new Error("No parent from which to retrieve parameter value");const r=this.parent.arguments()[n.path[0]],i=this.parent.resolveParentParameterReferences(r);if(i.value===null)throw new Error("Invalid parameter value");return i.value}return[n]})}}arguments(){var e,n,r;if(this._arguments!==void 0)return this._arguments;this._arguments={};const i=(e=this.fieldDef.parameters)!==null&&e!==void 0?e:{};for(const o in i)this._arguments[o]=i[o];const s=(r=(n=this.sourceArguments)!==null&&n!==void 0?n:this.fieldDef.arguments)!==null&&r!==void 0?r:{};for(const o in s){const u=s[o];this._arguments[o]=this.resolveParentParameterReferences(u)}return this._arguments}addFieldsFromFieldList(e){for(const n of e){const r=(0,Ue.getIdentifier)(n);switch(n.type){case"struct":{this.addFieldToNameMap(r,new Hr(n,void 0,{struct:this}));break}case"turtle":{this.addFieldToNameMap(r,no.makeQuery(n,this,void 0,!1));break}default:this.addFieldToNameMap(r,this.makeQueryField(n))}}this.nameMap.has("__distinct_key")||this.addFieldToNameMap("__distinct_key",new h2e({type:"string",name:"__distinct_key"},this))}getAliasIdentifier(){const e=this.getFullOutputName(),n=this.pathAliasMap.get(e);if(n===void 0){const r=Array.from(this.pathAliasMap.values()),i=u2e((0,Ue.getIdentifier)(this.fieldDef));let s=`${i}_0`,o=1;for(;r.includes(s)&&o<1e3;)o++,s=`${i}_${o}`;if(o<1e3)return this.pathAliasMap.set(e,s),s;throw new Error("Internal Error: cannot create unique alias name")}else return n}getSQLIdentifier(){return this.unnestWithNumbers()&&this.parent!==void 0?this.parent.getSQLIdentifier()+"."+(0,Ue.getIdentifier)(this.fieldDef)+`[${this.getIdentifier()}.__row_id]`:this.getIdentifier()}getIdentifier(){return this.fieldDef.structRelationship.type==="basetable"?"base":this.fieldDef.structRelationship.type==="inline"&&this.parent?this.parent.getSQLIdentifier()+"."+super.getIdentifier():this.getAliasIdentifier()}getFullOutputName(){return this.parent?this.parent.getFullOutputName()+(0,Ue.getIdentifier)(this.fieldDef)+".":""}needsSymetricCalculation(e){const n=this.getJoinableParent().getIdentifier(),r=e.root().joins.get(n);if(r)return!r.leafiest;throw new Error(`Join ${n} not found in result set`)}unnestWithNumbers(){return this.dialect.unnestWithNumbers&&this.fieldDef.structRelationship.type==="nested"}getJoinableParent(){if(this.fieldDef.structRelationship.type==="inline"){if(this.parent)return this.parent.getJoinableParent();throw new Error("Internal Error: inline struct cannot be root")}return this}addFieldToNameMap(e,n){if(this.nameMap.has(e))throw new Error(`Redefinition of ${e}`);this.nameMap.set(e,n)}getPrimaryKeyField(e){let n;if(n=this.primaryKey())return n;throw new Error(`Missing primary key for ${e}`)}resolveQueryFields(){if(this.fieldDef.structSource.type==="query"){const e=this.model.loadQuery(this.fieldDef.structSource.query,void 0).structs.pop();if(!e)throw new Error("Internal Error, query didn't produce a struct");const n={...this.fieldDef};for(const r of e.fields){let i;this.nameMap.has(i=(0,Ue.getIdentifier)(r))||(n.fields.push(r),this.nameMap.set(i,this.makeQueryField(r)))}this.fieldDef=n,!this.fieldDef.primaryKey&&e.primaryKey&&(this.fieldDef.primaryKey=e.primaryKey)}for(const[,e]of this.nameMap)e instanceof Hr&&e.resolveQueryFields()}getModel(){if(this.model)return this.model;if(this.parent===void 0)throw new Error("Expected this query struct to have a parent, as no model was present.");return this.parent.getModel()}setParent(e){"struct"in e&&(this.parent=e.struct),"model"in e?this.model=e.model:this.model=this.getModel()}makeQueryField(e){switch(e.type){case"string":return new l2e(e,this);case"date":return new aO(e,this);case"timestamp":return new lO(e,this);case"number":return new c2e(e,this);case"boolean":return new uO(e,this);case"json":return new f2e(e,this);case"sql native":return new x2e(e,this);case"turtle":return new dM(e,this);default:throw new Error(`unknown field definition ${JSON.stringify(e)}`)}}structSourceSQL(e){switch(this.fieldDef.structSource.type){case"table":{const n=this.fieldDef.structSource.tablePath;return this.dialect.quoteTablePath(n)}case"sql":if(this.fieldDef.structSource.method==="nested"||this.fieldDef.structSource.method==="lastStage")return this.fieldDef.name;if(this.fieldDef.structSource.method==="subquery")return`(${this.fieldDef.structSource.sqlBlock.selectStr})`;throw new Error("Internal Error: Unknown structSource type 'sql' method");case"nested":return"UNNEST(this.fieldDef.name)";case"inline":return"";case"query":{const n=(0,Ue.getIdentifier)(this.fieldDef);if(n.includes("cache")){const r=new gp(!0,e);return this.model.loadQuery(this.fieldDef.structSource.query,r,!1,!1),r.addPDT(n,this.dialect)}else return this.model.loadQuery(this.fieldDef.structSource.query,e,!1,!0).lastStageName}default:throw new Error(`unknown structSource ${this.fieldDef}`)}}root(){return this.parent===void 0?this:this.parent.root()}primaryKey(){if(this.fieldDef.primaryKey)return this.getDimensionByName([this.fieldDef.primaryKey])}getChildByName(e){return this.nameMap.get(e)}getFieldByName(e){return e.reduce((n,r)=>{const i=n.getChildByName(r);if(i===void 0)throw new Error(e.length===1?`'${r}' not found`:`'${r}' not found in '${e.join(".")}'`);return i},this)}getQueryFieldByName(e){const n=this.getFieldByName(e);if(n instanceof Hr)throw new Error(`Cannot reference ${e} as a scalar'`);return n}getQueryFieldReference(e,n){const r=this.getQueryFieldByName(e);if(n){const i={...r.fieldDef};i.annotation=n,r.fieldDef=i}return r}getDimensionOrMeasureByName(e){const n=this.getFieldByName(e);if(n instanceof qr)return n;throw new Error(`${e} is not of type a scalar'`)}getDimensionByName(e){const n=this.getFieldByName(e);if(n instanceof qr&&Or(n))return n;throw new Error(`${e} is not of type a scalar'`)}getStructByName(e){const n=this.getFieldByName(e);if(n instanceof Hr)return n;throw new Error(`Error: Path to structure not found '${e.join(".")}'`)}getDistinctKey(){if(this.fieldDef.structRelationship.type!=="inline")return this.getDimensionByName(["__distinct_key"]);if(this.parent)return this.parent.getDistinctKey();throw new Error("Internal Error. inline struct can not be top level")}applyStructFiltersToTurtleDef(e){let n=e.pipeline;const r=e.annotation,i=e.filterList||[];return n=structuredClone(n),n[0].filterList=i.concat(n[0].filterList||[],this.fieldDef.filterList||[]),{type:"turtle",name:e.name,pipeline:n,annotation:r,location:e.location}}}class hM{constructor(e){this.dialect=new o2e.StandardSQLDialect,this.modelDef=void 0,this.structs=new Map,this.exploreSearchSQLMap=new Map,e&&this.loadModelFromDef(e)}loadModelFromDef(e){this.modelDef=e;for(const n of Object.values(this.modelDef.contents)){let r;if(n.type==="struct")r=new Hr(n,void 0,{model:this}),this.structs.set((0,Ue.getIdentifier)(n),r),r.resolveQueryFields();else if(n.type!=="query")throw new Error("Internal Error: Unknown structure type")}}getStructByName(e){let n;if(n=this.structs.get(e))return n;throw new Error(`Struct ${e} not found in model.`)}getStructFromRef(e,n){var r;let i;if(typeof e=="string"){const s=this.getStructByName(e);return n!==void 0?new Hr(s.fieldDef,n,(r=s.parent)!==null&&r!==void 0?r:{model:this}):s}else if(e.type==="struct")i=e;else throw new Error("Broken for now");return new Hr(i,n,{model:this})}loadQuery(e,n,r=!1,i=!1){const s="";n||(n=new gp(!0,void 0));const o={type:"turtle",name:"ignoreme",pipeline:e.pipeline,filterList:e.filterList},u=no.makeQuery(o,this.getStructFromRef(e.structRef,e.sourceArguments),n,i),a=u.generateSQLFromPipeline(n);if(r&&u.parent.dialect.hasFinalStage){const l=(0,Ue.getPhysicalFields)(a.outputStruct).map(c=>u.parent.dialect.sqlMaybeQuoteIdentifier(c.name));a.lastStageName=n.addStage(u.parent.dialect.sqlFinalStage(a.lastStageName,l))}return{lastStageName:a.lastStageName,malloy:s,stageWriter:n,structs:[a.outputStruct],connectionName:u.parent.connectionName}}compileQuery(e,n=!0){const i=this.loadQuery(e,void 0,n,!1),s=typeof e.structRef=="string"?e.structRef:e.structRef.type==="struct"?e.structRef.as||e.structRef.name:"(need to figure this out)";return n&&this.dialect.hasFinalStage&&(i.lastStageName=i.stageWriter.addStage(this.dialect.sqlFinalStage(i.lastStageName,[]))),{lastStageName:i.lastStageName,malloy:i.malloy,sql:i.stageWriter.generateSQLStages(),structs:i.structs,sourceExplore:s,sourceFilters:e.filterList,queryName:e.name,connectionName:i.connectionName,annotation:e.annotation}}async searchIndex(e,n,r,i=1e3,s=void 0){if(!e.canPersist())return;const o=this.getStructByName(n);let u=[];for(const[y,E]of o.nameMap)E instanceof Hr||Or(E)&&E.includeInWildcard()&&u.push({type:"fieldref",path:[y]});u=u.sort((y,E)=>y.path[0].localeCompare(E.path[0]));const a={structRef:n,pipeline:[{type:"index",indexFields:u,sample:o.dialect.defaultSampling}]},l=o.dialect.sqlMaybeQuoteIdentifier("fieldName"),c=o.dialect.sqlMaybeQuoteIdentifier("fieldPath"),f=o.dialect.sqlMaybeQuoteIdentifier("fieldValue"),x=o.dialect.sqlMaybeQuoteIdentifier("fieldType"),h=o.dialect.sqlMaybeQuoteIdentifier("weight");let p=this.exploreSearchSQLMap.get(n);p===void 0&&(p=this.compileQuery(a,!1).sql,this.exploreSearchSQLMap.set(n,p));let m=`SELECT
377
+ `)),this.resultStage}getResultStructDef(){const e={type:"struct",name:this.resultStage||"result",dialect:this.parent.fieldDef.dialect,fields:[{type:"string",name:"fieldName"},{type:"string",name:"fieldPath"},{type:"string",name:"fieldValue"},{type:"string",name:"fieldType"},{type:"number",name:"weight",numberType:"integer"}],structRelationship:{type:"basetable",connectionName:this.parent.connectionName},structSource:{type:"query_result"}};return this.parent.fieldDef.modelAnnotation&&(e.modelAnnotation=this.parent.fieldDef.modelAnnotation),e}}class Hr extends lM{constructor(e,n,r){if(super(e),this.sourceArguments=n,this.nameMap=new Map,this._arguments=void 0,this.setParent(r),"model"in r)if(this.model=r.model,this.pathAliasMap=new Map,e.structRelationship.type==="basetable")this.connectionName=e.structRelationship.connectionName;else throw new Error("All root StructDefs should be a baseTable");else this.model=this.getModel(),this.pathAliasMap=this.root().pathAliasMap,this.connectionName=this.root().connectionName;this.fieldDef=e,this.dialect=(0,s2e.getDialect)(this.fieldDef.dialect),this.addFieldsFromFieldList(this.fieldDef.fields)}resolveParentParameterReferences(e){return{...e,value:e.value===null?null:(0,lr.exprMap)(e.value,n=>{if(typeof n=="string")return[n];if(n.type==="parameter"){if(this.parent===void 0)throw new Error("No parent from which to retrieve parameter value");const r=this.parent.arguments()[n.path[0]],i=this.parent.resolveParentParameterReferences(r);if(i.value===null)throw new Error("Invalid parameter value");return i.value}return[n]})}}arguments(){var e;if(this._arguments!==void 0)return this._arguments;this._arguments={};const n=(e=this.fieldDef.parameters)!==null&&e!==void 0?e:{};for(const i in n)this._arguments[i]=n[i];const r={...this.fieldDef.arguments,...this.sourceArguments};for(const i in r){const s=r[i];this._arguments[i]=this.resolveParentParameterReferences(s)}return this._arguments}addFieldsFromFieldList(e){for(const n of e){const r=(0,Ue.getIdentifier)(n);switch(n.type){case"struct":{this.addFieldToNameMap(r,new Hr(n,void 0,{struct:this}));break}case"turtle":{this.addFieldToNameMap(r,no.makeQuery(n,this,void 0,!1));break}default:this.addFieldToNameMap(r,this.makeQueryField(n))}}this.nameMap.has("__distinct_key")||this.addFieldToNameMap("__distinct_key",new h2e({type:"string",name:"__distinct_key"},this))}getAliasIdentifier(){const e=this.getFullOutputName(),n=this.pathAliasMap.get(e);if(n===void 0){const r=Array.from(this.pathAliasMap.values()),i=u2e((0,Ue.getIdentifier)(this.fieldDef));let s=`${i}_0`,o=1;for(;r.includes(s)&&o<1e3;)o++,s=`${i}_${o}`;if(o<1e3)return this.pathAliasMap.set(e,s),s;throw new Error("Internal Error: cannot create unique alias name")}else return n}getSQLIdentifier(){return this.unnestWithNumbers()&&this.parent!==void 0?this.parent.getSQLIdentifier()+"."+(0,Ue.getIdentifier)(this.fieldDef)+`[${this.getIdentifier()}.__row_id]`:this.getIdentifier()}getIdentifier(){return this.fieldDef.structRelationship.type==="basetable"?"base":this.fieldDef.structRelationship.type==="inline"&&this.parent?this.parent.getSQLIdentifier()+"."+super.getIdentifier():this.getAliasIdentifier()}getFullOutputName(){return this.parent?this.parent.getFullOutputName()+(0,Ue.getIdentifier)(this.fieldDef)+".":""}needsSymetricCalculation(e){const n=this.getJoinableParent().getIdentifier(),r=e.root().joins.get(n);if(r)return!r.leafiest;throw new Error(`Join ${n} not found in result set`)}unnestWithNumbers(){return this.dialect.unnestWithNumbers&&this.fieldDef.structRelationship.type==="nested"}getJoinableParent(){if(this.fieldDef.structRelationship.type==="inline"){if(this.parent)return this.parent.getJoinableParent();throw new Error("Internal Error: inline struct cannot be root")}return this}addFieldToNameMap(e,n){if(this.nameMap.has(e))throw new Error(`Redefinition of ${e}`);this.nameMap.set(e,n)}getPrimaryKeyField(e){let n;if(n=this.primaryKey())return n;throw new Error(`Missing primary key for ${e}`)}resolveQueryFields(){if(this.fieldDef.structSource.type==="query"){const e=this.model.loadQuery(this.fieldDef.structSource.query,void 0).structs.pop();if(!e)throw new Error("Internal Error, query didn't produce a struct");const n={...this.fieldDef};for(const r of e.fields){let i;this.nameMap.has(i=(0,Ue.getIdentifier)(r))||(n.fields.push(r),this.nameMap.set(i,this.makeQueryField(r)))}this.fieldDef=n,!this.fieldDef.primaryKey&&e.primaryKey&&(this.fieldDef.primaryKey=e.primaryKey)}for(const[,e]of this.nameMap)e instanceof Hr&&e.resolveQueryFields()}getModel(){if(this.model)return this.model;if(this.parent===void 0)throw new Error("Expected this query struct to have a parent, as no model was present.");return this.parent.getModel()}setParent(e){"struct"in e&&(this.parent=e.struct),"model"in e?this.model=e.model:this.model=this.getModel()}makeQueryField(e){switch(e.type){case"string":return new l2e(e,this);case"date":return new aO(e,this);case"timestamp":return new lO(e,this);case"number":return new c2e(e,this);case"boolean":return new uO(e,this);case"json":return new f2e(e,this);case"sql native":return new x2e(e,this);case"turtle":return new dM(e,this);default:throw new Error(`unknown field definition ${JSON.stringify(e)}`)}}structSourceSQL(e){switch(this.fieldDef.structSource.type){case"table":{const n=this.fieldDef.structSource.tablePath;return this.dialect.quoteTablePath(n)}case"sql":if(this.fieldDef.structSource.method==="nested"||this.fieldDef.structSource.method==="lastStage")return this.fieldDef.name;if(this.fieldDef.structSource.method==="subquery")return`(${this.fieldDef.structSource.sqlBlock.selectStr})`;throw new Error("Internal Error: Unknown structSource type 'sql' method");case"nested":return"UNNEST(this.fieldDef.name)";case"inline":return"";case"query":{const n=(0,Ue.getIdentifier)(this.fieldDef);if(n.includes("cache")){const r=new gp(!0,e);return this.model.loadQuery(this.fieldDef.structSource.query,r,!1,!1),r.addPDT(n,this.dialect)}else return this.model.loadQuery(this.fieldDef.structSource.query,e,!1,!0).lastStageName}default:throw new Error(`unknown structSource ${this.fieldDef}`)}}root(){return this.parent===void 0?this:this.parent.root()}primaryKey(){if(this.fieldDef.primaryKey)return this.getDimensionByName([this.fieldDef.primaryKey])}getChildByName(e){return this.nameMap.get(e)}getFieldByName(e){return e.reduce((n,r)=>{const i=n.getChildByName(r);if(i===void 0)throw new Error(e.length===1?`'${r}' not found`:`'${r}' not found in '${e.join(".")}'`);return i},this)}getQueryFieldByName(e){const n=this.getFieldByName(e);if(n instanceof Hr)throw new Error(`Cannot reference ${e} as a scalar'`);return n}getQueryFieldReference(e,n){const r=this.getQueryFieldByName(e);if(n){const i={...r.fieldDef};i.annotation=n,r.fieldDef=i}return r}getDimensionOrMeasureByName(e){const n=this.getFieldByName(e);if(n instanceof qr)return n;throw new Error(`${e} is not of type a scalar'`)}getDimensionByName(e){const n=this.getFieldByName(e);if(n instanceof qr&&Or(n))return n;throw new Error(`${e} is not of type a scalar'`)}getStructByName(e){const n=this.getFieldByName(e);if(n instanceof Hr)return n;throw new Error(`Error: Path to structure not found '${e.join(".")}'`)}getDistinctKey(){if(this.fieldDef.structRelationship.type!=="inline")return this.getDimensionByName(["__distinct_key"]);if(this.parent)return this.parent.getDistinctKey();throw new Error("Internal Error. inline struct can not be top level")}applyStructFiltersToTurtleDef(e){let n=e.pipeline;const r=e.annotation,i=e.filterList||[];return n=structuredClone(n),n[0].filterList=i.concat(n[0].filterList||[],this.fieldDef.filterList||[]),{type:"turtle",name:e.name,pipeline:n,annotation:r,location:e.location}}}class hM{constructor(e){this.dialect=new o2e.StandardSQLDialect,this.modelDef=void 0,this.structs=new Map,this.exploreSearchSQLMap=new Map,e&&this.loadModelFromDef(e)}loadModelFromDef(e){this.modelDef=e;for(const n of Object.values(this.modelDef.contents)){let r;if(n.type==="struct")r=new Hr(n,void 0,{model:this}),this.structs.set((0,Ue.getIdentifier)(n),r),r.resolveQueryFields();else if(n.type!=="query")throw new Error("Internal Error: Unknown structure type")}}getStructByName(e){let n;if(n=this.structs.get(e))return n;throw new Error(`Struct ${e} not found in model.`)}getStructFromRef(e,n){var r;let i;if(typeof e=="string"){const s=this.getStructByName(e);return n!==void 0?new Hr(s.fieldDef,n,(r=s.parent)!==null&&r!==void 0?r:{model:this}):s}else if(e.type==="struct")i=e;else throw new Error("Broken for now");return new Hr(i,n,{model:this})}loadQuery(e,n,r=!1,i=!1){const s="";n||(n=new gp(!0,void 0));const o={type:"turtle",name:"ignoreme",pipeline:e.pipeline,filterList:e.filterList},u=no.makeQuery(o,this.getStructFromRef(e.structRef,e.sourceArguments),n,i),a=u.generateSQLFromPipeline(n);if(r&&u.parent.dialect.hasFinalStage){const l=(0,Ue.getPhysicalFields)(a.outputStruct).map(c=>u.parent.dialect.sqlMaybeQuoteIdentifier(c.name));a.lastStageName=n.addStage(u.parent.dialect.sqlFinalStage(a.lastStageName,l))}return{lastStageName:a.lastStageName,malloy:s,stageWriter:n,structs:[a.outputStruct],connectionName:u.parent.connectionName}}compileQuery(e,n=!0){const i=this.loadQuery(e,void 0,n,!1),s=typeof e.structRef=="string"?e.structRef:e.structRef.type==="struct"?e.structRef.as||e.structRef.name:"(need to figure this out)";return n&&this.dialect.hasFinalStage&&(i.lastStageName=i.stageWriter.addStage(this.dialect.sqlFinalStage(i.lastStageName,[]))),{lastStageName:i.lastStageName,malloy:i.malloy,sql:i.stageWriter.generateSQLStages(),structs:i.structs,sourceExplore:s,sourceFilters:e.filterList,queryName:e.name,connectionName:i.connectionName,annotation:e.annotation}}async searchIndex(e,n,r,i=1e3,s=void 0){if(!e.canPersist())return;const o=this.getStructByName(n);let u=[];for(const[y,E]of o.nameMap)E instanceof Hr||Or(E)&&E.includeInWildcard()&&u.push({type:"fieldref",path:[y]});u=u.sort((y,E)=>y.path[0].localeCompare(E.path[0]));const a={structRef:n,pipeline:[{type:"index",indexFields:u,sample:o.dialect.defaultSampling}]},l=o.dialect.sqlMaybeQuoteIdentifier("fieldName"),c=o.dialect.sqlMaybeQuoteIdentifier("fieldPath"),f=o.dialect.sqlMaybeQuoteIdentifier("fieldValue"),x=o.dialect.sqlMaybeQuoteIdentifier("fieldType"),h=o.dialect.sqlMaybeQuoteIdentifier("weight");let p=this.exploreSearchSQLMap.get(n);p===void 0&&(p=this.compileQuery(a,!1).sql,this.exploreSearchSQLMap.set(n,p));let m=`SELECT
378
378
  ${l},
379
379
  ${c},
380
380
  ${f},
@@ -1296,7 +1296,7 @@ ${r} ${s}: [`,o.length>0&&(i+=`
1296
1296
  `+o.map(u=>u.stringify("",n+4)).join(`
1297
1297
  `)+`
1298
1298
  ${r} `),i+="]")}return i}*walk(){for(const e of Object.keys(this.children)){const n=this.children[e];if(n instanceof Qu)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)}}Ve.MalloyElement=Qu;class yye extends Qu{constructor(){super(...arguments),this.elementType="unimplemented",this.reported=!1}}Ve.Unimplemented=yye;class B7 extends Qu{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}}Ve.ModelEntryReference=B7;class Eye extends Qu{constructor(e){super(),this.id=e,this.elementType="experimentalExperiment"}execute(e){this.inExperiment(this.id)}}Ve.ExperimentalExperiment=Eye;function Nz(t){return t.execute!==void 0}Ve.isDocStatement=Nz;function Aye(t){return t instanceof gm||Nz(t)}Ve.isDocStatementOrDocStatementList=Aye;class Dz extends Qu{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}}}Ve.ListOf=Dz;class gm extends Dz{constructor(){super(...arguments),this.elementType="topLevelStatements",this.execCursor=0,this.isNoteableObj=!0,this.extendNote=Oz.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,Oz.isNoteable)(n)&&n.extendNote(this.note),this.noteCursor+=1),n instanceof gm){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}}}Ve.DocStatementList=gm;const vye="5a79a191-06bc-43cf-9b12-58741cd82970";function Fz(t){const e=t.inherits?Fz(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 Sye(t){const e=Fz(t).join("");return(0,mye.v5)(e,vye)}class k7 extends Qu{constructor(e){super(),this.elementType="document",this.globalNameSpace=new gye.GlobalNameSpace,this.documentModel={},this.queryList=[],this.sqlBlocks=[],this.didInitModel=!1,this.annotation={},this.experiments=new pye.Tag({}),this.modelAnnotationTodoList=[],this.statements=new gm(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=Sye(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,dye.getDialect)(n).experimental&&!r.experimentalDialectEnabled(n)&&e.log(`Requires compiler flag '##! experimental.dialect.${n}'`,"error")}}Ve.Document=k7;var LS={},Yh={},Yr={},b0={};Object.defineProperty(b0,"__esModule",{value:!0}),b0.canMakeEntry=b0.SpaceEntry=void 0;class _ye{}b0.SpaceEntry=_ye;function Cye(t){return"makeEntry"in t}b0.canMakeEntry=Cye,Object.defineProperty(Yr,"__esModule",{value:!0}),Yr.SpaceField=void 0;const Tye=Z,bye=b0;class Rye extends bye.SpaceEntry{constructor(){super(...arguments),this.refType="field"}fieldTypeFromFieldDef(e){const n={dataType:e.type,expressionType:"scalar",evalSpace:"input"};return(0,Tye.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(){}}Yr.SpaceField=Rye,Object.defineProperty(Yh,"__esModule",{value:!0}),Yh.ViewField=void 0;const Oye=Yr;class Nye extends Oye.SpaceField{constructor(e){super(),this.inSpace=e}typeDesc(){return{dataType:"turtle",expressionType:"scalar",evalSpace:"input"}}}Yh.ViewField=Nye,Object.defineProperty(LS,"__esModule",{value:!0}),LS.ASTViewField=void 0;const Dye=Yh;class Fye extends Dye.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)}}LS.ASTViewField=Fye,Object.defineProperty(fm,"__esModule",{value:!0}),fm.ViewFieldDeclaration=void 0;const wye=Ve,Lye=Vr,Iye=Gh,$ye=LS;class Bye extends wye.MalloyElement{constructor(e,n){super({view:n}),this.name=e,this.view=n,this.elementType="view-field-declaration",this.isNoteableObj=!0,this.extendNote=Lye.extendNoteMethod}makeEntry(e){const n=new $ye.ASTViewField(e,this,this.name);e.newEntry(this.name,this,n)}getFieldDef(e){const{pipeline:n,annotation:r}=this.view.pipelineComp(e),i=(0,Iye.detectAndRemovePartialStages)(n,this);return{type:"turtle",name:this.name,pipeline:i,annotation:{...this.note,inherits:r},location:this.location}}}fm.ViewFieldDeclaration=Bye;var On={};Object.defineProperty(On,"__esModule",{value:!0}),On.LegalRefinementStage=On.QueryClass=void 0;var wz;(function(t){t.Index="index",t.Project="project",t.Grouping="grouping"})(wz||(On.QueryClass=wz={}));var Lz;(function(t){t[t.Single=0]="Single",t[t.Head=1]="Head",t[t.Tail=2]="Tail"})(Lz||(On.LegalRefinementStage=Lz={})),Object.defineProperty(cm,"__esModule",{value:!0}),cm.NestFieldDeclaration=void 0;const kye=Gh,Pye=fm,Iz=On;class Mye extends Pye.ViewFieldDeclaration{constructor(){super(...arguments),this.elementType="nest-field-declaration",this.queryRefinementStage=Iz.LegalRefinementStage.Single,this.forceQueryClass=Iz.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,kye.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")}}cm.NestFieldDeclaration=Mye;var Kh={},Kr={};Object.defineProperty(Kr,"__esModule",{value:!0}),Kr.ErrorFactory=void 0;const $z={type:"struct",name:"~malformed~",dialect:"~malformed~",structSource:{type:"table",tablePath:"//undefined_error_table_path"},structRelationship:{type:"basetable",connectionName:"//undefined_error_connection"},fields:[]};class P7{static get structDef(){return{...$z}}static isErrorStructDef(e){return e.name.includes($z.name)}static get query(){return{structRef:P7.structDef,pipeline:[]}}static get reduceSegment(){return{type:"reduce",queryFields:[]}}static get projectSegment(){return{type:"project",queryFields:[]}}static get indexSegment(){return{type:"index",indexFields:[]}}}Kr.ErrorFactory=P7,Object.defineProperty(Kh,"__esModule",{value:!0}),Kh.DefineSourceList=Kh.DefineSource=void 0;const jye=Kr,Bz=Ve,Uye=Vr;class qye extends Bz.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=Uye.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),jye.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`)}}Kh.DefineSource=qye;class Hye extends Bz.DocStatementList{constructor(e){super(e),this.elementType="defineSources"}}Kh.DefineSourceList=Hye;var Xh={};Object.defineProperty(Xh,"__esModule",{value:!0}),Xh.DefineQueryList=Xh.DefineQuery=void 0;const kz=Ve,zye=Vr;class Qye extends kz.MalloyElement{constructor(e,n){super({queryExpr:n}),this.name=e,this.queryExpr=n,this.elementType="defineQuery",this.isNoteableObj=!0,this.extendNote=zye.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})}}Xh.DefineQuery=Qye;class Gye extends kz.DocStatementList{constructor(e){super(e),this.elementType="defineQueries"}}Xh.DefineQueryList=Gye;var Uo={};Object.defineProperty(Uo,"__esModule",{value:!0}),Uo.Source=void 0;const Wye=Ve;class Vye extends Wye.MalloyElement{structRef(e){return{structRef:this.structDef(e)}}packParameters(e){if(e===void 0)return;const n={};for(const r of e){const i=r.parameter();n[i.name]=i}return n}withParameters(e,n){return{...this.structDef(e),parameters:this.packParameters(n)}}}Uo.Source=Vye;var mm={},Jh={},IS={},R0={};Object.defineProperty(R0,"__esModule",{value:!0}),R0.mergeFields=R0.nameFromDef=void 0;function M7(t){var e;return t.type==="fieldref"?t.path[t.path.length-1]:(e=t.as)!==null&&e!==void 0?e:t.name}R0.nameFromDef=M7;function Yye(t,e){if(t===void 0)return e;const n=new Set(e.map(i=>M7(i))),r=t.filter(i=>!n.has(M7(i)));return r.push(...e),r}R0.mergeFields=Yye;var ym={},Xr={},Gu={};Object.defineProperty(Gu,"__esModule",{value:!0}),Gu.DefinedParameter=Gu.AbstractParameter=Gu.SpaceParam=void 0;const Kye=b0;class j7 extends Kye.SpaceEntry{constructor(){super(...arguments),this.refType="parameter"}}Gu.SpaceParam=j7;class Xye extends j7{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"}}}Gu.AbstractParameter=Xye;class Jye extends j7{constructor(e){super(),this.paramDef=e}parameter(){return this.paramDef}typeDesc(){return{dataType:this.paramDef.type,expressionType:"scalar",evalSpace:"input"}}}Gu.DefinedParameter=Jye;var ux={};Object.defineProperty(ux,"__esModule",{value:!0}),ux.StructSpaceFieldBase=void 0;const Zye=Yr;class eEe extends Zye.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"}}}ux.StructSpaceFieldBase=eEe;var Em={};Object.defineProperty(Em,"__esModule",{value:!0}),Em.ColumnSpaceField=void 0;const tEe=Yr;class nEe extends tEe.SpaceField{constructor(e){super(),this.haveFieldDef=e}fieldDef(){return this.haveFieldDef}typeDesc(){return this.fieldTypeFromFieldDef(this.haveFieldDef)}}Em.ColumnSpaceField=nEe;var $S={};Object.defineProperty($S,"__esModule",{value:!0}),$S.IRViewField=void 0;const rEe=Yh;class iEe extends rEe.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()}}$S.IRViewField=iEe,Object.defineProperty(Xr,"__esModule",{value:!0}),Xr.StructSpaceField=Xr.StaticSpace=void 0;const sEe=Tu,oEe=Z,uEe=Gu,aEe=Yr,BS=ux,lEe=Em,cEe=$S;class Pz{constructor(e){this.type="fieldSpace",this.fromStruct=e}dialectObj(){try{return(0,sEe.getDialect)(this.fromStruct.dialect)}catch{return}}defToSpaceField(e){return e.type==="struct"?new Mz(e):(0,oEe.isTurtleDef)(e)?new cEe.IRViewField(this,e):new lEe.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 uEe.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 aEe.SpaceField){const o=i.fieldDef();o&&n.addReference({type:i instanceof BS.StructSpaceFieldBase?"joinReference":"fieldReference",definition:o,location:n.location,text:n.refString})}const s=i instanceof BS.StructSpaceFieldBase?[{name:n.refString,structRelationship:i.structRelationship}]:[];if(r.length){if(i instanceof BS.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}}Xr.StaticSpace=Pz;class Mz extends BS.StructSpaceFieldBase{constructor(e){super(e)}get fieldSpace(){return new Pz(this.sourceDef)}}Xr.StructSpaceField=Mz,Object.defineProperty(ym,"__esModule",{value:!0}),ym.JoinSpaceField=void 0;const fEe=Xr;class xEe extends fEe.StructSpaceField{constructor(e,n){super(n.structDef(e)),this.parameterSpace=e,this.join=n}}ym.JoinSpaceField=xEe;var Am={};Object.defineProperty(Am,"__esModule",{value:!0}),Am.SpaceSeed=void 0;const dEe=Xr;function jz(t){return t.type==="fieldSpace"}class hEe{constructor(e){this.sourceSpec=e,this.spaceSpec=e}get structDef(){return jz(this.spaceSpec)?(this.asStruct||(this.asStruct=this.spaceSpec.structDef()),this.asStruct):this.spaceSpec}get fieldSpace(){return jz(this.spaceSpec)?this.spaceSpec:(this.asFS||(this.asFS=new dEe.StaticSpace(this.spaceSpec)),this.asFS)}}Am.SpaceSeed=hEe;var Zh={};Object.defineProperty(Zh,"__esModule",{value:!0}),Zh.ParameterSpace=void 0;const pEe=Gu;class gEe{constructor(e){this.type="fieldSpace",this._map={};for(const n of e)this._map[n.name]=new pEe.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}}Zh.ParameterSpace=gEe,Object.defineProperty(IS,"__esModule",{value:!0}),IS.DynamicSpace=void 0;const mEe=R0,yEe=Kr,EEe=Yr,AEe=ym,vEe=Yh,Uz=Gu,SEe=Am,_Ee=Xr,CEe=ux,TEe=Zh;class bEe extends _Ee.StaticSpace{constructor(e){const n=new SEe.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 Uz.AbstractParameter(n)));return this}parameterSpace(){return new TEe.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,mEe.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 Uz.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 CEe.StructSpaceFieldBase?r.push([a,l]):l instanceof vEe.ViewField?i.push([a,l]):l instanceof EEe.SpaceField&&n.push([a,l]);const o=[...n,...r,...i],u=this.parameterSpace();for(const[,a]of o)if(a instanceof AEe.JoinSpaceField){const l=a.join.structDef(u);yEe.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}}IS.DynamicSpace=bEe,Object.defineProperty(Jh,"__esModule",{value:!0}),Jh.RefinedSpace=void 0;const REe=IS,OEe=b0;class U7 extends REe.DynamicSpace{static filteredFrom(e,n,r){const i=new U7(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,OEe.canMakeEntry)(n)?n.makeEntry(this):n.log(`Internal error, ${n.elementType} not expected in this context`)}}Jh.RefinedSpace=U7;var O0={},Ns={};Object.defineProperty(Ns,"__esModule",{value:!0}),Ns.DefinitionList=void 0;const NEe=Ve,qz=Vr;class DEe extends NEe.ListOf{constructor(){super(...arguments),this.isNoteableObj=!0}extendNote(e){(0,qz.extendNoteHelper)(this,e),this.distributeAnnotation()}distributeAnnotation(){if(this.note)for(const e of this.elements)(0,qz.isNoteable)(e)&&e.extendNote(this.note)}newContents(){super.newContents(),this.distributeAnnotation()}}Ns.DefinitionList=DEe,Object.defineProperty(O0,"__esModule",{value:!0}),O0.DeclareFields=void 0;const FEe=Ns,wEe=On;class LEe extends FEe.DefinitionList{constructor(e){super(e),this.elementType="declareFields",this.queryRefinementStage=wEe.LegalRefinementStage.Single,this.forceQueryClass=void 0}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}O0.DeclareFields=LEe;var qo={},ln={};Object.defineProperty(ln,"__esModule",{value:!0}),ln.nullsafeNot=ln.compressExpr=ln.compose=void 0;const IEe=Z;function Hz(t){return t.length>1?["(",...t,")"]:t.length===0?["__MISSING_VALUE__"]:t}function $Ee(t,e,n){const r=e.match(/^[A-Za-z]/),i=t.length===1&&r?" ":"",s=n.length===1&&r?" ":"",o=i+e+s;return[...Hz(t),o,...Hz(n)]}ln.compose=$Ee;function BEe(t){const e=[];let n;for(const r of t.flat())typeof r=="string"?n=n?n+r:r:(n&&(e.push(n),n=void 0),e.push(r));return n&&e.push(n),e}ln.compressExpr=BEe;function kEe(t,e){return e===void 0||e==="!="||e==="!~"?(0,IEe.mkExpr)`COALESCE(NOT(${t}),FALSE)`:t}ln.nullsafeNot=kEe,Object.defineProperty(qo,"__esModule",{value:!0}),qo.Filter=qo.FilterElement=void 0;const zz=Z,PEe=ln,Qz=Ve,q7=On;class MEe extends Qz.MalloyElement{constructor(e,n){super({expr:e}),this.expr=e,this.exprSrc=n,this.elementType="filterElement"}filterExpression(e){const n=this.expr.getExpression(e);return n.dataType!=="boolean"?(this.expr.log("Filter expression must have boolean value"),{code:this.exprSrc,expression:["_FILTER_MUST_RETURN_BOOLEAN_"],expressionType:"scalar"}):{code:this.exprSrc,expression:(0,PEe.compressExpr)(n.value),expressionType:n.expressionType}}}qo.FilterElement=MEe;let jEe=class extends Qz.ListOf{constructor(){super(...arguments),this.elementType="filter",this.forceQueryClass=void 0,this.queryRefinementStage=q7.LegalRefinementStage.Head}set having(e){this.elementType=e?"having":"where",this.havingClause=e,this.queryRefinementStage=e?q7.LegalRefinementStage.Tail:q7.LegalRefinementStage.Head}getFilterList(e){const n=[];for(const r of this.list){const i=r.filterExpression(e);if(this.havingClause!==void 0){const s=(0,zz.expressionIsAggregate)(i.expressionType),o=(0,zz.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}};qo.Filter=jEe;var ts={};Object.defineProperty(ts,"__esModule",{value:!0}),ts.Joins=ts.ExpressionJoin=ts.KeyJoin=ts.Join=void 0;const UEe=Z,qEe=ln,HEe=ym,zEe=Ns,QEe=Ve,GEe=Vr,WEe=On,Gz=Kr;class H7 extends QEe.MalloyElement{constructor(){super(...arguments),this.isNoteableObj=!0,this.extendNote=GEe.extendNoteMethod}makeEntry(e){e.newEntry(this.name.refString,this,new HEe.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"),Gz.ErrorFactory.structDef)}}ts.Join=H7;class VEe extends H7{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:["('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:[{type:"field",path:[this.name.refString,n.primaryKey]},"=",...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")}}ts.KeyJoin=VEe;class YEe extends H7{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,UEe.isJoinOn)(i)&&(i.onExpression=(0,qEe.compressExpr)(r.value))}structDef(e){var n;const r=this.sourceExpr.getSource();if(!r)return this.sourceExpr.sqLog("Cannot create a source to join from"),Gz.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}}ts.ExpressionJoin=YEe;class KEe extends zEe.DefinitionList{constructor(e){super(e),this.elementType="joinList",this.forceQueryClass=void 0,this.queryRefinementStage=WEe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)e.inputFS.extendSource(n)}}ts.Joins=KEe;var e2={};Object.defineProperty(e2,"__esModule",{value:!0}),e2.FieldListEdit=void 0;const XEe=Ve;class JEe extends XEe.MalloyElement{constructor(e,n){super({refs:n}),this.edit=e,this.refs=n,this.elementType="fieldListEdit"}}e2.FieldListEdit=JEe;var t2={};Object.defineProperty(t2,"__esModule",{value:!0}),t2.PrimaryKey=void 0;const ZEe=Ve;class eAe extends ZEe.MalloyElement{constructor(e){super({field:e}),this.field=e,this.elementType="primary key"}}t2.PrimaryKey=eAe;var n2={};Object.defineProperty(n2,"__esModule",{value:!0}),n2.Views=void 0;const tAe=Ns;class nAe extends tAe.DefinitionList{constructor(){super(...arguments),this.elementType="turtleDefList"}}n2.Views=nAe;var r2={};Object.defineProperty(r2,"__esModule",{value:!0}),r2.TimezoneStatement=void 0;const rAe=Ve;class iAe extends rAe.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)}}r2.TimezoneStatement=iAe;var N0={};Object.defineProperty(N0,"__esModule",{value:!0}),N0.ModelAnnotation=N0.ObjectAnnotation=void 0;const sAe=ll,oAe=Ve;class Wz extends oAe.MalloyElement{constructor(e){super(),this.notes=e,this.elementType="annotation",this.forceQueryClass=void 0,this.queryRefinementStage=void 0}queryExecute(){}}N0.ObjectAnnotation=Wz;class uAe extends Wz{constructor(){super(...arguments),this.elementType="modelAnnotation"}getCompilerFlags(e,n){const r=sAe.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)}}N0.ModelAnnotation=uAe;var D0={},kS={};Object.defineProperty(kS,"__esModule",{value:!0}),kS.RenameSpaceField=void 0;const aAe=Yr;class lAe extends aAe.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()}}kS.RenameSpaceField=lAe,Object.defineProperty(D0,"__esModule",{value:!0}),D0.Renames=D0.RenameField=void 0;const cAe=kS,Vz=Ve,fAe=Yr;class xAe extends Vz.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 fAe.SpaceField?e.renameEntry(this.oldName.refString,this.newName,new cAe.RenameSpaceField(n.found,this.newName,this.location)):this.log(`'${this.oldName}' cannot be renamed`):this.log(`Can't rename '${this.oldName}', no such field`)}}D0.RenameField=xAe;class dAe extends Vz.ListOf{constructor(){super(...arguments),this.elementType="renameFields"}}D0.Renames=dAe,Object.defineProperty(mm,"__esModule",{value:!0}),mm.RefinedSource=void 0;const hAe=Z,pAe=Jh,gAe=O0,mAe=qo,yAe=ts,EAe=e2,AAe=t2,vAe=n2,SAe=Uo,_Ae=r2,CAe=N0,TAe=D0,bAe=Zh;class RAe extends SAe.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 CAe.ObjectAnnotation)continue;const g=m;m instanceof AAe.PrimaryKey?(i&&(i.log("Primary key already defined"),m.log("Primary key redefined")),i=m):m instanceof EAe.FieldListEdit?(s&&(s.log("Too many accept/except statements"),m.log("Too many accept/except statements")),s=m):m instanceof gAe.DeclareFields||m instanceof yAe.Joins||m instanceof vAe.Views||m instanceof TAe.Renames?o.push(...m.list):m instanceof mAe.Filter?u.push(m):m instanceof _Ae.TimezoneStatement?a=m.tz:g.log(`Unexpected source property: '${g.elementType}'`)}const l=n?new bAe.ParameterSpace(n):void 0,c=structuredClone(this.source.structDef(l));i&&(c.primaryKey=i.field.name);const f=pAe.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.filterExpression(f);(0,hAe.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=RAe;var Wu={};Object.defineProperty(Wu,"__esModule",{value:!0}),Wu.SourceQueryElement=void 0;const OAe=Ve;class z7 extends OAe.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 z7&&n.errored){e=!1;break}return e}}Wu.SourceQueryElement=z7;var PS={},ax={};Object.defineProperty(ax,"__esModule",{value:!0}),ax.QuerySource=void 0;const NAe=Uo;class DAe extends NAe.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)}}}ax.QuerySource=DAe;var i2={},vm={};Object.defineProperty(vm,"__esModule",{value:!0}),vm.QueryBase=void 0;const FAe=Gh,wAe=Ve;class LAe extends wAe.MalloyElement{query(){const e=this.queryComp(!0).query;return{...e,pipeline:(0,FAe.detectAndRemovePartialStages)(e.pipeline,this)}}}vm.QueryBase=LAe,Object.defineProperty(i2,"__esModule",{value:!0}),i2.QueryArrow=void 0;const IAe=Z,$Ae=Uo,Yz=Xr,BAe=vm;class kAe extends BAe.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 $Ae.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,IAe.refIsStructDef)(l.structRef)?l.structRef:this.source.structDef(void 0),i=new Yz.StaticSpace(n)}else{const l=this.source.queryComp(e);r=l.query,n=l.outputStruct,i=new Yz.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}}}i2.QueryArrow=kAe,Object.defineProperty(PS,"__esModule",{value:!0}),PS.SQArrow=void 0;const PAe=Wu,MAe=ax,jAe=i2;class UAe extends PAe.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 jAe.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 MAe.QuerySource(e);return this.has({asSource:n}),n}}PS.SQArrow=UAe;var MS={},s2={},Ds={};Object.defineProperty(Ds,"__esModule",{value:!0}),Ds.getStructFieldDef=Ds.getFinalStruct=Ds.opOutputStruct=void 0;const qAe=c0,HAe=_f,Q7=Z,Kz=Kr;function Xz(t,e,n){const r=Kz.ErrorFactory.isErrorStructDef(e)||(0,Q7.structHasErrors)(e);(0,Q7.isPartialSegment)(n)&&(n={...n,type:"reduce"});const i=(0,Q7.segmentHasErrors)(n);if(!r&&!i)try{return HAe.Segment.nextStructDef(e,n)}catch(s){t.log(`INTERNAL ERROR model/Segment.nextStructDef: ${s.message}
1299
- QUERY: ${(0,qAe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Kz.ErrorFactory.structDef,dialect:e.dialect}}Ds.opOutputStruct=Xz;function zAe(t,e,n){for(const r of n)e=Xz(t,e,r);return e}Ds.getFinalStruct=zAe;function QAe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ds.getStructFieldDef=QAe,Object.defineProperty(s2,"__esModule",{value:!0}),s2.QueryRefine=void 0;const GAe=Xr,WAe=Ds,VAe=vm;class YAe extends VAe.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 GAe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,WAe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}s2.QueryRefine=YAe;var Sm={},o2={},Nn={};Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.dateOffset=Nn.timestampOffset=Nn.timeResult=Nn.resolution=Nn.castDateToTimestamp=Nn.castTimestampToDate=Nn.castTo=Nn.timeOffset=void 0;const KAe=Z,Jz=ln;function XAe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}Nn.timeOffset=XAe;function JAe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,KAe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}Nn.castTo=JAe;function ZAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}Nn.castTimestampToDate=ZAe;function eve(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}Nn.castDateToTimestamp=eve;function tve(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Nn.resolution=tve;function nve(t,e){return e?{...t,timeframe:e}:t}Nn.timeResult=nve;function rve(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,Jz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}Nn.timestampOffset=rve;function ive(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,Jz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}Nn.dateOffset=ive;var lx={},hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.errorFor=void 0;function sve(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}hr.errorFor=sve;var dt={},cn={};Object.defineProperty(cn,"__esModule",{value:!0}),cn.FT=void 0;const ove=bu;function cx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class wr{static in(e,n){return e?n.find(i=>wr.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=>wr.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,ove.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}cn.FT=wr,wr.nullT=cx("null"),wr.numberT=cx("number"),wr.stringT=cx("string"),wr.dateT=cx("date"),wr.timestampT=cx("timestamp"),wr.boolT=cx("boolean"),wr.anyAtomicT=[wr.numberT,wr.stringT,wr.dateT,wr.timestampT,wr.boolT],wr.aggregateBoolT=cx("boolean","aggregate");var fl={};Object.defineProperty(fl,"__esModule",{value:!0}),fl.isComparison=fl.Comparison=void 0;var G7;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(G7||(fl.Comparison=G7={}));function uve(t){return Object.values(G7).includes(t)}fl.isComparison=uve;var u2={};Object.defineProperty(u2,"__esModule",{value:!0}),u2.isEquality=u2.Equality=void 0;var W7;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(W7||(u2.Equality=W7={}));function ave(t){return Object.values(W7).includes(t)}u2.isEquality=ave;var a2={};Object.defineProperty(a2,"__esModule",{value:!0}),a2.isGranularResult=void 0;function lve(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}a2.isGranularResult=lve,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Dn=Z,l2=hr,xl=ln,fx=cn,jS=Nn,cve=fl,fve=u2,Zz=a2,xve=Ve;class dve extends Error{}class eQ extends xve.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=fx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!fx.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 ${fx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return oQ(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Dn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=eQ;class V7 extends eQ{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[fx.FT.timestampT,fx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Dn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!fx.FT.typeEq(s,fx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,l2.errorFor)("illegal unit expression");let o;if((0,Zz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,jS.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,jS.timeResult)({dataType:"timestamp",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Dn.isDateUnit)(this.timeframe)?(0,jS.timeResult)({dataType:"date",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,jS.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,l2.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}dt.ExprDuration=V7;function tQ(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function hve(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=hve;function nQ(t,e,n,r){const i=(0,Dn.isTimeFieldType)(e.dataType),s=(0,Dn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=tQ(e,"timestamp"),u=tQ(r,"timestamp");if(o&&u)return(0,xl.compose)(o,n,u)}else return(0,xl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function rQ(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function pve(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function gve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("boolean",i,s);if(o)return o;if(i.dataType==="sql native"||s.dataType==="sql native"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=Cm(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=nQ(e,i,n,s)||(0,xl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,xl.compose)(i.value,"LIKE",s.value);else{const l=rQ(i,s);if(l===void 0)throw new dve("Incompatible types for match('~') operator");a=l}a=(0,xl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=pve(i,n,s);l?a=l:a=(0,xl.nullsafeNot)(rQ(i,s)||(0,xl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function mve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("boolean",i,s);if(o)return o;const u=(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),a=Cm(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=nQ(e,i,n,s)||(0,xl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function iQ(t,...e){return e.includes(t)}function sQ(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("number",i,s);if(o)return o;const u=Cm(e,i,r,s);if(u)return u;const a=(0,Dn.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:(0,xl.compose)(i.value,n,s.value),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,l2.errorFor)("numbers required")}function yve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Cm(e,i,r,s);if(o)return o;const u=(0,Dn.isTimeFieldType)(i.dataType),a=_m(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Zz.isGranularResult)(i))l=new V7(r,i.timeframe);else if(i.dataType==="date")l=new V7(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,l2.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return sQ(t,e,n,r)}function oQ(t,e,n,r){if((0,fve.isEquality)(n))return gve(t,e,n,r);if((0,cve.isComparison)(n))return mve(t,e,n,r);if(iQ(n,"+","-"))return yve(t,e,n,r);if(n==="*")return sQ(t,e,n,r);if(iQ(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=Cm(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=_m("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={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,l2.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,l2.errorFor)("applybinary bad operator")}dt.applyBinary=oQ;function _m(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Dn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Dn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Cm(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Dn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Dn.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};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(lx,"__esModule",{value:!0}),lx.ExprIdReference=void 0;const Eve=Z,Ave=hr,vve=dt;class Sve extends vve.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:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,Eve.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,Ave.errorFor)(n.error)}}lx.ExprIdReference=Sve,Object.defineProperty(o2,"__esModule",{value:!0}),o2.NamedSource=void 0;const Y7=Z,_ve=Uo,Cve=Kr,Tve=Nn,K7=Ve,bve=lx,Rve=Zh;class Ove extends _ve.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 K7.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof K7.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 K7.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,Y7.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 bve.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 Rve.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,Y7.isCastType)(f.type)&&(p=(0,Tve.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||(0,Y7.paramHasValue)(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=Cve.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}}o2.NamedSource=Ove;var Tm={},US={};Object.defineProperty(US,"__esModule",{value:!0}),US.QueryHeadStruct=void 0;const Nve=Z,Dve=Uo,Fve=o2;class wve extends Dve.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,Nve.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Fve.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}US.QueryHeadStruct=wve,Object.defineProperty(Tm,"__esModule",{value:!0}),Tm.QueryReference=void 0;const X7=Kr,Lve=Ve,Ive=US,$ve=Z,Bve=Ds;class kve extends Lve.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:X7.ErrorFactory.structDef,outputStruct:X7.ErrorFactory.structDef,query:X7.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Ive.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Bve.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,$ve.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}}Tm.QueryReference=kve,Object.defineProperty(Sm,"__esModule",{value:!0}),Sm.SQReference=void 0;const Pve=Wu,Mve=ax,jve=o2,uQ=Tm;class Uve extends Pve.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 Mve.QuerySource(n)}else if(e.type==="struct")this.asSource=new jve.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}}Sm.SQReference=Uve,Object.defineProperty(MS,"__esModule",{value:!0}),MS.SQRefine=void 0;const qve=Wu,Hve=ax,zve=s2,Qve=Sm;class Gve extends qve.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 Qve.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 zve.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Hve.QuerySource(e);return this.has({queryAsSource:n}),n}}}MS.SQRefine=Gve;var qS={},bm={};Object.defineProperty(bm,"__esModule",{value:!0}),bm.QueryRaw=void 0;const Wve=Z,Vve=Ve;class Yve extends Vve.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,Wve.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}}bm.QueryRaw=Yve;var Rm={},HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.makeSQLBlock=void 0;const Kve=Z,Xve=Yt;function Jve(t,e){const n={name:`md5:/${e||"$default"}//${Zve(t)}`,select:t};return e&&(n.connection=e),n}HS.makeSQLBlock=Jve;function Zve(t){const e=t.map(n=>(0,Kve.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,Xve.generateHash)(e.join(";"))}Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.SQLSource=void 0;const e4e=HS,t4e=Uo,zS=Kr;class n4e extends t4e.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,e4e.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 zS.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"),zS.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(`
1299
+ QUERY: ${(0,qAe.inspect)(n,{breakLength:72,depth:1/0})}`)}return{...Kz.ErrorFactory.structDef,dialect:e.dialect}}Ds.opOutputStruct=Xz;function zAe(t,e,n){for(const r of n)e=Xz(t,e,r);return e}Ds.getFinalStruct=zAe;function QAe(t,e){return t.fields.find(n=>(n.as||n.name)===e)}Ds.getStructFieldDef=QAe,Object.defineProperty(s2,"__esModule",{value:!0}),s2.QueryRefine=void 0;const GAe=Xr,WAe=Ds,VAe=vm;class YAe extends VAe.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 GAe.StaticSpace(n.inputStruct),i=this.refinement.refine(r,n.query.pipeline,void 0);return{query:{...n.query,pipeline:i},outputStruct:(0,WAe.getFinalStruct)(this.refinement,n.inputStruct,i),inputStruct:n.inputStruct}}}s2.QueryRefine=YAe;var Sm={},o2={},Nn={};Object.defineProperty(Nn,"__esModule",{value:!0}),Nn.dateOffset=Nn.timestampOffset=Nn.timeResult=Nn.resolution=Nn.castDateToTimestamp=Nn.castTimestampToDate=Nn.castTo=Nn.timeOffset=void 0;const KAe=Z,Jz=ln;function XAe(t,e,n,r,i){return[{type:"dialect",function:"delta",base:{valueType:t,value:e},op:n,delta:r,units:i}]}Nn.timeOffset=XAe;function JAe(t,e,n,r=!1){const i={type:"dialect",function:"cast",dstType:t,expr:e,safe:r};return(0,KAe.isAtomicFieldType)(n)&&(i.srcType=n),[i]}Nn.castTo=JAe;function ZAe(t,e=!1){return[{type:"dialect",function:"cast",dstType:"date",srcType:"timestamp",expr:t,safe:e}]}Nn.castTimestampToDate=ZAe;function eve(t,e=!1){return[{type:"dialect",function:"cast",dstType:"timestamp",srcType:"date",expr:t,safe:e}]}Nn.castDateToTimestamp=eve;function tve(t){switch(t){case"hour":case"minute":case"second":case"microsecond":case"millisecond":return"timestamp"}return"date"}Nn.resolution=tve;function nve(t,e){return e?{...t,timeframe:e}:t}Nn.timeResult=nve;function rve(t,e,n,r,i=!1){const s=["week","month","quarter","year"].includes(r),o=e==="+"?"_ADD":"_SUB",u=r.toUpperCase();if(s)return[`TIMESTAMP(DATETIME${o}(DATETIME(`,...t,"),INTERVAL ",...n,` ${u}))`];const a=i?["TIMESTAMP(",...t,")"]:t;return(0,Jz.compressExpr)([`TIMESTAMP${o}(`,...a,",INTERVAL ",...n,` ${u})`])}Nn.timestampOffset=rve;function ive(t,e,n,r){const i=e==="+"?"_ADD":"_SUB",s=r.toUpperCase();return(0,Jz.compressExpr)([`DATE${i}(`,...t,",INTERVAL ",...n,` ${s})`])}Nn.dateOffset=ive;var lx={},hr={};Object.defineProperty(hr,"__esModule",{value:!0}),hr.errorFor=void 0;function sve(t){return{dataType:"error",expressionType:"scalar",value:[`_ERROR_${t.replace(/ /g,"_")}`],evalSpace:"constant"}}hr.errorFor=sve;var dt={},cn={};Object.defineProperty(cn,"__esModule",{value:!0}),cn.FT=void 0;const ove=bu;function cx(t,e="scalar",n="constant"){return{dataType:t,expressionType:e,evalSpace:n}}class wr{static in(e,n){return e?n.find(i=>wr.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=>wr.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,ove.expressionIsScalar)(r.expressionType)||(i=`${r.expressionType} ${i}`),i}return"undefined"}).join(",")}}cn.FT=wr,wr.nullT=cx("null"),wr.numberT=cx("number"),wr.stringT=cx("string"),wr.dateT=cx("date"),wr.timestampT=cx("timestamp"),wr.boolT=cx("boolean"),wr.anyAtomicT=[wr.numberT,wr.stringT,wr.dateT,wr.timestampT,wr.boolT],wr.aggregateBoolT=cx("boolean","aggregate");var fl={};Object.defineProperty(fl,"__esModule",{value:!0}),fl.isComparison=fl.Comparison=void 0;var G7;(function(t){t.Like="~",t.NotLike="!~",t.LessThan="<",t.LessThanOrEqualTo="<=",t.EqualTo="=",t.GreaterThan=">",t.GreaterThanOrEqualTo=">=",t.NotEqualTo="!="})(G7||(fl.Comparison=G7={}));function uve(t){return Object.values(G7).includes(t)}fl.isComparison=uve;var u2={};Object.defineProperty(u2,"__esModule",{value:!0}),u2.isEquality=u2.Equality=void 0;var W7;(function(t){t.Like="~",t.NotLike="!~",t.Equals="=",t.NotEquals="!="})(W7||(u2.Equality=W7={}));function ave(t){return Object.values(W7).includes(t)}u2.isEquality=ave;var a2={};Object.defineProperty(a2,"__esModule",{value:!0}),a2.isGranularResult=void 0;function lve(t){return t.dataType==="date"||t.dataType==="timestamp"?t.timeframe!==void 0:!1}a2.isGranularResult=lve,Object.defineProperty(dt,"__esModule",{value:!0}),dt.applyBinary=dt.getMorphicValue=dt.ExprDuration=dt.ExpressionDef=void 0;const Dn=Z,l2=hr,xl=ln,fx=cn,jS=Nn,cve=fl,fve=u2,Zz=a2,xve=Ve;class dve extends Error{}class eQ extends xve.MalloyElement{constructor(){super(...arguments),this.legalChildTypes=fx.FT.anyAtomicT}granular(){return!1}requestExpression(e){return this.getExpression(e)}defaultFieldName(){}typeCheck(e,n){return n.dataType!=="error"&&!fx.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 ${fx.FT.inspect(n)}`),!1):!0}apply(e,n,r){return oQ(e,r,n,this)}canSupportPartitionBy(){return!1}canSupportOrderBy(){return!1}canSupportLimit(){return!1}supportsWhere(e){return(0,Dn.expressionIsAggregate)(e.expressionType)}}dt.ExpressionDef=eQ;class V7 extends eQ{constructor(e,n){super({n:e}),this.n=e,this.timeframe=n,this.elementType="duration",this.legalChildTypes=[fx.FT.timestampT,fx.FT.dateT]}apply(e,n,r){const i=r.getExpression(e);if(this.typeCheck(this,i),(0,Dn.isTimeFieldType)(i.dataType)&&(n==="+"||n==="-")){const s=this.n.getExpression(e);if(!fx.FT.typeEq(s,fx.FT.numberT))return this.log(`Duration units needs number not '${s.dataType}`),(0,l2.errorFor)("illegal unit expression");let o;if((0,Zz.isGranularResult)(i)&&i.timeframe===this.timeframe&&(o=i.timeframe),i.dataType==="timestamp"){const u=(0,jS.timeOffset)("timestamp",i.value,n,s.value,this.timeframe);return(0,jS.timeResult)({dataType:"timestamp",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:u},o)}return(0,Dn.isDateUnit)(this.timeframe)?(0,jS.timeResult)({dataType:"date",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,jS.timeOffset)("date",i.value,n,s.value,this.timeframe)},o):(this.log(`Cannot offset date by ${this.timeframe}`),(0,l2.errorFor)("ofsset date error"))}return super.apply(e,n,r)}getExpression(e){return{dataType:"duration",expressionType:"scalar",value:["__ERROR_DURATION_IS_NOT_A_VALUE__"],evalSpace:"constant"}}}dt.ExprDuration=V7;function tQ(t,e){return t.dataType===e?t.value:t.morphic&&t.morphic[e]}function hve(t,e){if(t.dataType===e)return t;if(t.morphic&&t.morphic[e])return{...t,dataType:e,value:t.morphic[e]}}dt.getMorphicValue=hve;function nQ(t,e,n,r){const i=(0,Dn.isTimeFieldType)(e.dataType),s=(0,Dn.isTimeFieldType)(r.dataType);if(i&&s)if(e.dataType!==r.dataType){const o=tQ(e,"timestamp"),u=tQ(r,"timestamp");if(o&&u)return(0,xl.compose)(o,n,u)}else return(0,xl.compose)(e.value,n,r.value);if((i||s)&&e.dataType!=="null"&&r.dataType!=="null")return t.log(`Cannot compare a ${e.dataType} to a ${r.dataType}`),["false"]}function rQ(t,e){if(t.dataType==="string"){if(e.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:t.value,regexp:e.value}]}else if(e.dataType==="string"&&t.dataType==="regular expression")return[{type:"dialect",function:"regexpMatch",expr:e.value,regexp:t.value}]}function pve(t,e,n){const r=e==="!="||e==="!~";if(t.dataType==="null"||n.dataType==="null"){const i=r?" NOT":"";return t.dataType!=="null"?[...t.value,` IS${i} NULL`]:n.dataType!=="null"?[...n.value,`IS${i} NULL`]:[r?"false":"true"]}}function gve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("boolean",i,s);if(o)return o;if(i.dataType==="sql native"||s.dataType==="sql native"){const l=i.dataType==="null"||s.dataType==="null",c=i.rawType&&i.rawType===s.rawType;if(!(l||c)){const f=Cm(e,i,r,s);if(f)return{...f,dataType:"boolean"}}}let a=nQ(e,i,n,s)||(0,xl.compose)(i.value,n,s.value);if(i.dataType!=="error"&&s.dataType!=="error")switch(n){case"~":case"!~":{if(i.dataType==="string"&&s.dataType==="string")a=(0,xl.compose)(i.value,"LIKE",s.value);else{const l=rQ(i,s);if(l===void 0)throw new dve("Incompatible types for match('~') operator");a=l}a=(0,xl.nullsafeNot)(a,n);break}case"=":case"!=":{const l=pve(i,n,s);l?a=l:a=(0,xl.nullsafeNot)(rQ(i,s)||(0,xl.compose)(i.value,"=",s.value),n);break}}return{dataType:"boolean",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:a}}function mve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("boolean",i,s);if(o)return o;const u=(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),a=Cm(e,i,r,s);if(a)return{...a,dataType:"boolean"};const l=nQ(e,i,n,s)||(0,xl.compose)(i.value,n,s.value);return{dataType:"boolean",expressionType:u,evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:l}}function iQ(t,...e){return e.includes(t)}function sQ(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=_m("number",i,s);if(o)return o;const u=Cm(e,i,r,s);if(u)return u;const a=(0,Dn.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:(0,xl.compose)(i.value,n,s.value),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace)};return(0,l2.errorFor)("numbers required")}function yve(t,e,n,r){const i=e.getExpression(t),s=r.getExpression(t),o=Cm(e,i,r,s);if(o)return o;const u=(0,Dn.isTimeFieldType)(i.dataType),a=_m(u?"error":"number",i,s);if(a)return a;if(u){let l=r;if(s.dataType!=="duration")if((0,Zz.isGranularResult)(i))l=new V7(r,i.timeframe);else if(i.dataType==="date")l=new V7(r,"day");else return e.log(`Can not offset time by '${s.dataType}'`),(0,l2.errorFor)(`time plus ${s.dataType}`);return l.apply(t,n,e)}return sQ(t,e,n,r)}function oQ(t,e,n,r){if((0,fve.isEquality)(n))return gve(t,e,n,r);if((0,cve.isComparison)(n))return mve(t,e,n,r);if(iQ(n,"+","-"))return yve(t,e,n,r);if(n==="*")return sQ(t,e,n,r);if(iQ(n,"/","%")){const i=e.getExpression(t),s=r.getExpression(t),o=Cm(e,i,r,s);if(o)return e.log(`Cannot use '${n}' with sql native type`),o;const u=_m("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={type:"dialect",function:n==="/"?"div":"mod",numerator:i.value,denominator:s.value};return{dataType:"number",expressionType:(0,Dn.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,Dn.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:[a]}}return(0,l2.errorFor)("divide type mismatch")}return e.log(`Cannot use ${n} operator here`),(0,l2.errorFor)("applybinary bad operator")}dt.applyBinary=oQ;function _m(t,...e){if(e.some(n=>n.dataType==="error"))return{dataType:t,expressionType:(0,Dn.maxOfExpressionTypes)(e.map(n=>n.expressionType)),value:["'cascading error'"],evalSpace:(0,Dn.mergeEvalSpaces)(...e.map(n=>n.evalSpace))}}function Cm(t,e,n,r){const i={dataType:e.dataType,expressionType:(0,Dn.maxExpressionType)(e.expressionType,r.expressionType),value:["'unsupported operation'"],evalSpace:(0,Dn.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};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(lx,"__esModule",{value:!0}),lx.ExprIdReference=void 0;const Eve=Z,Ave=hr,vve=dt;class Sve extends vve.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:[{type:"outputField",name:this.refString}]};const i=[{type:n.found.refType,path:this.fieldReference.path}],s=(0,Eve.expressionIsAggregate)(r.expressionType)?"output":r.evalSpace;return{...r,value:i,evalSpace:s}}return this.log(n.error),(0,Ave.errorFor)(n.error)}}lx.ExprIdReference=Sve,Object.defineProperty(o2,"__esModule",{value:!0}),o2.NamedSource=void 0;const Y7=Z,_ve=Uo,Cve=Kr,Tve=Nn,K7=Ve,bve=lx,Rve=Zh;class Ove extends _ve.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 K7.ModelEntryReference&&this.has({ref:e})}get refName(){return this.ref instanceof K7.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 K7.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,Y7.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 bve.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 Rve.ParameterSpace(r??[]),h=a.value.getExpression(x);let p=h.value;h.dataType!==f.type&&(0,Y7.isCastType)(f.type)&&(p=(0,Tve.castTo)(f.type,h.value,h.dataType,!0)),o[c]={...f,value:p}}}for(const a in n)a in o||((0,Y7.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=Cve.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}}o2.NamedSource=Ove;var Tm={},US={};Object.defineProperty(US,"__esModule",{value:!0}),US.QueryHeadStruct=void 0;const Nve=Z,Dve=Uo,Fve=o2;class wve extends Dve.Source{constructor(e,n){super(),this.fromRef=e,this.sourceArguments=n,this.elementType="internalOnlyQueryHead"}structRef(){return{structRef:this.fromRef}}structDef(e){if((0,Nve.refIsStructDef)(this.fromRef))return this.fromRef;const n=new Fve.NamedSource(this.fromRef,this.sourceArguments,void 0);return this.has({exploreReference:n}),n.structDef(e)}}US.QueryHeadStruct=wve,Object.defineProperty(Tm,"__esModule",{value:!0}),Tm.QueryReference=void 0;const X7=Kr,Lve=Ve,Ive=US,$ve=Z,Bve=Ds;class kve extends Lve.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:X7.ErrorFactory.structDef,outputStruct:X7.ErrorFactory.structDef,query:X7.ErrorFactory.query}};if(!r)return this.log(`Reference to undefined query '${this.name.refString}'`),i();if(r.type==="query"){const s=new Ive.QueryHeadStruct(r.structRef,r.sourceArguments);this.has({queryHead:s});const o=s.structDef(void 0),u=(0,Bve.getFinalStruct)(this,o,r.pipeline);return{query:e||(0,$ve.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}}Tm.QueryReference=kve,Object.defineProperty(Sm,"__esModule",{value:!0}),Sm.SQReference=void 0;const Pve=Wu,Mve=ax,jve=o2,uQ=Tm;class Uve extends Pve.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 Mve.QuerySource(n)}else if(e.type==="struct")this.asSource=new jve.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}}Sm.SQReference=Uve,Object.defineProperty(MS,"__esModule",{value:!0}),MS.SQRefine=void 0;const qve=Wu,Hve=ax,zve=s2,Qve=Sm;class Gve extends qve.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 Qve.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 zve.QueryRefine(e,this.refine);return this.has({query:n}),n}}getSource(){const e=this.getQuery();if(e){const n=new Hve.QuerySource(e);return this.has({queryAsSource:n}),n}}}MS.SQRefine=Gve;var qS={},bm={};Object.defineProperty(bm,"__esModule",{value:!0}),bm.QueryRaw=void 0;const Wve=Z,Vve=Ve;class Yve extends Vve.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,Wve.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}}bm.QueryRaw=Yve;var Rm={},HS={};Object.defineProperty(HS,"__esModule",{value:!0}),HS.makeSQLBlock=void 0;const Kve=Z,Xve=Yt;function Jve(t,e){const n={name:`md5:/${e||"$default"}//${Zve(t)}`,select:t};return e&&(n.connection=e),n}HS.makeSQLBlock=Jve;function Zve(t){const e=t.map(n=>(0,Kve.isSQLFragment)(n)?n.sql:JSON.stringify(n));return(0,Xve.generateHash)(e.join(";"))}Object.defineProperty(Rm,"__esModule",{value:!0}),Rm.SQLSource=void 0;const e4e=HS,t4e=Uo,zS=Kr;class n4e extends t4e.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,e4e.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 zS.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"),zS.ErrorFactory.structDef;const r=this.sqlBlock();n.reference(r.name,this.location);const i=n.getEntry(r.name);if(i.status==="error"){const s=i.message.split(/\r?\n/);return this.select.log("Invalid SQL, "+s.join(`
1300
1300
  `)),zS.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"),zS.ErrorFactory.structDef}}Rm.SQLSource=n4e,Object.defineProperty(qS,"__esModule",{value:!0}),qS.SQSource=void 0;const r4e=Wu,i4e=bm,s4e=Rm;class o4e extends r4e.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 s4e.SQLSource){const e=new i4e.QueryRaw(this.theSource);return this.has({rawQuery:e}),e}else this.sqLog("This source cannot be used as a query")}}qS.SQSource=o4e;var QS={};Object.defineProperty(QS,"__esModule",{value:!0}),QS.SQExtend=void 0;const u4e=mm,a4e=Wu;class l4e extends a4e.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 u4e.RefinedSource(e,this.extend),this.has({asSource:this.asSource}),this.asSource;this.sqLog("Could not compute source to extend")}isSource(){return!0}}QS.SQExtend=l4e;var GS={},c2={},f2={};Object.defineProperty(f2,"__esModule",{value:!0}),f2.BinaryBoolean=void 0;const aQ=Z,c4e=hr,f4e=cn,x4e=dt,d4e=ln;class h4e extends x4e.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=[f4e.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,aQ.mergeEvalSpaces)(n.evalSpace,r.evalSpace);return{dataType:"boolean",expressionType:(0,aQ.maxExpressionType)(n.expressionType,r.expressionType),evalSpace:i,value:(0,d4e.compose)(n.value,this.op,r.value)}}return(0,c4e.errorFor)("logial required boolean")}}f2.BinaryBoolean=h4e,Object.defineProperty(c2,"__esModule",{value:!0}),c2.ExprCompare=void 0;const Kt=cn,p4e=f2,g4e={"~":[Kt.FT.stringT],"!~":[Kt.FT.stringT],"<":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"<=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],"!=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],">=":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT],">":[Kt.FT.numberT,Kt.FT.stringT,Kt.FT.dateT,Kt.FT.timestampT]};class m4e extends p4e.BinaryBoolean{constructor(e,n,r){super(e,n,r),this.elementType="a<=>b",this.legalChildTypes=g4e[n]}getExpression(e){return this.right.apply(e,this.op,this.left)}}c2.ExprCompare=m4e;var Om={},x2={};Object.defineProperty(x2,"__esModule",{value:!0}),x2.ExprTime=void 0;const y4e=Z,E4e=ln,A4e=dt;class J7 extends A4e.ExpressionDef{constructor(e,n,r="scalar"){super(),this.elementType="timestampOrDate",this.elementType=e,this.translationValue={dataType:e,expressionType:r,value:typeof n=="string"?[n]:n,evalSpace:"constant"}}getExpression(e){return this.translationValue}static fromValue(e,n){let r=n.value;if(e!==n.dataType){const i={type:"dialect",function:"cast",safe:!1,dstType:e,expr:n.value};(0,y4e.isTimeFieldType)(n.dataType)&&(i.srcType=n.dataType),r=(0,E4e.compressExpr)([i])}return new J7(e,r,n.expressionType)}}x2.ExprTime=J7;var F0={};Object.defineProperty(F0,"__esModule",{value:!0}),F0.Range=void 0;const lQ=Z,v4e=hr,S4e=dt,_4e=ln;class C4e extends S4e.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,lQ.maxExpressionType)(u.expressionType,a.expressionType),evalSpace:(0,lQ.mergeEvalSpaces)(u.evalSpace,a.evalSpace),value:(0,_4e.compose)(u.value,s,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,v4e.errorFor)("a range is not a value")}}F0.Range=C4e,Object.defineProperty(Om,"__esModule",{value:!0}),Om.ExprGranularTime=void 0;const Z7=Z,T4e=hr,cQ=cn,fQ=Nn,b4e=dt,WS=x2,xQ=F0;class R4e extends b4e.ExpressionDef{constructor(e,n,r){super({expr:e}),this.expr=e,this.units=n,this.truncate=r,this.elementType="granularTime",this.legalChildTypes=[cQ.FT.timestampT,cQ.FT.dateT]}granular(){return!0}getExpression(e){const n=this.units,r=this.expr.getExpression(e);if((0,Z7.isTimeFieldType)(r.dataType)){const s={...r,dataType:r.dataType,timeframe:n};return this.truncate&&(s.value=[{type:"dialect",function:"trunc",expr:{value:r.value,valueType:r.dataType},units:n}]),s}r.dataType!=="error"&&this.log(`Cannot do time truncation on type '${r.dataType}'`);const i=r.dataType==="error"?(0,Z7.isDateUnit)(n)?"date":"timestamp":r.dataType;return{...r,dataType:i,value:(0,T4e.errorFor)("granularity typecheck").value,evalSpace:"constant"}}toRange(e){const n=this.getExpression(e);if(n.dataType==="timestamp"){const o=WS.ExprTime.fromValue("timestamp",n),u=new WS.ExprTime("timestamp",(0,fQ.timeOffset)("timestamp",n.value,"+",(0,Z7.mkExpr)`1`,this.units),n.expressionType);return new xQ.Range(o,u)}const r=new WS.ExprTime("date",n.value,n.expressionType),i=(0,fQ.timeOffset)("date",n.value,"+",["1"],this.units),s=new WS.ExprTime("date",i,n.expressionType);return new xQ.Range(r,s)}}Om.ExprGranularTime=R4e,Object.defineProperty(GS,"__esModule",{value:!0}),GS.Apply=void 0;const O4e=fl,N4e=c2,D4e=a2,dQ=Om;class F4e extends N4e.ExprCompare{constructor(e,n){super(e,O4e.Comparison.EqualTo,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,D4e.isGranularResult)(r)&&(n=new dQ.ExprGranularTime(this.right,r.timeframe,!1))}return n instanceof dQ.ExprGranularTime?n.toRange(e).apply(e,this.op,this.left):super.getExpression(e)}}GS.Apply=F4e;var d2={};Object.defineProperty(d2,"__esModule",{value:!0}),d2.BinaryNumeric=void 0;const w4e=cn,L4e=dt;class I4e extends L4e.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=[w4e.FT.numberT]}getExpression(e){return this.right.apply(e,this.op,this.left)}}d2.BinaryNumeric=I4e;var VS={};Object.defineProperty(VS,"__esModule",{value:!0}),VS.Boolean=void 0;const $4e=dt,B4e=cn;let k4e=class extends $4e.ExpressionDef{constructor(e){super(),this.value=e,this.elementType="boolean literal"}getExpression(){return{...B4e.FT.boolT,value:[this.value]}}};VS.Boolean=k4e;var w0={};Object.defineProperty(w0,"__esModule",{value:!0}),w0.FunctionOrdering=w0.FunctionOrderBy=void 0;const eD=Z,hQ=Ve,P4e=lx;class M4e extends hQ.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"),{e:["error"],dir:this.dir};const n=this.field.getExpression(e);return(0,eD.expressionIsAggregate)(n.expressionType)||((0,eD.expressionIsScalar)(n.expressionType)?(!(this.field instanceof P4e.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")),{e:n.value,dir:this.dir}}getAggregateOrderBy(e,n){if(this.field){const r=this.field.getExpression(e);return(0,eD.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"),{e:r.value,dir:this.dir}}else return this.dir===void 0?(this.log("field or order direction must be specified"),{e:void 0,dir:"asc"}):{e:void 0,dir:this.dir}}}w0.FunctionOrderBy=M4e;class j4e extends hQ.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))}}w0.FunctionOrdering=j4e;var YS={};Object.defineProperty(YS,"__esModule",{value:!0}),YS.ExprAddSub=void 0;const U4e=d2;class q4e extends U4e.BinaryNumeric{constructor(){super(...arguments),this.elementType="+-"}}YS.ExprAddSub=q4e;var dl={},ht={},Nm={};Object.defineProperty(Nm,"__esModule",{value:!0}),Nm.ReferenceField=void 0;const pQ=Yr;class H4e extends pQ.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:[{type:"parameter",path:i}]}:{type:"fieldref",path:i};this.queryFieldDef=s;const o=this.referenceTo;if(o instanceof pQ.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"}}}Nm.ReferenceField=H4e;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0}),Kn.typecheckGroupBy=Kn.typecheckAggregate=Kn.typecheckCalculate=Kn.typecheckDeclare=Kn.typecheckMeasure=Kn.typecheckDimension=Kn.typecheckIndex=Kn.typecheckProject=void 0;const Fn=bu;function z4e(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Fn.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?`)}}Kn.typecheckProject=z4e;function Q4e(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsScalar)(t.expressionType)){let n;if(t.dataType==="turtle")n="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="an analytic";else if((0,Fn.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`)}}Kn.typecheckIndex=Q4e;function G4e(t,e){if(!(0,Fn.expressionIsScalar)(t.expressionType))if((0,Fn.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,Fn.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`)}Kn.typecheckDimension=G4e;function W4e(t,e){if(!(0,Fn.expressionIsAggregate)(t.expressionType))if((0,Fn.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,Fn.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`)}Kn.typecheckMeasure=W4e;function V4e(t,e){t.dataType==="turtle"?e.log("Query fields cannot be used in a declare block"):(0,Fn.expressionIsAnalytic)(t.expressionType)&&e.log("Analytic expressions can not be used in a declare block")}Kn.typecheckDeclare=V4e;function Y4e(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsAnalytic)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAggregate)(t.expressionType))n="an aggregate",r="an aggregate";else if((0,Fn.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?`)}}Kn.typecheckCalculate=Y4e;function K4e(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsAggregate)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Fn.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?`)}}Kn.typecheckAggregate=K4e;function X4e(t,e){if(t.dataType==="turtle"||!(0,Fn.expressionIsScalar)(t.expressionType)){let n,r;if(t.dataType==="turtle")n="a nest",r="a view";else if((0,Fn.expressionIsAnalytic)(t.expressionType))n="a calculate",r="an analytic";else if((0,Fn.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?`)}}Kn.typecheckGroupBy=X4e,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 J4e=Nm,Z4e=Ns,gQ=Ve,mQ=Vr,L0=Kn;class ns extends gQ.ListOf{constructor(e){super(e),this.isNoteableObj=!0,this.extendNote=mQ.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 J4e.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=ns;class eSe extends ns{constructor(){super(...arguments),this.elementType="acceptExceptFieldReference"}typecheck(){}}ht.AcceptExceptFieldReference=eSe;class tSe extends ns{constructor(){super(...arguments),this.elementType="expressionFieldReference"}typecheck(){}}ht.ExpressionFieldReference=tSe;class nSe extends ns{constructor(){super(...arguments),this.elementType="partitionByFieldReference"}typecheck(){}}ht.PartitionByFieldReference=nSe;class rSe extends ns{constructor(){super(...arguments),this.elementType="parameterFieldReference"}typecheck(){}}ht.ParameterFieldReference=rSe;class iSe extends ns{constructor(){super(...arguments),this.elementType="calculateFieldReference"}typecheck(e){(0,L0.typecheckCalculate)(e,this)}}ht.CalculateFieldReference=iSe;class tD extends ns{constructor(){super(...arguments),this.elementType="indexFieldReference"}typecheck(e){(0,L0.typecheckIndex)(e,this)}static indexOutputName(e){return e.map(n=>encodeURIComponent(n)).join("/")}get outputName(){return tD.indexOutputName(this.path)}}ht.IndexFieldReference=tD;class sSe extends ns{constructor(){super(...arguments),this.elementType="aggregateFieldReference"}typecheck(e){(0,L0.typecheckAggregate)(e,this)}}ht.AggregateFieldReference=sSe;class oSe extends ns{constructor(){super(...arguments),this.elementType="groupByFieldReference"}typecheck(e){(0,L0.typecheckGroupBy)(e,this)}}ht.GroupByFieldReference=oSe;class uSe extends ns{constructor(){super(...arguments),this.elementType="projectFieldReference"}typecheck(e){(0,L0.typecheckProject)(e,this)}}ht.ProjectFieldReference=uSe;class aSe extends ns{constructor(){super(...arguments),this.elementType="declareFieldReference"}typecheck(e){(0,L0.typecheckDeclare)(e,this)}}ht.DeclareFieldReference=aSe;class lSe extends ns{constructor(){super(...arguments),this.elementType="measureFieldReference"}typecheck(e){(0,L0.typecheckMeasure)(e,this)}}ht.MeasureFieldReference=lSe;class cSe extends ns{constructor(){super(...arguments),this.elementType="dimensionFieldReference"}typecheck(e){(0,L0.typecheckDimension)(e,this)}}ht.DimensionFieldReference=cSe;class fSe extends ns{constructor(){super(...arguments),this.elementType="viewOrScalarFieldReference"}typecheck(e){}}ht.ViewOrScalarFieldReference=fSe;class xSe extends gQ.MalloyElement{constructor(e){super(),this.joinPath=e,this.elementType="wildcardFieldReference",this.isNoteableObj=!0,this.extendNote=mQ.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=xSe;class dSe extends Z4e.DefinitionList{constructor(e){super(e),this.elementType="fieldReferenceList"}}ht.FieldReferences=dSe,Object.defineProperty(dl,"__esModule",{value:!0}),dl.ExprAggregateFunction=void 0;const yQ=Z,hSe=Yt,Dm=hr,pSe=Xr,gSe=ux,mSe=cn,ySe=ht,ESe=dt,ASe=Yr,vSe=lx;class SSe extends ESe.ExpressionDef{constructor(e,n,r){super(),this.func=e,this.legalChildTypes=[mSe.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,yQ.isAtomicFieldType)(x.dataType)){s=this.source,o={dataType:x.dataType,expressionType:x.expressionType,value:[x.evalSpace==="output"?{type:"outputField",name:this.source.refString}:{type:"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=>_Se(m,h[0])))&&(u=h[0].map(m=>m.name),a=h[0])}else if(!(f instanceof gSe.StructSpaceFieldBase))return this.log(`Aggregate source cannot be a ${x.dataType}`),(0,Dm.errorFor)(`Aggregate source cannot be a ${x.dataType}`)}else return this.log(`Reference to undefined value ${this.source.refString}`),(0,Dm.errorFor)(`Reference to undefined value ${this.source.refString}`)}if(o===void 0)return this.log("Missing expression for aggregate function"),(0,Dm.errorFor)("agggregate without expression");if((0,yQ.expressionIsAggregate)(o.expressionType))return this.log("Aggregate expression cannot be aggregate"),(0,Dm.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=rD(a,c),p=iD(this.elementType,h),m=f?p:"Join path is required for this calculation";if(m){const g=CSe(m,c,s,this.elementType);this.log(g,p?"error":"warn")}}}if(this.typeCheck(this.expr||this,{...o,expressionType:"scalar"})){const c={type:"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,Dm.errorFor)("aggregate type check")}isSymmetricFunction(){return!0}getJoinUsage(e){const n=[];if(this.source&&this.source.getField(e).found){const i=[{type:"field",path:this.source.path}];n.push(...nD(e,i))}if(this.expr){const r=this.expr.getExpression(e).value;n.push(...nD(e,r))}return n}}dl.ExprAggregateFunction=SSe;function _Se(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 nD(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 pSe.StructSpaceField&&u.length>0){const l=r(a.fieldSpace,u);return{...l,relationship:[{name:o,structRelationship:a.structRelationship},...l.relationship]}}else if(a instanceof ASe.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")};return(0,hSe.exprWalk)(e,i=>{if(typeof i!="string"){if(i.type==="field"){const s=r(t,i.path);if(s.def.type!=="struct"&&s.def.type!=="turtle")if(s.def.e){const o=nD(s.fs,s.def.e);n.push(...o.map(u=>[...s.relationship,...u]))}else n.push(s.relationship)}else if(i.type==="source-reference")if(i.path){const s=r(t,i.path);n.push(s.relationship)}else n.push([])}}),n}function rD(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 iD(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 CSe(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=rD(i,e),o=iD(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=rD(l,e),f=iD(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 ySe.FieldReference?`${n.refString}.${r}()`:n instanceof vSe.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 KS={};Object.defineProperty(KS,"__esModule",{value:!0}),KS.ExprAlternationTree=void 0;const EQ=Z,TSe=hr,bSe=f2,RSe=ln;class OSe extends bSe.BinaryBoolean{constructor(e,n,r){super(e,n,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,EQ.maxExpressionType)(i.expressionType,s.expressionType),evalSpace:(0,EQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),value:(0,RSe.compose)(i.value,this.op==="&"?"and":"or",s.value)}}requestExpression(e){}getExpression(e){return this.log("Alternation tree has no value"),(0,TSe.errorFor)("no value from alternation tree")}}KS.ExprAlternationTree=OSe;var h2={};Object.defineProperty(h2,"__esModule",{value:!0}),h2.ExprAsymmetric=void 0;const NSe=dl;class DSe extends NSe.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}`}}}}h2.ExprAsymmetric=DSe;var XS={};Object.defineProperty(XS,"__esModule",{value:!0}),XS.ExprAvg=void 0;const FSe=h2;class wSe extends FSe.ExprAsymmetric{constructor(e,n,r){super("avg",e,n,r),this.has({source:n})}}XS.ExprAvg=wSe;var JS={};Object.defineProperty(JS,"__esModule",{value:!0}),JS.ExprCast=void 0;const LSe=Nn,ISe=dt,$Se=ln;class BSe extends ISe.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,$Se.compressExpr)((0,LSe.castTo)(this.castType,s.value,s.dataType,this.safe)),evalSpace:s.evalSpace}}}JS.ExprCast=BSe;var ZS={};Object.defineProperty(ZS,"__esModule",{value:!0}),ZS.ExprCoalesce=void 0;const sD=bu,AQ=cn,kSe=dt;class PSe extends kSe.ExpressionDef{constructor(e,n){super({expr:e,altExpr:n}),this.expr=e,this.altExpr=n,this.elementType="coalesce expression",this.legalChildTypes=AQ.FT.anyAtomicT}getExpression(e){const n=this.expr.getExpression(e),r=this.altExpr.getExpression(e);return n.dataType==="null"?r:(AQ.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,sD.maxExpressionType)(n.expressionType,r.expressionType),value:(0,sD.mkExpr)`COALESCE(${n.value},${r.value})`,evalSpace:(0,sD.mergeEvalSpaces)(n.evalSpace,r.evalSpace)})}}ZS.ExprCoalesce=PSe;var e_={};Object.defineProperty(e_,"__esModule",{value:!0}),e_.ExprCount=void 0;const MSe=dl;class jSe extends MSe.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={type:"aggregate",function:"count",e:[]};return this.source&&(n.structPath=this.source.path),{dataType:"number",expressionType:"aggregate",value:[n],evalSpace:"output"}}}e_.ExprCount=jSe;var t_={};Object.defineProperty(t_,"__esModule",{value:!0}),t_.ExprCountDistinct=void 0;const n_=cn,USe=dl;class qSe extends USe.ExprAggregateFunction{constructor(e){super("count_distinct",e),this.legalChildTypes=[n_.FT.numberT,n_.FT.stringT,n_.FT.dateT,n_.FT.timestampT]}}t_.ExprCountDistinct=qSe;var r_={},I0={};Object.defineProperty(I0,"__esModule",{value:!0}),I0.Limit=void 0;const HSe=Ve,zSe=On;class QSe extends HSe.MalloyElement{constructor(e){super(),this.limit=e,this.elementType="limit",this.queryRefinementStage=zSe.LegalRefinementStage.Tail,this.forceQueryClass=void 0}}I0.Limit=QSe;var p2={};Object.defineProperty(p2,"__esModule",{value:!0}),p2.PartitionBy=void 0;const GSe=Ve;class WSe extends GSe.ListOf{constructor(e){super(e),this.partitionFields=e,this.elementType="partition_by"}}p2.PartitionBy=WSe;var Fm={},$0={};Object.defineProperty($0,"__esModule",{value:!0}),$0.FieldName=void 0;const VSe=Ve;class YSe extends VSe.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])}}$0.FieldName=YSe,Object.defineProperty(Fm,"__esModule",{value:!0}),Fm.ExprFunc=void 0;const uo=Z,Vu=hr,KSe=ux,XSe=dt,JSe=$0,vQ=ln;class ZSe extends XSe.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(R=>R.getExpression(e));if(this.isRaw){let R="scalar",I;const M=[`${this.name}(`];for(const Y of a)R=(0,uo.maxExpressionType)(R,Y.expressionType),I?M.push(","):I=Y.dataType,M.push(...Y.value);return M.push(")"),{dataType:(i=(r=this.rawType)!==null&&r!==void 0?r:I)!==null&&i!==void 0?i:"number",expressionType:R,value:(0,vQ.compressExpr)(M),evalSpace:(0,uo.mergeEvalSpaces)(...a.map(Y=>Y.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,Vu.errorFor)("unknown function");if(l.type!=="function")return this.log(`Cannot call '${this.name}', which is of type ${l.type}`),(0,Vu.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 R=this.source.getField(e).found;if(R){const I=R.typeDesc();if((0,uo.isAtomicFieldType)(I.dataType))c={dataType:I.dataType,expressionType:I.expressionType,value:[{type:"field",path:this.source.path}],evalSpace:I.evalSpace},f=this.source.path.slice(0,-1);else if(!(R instanceof KSe.StructSpaceFieldBase)){const M=`Aggregate source cannot be a ${I.dataType}`;return this.log(M),(0,Vu.errorFor)(M)}}else{const I=`Reference to undefined value ${this.source.refString}`;return this.log(I),(0,Vu.errorFor)(I)}}const x=[...c?[c]:[],...a],h=e_e(l,x);if(h===void 0)return this.log(`No matching overload for function ${this.name}(${x.map(R=>R.dataType).join(", ")})`),(0,Vu.errorFor)("no matching overload");const{overload:p,expressionTypeErrors:m,evalSpaceErrors:g,nullabilityErrors:y}=h;for(const R of m){const I=R.argIndex-(c?1:0),M=(0,uo.expressionIsScalar)(R.maxExpressionType)?"scalar":"scalar or aggregate";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualExpressionType}`)}for(const R of g){const I=R.argIndex-(c?1:0),M=R.maxEvalSpace==="literal"?"literal":R.maxEvalSpace==="constant"?"literal or constant":"literal, constant or output";this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must be ${M}, but received ${R.actualEvalSpace}`)}for(const R of y){const I=R.argIndex-(c?1:0);this.args[I].log(`Parameter ${R.argIndex+1} ('${R.param.name}') of ${this.name} must not be a literal null`)}const E=p.returnType,A=(0,uo.maxOfExpressionTypes)([E.expressionType,...x.map(R=>R.expressionType)]);if(!(0,uo.expressionIsAggregate)(p.returnType.expressionType)&&this.source!==void 0)return this.log(`Cannot call function ${this.name}(${x.map(R=>R.dataType).join(", ")}) with source`),(0,Vu.errorFor)("cannot call with source");const v={type:"function_call",overload:p,name:this.name,args:x.map(R=>R.value),expressionType:A,structPath:f};let _=[v];const S=(u=e.dialectObj())===null||u===void 0?void 0:u.name,C=S?p.dialect[S]:void 0;if(C===void 0)this.log(`Function ${this.name} is not defined in dialect ${S}`);else{if(n!=null&&n.orderBys&&n.orderBys.length>0){const R=(0,uo.expressionIsAnalytic)(p.returnType.expressionType);if(R||this.inExperiment("aggregate_order_by",!0)||n.orderBys[0].log("Enable experiment `aggregate_order_by` to use `order_by` with an aggregate function"),C.supportsOrderBy||R){const I=C.supportsOrderBy!=="only_default",M=n.orderBys.flatMap(z=>R?z.getAnalyticOrderBy(e):z.getAggregateOrderBy(e,I));v.orderBy=M}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 R=[];for(const I of n.partitionBys)for(const M of I.partitionFields){const z=M.getField(e);z.found===void 0?M.log(`${M.refString} is not defined`):(0,uo.expressionIsAnalytic)(z.found.typeDesc().expressionType)||(0,uo.expressionIsUngroupedAggregate)(z.found.typeDesc().expressionType)?M.log("Partition expression must be scalar or aggregate"):R.push(M.nameString)}v.partitionBy=R}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,Vu.errorFor)("sql_function used without enabling")}const R=x[0].value;if(R.length!==1||typeof R[0]=="string"||R[0].type!=="dialect"||R[0].function!=="stringLiteral")this.log(`Invalid string literal for \`${l.name}\``);else{const I=R[0].literal,M=t_e(I),z=M.filter(Q=>Q.type==="interpolation"&&Q.name.includes(".")).map(Q=>Q.type==="interpolation"?`\${${Q.name}}`:`\${${Q.value}}`);if(z.length>0){const Q=z.length===1?`'.' paths are not yet supported in sql interpolations, found ${z.at(0)}`:`'.' paths are not yet supported in sql interpolations, found (${z.join(", ")})`;return this.log(Q),(0,Vu.errorFor)(`${Q}. See LookML \${...} documentation at https://cloud.google.com/looker/docs/reference/param-field-sql#sql_for_dimensions`)}const Y=[];for(const Q of M)if(Q.type==="string")Y.push(Q.value);else if(Q.name==="TABLE")Y.push({type:"source-reference"});else{const oe=new JSe.FieldName(Q.name);this.has({name:oe});const he=e.lookup([oe]);if(he.found===void 0)return this.log(`Invalid interpolation: ${he.error}`),(0,Vu.errorFor)("invalid interpolated field");he.found.refType==="parameter"?Y.push({type:"parameter",path:[Q.name]}):Y.push({type:"field",path:[Q.name]})}_=[{type:"sql-string",e:Y}]}}if(E.dataType==="any")return this.log(`Invalid return type ${E.dataType} for function '${this.name}'`),(0,Vu.errorFor)("invalid return type");const T=(0,uo.mergeEvalSpaces)(...x.map(R=>R.evalSpace)),O=T==="constant"?"constant":(0,uo.expressionIsScalar)(A)?T:"output";return{dataType:E.dataType,expressionType:A,value:(0,vQ.compressExpr)(_),evalSpace:O}}}Fm.ExprFunc=ZSe;function e_e(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,uo.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 t_e(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(r_,"__esModule",{value:!0}),r_.ExprProps=void 0;const n_e=Z,r_e=hr,i_e=cn,s_e=w0,o_e=I0,u_e=p2,a_e=dt,l_e=Fm;class c_e extends a_e.ExpressionDef{constructor(e,n){super({expr:e,statements:n}),this.expr=e,this.statements=n,this.elementType="expression with props",this.legalChildTypes=i_e.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,n_e.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:[{type:"filterExpression",e:n.value,filterList:i}]}:(this.expr.log(`Cannot filter '${n.dataType}' data`),(0,r_e.errorFor)("cannot filter type"))}return n}getExpression(e){const n=[];let r;const i=[],s=[];for(const u of this.statements)u instanceof u_e.PartitionBy?this.expr.canSupportPartitionBy()?n.push(u):u.log("`partition_by` is not supported for this kind of expression"):u instanceof o_e.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 s_e.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 l_e.ExprFunc?this.expr.getPropsExpression(e,{partitionBys:n,limit:r,orderBys:i}):this.expr.getExpression(e);return this.getFilteredExpression(e,o,s)}}r_.ExprProps=c_e;var i_={};Object.defineProperty(i_,"__esModule",{value:!0}),i_.ExprLogicalOp=void 0;const f_e=f2,SQ=cn;class x_e extends f_e.BinaryBoolean{constructor(){super(...arguments),this.elementType="logical operator",this.legalChildTypes=[SQ.FT.boolT,SQ.FT.aggregateBoolT]}}i_.ExprLogicalOp=x_e;var s_={};Object.defineProperty(s_,"__esModule",{value:!0}),s_.ExprMax=void 0;const o_=cn,d_e=dl;class h_e extends d_e.ExprAggregateFunction{constructor(e){super("max",e),this.legalChildTypes=[o_.FT.numberT,o_.FT.stringT,o_.FT.dateT,o_.FT.timestampT]}returns(e){return e.dataType}}s_.ExprMax=h_e;var u_={};Object.defineProperty(u_,"__esModule",{value:!0}),u_.ExprMin=void 0;const a_=cn,p_e=dl;class g_e extends p_e.ExprAggregateFunction{constructor(e){super("min",e),this.legalChildTypes=[a_.FT.numberT,a_.FT.stringT,a_.FT.dateT,a_.FT.timestampT]}returns(e){return e.dataType}}u_.ExprMin=g_e;var l_={};Object.defineProperty(l_,"__esModule",{value:!0}),l_.ExprMinus=void 0;const m_e=hr,_Q=cn,y_e=dt;class E_e extends y_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e,this.elementType="unary minus",this.legalChildTypes=[_Q.FT.numberT]}getExpression(e){const n=this.expr.getExpression(e);return _Q.FT.typeIn(n,this.legalChildTypes)?n.value.length>1?{...n,dataType:"number",value:["-(",...n.value,")"]}:{...n,dataType:"number",value:["-",...n.value]}:(0,m_e.errorFor)("negate requires number")}}l_.ExprMinus=E_e;var c_={};Object.defineProperty(c_,"__esModule",{value:!0}),c_.ExprMulDiv=void 0;const A_e=d2;class v_e extends A_e.BinaryNumeric{constructor(){super(...arguments),this.elementType="*/%"}}c_.ExprMulDiv=v_e;var f_={},wm={};Object.defineProperty(wm,"__esModule",{value:!0}),wm.Unary=void 0;const S_e=dt;class __e extends S_e.ExpressionDef{constructor(e){super({expr:e}),this.expr=e}}wm.Unary=__e,Object.defineProperty(f_,"__esModule",{value:!0}),f_.ExprNot=void 0;const CQ=cn,C_e=wm,T_e=ln;class b_e extends C_e.Unary{constructor(e){super(e),this.elementType="not",this.legalChildTypes=[CQ.FT.boolT,CQ.FT.nullT]}getExpression(e){const n=this.expr.getExpression(e),r=this.typeCheck(this.expr,n);return{...n,dataType:"boolean",value:r?(0,T_e.nullsafeNot)(n.value):["false"]}}}f_.ExprNot=b_e;var x_={};Object.defineProperty(x_,"__esModule",{value:!0}),x_.ExprNow=void 0;const R_e=dt;class O_e extends R_e.ExpressionDef{constructor(){super(...arguments),this.elementType="timestamp"}getExpression(e){return{dataType:"timestamp",expressionType:"scalar",evalSpace:"constant",value:[{type:"dialect",function:"now"}]}}}x_.ExprNow=O_e;var d_={};Object.defineProperty(d_,"__esModule",{value:!0}),d_.ExprNULL=void 0;const N_e=dt;class D_e extends N_e.ExpressionDef{constructor(){super(...arguments),this.elementType="NULL"}getExpression(){return{dataType:"null",value:["NULL"],expressionType:"scalar",evalSpace:"literal"}}}d_.ExprNULL=D_e;var h_={};Object.defineProperty(h_,"__esModule",{value:!0}),h_.ExprNumber=void 0;const F_e=cn,w_e=dt;class L_e extends w_e.ExpressionDef{constructor(e){super(),this.n=e,this.elementType="numeric literal"}getExpression(e){return this.constantExpression()}constantExpression(){return{...F_e.FT.numberT,evalSpace:"literal",value:[{type:"dialect",function:"numberLiteral",literal:this.n}]}}}h_.ExprNumber=L_e;var p_={};Object.defineProperty(p_,"__esModule",{value:!0}),p_.ExprParens=void 0;const I_e=dt;class $_e extends I_e.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:["(",...n.value,")"]}}}p_.ExprParens=$_e;var g_={};Object.defineProperty(g_,"__esModule",{value:!0}),g_.ExprRegEx=void 0;const B_e=dt;class k_e extends B_e.ExpressionDef{constructor(e){super(),this.regex=e,this.elementType="regular expression literal"}getExpression(){return{dataType:"regular expression",expressionType:"scalar",value:[{type:"dialect",function:"regexpLiteral",literal:this.regex}],evalSpace:"literal"}}}g_.ExprRegEx=k_e;var m_={};Object.defineProperty(m_,"__esModule",{value:!0}),m_.ExprString=void 0;const P_e=dt,M_e=cn;class j_e extends P_e.ExpressionDef{constructor(e){super(),this.elementType="string literal",this.value=e}getExpression(e){return{...M_e.FT.stringT,value:[{type:"dialect",function:"stringLiteral",literal:this.value}],evalSpace:"literal"}}}m_.ExprString=j_e;var y_={};Object.defineProperty(y_,"__esModule",{value:!0}),y_.ExprSum=void 0;const U_e=h2;class q_e extends U_e.ExprAsymmetric{constructor(e,n,r){super("sum",e,n,r),this.has({source:n})}}y_.ExprSum=q_e;var E_={};Object.defineProperty(E_,"__esModule",{value:!0}),E_.ExprTimeExtract=void 0;const xx=Z,B0=hr,oD=dt,H_e=F0;class Lm extends oD.ExpressionDef{static extractor(e){const n=Lm.pluralMap[e];if(n)return n;if((0,xx.isExtractUnit)(e))return e}constructor(e,n){super({args:n}),this.extractText=e,this.args=n,this.elementType="timeExtract"}getExpression(e){const n=Lm.extractor(this.extractText);if(n){if(this.args.length!==1)return this.log(`Extraction function ${n} requires one argument`),(0,B0.errorFor)("{this.name} arg count");const r=this.args[0];if(r instanceof H_e.Range){let i=r.first.getExpression(e),s=r.last.getExpression(e);const o=(0,xx.maxExpressionType)(i.expressionType,s.expressionType),u=(0,xx.mergeEvalSpaces)(i.evalSpace,s.evalSpace);if(i.dataType==="error"||s.dataType==="error")return{dataType:"number",expressionType:o,evalSpace:u,value:(0,B0.errorFor)("extract from error").value};if(!(0,xx.isTimeFieldType)(i.dataType))return r.first.log(`Can't extract ${n} from '${i.dataType}'`),(0,B0.errorFor)(`${n} bad type ${i.dataType}`);if(!(0,xx.isTimeFieldType)(s.dataType))return r.last.log(`Cannot extract ${n} from '${s.dataType}'`),(0,B0.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,oD.getMorphicValue)(i,"timestamp");c&&(i=c,l=!1)}else{const c=(0,oD.getMorphicValue)(s,"timestamp");c&&(s=c,l=!1)}if(l)return r.first.log(`Cannot measure from ${i.dataType} to ${s.dataType}`),(0,B0.errorFor)(`${n} range mismatch`)}return["week","month","quarter","year"].includes(n)?(this.log(`Cannot measure interval using '${n}'`),(0,B0.errorFor)(`${n} civil extraction`)):(0,xx.isTimestampUnit)(n)?{dataType:"number",expressionType:o,evalSpace:u,value:[{type:"dialect",function:"timeDiff",units:n,left:{valueType:a,value:i.value},right:{valueType:a,value:s.value}}]}:(this.log(`Cannot extract ${n} from a range`),(0,B0.errorFor)(`${n} bad extraction`))}else{const i=r.getExpression(e);return(0,xx.isTimeFieldType)(i.dataType)?{dataType:"number",expressionType:i.expressionType,evalSpace:i.evalSpace,value:[{type:"dialect",function:"extract",expr:{value:i.value,valueType: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,B0.errorFor)(`${this.extractText} bad type ${i.dataType}`).value})}}throw this.internalError(`Illegal extraction unit '${this.extractText}'`)}}E_.ExprTimeExtract=Lm,Lm.pluralMap={years:"year",quarters:"quarter",months:"month",weeks:"week",days:"day",hours:"hour",minutes:"minute",seconds:"second"};var A_={},Ho={},v_={};Object.defineProperty(v_,"__esModule",{value:!0}),v_.QueryInputSpace=void 0;const z_e=ts,Q_e=Am,G_e=Jh;class W_e extends G_e.RefinedSpace{constructor(e,n){const r=new Q_e.SpaceSeed(e);super(r.structDef),this.queryOutput=n,this.extendList=[]}extendSource(e){this.pushFields(e),e instanceof z_e.Join?this.extendList.push(e.name.refString):this.extendList.push(e.defineName)}isQueryFieldSpace(){return!0}outputSpace(){return this.queryOutput}inputSpace(){return this}}v_.QueryInputSpace=W_e;var V_e=N&&N.__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]}),Y_e=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),K_e=N&&N.__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)&&V_e(e,t,n);return Y_e(e,t),e};Object.defineProperty(Ho,"__esModule",{value:!0}),Ho.ReduceFieldSpace=Ho.QuerySpace=Ho.QueryOperationSpace=void 0;const S_=K_e(Z),uD=R0,X_e=$0,J_e=Yr,Z_e=ht,e5e=Jh,t5e=Em,n5e=Xr,r5e=v_;class TQ extends e5e.RefinedSpace{constructor(e,n,r,i){super(e.emptyStructDef()),this.queryInputSpace=e,this.nestParent=r,this.astEl=i,this.expandedWild={},this.exprSpace=new r5e.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 n5e.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();S_.isAtomicFieldType(l.dataType)&&S_.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)}}Ho.QueryOperationSpace=TQ;class bQ extends TQ{addRefineFromFields(e){var n;if(S_.isQuerySegment(e))for(const r of e.queryFields)if(r.type==="fieldref"){const i=this.exprSpace.lookup(r.path.map(s=>new X_e.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 t5e.ColumnSpaceField(r))}pushFields(...e){for(const n of e)n instanceof Z_e.WildcardFieldReference?this.addWild(n):super.pushFields(n)}canContain(e){return!0}queryFieldDefs(){const e=[];for(const[n,r]of this.entries())if(r instanceof J_e.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)&&!s5e(s)&&e.push(s)}}return this.isComplete(),e}getQuerySegment(e){const n=this.getPipeSegment(e);if(S_.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,uD.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,uD.nameFromDef)(u)===s);o&&r.push(o)}n.extendSource=(0,uD.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}}Ho.QuerySpace=bQ;class i5e extends bQ{constructor(){super(...arguments),this.segmentType="reduce"}}Ho.ReduceFieldSpace=i5e;function s5e(t){return typeof t!="string"&&t.type==="turtle"&&t.pipeline.length===0}Object.defineProperty(A_,"__esModule",{value:!0}),A_.ExprUngroup=void 0;const RQ=Z,aD=hr,o5e=Ho,u5e=cn,a5e=dt;class l5e extends a5e.ExpressionDef{constructor(e,n,r){super({expr:n,fields:r}),this.control=e,this.expr=n,this.fields=r,this.legalChildTypes=u5e.FT.anyAtomicT,this.elementType="ungroup"}returns(e){return"number"}getExpression(e){const n=this.expr.getExpression(e);if(!(0,RQ.expressionIsAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must be an aggregate`),(0,aD.errorFor)("ungrouped scalar");if((0,RQ.expressionIsUngroupedAggregate)(n.expressionType))return this.expr.log(`${this.control}() expression must not already be ungrouped`),(0,aD.errorFor)("doubly-ungrouped aggregate");const r={type: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 o5e.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,aD.errorFor)("ungrouped type check")}}A_.ExprUngroup=l5e;var __={};Object.defineProperty(__,"__esModule",{value:!0}),__.ForRange=void 0;const OQ=bu,lD=hr,NQ=cn,C_=Nn,c5e=dt,T_=x2,DQ=F0;class f5e extends c5e.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=[NQ.FT.timestampT,NQ.FT.dateT]}apply(e,n,r){const i=this.from.getExpression(e),s=r.getExpression(e);if(!this.typeCheck(r,s))return(0,lD.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,OQ.mergeEvalSpaces)(i.evalSpace,s.evalSpace),expressionType:(0,OQ.maxExpressionType)(i.expressionType,s.expressionType),value:(0,lD.errorFor)("for not number").value};const u=this.timeframe.text;let a=(0,C_.resolution)(u);if(i.dataType==="timestamp"&&(a="timestamp"),s.dataType==="date"&&a==="date"){const p=this.from,m=(0,C_.timeOffset)("date",i.value,"+",o.value,u),g=new T_.ExprTime("date",m);return new DQ.Range(p,g).apply(e,n,r)}const l=T_.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,C_.castDateToTimestamp)(f),c=new T_.ExprTime("timestamp",f,i.expressionType)}const x=(0,C_.timeOffset)("timestamp",f,"+",o.value,u),h=new T_.ExprTime("timestamp",x,i.expressionType);return new DQ.Range(c,h).apply(e,n,l)}requestExpression(e){}getExpression(e){return this.log("A Range is not a value"),(0,lD.errorFor)("range has no value")}}__.ForRange=f5e;var pr={};class dx extends Error{}class x5e extends dx{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}}class d5e extends dx{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}}class h5e extends dx{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}}class Im extends dx{}class FQ extends dx{constructor(e){super(`Invalid unit ${e}`)}}class ao extends dx{}class k0 extends dx{constructor(){super("Zone is an abstract class")}}const ke="numeric",zo="short",Fs="long",cD={year:ke,month:ke,day:ke},wQ={year:ke,month:zo,day:ke},p5e={year:ke,month:zo,day:ke,weekday:zo},LQ={year:ke,month:Fs,day:ke},IQ={year:ke,month:Fs,day:ke,weekday:Fs},$Q={hour:ke,minute:ke},BQ={hour:ke,minute:ke,second:ke},kQ={hour:ke,minute:ke,second:ke,timeZoneName:zo},PQ={hour:ke,minute:ke,second:ke,timeZoneName:Fs},MQ={hour:ke,minute:ke,hourCycle:"h23"},jQ={hour:ke,minute:ke,second:ke,hourCycle:"h23"},UQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:zo},qQ={hour:ke,minute:ke,second:ke,hourCycle:"h23",timeZoneName:Fs},HQ={year:ke,month:ke,day:ke,hour:ke,minute:ke},zQ={year:ke,month:ke,day:ke,hour:ke,minute:ke,second:ke},QQ={year:ke,month:zo,day:ke,hour:ke,minute:ke},GQ={year:ke,month:zo,day:ke,hour:ke,minute:ke,second:ke},g5e={year:ke,month:zo,day:ke,weekday:zo,hour:ke,minute:ke},WQ={year:ke,month:Fs,day:ke,hour:ke,minute:ke,timeZoneName:zo},VQ={year:ke,month:Fs,day:ke,hour:ke,minute:ke,second:ke,timeZoneName:zo},YQ={year:ke,month:Fs,day:ke,weekday:Fs,hour:ke,minute:ke,timeZoneName:Fs},KQ={year:ke,month:Fs,day:ke,weekday:Fs,hour:ke,minute:ke,second:ke,timeZoneName:Fs};function vt(t){return typeof t>"u"}function hx(t){return typeof t=="number"}function b_(t){return typeof t=="number"&&t%1===0}function m5e(t){return typeof t=="string"}function y5e(t){return Object.prototype.toString.call(t)==="[object Date]"}function XQ(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function E5e(t){return Array.isArray(t)?t:[t]}function JQ(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 A5e(t,e){return e.reduce((n,r)=>(n[r]=t[r],n),{})}function g2(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function hl(t,e,n){return b_(t)&&t>=e&&t<=n}function v5e(t,e){return t-e*Math.floor(t/e)}function Hn(t,e=2){const n=t<0;let r;return n?r="-"+(""+-t).padStart(e,"0"):r=(""+t).padStart(e,"0"),r}function P0(t){if(!(vt(t)||t===null||t===""))return parseInt(t,10)}function px(t){if(!(vt(t)||t===null||t===""))return parseFloat(t)}function fD(t){if(!(vt(t)||t===null||t==="")){const e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function xD(t,e,n=!1){const r=10**e;return(n?Math.trunc:Math.round)(t*r)/r}function $m(t){return t%4===0&&(t%100!==0||t%400===0)}function Bm(t){return $m(t)?366:365}function R_(t,e){const n=v5e(e-1,12)+1,r=t+(e-n)/12;return n===2?$m(r)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][n-1]}function dD(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 O_(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 hD(t){return t>99?t:t>60?1900+t:2e3+t}function ZQ(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 N_(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 eG(t){const e=Number(t);if(typeof t=="boolean"||t===""||Number.isNaN(e))throw new ao(`Invalid unit value ${t}`);return e}function D_(t,e){const n={};for(const r in t)if(g2(t,r)){const i=t[r];if(i==null)continue;n[e(r)]=eG(i)}return n}function km(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}${Hn(n,2)}:${Hn(r,2)}`;case"narrow":return`${i}${n}${r>0?`:${r}`:""}`;case"techie":return`${i}${Hn(n,2)}${Hn(r,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function F_(t){return A5e(t,["hour","minute","second","millisecond"])}const tG=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/,S5e=["January","February","March","April","May","June","July","August","September","October","November","December"],nG=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],_5e=["J","F","M","A","M","J","J","A","S","O","N","D"];function rG(t){switch(t){case"narrow":return[..._5e];case"short":return[...nG];case"long":return[...S5e];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 iG=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],sG=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],C5e=["M","T","W","T","F","S","S"];function oG(t){switch(t){case"narrow":return[...C5e];case"short":return[...sG];case"long":return[...iG];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}const uG=["AM","PM"],T5e=["Before Christ","Anno Domini"],b5e=["BC","AD"],R5e=["B","A"];function aG(t){switch(t){case"narrow":return[...R5e];case"short":return[...b5e];case"long":return[...T5e];default:return null}}function O5e(t){return uG[t.hour<12?0:1]}function N5e(t,e){return oG(e)[t.weekday-1]}function D5e(t,e){return rG(e)[t.month-1]}function F5e(t,e){return aG(e)[t.year<0?0:1]}function w5e(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 lG(t,e){let n="";for(const r of t)r.literal?n+=r.val:n+=e(r.val);return n}const L5e={D:cD,DD:wQ,DDD:LQ,DDDD:IQ,t:$Q,tt:BQ,ttt:kQ,tttt:PQ,T:MQ,TT:jQ,TTT:UQ,TTTT:qQ,f:HQ,ff:QQ,fff:WQ,ffff:YQ,F:zQ,FF:GQ,FFF:VQ,FFFF:KQ};class rs{static create(e,n={}){return new rs(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 L5e[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 Hn(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?O5e(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),a=(h,p)=>r?D5e(e,h):s(p?{month:h}:{month:h,day:"numeric"},"month"),l=(h,p)=>r?N5e(e,h):s(p?{weekday:h}:{weekday:h,month:"long",day:"numeric"},"weekday"),c=h=>{const p=rs.macroTokenToFormatOpts(h);return p?this.formatWithSystemDefault(e,p):h},f=h=>r?F5e(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 lG(rs.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=rs.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 lG(s,i(u))}}class Qo{constructor(e,n){this.reason=e,this.explanation=n}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}}let m2=class{get type(){throw new k0}get name(){throw new k0}get ianaName(){return this.name}get isUniversal(){throw new k0}offsetName(e,n){throw new k0}formatOffset(e,n){throw new k0}offset(e){throw new k0}equals(e){throw new k0}get isValid(){throw new k0}},pD=null;class w_ extends m2{static get instance(){return pD===null&&(pD=new w_),pD}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return ZQ(e,n,r)}formatOffset(e,n){return km(this.offset(e),n)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}}let L_={};function I5e(t){return L_[t]||(L_[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"})),L_[t]}const $5e={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function B5e(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 k5e(t,e){const n=t.formatToParts(e),r=[];for(let i=0;i<n.length;i++){const{type:s,value:o}=n[i],u=$5e[s];s==="era"?r[u]=o:vt(u)||(r[u]=parseInt(o,10))}return r}let I_={};class Yu extends m2{static create(e){return I_[e]||(I_[e]=new Yu(e)),I_[e]}static resetCache(){I_={},L_={}}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=Yu.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:n,locale:r}){return ZQ(e,n,r,this.name)}formatOffset(e,n){return km(this.offset(e),n)}offset(e){const n=new Date(e);if(isNaN(n))return NaN;const r=I5e(this.name);let[i,s,o,u,a,l,c]=r.formatToParts?k5e(r,n):B5e(r,n);u==="BC"&&(i=-Math.abs(i)+1);const x=dD({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 gD=null;class Jr extends m2{static get utcInstance(){return gD===null&&(gD=new Jr(0)),gD}static instance(e){return e===0?Jr.utcInstance:new Jr(e)}static parseSpecifier(e){if(e){const n=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(n)return new Jr(N_(n[1],n[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${km(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${km(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,n){return km(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 cG extends m2{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 M0(t,e){if(vt(t)||t===null)return e;if(t instanceof m2)return t;if(m5e(t)){const n=t.toLowerCase();return n==="local"||n==="system"?e:n==="utc"||n==="gmt"?Jr.utcInstance:Jr.parseSpecifier(n)||Yu.create(t)}else return hx(t)?Jr.instance(t):typeof t=="object"&&t.offset&&typeof t.offset=="number"?t:new cG(t)}let fG=()=>Date.now(),xG="system",dG=null,hG=null,pG=null,gG;class zn{static get now(){return fG}static set now(e){fG=e}static set defaultZone(e){xG=e}static get defaultZone(){return M0(xG,w_.instance)}static get defaultLocale(){return dG}static set defaultLocale(e){dG=e}static get defaultNumberingSystem(){return hG}static set defaultNumberingSystem(e){hG=e}static get defaultOutputCalendar(){return pG}static set defaultOutputCalendar(e){pG=e}static get throwOnInvalid(){return gG}static set throwOnInvalid(e){gG=e}static resetCaches(){pn.resetCache(),Yu.resetCache()}}let mG={};function P5e(t,e={}){const n=JSON.stringify([t,e]);let r=mG[n];return r||(r=new Intl.ListFormat(t,e),mG[n]=r),r}let mD={};function yD(t,e={}){const n=JSON.stringify([t,e]);let r=mD[n];return r||(r=new Intl.DateTimeFormat(t,e),mD[n]=r),r}let ED={};function M5e(t,e={}){const n=JSON.stringify([t,e]);let r=ED[n];return r||(r=new Intl.NumberFormat(t,e),ED[n]=r),r}let AD={};function j5e(t,e={}){const{base:n,...r}=e,i=JSON.stringify([t,r]);let s=AD[i];return s||(s=new Intl.RelativeTimeFormat(t,e),AD[i]=s),s}let Pm=null;function U5e(){return Pm||(Pm=new Intl.DateTimeFormat().resolvedOptions().locale,Pm)}function q5e(t){const e=t.indexOf("-u-");if(e===-1)return[t];{let n;const r=t.substring(0,e);try{n=yD(t).resolvedOptions()}catch{n=yD(r).resolvedOptions()}const{numberingSystem:i,calendar:s}=n;return[r,i,s]}}function H5e(t,e,n){return(n||e)&&(t+="-u",n&&(t+=`-ca-${n}`),e&&(t+=`-nu-${e}`)),t}function z5e(t){const e=[];for(let n=1;n<=12;n++){const r=st.utc(2016,n,1);e.push(t(r))}return e}function Q5e(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 $_(t,e,n,r,i){const s=t.listingMode(n);return s==="error"?null:s==="en"?r(e):i(e)}function G5e(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 W5e{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=M5e(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):xD(e,3);return Hn(n,this.padTo)}}}class V5e{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&&Yu.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=yD(n,s)}format(){return this.dtf.format(this.dt.toJSDate())}formatToParts(){return this.dtf.formatToParts(this.dt.toJSDate())}resolvedOptions(){return this.dtf.resolvedOptions()}}class Y5e{constructor(e,n,r){this.opts={style:"long",...r},!n&&XQ()&&(this.rtf=j5e(e,r))}format(e,n){return this.rtf?this.rtf.format(e,n):w5e(n,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,n){return this.rtf?this.rtf.formatToParts(e,n):[]}}class pn{static fromOpts(e){return pn.create(e.locale,e.numberingSystem,e.outputCalendar,e.defaultToEN)}static create(e,n,r,i=!1){const s=e||zn.defaultLocale,o=s||(i?"en-US":U5e()),u=n||zn.defaultNumberingSystem,a=r||zn.defaultOutputCalendar;return new pn(o,u,a,s)}static resetCache(){Pm=null,mD={},ED={},AD={}}static fromObject({locale:e,numberingSystem:n,outputCalendar:r}={}){return pn.create(e,n,r)}constructor(e,n,r,i){const[s,o,u]=q5e(e);this.locale=s,this.numberingSystem=n||o||null,this.outputCalendar=r||u||null,this.intl=H5e(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=G5e(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:pn.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 $_(this,e,r,rG,()=>{const i=n?{month:e,day:"numeric"}:{month:e},s=n?"format":"standalone";return this.monthsCache[s][e]||(this.monthsCache[s][e]=z5e(o=>this.extract(o,i,"month"))),this.monthsCache[s][e]})}weekdays(e,n=!1,r=!0){return $_(this,e,r,oG,()=>{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]=Q5e(o=>this.extract(o,i,"weekday"))),this.weekdaysCache[s][e]})}meridiems(e=!0){return $_(this,void 0,e,()=>uG,()=>{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 $_(this,e,n,aG,()=>{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 W5e(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,n={}){return new V5e(e,this.intl,n)}relFormatter(e={}){return new Y5e(this.intl,this.isEnglish(),e)}listFormatter(e={}){return P5e(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 y2(...t){const e=t.reduce((n,r)=>n+r.source,"");return RegExp(`^${e}$`)}function E2(...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 A2(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 yG(...t){return(e,n)=>{const r={};let i;for(i=0;i<t.length;i++)r[t[i]]=P0(e[n+i]);return[r,null,n+i]}}const EG=/(?:(Z)|([+-]\d\d)(?::?(\d\d))?)/,K5e=`(?:${EG.source}?(?:\\[(${tG.source})\\])?)?`,vD=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,AG=RegExp(`${vD.source}${K5e}`),SD=RegExp(`(?:T${AG.source})?`),X5e=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,J5e=/(\d{4})-?W(\d\d)(?:-?(\d))?/,Z5e=/(\d{4})-?(\d{3})/,eCe=yG("weekYear","weekNumber","weekDay"),tCe=yG("year","ordinal"),nCe=/(\d{4})-(\d\d)-(\d\d)/,vG=RegExp(`${vD.source} ?(?:${EG.source}|(${tG.source}))?`),rCe=RegExp(`(?: ${vG.source})?`);function v2(t,e,n){const r=t[e];return vt(r)?n:P0(r)}function iCe(t,e){return[{year:v2(t,e),month:v2(t,e+1,1),day:v2(t,e+2,1)},null,e+3]}function S2(t,e){return[{hours:v2(t,e,0),minutes:v2(t,e+1,0),seconds:v2(t,e+2,0),milliseconds:fD(t[e+3])},null,e+4]}function Mm(t,e){const n=!t[e]&&!t[e+1],r=N_(t[e+1],t[e+2]),i=n?null:Jr.instance(r);return[{},i,e+3]}function jm(t,e){const n=t[e]?Yu.create(t[e]):null;return[{},n,e+1]}const sCe=RegExp(`^T?${vD.source}$`),oCe=/^-?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 uCe(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(px(n)),months:x(px(r)),weeks:x(px(i)),days:x(px(s)),hours:x(px(o)),minutes:x(px(u)),seconds:x(px(a),a==="-0"),milliseconds:x(fD(l),f)}]}const aCe={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 _D(t,e,n,r,i,s,o){const u={year:e.length===2?hD(P0(e)):P0(e),month:nG.indexOf(n)+1,day:P0(r),hour:P0(i),minute:P0(s)};return o&&(u.second=P0(o)),t&&(u.weekday=t.length>3?iG.indexOf(t)+1:sG.indexOf(t)+1),u}const lCe=/^(?:(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 cCe(t){const[,e,n,r,i,s,o,u,a,l,c,f]=t,x=_D(e,i,r,n,s,o,u);let h;return a?h=aCe[a]:l?h=0:h=N_(c,f),[x,new Jr(h)]}function fCe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}const xCe=/^(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$/,dCe=/^(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$/,hCe=/^(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 SG(t){const[,e,n,r,i,s,o,u]=t;return[_D(e,i,r,n,s,o,u),Jr.utcInstance]}function pCe(t){const[,e,n,r,i,s,o,u]=t;return[_D(e,u,n,r,i,s,o),Jr.utcInstance]}const gCe=y2(X5e,SD),mCe=y2(J5e,SD),yCe=y2(Z5e,SD),ECe=y2(AG),_G=E2(iCe,S2,Mm,jm),ACe=E2(eCe,S2,Mm,jm),vCe=E2(tCe,S2,Mm,jm),SCe=E2(S2,Mm,jm);function _Ce(t){return A2(t,[gCe,_G],[mCe,ACe],[yCe,vCe],[ECe,SCe])}function CCe(t){return A2(fCe(t),[lCe,cCe])}function TCe(t){return A2(t,[xCe,SG],[dCe,SG],[hCe,pCe])}function bCe(t){return A2(t,[oCe,uCe])}const RCe=E2(S2);function OCe(t){return A2(t,[sCe,RCe])}const NCe=y2(nCe,rCe),DCe=y2(vG),FCe=E2(S2,Mm,jm);function wCe(t){return A2(t,[NCe,_G],[DCe,FCe])}const LCe="Invalid Duration",CG={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}},ICe={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},...CG},lo=146097/400,_2=146097/4800,$Ce={years:{quarters:4,months:12,weeks:lo/7,days:lo,hours:lo*24,minutes:lo*24*60,seconds:lo*24*60*60,milliseconds:lo*24*60*60*1e3},quarters:{months:3,weeks:lo/28,days:lo/4,hours:lo*24/4,minutes:lo*24*60/4,seconds:lo*24*60*60/4,milliseconds:lo*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},...CG},gx=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],BCe=gx.slice(0).reverse();function mx(t,e,n=!1){const r={values:n?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy};return new St(r)}function kCe(t){return t<0?Math.floor(t):Math.ceil(t)}function TG(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?kCe(o):Math.trunc(o);r[i]+=a,e[n]-=a*s}function PCe(t,e){BCe.reduce((n,r)=>vt(e[r])?n:(n&&TG(t,e,n,e,r),r),null)}class St{constructor(e){const n=e.conversionAccuracy==="longterm"||!1;this.values=e.values,this.loc=e.loc||pn.create(),this.conversionAccuracy=n?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n?$Ce:ICe,this.isLuxonDuration=!0}static fromMillis(e,n){return St.fromObject({milliseconds:e},n)}static fromObject(e,n={}){if(e==null||typeof e!="object")throw new ao(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new St({values:D_(e,St.normalizeUnit),loc:pn.fromObject(n),conversionAccuracy:n.conversionAccuracy})}static fromDurationLike(e){if(hx(e))return St.fromMillis(e);if(St.isDuration(e))return e;if(typeof e=="object")return St.fromObject(e);throw new ao(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,n){const[r]=bCe(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,n){const[r]=OCe(e);return r?St.fromObject(r,n):St.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,n=null){if(!e)throw new ao("need to specify a reason the Duration is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new h5e(r);return new St({invalid:r})}static normalizeUnit(e){const n={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!n)throw new FQ(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?rs.create(this.loc,r).formatDurationFromString(this,e):LCe}toHuman(e={}){const n=gx.map(r=>{const i=this.values[r];return vt(i)?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:r.slice(0,-1)}).format(i)}).filter(r=>r);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=xD(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;const n=this.toMillis();if(n<0||n>=864e5)return null;e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e};const r=this.shiftTo("hours","minutes","seconds","milliseconds");let i=e.format==="basic"?"hhmm":"hh:mm";(!e.suppressSeconds||r.seconds!==0||r.milliseconds!==0)&&(i+=e.format==="basic"?"ss":":ss",(!e.suppressMilliseconds||r.milliseconds!==0)&&(i+=".SSS"));let s=r.toFormat(i);return e.includePrefix&&(s="T"+s),s}toJSON(){return this.toISO()}toString(){return this.toISO()}toMillis(){return this.as("milliseconds")}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e),r={};for(const i of gx)(g2(n.values,i)||g2(this.values,i))&&(r[i]=n.get(i)+this.get(i));return mx(this,{values:r},!0)}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return this.plus(n.negate())}mapUnits(e){if(!this.isValid)return this;const n={};for(const r of Object.keys(this.values))n[r]=eG(e(this.values[r],r));return mx(this,{values:n},!0)}get(e){return this[St.normalizeUnit(e)]}set(e){if(!this.isValid)return this;const n={...this.values,...D_(e,St.normalizeUnit)};return mx(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),mx(this,s)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;const e=this.toObject();return PCe(this.matrix,e),mx(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>St.normalizeUnit(o));const n={},r={},i=this.toObject();let s;for(const o of gx)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;hx(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)gx.indexOf(l)>gx.indexOf(o)&&TG(this.matrix,i,l,n,o)}else hx(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 mx(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 mx(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 gx)if(!n(this.values[r],e.values[r]))return!1;return!0}}const Um="Invalid Interval";function MCe(t,e){return!t||!t.isValid?gn.invalid("missing or invalid start"):!e||!e.isValid?gn.invalid("missing or invalid end"):e<t?gn.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 gn{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 ao("need to specify a reason the Interval is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new d5e(r);return new gn({invalid:r})}static fromDateTimes(e,n){const r=Qm(e),i=Qm(n),s=MCe(r,i);return s??new gn({start:r,end:i})}static after(e,n){const r=St.fromDurationLike(n),i=Qm(e);return gn.fromDateTimes(i,i.plus(r))}static before(e,n){const r=St.fromDurationLike(n),i=Qm(e);return gn.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 gn.fromDateTimes(s,u);if(o){const l=St.fromISO(i,n);if(l.isValid)return gn.after(s,l)}else if(a){const l=St.fromISO(r,n);if(l.isValid)return gn.before(u,l)}}return gn.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?gn.fromDateTimes(e||this.s,n||this.e):this}splitAt(...e){if(!this.isValid)return[];const n=e.map(Qm).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(gn.fromDateTimes(i,u)),i=u,s+=1}return r}splitBy(e){const n=St.fromDurationLike(e);if(!this.isValid||!n.isValid||n.as("milliseconds")===0)return[];let{s:r}=this,i=1,s;const o=[];for(;r<this.e;){const u=this.start.plus(n.mapUnits(a=>a*i));s=+u>+this.e?this.e:u,o.push(gn.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:gn.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 gn.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(gn.fromDateTimes(n,a.time)),n=null);return gn.merge(i)}difference(...e){return gn.xor([this].concat(e)).map(n=>this.intersection(n)).filter(n=>n&&!n.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} – ${this.e.toISO()})`:Um}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:Um}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:Um}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:Um}toFormat(e,{separator:n=" – "}={}){return this.isValid?`${this.s.toFormat(e)}${n}${this.e.toFormat(e)}`:Um}toDuration(e,n){return this.isValid?this.e.diff(this.s,e,n):St.invalid(this.invalidReason)}mapEndpoints(e){return gn.fromDateTimes(e(this.s),e(this.e))}}let qm=class{static hasDST(e=zn.defaultZone){const n=st.now().setZone(e).set({month:12});return!e.isUniversal&&n.offset!==n.set({month:6}).offset}static isValidIANAZone(e){return Yu.isValidZone(e)}static normalizeZone(e){return M0(e,zn.defaultZone)}static months(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||pn.create(n,r,s)).months(e)}static monthsFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||pn.create(n,r,s)).months(e,!0)}static weekdays(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||pn.create(n,r,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:n=null,numberingSystem:r=null,locObj:i=null}={}){return(i||pn.create(n,r,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return pn.create(e).meridiems()}static eras(e="short",{locale:n=null}={}){return pn.create(n,null,"gregory").eras(e)}static features(){return{relative:XQ()}}};function bG(t,e){const n=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),r=n(e)-n(t);return Math.floor(St.fromMillis(r).as("days"))}function jCe(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=bG(u,a);return(l-l%7)/7}],["days",bG]],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 UCe(t,e,n,r){let[i,s,o,u]=jCe(t,e,n);const a=e-i,l=n.filter(f=>["hours","minutes","seconds","milliseconds"].indexOf(f)>=0);l.length===0&&(o<e&&(o=i.plus({[u]:1})),o!==i&&(s[u]=(s[u]||0)+a/(o-i)));const c=St.fromObject(s,r);return l.length>0?St.fromMillis(a,r).shiftTo(...l).plus(c):c}const CD={arab:"[٠-٩]",arabext:"[۰-۹]",bali:"[᭐-᭙]",beng:"[০-৯]",deva:"[०-९]",fullwide:"[0-9]",gujr:"[૦-૯]",hanidec:"[〇|一|二|三|四|五|六|七|八|九]",khmr:"[០-៩]",knda:"[೦-೯]",laoo:"[໐-໙]",limb:"[᥆-᥏]",mlym:"[൦-൯]",mong:"[᠐-᠙]",mymr:"[၀-၉]",orya:"[୦-୯]",tamldec:"[௦-௯]",telu:"[౦-౯]",thai:"[๐-๙]",tibt:"[༠-༩]",latn:"\\d"},RG={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]},qCe=CD.hanidec.replace(/[\[|\]]/g,"").split("");function HCe(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(CD.hanidec)!==-1)e+=qCe.indexOf(t[n]);else for(const i in RG){const[s,o]=RG[i];r>=s&&r<=o&&(e+=r-s)}}return parseInt(e,10)}else return e}function Go({numberingSystem:t},e=""){return new RegExp(`${CD[t||"latn"]}${e}`)}const zCe="missing Intl.DateTimeFormat.formatToParts support";function wt(t,e=n=>n){return{regex:t,deser:([n])=>e(HCe(n))}}const OG="[  ]",NG=new RegExp(OG,"g");function QCe(t){return t.replace(/\./g,"\\.?").replace(NG,OG)}function DG(t){return t.replace(/\./g,"").replace(NG," ").toLowerCase()}function Wo(t,e){return t===null?null:{regex:RegExp(t.map(QCe).join("|")),deser:([n])=>t.findIndex(r=>DG(n)===DG(r))+e}}function FG(t,e){return{regex:t,deser:([,n,r])=>N_(n,r),groups:e}}function TD(t){return{regex:t,deser:([e])=>e}}function GCe(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function WCe(t,e){const n=Go(e),r=Go(e,"{2}"),i=Go(e,"{3}"),s=Go(e,"{4}"),o=Go(e,"{6}"),u=Go(e,"{1,2}"),a=Go(e,"{1,3}"),l=Go(e,"{1,6}"),c=Go(e,"{1,9}"),f=Go(e,"{2,4}"),x=Go(e,"{4,6}"),h=g=>({regex:RegExp(GCe(g.val)),deser:([y])=>y,literal:!0}),m=(g=>{if(t.literal)return h(g);switch(g.val){case"G":return Wo(e.eras("short",!1),0);case"GG":return Wo(e.eras("long",!1),0);case"y":return wt(l);case"yy":return wt(f,hD);case"yyyy":return wt(s);case"yyyyy":return wt(x);case"yyyyyy":return wt(o);case"M":return wt(u);case"MM":return wt(r);case"MMM":return Wo(e.months("short",!0,!1),1);case"MMMM":return Wo(e.months("long",!0,!1),1);case"L":return wt(u);case"LL":return wt(r);case"LLL":return Wo(e.months("short",!1,!1),1);case"LLLL":return Wo(e.months("long",!1,!1),1);case"d":return wt(u);case"dd":return wt(r);case"o":return wt(a);case"ooo":return wt(i);case"HH":return wt(r);case"H":return wt(u);case"hh":return wt(r);case"h":return wt(u);case"mm":return wt(r);case"m":return wt(u);case"q":return wt(u);case"qq":return wt(r);case"s":return wt(u);case"ss":return wt(r);case"S":return wt(a);case"SSS":return wt(i);case"u":return TD(c);case"uu":return TD(u);case"uuu":return wt(n);case"a":return Wo(e.meridiems(),0);case"kkkk":return wt(s);case"kk":return wt(f,hD);case"W":return wt(u);case"WW":return wt(r);case"E":case"c":return wt(n);case"EEE":return Wo(e.weekdays("short",!1,!1),1);case"EEEE":return Wo(e.weekdays("long",!1,!1),1);case"ccc":return Wo(e.weekdays("short",!0,!1),1);case"cccc":return Wo(e.weekdays("long",!0,!1),1);case"Z":case"ZZ":return FG(new RegExp(`([+-]${u.source})(?::(${r.source}))?`),2);case"ZZZ":return FG(new RegExp(`([+-]${u.source})(${r.source})?`),2);case"z":return TD(/[a-z_+-/]{1,256}?/i);default:return h(g)}})(t)||{invalidReason:zCe};return m.token=t,m}const VCe={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 YCe(t,e,n){const{type:r,value:i}=t;if(r==="literal")return{literal:!0,val:i};const s=n[r];let o=VCe[r];if(typeof o=="object"&&(o=o[s]),o)return{literal:!1,val:o}}function KCe(t){return[`^${t.map(n=>n.regex).reduce((n,r)=>`${n}(${r.source})`,"")}$`,t]}function XCe(t,e,n){const r=t.match(e);if(r){const i={};let s=1;for(const o in n)if(g2(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 JCe(t){const e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}};let n=null,r;return vt(t.z)||(n=Yu.create(t.z)),vt(t.Z)||(n||(n=new Jr(t.Z)),r=t.Z),vt(t.q)||(t.M=(t.q-1)*3+1),vt(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),vt(t.u)||(t.S=fD(t.u)),[Object.keys(t).reduce((s,o)=>{const u=e(o);return u&&(s[u]=t[o]),s},{}),n,r]}let bD=null;function ZCe(){return bD||(bD=st.fromMillis(1555555555555)),bD}function eTe(t,e){if(t.literal)return t;const n=rs.macroTokenToFormatOpts(t.val);if(!n)return t;const s=rs.create(e,n).formatDateTimeParts(ZCe()).map(o=>YCe(o,e,n));return s.includes(void 0)?t:s}function tTe(t,e){return Array.prototype.concat(...t.map(n=>eTe(n,e)))}function wG(t,e,n){const r=tTe(rs.parseFormat(n),t),i=r.map(o=>WCe(o,t)),s=i.find(o=>o.invalidReason);if(s)return{input:e,tokens:r,invalidReason:s.invalidReason};{const[o,u]=KCe(i),a=RegExp(o,"i"),[l,c]=XCe(e,a,u),[f,x,h]=c?JCe(c):[null,null,void 0];if(g2(c,"a")&&g2(c,"H"))throw new Im("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 nTe(t,e,n){const{result:r,zone:i,specificOffset:s,invalidReason:o}=wG(t,e,n);return[r,i,s,o]}const LG=[0,31,59,90,120,151,181,212,243,273,304,334],IG=[0,31,60,91,121,152,182,213,244,274,305,335];function co(t,e){return new Qo("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function $G(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 BG(t,e,n){return n+($m(t)?IG:LG)[e-1]}function kG(t,e){const n=$m(t)?IG:LG,r=n.findIndex(s=>s<e),i=e-n[r];return{month:r+1,day:i}}function RD(t){const{year:e,month:n,day:r}=t,i=BG(e,n,r),s=$G(e,n,r);let o=Math.floor((i-s+10)/7),u;return o<1?(u=e-1,o=O_(u)):o>O_(e)?(u=e+1,o=1):u=e,{weekYear:u,weekNumber:o,weekday:s,...F_(t)}}function PG(t){const{weekYear:e,weekNumber:n,weekday:r}=t,i=$G(e,1,4),s=Bm(e);let o=n*7+r-i-3,u;o<1?(u=e-1,o+=Bm(u)):o>s?(u=e+1,o-=Bm(e)):u=e;const{month:a,day:l}=kG(u,o);return{year:u,month:a,day:l,...F_(t)}}function OD(t){const{year:e,month:n,day:r}=t,i=BG(e,n,r);return{year:e,ordinal:i,...F_(t)}}function MG(t){const{year:e,ordinal:n}=t,{month:r,day:i}=kG(e,n);return{year:e,month:r,day:i,...F_(t)}}function rTe(t){const e=b_(t.weekYear),n=hl(t.weekNumber,1,O_(t.weekYear)),r=hl(t.weekday,1,7);return e?n?r?!1:co("weekday",t.weekday):co("week",t.week):co("weekYear",t.weekYear)}function iTe(t){const e=b_(t.year),n=hl(t.ordinal,1,Bm(t.year));return e?n?!1:co("ordinal",t.ordinal):co("year",t.year)}function jG(t){const e=b_(t.year),n=hl(t.month,1,12),r=hl(t.day,1,R_(t.year,t.month));return e?n?r?!1:co("day",t.day):co("month",t.month):co("year",t.year)}function UG(t){const{hour:e,minute:n,second:r,millisecond:i}=t,s=hl(e,0,23)||e===24&&n===0&&r===0&&i===0,o=hl(n,0,59),u=hl(r,0,59),a=hl(i,0,999);return s?o?u?a?!1:co("millisecond",i):co("second",r):co("minute",n):co("hour",e)}const ND="Invalid DateTime",qG=864e13;function B_(t){return new Qo("unsupported zone",`the zone "${t.name}" is not supported`)}function DD(t){return t.weekData===null&&(t.weekData=RD(t.c)),t.weekData}function Hm(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 HG(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 zG(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 k_(t,e,n){return HG(dD(t),e,n)}function QG(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,R_(r,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=St.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),u=dD(s);let[a,l]=HG(u,n,t.zone);return o!==0&&(a+=o,l=t.zone.offset(a)),{ts:a,o:l}}function zm(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 Qo("unparsable",`the input "${i}" can't be parsed as ${r}`))}function P_(t,e,n=!0){return t.isValid?rs.create(pn.create("en-US"),{allowZ:n,forceSimple:!0}).formatDateTimeFromString(t,e):null}function FD(t,e){const n=t.c.year>9999||t.c.year<0;let r="";return n&&t.c.year>=0&&(r+="+"),r+=Hn(t.c.year,n?6:4),e?(r+="-",r+=Hn(t.c.month),r+="-",r+=Hn(t.c.day)):(r+=Hn(t.c.month),r+=Hn(t.c.day)),r}function GG(t,e,n,r,i,s){let o=Hn(t.c.hour);return e?(o+=":",o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=":")):o+=Hn(t.c.minute),(t.c.second!==0||!n)&&(o+=Hn(t.c.second),(t.c.millisecond!==0||!r)&&(o+=".",o+=Hn(t.c.millisecond,3))),i&&(t.isOffsetFixed&&t.offset===0&&!s?o+="Z":t.o<0?(o+="-",o+=Hn(Math.trunc(-t.o/60)),o+=":",o+=Hn(Math.trunc(-t.o%60))):(o+="+",o+=Hn(Math.trunc(t.o/60)),o+=":",o+=Hn(Math.trunc(t.o%60)))),s&&(o+="["+t.zone.ianaName+"]"),o}const WG={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},sTe={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},oTe={ordinal:1,hour:0,minute:0,second:0,millisecond:0},VG=["year","month","day","hour","minute","second","millisecond"],uTe=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],aTe=["year","ordinal","hour","minute","second","millisecond"];function YG(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 FQ(t);return e}function KG(t,e){const n=M0(e.zone,zn.defaultZone),r=pn.fromObject(e),i=zn.now();let s,o;if(vt(t.year))s=i;else{for(const l of VG)vt(t[l])&&(t[l]=WG[l]);const u=jG(t)||UG(t);if(u)return st.invalid(u);const a=n.offset(i);[s,o]=k_(t,a,n)}return new st({ts:s,zone:n,loc:r,o})}function XG(t,e,n){const r=vt(n.round)?!0:n.round,i=(o,u)=>(o=xD(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 JG(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||zn.defaultZone;let r=e.invalid||(Number.isNaN(e.ts)?new Qo("invalid input"):null)||(n.isValid?null:B_(n));this.ts=vt(e.ts)?zn.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=zG(this.ts,u),r=Number.isNaN(i.year)?new Qo("invalid input"):null,i=r?null:i,s=r?null:u}this._zone=n,this.loc=e.loc||pn.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]=JG(arguments),[r,i,s,o,u,a,l]=n;return KG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static utc(){const[e,n]=JG(arguments),[r,i,s,o,u,a,l]=n;return e.zone=Jr.utcInstance,KG({year:r,month:i,day:s,hour:o,minute:u,second:a,millisecond:l},e)}static fromJSDate(e,n={}){const r=y5e(e)?e.valueOf():NaN;if(Number.isNaN(r))return st.invalid("invalid input");const i=M0(n.zone,zn.defaultZone);return i.isValid?new st({ts:r,zone:i,loc:pn.fromObject(n)}):st.invalid(B_(i))}static fromMillis(e,n={}){if(hx(e))return e<-qG||e>qG?st.invalid("Timestamp out of range"):new st({ts:e,zone:M0(n.zone,zn.defaultZone),loc:pn.fromObject(n)});throw new ao(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,n={}){if(hx(e))return new st({ts:e*1e3,zone:M0(n.zone,zn.defaultZone),loc:pn.fromObject(n)});throw new ao("fromSeconds requires a numerical input")}static fromObject(e,n={}){e=e||{};const r=M0(n.zone,zn.defaultZone);if(!r.isValid)return st.invalid(B_(r));const i=zn.now(),s=vt(n.specificOffset)?r.offset(i):n.specificOffset,o=D_(e,YG),u=!vt(o.ordinal),a=!vt(o.year),l=!vt(o.month)||!vt(o.day),c=a||l,f=o.weekYear||o.weekNumber,x=pn.fromObject(n);if((c||u)&&f)throw new Im("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(l&&u)throw new Im("Can't mix ordinal dates with month/day");const h=f||o.weekday&&!c;let p,m,g=zG(i,s);h?(p=uTe,m=sTe,g=RD(g)):u?(p=aTe,m=oTe,g=OD(g)):(p=VG,m=WG);let y=!1;for(const T of p){const O=o[T];vt(O)?y?o[T]=m[T]:o[T]=g[T]:y=!0}const E=h?rTe(o):u?iTe(o):jG(o),A=E||UG(o);if(A)return st.invalid(A);const v=h?PG(o):u?MG(o):o,[_,S]=k_(v,s,r),C=new st({ts:_,zone:r,o:S,loc:x});return o.weekday&&c&&e.weekday!==C.weekday?st.invalid("mismatched weekday",`you can't specify both a weekday of ${o.weekday} and a date of ${C.toISO()}`):C}static fromISO(e,n={}){const[r,i]=_Ce(e);return zm(r,i,n,"ISO 8601",e)}static fromRFC2822(e,n={}){const[r,i]=CCe(e);return zm(r,i,n,"RFC 2822",e)}static fromHTTP(e,n={}){const[r,i]=TCe(e);return zm(r,i,n,"HTTP",n)}static fromFormat(e,n,r={}){if(vt(e)||vt(n))throw new ao("fromFormat requires an input string and a format");const{locale:i=null,numberingSystem:s=null}=r,o=pn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[u,a,l,c]=nTe(o,e,n);return c?st.invalid(c):zm(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]=wCe(e);return zm(r,i,n,"SQL",e)}static invalid(e,n=null){if(!e)throw new ao("need to specify a reason the DateTime is invalid");const r=e instanceof Qo?e:new Qo(e,n);if(zn.throwOnInvalid)throw new x5e(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?DD(this).weekYear:NaN}get weekNumber(){return this.isValid?DD(this).weekNumber:NaN}get weekday(){return this.isValid?DD(this).weekday:NaN}get ordinal(){return this.isValid?OD(this.c).ordinal:NaN}get monthShort(){return this.isValid?qm.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?qm.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?qm.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?qm.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 $m(this.year)}get daysInMonth(){return R_(this.year,this.month)}get daysInYear(){return this.isValid?Bm(this.year):NaN}get weeksInWeekYear(){return this.isValid?O_(this.weekYear):NaN}resolvedLocaleOptions(e={}){const{locale:n,numberingSystem:r,calendar:i}=rs.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:n,numberingSystem:r,outputCalendar:i}}toUTC(e=0,n={}){return this.setZone(Jr.instance(e),n)}toLocal(){return this.setZone(zn.defaultZone)}setZone(e,{keepLocalTime:n=!1,keepCalendarTime:r=!1}={}){if(e=M0(e,zn.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]=k_(o,s,e)}return Hm(this,{ts:i,zone:e})}else return st.invalid(B_(e))}reconfigure({locale:e,numberingSystem:n,outputCalendar:r}={}){const i=this.loc.clone({locale:e,numberingSystem:n,outputCalendar:r});return Hm(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;const n=D_(e,YG),r=!vt(n.weekYear)||!vt(n.weekNumber)||!vt(n.weekday),i=!vt(n.ordinal),s=!vt(n.year),o=!vt(n.month)||!vt(n.day),u=s||o,a=n.weekYear||n.weekNumber;if((u||i)&&a)throw new Im("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(o&&i)throw new Im("Can't mix ordinal dates with month/day");let l;r?l=PG({...RD(this.c),...n}):vt(n.ordinal)?(l={...this.toObject(),...n},vt(n.day)&&(l.day=Math.min(R_(l.year,l.month),l.day))):l=MG({...OD(this.c),...n});const[c,f]=k_(l,this.o,this.zone);return Hm(this,{ts:c,o:f})}plus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e);return Hm(this,QG(this,n))}minus(e){if(!this.isValid)return this;const n=St.fromDurationLike(e).negate();return Hm(this,QG(this,n))}startOf(e){if(!this.isValid)return this;const n={},r=St.normalizeUnit(e);switch(r){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(r==="weeks"&&(n.weekday=1),r==="quarters"){const i=Math.ceil(this.month/3);n.month=(i-1)*3+1}return this.set(n)}endOf(e){return this.isValid?this.plus({[e]:1}).startOf(e).minus(1):this}toFormat(e,n={}){return this.isValid?rs.create(this.loc.redefaultToEN(n)).formatDateTimeFromString(this,e):ND}toLocaleString(e=cD,n={}){return this.isValid?rs.create(this.loc.clone(n),e).formatDateTime(this):ND}toLocaleParts(e={}){return this.isValid?rs.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=FD(this,o);return u+="T",u+=GG(this,o,n,r,i,s),u}toISODate({format:e="extended"}={}){return this.isValid?FD(this,e==="extended"):null}toISOWeekDate(){return P_(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":"")+GG(this,o==="extended",n,e,r,s):null}toRFC2822(){return P_(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return P_(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?FD(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")),P_(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():ND}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};const n={...this.c};return e.includeConfig&&(n.outputCalendar=this.outputCalendar,n.numberingSystem=this.loc.numberingSystem,n.locale=this.loc.locale),n}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,n="milliseconds",r={}){if(!this.isValid||!e.isValid)return St.invalid("created by diffing an invalid DateTime");const i={locale:this.locale,numberingSystem:this.numberingSystem,...r},s=E5e(n).map(St.normalizeUnit),o=e.valueOf()>this.valueOf(),u=o?this:e,a=o?e:this,l=UCe(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?gn.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),XG(n,this.plus(r),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?XG(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 ao("min requires all arguments be DateTimes");return JQ(e,n=>n.valueOf(),Math.min)}static max(...e){if(!e.every(st.isDateTime))throw new ao("max requires all arguments be DateTimes");return JQ(e,n=>n.valueOf(),Math.max)}static fromFormatExplain(e,n,r={}){const{locale:i=null,numberingSystem:s=null}=r,o=pn.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return wG(o,e,n)}static fromStringExplain(e,n,r={}){return st.fromFormatExplain(e,n,r)}static get DATE_SHORT(){return cD}static get DATE_MED(){return wQ}static get DATE_MED_WITH_WEEKDAY(){return p5e}static get DATE_FULL(){return LQ}static get DATE_HUGE(){return IQ}static get TIME_SIMPLE(){return $Q}static get TIME_WITH_SECONDS(){return BQ}static get TIME_WITH_SHORT_OFFSET(){return kQ}static get TIME_WITH_LONG_OFFSET(){return PQ}static get TIME_24_SIMPLE(){return MQ}static get TIME_24_WITH_SECONDS(){return jQ}static get TIME_24_WITH_SHORT_OFFSET(){return UQ}static get TIME_24_WITH_LONG_OFFSET(){return qQ}static get DATETIME_SHORT(){return HQ}static get DATETIME_SHORT_WITH_SECONDS(){return zQ}static get DATETIME_MED(){return QQ}static get DATETIME_MED_WITH_SECONDS(){return GQ}static get DATETIME_MED_WITH_WEEKDAY(){return g5e}static get DATETIME_FULL(){return WQ}static get DATETIME_FULL_WITH_SECONDS(){return VQ}static get DATETIME_HUGE(){return YQ}static get DATETIME_HUGE_WITH_SECONDS(){return KQ}}function Qm(t){if(st.isDateTime(t))return t;if(t&&t.valueOf&&hx(t.valueOf()))return st.fromJSDate(t);if(t&&typeof t=="object")return st.fromObject(t);throw new ao(`Unknown datetime argument: ${t}, of type ${typeof t}`)}const ZG=pP(Object.freeze(Object.defineProperty({__proto__:null,DateTime:st,Duration:St,FixedOffsetZone:Jr,IANAZone:Yu,Info:qm,Interval:gn,InvalidZone:cG,Settings:zn,SystemZone:w_,VERSION:"2.5.2",Zone:m2},Symbol.toStringTag,{value:"Module"})));Object.defineProperty(pr,"__esModule",{value:!0}),pr.LiteralYear=pr.LiteralQuarter=pr.LiteralMonth=pr.LiteralWeek=pr.LiteralDay=pr.LiteralHour=pr.LiteralTimestamp=pr.TimeFormatError=void 0;const j0=ZG,lTe=Z,cTe=F0,eW=x2,wD=dt;class fTe extends Error{}pr.TimeFormatError=fTe;function yx(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 tW="yyyy",nW=`${tW}-LL`,fo=`${nW}-dd`,rW=`${fo} HH`,iW=`${rW}:mm`,LD=`${iW}:ss`;class sW extends wD.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={type:"dialect",function:"timeLiteral",literal:e,literalType: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 ID extends sW{constructor(e,n){super(e,n,"timestamp"),this.elementType="literal:timestamp"}static parse(e){let n;const r=yx(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=j0.DateTime.fromFormat(e,LD);if(s.isValid)return new ID(r,n);if(s=j0.DateTime.fromFormat(e,iW),s.isValid){r.text=r.text+":00",n="minute";const o=s.plus({minute:1}).toFormat(LD);return new $D(r,n,"timestamp",o)}}}pr.LiteralTimestamp=ID;class $D extends sW{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,wD.getMorphicValue)(i,"timestamp"),a=(0,wD.getMorphicValue)(s,"timestamp");if(u&&a)i=u,s=a;else return super.apply(e,n,r)}if((0,lTe.isTimeFieldType)(o.dataType)){const u=o.dataType;return new cTe.Range(new eW.ExprTime(u,i.value),new eW.ExprTime(u,s.value)).apply(e,n,r)}}return super.apply(e,n,r)}}class BD extends $D{constructor(e,n){super(e,"hour","timestamp",n),this.elementType="literal:hour"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,rW);if(i.isValid)return n.text=n.text+":00:00",r=i.plus({hour:1}).toFormat(LD),new BD(n,r)}}pr.LiteralHour=BD;class Gm extends $D{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 kD extends Gm{constructor(e,n){super(e,"day",n),this.elementType="literal:day"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,fo);if(i.isValid)return r=i.plus({day:1}).toFormat(fo),new kD(n,r)}}pr.LiteralDay=kD;class PD extends Gm{constructor(e,n){super(e,"week",n),this.elementType="literal:week"}static parse(e){const n=yx(e,!1);let r=n.text;const i=n.text.slice(0,10),s=j0.DateTime.fromFormat(i,fo);if(s.isValid&&s.weekday===7){const u=s.plus({days:7});return n.text=s.toFormat(fo),r=u.toFormat(fo),new PD(n,r)}}}pr.LiteralWeek=PD;class MD extends Gm{constructor(e,n){super(e,"month",n),this.elementType="literal:month"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,nW);if(i.isValid){const s=i.plus({months:1});return n.text=i.toFormat(fo),r=s.toFormat(fo),new MD(n,r)}}}pr.LiteralMonth=MD;class jD extends Gm{constructor(e,n){super(e,"quarter",n),this.elementType="literal:quarter"}static parse(e){const n=yx(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=j0.DateTime.fromFormat(i[1],"yyyy");s>0&&(o=o.plus({quarters:s}));const u=o.plus({quarter:1});return n.text=o.toFormat(fo),r=u.toFormat(fo),new jD(n,r)}}}pr.LiteralQuarter=jD;class UD extends Gm{constructor(e,n){super(e,"year",n),this.elementType="literal:year"}static parse(e){const n=yx(e,!1);let r=n.text;const i=j0.DateTime.fromFormat(n.text,tW);if(i.isValid){const s=i.plus({year:1});return n.text=i.toFormat(fo),r=s.toFormat(fo),new UD(n,r)}}}pr.LiteralYear=UD;var M_={};Object.defineProperty(M_,"__esModule",{value:!0}),M_.PartialCompare=void 0;const xTe=hr,dTe=dt;class hTe extends dTe.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,xTe.errorFor)("no value for partial compare")}}M_.PartialCompare=hTe;var C2={};Object.defineProperty(C2,"__esModule",{value:!0}),C2.PickWhen=C2.Pick=void 0;const Ku=Z,U0=hr,Vo=cn,pTe=dt,gTe=Ve,oW=ln;function j_(t,e){return t===void 0||t.dataType==="null"||t.dataType==="error"?e:t}class mTe extends pTe.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=["CASE"];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,Ku.maxExpressionType)(o,(0,Ku.maxExpressionType)(f.expressionType,x.expressionType)),u=(0,Ku.mergeEvalSpaces)(u,f.evalSpace,x.evalSpace),s&&!Vo.FT.typeEq(s,x,!0)){const h=Vo.FT.inspect(x);return this.log(`pick type '${h}', expected '${s.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick when type")}s=j_(s,x),i.push(" WHEN ",...f.value," THEN ",...x.value)}const l=(this.elsePick||r).getExpression(e);if(s=j_(s,l),!Vo.FT.typeEq(s,l,!0)){const c=this.elsePick?"else":"pick default";return this.log(`${c} type '${Vo.FT.inspect(l)}', expected '${s.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick else type")}return{dataType:s.dataType,expressionType:(0,Ku.maxExpressionType)(o,l.expressionType),evalSpace:(0,Ku.mergeEvalSpaces)(u,l.evalSpace),value:(0,oW.compressExpr)([...i," ELSE ",...l.value," END"])}}getExpression(e){if(this.elsePick===void 0)return this.log("pick incomplete, missing 'else'"),(0,U0.errorFor)("no value for partial pick");const n=[];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,U0.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,U0.errorFor)("partial when");n.push({pick:a.pick.getExpression(e),when:a.when.getExpression(e)})}let r;const i=["CASE"];let s="scalar",o="constant";for(const a of n){if(!Vo.FT.typeEq(a.when,Vo.FT.boolT))return this.log(`when expression must be boolean, not '${Vo.FT.inspect(a.when)}`),(0,U0.errorFor)("pick when type");if(r&&!Vo.FT.typeEq(r,a.pick,!0)){const l=Vo.FT.inspect(a.pick);return this.log(`pick type '${l}', expected '${r.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick value type")}r=j_(r,a.pick),s=(0,Ku.maxExpressionType)(s,(0,Ku.maxExpressionType)(a.pick.expressionType,a.when.expressionType)),o=(0,Ku.mergeEvalSpaces)(o,a.pick.evalSpace,a.when.evalSpace),i.push(" WHEN ",...a.when.value," THEN ",...a.pick.value)}const u=this.elsePick.getExpression(e);return s=(0,Ku.maxExpressionType)(s,u.expressionType),o=(0,Ku.mergeEvalSpaces)(o,u.evalSpace),r=j_(r,u),Vo.FT.typeEq(r,u,!0)?(i.push(" ELSE ",...u.value," END"),{dataType:r.dataType,expressionType:s,value:(0,oW.compressExpr)(i),evalSpace:o}):(this.elsePick.log(`else type '${Vo.FT.inspect(u)}', expected '${r.dataType}'[pick-values-must-match]`),(0,U0.errorFor)("pick value type mismatch"))}}C2.Pick=mTe;class yTe extends gTe.MalloyElement{constructor(e,n){super({when:n}),this.pick=e,this.when=n,this.elementType="pickWhen",this.has({pick:e})}}C2.PickWhen=yTe;var U_={};Object.defineProperty(U_,"__esModule",{value:!0}),U_.Timeframe=void 0;const ETe=Z,ATe=Ve;class vTe extends ATe.MalloyElement{constructor(e){super(),this.elementType="timeframe";let n=e.toLowerCase();n.endsWith("s")&&(n=n.slice(0,-1)),this.text=(0,ETe.isTimestampUnit)(n)?n:"second"}}U_.Timeframe=vTe;var q_={};Object.defineProperty(q_,"__esModule",{value:!0}),q_.TopBy=void 0;const STe=Z,uW=dt,_Te=Ve,CTe=ln;class TTe extends _Te.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,STe.expressionIsAggregate)(n.expressionType)||this.log("top by expression must be an aggregate"),{by:"expression",e:(0,CTe.compressExpr)(n.value)}}return{by:"name",name:this.by}}}q_.TopBy=TTe;var q0={};Object.defineProperty(q0,"__esModule",{value:!0}),q0.ImportStatement=q0.ImportSelect=q0.ImportSourceName=void 0;const qD=Ve;class bTe extends qD.MalloyElement{constructor(e){super(),this.text=e,this.elementType="importSourceName"}}q0.ImportSourceName=bTe;class RTe extends qD.MalloyElement{constructor(e,n){super(),this.text=e,this.from=n,this.elementType="importName",n&&this.has({from:n})}}q0.ImportSelect=RTe;class OTe extends qD.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}'`)}}}q0.ImportStatement=OTe;var Wm={};Object.defineProperty(Wm,"__esModule",{value:!0}),Wm.ExtendBlock=void 0;const NTe=Ve,DTe=On;class FTe extends NTe.ListOf{constructor(){super(...arguments),this.elementType="extendBlock",this.forceQueryClass=void 0,this.queryRefinementStage=DTe.LegalRefinementStage.Single}queryExecute(e){for(const n of this.list)for(const r of n.list)e.inputFS.extendSource(r)}}Wm.ExtendBlock=FTe;var H_={};Object.defineProperty(H_,"__esModule",{value:!0}),H_.Argument=void 0;const wTe=Ve;class LTe extends wTe.MalloyElement{constructor(e){super({...e}),this.elementType="Argument",this.id=e.id,this.value=e.value}}H_.Argument=LTe;var z_={};Object.defineProperty(z_,"__esModule",{value:!0}),z_.HasParameter=void 0;const aW=Z,ITe=Ve;class $Te extends ITe.MalloyElement{constructor(e){super(),this.elementType="hasParameter",this.name=e.name,e.type&&(0,aW.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,aW.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"}}}z_.HasParameter=$Te;var Q_={};Object.defineProperty(Q_,"__esModule",{value:!0}),Q_.AnonymousQuery=void 0;const BTe=Ve,kTe=Vr;class PTe extends BTe.MalloyElement{constructor(e){super(),this.queryExpr=e,this.elementType="anonymousQuery",this.isNoteableObj=!0,this.extendNote=kTe.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)}}Q_.AnonymousQuery=PTe;var H0={};Object.defineProperty(H0,"__esModule",{value:!0}),H0.View=void 0;const MTe=Ve;let jTe=class extends MTe.MalloyElement{pipeline(e,n){return this.pipelineComp(e,n).pipeline}};H0.View=jTe;var G_={};Object.defineProperty(G_,"__esModule",{value:!0}),G_.ViewArrow=void 0;const UTe=Xr,qTe=H0;class HTe extends qTe.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 UTe.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()}}G_.ViewArrow=HTe;var W_={},Vm={};Object.defineProperty(Vm,"__esModule",{value:!0}),Vm.refine=void 0;const HD=bu,zD=R0;function zTe(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,HD.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,HD.isQuerySegment)(o)&&(0,HD.isQuerySegment)(s)){const u=[],a=[],l=new Map(s.queryFields.map(c=>[(0,zD.nameFromDef)(c),c]));for(const c of o.queryFields)l.has((0,zD.nameFromDef)(c))?u.push(c):a.push(c);s.queryFields=[...s.queryFields,...a],u.length>0&&t.log(`overlapping fields in refinement: ${u.map(zD.nameFromDef)}`)}else o.type==="index"&&s.type==="index"&&(s.indexFields=[...o.indexFields,...s.indexFields]);return[s]}Vm.refine=zTe,Object.defineProperty(W_,"__esModule",{value:!0}),W_.ViewRefine=void 0;const QTe=Kr,GTe=Ds,WTe=Vm,VTe=H0;class YTe extends VTe.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,GTe.getFinalStruct)(this.refinement,e.structDef(),i):QTe.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,WTe.refine)(this,n,i[0])}getImplicitName(){return this.base.getImplicitName()}}W_.ViewRefine=YTe;var V_={};Object.defineProperty(V_,"__esModule",{value:!0}),V_.ReferenceView=void 0;const lW=Z,cW=Kr,KTe=Ds,XTe=Yr,JTe=Vm,ZTe=H0;class ebe extends ZTe.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:cW.ErrorFactory.structDef,outputStruct:cW.ErrorFactory.structDef,pipeline:[],error:!0}};if(!r.found)return this.log(`\`${this.reference.refString}\` is not defined`),i();if(!(r.found instanceof XTe.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,lW.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,lW.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,KTe.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,JTe.refine)(this,n,i):n}getImplicitName(){return this.reference.nameString}}V_.ReferenceView=ebe;var Y_={},Ym={},K_={},Km={};Object.defineProperty(Km,"__esModule",{value:!0}),Km.Index=void 0;const tbe=Ve,nbe=On;let rbe=class extends tbe.MalloyElement{constructor(e){super({fields:e}),this.fields=e,this.elementType="index",this.forceQueryClass=nbe.QueryClass.Index,this.queryRefinementStage=void 0}useWeight(e){this.has({weightBy:e}),this.weightBy=e}};Km.Index=rbe;var Xm={};Object.defineProperty(Xm,"__esModule",{value:!0}),Xm.SampleProperty=void 0;const ibe=Ve,fW=On;class sbe extends ibe.MalloyElement{constructor(e){super(),this.sample=e,this.elementType="sampleProperty",this.queryRefinementStage=fW.LegalRefinementStage.Tail,this.forceQueryClass=fW.QueryClass.Index}sampling(){return this.sample}}Xm.SampleProperty=sbe;var X_={};Object.defineProperty(X_,"__esModule",{value:!0}),X_.IndexFieldSpace=void 0;const xW=Z,QD=ht,obe=Yr,ube=Ho,abe=Nm,lbe=Xr;class cbe extends ube.QueryOperationSpace{constructor(){super(...arguments),this.segmentType="index"}pushFields(...e){for(const n of e)n instanceof QD.FieldReference?super.pushFields(n):n instanceof QD.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 obe.SpaceField){const s=this.expandedWild[r];if(s){n.push({type:"fieldref",path:s});continue}if(i instanceof abe.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 lbe.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=QD.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,xW.isAtomicFieldType)(c.dataType)&&(0,xW.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)}}X_.IndexFieldSpace=cbe,Object.defineProperty(K_,"__esModule",{value:!0}),K_.IndexBuilder=void 0;const GD=Z,fbe=Kr,xbe=qo,dbe=Km,hbe=I0,pbe=Xm,gbe=X_;class mbe{constructor(e,n,r,i){this.filters=[],this.type="index",this.resultFS=new gbe.IndexFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e instanceof xbe.Filter?this.filters.push(...e.getFilterList(this.inputFS)):e instanceof hbe.Limit?(this.limit&&this.limit.log("Ignored, too many limit: statements"),this.limit=e):e instanceof dbe.Index?(this.resultFS.pushFields(...e.fields.list),e.weightBy&&(this.indexOn&&this.indexOn.log("Ignoring previous BY"),this.indexOn=e.weightBy)):e instanceof pbe.SampleProperty?this.sample=e.sampling():e.log("Not legal in an index query operation")}finalize(e){if(e&&!(0,GD.isIndexSegment)(e)&&!(0,GD.isPartialSegment)(e))return this.resultFS.log(`Can't refine index with ${e.type}`),fbe.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,GD.isIndexSegment)(e)&&(e!=null&&e.sample)&&(n.sample=e.sample),this.sample&&(n.sample=this.sample),n}}K_.IndexBuilder=mbe;var J_={},Jm={};Object.defineProperty(Jm,"__esModule",{value:!0}),Jm.GroupBy=void 0;const ybe=Ns,dW=On;class Ebe extends ybe.DefinitionList{constructor(){super(...arguments),this.elementType="groupBy",this.queryRefinementStage=dW.LegalRefinementStage.Single,this.forceQueryClass=dW.QueryClass.Grouping}}Jm.GroupBy=Ebe;var Z_={};Object.defineProperty(Z_,"__esModule",{value:!0}),Z_.ProjectFieldSpace=void 0;const WD=Z,Abe=Ho;class vbe extends Abe.QuerySpace{constructor(){super(...arguments),this.segmentType="project"}canContain(e){return e.dataType==="turtle"||(0,WD.expressionIsAggregate)(e.expressionType)?!1:(0,WD.expressionInvolvesAggregate)(e.expressionType)&&(0,WD.expressionIsAnalytic)(e.expressionType)?(this.log("Cannot add aggregate analyics to project"),!1):!0}}Z_.ProjectFieldSpace=vbe;var z0={},Ex={};Object.defineProperty(Ex,"__esModule",{value:!0}),Ex.Ordering=Ex.OrderBy=void 0;const Sbe=Z,hW=$0,pW=Ve,_be=On;class Cbe extends pW.MalloyElement{constructor(e,n){super(),this.field=e,this.dir=n,this.elementType="orderBy",e instanceof hW.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 hW.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,Sbe.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}}Ex.OrderBy=Cbe;class Tbe extends pW.ListOf{constructor(e){super(e),this.elementType="ordering",this.queryRefinementStage=_be.LegalRefinementStage.Tail,this.forceQueryClass=void 0}getOrderBy(e){return this.list.map(n=>n.getOrderBy(e))}}Ex.Ordering=Tbe;var Zm={};Object.defineProperty(Zm,"__esModule",{value:!0}),Zm.Top=void 0;const gW=Z,bbe=ln,Rbe=$0,Obe=Ve,Nbe=On;let Dbe=class extends Obe.MalloyElement{constructor(e,n){super(),this.limit=e,this.by=n,this.elementType="top",this.queryRefinementStage=Nbe.LegalRefinementStage.Tail,this.forceQueryClass=void 0,this.has({by:n})}getBy(e){var n;if(this.by)if(this.by instanceof Rbe.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,gW.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,gW.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:(0,bbe.compressExpr)(r.value)}}}};Zm.Top=Dbe,Object.defineProperty(z0,"__esModule",{value:!0}),z0.ReduceBuilder=z0.QuerySegmentBuilder=void 0;const mW=Z,Fbe=Kr,wbe=qo,Lbe=I0,yW=Ex,EW=Zm,Ibe=Ho,$be=Ns;class AW{constructor(){this.filters=[]}execute(e){if(e.queryExecute){e.queryExecute(this);return}if(e instanceof $be.DefinitionList)this.resultFS.pushFields(...e.list);else if(e instanceof wbe.Filter){const n=e.havingClause?this.resultFS:this.inputFS;this.filters.push(...e.getFilterList(n))}else e instanceof EW.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 Lbe.Limit?this.limit?e.log("Query operation already limited"):this.limit=e.limit:e instanceof yW.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 EW.Top){const i=this.order.getBy(this.inputFS);i&&(n.by=i)}this.order instanceof yW.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=AW;class Bbe extends AW{constructor(e,n,r,i){super(),this.type="grouping",this.resultFS=new Ibe.ReduceFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}finalize(e){let n;if(e)if((0,mW.isReduceSegment)(e)||(0,mW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine reduce with ${e.type}`),Fbe.ErrorFactory.reduceSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}z0.ReduceBuilder=Bbe,Object.defineProperty(J_,"__esModule",{value:!0}),J_.ProjectBuilder=void 0;const vW=Z,kbe=Kr,Pbe=Jm,Mbe=Z_,jbe=z0;class Ube extends jbe.QuerySegmentBuilder{constructor(e,n,r,i){super(),this.type="project",this.resultFS=new Mbe.ProjectFieldSpace(e,n,r,i),this.inputFS=this.resultFS.inputSpace()}execute(e){e.elementType==="having"||e instanceof Pbe.GroupBy?e.log("Illegal statement in a select query operation"):super.execute(e)}finalize(e){let n;if(e)if((0,vW.isProjectSegment)(e)||(0,vW.isPartialSegment)(e))n=e;else return this.resultFS.log(`Can't refine select with ${e.type}`),kbe.ErrorFactory.projectSegment;const r=this.resultFS.getQuerySegment(n);return this.refineFrom(n,r),r}}J_.ProjectBuilder=Ube;var e5={};Object.defineProperty(e5,"__esModule",{value:!0}),e5.PartialBuilder=void 0;const qbe=bu,Hbe=z0;class zbe extends Hbe.ReduceBuilder{finalize(e){const n=super.finalize(e);if((0,qbe.isQuerySegment)(n))return{...n,type:"partial"};throw new Error(`Partial Builder cannot finalize from ${n.type}`)}}e5.PartialBuilder=zbe,Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.QOpDesc=void 0;const Qbe=K_,Gbe=J_,Wbe=z0,Vbe=Ve,Ybe=Ds,Kbe=Xr,Ax=On,Xbe=e5;class Jbe extends Vbe.ListOf{constructor(){super(...arguments),this.elementType="queryOperation"}computeType(){var e;let n,r=!1;this.refineThis&&(this.refineThis.type==="reduce"?n=Ax.QueryClass.Grouping:this.refineThis.type==="project"?n=Ax.QueryClass.Project:this.refineThis.type==="index"&&(n=Ax.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=Ax.QueryClass.Project),this.opClass=n,n}refineFrom(e){this.refineThis=e}getBuilder(e,n,r){switch(this.computeType()){case Ax.QueryClass.Grouping:return new Wbe.ReduceBuilder(e,this.refineThis,n,r);case Ax.QueryClass.Project:return new Gbe.ProjectBuilder(e,this.refineThis,n,r);case Ax.QueryClass.Index:return new Qbe.IndexBuilder(e,this.refineThis,n,r);case void 0:return new Xbe.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 Kbe.StaticSpace((0,Ybe.opOutputStruct)(this,e.structDef(),i))}}}Ym.QOpDesc=Jbe,Object.defineProperty(Y_,"__esModule",{value:!0}),Y_.QOpDescView=void 0;const Zbe=Z,e6e=Xr,SW=Ym,t6e=Ds,VD=On,n6e=H0;class r6e extends n6e.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,Zbe.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 SW.QOpDesc([]),o=new SW.QOpDesc([]);for(const u of this.operation.list)switch(u.queryRefinementStage){case VD.LegalRefinementStage.Head:s.push(u);break;case VD.LegalRefinementStage.Single:u.log("Illegal in refinement of a query with more than one stage");break;case VD.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,t6e.getFinalStruct)(this,e.structDef(),i.slice(-1));i[u]=this.getOp(new e6e.StaticSpace(a),void 0,o,i[u])}return i}getImplicitName(){}}Y_.QOpDescView=r6e;var mn={};Object.defineProperty(mn,"__esModule",{value:!0}),mn.FieldDefinitionValue=mn.DefSpace=mn.DimensionFieldDeclaration=mn.MeasureFieldDeclaration=mn.DeclareFieldDeclaration=mn.ProjectFieldDeclaration=mn.GroupByFieldDeclaration=mn.AggregateFieldDeclaration=mn.CalculateFieldDeclaration=mn.AtomicFieldDeclaration=void 0;const i6e=Z,s6e=ln,o6e=cn,u6e=a2,a6e=Ve,vx=Kn,l6e=Vr,c6e=Yr;class Q0 extends a6e.MalloyElement{constructor(e,n,r){super({expr:e}),this.expr=e,this.defineName=n,this.exprSrc=r,this.isNoteableObj=!0,this.extendNote=l6e.extendNoteMethod}fieldDef(e,n){return this.queryFieldDef(new YD(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 a=this.executesInOutputSpace()?i():e;r=this.expr.getExpression(a)}catch(a){return this.log(`Cannot define '${n}', ${a.message}`),{name:n,type:"error"}}const s=(0,s6e.compressExpr)(r.value);let o=r.dataType;if(o==="null"&&(this.expr.log('null value defaults to type number, use "null::TYPE" to specify correct type',"warn"),o="number"),(0,i6e.isAtomicFieldType)(o)&&o!=="error"){const a={name:n,type:o,location:this.location};return s.length>0&&(a.e=s),r.expressionType&&(a.expressionType=r.expressionType),this.typecheckExprValue(r),this.exprSrc&&(a.code=this.exprSrc),(0,u6e.isGranularResult)(r)&&a.type==="timestamp"&&(a.timeframe=r.timeframe),this.note&&(a.annotation=this.note),a}if(!(e instanceof YD&&e.foundCircle)&&r.dataType!=="error"){const a=o6e.FT.inspect(r);this.log(`Cannot define '${n}', unexpected type: ${a}`)}return{name:n,type:"error"}}makeEntry(e){e.newEntry(this.defineName,this,new _W(e,this))}}mn.AtomicFieldDeclaration=Q0;class f6e extends Q0{constructor(){super(...arguments),this.elementType="calculateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckCalculate)(e,this)}executesInOutputSpace(){return!0}}mn.CalculateFieldDeclaration=f6e;class x6e extends Q0{constructor(){super(...arguments),this.elementType="aggregateFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckAggregate)(e,this)}}mn.AggregateFieldDeclaration=x6e;class d6e extends Q0{constructor(){super(...arguments),this.elementType="groupByFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckGroupBy)(e,this)}}mn.GroupByFieldDeclaration=d6e;class h6e extends Q0{constructor(){super(...arguments),this.elementType="projectFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckProject)(e,this)}}mn.ProjectFieldDeclaration=h6e;class p6e extends Q0{constructor(){super(...arguments),this.elementType="declareFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDeclare)(e,this)}}mn.DeclareFieldDeclaration=p6e;class g6e extends Q0{constructor(){super(...arguments),this.elementType="measureFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckMeasure)(e,this)}}mn.MeasureFieldDeclaration=g6e;class m6e extends Q0{constructor(){super(...arguments),this.elementType="dimensionFieldDeclaration"}typecheckExprValue(e){(0,vx.typecheckDimension)(e,this)}}mn.DimensionFieldDeclaration=m6e;class YD{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")}}mn.DefSpace=YD;class _W extends c6e.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)}}mn.FieldDefinitionValue=_W;var t5={};Object.defineProperty(t5,"__esModule",{value:!0}),t5.Aggregate=void 0;const y6e=Ns,CW=On;let E6e=class extends y6e.DefinitionList{constructor(){super(...arguments),this.elementType="aggregateList",this.queryRefinementStage=CW.LegalRefinementStage.Single,this.forceQueryClass=CW.QueryClass.Grouping}};t5.Aggregate=E6e;var n5={};Object.defineProperty(n5,"__esModule",{value:!0}),n5.Calculate=void 0;const A6e=Ns,v6e=On;class S6e extends A6e.DefinitionList{constructor(){super(...arguments),this.elementType="calculate",this.forceQueryClass=void 0,this.needsExplicitQueryClass=!0,this.queryRefinementStage=v6e.LegalRefinementStage.Single}}n5.Calculate=S6e;var e3={};Object.defineProperty(e3,"__esModule",{value:!0}),e3.Dimensions=void 0;const _6e=O0;class C6e extends _6e.DeclareFields{constructor(){super(...arguments),this.elementType="dimensionList"}}e3.Dimensions=C6e;var t3={};Object.defineProperty(t3,"__esModule",{value:!0}),t3.Measures=void 0;const T6e=O0;class b6e extends T6e.DeclareFields{constructor(){super(...arguments),this.elementType="measureList"}}t3.Measures=b6e;var r5={};Object.defineProperty(r5,"__esModule",{value:!0}),r5.Nests=void 0;const R6e=Ns,TW=On;class O6e extends R6e.DefinitionList{constructor(e){super(e),this.elementType="nestedQueries",this.queryRefinementStage=TW.LegalRefinementStage.Single,this.forceQueryClass=TW.QueryClass.Grouping}}r5.Nests=O6e;var i5={};Object.defineProperty(i5,"__esModule",{value:!0}),i5.ProjectStatement=void 0;const N6e=Ns,bW=On;class D6e extends N6e.DefinitionList{constructor(){super(...arguments),this.elementType="projectStatement",this.forceQueryClass=bW.QueryClass.Project,this.queryRefinementStage=bW.LegalRefinementStage.Single}queryExecute(e){e.type==="project"&&e.resultFS.pushFields(...this.list)}}i5.ProjectStatement=D6e;var G0={},pl={};Object.defineProperty(pl,"__esModule",{value:!0}),pl.findReferences=pl.deprecatedParseTableURI=pl.constructTableKey=void 0;const F6e=sx,KD=kn;function XD(t){const e=(0,KD.getStringIfShort)(t);if(e)return e;const n=[],r=t.string().sqlString();if(r){for(const i of(0,KD.getStringParts)(r))typeof i=="string"&&n.push(i);return n.join("")}return""}class w6e{constructor(e,n){this.trans=e,this.tokens=n,this.needTables={},this.needImports={}}registerTableReference(e,n,r){const i=RW(e,n);this.needTables[i]||(this.needTables[i]={connectionName:e,tablePath:n,firstReference:r})}enterTableMethod(e){const n=(0,KD.getId)(e.connectionId()),r=XD(e.tablePath()),i=this.trans.rangeFromContext(e);this.registerTableReference(n,r,i)}enterTableFunction(e){const n=XD(e.tableURI()),{connectionName:r,tablePath:i}=OW(n),s=this.trans.rangeFromContext(e);this.registerTableReference(r,i,s)}enterImportURL(e){const n=XD(e);this.needImports[n]||(this.needImports[n]=this.trans.rangeFromContext(e))}}function RW(t,e){return t===void 0?e:`${t}:${e}`}pl.constructTableKey=RW;function OW(t){const e=t.match(/^([^:]*):(.*)$/);if(e){const[,n,r]=e;return{connectionName:n,tablePath:r}}else return{tablePath:t}}pl.deprecatedParseTableURI=OW;function L6e(t,e,n){const r=new w6e(t,e),i=r;return F6e.ParseTreeWalker.DEFAULT.walk(i,n),{tables:r.needTables,urls:r.needImports}}pl.findReferences=L6e,Object.defineProperty(G0,"__esModule",{value:!0}),G0.TableFunctionSource=G0.TableMethodSource=G0.TableSource=void 0;const NW=pl,I6e=Uo,DW=Kr;class JD extends I6e.Source{structDef(){var e,n,r;const i=this.getTableInfo();if(i===void 0)return DW.ErrorFactory.structDef;const{tablePath:s,connectionName:o}=i,u=(0,NW.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),DW.ErrorFactory.structDef}}G0.TableSource=JD;class $6e extends JD{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}}}G0.TableMethodSource=$6e;class B6e extends JD{constructor(e){super(),this.tableURI=e,this.elementType="tableFunctionSource"}getTableInfo(){return(0,NW.deprecatedParseTableURI)(this.tableURI)}}G0.TableFunctionSource=B6e;var s5={};Object.defineProperty(s5,"__esModule",{value:!0}),s5.SQLString=void 0;const k6e=Ve,FW=Wu;class P6e extends k6e.MalloyElement{constructor(){super(...arguments),this.elementType="sqlString",this.elements=[],this.containsQueries=!1}complete(){this.has({queries:this.elements.filter(M6e)})}push(e){typeof e=="string"?e.length>0&&this.elements.push(e):e instanceof FW.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}}s5.SQLString=P6e;function M6e(t){return t instanceof FW.SourceQueryElement}var o5={};Object.defineProperty(o5,"__esModule",{value:!0}),o5.SourceDesc=void 0;const j6e=Ve;class U6e extends j6e.ListOf{constructor(){super(...arguments),this.elementType="sourceDescription"}}o5.SourceDesc=U6e;var u5={};Object.defineProperty(u5,"__esModule",{value:!0}),u5.isSourceProperty=void 0;const q6e=qo,H6e=ts,z6e=O0,Q6e=e2,G6e=D0,W6e=t2,V6e=n2,Y6e=r2,K6e=N0;function X6e(t){return t instanceof q6e.Filter||t instanceof H6e.Joins||t instanceof z6e.DeclareFields||t instanceof Q6e.FieldListEdit||t instanceof G6e.Renames||t instanceof W6e.PrimaryKey||t instanceof K6e.ObjectAnnotation||t instanceof V6e.Views||t instanceof Y6e.TimezoneStatement}u5.isSourceProperty=X6e;var a5={};Object.defineProperty(a5,"__esModule",{value:!0}),a5.isFieldCollectionMember=void 0;const J6e=mn,wW=ht;function Z6e(t){return t instanceof wW.FieldReference||t instanceof wW.WildcardFieldReference||t instanceof J6e.AtomicFieldDeclaration}a5.isFieldCollectionMember=Z6e;var l5={};Object.defineProperty(l5,"__esModule",{value:!0}),l5.isQueryElement=void 0;const eRe=i2,tRe=s2,nRe=Tm,rRe=bm;function iRe(t){return t instanceof eRe.QueryArrow||t instanceof tRe.QueryRefine||t instanceof nRe.QueryReference||t instanceof rRe.QueryRaw}l5.isQueryElement=iRe;var LW={};Object.defineProperty(LW,"__esModule",{value:!0});var c5={};Object.defineProperty(c5,"__esModule",{value:!0}),c5.isQueryProperty=void 0;function sRe(t){return"queryRefinementStage"in t&&"forceQueryClass"in t}c5.isQueryProperty=sRe;var f5={};Object.defineProperty(f5,"__esModule",{value:!0}),f5.isQueryExtendProperty=void 0;const oRe=e3,uRe=ts,aRe=t3;function lRe(t){return t instanceof oRe.Dimensions||t instanceof aRe.Measures||t instanceof uRe.Joins}f5.isQueryExtendProperty=lRe;var x5={};Object.defineProperty(x5,"__esModule",{value:!0}),x5.isFieldPropStatement=void 0;const cRe=w0,fRe=qo,xRe=I0,dRe=p2;function hRe(t){return t instanceof fRe.Filter||t instanceof xRe.Limit||t instanceof dRe.PartitionBy||t instanceof cRe.FunctionOrdering}x5.isFieldPropStatement=hRe,function(t){var e=N&&N.__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=N&&N.__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(cm,t),n(Kh,t),n(Xh,t),n(Uo,t),n(mm,t),n(Wu,t),n(PS,t),n(MS,t),n(qS,t),n(Sm,t),n(QS,t),n(e2,t),n(t2,t),n(D0,t),n(n2,t),n(r2,t),n(GS,t),n(d2,t),n(VS,t),n(w0,t),n(YS,t),n(dl,t),n(KS,t),n(h2,t),n(XS,t),n(JS,t),n(ZS,t),n(c2,t),n(e_,t),n(t_,t),n(r_,t),n(Fm,t),n(Om,t),n(lx,t),n(i_,t),n(s_,t),n(u_,t),n(l_,t),n(c_,t),n(f_,t),n(x_,t),n(d_,t),n(h_,t),n(p_,t),n(g_,t),n(m_,t),n(y_,t),n(E_,t),n(A_,t),n(__,t),n(pr,t),n(M_,t),n(p2,t),n(C2,t),n(F0,t),n(U_,t),n(q_,t),n(wm,t),n(ln,t),n(q0,t),n(Wm,t),n(H_,t),n(z_,t),n(Q_,t),n(s2,t),n(i2,t),n(H0,t),n(G_,t),n(W_,t),n(V_,t),n(Y_,t),n(mn,t),n(ht,t),n(t5,t),n(n5,t),n(O0,t),n(e3,t),n(Wm,t),n(qo,t),n(Jm,t),n(Km,t),n(ts,t),n(fm,t),n(I0,t),n(t3,t),n(cm,t),n(r5,t),n(Ex,t),n(i5,t),n(Ym,t),n(Xm,t),n(Zm,t),n(o2,t),n(ax,t),n(Rm,t),n(G0,t),n(s5,t),n(N0,t),n(fl,t),n(o5,t),n(u5,t),n(dt,t),n(a5,t),n($0,t),n(Ve,t),n(l5,t),n(LW,t),n(c5,t),n(f5,t),n(x5,t)}(_S);var d5={},T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.ConstantExpression=T2.ConstantFieldSpace=void 0;const pRe=fl,IW=dt,gRe=c2,mRe=ln;class $W{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}}T2.ConstantFieldSpace=$W;class yRe extends IW.ExpressionDef{constructor(e){super(),this.refType=e,this.elementType="$"}getExpression(e){return{dataType:this.refType,value:[{type:"applyVal"}],expressionType:"scalar",evalSpace:"constant"}}}class ERe extends IW.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 $W),this.cfs}constantValue(){return this.expr.getExpression(this.constantFs)}constantCondition(e){const r=new gRe.ExprCompare(new yRe(e),pRe.Comparison.EqualTo,this.expr).getExpression(this.constantFs);return{...r,value:(0,mRe.compressExpr)(r.value)}}apply(e,n,r){return this.expr.apply(e,n,r)}requestExpression(e){return this.expr.requestExpression(e)}}T2.ConstantExpression=ERe;var ARe=N&&N.__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]}),vRe=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),SRe=N&&N.__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)&&ARe(e,t,n);return vRe(e,t),e};Object.defineProperty(d5,"__esModule",{value:!0}),d5.MalloyToAST=void 0;const BW=Tv,_Re=xm,ee=SRe(_S),CRe=xr,TRe=_S,Pn=kn,ZD=Z,bRe=ll,RRe=T2;class kW extends ee.SourceQueryElement{constructor(){super(...arguments),this.elementType="parseErrorSourceQuery"}}class eF extends ee.MalloyElement{constructor(e){super(),this.elementType="ignoredByParser",this.malloySrc=e}}const ORe=["##! m4warnings=error"];class NRe extends _Re.AbstractParseTreeVisitor{constructor(e,n,r){super(),this.parseInfo=e,this.msgLog=n,this.compilerFlags=r;for(const i of ORe){const s=bRe.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 eF||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 ee.FieldName((0,Pn.getId)(e)),e.id())}getModelEntryName(e){return this.astAt(new ee.ModelEntryReference((0,Pn.getId)(e)),e.id())}defaultResult(){return new ee.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 CRe.Interval(n,r.stopIndex);return this.parseInfo.sourceStream.getText(i)}getFilterElement(e){const n=this.getFieldExpr(e),r=new ee.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 ee.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 ee.Filter([n])}getPlainString(e){const n=(0,Pn.getStringIfShort)(e);if(n)return n;const r=[],i=e.string().sqlString();if(i){for(const s of(0,Pn.getStringParts)(i))s instanceof BW.ParserRuleContext?this.contextError(s,"%{ query } illegal in this string"):r.push(s);return(0,Pn.unIndent)(r),r.join("")}return""}makeSqlString(e,n){for(const r of e.sqlInterpolation())r.CLOSE_CODE()&&this.m4advisory(r,"Use %{ ... } instead of %{ ... }%");for(const r of(0,Pn.getStringParts)(e))r instanceof BW.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 ee.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=>ee.isDocStatementOrDocStatementList(r)&&r,"statement");return new ee.Document(n)}visitDefineSourceStatement(e){const r=e.sourcePropertyList().sourceDefinition().map(o=>this.visitSourceDefinition(o)),i=this.getNotes(e.tags()),s=new ee.DefineSourceList(r);return s.extendNote({blockNotes:i}),s}getSourceParameter(e){const n=e.fieldExpr(),r=n?this.astAt(new RRe.ConstantExpression(this.getFieldExpr(n)),n):void 0,i=e.malloyType(),s=i?this.getMalloyType(i):void 0;return this.astAt(new ee.HasParameter({name:(0,Pn.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 ee.DefineSource((0,Pn.getId)(e.sourceNameDef()),n instanceof ee.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=>ee.isSourceProperty(s)&&s,"source property"),i=new ee.SourceDesc(r);return n&&i.push(this.getFilterShortcut(n)),i}visitTableFunction(e){const n=this.getPlainString(e.tableURI()),r=this.astAt(new ee.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.getPlainString(e.tablePath());return this.astAt(new ee.TableMethodSource(r,i),e)}visitSqlSource(e){const n=e.connectionId(),r=this.astAt(this.getModelEntryName(n),n),i=new ee.SQLString,s=e.sqlString();s&&this.makeSqlString(s,i);const o=e.shortString();o&&i.push((0,Pn.getShortString)(o));const u=new ee.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 ee.Join&&(n.push(s),s instanceof ee.ExpressionJoin?(s.joinType="many",s.joinOn===void 0&&this.contextError(e,"join_many: requires ON expression")):s instanceof ee.KeyJoin&&this.contextError(e,"Foreign key join not legal in join_many:"))}const r=new ee.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 ee.Join&&(r.push(s),s instanceof ee.ExpressionJoin&&(s.joinType="one"));const i=new ee.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 ee.Join&&(r.push(s),s instanceof ee.ExpressionJoin?s.joinType="cross":s.log("Foreign key join not legal in join_cross:"));const i=new ee.Joins(r);return i.extendNote({blockNotes:this.getNotes(e.tags())}),i}getJoinList(e){return e.joinDef().map(n=>this.visit(n))}getJoinSource(e,n){if(n){const r=this.getSqExpr(n.sqExpr()),i=this.getNotes(n._before_is).concat(this.getNotes(n._after_is));return{joinFrom:r,notes:i}}return{joinFrom:new ee.SQReference(e),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 r=this.getModelEntryName(e.joinNameDef()),{joinFrom:i,notes:s}=this.getJoinSource(r,e.isExplore()),o=new ee.ExpressionJoin(r,i),u=e.joinExpression(),a=((n=e.matrixOperation())===null||n===void 0?void 0:n.text.toLocaleLowerCase())||"left";return(0,ZD.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 n=this.getModelEntryName(e.joinNameDef()),{joinFrom:r,notes:i}=this.getJoinSource(n,e.isExplore()),s=this.getFieldExpr(e.fieldExpr()),o=new ee.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,Pn.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(),ee.DimensionFieldDeclaration),r=new ee.Dimensions(n);return r.extendNote({blockNotes:this.getNotes(e.tags())}),this.astAt(r,e)}visitDefMeasures(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.MeasureFieldDeclaration),r=new ee.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(ee.isQueryExtendProperty(s))n.push(s);else throw this.internalError(e,`Query extend matched, but ${s.elementType} found`);const i=new ee.ExtendBlock(n);return this.astAt(i,e)}visitDeclareStatement(e){const n=this.getFieldDefs(e.defList().fieldDef(),ee.DeclareFieldDeclaration),r=new ee.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 ee.RenameField((0,Pn.getId)(n),this.getFieldName(r));return this.astAt(i,e)}visitDefExploreRename(e){const r=e.renameList().exploreRenameDef().map(s=>this.visitExploreRenameDef(s)),i=new ee.Renames(r);return this.astAt(i,e)}visitFilterClauseList(e){return new ee.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 ee.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 ee.PrimaryKey(this.getFieldName(e.fieldName()));return this.astAt(n,e)}visitFieldNameList(e){const n=e.fieldName().map(r=>new ee.AcceptExceptFieldReference([this.getFieldName(r)]));return new ee.FieldReferences(n)}visitDefExploreEditField(e){const n=e.ACCEPT()?"accept":"except";return new ee.FieldListEdit(n,this.visitFieldNameList(e.fieldNameList()))}visitDefExploreTimezone(e){return this.visitTimezoneStatement(e.timezoneStatement())}visitTimezoneStatement(e){const n=this.getPlainString(e),r=this.astAt(new ee.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=>ee.isQueryProperty(i)&&i,"query statement"),r=e.filterShortcut();return r&&n.push(this.getFilterShortcut(r)),new ee.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 ee.FieldReference||i instanceof ee.AtomicFieldDeclaration?i:!1,"view field")}visitAggregateStatement(e){const n=new ee.Aggregate(this.getQueryItems(e.queryFieldList(),ee.AggregateFieldDeclaration,ee.AggregateFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitGroupByStatement(e){const n=new ee.GroupBy(this.getQueryItems(e.queryFieldList(),ee.GroupByFieldDeclaration,ee.GroupByFieldReference));return n.extendNote({blockNotes:this.getNotes(e.tags())}),n}visitCalculateStatement(e){const n=new ee.Calculate(this.getQueryItems(e.queryFieldList(),ee.CalculateFieldDeclaration,ee.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(),ee.ExpressionFieldReference);let u;const a=i.timeframe();a&&(u=new ee.ExprGranularTime(new ee.ExprIdReference(o),this.visitTimeframe(a).text,!0));const l=i.aggregate();if(l){const f=l.text.toLowerCase();if(f==="sum")u=new ee.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,ee.ProjectFieldDeclaration,ee.ProjectFieldReference));return this.astAt(new ee.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,ee.ProjectFieldReference):void 0,s=this.astAt(new ee.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,Pn.getId)(a));return s}visitIndexFields(e){const n=e.indexElement().map(r=>{const i=r.fieldPath();if(!i)return this.astAt(new ee.WildcardFieldReference(void 0),e);const s=this.getFieldPath(i,ee.IndexFieldReference);return r.STAR()?this.astAt(new ee.WildcardFieldReference(s),e):this.astAt(s,e)});return new ee.FieldReferences(n)}visitIndexStatement(e){const n=this.visitIndexFields(e.indexFields()),r=new ee.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 ee.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 ee.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 ee.FunctionOrdering(n),e)}visitOrderBySpec(e){const n=e.ASC()?"asc":e.DESC()?"desc":void 0,r=e.INTEGER_LITERAL();if(r)return new ee.OrderBy(this.getNumber(r),n);const i=e.fieldName();if(i)return new ee.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 ee.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 ee.Top(r,u)}const o=n.fieldExpr();o&&(i=new ee.Top(r,this.getFieldExpr(o)))}return i||(i=new ee.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 ee.DefineQueryList(n);return i.extendNote({blockNotes:r}),i}visitTopLevelQueryDef(e){const n=(0,Pn.getId)(e.queryName()),r=this.visit(e.sqExpr()),i=this.getNotes(e.tags()).concat(this.getIsNotes(e.isDefine()));if(r instanceof ee.SourceQueryElement){const s=new ee.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 ee.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 ee.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 ee.Nests(this.only(e.nestEntry().map(n=>this.visit(n)),n=>n instanceof ee.NestFieldDeclaration&&n,"query"))}visitNestDef(e){const n=e.queryName();let r;const i=this.getVExpr(e.vExpr());if(n)r=(0,Pn.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 ee.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,Pn.getId)(e.exploreQueryNameDef()),r=new ee.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 ee.ExprNot(this.getFieldExpr(e.fieldExpr()))}visitExprBool(e){return new ee.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 ee.ExprLogicalOp(n,"or",r)}visitExprLogicalAnd(e){const n=this.getFieldExpr(e.fieldExpr(0)),r=this.getFieldExpr(e.fieldExpr(1));return new ee.ExprLogicalOp(n,"and",r)}visitExprOrTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ee.ExprAlternationTree(n,"|",r),e)}visitExprAndTree(e){const n=this.getFieldExpr(e.fieldExpr()),r=this.getFieldExpr(e.partialAllowedFieldExpr());return this.astAt(new ee.ExprAlternationTree(n,"&",r),e)}visitExprCoalesce(e){const n=this.getFieldExpr(e.fieldExpr()[0]),r=this.getFieldExpr(e.fieldExpr()[1]);return this.astAt(new ee.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(ee.isComparison(i))return this.astAt(new ee.PartialCompare(i,r),e);throw this.internalError(e,`partial comparison '${i}' not recognized`)}return r}visitExprString(e){const n=this.getPlainString(e);return new ee.ExprString(n)}visitExprRegex(e){const n=e.HACKY_REGEX().text;return new ee.ExprRegEx(n.slice(2,-1))}visitExprNow(e){return new ee.ExprNow}visitExprNumber(e){return new ee.ExprNumber(e.text)}visitExprFieldPath(e){const n=new ee.ExprIdReference(this.getFieldPath(e.fieldPath(),ee.ExpressionFieldReference));return this.astAt(n,e)}visitExprNULL(e){return new ee.ExprNULL}visitExprExpr(e){return new ee.ExprParens(this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprMinus(e){return new ee.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 ee.ExprAddSub(n,i,r)}visitExprMulDiv(e){const n=e.STAR()?"*":e.SLASH()?"/":"%";return new ee.ExprMulDiv(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)))}visitExprCompare(e){const n=e.compareOp().text;if(ee.isComparison(n))return new ee.ExprCompare(this.getFieldExpr(e.fieldExpr(0)),n,this.getFieldExpr(e.fieldExpr(1)));throw this.internalError(e,`untranslatable comparison operator '${n}'`)}visitExprCountDisinct(e){return this.m4advisory(e,"`count(distinct expression)` deprecated, use `count(expression)` instead"),this.astAt(new ee.ExprCountDistinct(this.getFieldExpr(e.fieldExpr())),e)}visitExprUngroup(e){const n=e.fieldName().map(i=>this.getFieldName(i)),r=e.ungroup().text.toLowerCase();return this.astAt(new ee.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,ee.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 ee.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 ee.ExprIdReference(r),n);return s==="min"?new ee.ExprMin(a):new ee.ExprMax(a)}else{if(s==="avg")return new ee.ExprAvg(u,i);if(s==="sum")return new ee.ExprSum(u,i);this.contextError(e,`Cannot parse aggregate function ${s}`)}return new ee.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 ee.ExprCountDistinct(r):new ee.ExprCount,e);if(s==="min"){if(r)return new ee.ExprMin(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else if(s==="max"){if(r)return new ee.ExprMax(r);this.contextError(e,this.symmetricAggregateUsageError(s))}else{if(r===void 0)return this.contextError(e,this.asymmetricAggregateUsageError(s)),new ee.ExprNULL;const o=e.SOURCE_KW()!==void 0;if(s==="avg")return new ee.ExprAvg(r,i,o);if(s==="sum")return new ee.ExprSum(r,i,o)}return new ee.ExprNULL}visitExprApply(e){return new ee.Apply(this.getFieldExpr(e.fieldExpr()),this.getFieldExpr(e.partialAllowedFieldExpr()))}visitExprRange(e){return new ee.Range(this.getFieldExpr(e.fieldExpr(0)),this.getFieldExpr(e.fieldExpr(1)))}visitExprCast(e){const n=this.getMalloyOrSQLType(e.malloyOrSQLType());return new ee.ExprCast(this.getFieldExpr(e.fieldExpr()),n)}getMalloyType(e){const n=e.text;if((0,ZD.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.getPlainString({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 ee.ExprCast(this.getFieldExpr(e.fieldExpr()),n,!0)}visitExprTimeTrunc(e){return new ee.ExprGranularTime(this.getFieldExpr(e.fieldExpr()),this.visitTimeframe(e.timeframe()).text,!0)}visitTimeframe(e){return new ee.Timeframe(e.text)}visitExprForRange(e){const n=this.getFieldExpr(e._startAt),r=this.getFieldExpr(e._duration),i=this.visitTimeframe(e.timeframe());return new ee.ForRange(n,r,i)}visitExprAggFunc(e){const n=e.argumentList(),r=n?this.allFieldExpressions(n.fieldExpr()):[],i=(0,Pn.getId)(e),s=e.fieldPath(),o=s?this.getFieldPath(s,ee.ExpressionFieldReference):void 0,u=s&&o?this.astAt(o,s):void 0;return ee.ExprTimeExtract.extractor(i)?this.astAt(new ee.ExprTimeExtract(i,r),e):this.astAt(new ee.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,ZD.isCastType)(u)?a=u:(this.contextError(e,`'#' assertion for unknown type '${u}'`),a=void 0));let l=(0,Pn.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"),ee.ExprTimeExtract.extractor(l)?this.astAt(new ee.ExprTimeExtract(l,s),e):this.astAt(new ee.ExprFunc(l,s,o,a),e)}visitExprDuration(e){return new ee.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 ee.PickWhen(i,this.getFieldExpr(r._pickWhen))});return e.ELSE()?new ee.Pick(n,this.getFieldExpr(e._pickElse)):new ee.Pick(n)}visitExprFieldProps(e){const n=this.only(e.fieldProperties().fieldPropertyStatement().map(r=>this.visit(r)),r=>ee.isFieldPropStatement(r)&&r,"field property statement");return new ee.ExprProps(this.getFieldExpr(e.fieldExpr()),n)}visitPartitionByStatement(e){return this.astAt(new ee.PartitionBy(e.id().map(n=>this.astAt(new ee.PartitionByFieldReference([this.astAt(new ee.FieldName((0,Pn.idToStr)(n)),n)]),n))),e)}visitLiteralTimestamp(e){return this.parseTime(e,ee.LiteralTimestamp.parse)}visitLiteralHour(e){return this.parseTime(e,ee.LiteralHour.parse)}visitLiteralDay(e){return this.parseTime(e,ee.LiteralDay.parse)}visitLiteralWeek(e){return this.parseTime(e,ee.LiteralWeek.parse)}visitLiteralMonth(e){return this.parseTime(e,ee.LiteralMonth.parse)}visitLiteralQuarter(e){return this.parseTime(e,ee.LiteralQuarter.parse)}visitLiteralYear(e){return this.parseTime(e,ee.LiteralYear.parse)}visitImportStatement(e){const n=this.getPlainString(e.importURL()),r=this.astAt(new ee.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 ee.ImportSourceName((0,Pn.idToStr)(o[1])),o[1]):void 0;r.push(this.astAt(new ee.ImportSelect((0,Pn.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 ee.SampleProperty({rows:this.getNumber(n)});const r=e.sampleSpec().PERCENT_LITERAL();if(r)return new ee.SampleProperty({percent:this.getNumber(r)});const i=e.sampleSpec().TRUE()!==void 0;return new ee.SampleProperty({enable:i})}visitDocAnnotations(e){const n=e.DOC_ANNOTATION().map(i=>({text:i.text,at:this.getLocation(e)})),r=new ee.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 eF(e.text)}visitIgnoredModelAnnotations(e){return this.contextError(e,"Model annotations not allowed at this scope"),new eF(e.text)}visitDefExploreAnnotation(e){const n=this.getNotes(e);return new ee.ObjectAnnotation(n)}getSQArgument(e){const n=e.argumentId(),r=n?this.astAt(new ee.PartitionByFieldReference([this.astAt(new ee.FieldName((0,Pn.idToStr)(n.id())),n)]),n):void 0;return this.astAt(new ee.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 ee.SQReference(n,r),e.id())}getSqExpr(e){const n=this.visit(e);return n instanceof ee.SourceQueryElement?n:(this.contextError(e,`Expected a source/query expression, not '${n.elementType}'`),new kW)}visitSQExtendedSource(e){const n=this.getSqExpr(e.sqExpr()),r=new ee.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 ee.SQArrow(n,this.getVExpr(r));return this.astAt(i,e)}getVExpr(e){const n=this.visit(e);if(n instanceof ee.View)return n;throw this.internalError(e,`Expected view, got a '${n.elementType}'`)}visitSegField(e){return new ee.ReferenceView(this.getFieldPath(e.fieldPath(),ee.ViewOrScalarFieldReference))}visitSegOps(e){return new ee.QOpDescView(this.visitQueryProperties(e.queryProperties()))}visitSegParen(e){return this.visit(e.vExpr())}visitVSeg(e){return this.visit(e.segExpr())}visitSegRefine(e){return new ee.ViewRefine(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitVArrow(e){return new ee.ViewArrow(this.getVExpr(e._lhs),this.getVExpr(e._rhs))}visitSQRefinedQuery(e){const n=this.getSqExpr(e.sqExpr()),r=e.segExpr(),i=new ee.SQRefine(n,this.getVExpr(r));return this.astAt(i,e)}visitSQTable(e){const n=this.visit(e.exploreTable());if(n instanceof TRe.TableSource){const r=new ee.SQSource(n);return this.astAt(r,e)}return new kW}visitSQSQL(e){const n=new ee.SQSource(this.visitSqlSource(e.sqlSource()));return this.astAt(n,e)}visitExperimentalStatementForTesting(e){return this.inExperiment("compilerTestExperimentParse",e),this.astAt(new ee.ExperimentalExperiment("compilerTestExperimentTranslate"),e)}}d5.MalloyToAST=NRe;var h5={};Object.defineProperty(h5,"__esModule",{value:!0}),h5.MessageLog=void 0;class DRe{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}}h5.MessageLog=DRe;var p5={};Object.defineProperty(p5,"__esModule",{value:!0}),p5.Zone=void 0;class FRe{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})}}p5.Zone=FRe;var g5={};Object.defineProperty(g5,"__esModule",{value:!0}),g5.walkForDocumentSymbols=void 0;const wRe=sx,LRe=kn;class IRe{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.joinNameDef().id().text,type:"join",children:[]},r=this.peekScope();r&&r.children.push(n)}enterImportStatement(e){const n=(0,LRe.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 $Re(t,e,n){const r=new IRe(t,e,[],[]),i=r;return wRe.ParseTreeWalker.DEFAULT.walk(i,n),r.symbols}g5.walkForDocumentSymbols=$Re;var m5={};Object.defineProperty(m5,"__esModule",{value:!0}),m5.walkForDocumentCompletions=void 0;const BRe=sx,kRe=["dimension","measure","join_one","join_many","join_cross","where","primary_key","rename","accept","except","query","declare"],PRe=["group_by","project","index","aggregate","top","limit","order_by","where","having","nest","declare"],MRe=["source","explore","query","sql"];class jRe{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 kRe)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 PRe)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 MRe)this.completions.push({type:"model_property",text:`${r}: `})}}}function URe(t,e,n){const r=new jRe(t,[],n),i=r;return BRe.ParseTreeWalker.DEFAULT.walk(i,e),r.completions}m5.walkForDocumentCompletions=URe;var y5={};Object.defineProperty(y5,"__esModule",{value:!0}),y5.walkForDocumentHelpContext=void 0;const qRe=w7;class HRe extends qRe.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 zRe(t,e){return new HRe(e).visit(t)}y5.walkForDocumentHelpContext=zRe;var E5={},n3={};Object.defineProperty(n3,"__esModule",{value:!0}),n3.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)}n3.locationContainsPosition=QRe,Object.defineProperty(E5,"__esModule",{value:!0}),E5.ReferenceList=void 0;const GRe=n3;class WRe{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,GRe.locationContainsPosition)(r.location,e))return r}}E5.ReferenceList=WRe;var A5={};Object.defineProperty(A5,"__esModule",{value:!0}),A5.isNeedResponse=void 0;function VRe(t){return!!t&&(t.tables||t.urls||t.compileSQL)!==void 0}A5.isNeedResponse=VRe;var v5={};Object.defineProperty(v5,"__esModule",{value:!0}),v5.walkForModelAnnotation=void 0;const YRe=sx;class KRe{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 XRe(t,e,n){const r=new KRe(t,e,n),i=r;return YRe.ParseTreeWalker.DEFAULT.walk(i,n.root),r.annotation}v5.walkForModelAnnotation=XRe;var JRe=N&&N.__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=N&&N.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),eOe=N&&N.__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(Ou,"__esModule",{value:!0}),Ou.MalloyParserErrorHandler=Ou.MalloyTranslator=Ou.MalloyChildTranslator=Ou.MalloyTranslation=void 0;const PW=Tv,tOe=P4,nOe=w,MW=eOe(_S),rOe=d5,iOe=h5,sOe=pl,tF=p5,oOe=g5,uOe=m5,aOe=y5,lOe=E5,S5=A5,cOe=n3,jW=ll,fOe=v5;class xOe extends tOe.MalloyLexer{popMode(){return this._modeStack.isEmpty?this._mode:super.popMode()}}class dOe{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===""?`
1301
1301
  `: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=PW.CharStreams.fromString(e),i=new xOe(r),s=new PW.CommonTokenStream(i),o=new nOe.MalloyParser(s);o.removeErrorListeners(),o.addErrorListener(new qW(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 hOe{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,sOe.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,S5.isNeedResponse)(r))return r;for(const o of e.childTranslators.values()){const u=o.importsAndTablesStep.step(o);if((0,S5.isNeedResponse)(u))return u}return null}}class pOe{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 rOe.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 MW.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,S5.isNeedResponse)(a))return a}return o.setTranslator(e),this.response={...e.problemResponse(),ast:o,final:!0},this.response}}class gOe{constructor(e){this.parseStep=e}step(e){if(!this.response){const n=this.parseStep.step(e);if(n.parse){let r;try{r=(0,oOe.walkForDocumentSymbols)(e,n.parse.tokenStream,n.parse.root)}catch{}this.response={symbols:r,final:!0}}else return n}return this.response}}class mOe{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,uOe.walkForDocumentCompletions)(r.parse.tokenStream,r.parse.root,n)}catch{}return{...r,completions:i}}else return r}}class yOe{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,aOe.walkForDocumentHelpContext)(r.parse.root,n)}catch{}return{...r,helpContext:i}}else return r}}class EOe{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,fOe.walkForModelAnnotation)(e,r.parse.tokenStream,r.parse);this.response={modelAnnotation:{...i,inherits:n==null?void 0:n.annotation}}}}return this.response}}class AOe{constructor(e){this.astStep=e,this.importedAnnotations=!1}step(e,n){if(this.response)return this.response;if(n&&!this.importedAnnotations){const i=jW.Tag.annotationToTag(n.annotation,{prefix:/^##! /});e.compilerFlags=i.tag,this.importedAnnotations=!0}const r=this.astStep.step(e);if((0,S5.isNeedResponse)(r))return r;if(!r.ast)return this.response=r,this.response;if(e.grammarRule==="malloyDocument")if(r.ast instanceof MW.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 nF{constructor(e,n=null,r="malloyDocument"){this.sourceURL=e,this.importBaseURL=n,this.grammarRule=r,this.queryList=[],this.sqlBlocks=[],this.imports=[],this.compilerFlags=new jW.Tag,this.dialectAlreadyChecked={},this.allDialectsEnabled=!1,this.childTranslators=new Map,this.modelDef={name:e,exports:[],contents:{}},this.parseStep=new dOe,this.modelAnnotationStep=new EOe(this.parseStep),this.metadataStep=new gOe(this.parseStep),this.completionsStep=new mOe(this.parseStep),this.helpContextStep=new yOe(this.parseStep),this.importsAndTablesStep=new hOe(this.parseStep),this.astStep=new pOe(this.importsAndTablesStep),this.translateStep=new AOe(this.astStep),this.references=new lOe.ReferenceList(e)}addChild(e){this.childTranslators.get(e)||this.childTranslators.set(e,new UW(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}
1302
1302
  | ${l}`,u>0&&(i=i+`