From cd4eaf805fef15e1248f3d2a12ffe169b4be122d Mon Sep 17 00:00:00 2001 From: Eugene Date: Fri, 10 Nov 2023 17:29:39 +0300 Subject: [PATCH] Updates --- demo.js | 2 + demo.js.map | 1 + index.html | 17 + main.cjs | 204 - main.cjs.map | 1 - main.js | 13997 +----------------------------------------------- main.js.map | 2 +- manifest.json | 10 +- 8 files changed, 164 insertions(+), 14070 deletions(-) create mode 100644 demo.js create mode 100644 demo.js.map create mode 100644 index.html delete mode 100644 main.cjs delete mode 100644 main.cjs.map diff --git a/demo.js b/demo.js new file mode 100644 index 0000000..98119e1 --- /dev/null +++ b/demo.js @@ -0,0 +1,2 @@ +"use strict";const s=require("./main.js"),r={onCellClick:(e,t)=>{console.log("Cell click",e,t)},onSelectionChange:e=>{console.log("Changed selection: ",e)},onCellChange(e){console.log("Cell changed: ",e)},onCopy:(e,t,i)=>{console.log("Copy event: ",e,t,i)}},o=new s.default("#spreadsheet",r);function c(){const e=o.serializeData();localStorage.setItem("sheet",JSON.stringify(e))}function a(){const e=localStorage.getItem("sheet");if(!e)return;const t=JSON.parse(e);o.loadData(t)}const n=document.querySelector("#save_button"),l=document.querySelector("#load_button");if(!n||!l)throw new Error("LOST");n.addEventListener("click",c);l.addEventListener("click",a); +//# sourceMappingURL=demo.js.map diff --git a/demo.js.map b/demo.js.map new file mode 100644 index 0000000..7ecc2bd --- /dev/null +++ b/demo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"demo.js","sources":["../src/index.ts"],"sourcesContent":["import Spreadsheet from \"./main\";\nconst options = {\n onCellClick: (event, cell) => {\n console.log(\"Cell click\", event, cell);\n },\n onSelectionChange: (selection) => {\n console.log(\"Changed selection: \", selection);\n },\n onCellChange(cell) {\n console.log(\"Cell changed: \", cell);\n },\n onCopy: (range, data, dataAsString) => {\n console.log(\"Copy event: \", range, data, dataAsString);\n }\n};\nconst sheet = new Spreadsheet(\"#spreadsheet\", options);\nfunction saveDataToLS() {\n const serializableData = sheet.serializeData();\n localStorage.setItem(\"sheet\", JSON.stringify(serializableData));\n}\nfunction loadDataFromLS() {\n const data = localStorage.getItem(\"sheet\");\n if (!data)\n return;\n const json = JSON.parse(data);\n sheet.loadData(json);\n}\nconst saveButton = document.querySelector(\"#save_button\");\nconst loadButton = document.querySelector(\"#load_button\");\nif (!saveButton || !loadButton)\n throw new Error(\"LOST\");\nsaveButton.addEventListener(\"click\", saveDataToLS);\nloadButton.addEventListener(\"click\", loadDataFromLS);\n"],"names":["options","event","cell","selection","range","data","dataAsString","sheet","Spreadsheet","saveDataToLS","serializableData","loadDataFromLS","json","saveButton","loadButton"],"mappings":"0CACMA,EAAU,CACZ,YAAa,CAACC,EAAOC,IAAS,CAClB,QAAA,IAAI,aAAcD,EAAOC,CAAI,CACzC,EACA,kBAAoBC,GAAc,CACtB,QAAA,IAAI,sBAAuBA,CAAS,CAChD,EACA,aAAaD,EAAM,CACP,QAAA,IAAI,iBAAkBA,CAAI,CACtC,EACA,OAAQ,CAACE,EAAOC,EAAMC,IAAiB,CACnC,QAAQ,IAAI,eAAgBF,EAAOC,EAAMC,CAAY,CACzD,CACJ,EACMC,EAAQ,IAAIC,EAAAA,QAAY,eAAgBR,CAAO,EACrD,SAASS,GAAe,CACd,MAAAC,EAAmBH,EAAM,gBAC/B,aAAa,QAAQ,QAAS,KAAK,UAAUG,CAAgB,CAAC,CAClE,CACA,SAASC,GAAiB,CAChB,MAAAN,EAAO,aAAa,QAAQ,OAAO,EACzC,GAAI,CAACA,EACD,OACE,MAAAO,EAAO,KAAK,MAAMP,CAAI,EAC5BE,EAAM,SAASK,CAAI,CACvB,CACA,MAAMC,EAAa,SAAS,cAAc,cAAc,EAClDC,EAAa,SAAS,cAAc,cAAc,EACxD,GAAI,CAACD,GAAc,CAACC,EACV,MAAA,IAAI,MAAM,MAAM,EAC1BD,EAAW,iBAAiB,QAASJ,CAAY,EACjDK,EAAW,iBAAiB,QAASH,CAAc"} \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..23928f9 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + Spreadsheet example + + + + +
+ + + + + diff --git a/main.cjs b/main.cjs deleted file mode 100644 index 1655e8a..0000000 --- a/main.cjs +++ /dev/null @@ -1,204 +0,0 @@ -"use strict";var js=Object.defineProperty;var ea=(t,e,n)=>e in t?js(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var U=(t,e,n)=>(ea(t,typeof e!="symbol"?e+"":e,n),n);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var Ve;(function(t){t.CELL_CLICK="CELL_CLICK",t.SELECTION_CHANGE="CHANGE_SELECTION",t.CELL_CHANGE="CELL_CHANGE",t.COPY_CELLS="COPY_CELLS"})(Ve||(Ve={}));class ta{constructor(e){U(this,"root");U(this,"cellClick",(e,n)=>{var p,u;if(e.button!==0)return;const{offsetX:r,offsetY:i}=e,a=this.root.getCellByCoords(r,i),c=this.root.getCell(a),h=new Hn;h.selectedCell=a,h.selectedRange={from:a,to:a},n.setSelectingMode(!0),this.changeSelection(h,!0),(u=(p=this.root.config).onCellClick)==null||u.call(p,e,c)});U(this,"changeSelection",(e,n=!1)=>{var r,i;this.root.selection=e,n&&((i=(r=this.root.config).onSelectonChange)==null||i.call(r,e)),this.root.renderSheet(),this.root.renderColumnsBar(),this.root.renderRowsBar()});U(this,"copy",(e,n,r)=>{var i,a;(a=(i=this.root.config).onCopy)==null||a.call(i,e,n,r)});this.root=e}async dispatch(e){switch(e.type){case Ve.CELL_CLICK:{const{event:n,scroller:r}=e;this.cellClick(n,r);break}case Ve.SELECTION_CHANGE:{const{selection:n,enableCallback:r}=e;this.changeSelection(n,r);break}case Ve.CELL_CHANGE:{const{cell:n,enableCallback:r}=e;if(n.value.substring(0,1).startsWith("="))try{await n.evalFormula(this.root.formulaParser),n.displayValue=n.resultValue,this.root.renderCell(n.position.row,n.position.column),this.changeCellValues(n,r);return}catch(i){console.error(i)}this.root.renderCell(n.position.row,n.position.column),this.changeCellValues(n,r);break}case Ve.COPY_CELLS:{const{data:n,dataAsString:r,range:i}=e;this.copy(i,n,r);break}}}changeCellValues(e,n=!0){var r,i;n&&((i=(r=this.root.config).onCellChange)==null||i.call(r,e))}}class kt{constructor(e,n){U(this,"x");U(this,"y");U(this,"width");U(this,"height");this.x=this.getXCoord(n.column,e),this.y=this.getYCoord(n.row,e),this.width=e.columns[n.column].width,this.height=e.rows[n.row].height}getXCoord(e,n){let r=0;for(let i=0;i{const{key:n}=e;switch(n){case"Escape":{this.hide();break}case"Enter":{if(!this.root.selection.selectedCell)return;this.root.changeCellValues(this.root.selection.selectedCell,{value:this.element.value,displayValue:this.element.value}),this.root.events.dispatch({type:Ve.CELL_CHANGE,cell:this.root.getCell(this.root.selection.selectedCell)}),this.hide(),this.root.renderSelection()}}});U(this,"handleClickOutside",e=>{const n=e.target;this.element.contains(n)||this.hide()});this.root=e;const n=document.createElement("input");n.classList.add(Ft+"editor"),this.element=n,this.hide()}hide(){this.element.style.display="none",this.element.classList.add("hide"),this.element.blur(),window.removeEventListener("click",this.handleClickOutside),this.element.removeEventListener("keydown",this.handleKeydown),this.root.focusTable()}show(e,n){const{height:r,width:i,x:a,y:c}=new kt(this.root.config,e),h=this.root.getCell(e);this.element.classList.remove("hide"),this.element.style.top=c-this.root.viewport.top+this.root.columnsBarHeight+"px",this.element.style.left=a-this.root.viewport.left+this.root.rowsBarWidth+"px",this.element.style.width=i+"px",this.element.style.height=r+"px",this.element.style.display="block",window.addEventListener("click",this.handleClickOutside),this.element.addEventListener("keydown",this.handleKeydown),this.element.value=n||h.value,this.element.focus(),n||this.element.select()}}function ci(t,e){return t.column===e.column&&t.row===e.row}class ra{constructor(e){U(this,"element");U(this,"verticalScroller");U(this,"horizontalScroller");U(this,"root");U(this,"isSelecting",!1);U(this,"handleMouseMove",e=>{if(!this.isSelecting)return;const{offsetX:n,offsetY:r}=e,i=this.root.getCellByCoords(n,r);let a=!1;this.root.selection.selectedRange&&(a=!ci(this.root.selection.selectedRange.to,i),a&&(this.root.selection.selectedRange.to=i,this.root.events.dispatch({type:Ve.SELECTION_CHANGE,selection:this.root.selection,enableCallback:!0})))});U(this,"handleMouseUp",()=>{this.isSelecting=!1;const e={...this.root.selection};this.root.selection.selectedRange&&ci(this.root.selection.selectedRange.from,this.root.selection.selectedRange.to)&&(e.selectedRange=null,this.root.events.dispatch({type:Ve.SELECTION_CHANGE,selection:e,enableCallback:!1})),this.root.renderSheet(),this.root.renderColumnsBar(),this.root.renderRowsBar()});U(this,"handleDoubleClick",e=>{e.preventDefault();const n=this.root.getCellByCoords(e.offsetX,e.offsetY);this.root.showEditor(n)});U(this,"handleKeydown",e=>{if(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(e.key)){switch(e.preventDefault(),this.root.selection.selectedRange=null,e.key){case"ArrowLeft":{this.root.selection.selectedCell&&this.root.selection.selectedCell.column>0&&(this.root.selection.selectedCell.column-=1);break}case"ArrowRight":{this.root.selection.selectedCell&&this.root.selection.selectedCell.column0&&(this.root.selection.selectedCell.row-=1);break}case"ArrowDown":{this.root.selection.selectedCell&&this.root.selection.selectedCell.rowu.slice(a.column,c.column+1))]}else if(this.root.selection.selectedCell){const{column:a,row:c}=this.root.selection.selectedCell;r=[[this.root.data[c][a]]],i.selectedRange={from:this.root.selection.selectedCell,to:this.root.selection.selectedCell}}else return;this.root.clipboard.copy(r,i.selectedRange);return}e.code}});U(this,"handleClick",e=>{this.root.events.dispatch({type:Ve.CELL_CLICK,event:e,scroller:this})});U(this,"handleScroll",()=>{const e=this.getViewportBoundlingRect();this.root.viewport.updateValues(e),this.root.renderSheet(),this.root.renderColumnsBar(),this.root.renderRowsBar()});this.root=e;const{horizontalScroller:n,scroller:r,verticalScroller:i}=this.buildComponent();this.element=r,this.verticalScroller=i,this.horizontalScroller=n,this.element.style.height=this.root.config.view.height+"px",this.element.style.width=this.root.config.view.width+"px",this.element.style.top=this.root.columnsBarHeight+"px",this.element.style.left=this.root.rowsBarWidth+"px",this.element.tabIndex=-1,this.updateScrollerSize(),this.element.addEventListener("scroll",this.handleScroll),this.element.addEventListener("mousedown",this.handleClick),this.element.addEventListener("mousemove",this.handleMouseMove),this.element.addEventListener("mouseup",this.handleMouseUp),this.element.addEventListener("dblclick",this.handleDoubleClick),this.element.addEventListener("keydown",this.handleKeydown),this.element.addEventListener("paste",a=>{this.root.selection.selectedCell&&this.root.clipboard.paste(this.root,this.root.selection.selectedCell,a)})}setSelectingMode(e){this.isSelecting=e}getViewportBoundlingRect(){const{scrollTop:e,scrollLeft:n}=this.element,{height:r,width:i}=this.element.getBoundingClientRect(),a=e+r,c=n+i;return{top:e,left:n,bottom:a,right:c}}buildComponent(){const e=document.createElement("div"),n=document.createElement("div"),r=document.createElement("div"),i=document.createElement("div"),a=document.createElement("div");return n.style.width="0px",n.style.pointerEvents="none",r.style.pointerEvents="none",i.style.display="flex",a.appendChild(n),a.appendChild(r),i.appendChild(a),this.verticalScroller=n,this.horizontalScroller=r,e.appendChild(i),e.contentEditable="false",e.classList.add(Ft+"scroller"),{scroller:e,verticalScroller:n,horizontalScroller:r}}getActualHeight(){return this.root.config.rows.reduce((e,n)=>(e+=n.height,e),0)}getActualWidth(){return this.root.config.columns.reduce((e,n)=>(e+=n.width,e),0)}updateScrollerSize(){const e=this.getActualHeight(),n=this.getActualWidth();this.setScrollerHeight(e),this.setScrollerWidth(n)}setScrollerHeight(e){this.verticalScroller.style.height=e+"px"}setScrollerWidth(e){this.horizontalScroller.style.width=e+"px"}}class Vr{constructor(e){U(this,"fontSize",16);U(this,"fontColor","black");U(this,"background","white");U(this,"borderColor","black");U(this,"selectedBackground","#4287f5");U(this,"selectedFontColor","#ffffff");e&&Object.assign(this,e)}}class Ro{constructor(e,n){U(this,"row");U(this,"column");this.row=e,this.column=n}}class No{constructor(e){U(this,"value");U(this,"displayValue");U(this,"resultValue");U(this,"position");U(this,"style");this.value=e.value,this.displayValue=e.displayValue,this.resultValue=e.resultValue,this.position=e.position,this.style=e.style}}let $n=class{constructor(e){U(this,"value");U(this,"displayValue");U(this,"resultValue");U(this,"position");U(this,"style",null);U(this,"cellsDependsOnThisCell",[]);U(this,"dependedFromCells",[]);this.value=e.value,this.displayValue=e.displayValue,this.resultValue=e.resultValue,this.position=e.position,this.style=e.style}getSerializableCell(){return new No({displayValue:this.displayValue,position:this.position,resultValue:this.resultValue,style:this.style,value:this.value})}changeStyles(e){this.style=e}changeValues(e){Object.assign(this,e)}evalFormula(e){this.value.substring(0,1)==="="&&(this.resultValue=e.parser.parse(this.value.slice(1),{col:this.position.column,row:this.position.row}))}render(e){const n=new kt(e.config,this.position);let{x:r,y:i}=n;const{height:a,width:c}=n,{ctx:h}=e;i-=e.viewport.top,r-=e.viewport.left;const p=this.style??e.styles.cells;h.clearRect(r,i,c,a),h.fillStyle=p.background,h.strokeStyle="black",h.fillRect(r,i,c-1,a-1),h.strokeRect(r,i,c,a),h.fillStyle=p.fontColor,h.textAlign="left",h.font=`${p.fontSize}px Arial`,h.textBaseline="middle",h.fillText(this.displayValue,r+2,i+a/2)}},ia=class{constructor(e){U(this,"element");U(this,"ctx");U(this,"root");this.root=e;const n=document.createElement("canvas");n.classList.add(Ft+"sheet"),n.height=this.root.config.view.height,n.width=this.root.config.view.width,n.style.width=this.root.config.view.width+"px",n.style.height=this.root.config.view.height+"px",n.style.left="0px",this.element=n;const r=this.element.getContext("2d");if(!r)throw new Error("Enable hardware acceleration");this.ctx=r}getCellByCoords(e,n){let r=0,i=0;for(;i<=n&&(i+=this.root.config.rows[r].height,!(i>=n));)r++;let a=0,c=0;for(;c<=e&&(c+=this.root.config.columns[a].width,!(c>=e));)a++;return new Ro(r,a)}renderCell(e){const{column:n,row:r}=e;this.root.data[r][n].render(this.root)}getSelectionRange(){const{selectedCell:e,selectedRange:n}=this.root.selection;if(!(!e&&!n)){if(n){const r=Math.min(n.from.row,n.to.row),i=Math.min(n.from.column,n.to.column),a=Math.max(n.from.row,n.to.row),c=Math.max(n.from.column,n.to.column),h=new kt(this.root.config,{row:r,column:i});let p=0;for(let l=i;l<=c;l++)p+=this.root.config.columns[l].width;let u=0;for(let l=r;l<=a;l++)u+=this.root.config.rows[l].height;const o=h.x-this.root.viewport.left,s=h.y-this.root.viewport.top;return{x:o,y:s,height:u,width:p}}if(!n&&e){const r=new kt(this.root.config,e);return r.x-=this.root.viewport.left,r.y-=this.root.viewport.top,r}}}renderSelectionRange(e,n,r,i){this.ctx.save(),this.ctx.strokeStyle="#7da8ff",this.ctx.lineWidth=3,this.ctx.strokeRect(e,n,r,i),this.ctx.fillStyle="#7da8ff35",this.ctx.fillRect(e,n,r,i),this.ctx.restore()}renderSelection(){const e=this.getSelectionRange();if(!e)return;const{height:n,width:r,x:i,y:a}=e;this.renderSelectionRange(i,a,r,n)}renderSheet(){const e=this.root.viewport.firstRow,n=this.root.viewport.lastCol+3,r=this.root.viewport.lastRow+3,i=this.root.viewport.firstCol;for(let a=e;a<=r;a++)for(let c=i;c<=n&&!(!this.root.config.columns[c]||!this.root.config.rows[a]);c++)this.renderCell({column:c,row:a});this.renderSelection()}};class oa{constructor(e){U(this,"element");U(this,"root");this.root=e;const n=document.createElement("div");n.classList.add(Ft+"spreadsheet_container"),this.element=n,this.changeElementSizes(this.root.viewProps)}changeElementSizes(e){const{height:n,width:r}=e;this.element.style.width=r+this.root.rowsBarWidth+"px",this.element.style.height=n+this.root.columnsBarHeight+"px"}}class sa{constructor(e){U(this,"element");U(this,"root");U(this,"height",0);this.root=e;const n=document.createElement("div");n.classList.add(Ft+"toolbar"),this.element=n}}class Ln{constructor(e){U(this,"rows");U(this,"columns");U(this,"view",{width:800,height:600});U(this,"onCellClick",null);U(this,"onSelectonChange",null);U(this,"onCellChange",null);U(this,"onCopy");this.columns=e.columns,this.rows=e.rows,this.view=e.view,this.onCellClick=e.onCellClick??null,this.onSelectonChange=e.onSelectionChange??null,this.onCellChange=e.onCellChange??null,this.onCopy=e.onCopy??null}}class Hn{constructor(){U(this,"selectedCell",null);U(this,"selectedRange",null)}}class Ao{constructor(){U(this,"cells");this.cells=new Vr}}class Ur{constructor(e,n){U(this,"root");U(this,"top");U(this,"left");U(this,"right");U(this,"bottom");U(this,"firstRow");U(this,"lastRow");U(this,"firstCol");U(this,"lastCol");this.root=e,this.top=n.top,this.left=n.left,this.right=n.right,this.bottom=n.bottom,this.firstRow=this.getFirstRow(),this.lastCol=this.getFirstRow();//!Temp -this.firstCol=this.getFirstRow();//!Temp -this.lastRow=this.getLastRow(),this.updateValues({top:0,left:0,right:this.root.viewProps.width,bottom:this.root.viewProps.height})}updateValues(e){this.top=e.top,this.left=e.left,this.right=e.right,this.bottom=e.bottom,this.firstRow=this.getFirstRow(),this.lastRow=this.getLastRow(),this.firstCol=this.getFirstCol(),this.lastCol=this.getLastCol()}getFirstRow(){return this.root.cache.getRowByYCoord(this.top)}getLastRow(){return this.root.cache.getRowByYCoord(this.bottom)}getFirstCol(){return this.root.cache.getColumnByXCoord(this.left)}getLastCol(){return this.root.cache.getColumnByXCoord(this.right)}}let Gr=class{constructor(e){U(this,"width");U(this,"title");this.width=e.width,this.title=e.title}};class $r{constructor(e){U(this,"height");U(this,"title");this.height=e.height,this.title=e.title}}function Hr(t,e,n=!1){const r=[];for(let i=0;i<=t;i++){const a=[];for(let c=0;c<=e;c++){const h=n?`${i}:${c}`:"",p=new $n({displayValue:h,resultValue:h,value:h,position:{column:c,row:i},style:null});a.push(p)}r.push(a)}return r}function yo(t,e){const n=[];for(let a=0;a<=t;a++){const c=new $r({height:40,title:String(a)});n.push(c)}const r=[];for(let a=0;a<=e;a++){const c=new Gr({title:String(a),width:150});r.push(c)}return new Ln({columns:r,rows:n,view:{height:600,width:800}})}function aa(t,e){const n=Hr(t,e),r=yo(t,e);return{data:n,config:r}}class To{constructor(e){U(this,"xPos");U(this,"colIdx");this.xPos=e.xPos,this.colIdx=e.colIdx}}class wo{constructor(e){U(this,"yPos");U(this,"rowIdx");this.yPos=e.yPos,this.rowIdx=e.rowIdx}}class Co{constructor(e){U(this,"columns");U(this,"rows");this.columns=e.columns,this.rows=e.rows}getRowByYCoord(e){let n=0;for(let r=0;r=Math.min(r.from.column,r.to.column)&&e<=Math.max(r.from.column,r.to.column):!1}renderText(e,n){const{width:r,x:i}=n;this.ctx.fillStyle="black",this.ctx.textAlign="center",this.ctx.textBaseline="middle",this.ctx.font="12px Arial",this.ctx.fillText(this.root.config.columns[e].title,i+r/2-this.root.viewport.left,0+this.height/2)}renderRect(e,n){const{width:r,x:i}=n,a=this.isColumnSelected(e);this.ctx.fillStyle=a?"#c7ebff":"white",this.ctx.strokeStyle="black",this.ctx.lineWidth=1;const c=i-this.root.viewport.left;this.ctx.fillRect(c-1,0,r,this.height),this.ctx.strokeRect(c-1,0,r,this.height)}renderSingleColumn(e){const n=new kt(this.root.config,{row:0,column:e});this.renderRect(e,n),this.renderText(e,n)}renderBar(){const e=this.root.viewport.lastCol+3,n=this.root.viewport.firstCol;this.ctx.beginPath(),this.ctx.strokeStyle="black",this.ctx.lineWidth=1,this.ctx.moveTo(0,0),this.ctx.lineTo(0,this.height),this.ctx.closePath(),this.ctx.stroke();for(let r=n;r<=e&&this.root.config.columns[r];r++)this.renderSingleColumn(r)}}class la{constructor(e){U(this,"element");U(this,"ctx");U(this,"root");U(this,"width",35);U(this,"height");U(this,"resizerHeight",1);this.root=e,this.element=this.createElement();const n=this.element.getContext("2d");if(!n)throw new Error("Enable hardware acceleration");this.ctx=n,this.height=this.root.viewProps.height}createElement(){const e=document.createElement("canvas");return e.style.position="absolute",e.style.height=this.root.viewProps.height+"px",e.style.width=this.width+"px",e.style.display="block",e.style.borderTop="1px solid black",e.width=this.width,e.height=this.root.viewProps.height,e}setElementPosition(e,n){this.element.style.top=e+"px",this.element.style.left=n+"px"}isRowSelected(e){const{selectedCell:n,selectedRange:r}=this.root.selection;return n&&n.row===e?!0:r?e>=Math.min(r.from.row,r.to.row)&&e<=Math.max(r.from.row,r.to.row):!1}renderText(e,n){const{y:r,height:i}=n;this.ctx.fillStyle="black",this.ctx.textAlign="center",this.ctx.textBaseline="middle",this.ctx.font="12px Arial",this.ctx.fillText(this.root.config.rows[e].title,this.width/2,r-this.root.viewport.top+i/2)}renderRect(e,n){const{y:r,height:i}=n,a=this.isRowSelected(e);this.ctx.fillStyle=a?"#c7ebff":"white",this.ctx.strokeStyle="black",this.ctx.lineWidth=this.resizerHeight;const c=r-this.root.viewport.top;this.ctx.fillRect(0,c-1,this.width,i),this.ctx.strokeRect(0,c-1,this.width,i)}renderSingleRow(e){const n=new kt(this.root.config,{column:0,row:e});this.renderRect(e,n),this.renderText(e,n)}renderBar(){const e=this.root.viewport.lastRow+3,n=this.root.viewport.firstRow;this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.strokeStyle="black",this.ctx.lineWidth=16,this.ctx.lineTo(35,0),this.ctx.closePath(),this.ctx.stroke();for(let r=n;r<=e&&this.root.config.rows[r];r++)this.renderSingleRow(r)}}class ua{constructor(e){U(this,"saved",null);U(this,"root");this.root=e}copy(e,n){const r=e.map(i=>i.map(a=>a.displayValue).join(" ")).join(` -`);this.saved=e,navigator.clipboard.writeText(r),this.root.events.dispatch({type:Ve.COPY_CELLS,data:e,dataAsString:r,range:n})}paste(e,{column:n,row:r},i){if(!this.saved){if(!i.clipboardData)return;const h=i.clipboardData.getData("text");try{const u=h.split(` -`).map(l=>l.split(" ")).map(l=>l.map(f=>{const v={displayValue:f,position:{column:n,row:r},resultValue:f,style:new Vr,value:f};return new $n(v)})),o=u.length,s=u[0]?u[0].length:0;for(let l=0;l{i[n[o]]=o});class a{constructor(){this.Types=n,this.type2Number={number:n.NUMBER,boolean:n.BOOLEAN,string:n.STRING,object:-1}}checkFunctionResult(s){if(typeof s==="number"){if(isNaN(s))return t.VALUE;if(!isFinite(s))return t.NUM}return s??t.NULL}flattenDeep(s){return s.reduce((l,f)=>Array.isArray(f)?l.concat(this.flattenDeep(f)):l.concat(f),[])}acceptNumber(s,l=!0,f=!0){if(s instanceof t)return s;let v;if(typeof s=="number")v=s;else if(typeof s=="boolean")if(f)v=Number(s);else throw t.VALUE;else if(typeof s=="string"){if(s.length===0||(v=Number(s),v!==v))throw t.VALUE}else if(Array.isArray(s))if(l)v=this.acceptNumber(s[0][0]);else if(s[0].length===1)v=this.acceptNumber(s[0][0]);else throw t.VALUE;else throw Error("Unknown type in FormulaHelpers.acceptNumber");return v}flattenParams(s,l,f,v,d=null,g=1){if(s.length{const{isCellRef:A,isRangeRef:m,isArray:N}=E,y=E.value instanceof e,R=!A&&!m&&!N&&!y,T={isLiteral:R,isCellRef:A,isRangeRef:m,isArray:N,isUnion:y};if(R)E.omitted?E=d:E=this.accept(E,l,d),v(E,T);else if(A)v(E.value,T);else if(y){if(!f)throw t.VALUE;E=E.value.data,E=this.flattenDeep(E),E.forEach(w=>{v(w,T)})}else(m||N)&&(E=this.flattenDeep(E.value),E.forEach(w=>{v(w,T)}))})}accept(s,l=null,f,v=!0,d=!1){if(Array.isArray(l)&&(l=l[0]),s==null&&f===void 0)throw t.ARG_MISSING([l]);if(s==null)return f;if(typeof s!="object"||Array.isArray(s))return s;const g=s.isArray;if(s.value!=null&&(s=s.value),l==null)return s;if(s instanceof t)throw s;if(l===n.ARRAY){if(Array.isArray(s))return v?this.flattenDeep(s):s;if(s instanceof e)throw t.VALUE;if(d)return v?[s]:[[s]];throw t.VALUE}else if(l===n.COLLECTIONS)return s;g&&(s=s[0][0]);const E=this.type(s);if(l===n.STRING)E===n.BOOLEAN?s=s?"TRUE":"FALSE":s=`${s}`;else if(l===n.BOOLEAN){if(E===n.STRING)throw t.VALUE;E===n.NUMBER&&(s=!!s)}else if(l===n.NUMBER)s=this.acceptNumber(s,!1);else if(l===n.NUMBER_NO_BOOLEAN)s=this.acceptNumber(s,!1,!1);else throw t.VALUE;return s}type(s){let l=this.type2Number[typeof s];return l===-1&&(Array.isArray(s)?l=n.ARRAY:s.ref?s.ref.from?l=n.RANGE_REF:l=n.CELL_REF:s instanceof e&&(l=n.COLLECTIONS)),l}isRangeRef(s){return s.ref&&s.ref.from}isCellRef(s){return s.ref&&!s.ref.from}retrieveRanges(s,l,f){return f=u.extend(l,f),l=this.retrieveArg(s,l),l=c.accept(l,n.ARRAY,void 0,!1,!0),f!==l?(f=this.retrieveArg(s,f),f=c.accept(f,n.ARRAY,void 0,!1,!0)):f=l,[l,f]}retrieveArg(s,l){if(l===null)return{value:0,isArray:!1,omitted:!0};const f=s.utils.extractRefValue(l);return{value:f.val,isArray:f.isArray,ref:l.ref}}}const c=new a,h={isWildCard:o=>typeof o=="string"?/[*?]/.test(o):!1,toRegex:(o,s)=>RegExp(o.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/([^~]??)[?]/g,"$1.").replace(/([^~]??)[*]/g,"$1.*").replace(/~([?*])/g,"$1"),s)},p={parse:o=>{const s=typeof o;if(s==="string"){const l=o.toUpperCase();if(l==="TRUE"||l==="FALSE")return{op:"=",value:l==="TRUE"};const f=o.match(/(<>|>=|<=|>|<|=)(.*)/);if(f){let v=f[1],d;if(isNaN(f[2])){const g=f[2].toUpperCase();if(g==="TRUE"||g==="FALSE")d=g==="TRUE";else if(/#NULL!|#DIV\/0!|#VALUE!|#NAME\?|#NUM!|#N\/A|#REF!/.test(f[2]))d=new t(f[2]);else if(d=f[2],h.isWildCard(d))return{op:"wc",value:h.toRegex(d),match:v==="="}}else d=Number(f[2]);return{op:v,value:d}}else return h.isWildCard(o)?{op:"wc",value:h.toRegex(o),match:!0}:{op:"=",value:o}}else{if(s==="boolean"||s==="number"||Array.isArray(o)||o instanceof t)return{op:"=",value:o};throw Error(`Criteria.parse: type ${typeof o} not support`)}}},u={columnNumberToName:o=>{let s=o,l="",f=0;for(;s>0;)f=(s-1)%26,l=String.fromCharCode("A".charCodeAt(0)+f)+l,s=Math.floor((s-f)/26);return l},columnNameToNumber:o=>{o=o.toUpperCase();const s=o.length;let l=0;for(let f=0;f{if(s==null)return o;let l,f;if(c.isCellRef(o))l=0,f=0;else if(c.isRangeRef(o))l=o.ref.to.row-o.ref.from.row,f=o.ref.to.col-o.ref.from.col;else throw Error("Address.extend should not reach here.");return c.isCellRef(s)?(l>0||f>0)&&(s={ref:{from:{col:s.ref.col,row:s.ref.row},to:{row:s.ref.row+l,col:s.ref.col+f}}}):(s.ref.to.row=s.ref.from.row+l,s.ref.to.col=s.ref.from.col+f),s}};return cr={FormulaHelpers:c,Types:n,ReversedTypes:i,Factorials:r,WildCard:h,Criteria:p,Address:u},cr}var lr,ui;function he(){if(ui)return lr;ui=1;class t extends Error{constructor(n,r,i){if(super(r),r==null&&i==null&&t.errorMap.has(n))return t.errorMap.get(n);r==null&&i==null?(this._error=n,t.errorMap.set(n,this)):this._error=n,this.details=i}get error(){return this._error}get name(){return this._error}equals(n){return n instanceof t&&n._error===this._error}toString(){return this._error}}return t.errorMap=new Map,t.DIV0=new t("#DIV/0!"),t.NA=new t("#N/A"),t.NAME=new t("#NAME?"),t.NULL=new t("#NULL!"),t.NUM=new t("#NUM!"),t.REF=new t("#REF!"),t.VALUE=new t("#VALUE!"),t.NOT_IMPLEMENTED=e=>new t("#NAME?",`Function ${e} is not implemented.`),t.TOO_MANY_ARGS=e=>new t("#N/A",`Function ${e} has too many arguments.`),t.ARG_MISSING=e=>{const{Types:n}=ge();return new t("#N/A",`Argument type ${e.map(r=>n[r]).join(", ")} is missing.`)},t.ERROR=(e,n)=>new t("#ERROR!",e,n),lr=t,lr}let _e=class{};_e.version="0.10.3";function Vt(t){let e="",n=t.length-1;for(;n>=0;)e+=t.charAt(n--);return e}function ke(t,e){let n="";for(;n.length=e?n:ke("0",e-n.length)+n}function ur(t,e){let n=""+t;return n.length>=e?n:ke(" ",e-n.length)+n}function hn(t,e){let n=""+t;return n.length>=e?n:n+ke(" ",e-n.length)}function da(t,e){let n=""+Math.round(t);return n.length>=e?n:ke("0",e-n.length)+n}function va(t,e){let n=""+t;return n.length>=e?n:ke("0",e-n.length)+n}const fi=Math.pow(2,32);function Gt(t,e){if(t>fi||t<-fi)return da(t,e);const n=Math.round(t);return va(n,e)}function _n(t,e){return e=e||0,t.length>=7+e&&(t.charCodeAt(e)|32)===103&&(t.charCodeAt(e+1)|32)===101&&(t.charCodeAt(e+2)|32)===110&&(t.charCodeAt(e+3)|32)===101&&(t.charCodeAt(e+4)|32)===114&&(t.charCodeAt(e+5)|32)===97&&(t.charCodeAt(e+6)|32)===108}const hi=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],fr=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function Oo(t){t[0]="General",t[1]="0",t[2]="0.00",t[3]="#,##0",t[4]="#,##0.00",t[9]="0%",t[10]="0.00%",t[11]="0.00E+00",t[12]="# ?/?",t[13]="# ??/??",t[14]="m/d/yy",t[15]="d-mmm-yy",t[16]="d-mmm",t[17]="mmm-yy",t[18]="h:mm AM/PM",t[19]="h:mm:ss AM/PM",t[20]="h:mm",t[21]="h:mm:ss",t[22]="m/d/yy h:mm",t[37]="#,##0 ;(#,##0)",t[38]="#,##0 ;[Red](#,##0)",t[39]="#,##0.00;(#,##0.00)",t[40]="#,##0.00;[Red](#,##0.00)",t[45]="mm:ss",t[46]="[h]:mm:ss",t[47]="mmss.0",t[48]="##0.0E+0",t[49]="@",t[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',t[65535]="General"}const _t={};Oo(_t);function pn(t,e,n){const r=t<0?-1:1;let i=t*r,a=0,c=1,h=0,p=1,u=0,o=0,s=Math.floor(i);for(;ue&&(u>e?(o=p,h=a):(o=u,h=c)),!n)return[0,r*h,o];const l=Math.floor(r*h/o);return[l,r*h-l*o,o]}function Zt(t,e,n){if(t>2958465||t<0)return null;let r=t|0,i=Math.floor(86400*(t-r)),a=0,c=[];const h={D:r,T:i,u:86400*(t-r)-i,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(h.u)<1e-6&&(h.u=0),e&&e.date1904&&(r+=1462),h.u>.9999&&(h.u=0,++i===86400&&(h.T=i=0,++r,++h.D)),r===60)c=n?[1317,10,29]:[1900,2,29],a=3;else if(r===0)c=n?[1317,8,29]:[1900,1,0],a=6;else{r>60&&--r;const p=new Date(1900,0,1);p.setDate(p.getDate()+r-1),c=[p.getFullYear(),p.getMonth()+1,p.getDate()],a=p.getDay(),r<60&&(a=(a+6)%7),n&&(a=ma())}return h.y=c[0],h.m=c[1],h.d=c[2],h.S=i%60,i=Math.floor(i/60),h.M=i%60,i=Math.floor(i/60),h.H=i,h.q=a,h}_e.parse_date_code=Zt;const Mo=new Date(1899,11,31,0,0,0),ga=Mo.getTime(),Ea=new Date(1900,2,1,0,0,0);function Uo(t,e){let n=t.getTime();return e?n-=1461*24*60*60*1e3:t>=Ea&&(n+=24*60*60*1e3),(n-(ga+(t.getTimezoneOffset()-Mo.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function Lo(t){return t.toString(10)}_e._general_int=Lo;const _o=function(){const e=/\.(\d*[1-9])0+$/,n=/\.0*$/,r=/\.(\d*[1-9])0+/,i=/\.0*[Ee]/,a=/(E[+-])(\d)$/;function c(o){const s=o<0?12:11;let l=u(o.toFixed(12));return l.length<=s||(l=o.toPrecision(10),l.length<=s)?l:o.toExponential(5)}function h(o){let s=o.toFixed(11).replace(e,".$1");return s.length>(o<0?12:11)&&(s=o.toPrecision(6)),s}function p(o){for(let s=0;s!==o.length;++s)if((o.charCodeAt(s)|32)===101)return o.replace(r,".$1").replace(i,"E").replace("e","E").replace(a,"$10$2");return o}function u(o){return o.indexOf(".")>-1?o.replace(n,"").replace(e,".$1"):o}return function(s){let l=Math.floor(Math.log(Math.abs(s))*Math.LOG10E),f;return l>=-4&&l<=-1?f=s.toPrecision(10+l):Math.abs(l)<=9?f=c(s):l===10?f=s.toFixed(10).substr(0,12):f=h(s),u(p(f))}}();_e._general_num=_o;function Pn(t,e){switch(typeof t){case"string":return t;case"boolean":return t?"TRUE":"FALSE";case"number":return(t|0)===t?Lo(t):_o(t);case"undefined":return"";case"object":if(t==null)return"";if(t instanceof Date)return Bo(14,Uo(t,e&&e.date1904),e)}throw new Error("unsupported value in General format: "+t)}_e._general=Pn;function ma(){return 0}function Ra(t,e,n,r){let i="",a=0,c=0,h=n.y,p,u=0;switch(t){case 98:h=n.y+543;case 121:switch(e.length){case 1:case 2:p=h%100,u=2;break;default:p=h%1e4,u=4;break}break;case 109:switch(e.length){case 1:case 2:p=n.m,u=e.length;break;case 3:return fr[n.m-1][1];case 5:return fr[n.m-1][0];default:return fr[n.m-1][2]}break;case 100:switch(e.length){case 1:case 2:p=n.d,u=e.length;break;case 3:return hi[n.q][0];default:return hi[n.q][1]}break;case 104:switch(e.length){case 1:case 2:p=1+(n.H+11)%12,u=e.length;break;default:throw"bad hour format: "+e}break;case 72:switch(e.length){case 1:case 2:p=n.H,u=e.length;break;default:throw"bad hour format: "+e}break;case 77:switch(e.length){case 1:case 2:p=n.M,u=e.length;break;default:throw"bad minute format: "+e}break;case 115:if(e!=="s"&&e!=="ss"&&e!==".0"&&e!==".00"&&e!==".000")throw"bad second format: "+e;return n.u===0&&(e==="s"||e==="ss")?Xe(n.S,e.length):(r>=2?c=r===3?1e3:100:c=r===1?10:1,a=Math.round(c*(n.S+n.u)),a>=60*c&&(a=0),e==="s"?a===0?"0":""+a/c:(i=Xe(a,2+r),e==="ss"?i.substr(0,2):"."+i.substr(2,e.length-1)));case 90:switch(e){case"[h]":case"[hh]":p=n.D*24+n.H;break;case"[m]":case"[mm]":p=(n.D*24+n.H)*60+n.M;break;case"[s]":case"[ss]":p=((n.D*24+n.H)*60+n.M)*60+Math.round(n.S+n.u);break;default:throw"bad abstime format: "+e}u=e.length===3?1:2;break;case 101:p=h,u=1}return u>0?Xe(p,u):""}function Nt(t){if(t.length<=3)return t;let n=t.length%3,r=t.substr(0,n);for(;n!==t.length;n+=3)r+=(r.length>0?",":"")+t.substr(n,3);return r}const ht=function(){const e=/%/g;function n(y,R,T){const w=R.replace(e,""),C=R.length-w.length;return ht(y,w,T*Math.pow(10,2*C))+ke("%",C)}function r(y,R,T){let w=R.length-1;for(;R.charCodeAt(w-1)===44;)--w;return ht(y,R.substr(0,w),T/Math.pow(10,3*(R.length-w)))}function i(y,R){let T,w=y.indexOf("E")-y.indexOf(".")-1;if(y.match(/^#+0.0E\+0$/)){if(R===0)return"0.0E+0";if(R<0)return"-"+i(y,-R);let C=y.indexOf(".");C===-1&&(C=y.indexOf("E"));let M=Math.floor(Math.log(R)*Math.LOG10E)%C;if(M<0&&(M+=C),T=(R/Math.pow(10,M)).toPrecision(w+1+(C+M)%C),T.indexOf("e")===-1){const _=Math.floor(Math.log(R)*Math.LOG10E);for(T.indexOf(".")===-1?T=T.charAt(0)+"."+T.substr(1)+"E+"+(_-T.length+M):T+="E+"+(_-M);T.substr(0,2)==="0.";)T=T.charAt(0)+T.substr(2,C)+"."+T.substr(2+C),T=T.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");T=T.replace(/\+-/,"-")}T=T.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(_,W,F,S){return W+F+S.substr(0,(C+M)%C)+"."+S.substr(M)+"E"})}else T=R.toExponential(w);return y.match(/E\+00$/)&&T.match(/e[+-]\d$/)&&(T=T.substr(0,T.length-1)+"0"+T.charAt(T.length-1)),y.match(/E\-/)&&T.match(/e\+/)&&(T=T.replace(/e\+/,"e")),T.replace("e","E")}const a=/# (\?+)( ?)\/( ?)(\d+)/;function c(y,R,T){const w=parseInt(y[4],10),C=Math.round(R*w),M=Math.floor(C/w);let _=C-M*w,W=w;return T+(M===0?"":""+M)+" "+(_===0?ke(" ",y[1].length+1+y[4].length):ur(_,y[1].length)+y[2]+"/"+y[3]+Xe(W,y[4].length))}function h(y,R,T){return T+(R===0?"":""+R)+ke(" ",y[1].length+2+y[4].length)}const p=/^#*0*\.([0#]+)/,u=/\).*[0#]/,o=/\(###\) ###\\?-####/;function s(y){let R="",T;for(let w=0;w!==y.length;++w)switch(T=y.charCodeAt(w)){case 35:break;case 63:R+=" ";break;case 48:R+="0";break;default:R+=String.fromCharCode(T)}return R}function l(y,R){const T=Math.pow(10,R);return""+Math.round(y*T)/T}function f(y,R){return R<(""+Math.round((y-Math.floor(y))*Math.pow(10,R))).length?0:Math.round((y-Math.floor(y))*Math.pow(10,R))}function v(y,R){return R<(""+Math.round((y-Math.floor(y))*Math.pow(10,R))).length?1:0}function d(y){return y<2147483647&&y>-2147483648?""+(y>=0?y|0:y-1|0):""+Math.floor(y)}function g(y,R,T){if(y.charCodeAt(0)===40&&!R.match(u)){const G=R.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return T>=0?g("n",G,T):"("+g("n",G,-T)+")"}if(R.charCodeAt(R.length-1)===44)return r(y,R,T);if(R.indexOf("%")!==-1)return n(y,R,T);if(R.indexOf("E")!==-1)return i(R,T);if(R.charCodeAt(0)===36)return"$"+g(y,R.substr(R.charAt(1)==" "?2:1),T);let w,C,M,_,W=Math.abs(T),F=T<0?"-":"";if(R.match(/^00+$/))return F+Gt(W,R.length);if(R.match(/^[#?]+$/))return w=Gt(T,0),w==="0"&&(w=""),w.length>R.length?w:s(R.substr(0,R.length-w.length))+w;if(C=R.match(a))return c(C,W,F);if(R.match(/^#+0+$/))return F+Gt(W,R.length-R.indexOf("0"));if(C=R.match(p))return w=l(T,C[1].length).replace(/^([^\.]+)$/,"$1."+s(C[1])).replace(/\.$/,"."+s(C[1])).replace(/\.(\d*)$/,function(G,J){return"."+J+ke("0",s(C[1]).length-J.length)}),R.indexOf("0.")!==-1?w:w.replace(/^0\./,".");if(R=R.replace(/^#+([0.])/,"$1"),C=R.match(/^(0*)\.(#*)$/))return F+l(W,C[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,C[1].length?"0.":".");if(C=R.match(/^#{1,3},##0(\.?)$/))return F+Nt(Gt(W,0));if(C=R.match(/^#,##0\.([#0]*0)$/))return T<0?"-"+g(y,R,-T):Nt(""+(Math.floor(T)+v(T,C[1].length)))+"."+Xe(f(T,C[1].length),C[1].length);if(C=R.match(/^#,#*,#0/))return g(y,R.replace(/^#,#*,/,""),T);if(C=R.match(/^([0#]+)(\\?-([0#]+))+$/))return w=Vt(g(y,R.replace(/[\\-]/g,""),T)),M=0,Vt(Vt(R.replace(/\\/g,"")).replace(/[0#]/g,function(G){return M=0?N("n",G,T):"("+N("n",G,-T)+")"}if(R.charCodeAt(R.length-1)===44)return E(y,R,T);if(R.indexOf("%")!==-1)return A(y,R,T);if(R.indexOf("E")!==-1)return m(R,T);if(R.charCodeAt(0)===36)return"$"+N(y,R.substr(R.charAt(1)==" "?2:1),T);let w,C,M,_,W=Math.abs(T),F=T<0?"-":"";if(R.match(/^00+$/))return F+Xe(W,R.length);if(R.match(/^[#?]+$/))return w=""+T,T===0&&(w=""),w.length>R.length?w:s(R.substr(0,R.length-w.length))+w;if(C=R.match(a))return h(C,W,F);if(R.match(/^#+0+$/))return F+Xe(W,R.length-R.indexOf("0"));if(C=R.match(p))return w=(""+T).replace(/^([^\.]+)$/,"$1."+s(C[1])).replace(/\.$/,"."+s(C[1])),w=w.replace(/\.(\d*)$/,function(G,J){return"."+J+ke("0",s(C[1]).length-J.length)}),R.indexOf("0.")!==-1?w:w.replace(/^0\./,".");if(R=R.replace(/^#+([0.])/,"$1"),C=R.match(/^(0*)\.(#*)$/))return F+(""+W).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,C[1].length?"0.":".");if(C=R.match(/^#{1,3},##0(\.?)$/))return F+Nt(""+W);if(C=R.match(/^#,##0\.([#0]*0)$/))return T<0?"-"+N(y,R,-T):Nt(""+T)+"."+ke("0",C[1].length);if(C=R.match(/^#,#*,#0/))return N(y,R.replace(/^#,#*,/,""),T);if(C=R.match(/^([0#]+)(\\?-([0#]+))+$/))return w=Vt(N(y,R.replace(/[\\-]/g,""),T)),M=0,Vt(Vt(R.replace(/\\/g,"")).replace(/[0#]/g,function(G){return M-1||n=="\\"&&t.charAt(e+1)=="-"&&"0#".indexOf(t.charAt(e+2))>-1););break;case"?":for(;t.charAt(++e)===n;);break;case"*":++e,(t.charAt(e)===" "||t.charAt(e)==="*")&&++e;break;case"(":case")":++e;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;e-1;);break;case" ":++e;break;default:++e;break}return!1}_e.is_date=xo;function So(t,e,n,r){let i=[],a="",c=0,h="",p="t",u,o,s,l="H";for(;c=12?"P":"A"),w.t="T",l="h",c+=3):t.substr(c,5).toUpperCase()==="AM/PM"?(u!=null&&(w.v=u.H>=12?"PM":"AM"),w.t="T",c+=5,l="h"):(w.t="t",++c),u==null&&w.t==="T")return"";i[i.length]=w,p=h;break;case"[":for(a=h;t.charAt(c++)!=="]"&&c-1&&(a=(a.match(/\$([^-\[\]]*)/)||[])[1]||"$",xo(t)||(i[i.length]={t:"t",v:a}));break;case".":if(u!=null){for(a=h;++c-1||h=="\\"&&t.charAt(c+1)=="-"&&c-1;)a+=h;i[i.length]={t:"n",v:a};break;case"?":for(a=h;t.charAt(++c)===h;)a+=h;i[i.length]={t:h,v:a},p=h;break;case"*":++c,(t.charAt(c)===" "||t.charAt(c)==="*")&&++c;break;case"(":case")":i[i.length]={t:r===1||typeof e=="number"&&e<0?"t":h,v:h},++c;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(a=h;c-1;)a+=t.charAt(c);i[i.length]={t:"D",v:a};break;case" ":i[i.length]={t:h,v:h},++c;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(h)===-1)throw new Error("unrecognized character "+h+" in "+t);i[i.length]={t:"t",v:h},++c;break}let f=0,v=0,d;for(c=i.length-1,p="t";c>=0;--c)switch(i[c].t){case"h":case"H":i[c].t=l,p="h",f<1&&(f=1);break;case"s":(d=i[c].v.match(/\.0+$/))&&(v=Math.max(v,d[0].length-1)),f<3&&(f=3);case"d":case"y":case"M":case"e":p=i[c].t;break;case"m":p==="s"&&(i[c].t="M",f<2&&(f=2));break;case"X":break;case"Z":f<1&&i[c].v.match(/[Hh]/)&&(f=1),f<2&&i[c].v.match(/[Mm]/)&&(f=2),f<3&&i[c].v.match(/[Ss]/)&&(f=3)}switch(f){case 0:break;case 1:u.u>=.5&&(u.u=0,++u.S),u.S>=60&&(u.S=0,++u.M),u.M>=60&&(u.M=0,++u.H);break;case 2:u.u>=.5&&(u.u=0,++u.S),u.S>=60&&(u.S=0,++u.M);break}let g="",E;for(c=0;c0){g.charCodeAt(0)===40?(m=e<0&&g.charCodeAt(0)===45?-e:e,N=ht("(",g,m)):(m=e<0&&r>1?-e:e,N=ht("n",g,m),m<0&&i[0]&&i[0].t==="t"&&(N=N.substr(1),i[0].v="-"+i[0].v)),E=N.length-1;let R=i.length;for(c=0;c-1){R=c;break}let T=i.length;if(R===i.length&&N.indexOf("E")===-1){for(c=i.length-1;c>=0;--c)i[c]==null||"n?(".indexOf(i[c].t)===-1||(E>=i[c].v.length-1?(E-=i[c].v.length,i[c].v=N.substr(E+1,i[c].v.length)):E<0?i[c].v="":(i[c].v=N.substr(0,E+1),E=-1),i[c].t="t",T=c);E>=0&&T=0;--c)if(!(i[c]==null||"n?(".indexOf(i[c].t)===-1)){for(o=i[c].v.indexOf(".")>-1&&c===R?i[c].v.indexOf(".")-1:i[c].v.length-1,A=i[c].v.substr(o+1);o>=0;--o)E>=0&&(i[c].v.charAt(o)==="0"||i[c].v.charAt(o)==="#")&&(A=N.charAt(E--)+A);i[c].v=A,i[c].t="t",T=c}for(E>=0&&T-1&&c===R?i[c].v.indexOf(".")+1:0,A=i[c].v.substr(0,o);o-1&&(m=r>1&&e<0&&c>0&&i[c-1].v==="-"?-e:e,i[c].v=ht(i[c].t,i[c].v,m),i[c].t="t");let y="";for(c=0;c!==i.length;++c)i[c]!=null&&(y+=i[c].v);return y}_e._eval=So;const pi=/\[[=<>]/,di=/\[([=<>]*)(-?\d+\.?\d*)\]/;function vi(t,e){if(e==null)return!1;const n=parseFloat(e[2]);switch(e[1]){case"=":if(t===n)return!0;break;case">":if(t>n)return!0;break;case"<":if(t":if(t!==n)return!0;break;case">=":if(t>=n)return!0;break;case"<=":if(t<=n)return!0;break}return!1}function Na(t,e){let n=Po(t),r=n.length,i=n[r-1].indexOf("@");if(r<4&&i>-1&&--r,n.length>4)throw new Error("cannot find right format for |"+n.join("|")+"|");if(typeof e!="number")return[4,n.length===4||i>-1?n[n.length-1]:"@"];switch(n.length){case 1:n=i>-1?["General","General","General",n[0]]:[n[0],n[0],n[0],"@"];break;case 2:n=i>-1?[n[0],n[0],n[0],n[1]]:[n[0],n[1],n[0],"@"];break;case 3:n=i>-1?[n[0],n[1],n[0],n[2]]:[n[0],n[1],n[2],"@"];break}const a=e>0?n[0]:e<0?n[1]:n[2];if(n[0].indexOf("[")===-1&&n[1].indexOf("[")===-1)return[r,a];if(n[0].match(pi)!=null||n[1].match(pi)!=null){const c=n[0].match(di),h=n[1].match(di);return vi(e,c)?[r,n[0]]:vi(e,h)?[r,n[1]]:[r,n[c!=null&&h!=null?2:1]]}return[r,a]}function Bo(t,e,n){n==null&&(n={});let r="";switch(typeof t){case"string":t==="m/d/yy"&&n.dateNF?r=n.dateNF:r=t;break;case"number":t===14&&n.dateNF?r=n.dateNF:r=(n.table!=null?n.table:_t)[t];break}if(_n(r,0))return Pn(e,n);e instanceof Date&&(e=Uo(e,n.date1904));const i=Na(r,e);if(_n(i[1]))return Pn(e,n);if(e===!0)e="TRUE";else if(e===!1)e="FALSE";else if(e===""||e==null)return"";return So(i[1],e,n,i[0])}function Fo(t,e){if(typeof e!="number"){e=+e||-1;for(let n=0;n<392;++n){if(_t[n]===void 0){e<0&&(e=n);continue}if(_t[n]===t){e=n;break}}e<0&&(e=391)}return _t[e]=t,e}_e.load=Fo;_e._table=_t;_e.get_table=function(){return _t};_e.load_table=function(e){for(let n=0;n!==392;++n)e[n]!==void 0&&Fo(e[n],n)};_e.init_table=Oo;_e.format=Bo;var bo=_e,Do={exports:{}};(function(t){const e="ศูนย์บาทถ้วน",n=["","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ด","แปด","เก้า"],r=["","สิบ","ร้อย","พัน","หมื่น","แสน","ล้าน"];function i(p){let u="";const o=p.length,s=7;if(o>s){const l=o-s+1,f=p.slice(0,l),v=p.slice(l);return i(f)+"ล้าน"+i(v)}else for(let l=0;l0&&(u+=n[f]+r[o-l-1])}return u}function a(p){let u=p;u=u.replace("หนึ่งสิบ","สิบ"),u=u.replace("สองสิบ","ยี่สิบ");const o=5;return u.length>o&&u.length-u.lastIndexOf("หนึ่ง")===o&&(u=u.substr(0,u.length-o)+"เอ็ด"),u}function c(p,u){let o="";return p===""&&u===""?o=e:p!==""&&u===""?o=p+"บาทถ้วน":p===""&&u!==""?o=u+"สตางค์":o=p+"บาท"+u+"สตางค์",o}function h(p){let u=e;if(isNaN(p)||p>=Number.MAX_SAFE_INTEGER)return u;const o=Math.floor(p).toString(),s=Math.round(p%1*100).toString(),l=Array.from(o).map(Number),f=Array.from(s).map(Number);let v=i(l),d=i(f);return v=a(v),d=a(d),u=c(v,d),u}t.exports!=null&&(t.exports=h)})(Do);var Aa=Do.exports;const Ce=he(),{FormulaHelpers:ya,Types:Y,WildCard:gi}=ge(),q=ya,hr=bo,Ta=Aa,Ei={latin:{halfRE:/[!-~]/g,fullRE:/[!-~]/g,delta:65248},hangul1:{halfRE:/[ᄀ-ᄒ]/g,fullRE:/[ᆨ-ᇂ]/g,delta:-60921},hangul2:{halfRE:/[ᅡ-ᅵ]/g,fullRE:/[ᅡ-ᅵ]/g,delta:-61025},kana:{delta:0,half:"。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚",full:"。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜"},extras:{delta:0,half:"¢£¬¯¦¥₩ |←↑→↓■°",full:"¢£¬ ̄¦¥₩ │←↑→↓■○"}},wa=t=>e=>t.delta?String.fromCharCode(e.charCodeAt(0)+t.delta):[...t.full][[...t.half].indexOf(e)],Ca=t=>e=>t.delta?String.fromCharCode(e.charCodeAt(0)-t.delta):[...t.half][[...t.full].indexOf(e)],Vo=(t,e)=>t[e+"RE"]||new RegExp("["+t[e]+"]","g"),Go=Object.keys(Ei).map(t=>Ei[t]),Ia=t=>Go.reduce((e,n)=>e.replace(Vo(n,"half"),wa(n)),t),Oa=t=>Go.reduce((e,n)=>e.replace(Vo(n,"full"),Ca(n)),t),ft={ASC:t=>(t=q.accept(t,Y.STRING),Oa(t)),BAHTTEXT:t=>{t=q.accept(t,Y.NUMBER);try{return Ta(t)}catch(e){throw Error(`Error in https://github.com/jojoee/bahttext -${e.toString()}`)}},CHAR:t=>{if(t=q.accept(t,Y.NUMBER),t>255||t<1)throw Ce.VALUE;return String.fromCharCode(t)},CLEAN:t=>(t=q.accept(t,Y.STRING),t.replace(/[\x00-\x1F]/g,"")),CODE:t=>{if(t=q.accept(t,Y.STRING),t.length===0)throw Ce.VALUE;return t.charCodeAt(0)},CONCAT:(...t)=>{let e="";return q.flattenParams(t,Y.STRING,!1,n=>{n=q.accept(n,Y.STRING),e+=n}),e},CONCATENATE:(...t)=>{let e="";if(t.length===0)throw Error("CONCATENATE need at least one argument.");return t.forEach(n=>{n=q.accept(n,Y.STRING),e+=n}),e},DBCS:t=>(t=q.accept(t,Y.STRING),Ia(t)),DOLLAR:(t,e)=>{t=q.accept(t,Y.NUMBER),e=q.accept(e,Y.NUMBER,2);const n=Array(e).fill("0").join("");return hr.format(`$#,##0.${n}_);($#,##0.${n})`,t).trim()},EXACT:(t,e)=>(t=q.accept(t,[Y.STRING]),e=q.accept(e,[Y.STRING]),t===e),FIND:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.STRING),n=q.accept(n,Y.NUMBER,1),n<1||n>e.length)throw Ce.VALUE;const r=e.indexOf(t,n-1);if(r===-1)throw Ce.VALUE;return r+1},FINDB:(...t)=>ft.FIND(...t),FIXED:(t,e,n)=>{t=q.accept(t,Y.NUMBER),e=q.accept(e,Y.NUMBER,2),n=q.accept(n,Y.BOOLEAN,!1);const r=Array(e).fill("0").join(""),i=n?"":"#,";return hr.format(`${i}##0.${r}_);(${i}##0.${r})`,t).trim()},LEFT:(t,e)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER,1),e<0)throw Ce.VALUE;return e>t.length?t:t.slice(0,e)},LEFTB:(...t)=>ft.LEFT(...t),LEN:t=>(t=q.accept(t,Y.STRING),t.length),LENB:(...t)=>ft.LEN(...t),LOWER:t=>(t=q.accept(t,Y.STRING),t.toLowerCase()),MID:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER),n=q.accept(n,Y.NUMBER),e>t.length)return"";if(e<1||n<1)throw Ce.VALUE;return t.slice(e-1,e+n-1)},MIDB:(...t)=>ft.MID(...t),NUMBERVALUE:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.STRING,"."),n=q.accept(n,Y.STRING,","),t.length===0)return 0;if(e.length===0||n.length===0||(e=e[0],n=n[0],e===n||t.indexOf(e)1||i&&!a||!i&&a||isNaN(h))throw Ce.VALUE;return h=h/100**c,i?-h:h},PHONETIC:()=>{},PROPER:t=>(t=q.accept(t,[Y.STRING]),t=t.toLowerCase(),t=t.charAt(0).toUpperCase()+t.slice(1),t.replace(/(?:[^a-zA-Z])([a-zA-Z])/g,e=>e.toUpperCase())),REPLACE:(t,e,n,r)=>{t=q.accept(t,[Y.STRING]),e=q.accept(e,[Y.NUMBER]),n=q.accept(n,[Y.NUMBER]),r=q.accept(r,[Y.STRING]);let i=t.split("");return i.splice(e-1,n,r),i.join("")},REPLACEB:(...t)=>ft.REPLACE(...t),REPT:(t,e)=>{t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER);let n="";for(let r=0;r{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER,1),e<0)throw Ce.VALUE;const n=t.length;return e>n?t:t.slice(n-e)},RIGHTB:(...t)=>ft.RIGHT(...t),SEARCH:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.STRING),n=q.accept(n,Y.NUMBER,1),n<1||n>e.length)throw Ce.VALUE;let r=gi.isWildCard(t)?gi.toRegex(t,"i"):t;const i=e.slice(n-1).search(r);if(i===-1)throw Ce.VALUE;return i+n},SEARCHB:(...t)=>ft.SEARCH(...t),SUBSTITUTE:(...t)=>{},T:t=>(t=q.accept(t),typeof t=="string"?t:""),TEXT:(t,e)=>{t=q.accept(t,Y.NUMBER),e=q.accept(e,Y.STRING);try{return hr.format(e,t)}catch(n){throw console.error(n),Ce.VALUE}},TEXTJOIN:(...t)=>{},TRIM:t=>(t=q.accept(t,[Y.STRING]),t.replace(/^\s+|\s+$/g,"")),UNICHAR:t=>{if(t=q.accept(t,[Y.NUMBER]),t<=0)throw Ce.VALUE;return String.fromCharCode(t)},UNICODE:t=>ft.CODE(t)};var $o=ft;const tn=he(),{FormulaHelpers:kn}=ge(),Ma={unaryOp:(t,e,n)=>{let r=1;if(t.forEach(i=>{if(i!=="+")if(i==="-")r=-r;else throw new Error(`Unrecognized prefix: ${i}`)}),e==null&&(e=0),r===1)return e;try{e=kn.acceptNumber(e,n)}catch(i){if(i instanceof tn)Array.isArray(e)&&(e=e[0][0]);else throw i}return typeof e=="number"&&isNaN(e)?tn.VALUE:-e}},Ua={percentOp:(t,e,n)=>{try{t=kn.acceptNumber(t,n)}catch(r){if(r instanceof tn)return r;throw r}if(e==="%")return t/100;throw new Error(`Unrecognized postfix: ${e}`)}},At={boolean:3,string:2,number:1},La={compareOp:(t,e,n,r,i)=>{t==null&&(t=0),n==null&&(n=0),r&&(t=t[0][0]),i&&(n=n[0][0]);const a=typeof t,c=typeof n;if(a===c)switch(e){case"=":return t===n;case">":return t>n;case"<":return t":return t!==n;case"<=":return t<=n;case">=":return t>=n}else switch(e){case"=":return!1;case">":return At[a]>At[c];case"<":return At[a]":return!0;case"<=":return At[a]<=At[c];case">=":return At[a]>=At[c]}throw Error("Infix.compareOp: Should not reach here.")},concatOp:(t,e,n,r,i)=>{t==null&&(t=""),n==null&&(n=""),r&&(t=t[0][0]),i&&(n=n[0][0]);const a=typeof t,c=typeof n;return a==="boolean"&&(t=t?"TRUE":"FALSE"),c==="boolean"&&(n=n?"TRUE":"FALSE"),""+t+n},mathOp:(t,e,n,r,i)=>{t==null&&(t=0),n==null&&(n=0);try{t=kn.acceptNumber(t,r),n=kn.acceptNumber(n,i)}catch(a){if(a instanceof tn)return a;throw a}switch(e){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return n===0?tn.DIV0:t/n;case"^":return t**n}throw Error("Infix.mathOp: Should not reach here.")}};var Wr={Prefix:Ma,Postfix:Ua,Infix:La,Operators:{compareOp:["<",">","=","<>","<=",">="],concatOp:["&"],mathOp:["+","-","*","/","^"]}};const Q=he(),{FormulaHelpers:_a,Types:P,Factorials:Ho,Criteria:Pa}=ge(),{Infix:ka}=Wr,L=_a,pr=[],dr=[];function Cn(t){return t<=100?Ho[t]:pr[t]>0?pr[t]:pr[t]=Cn(t-1)*t}function Wo(t){return t===1||t===0?1:t===2?2:dr[t]>0?dr[t]:dr[t]=Wo(t-2)*t}const Pe={ABS:t=>(t=L.accept(t,P.NUMBER),Math.abs(t)),AGGREGATE:(t,e,n,...r)=>{},ARABIC:t=>{if(t=L.accept(t,P.STRING).toUpperCase(),!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(t))throw new Q("#VALUE!","Invalid roman numeral in ARABIC evaluation.");let e=0;return t.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,function(n){e+={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1}[n]}),e},BASE:(t,e,n)=>{if(t=L.accept(t,P.NUMBER),t<0||t>=2**53||(e=L.accept(e,P.NUMBER),e<2||e>36)||(n=L.accept(n,P.NUMBER,0),n<0))throw Q.NUM;const r=t.toString(e).toUpperCase();return new Array(Math.max(n+1-r.length,0)).join("0")+r},CEILING:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)return 0;if(t/e%1===0)return t;const n=Math.abs(e),r=Math.floor(Math.abs(t)/n);return t<0?e<0?-n*(r+1):-n*r:(r+1)*n},"CEILING.MATH":(t,e,n)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,t>0?1:-1),n=L.accept(n,P.NUMBER,0),t>=0)return Pe.CEILING(t,e);const r=n?e:0;return Pe.CEILING(t,e)-r},"CEILING.PRECISE":(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,1),Pe.CEILING(t,Math.abs(e))),COMBIN:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),t<0||e<0||t{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),(t===0||t===1)&&e===0)return 1;if(t<0||e<0)throw Q.NUM;return Pe.COMBIN(t+e-1,t-1)},DECIMAL:(t,e)=>{if(t=L.accept(t,P.STRING),e=L.accept(e,P.NUMBER),e=Math.trunc(e),e<2||e>36)throw Q.NUM;const n=parseInt(t,e);if(isNaN(n))throw Q.NUM;return n},DEGREES:t=>(t=L.accept(t,P.NUMBER),t*(180/Math.PI)),EVEN:t=>Pe.CEILING(t,-2),EXP:t=>(t=L.accept(t,P.NUMBER),Math.exp(t)),FACT:t=>{if(t=L.accept(t,P.NUMBER),t=Math.trunc(t),t>170||t<0)throw Q.NUM;return t<=100?Ho[t]:Cn(t)},FACTDOUBLE:t=>{if(t=L.accept(t,P.NUMBER),t=Math.trunc(t),t<-1)throw Q.NUM;return t===-1?1:Wo(t)},FLOOR:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)return 0;if(t>0&&e<0)throw Q.NUM;if(t/e%1===0)return t;const n=Math.abs(e),r=Math.floor(Math.abs(t)/n);return t<0?e<0?-n*r:-n*(r+1):r*n},"FLOOR.MATH":(t,e,n)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,t>0?1:-1),n=L.accept(n,P.NUMBER,0),n===0||t>=0?Pe.FLOOR(t,Math.abs(e)):Pe.FLOOR(t,e)+e),"FLOOR.PRECISE":(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,1),Pe.FLOOR(t,Math.abs(e))),GCD:(...t)=>{const e=[];L.flattenParams(t,null,!1,c=>{if(c=typeof c=="boolean"?NaN:Number(c),isNaN(c))throw Q.VALUE;if(c<0||c>9007199254740990)throw Q.NUM;e.push(Math.trunc(c))},0);let n,r,i=t.length,a=Math.abs(e[0]);for(n=1;nr?a%=r:r%=a;a+=r}return a},INT:t=>(t=L.accept(t,P.NUMBER),Math.floor(t)),"ISO.CEILING":(...t)=>Pe["CEILING.PRECISE"](...t),LCM:(...t)=>{const e=[];L.flattenParams(t,null,!1,i=>{if(i=typeof i=="boolean"?NaN:Number(i),isNaN(i))throw Q.VALUE;if(i<0||i>9007199254740990)throw Q.NUM;e.push(Math.trunc(i))},1);let n=e.length,r=Math.abs(e[0]);for(let i=1;ia?r%=a:a%=r;r=Math.abs(c*e[i])/(r+a)}return r},LN:t=>(t=L.accept(t,P.NUMBER),Math.log(t)),LOG:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,10),Math.log(t)/Math.log(e)),LOG10:t=>(t=L.accept(t,P.NUMBER),Math.log10(t)),MDETERM:t=>{if(t=L.accept(t,P.ARRAY,void 0,!1,!0),t[0].length!==t.length)throw Q.VALUE;const e=t.length,n=t[0].length;let r=0,i,a;if(e===1)return t[0][0];if(e===2)return t[0][0]*t[1][1]-t[0][1]*t[1][0];for(let c=0;c{},MMULT:(t,e)=>{t=L.accept(t,P.ARRAY,void 0,!1,!0),e=L.accept(e,P.ARRAY,void 0,!1,!0);const n=t.length,r=t[0].length,i=e.length,a=e[0].length,c=new Array(n);if(r!==i)throw Q.VALUE;for(let h=0;h{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)throw Q.DIV0;return t-e*Pe.INT(t/e)},MROUND:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)return 0;if(t>0&&e<0||t<0&&e>0)throw Q.NUM;return t/e%1===0?t:Math.round(t/e)*e},MULTINOMIAL:(...t)=>{let e=0,n=1;return L.flattenParams(t,P.NUMBER,!1,r=>{if(r<0)throw Q.NUM;e+=r,n*=Cn(r)}),Cn(e)/n},MUNIT:t=>{t=L.accept(t,P.NUMBER);const e=[];for(let n=0;n{if(t=L.accept(t,P.NUMBER),t===0)return 1;let e=Math.ceil(Math.abs(t));return e=e&1?e:e+1,t>0?e:-e},PI:()=>Math.PI,POWER:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),t**e),PRODUCT:(...t)=>{let e=1;return L.flattenParams(t,null,!0,(n,r)=>{const i=Number(n);r.isLiteral&&!isNaN(i)?e*=i:typeof n=="number"&&(e*=n)},1),e},QUOTIENT:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),Math.trunc(t/e)),RADIANS:t=>(t=L.accept(t,P.NUMBER),t/180*Math.PI),RAND:()=>Math.random(),RANDBETWEEN:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),Math.floor(Math.random()*(e-t+1)+t)),ROMAN:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,0),e!==0)throw Error("ROMAN: only allows form=0 (classic form).");const n=String(t).split(""),r=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];let i="",a=3;for(;a--;)i=(r[+n.pop()+a*10]||"")+i;return new Array(+n.join("")+1).join("M")+i},ROUND:(t,e)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER);const n=Math.pow(10,Math.abs(e)),r=t>0?1:-1;return e>0?r*Math.round(Math.abs(t)*n)/n:e===0?r*Math.round(Math.abs(t)):r*Math.round(Math.abs(t)/n)*n},ROUNDDOWN:(t,e)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER);const n=Math.pow(10,Math.abs(e)),r=t>0?1:-1;if(e>0){const i=1/n*.5;return r*Math.round((Math.abs(t)-i)*n)/n}else{if(e===0)return r*Math.round(Math.abs(t)-.5);{const i=n*.5;return r*Math.round((Math.abs(t)-i)/n)*n}}},ROUNDUP:(t,e)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER);const n=Math.pow(10,Math.abs(e)),r=t>0?1:-1;if(e>0){const i=1/n*.5;return r*Math.round((Math.abs(t)+i)*n)/n}else{if(e===0)return r*Math.round(Math.abs(t)+.5);{const i=n*.5;return r*Math.round((Math.abs(t)+i)/n)*n}}},SERIESSUM:(t,e,n,r)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),n=L.accept(n,P.NUMBER);let i=0,a;return L.flattenParams([r],P.NUMBER,!1,c=>{if(typeof c!="number")throw Q.VALUE;i===0?a=c*Math.pow(t,e):a+=c*Math.pow(t,e+i*n),i++}),a},SIGN:t=>(t=L.accept(t,P.NUMBER),t>0?1:t===0?0:-1),SQRT:t=>{if(t=L.accept(t,P.NUMBER),t<0)throw Q.NUM;return Math.sqrt(t)},SQRTPI:t=>{if(t=L.accept(t,P.NUMBER),t<0)throw Q.NUM;return Math.sqrt(t*Math.PI)},SUBTOTAL:()=>{},SUM:(...t)=>{let e=0;return L.flattenParams(t,P.NUMBER,!0,(n,r)=>{(r.isLiteral||typeof n=="number")&&(e+=n)}),e},SUMIF:(t,e,n,r)=>{const i=L.retrieveRanges(t,e,r);e=i[0],r=i[1],n=L.retrieveArg(t,n);const a=n.isArray;n=Pa.parse(L.accept(n));let c=0;return e.forEach((h,p)=>{h.forEach((u,o)=>{const s=r[p][o];typeof s=="number"&&(n.op==="wc"?n.match===n.value.test(u)&&(c+=s):ka.compareOp(u,n.op,n.value,Array.isArray(u),a)&&(c+=s))})}),c},SUMIFS:()=>{},SUMPRODUCT:(t,...e)=>{t=L.accept(t,P.ARRAY,void 0,!1,!0),e.forEach(r=>{if(r=L.accept(r,P.ARRAY,void 0,!1,!0),t[0].length!==r[0].length||t.length!==r.length)throw Q.VALUE;for(let i=0;i{r.forEach(i=>{n+=i})}),n},SUMSQ:(...t)=>{let e=0;return L.flattenParams(t,P.NUMBER,!0,(n,r)=>{(r.isLiteral||typeof n=="number")&&(e+=n**2)}),e},SUMX2MY2:(t,e)=>{const n=[],r=[];let i=0;if(L.flattenParams([t],null,!1,(a,c)=>{n.push(a)}),L.flattenParams([e],null,!1,(a,c)=>{r.push(a)}),n.length!==r.length)throw Q.NA;for(let a=0;a{const n=[],r=[];let i=0;if(L.flattenParams([t],null,!1,(a,c)=>{n.push(a)}),L.flattenParams([e],null,!1,(a,c)=>{r.push(a)}),n.length!==r.length)throw Q.NA;for(let a=0;a{const n=[],r=[];let i=0;if(L.flattenParams([t],null,!1,(a,c)=>{n.push(a)}),L.flattenParams([e],null,!1,(a,c)=>{r.push(a)}),n.length!==r.length)throw Q.NA;for(let a=0;a(t=L.accept(t,P.NUMBER),Math.trunc(t))};var qo=Pe;const Ie=he(),{FormulaHelpers:xa,Types:ie}=ge(),oe=xa,$t=2**27-1,Sa={ACOS:t=>{if(t=oe.accept(t,ie.NUMBER),t>1||t<-1)throw Ie.NUM;return Math.acos(t)},ACOSH:t=>{if(t=oe.accept(t,ie.NUMBER),t<1)throw Ie.NUM;return Math.acosh(t)},ACOT:t=>(t=oe.accept(t,ie.NUMBER),Math.PI/2-Math.atan(t)),ACOTH:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)<=1)throw Ie.NUM;return Math.atanh(1/t)},ASIN:t=>{if(t=oe.accept(t,ie.NUMBER),t>1||t<-1)throw Ie.NUM;return Math.asin(t)},ASINH:t=>(t=oe.accept(t,ie.NUMBER),Math.asinh(t)),ATAN:t=>(t=oe.accept(t,ie.NUMBER),Math.atan(t)),ATAN2:(t,e)=>{if(t=oe.accept(t,ie.NUMBER),e=oe.accept(e,ie.NUMBER),e===0&&t===0)throw Ie.DIV0;return Math.atan2(e,t)},ATANH:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>1)throw Ie.NUM;return Math.atanh(t)},COS:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return Math.cos(t)},COSH:t=>(t=oe.accept(t,ie.NUMBER),Math.cosh(t)),COT:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;if(t===0)throw Ie.DIV0;return 1/Math.tan(t)},COTH:t=>{if(t=oe.accept(t,ie.NUMBER),t===0)throw Ie.DIV0;return 1/Math.tanh(t)},CSC:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return 1/Math.sin(t)},CSCH:t=>{if(t=oe.accept(t,ie.NUMBER),t===0)throw Ie.DIV0;return 1/Math.sinh(t)},SEC:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return 1/Math.cos(t)},SECH:t=>(t=oe.accept(t,ie.NUMBER),1/Math.cosh(t)),SIN:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return Math.sin(t)},SINH:t=>(t=oe.accept(t,ie.NUMBER),Math.sinh(t)),TAN:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return Math.tan(t)},TANH:t=>(t=oe.accept(t,ie.NUMBER),Math.tanh(t))};var Ba=Sa;const yt=he(),{FormulaHelpers:Fa,Types:vr}=ge(),ze=Fa;function gr(t){let e=0,n=0;return ze.flattenParams(t,null,!0,r=>{const i=typeof r;i==="string"?r==="TRUE"?r=!0:r==="FALSE"&&(r=!1):i==="number"&&(r=!!r),typeof r=="boolean"&&(r===!0?e++:n++)}),[e,n]}const ba={AND:(...t)=>{const[e,n]=gr(t);return e===0&&n===0?yt.VALUE:e>0&&n===0},FALSE:()=>!1,IF:(t,e,n,r)=>(e=ze.accept(e,vr.BOOLEAN),n=ze.accept(n),r=ze.accept(r,null,!1),e?n:r),IFERROR:(t,e)=>t.value instanceof yt?ze.accept(e):ze.accept(t),IFNA:function(t,e){if(arguments.length>2)throw yt.TOO_MANY_ARGS("IFNA");return yt.NA.equals(t.value)?ze.accept(e):ze.accept(t)},IFS:(...t)=>{if(t.length%2!==0)return new yt("#N/A","IFS expects all arguments after position 0 to be in pairs.");for(let e=0;e(t=ze.accept(t,vr.BOOLEAN),!t),OR:(...t)=>{const[e,n]=gr(t);return e===0&&n===0?yt.VALUE:e>0},SWITCH:(...t)=>{},TRUE:()=>!0,XOR:(...t)=>{const[e,n]=gr(t);return e===0&&n===0?yt.VALUE:e%2===1}};var Da=ba,Yo={};(function(t){(function(e){e(typeof DO_NOT_EXPORT_BESSEL>"u"?t:{})})(function(e){e.version="1.0.2";var n=Math;function r(o,s){for(var l=0,f=0;lT)w=i(R,T,d(R),N(R),-1);else{for(var C=2*n.floor((T+n.floor(n.sqrt(40*T)))/2),M=!1,_=0,W=0,F=1,S=0,G=2/R,J=C;J>0;J--)S=J*G*F-_,_=F,F=S,n.abs(F)>1e10&&(F*=1e-10,_*=1e-10,w*=1e-10,W*=1e-10),M&&(W+=F),M=!M,J==T&&(w=_);W=2*W-F,w/=W}return w}}(),h=function(){var o=.636619772,s=[-2957821389,7062834065,-5123598036e-1,1087988129e-2,-86327.92757,228.4622733].reverse(),l=[40076544269,7452499648e-1,7189466438e-3,47447.2647,226.1030244,1].reverse(),f=[1,-.001098628627,2734510407e-14,-2073370639e-15,2093887211e-16].reverse(),v=[-.01562499995,.0001430488765,-6911147651e-15,7621095161e-16,-934945152e-16].reverse();function d(y){var R=0,T=0,w=0,C=y*y,M=y-.785398164;return y<8?(T=r(s,C),w=r(l,C),R=T/w+o*c(y,0)*n.log(y)):(C=64/C,T=r(f,C),w=r(v,C),R=n.sqrt(o/y)*(n.sin(M)*T+n.cos(M)*w*8/y)),R}var g=[-4900604943e3,127527439e4,-51534381390,7349264551e-1,-4237922726e-3,8511.937935].reverse(),E=[249958057e5,424441966400,3733650367,2245904002e-2,102042.605,354.9632885,1].reverse(),A=[1,.00183105,-3516396496e-14,2457520174e-15,-240337019e-15].reverse(),m=[.04687499995,-.0002002690873,8449199096e-15,-88228987e-14,105787412e-15].reverse();function N(y){var R=0,T=0,w=0,C=y*y,M=y-2.356194491;return y<8?(T=y*r(g,C),w=r(E,C),R=T/w+o*(c(y,1)*n.log(y)-1/y)):(C=64/C,T=r(A,C),w=r(m,C),R=n.sqrt(o/y)*(n.sin(M)*T+n.cos(M)*w*8/y)),R}return a(d,N,"BESSELY",1,-1)}(),p=function(){var o=[1,3.5156229,3.0899424,1.2067492,.2659732,.0360768,.0045813].reverse(),s=[.39894228,.01328592,.00225319,-.00157565,.00916281,-.02057706,.02635537,-.01647633,.00392377].reverse();function l(g){return g<=3.75?r(o,g*g/(3.75*3.75)):n.exp(n.abs(g))/n.sqrt(n.abs(g))*r(s,3.75/n.abs(g))}var f=[.5,.87890594,.51498869,.15084934,.02658733,.00301532,32411e-8].reverse(),v=[.39894228,-.03988024,-.00362018,.00163801,-.01031555,.02282967,-.02895312,.01787654,-.00420059].reverse();function d(g){return g<3.75?g*r(f,g*g/(3.75*3.75)):(g<0?-1:1)*n.exp(n.abs(g))/n.sqrt(n.abs(g))*r(v,3.75/n.abs(g))}return function g(E,A){if(A=Math.round(A),A===0)return l(E);if(A===1)return d(E);if(A<0)return NaN;if(n.abs(E)===0)return 0;if(E==1/0)return 1/0;var m=0,N,y=2/n.abs(E),R=0,T=1,w=0,C=2*n.round((A+n.round(n.sqrt(40*A)))/2);for(N=C;N>0;N--)w=N*y*T+R,R=T,T=w,n.abs(T)>1e10&&(T*=1e-10,R*=1e-10,m*=1e-10),N==A&&(m=R);return m*=g(E,0)/T,E<0&&A%2?-m:m}}(),u=function(){var o=[-.57721566,.4227842,.23069756,.0348859,.00262698,1075e-7,74e-7].reverse(),s=[1.25331414,-.07832358,.02189568,-.01062446,.00587872,-.0025154,53208e-8].reverse();function l(g){return g<=2?-n.log(g/2)*p(g,0)+r(o,g*g/4):n.exp(-g)/n.sqrt(g)*r(s,2/g)}var f=[1,.15443144,-.67278579,-.18156897,-.01919402,-.00110404,-4686e-8].reverse(),v=[1.25331414,.23498619,-.0365562,.01504268,-.00780353,.00325614,-68245e-8].reverse();function d(g){return g<=2?n.log(g/2)*p(g,1)+1/g*r(f,g*g/4):n.exp(-g)/n.sqrt(g)*r(v,2/g)}return a(l,d,"BESSELK",2,1)}();e.besselj=c,e.bessely=h,e.besseli=p,e.besselk=u})})(Yo);var Ko={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Io,function(){var n=function(r,i){var a=Array.prototype.concat,c=Array.prototype.slice,h=Object.prototype.toString;function p(A,m){var N=A>m?A:m;return r.pow(10,17-~~(r.log(N>0?N:-N)*r.LOG10E))}var u=Array.isArray||function(m){return h.call(m)==="[object Array]"};function o(A){return h.call(A)==="[object Function]"}function s(A){return typeof A=="number"?A-A===0:!1}function l(A){return a.apply([],A)}function f(){return new f._init(arguments)}f.fn=f.prototype,f._init=function(m){if(u(m[0]))if(u(m[0][0])){o(m[1])&&(m[0]=f.map(m[0],m[1]));for(var N=0;N=0;N--,R++)y[R]=[m[R][N]];return y},f.transpose=function(m){var N=[],y,R,T,w,C;for(u(m[0])||(m=[m]),R=m.length,T=m[0].length,C=0;C0&&(C[R][0]=m[R][0]),M=1;MN&&y>0)return[];if(y>0)for(T=m;TN;T+=y)R.push(T);return R},f.slice=function(){function A(N,y,R,T){var w,C=[],M=N.length;if(y===i&&R===i&&T===i)return f.copy(N);if(y=y||0,R=R||N.length,y=y>=0?y:M+y,R=R>=0?R:M+R,T=T||1,y===R||T===0)return[];if(yR&&T>0)return[];if(T>0)for(w=y;wR;w+=T)C.push(N[w]);return C}function m(N,y){var R,T;if(y=y||{},s(y.row)){if(s(y.col))return N[y.row][y.col];var w=f.rowa(N,y.row);return R=y.col||{},A(w,R.start,R.end,R.step)}if(s(y.col)){var C=f.cola(N,y.col);return T=y.row||{},A(C,T.start,T.end,T.step)}T=y.row||{},R=y.col||{};var M=A(N,T.start,T.end,T.step);return M.map(function(_){return A(_,R.start,R.end,R.step)})}return m}(),f.sliceAssign=function(m,N,y){var R,T;if(s(N.row)){if(s(N.col))return m[N.row][N.col]=y;N.col=N.col||{},N.col.start=N.col.start||0,N.col.end=N.col.end||m[0].length,N.col.step=N.col.step||1,R=f.arange(N.col.start,r.min(m.length,N.col.end),N.col.step);var w=N.row;return R.forEach(function(M,_){m[w][M]=y[_]}),m}if(s(N.col)){N.row=N.row||{},N.row.start=N.row.start||0,N.row.end=N.row.end||m.length,N.row.step=N.row.step||1,T=f.arange(N.row.start,r.min(m[0].length,N.row.end),N.row.step);var C=N.col;return T.forEach(function(M,_){m[M][C]=y[_]}),m}return y[0].length===i&&(y=[y]),N.row.start=N.row.start||0,N.row.end=N.row.end||m.length,N.row.step=N.row.step||1,N.col.start=N.col.start||0,N.col.end=N.col.end||m[0].length,N.col.step=N.col.step||1,T=f.arange(N.row.start,r.min(m.length,N.row.end),N.row.step),R=f.arange(N.col.start,r.min(m[0].length,N.col.end),N.col.step),T.forEach(function(M,_){R.forEach(function(W,F){m[M][W]=y[_][F]})}),m},f.diagonal=function(m){var N=f.zeros(m.length,m.length);return m.forEach(function(y,R){N[R][R]=y}),N},f.copy=function(m){return m.map(function(N){return s(N)?N:N.map(function(y){return y})})};var E=f.prototype;return E.length=0,E.push=Array.prototype.push,E.sort=Array.prototype.sort,E.splice=Array.prototype.splice,E.slice=Array.prototype.slice,E.toArray=function(){return this.length>1?c.call(this):c.call(this)[0]},E.map=function(m,N){return f(f.map(this,m,N))},E.cumreduce=function(m,N){return f(f.cumreduce(this,m,N))},E.alter=function(m){return f.alter(this,m),this},function(A){for(var m=0;m=0;)s+=o[l];return s},r.sumsqrd=function(o){for(var s=0,l=o.length;--l>=0;)s+=o[l]*o[l];return s},r.sumsqerr=function(o){for(var s=r.mean(o),l=0,f=o.length,v;--f>=0;)v=o[f]-s,l+=v*v;return l},r.sumrow=function(o){for(var s=0,l=o.length;--l>=0;)s+=o[l];return s},r.product=function(o){for(var s=1,l=o.length;--l>=0;)s*=o[l];return s},r.min=function(o){for(var s=o[0],l=0;++ls&&(s=o[l]);return s},r.unique=function(o){for(var s={},l=[],f=0;fv?(g=[l[E]],v=f,d=0):f===v&&(g.push(l[E]),d++),f=1);return d===0?g[0]:g},r.range=function(o){return r.max(o)-r.min(o)},r.variance=function(o,s){return r.sumsqerr(o)/(o.length-(s?1:0))},r.pooledvariance=function(o){var s=o.reduce(function(f,v){return f+r.sumsqerr(v)},0),l=o.reduce(function(f,v){return f+v.length},0);return s/(l-o.length)},r.deviation=function(u){for(var o=r.mean(u),s=u.length,l=new Array(s),f=0;f=0;f--)l.push(i.abs(o[f]-s));return r.mean(l)},r.meddev=function(o){for(var s=r.median(o),l=[],f=o.length-1;f>=0;f--)l.push(i.abs(o[f]-s));return r.median(l)},r.coeffvar=function(o){return r.stdev(o)/r.mean(o)},r.quartiles=function(o){var s=o.length,l=o.slice().sort(c);return[l[i.round(s/4)-1],l[i.round(s/2)-1],l[i.round(s*3/4)-1]]},r.quantiles=function(o,s,l,f){var v=o.slice().sort(c),d=[s.length],g=o.length,E,A,m,N,y,R;for(typeof l>"u"&&(l=3/8),typeof f>"u"&&(f=3/8),E=0;E1){for(g=l===!0?this:this.transpose();d1){for(s!=="sumrow"&&(g=l===!0?this:this.transpose());d1){for(v=v.transpose();f=0;l--)s*=p,s+=v[l];if(o=s/h+.5*i.log(u)+(h-.5)*i.log(h)-h,c<=7)for(l=1;l<=f;l++)o-=i.log(h-1),h-=1;return o},r.gammafn=function(c){var h=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],p=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],u=!1,o=0,s=0,l=0,f=c,v,d,g,E;if(c>171.6243769536076)return 1/0;if(f<=0)if(E=f%1+36e-17,E)u=(f&1?-1:1)*i.PI/i.sin(i.PI*E),f=1-f;else return 1/0;for(g=f,f<1?d=f++:d=(f-=o=(f|0)-1)-1,v=0;v<8;++v)l=(l+h[v])*d,s=s*d+p[v];if(E=l/s+1,gf)for(v=0;v=1?c:1/c)*8.5+c*.4+17),A;if(h<0||c<=0)return NaN;if(h170||h>170?i.exp(r.combinationln(c,h)):r.factorial(c)/r.factorial(h)/r.factorial(c-h)},r.combinationln=function(c,h){return r.factorialln(c)-r.factorialln(h)-r.factorialln(c-h)},r.permutation=function(c,h){return r.factorial(c)/r.factorial(c-h)},r.betafn=function(c,h){if(!(c<=0||h<=0))return c+h>170?i.exp(r.betaln(c,h)):r.gammafn(c)*r.gammafn(h)/r.gammafn(c+h)},r.betaln=function(c,h){return r.gammaln(c)+r.gammaln(h)-r.gammaln(c+h)},r.betacf=function(c,h,p){var u=1e-30,o=1,s=h+p,l=h+1,f=h-1,v=1,d=1-s*c/l,g,E,A,m;for(i.abs(d)=1)return i.max(100,h+100*i.sqrt(h));if(c<=0)return 0;for(h>1?(E=i.log(u),A=i.exp(u*(E-1)-s),g=c<.5?c:1-c,v=i.sqrt(-2*i.log(g)),l=(2.30753+v*.27061)/(1+v*(.99229+v*.04481))-v,c<.5&&(l=-l),l=i.max(.001,h*i.pow(1-1/(9*h)-l/(3*i.sqrt(h)),3))):(v=1-h*(.253+h*.12),c1?v=A*i.exp(-(l-u)+u*(i.log(l)-E)):v=i.exp(-l+u*i.log(l)-s),d=f/v,l-=v=d/(1-.5*i.min(1,d*((h-1)/l-1))),l<=0&&(l=.5*(l+v)),i.abs(v)0;p--)v=o,o=f*o-s+h[p],s=v;return d=l*i.exp(-c*c+.5*(h[0]+f*o)-s),u?d-1:1-d},r.erfc=function(c){return 1-r.erf(c)},r.erfcinv=function(c){var h=0,p,u,o,s;if(c>=2)return-100;if(c<=0)return 100;for(s=c<1?c:2-c,o=i.sqrt(-2*i.log(s/2)),p=-.70711*((2.30753+o*.27061)/(1+o*(.99229+o*.04481))-o);h<2;h++)u=r.erfc(p)-s,p+=u/(1.1283791670955126*i.exp(-p*p)-p*u);return c<1?p:-p},r.ibetainv=function(c,h,p){var u=1e-8,o=h-1,s=p-1,l=0,f,v,d,g,E,A,m,N,y,R,T;if(c<=0)return 0;if(c>=1)return 1;for(h>=1&&p>=1?(d=c<.5?c:1-c,g=i.sqrt(-2*i.log(d)),m=(2.30753+g*.27061)/(1+g*(.99229+g*.04481))-g,c<.5&&(m=-m),N=(m*m-3)/6,y=2/(1/(2*h-1)+1/(2*p-1)),R=m*i.sqrt(N+y)/y-(1/(2*p-1)-1/(2*h-1))*(N+5/6-2/(3*y)),m=h/(h+p*i.exp(2*R))):(f=i.log(h/(h+p)),v=i.log(p/(h+p)),g=i.exp(h*f)/h,E=i.exp(p*v)/p,R=g+E,c=1&&(m=.5*(m+g+1)),i.abs(g)0)break}return m},r.ibeta=function(c,h,p){var u=c===0||c===1?0:i.exp(r.gammaln(h+p)-r.gammaln(h)-r.gammaln(p)+h*i.log(c)+p*i.log(1-c));return c<0||c>1?!1:c<(h+1)/(h+p+2)?u*r.betacf(c,h,p)/h:1-u*r.betacf(1-c,p,h)/p},r.randn=function(c,h){var p,u,o,s,l;if(h||(h=c),c)return r.create(c,h,function(){return r.randn()});do p=r._random_fn(),u=1.7156*(r._random_fn()-.5),o=p-.449871,s=i.abs(u)+.386595,l=o*o+s*(.196*s-.25472*o);while(l>.27597&&(l>.27846||u*u>-4*i.log(p)*p*p));return u/p},r.randg=function(c,h,p){var u=c,o,s,l,f,v,d;if(p||(p=h),c||(c=1),h)return d=r.zeros(h,p),d.alter(function(){return r.randg(c)}),d;c<1&&(c+=1),o=c-1/3,s=1/i.sqrt(9*o);do{do v=r.randn(),f=1+s*v;while(f<=0);f=f*f*f,l=r._random_fn()}while(l>1-.331*i.pow(v,4)&&i.log(l)>.5*v*v+o*(1-f+i.log(f)));if(c==u)return o*f;do l=r._random_fn();while(l===0);return i.pow(l,1/u)*o*f},function(a){for(var c=0;c1||o<0?0:s==1&&l==1?1:s<512&&l<512?i.pow(o,s-1)*i.pow(1-o,l-1)/r.betafn(s,l):i.exp((s-1)*i.log(o)+(l-1)*i.log(1-o)-r.betaln(s,l))},cdf:function(o,s,l){return o>1||o<0?(o>1)*1:r.ibeta(o,s,l)},inv:function(o,s,l){return r.ibetainv(o,s,l)},mean:function(o,s){return o/(o+s)},median:function(o,s){return r.ibetainv(.5,o,s)},mode:function(o,s){return(o-1)/(o+s-2)},sample:function(o,s){var l=r.randg(o);return l/(l+r.randg(s))},variance:function(o,s){return o*s/(i.pow(o+s,2)*(o+s+1))}}),r.extend(r.centralF,{pdf:function(o,s,l){var f,v,d;return o<0?0:s<=2?o===0&&s<2?1/0:o===0&&s===2?1:1/r.betafn(s/2,l/2)*i.pow(s/l,s/2)*i.pow(o,s/2-1)*i.pow(1+s/l*o,-(s+l)/2):(f=s*o/(l+o*s),v=l/(l+o*s),d=s*v/2,d*r.binomial.pdf((s-2)/2,(s+l-2)/2,f))},cdf:function(o,s,l){return o<0?0:r.ibeta(s*o/(s*o+l),s/2,l/2)},inv:function(o,s,l){return l/(s*(1/r.ibetainv(o,s/2,l/2)-1))},mean:function(o,s){return s>2?s/(s-2):void 0},mode:function(o,s){return o>2?s*(o-2)/(o*(s+2)):void 0},sample:function(o,s){var l=r.randg(o/2)*2,f=r.randg(s/2)*2;return l/o/(f/s)},variance:function(o,s){if(!(s<=4))return 2*s*s*(o+s-2)/(o*(s-2)*(s-2)*(s-4))}}),r.extend(r.cauchy,{pdf:function(o,s,l){return l<0?0:l/(i.pow(o-s,2)+i.pow(l,2))/i.PI},cdf:function(o,s,l){return i.atan((o-s)/l)/i.PI+.5},inv:function(u,o,s){return o+s*i.tan(i.PI*(u-.5))},median:function(o){return o},mode:function(o){return o},sample:function(o,s){return r.randn()*i.sqrt(1/(2*r.randg(.5)))*s+o}}),r.extend(r.chisquare,{pdf:function(o,s){return o<0?0:o===0&&s===2?.5:i.exp((s/2-1)*i.log(o)-o/2-s/2*i.log(2)-r.gammaln(s/2))},cdf:function(o,s){return o<0?0:r.lowRegGamma(s/2,o/2)},inv:function(u,o){return 2*r.gammapinv(u,.5*o)},mean:function(u){return u},median:function(o){return o*i.pow(1-2/(9*o),3)},mode:function(o){return o-2>0?o-2:0},sample:function(o){return r.randg(o/2)*2},variance:function(o){return 2*o}}),r.extend(r.exponential,{pdf:function(o,s){return o<0?0:s*i.exp(-s*o)},cdf:function(o,s){return o<0?0:1-i.exp(-s*o)},inv:function(u,o){return-i.log(1-u)/o},mean:function(u){return 1/u},median:function(u){return 1/u*i.log(2)},mode:function(){return 0},sample:function(o){return-1/o*i.log(r._random_fn())},variance:function(u){return i.pow(u,-2)}}),r.extend(r.gamma,{pdf:function(o,s,l){return o<0?0:o===0&&s===1?1/l:i.exp((s-1)*i.log(o)-o/l-r.gammaln(s)-s*i.log(l))},cdf:function(o,s,l){return o<0?0:r.lowRegGamma(s,o/l)},inv:function(u,o,s){return r.gammapinv(u,o)*s},mean:function(u,o){return u*o},mode:function(o,s){if(o>1)return(o-1)*s},sample:function(o,s){return r.randg(o)*s},variance:function(o,s){return o*s*s}}),r.extend(r.invgamma,{pdf:function(o,s,l){return o<=0?0:i.exp(-(s+1)*i.log(o)-l/o-r.gammaln(s)+s*i.log(l))},cdf:function(o,s,l){return o<=0?0:1-r.lowRegGamma(s,l/o)},inv:function(u,o,s){return s/r.gammapinv(1-u,o)},mean:function(u,o){return u>1?o/(u-1):void 0},mode:function(o,s){return s/(o+1)},sample:function(o,s){return s/r.randg(o)},variance:function(o,s){if(!(o<=2))return s*s/((o-1)*(o-1)*(o-2))}}),r.extend(r.kumaraswamy,{pdf:function(o,s,l){return o===0&&s===1?l:o===1&&l===1?s:i.exp(i.log(s)+i.log(l)+(s-1)*i.log(o)+(l-1)*i.log(1-i.pow(o,s)))},cdf:function(o,s,l){return o<0?0:o>1?1:1-i.pow(1-i.pow(o,s),l)},inv:function(o,s,l){return i.pow(1-i.pow(1-o,1/l),1/s)},mean:function(u,o){return o*r.gammafn(1+1/u)*r.gammafn(o)/r.gammafn(1+1/u+o)},median:function(o,s){return i.pow(1-i.pow(2,-1/s),1/o)},mode:function(o,s){if(o>=1&&s>=1&&o!==1&&s!==1)return i.pow((o-1)/(o*s-1),1/o)},variance:function(){throw new Error("variance not yet implemented")}}),r.extend(r.lognormal,{pdf:function(o,s,l){return o<=0?0:i.exp(-i.log(o)-.5*i.log(2*i.PI)-i.log(l)-i.pow(i.log(o)-s,2)/(2*l*l))},cdf:function(o,s,l){return o<0?0:.5+.5*r.erf((i.log(o)-s)/i.sqrt(2*l*l))},inv:function(u,o,s){return i.exp(-1.4142135623730951*s*r.erfcinv(2*u)+o)},mean:function(o,s){return i.exp(o+s*s/2)},median:function(o){return i.exp(o)},mode:function(o,s){return i.exp(o-s*s)},sample:function(o,s){return i.exp(r.randn()*s+o)},variance:function(o,s){return(i.exp(s*s)-1)*i.exp(2*o+s*s)}}),r.extend(r.noncentralt,{pdf:function(o,s,l){var f=1e-14;return i.abs(l)f||E>f;)A=E,N>0&&(y*=l*l/(2*N),R*=l*l/(2*(N+1/2))),E=y*r.beta.cdf(m,N+.5,s/2)+R*r.beta.cdf(m,N+1,s/2),g+=.5*E,N++;return d?1-g:g}}),r.extend(r.normal,{pdf:function(o,s,l){return i.exp(-.5*i.log(2*i.PI)-i.log(l)-i.pow(o-s,2)/(2*l*l))},cdf:function(o,s,l){return .5*(1+r.erf((o-s)/i.sqrt(2*l*l)))},inv:function(u,o,s){return-1.4142135623730951*s*r.erfcinv(2*u)+o},mean:function(u){return u},median:function(o){return o},mode:function(u){return u},sample:function(o,s){return r.randn()*s+o},variance:function(u,o){return o*o}}),r.extend(r.pareto,{pdf:function(o,s,l){return o1e100?1e100:s,1/(i.sqrt(s)*r.betafn(.5,s/2))*i.pow(1+o*o/s,-((s+1)/2))},cdf:function(o,s){var l=s/2;return r.ibeta((o+i.sqrt(o*o+s))/(2*i.sqrt(o*o+s)),l,l)},inv:function(u,o){var s=r.ibetainv(2*i.min(u,1-u),.5*o,.5);return s=i.sqrt(o*(1-s)/s),u>.5?s:-s},mean:function(o){return o>1?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(o){return r.randn()*i.sqrt(o/(2*r.randg(o/2)))},variance:function(o){return o>2?o/(o-2):o>1?1/0:void 0}}),r.extend(r.weibull,{pdf:function(o,s,l){return o<0||s<0||l<0?0:l/s*i.pow(o/s,l-1)*i.exp(-i.pow(o/s,l))},cdf:function(o,s,l){return o<0?0:1-i.exp(-i.pow(o/s,l))},inv:function(u,o,s){return o*i.pow(-i.log(1-u),1/s)},mean:function(u,o){return u*r.gammafn(1+1/o)},median:function(o,s){return o*i.pow(i.log(2),1/s)},mode:function(o,s){return s<=1?0:o*i.pow((s-1)/s,1/s)},sample:function(o,s){return o*i.pow(-i.log(r._random_fn()),1/s)},variance:function(o,s){return o*o*r.gammafn(1+2/s)-i.pow(r.weibull.mean(o,s),2)}}),r.extend(r.uniform,{pdf:function(o,s,l){return ol?0:1/(l-s)},cdf:function(o,s,l){return ol;)A=d,m=-(o+E)*(o+s+E)*u/(o+2*E)/(o+2*E+1),f=d+m*f,v=g+m*v,E=E+1,m=E*(s-E)*u/(o+2*E-1)/(o+2*E),d=f+m*d,g=v+m*g,f=f/g,v=v/g,d=d/g,g=1;return d/o}r.extend(r.binomial,{pdf:function(o,s,l){return l===0||l===1?s*l===o?1:0:r.combination(s,o)*i.pow(l,o)*i.pow(1-l,s-o)},cdf:function(o,s,l){var f,v=1e-10;if(o<0)return 0;if(o>=s)return 1;if(l<0||l>1||s<=0)return NaN;o=i.floor(o);var d=l,g=o+1,E=s-o,A=g+E,m=i.exp(r.gammaln(A)-r.gammaln(E)-r.gammaln(g)+g*i.log(d)+E*i.log(1-d));return d<(g+1)/(A+2)?f=m*a(d,g,E,v):f=1-m*a(1-d,E,g,v),i.round((1-f)*(1/v))/(1/v)}}),r.extend(r.negbin,{pdf:function(o,s,l){return o!==o>>>0?!1:o<0?0:r.combination(o+s-1,s-1)*i.pow(1-l,o)*i.pow(l,s)},cdf:function(o,s,l){var f=0,v=0;if(o<0)return 0;for(;v<=o;v++)f+=r.negbin.pdf(v,s,l);return f}}),r.extend(r.hypgeom,{pdf:function(o,s,l,f){if(o!==o|0)return!1;if(o<0||of||o>l)return 0;if(l*2>s)return f*2>s?r.hypgeom.pdf(s-l-f+o,s,s-l,s-f):r.hypgeom.pdf(f-o,s,s-l,f);if(f*2>s)return r.hypgeom.pdf(l-o,s,l,s-f);if(l1&&d=f||o>=l)return 1;if(l*2>s)return f*2>s?r.hypgeom.cdf(s-l-f+o,s,s-l,s-f):1-r.hypgeom.cdf(f-o-1,s,s-l,f);if(f*2>s)return 1-r.hypgeom.cdf(l-o-1,s,l,s-f);if(l1&&gf);return l-1},sampleLarge:function(o){var s=o,l,f,v,d,g,E,A,m,N,y;for(d=i.sqrt(s),g=i.log(s),A=.931+2.53*d,E=-.059+.02483*A,m=1.1239+1.1328/(A-3.4),N=.9277-3.6224/(A-2);;){if(f=i.random()-.5,v=i.random(),y=.5-i.abs(f),l=i.floor((2*E/y+A)*f+s+.43),y>=.07&&v<=N)return l;if(!(l<0||y<.013&&v>y)&&i.log(v)+i.log(m)-i.log(E/(y*y)+A)<=-s+l*g-r.loggam(l+1))return l}},sample:function(o){return o<10?this.sampleSmall(o):this.sampleLarge(o)}}),r.extend(r.triangular,{pdf:function(o,s,l,f){return l<=s||fl?NaN:ol?0:ol?NaN:o<=s?0:o>=l?1:o<=f?i.pow(o-s,2)/((l-s)*(f-s)):1-i.pow(l-o,2)/((l-s)*(l-f))},inv:function(o,s,l,f){return l<=s||fl?NaN:o<=(f-s)/(l-s)?s+(l-s)*i.sqrt(o*((f-s)/(l-s))):s+(l-s)*(1-i.sqrt((1-o)*(1-(f-s)/(l-s))))},mean:function(o,s,l){return(o+s+l)/3},median:function(o,s,l){if(l<=(o+s)/2)return s-i.sqrt((s-o)*(s-l))/i.sqrt(2);if(l>(o+s)/2)return o+i.sqrt((s-o)*(l-o))/i.sqrt(2)},mode:function(o,s,l){return l},sample:function(o,s,l){var f=r._random_fn();return f<(l-o)/(s-o)?o+i.sqrt(f*(s-o)*(l-o)):s-i.sqrt((1-f)*(s-o)*(s-l))},variance:function(o,s,l){return(o*o+s*s+l*l-o*s-o*l-s*l)/18}}),r.extend(r.arcsine,{pdf:function(o,s,l){return l<=s?NaN:o<=s||o>=l?0:2/i.PI*i.pow(i.pow(l-s,2)-i.pow(2*o-s-l,2),-.5)},cdf:function(o,s,l){return o=E)return 1;var w=2*r.normal.cdf(T,0,1,1,0)-1;w>=i.exp(d/s)?w=i.pow(w,s):w=0;var C;u>A?C=m:C=N;for(var M=T,_=(E-T)/C,W=M+_,F=0,S=s-1,G=1;G<=C;G++){for(var J=0,le=.5*(W+M),nt=.5*(W-M),Ae=1;Ae<=l;Ae++){var Be,Fe;fg)break;var Et=2*r.normal.cdf(Ee,0,1,1,0),bt=2*r.normal.cdf(Ee,u,1,1,0),mt=Et*.5-bt*.5;mt>=i.exp(v/S)&&(mt=R[Be-1]*i.exp(-(.5*ue))*i.pow(mt,S),J+=mt)}J*=2*nt*s/i.sqrt(2*i.PI),F+=J,M=W,W+=_}return w+=F,w<=i.exp(v/o)?0:(w=i.pow(w,o),w>=1?1:w)}function p(u,o,s){var l=.322232421088,f=.099348462606,v=-1,d=.588581570495,g=-.342242088547,E=.531103462366,A=-.204231210125,m=.10353775285,N=-453642210148e-16,y=.0038560700634,R=.8832,T=.2368,w=1.214,C=1.208,M=1.4142,_=120,W=.5-.5*u,F=i.sqrt(i.log(1/(W*W))),S=F+((((F*N+A)*F+g)*F+v)*F+l)/((((F*y+m)*F+E)*F+d)*F+f);s<_&&(S+=(S*S*S+S)/s/4);var G=R-T*S;return s<_&&(G+=-w/s+C*S/s),S*(G*i.log(o-1)+M)}r.extend(r.tukey,{cdf:function(o,s,l){var f=1,v=s,d=16,g=8,E=-30,A=1e-14,m=100,N=800,y=5e3,R=25e3,T=1,w=.5,C=.25,M=.125,_=[.9894009349916499,.9445750230732326,.8656312023878318,.755404408355003,.6178762444026438,.45801677765722737,.2816035507792589,.09501250983763744],W=[.027152459411754096,.062253523938647894,.09515851168249279,.12462897125553388,.14959598881657674,.16915651939500254,.18260341504492358,.1894506104550685];if(o<=0)return 0;if(l<2||f<1||v<2)return NaN;if(!Number.isFinite(o))return 1;if(l>R)return h(o,f,v);var F=l*.5,S=F*i.log(l)-l*i.log(2)-r.gammaln(F),G=F-1,J=l*.25,le;l<=m?le=T:l<=N?le=w:l<=y?le=C:le=M,S+=i.log(le);for(var nt=0,Ae=1;Ae<=50;Ae++){for(var Be=0,Fe=(2*Ae-1)*le,rt=1;rt<=d;rt++){var Ee,ue;g=E){g=1&&Be<=A)break;nt+=Be}if(Be>A)throw new Error("tukey.cdf failed to converge");return nt>1&&(nt=1),nt},inv:function(u,o,s){var l=1,f=o,v=1e-4,d=50;if(s<2||l<1||f<2)return NaN;if(u<0||u>1)return NaN;if(u===0)return 0;if(u===1)return 1/0;var g=p(u,f,s),E=r.tukey.cdf(g,o,s)-u,A;E>0?A=i.max(0,g-1):A=g+1;for(var m=r.tukey.cdf(A,o,s)-u,N,y=1;ys&&(l[f-1][v-1]=u[f][v])}var d=s%2?-1:1;o+=p(l)*u[0][s]*d}return o},gauss_elimination:function(u,o){var s=0,l=0,f=u.length,v=u[0].length,d=1,g=0,E=[],A,m,N,y;for(u=r.aug(u,o),A=u[0].length,s=0;s=0;s--){for(g=0,l=s+1;l<=f-1;l++)g=g+E[l]*u[s][l];E[s]=(u[s][A-1]-g)/u[s][s]}return E},gauss_jordan:function(u,o){var s=r.aug(u,o),l=s.length,f=s[0].length,v=0,d,g,E;for(g=0;gi.abs(s[A][g])&&(A=E);var m=s[g];for(s[g]=s[A],s[A]=m,E=g+1;E=0;g--){for(v=s[g][g],E=0;Eg-1;d--)s[E][d]-=s[g][d]*s[E][g]/v;for(s[g][g]/=v,d=l;dv?(g[f][v]=u[f][v],E[f][v]=A[f][v]=0):fl;)m=R,R=r.add(r.multiply(y,m),N),f++;return R},gauss_seidel:function(u,o,s,l){for(var f=0,v=u.length,d=[],g=[],E=[],A,m,N,y,R;fA?(d[f][A]=u[f][A],g[f][A]=E[f][A]=0):fl;)m=R,R=r.add(r.multiply(y,m),N),f=f+1;return R},SOR:function(u,o,s,l,f){for(var v=0,d=u.length,g=[],E=[],A=[],m,N,y,R,T;vm?(g[v][m]=u[v][m],E[v][m]=A[v][m]=0):vl;)N=T,T=r.add(r.multiply(R,N),y),v++;return T},householder:function(u){for(var o=u.length,s=u[0].length,l=0,f=[],v=[],d,g,E,A,m;l0?-1:1,d=m*i.sqrt(d),g=i.sqrt((d*d-u[l+1][l]*d)/2),f=r.zeros(o,1),f[l+1][0]=(u[l+1][l]-d)/(2*g),E=l+2;E0?i.PI/4:-i.PI/4:N=i.atan(2*u[E][A]/(u[E][E]-u[A][A]))/2,y=r.identity(s,s),y[E][E]=i.cos(N),y[E][A]=-i.sin(N),y[A][E]=i.sin(N),y[A][A]=i.cos(N),l=r.multiply(l,y),v=r.multiply(r.multiply(r.inv(y),u),y),u=v,o=0,d=1;d.001&&(o=1)}for(d=0;d=v;)A=f(u,s+l),m=f(u,s),g[d]=(o[A]-2*o[m]+o[2*m-A])/(l*l),l/=2,d++;for(y=g.length,N=1;y!=1;){for(R=0;Rs);v++);return v-=1,o[v]+(s-u[v])*N[v]+r.sq(s-u[v])*A[v]+(s-u[v])*r.sq(s-u[v])*y[v]},gauss_quadrature:function(){throw new Error("gauss_quadrature not yet implemented")},PCA:function(u){var o=u.length,s=u[0].length,l=0,f,v,d=[],g=[],E=[],A=[],m=[],N=[],y=[],R=[],T=[],w=[];for(l=0;l2?(s=r.zscore(o[0],o[1],o[2]),o[3]===1?r.normal.cdf(-i.abs(s),0,1):r.normal.cdf(-i.abs(s),0,1)*2):(s=o[0],o[1]===1?r.normal.cdf(-i.abs(s),0,1):r.normal.cdf(-i.abs(s),0,1)*2)}}),r.extend(r.fn,{zscore:function(o,s){return(o-this.mean())/this.stdev(s)},ztest:function(o,s,l){var f=i.abs(this.zscore(o,l));return s===1?r.normal.cdf(-f,0,1):r.normal.cdf(-f,0,1)*2}}),r.extend({tscore:function(){var o=a.call(arguments);return o.length===4?(o[0]-o[1])/(o[2]/i.sqrt(o[3])):(o[0]-r.mean(o[1]))/(r.stdev(o[1],!0)/i.sqrt(o[1].length))},ttest:function(){var o=a.call(arguments),s;return o.length===5?(s=i.abs(r.tscore(o[0],o[1],o[2],o[3])),o[4]===1?r.studentt.cdf(-s,o[3]-1):r.studentt.cdf(-s,o[3]-1)*2):c(o[1])?(s=i.abs(o[0]),o[2]==1?r.studentt.cdf(-s,o[1]-1):r.studentt.cdf(-s,o[1]-1)*2):(s=i.abs(r.tscore(o[0],o[1])),o[2]==1?r.studentt.cdf(-s,o[1].length-1):r.studentt.cdf(-s,o[1].length-1)*2)}}),r.extend(r.fn,{tscore:function(o){return(o-this.mean())/(this.stdev(!0)/i.sqrt(this.cols()))},ttest:function(o,s){return s===1?1-r.studentt.cdf(i.abs(this.tscore(o)),this.cols()-1):r.studentt.cdf(-i.abs(this.tscore(o)),this.cols()-1)*2}}),r.extend({anovafscore:function(){var o=a.call(arguments),s,l,f,v,d,g,E,A;if(o.length===1){for(d=new Array(o[0].length),E=0;E1||s>1||u<=0||s<=0)throw new Error("Proportions should be greater than 0 and less than 1");var f=(u*o+s*l)/(o+l),v=i.sqrt(f*(1-f)*(1/o+1/l));return(u-s)/v}r.extend(r.fn,{oneSidedDifferenceOfProportions:function(o,s,l,f){var v=p(o,s,l,f);return r.ztest(v,1)},twoSidedDifferenceOfProportions:function(o,s,l,f){var v=p(o,s,l,f);return r.ztest(v,2)}})}(n,Math),n.models=function(){function r(p){var u=p[0].length,o=n.arange(u).map(function(s){var l=n.arange(u).filter(function(f){return f!==s});return i(n.col(p,s).map(function(f){return f[0]}),n.col(p,l))});return o}function i(p,u){var o=p.length,s=u[0].length-1,l=o-s-1,f=n.lstsq(u,p),v=n.multiply(u,f.map(function(y){return[y]})).map(function(y){return y[0]}),d=n.subtract(p,v),g=n.mean(p),E=n.sum(v.map(function(y){return Math.pow(y-g,2)})),A=n.sum(p.map(function(y,R){return Math.pow(y-v[R],2)})),m=E+A,N=E/m;return{exog:u,endog:p,nobs:o,df_model:s,df_resid:l,coef:f,predict:v,resid:d,ybar:g,SST:m,SSE:E,SSR:A,R2:N}}function a(p){var u=r(p.exog),o=Math.sqrt(p.SSR/p.df_resid),s=u.map(function(g){var E=g.SST,A=g.R2;return o/Math.sqrt(E*(1-A))}),l=p.coef.map(function(g,E){return(g-0)/s[E]}),f=l.map(function(g){var E=n.studentt.cdf(g,p.df_resid);return(E>.5?1-E:E)*2}),v=n.studentt.inv(.975,p.df_resid),d=p.coef.map(function(g,E){var A=v*s[E];return[g-A,g+A]});return{se:s,t:l,p:f,sigmaHat:o,interval95:d}}function c(p){var u=p.R2/p.df_model/((1-p.R2)/p.df_resid),o=function(l,f,v){return n.beta.cdf(l/(v/f+l),f/2,v/2)},s=1-o(u,p.df_model,p.df_resid);return{F_statistic:u,pvalue:s}}function h(p,u){var o=i(p,u),s=a(o),l=c(o),f=1-(1-o.R2)*((o.nobs-1)/o.df_resid);return o.t=s,o.f=l,o.adjust_R2=f,o}return{ols:h}}(),n.extend({buildxmatrix:function(){for(var i=new Array(arguments.length),a=0;a1){for(u=[],c=0;c{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.besseli(t,e)},BESSELJ:(t,e)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.besselj(t,e)},BESSELK:(t,e)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.besselk(t,e)},BESSELY:(t,e)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.bessely(t,e)},BIN2DEC:t=>{t=b.accept(t,H.NUMBER_NO_BOOLEAN);let e=t.toString();if(e.length>10)throw D.NUM;return e.length===10&&e.substring(0,1)==="1"?parseInt(e.substring(1),2)+vn:parseInt(e,2)},BIN2HEX:(t,e)=>{t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,null);const n=t.toString();if(n.length>10)throw D.NUM;if(n.length===10&&n.substring(0,1)==="1")return(parseInt(n.substring(1),2)+0xfffffffe00).toString(16).toUpperCase();const r=parseInt(t,2).toString(16);if(e==null)return r.toUpperCase();if(e<0)throw D.NUM;if(e=Math.trunc(e),e>=r.length)return(Ke.REPT("0",e-r.length)+r).toUpperCase();throw D.NUM},BIN2OCT:(t,e)=>{t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER,null);let n=t.toString();if(n.length>10)throw D.NUM;if(n.length===10&&n.substr(0,1)==="1")return(parseInt(n.substr(1),2)+1073741312).toString(8);let r=parseInt(t,2).toString(8);if(e==null)return r.toUpperCase();if(e<0)throw D.NUM;if(e=Math.trunc(e),e>=r.length)return Ke.REPT("0",e-r.length)+r;throw D.NUM},BITAND:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),t<0||e<0||Math.floor(t)!==t||Math.floor(e)!==e||t>0xffffffffffff||e>0xffffffffffff)throw D.NUM;return t&e},BITLSHIFT:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),e=Math.trunc(e),Math.abs(e)>53||t<0||Math.floor(t)!==t||t>0xffffffffffff)throw D.NUM;const n=e>=0?t*2**e:Math.trunc(t/2**-e);if(n>0xffffffffffff)throw D.NUM;return n},BITOR:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),t<0||e<0||Math.floor(t)!==t||Math.floor(e)!==e||t>0xffffffffffff||e>0xffffffffffff)throw D.NUM;return t|e},BITRSHIFT:(t,e)=>(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),K.BITLSHIFT(t,-e)),BITXOR:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),t<0||t>0xffffffffffff||Math.floor(t)!==t||e<0||e>0xffffffffffff||Math.floor(e)!==e)throw D.NUM;return t^e},COMPLEX:(t,e,n)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),n=b.accept(n,H.STRING,"i"),n!=="i"&&n!=="j")throw D.VALUE;if(t===0&&e===0)return 0;if(t===0)return e===1?n:e===-1?"-"+n:e.toString()+n;if(e===0)return t.toString();{let r=e>0?"+":"";return e===1?t.toString()+r+n:e===-1?t.toString()+r+"-"+n:t.toString()+r+e.toString()+n}},DEC2BIN:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER,null),tEr)throw D.NUM;if(t<0)return"1"+Ke.REPT("0",9-(512+t).toString(2).length)+(512+t).toString(2);let n=parseInt(t,10).toString(2);if(e==null)return n;if(e=Math.trunc(e),e<=0||e{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER,null),t<-549755813888||t>549755813888)throw D.NUM;if(t<0)return(1099511627776+t).toString(16).toUpperCase();let n=parseInt(t,10).toString(16);if(e==null)return n.toUpperCase();if(e=Math.trunc(e),e<=0||e{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER,null),t<-536870912||t>536870912)throw D.NUM;if(t<0)return(t+1073741824).toString(8);let n=parseInt(t,10).toString(8);if(e==null)return n.toUpperCase();if(e=Math.trunc(e),e<=0||e(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,0),t===e?1:0),ERF:(t,e)=>(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,0),mi.erf(t)),ERFC:t=>(t=b.accept(t,H.NUMBER_NO_BOOLEAN),mi.erfc(t)),GESTEP:(t,e)=>(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,0),t>=e?1:0),HEX2BIN:(t,e)=>{if(t=b.accept(t,H.STRING),e=b.accept(e,H.NUMBER,null),t.length>10||!/^[0-9a-fA-F]*$/.test(t))throw D.NUM;let n=t.length===10&&t.substr(0,1).toLowerCase()==="f",r=n?parseInt(t,16)-1099511627776:parseInt(t,16);if(rEr)throw D.NUM;if(n)return"1"+Ke.REPT("0",9-(r+512).toString(2).length)+(r+512).toString(2);let i=r.toString(2);if(e==null)return i;if(e=Math.trunc(e),e<=0||e{if(t=b.accept(t,H.STRING),t.length>10||!/^[0-9a-fA-F]*$/.test(t))throw D.NUM;let e=parseInt(t,16);return e>=549755813888?e-1099511627776:e},HEX2OCT:(t,e)=>{if(t=b.accept(t,H.STRING),t.length>10||!/^[0-9a-fA-F]*$/.test(t))throw D.NUM;let n=K.HEX2DEC(t);if(n>Ga||n<$a)throw D.NUM;return K.DEC2OCT(n,e)},IMABS:t=>{const{real:e,im:n}=re(t);return Math.sqrt(Math.pow(e,2)+Math.pow(n,2))},IMAGINARY:t=>re(t).im,IMARGUMENT:t=>{const{real:e,im:n}=re(t);if(e===0&&n===0)throw D.DIV0;return e===0&&n>0?Math.PI/2:e===0&&n<0?-Math.PI/2:e<0&&n===0?Math.PI:e>0&&n===0?0:e>0?Math.atan(n/e):e<0&&n>0?Math.atan(n/e)+Math.PI:Math.atan(n/e)-Math.PI},IMCONJUGATE:t=>{const{real:e,im:n,unit:r}=re(t);return n!==0?K.COMPLEX(e,-n,r):""+e},IMCOS:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.cos(e)*(Math.exp(n)+Math.exp(-n))/2,a=-Math.sin(e)*(Math.exp(n)-Math.exp(-n))/2;return K.COMPLEX(i,a,r)},IMCOSH:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.cos(n)*(Math.exp(e)+Math.exp(-e))/2,a=-Math.sin(n)*(Math.exp(e)-Math.exp(-e))/2;return K.COMPLEX(i,-a,r)},IMCOT:t=>{t=b.accept(t);let e=K.IMCOS(t),n=K.IMSIN(t);return K.IMDIV(e,n)},IMCSC:t=>(t=b.accept(t),K.IMDIV("1",K.IMSIN(t))),IMCSCH:t=>(t=b.accept(t),K.IMDIV("1",K.IMSINH(t))),IMDIV:(t,e)=>{const n=re(t),r=n.real,i=n.im,a=n.unit,c=re(e),h=c.real,p=c.im,u=c.unit;if(h===0&&p===0||a!==u)throw D.NUM;let o=a,s=Math.pow(h,2)+Math.pow(p,2);return K.COMPLEX((r*h+i*p)/s,(i*h-r*p)/s,o)},IMEXP:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.exp(e);return K.COMPLEX(i*Math.cos(n),i*Math.sin(n),r)},IMLN:t=>{const{real:e,im:n,unit:r}=re(t);return K.COMPLEX(Math.log(Math.sqrt(Math.pow(e,2)+Math.pow(n,2))),Math.atan(n/e),r)},IMLOG10:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.log(Math.sqrt(Math.pow(e,2)+Math.pow(n,2)))/Math.log(10),a=Math.atan(n/e)/Math.log(10);return K.COMPLEX(i,a,r)},IMLOG2:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.log(Math.sqrt(Math.pow(e,2)+Math.pow(n,2)))/Math.log(2),a=Math.atan(n/e)/Math.log(2);return K.COMPLEX(i,a,r)},IMPOWER:(t,e)=>{let{unit:n}=re(t);e=b.accept(e,H.NUMBER_NO_BOOLEAN);let r=Math.pow(K.IMABS(t),e),i=K.IMARGUMENT(t),a=r*Math.cos(e*i),c=r*Math.sin(e*i);return K.COMPLEX(a,c,n)},IMPRODUCT:(...t)=>{let e,n=0;return b.flattenParams(t,null,!1,r=>{if(n===0)e=b.accept(r),re(e);else{const i=re(e),a=i.real,c=i.im,h=i.unit,p=re(r),u=p.real,o=p.im,s=p.unit;if(h!==s)throw D.VALUE;e=K.COMPLEX(a*u-c*o,a*o+c*u)}n++},1),e},IMREAL:t=>re(t).real,IMSEC:t=>K.IMDIV("1",K.IMCOS(t)),IMSECH:t=>K.IMDIV("1",K.IMCOSH(t)),IMSIN:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.sin(e)*(Math.exp(n)+Math.exp(-n))/2,a=Math.cos(e)*(Math.exp(n)-Math.exp(-n))/2;return K.COMPLEX(i,a,r)},IMSINH:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.cos(n)*(Math.exp(e)-Math.exp(-e))/2,a=Math.sin(n)*(Math.exp(e)+Math.exp(-e))/2;return K.COMPLEX(i,a,r)},IMSQRT:t=>{const{unit:e}=re(t);let n=Math.sqrt(K.IMABS(t)),r=K.IMARGUMENT(t);return K.COMPLEX(n*Math.cos(r/2),n*Math.sin(r/2),e)},IMSUB:(t,e)=>{const n=re(t),r=n.real,i=n.im,a=n.unit,c=re(e),h=c.real,p=c.im,u=c.unit;if(a!==u)throw D.VALUE;return K.COMPLEX(r-h,i-p,a)},IMSUM:(...t)=>{let e=0,n=0,r;return b.flattenParams(t,null,!1,i=>{const{real:a,im:c,unit:h}=re(i);if(r||(r=h),r!==h)throw D.VALUE;e+=a,n+=c}),K.COMPLEX(e,n,r)},IMTAN:t=>{const{unit:e}=re(t);return K.IMDIV(K.IMSIN(t),K.IMCOS(t),e)},OCT2BIN:(t,e)=>{if(t=b.accept(t,H.STRING),e=b.accept(e,H.NUMBER,null),t.length>10||e>10||e!==null&&e<0)throw D.NUM;e=Math.trunc(e);let n=t.length===10&&t.substring(0,1)==="7",r=K.OCT2DEC(t);if(rEr)return D.NUM;if(n)return"1"+Ke.REPT("0",9-(512+r).toString(2).length)+(512+r).toString(2);let i=r.toString(2);if(e===0)return i;if(e{if(t=b.accept(t,H.STRING),t.length>10)throw D.NUM;for(const n of t)if(n<"0"||n>"7")throw D.NUM;let e=parseInt(t,8);return e>=536870912?e-1073741824:e},OCT2HEX:(t,e)=>{if(t=b.accept(t,H.STRING),e=b.accept(e,H.NUMBER_NO_BOOLEAN,null),t.length>10)throw D.NUM;for(const i of t)if(i<"0"||i>"7")throw D.NUM;if(e=Math.trunc(e),e<0||e>10)throw D.NUM;let n=K.OCT2DEC(t),r=K.DEC2HEX(n);if(e===0)return r;if(e{if(t=X.accept(t,Oe.NUMBER),e=X.accept(e,Oe.NUMBER),n=X.accept(n,Oe.NUMBER,1),r=X.accept(r,Oe.BOOLEAN,!0),i=X.accept(i,Oe.STRING,""),t<1||e<1||n<1||n>4)throw te.VALUE;let a="";return i.length>0&&(/[^A-Za-z_.\d\u007F-\uFFFF]/.test(i)?a+=`'${i}'!`:a+=i+"!"),r?(a+=n===1||n===3?"$":"",a+=za.columnNumberToName(e),a+=n===1||n===2?"$":"",a+=t):(a+="R",a+=n===4||n===3?`[${t}]`:t,a+="C",a+=n===4||n===2?`[${e}]`:e),a},AREAS:t=>(t=X.accept(t),t instanceof Ri?t.length:1),CHOOSE:(t,...e)=>{},COLUMN:(t,e)=>{if(e==null){if(t.position.col!=null)return t.position.col;throw Error("FormulaParser.parse is called without position parameter.")}else{if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return e.ref.col;if(X.isRangeRef(e))return e.ref.from.col;throw Error("ReferenceFunctions.COLUMN should not reach here.")}},COLUMNS:(t,e)=>{if(e==null)throw Error("COLUMNS requires one argument");if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return 1;if(X.isRangeRef(e))return Math.abs(e.ref.from.col-e.ref.to.col)+1;throw Error("ReferenceFunctions.COLUMNS should not reach here.")},HLOOKUP:(t,e,n,r)=>{t=X.accept(t);try{e=X.accept(e,Oe.ARRAY,void 0,!1)}catch(a){throw a instanceof te?te.NA:a}if(n=X.accept(n,Oe.NUMBER),r=X.accept(r,Oe.BOOLEAN,!0),n<1)throw te.VALUE;if(e[n-1]===void 0)throw te.REF;const i=typeof t;if(r){let a=i===typeof e[0][0]?e[0][0]:null;for(let c=1;ct&&h>t)throw te.NA;if(h===t)return e[n-1][c];if(a!=null&&h>t&&a<=t)return e[n-1][c-1];a=h}}if(a==null)throw te.NA;return a}else{let a=-1;if(gn.isWildCard(t)?a=e[0].findIndex(c=>gn.toRegex(t,"i").test(c)):a=e[0].findIndex(c=>c===t),a===-1)throw te.NA;return e[n-1][a]}},INDEX:(t,e,n,r,i)=>{n=t.utils.extractRefValue(n),n={value:n.val,isArray:n.isArray},n=X.accept(n,Oe.NUMBER),n=Math.trunc(n),r==null?r=1:(r=t.utils.extractRefValue(r),r={value:r.val,isArray:r.isArray},r=X.accept(r,Oe.NUMBER,1),r=Math.trunc(r)),i==null?i=1:(i=t.utils.extractRefValue(i),i={value:i.val,isArray:i.isArray},i=X.accept(i,Oe.NUMBER,1),i=Math.trunc(i));let a=e;if(e instanceof Ri)a=e.refs[i-1];else if(i>1)throw te.REF;if(n===0&&r===0)return a;if(n===0){if(X.isRangeRef(a)){if(a.ref.to.col-a.ref.from.colc.push([h[r-1]])),c}}if(r===0){if(X.isRangeRef(a)){if(a.ref.to.row-a.ref.from.row1||r>1)throw te.REF;return{ref:{row:a.row+n-1,col:a.col+r-1}}}else if(Array.isArray(a)){if(a.length{},ROW:(t,e)=>{if(e==null){if(t.position.row!=null)return t.position.row;throw Error("FormulaParser.parse is called without position parameter.")}else{if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return e.ref.row;if(X.isRangeRef(e))return e.ref.from.row;throw Error("ReferenceFunctions.ROW should not reach here.")}},ROWS:(t,e)=>{if(e==null)throw Error("ROWS requires one argument");if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return 1;if(X.isRangeRef(e))return Math.abs(e.ref.from.row-e.ref.to.row)+1;throw Error("ReferenceFunctions.ROWS should not reach here.")},TRANSPOSE:t=>{t=X.accept(t,Oe.ARRAY,void 0,!1);const e=[];for(let n=0;n{t=X.accept(t);try{e=X.accept(e,Oe.ARRAY,void 0,!1)}catch(a){throw a instanceof te?te.NA:a}if(n=X.accept(n,Oe.NUMBER),r=X.accept(r,Oe.BOOLEAN,!0),n<1)throw te.VALUE;if(e[0][n-1]===void 0)throw te.REF;const i=typeof t;if(r){let a=i===typeof e[0][0]?e[0][0]:null;for(let c=1;ct&&p>t)throw te.NA;if(p===t)return h[n-1];if(a!=null&&p>t&&a<=t)return e[c-1][n-1];a=p}}if(a==null)throw te.NA;return a}else{let a=-1;if(gn.isWildCard(t)?a=e.findIndex(c=>gn.toRegex(t,"i").test(c[0])):a=e.findIndex(c=>c[0]===t),a===-1)throw te.NA;return e[a][n-1]}}};var Qa=Xa;const lt=he(),{FormulaHelpers:Za,Types:Ja}=ge(),me=Za,ja={"#NULL!":1,"#DIV/0!":2,"#VALUE!":3,"#REF!":4,"#NAME?":5,"#NUM!":6,"#N/A":7},ec={CELL:(t,e)=>{},"ERROR.TYPE":t=>{if(t=me.accept(t),t instanceof lt)return ja[t.toString()];throw lt.NA},INFO:()=>{},ISBLANK:t=>t.ref?t.value==null||t.value==="":!1,ISERR:t=>(t=me.accept(t),t instanceof lt&&t.toString()!=="#N/A"),ISERROR:t=>(t=me.accept(t),t instanceof lt),ISEVEN:t=>(t=me.accept(t,Ja.NUMBER),t=Math.trunc(t),t%2===0),ISLOGICAL:t=>(t=me.accept(t),typeof t=="boolean"),ISNA:t=>(t=me.accept(t),t instanceof lt&&t.toString()==="#N/A"),ISNONTEXT:t=>(t=me.accept(t),typeof t!="string"),ISNUMBER:t=>(t=me.accept(t),typeof t=="number"),ISREF:t=>!t.ref||me.isCellRef(t)&&(t.ref.row>1048576||t.ref.col>16384)||me.isRangeRef(t)&&(t.ref.from.row>1048576||t.ref.from.col>16384||t.ref.to.row>1048576||t.ref.to.col>16384)?!1:(t=me.accept(t),!(t instanceof lt&&t.toString()==="#REF!")),ISTEXT:t=>(t=me.accept(t),typeof t=="string"),N:t=>{t=me.accept(t);const e=typeof t;if(e==="number")return t;if(e==="boolean")return Number(t);if(t instanceof lt)throw t;return 0},NA:()=>{throw lt.NA},TYPE:t=>{if(t.ref){if(me.isRangeRef(t))return 16;if(me.isCellRef(t)&&(t=me.accept(t),typeof t=="string"&&t.length===0))return 1}t=me.accept(t);const e=typeof t;if(e==="number")return 1;if(e==="string")return 2;if(e==="boolean")return 4;if(t instanceof lt)return 16;if(Array.isArray(t))return 64}};var tc=ec;const k=he(),{FormulaHelpers:nc,Types:I}=ge(),O=nc,B=zo,En=qo,rc=2.5066282746310002,Xo={"BETA.DIST":(t,e,n,r,i,a)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),i=O.accept(i,I.NUMBER,0),a=O.accept(a,I.NUMBER,1),e<=0||n<=0||ta||i===a)throw k.NUM;return t=(t-i)/(a-i),r?B.beta.cdf(t,e,n):B.beta.pdf(t,e,n)/(a-i)},"BETA.INV":(t,e,n,r,i)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.NUMBER,0),i=O.accept(i,I.NUMBER,1),e<=0||n<=0||t<=0||t>1)throw k.NUM;return B.beta.inv(t,e,n)*(i-r)+r},"BINOM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),e<0||n<0||n>1||t<0||t>e)throw k.NUM;return r?B.binomial.cdf(t,e,n):B.binomial.pdf(t,e,n)},"BINOM.DIST.RANGE":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.NUMBER,n),t<0||e<0||e>1||n<0||n>t||rt)throw k.NUM;let i=0;for(let a=n;a<=r;a++)i+=En.COMBIN(t,a)*Math.pow(e,a)*Math.pow(1-e,t-a);return i},"BINOM.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||e<0||e>1||n<0||n>1)throw k.NUM;let r=0;for(;r<=t;){if(B.binomial.cdf(r,t,e)>=n)return r;r++}},"CHISQ.DIST":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),e=Math.trunc(e),t<0||e<1||e>10**10)throw k.NUM;return n?B.chisquare.cdf(t,e):B.chisquare.pdf(t,e)},"CHISQ.DIST.RT":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e=Math.trunc(e),t<0||e<1||e>10**10)throw k.NUM;return 1-B.chisquare.cdf(t,e)},"CHISQ.INV":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e=Math.trunc(e),t<0||t>1||e<1||e>10**10)throw k.NUM;return B.chisquare.inv(t,e)},"CHISQ.INV.RT":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e=Math.trunc(e),t<0||t>1||e<1||e>10**10)throw k.NUM;return B.chisquare.inv(1-t,e)},"CHISQ.TEST":(t,e)=>{const n=O.accept(t,I.ARRAY,void 0,!1,!1),r=O.accept(e,I.ARRAY,void 0,!1,!1);if(n.length!==r.length||n[0].length!==r[0].length||n.length===1&&n[0].length===1)throw k.NA;const i=n.length,a=n[0].length;let c=(i-1)*(a-1);i===1?c=a-1:c=i-1;let h=0;for(let l=0;l=2;)p=p*h/u,u=u-2;let o=p,s=c;for(;o>1e-15*p;)s=s+2,o=o*h/s,p=p+o;return 1-p},"CONFIDENCE.NORM":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),n=Math.trunc(n),t<=0||t>=1||e<=0||n<1)throw k.NUM;return B.normalci(1,t,e,n)[1]-1},"CONFIDENCE.T":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),n=Math.trunc(n),t<=0||t>=1||e<=0||n<1)throw k.NUM;if(n===1)throw k.DIV0;return B.tci(1,t,e,n)[1]-1},CORREL:(t,e)=>{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),t.length!==e.length)throw k.NA;const n=[],r=[];for(let i=0;i{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),t.length!==e.length)throw k.NA;const n=[],r=[];for(let h=0;h{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),t.length!==e.length)throw k.NA;const n=[],r=[];for(let i=0;i{let e=0,n=[];O.flattenParams(t,I.NUMBER,!0,(i,a)=>{typeof i=="number"&&(e+=i,n.push(i))});const r=e/n.length;e=0;for(let i=0;i{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.BOOLEAN),t<0||e<=0)throw k.NUM;return n?B.exponential.cdf(t,e):B.exponential.pdf(t,e)},"F.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<0||e<1||n<1)throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),r?B.centralF.cdf(t,e,n):B.centralF.pdf(t,e,n)},"F.DIST.RT":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||e<1||n<1)throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),1-B.centralF.cdf(t,e,n)},"F.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||t>1||e<1||n<1)throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),B.centralF.inv(t,e,n)},"F.INV.RT":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||t>1||e<1||e>=Math.pow(10,10)||n<1||n>=Math.pow(10,10))throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),B.centralF.inv(1-t,e,n)},"F.TEST":(t,e)=>{t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0);const n=[],r=[];let i=0,a=0;for(let p=0;p{if(t=O.accept(t,I.NUMBER),t<=-1||t>=1)throw k.NUM;return Math.log((1+t)/(1-t))/2},FISHERINV:t=>{t=O.accept(t,I.NUMBER);let e=Math.exp(2*t);return(e-1)/(e+1)},FORECAST:(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.ARRAY,void 0,!0,!0),n=O.accept(n,I.ARRAY,void 0,!0,!0),n.length!==e.length)throw k.NA;const r=[],i=[];let a=!0;for(let l=0;l{},"FORECAST.ETS.CONFINT":()=>{},"FORECAST.ETS.SEASONALITY":()=>{},"FORECAST.ETS.STAT":()=>{},"FORECAST.LINEAR":(...t)=>Xo.FORECAST(...t),FREQUENCY:(t,e)=>{t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0);const n=[];for(let i=0;i{if(t=O.accept(t,I.NUMBER),t===0||t<0&&t===Math.trunc(t))throw k.NUM;return B.gammafn(t)},"GAMMA.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<0||e<=0||n<=0)throw k.NUM;return r?B.gamma.cdf(t,e,n,!0):B.gamma.pdf(t,e,n,!1)},"GAMMA.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||t>1||e<=0||n<=0)throw k.NUM;return B.gamma.inv(t,e,n)},GAMMALN:t=>{if(t=O.accept(t,I.NUMBER),t<=0)throw k.NUM;return B.gammaln(t)},"GAMMALN.PRECISE":t=>{if(t=O.accept(t,I.NUMBER),t<=0)throw k.NUM;return B.gammaln(t)},GAUSS:t=>(t=O.accept(t,I.NUMBER),B.normal.cdf(t,0,1)-.5),GEOMEAN:(...t)=>{const e=[];return O.flattenParams(t,I.NUMBER,!0,(n,r)=>{typeof n=="number"&&e.push(n)}),B.geomean(e)},GROWTH:(t,e,n,r)=>{t=O.accept(t,I.ARRAY,void 0,!0,!0);for(let f=0;f{let e=0,n=0;return O.flattenParams(t,I.NUMBER,!0,(r,i)=>{typeof r=="number"&&(n+=1/r,e++)}),e/n},"HYPGEOM.DIST":(t,e,n,r,i)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.NUMBER),i=O.accept(i,I.BOOLEAN),t=Math.trunc(t),e=Math.trunc(e),n=Math.trunc(n),r=Math.trunc(r),r<=0||t<0||e<=0||n<=0||e>r||n>r||e{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),e.length!==t.length)throw k.NA;const n=[],r=[];for(let u=0;u{let e=0,n=[];O.flattenParams(t,I.NUMBER,!0,(a,c)=>{typeof a=="number"&&(e+=a,n.push(a))});const r=n.length;e/=r;let i=0;for(let a=0;a{},LOGEST:()=>{},"LOGNORM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<=0||n<=0)throw k.NUM;return r?B.lognormal.cdf(t,e,n):B.lognormal.pdf(t,e,n)},"LOGNORM.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<=0||t>=1||n<=0)throw k.NUM;return B.lognormal.inv(t,e,n)},"MODE.MULT":()=>{},"MODE.SNGL":()=>{},"NEGBINOM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t=Math.trunc(t),e=Math.trunc(e),n<0||n>1||t<0||e<1)throw k.NUM;return r?B.negbin.cdf(t,e,n):B.negbin.pdf(t,e,n)},"NORM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),n<=0)throw k.NUM;return r?B.normal.cdf(t,e,n):B.normal.pdf(t,e,n)},"NORM.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<=0||t>=1||n<=0)throw k.NUM;return B.normal.inv(t,e,n)},"NORM.S.DIST":(t,e)=>(t=O.accept(t,I.NUMBER),e=O.accept(e,I.BOOLEAN),e?B.normal.cdf(t,0,1):B.normal.pdf(t,0,1)),"NORM.S.INV":t=>{if(t=O.accept(t,I.NUMBER),t<=0||t>=1)throw k.NUM;return B.normal.inv(t,0,1)},PEARSON:()=>{},"PERCENTILE.EXC":()=>{},"PERCENTILE.INC":()=>{},"PERCENTRANK.EXC":()=>{},"PERCENTRANK.INC":()=>{},PERMUTATIONA:()=>{},PHI:t=>(t=O.accept(t,I.NUMBER),Math.exp(-.5*t*t)/rc),"POISSON.DIST":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.BOOLEAN),t<0||e<0)throw k.NUM;return t=Math.trunc(t),n?B.poisson.cdf(t,e):B.poisson.pdf(t,e)},PROB:()=>{},"QUARTILE.EXC":()=>{},"QUARTILE.INC":()=>{},"RANK.AVG":()=>{},"RANK.EQ":()=>{},RSQ:()=>{},SKEW:()=>{},"SKEW.P":()=>{},SLOPE:()=>{},STANDARDIZE:(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),n<=0)throw k.NUM;return(t-e)/n},"STDEV.P":()=>{},"STDEV.S":()=>{},STDEVA:()=>{},STDEVPA:()=>{},STEYX:()=>{},"T.DIST":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.BOOLEAN),e<1)throw k.NUM;return n?B.studentt.cdf(t,e):B.studentt.pdf(t,e)},"T.DIST.2T":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e<1||t<0)throw k.NUM;return(1-B.studentt.cdf(t,e))*2},"T.DIST.RT":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e<1)throw k.NUM;return 1-B.studentt.cdf(t,e)},"T.INV":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),t<=0||t>1||e<1)throw k.NUM;return e=e%1===0?e:Math.trunc(e),B.studentt.inv(t,e)},"T.INV.2T":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),t<=0||t>1||e<1)throw k.NUM;return e=e%1===0?e:Math.trunc(e),Math.abs(B.studentt.inv(t/2,e))},"T.TEST":()=>{},TREND:()=>{},TRIMMEAN:()=>{},"VAR.P":()=>{},"VAR.S":()=>{},VARA:()=>{},VARPA:()=>{},"WEIBULL.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<0||e<=0||n<=0)throw k.NUM;return r?1-Math.exp(-Math.pow(t/n,e)):Math.pow(t,e-1)*Math.exp(-Math.pow(t/n,e))*e/Math.pow(n,e)},"Z.TEST":()=>{}};var ic={DistributionFunctions:Xo};const oc=he(),{FormulaHelpers:sc,Types:mn,Criteria:Ni,Address:Vh}=ge(),{Infix:Ai}=Wr,ut=sc,{DistributionFunctions:ac}=ic,cc={AVEDEV:(...t)=>{let e=0;const n=[];ut.flattenParams(t,mn.NUMBER,!0,(i,a)=>{typeof i=="number"&&(e+=i,n.push(i))});const r=e/n.length;e=0;for(let i=0;i{let e=0,n=0;return ut.flattenParams(t,mn.NUMBER,!0,(r,i)=>{typeof r=="number"&&(e+=r,n++)}),e/n},AVERAGEA:(...t)=>{let e=0,n=0;return ut.flattenParams(t,mn.NUMBER,!0,(r,i)=>{const a=typeof r;a==="number"?(e+=r,n++):a==="string"&&n++}),e/n},AVERAGEIF:(t,e,n,r)=>{const i=ut.retrieveRanges(t,e,r);e=i[0],r=i[1],n=ut.retrieveArg(t,n);const a=n.isArray;n=Ni.parse(ut.accept(n));let c=0,h=0;if(e.forEach((p,u)=>{p.forEach((o,s)=>{const l=r[u][s];typeof l=="number"&&(n.op==="wc"?n.match===n.value.test(o)&&(c+=l,h++):Ai.compareOp(o,n.op,n.value,Array.isArray(o),a)&&(c+=l,h++))})}),h===0)throw oc.DIV0;return c/h},AVERAGEIFS:()=>{},COUNT:(...t)=>{let e=0;return ut.flattenParams(t,null,!0,(n,r)=>{(r.isLiteral&&!isNaN(n)||typeof n=="number")&&e++}),e},COUNTIF:(t,e)=>{t=ut.accept(t,mn.ARRAY,void 0,!1,!0);const n=e.isArray;e=ut.accept(e);let r=0;return e=Ni.parse(e),t.forEach(i=>{i.forEach(a=>{e.op==="wc"?e.match===e.value.test(a)&&r++:Ai.compareOp(a,e.op,e.value,Array.isArray(a),n)&&r++})}),r},LARGE:()=>{},MAX:()=>{},MAXA:()=>{},MAXIFS:()=>{},MEDIAN:()=>{},MIN:()=>{},MINA:()=>{},MINIFS:()=>{},PERMUT:()=>{},PERMUTATIONA:()=>{},SMALL:()=>{}};var lc=Object.assign(cc,ac);const De=he(),{FormulaHelpers:uc,Types:pe}=ge(),ae=uc,Rn=1e3*60*60*24,Lr=new Date(Date.UTC(1900,0,1)),fc=[void 0,0,1,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,1,2,3,4,5,6,0],hc=[void 0,[1,2,3,4,5,6,7],[7,1,2,3,4,5,6],[6,0,1,2,3,4,5],void 0,void 0,void 0,void 0,void 0,void 0,void 0,[7,1,2,3,4,5,6],[6,7,1,2,3,4,5],[5,6,7,1,2,3,4],[4,5,6,7,1,2,3],[3,4,5,6,7,1,2],[2,3,4,5,6,7,1],[1,2,3,4,5,6,7]],yi=[void 0,[6,0],[0,1],[1,2],[2,3],[3,4],[4,5],[5,6],void 0,void 0,void 0,[0],[1],[2],[3],[4],[5],[6]],pc=/^\s*(\d\d?)\s*(:\s*\d\d?)?\s*(:\s*\d\d?)?\s*(pm|am)?\s*$/i,dc=/^\s*((\d\d?)\s*([-\/])\s*(\d\d?))([\d:.apm\s]*)$/i,vc=/^\s*((\d\d?)\s*([-/])\s*(jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*))([\d:.apm\s]*)$/i,gc=/^\s*((jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*)\s*([-/])\s*(\d\d?))([\d:.apm\s]*)$/i;function Ec(t){const e=t.match(dc),n=t.match(vc),r=t.match(gc);return e?t=e[1]+e[3]+new Date().getFullYear()+e[5]:n?t=n[1]+n[3]+new Date().getFullYear()+n[5]:r&&(t=r[1]+r[3]+new Date().getFullYear()+r[5]),new Date(Date.parse(`${t} UTC`))}function mc(t){const e=t.match(pc);if(!e)return;const n=e[2]?e[2]:":00",r=e[3]?e[3]:":00",i=e[4]?" "+e[4]:"",a=new Date(Date.parse(`1/1/1900 ${e[1]+n+r+i} UTC`));let c=new Date;return c=new Date(Date.UTC(c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds())),new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds()))}function Ot(t){const e=t>-22038912e5?2:1;return Math.floor((t-Lr)/864e5)+e}function Rc(t){if(t<0)throw De.VALUE;return t<=60?new Date(Lr.getTime()+(t-1)*864e5):new Date(Lr.getTime()+(t-2)*864e5)}function Qo(t){if(t instanceof Date)return{date:t};t=ae.accept(t);let e=!0,n;return isNaN(t)?(n=mc(t),n?e=!1:n=Ec(t)):(t=Number(t),n=Rc(t)),{date:n,isDateGiven:e}}function Z(t){return Qo(t).date}function mr(t,e){return t.getUTCFullYear()===e.getUTCFullYear()&&t.getUTCMonth()===e.getUTCMonth()&&t.getUTCDate()===e.getUTCDate()}function Nc(t){return t===1900?!0:new Date(t,1,29).getMonth()===1}const Mt={DATE:(t,e,n)=>{if(t=ae.accept(t,pe.NUMBER),e=ae.accept(e,pe.NUMBER),n=ae.accept(n,pe.NUMBER),t<0||t>=1e4)throw De.NUM;return t<1900&&(t+=1900),Ot(Date.UTC(t,e-1,n))},DATEDIF:(t,e,n)=>{if(t=Z(t),e=Z(e),n=ae.accept(n,pe.STRING).toLowerCase(),t>e)throw De.NUM;const r=e.getUTCFullYear()-t.getUTCFullYear(),i=e.getUTCMonth()-t.getUTCMonth(),a=e.getUTCDate()-t.getUTCDate();let c;switch(n){case"y":return c=i<0||i===0&&a<0?-1:0,c+r;case"m":return c=a<0?-1:0,r*12+i+c;case"d":return Math.floor(e-t)/Rn;case"md":return t.setUTCFullYear(e.getUTCFullYear()),a<0?t.setUTCMonth(e.getUTCMonth()-1):t.setUTCMonth(e.getUTCMonth()),Math.floor(e-t)/Rn;case"ym":return c=a<0?-1:0,(c+r*12+i)%12;case"yd":return i<0||i===0&&a<0?t.setUTCFullYear(e.getUTCFullYear()-1):t.setUTCFullYear(e.getUTCFullYear()),Math.floor(e-t)/Rn}},DATEVALUE:t=>{t=ae.accept(t,pe.STRING);const{date:e,isDateGiven:n}=Qo(t);if(!n)return 0;const r=Ot(e);if(r<0||r>2958465)throw De.VALUE;return r},DAY:t=>Z(t).getUTCDate(),DAYS:(t,e)=>{t=Z(t),e=Z(e);let n=0;return e<-22038912e5&&-22038912e5{t=Z(t),e=Z(e),n=ae.accept(n,pe.BOOLEAN,!1),t.getUTCDate()===31&&t.setUTCDate(30),!n&&t.getUTCDate()<30&&e.getUTCDate()>30?e.setUTCMonth(e.getUTCMonth()+1,1):e.getUTCDate()===31&&e.setUTCDate(30);const r=e.getUTCFullYear()-t.getUTCFullYear(),i=e.getUTCMonth()-t.getUTCMonth(),a=e.getUTCDate()-t.getUTCDate();return i*30+a+r*12*30},EDATE:(t,e)=>(t=Z(t),e=ae.accept(e,pe.NUMBER),t.setUTCMonth(t.getUTCMonth()+e),Ot(t)),EOMONTH:(t,e)=>(t=Z(t),e=ae.accept(e,pe.NUMBER),t.setUTCMonth(t.getUTCMonth()+e+1,0),Ot(t)),HOUR:t=>Z(t).getUTCHours(),ISOWEEKNUM:t=>{const e=Z(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=n.getUTCDay();n.setUTCDate(n.getUTCDate()+4-r);const i=new Date(Date.UTC(n.getUTCFullYear(),0,1));return Math.ceil(((n-i)/864e5+1)/7)},MINUTE:t=>Z(t).getUTCMinutes(),MONTH:t=>Z(t).getUTCMonth()+1,NETWORKDAYS:(t,e,n)=>{t=Z(t),e=Z(e);let r=1;if(t>e){r=-1;const c=t;t=e,e=c}const i=[];n!=null&&ae.flattenParams([n],pe.NUMBER,!1,c=>{i.push(Z(c))});let a=0;for(;t<=e;){if(t.getUTCDay()!==0&&t.getUTCDay()!==6){let c=!1;for(let h=0;h{t=Z(t),e=Z(e);let i=1;if(t>e){i=-1;const h=t;t=e,e=h}if(n=ae.accept(n,null,1),n==="1111111")return 0;if(typeof n=="string"&&Number(n).toString()!==n){if(n.length!==7)throw De.VALUE;n=n.charAt(6)+n.slice(0,6);const h=[];for(let p=0;p{a.push(Z(h))});let c=0;for(;t<=e;){let h=!1;for(let p=0;p{const t=new Date;return Ot(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))+(3600*t.getHours()+60*t.getMinutes()+t.getSeconds())/86400},SECOND:t=>Z(t).getUTCSeconds(),TIME:(t,e,n)=>{if(t=ae.accept(t,pe.NUMBER),e=ae.accept(e,pe.NUMBER),n=ae.accept(n,pe.NUMBER),t<0||t>32767||e<0||e>32767||n<0||n>32767)throw De.NUM;return(3600*t+60*e+n)/86400},TIMEVALUE:t=>(t=Z(t),(3600*t.getUTCHours()+60*t.getUTCMinutes()+t.getUTCSeconds())/86400),TODAY:()=>{const t=new Date;return Ot(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()))},WEEKDAY:(t,e)=>{const n=Z(t);e=ae.accept(e,pe.NUMBER,1);const r=n.getUTCDay(),i=hc[e];if(!i)throw De.NUM;return i[r]},WEEKNUM:(t,e)=>{const n=Z(t);if(e=ae.accept(e,pe.NUMBER,1),e===21)return Mt.ISOWEEKNUM(t);const r=fc[e],i=new Date(Date.UTC(n.getUTCFullYear(),0,1)),a=i.getUTCDay()Mt["WORKDAY.INTL"](t,e,1,n),"WORKDAY.INTL":(t,e,n,r)=>{if(t=Z(t),e=ae.accept(e,pe.NUMBER),n=ae.accept(n,null,1),n==="1111111")throw De.VALUE;if(typeof n=="string"&&Number(n).toString()!==n){if(n.length!==7)throw De.VALUE;n=n.charAt(6)+n.slice(0,6);const c=[];for(let h=0;h{i.push(Z(c))}),t.setUTCDate(t.getUTCDate()+1);let a=0;for(;aZ(t).getUTCFullYear(),YEARFRAC:(t,e,n)=>{if(t=Z(t),e=Z(e),t>e){const u=t;t=e,e=u}if(n=ae.accept(n,pe.NUMBER,0),n=Math.trunc(n),n<0||n>4)throw De.VALUE;let r=t.getUTCDate();const i=t.getUTCMonth()+1,a=t.getUTCFullYear();let c=e.getUTCDate();const h=e.getUTCMonth()+1,p=e.getUTCFullYear();switch(n){case 0:return r===31&&c===31?(r=30,c=30):r===31?r=30:r===30&&c===31&&(c=30),Math.abs(c+h*30+p*360-(r+i*30+a*360))/360;case 1:if(p-a<2){const u=Nc(a)&&a!==1900?366:365;return Mt.DAYS(e,t)/u}else{const u=p-a+1,s=(new Date(p+1,0,1)-new Date(a,0,1))/1e3/60/60/24/u;return Mt.DAYS(e,t)/s}case 2:return Math.abs(Mt.DAYS(e,t)/360);case 3:return Math.abs(Mt.DAYS(e,t)/365);case 4:return Math.abs(c+h*30+p*360-(r+i*30+a*360))/360}}};var Ac=Mt;const yc=he(),{FormulaHelpers:Tc,Types:wc}=ge(),Cc=Tc,Ic={ENCODEURL:t=>encodeURIComponent(Cc.accept(t,wc.STRING)),FILTERXML:()=>{},WEBSERVICE:(t,e)=>{throw yc.ERROR("WEBSERVICE is not supported in sync mode.")}};var Oc=Ic,_r="7.1.2";function ee(t){return t&&t.length===0}function Ze(t){return t==null?[]:Object.keys(t)}function xe(t){for(var e=[],n=Object.keys(t),r=0;r=this.input.length)throw Error("Unexpected end of input");this.idx++},e.prototype.loc=function(d){return{begin:d,end:this.idx}};var n=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function a(d){return d.charCodeAt(0)}function c(d,g){d.length!==void 0?d.forEach(function(E){g.push(E)}):g.push(d)}function h(d,g){if(d[g]===!0)throw"duplicate flag "+g;d[g]=!0}function p(d){if(d===void 0)throw Error("Internal Error - Should never get here!")}function u(){throw Error("Internal Error - Should never get here!")}var o,s=[];for(o=a("0");o<=a("9");o++)s.push(o);var l=[a("_")].concat(s);for(o=a("a");o<=a("z");o++)l.push(o);for(o=a("A");o<=a("Z");o++)l.push(o);var f=[a(" "),a("\f"),a(` -`),a("\r"),a(" "),a("\v"),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a("\u2028"),a("\u2029"),a(" "),a(" "),a(" "),a("\uFEFF")];function v(){}return v.prototype.visitChildren=function(d){for(var g in d){var E=d[g];d.hasOwnProperty(g)&&(E.type!==void 0?this.visit(E):Array.isArray(E)&&E.forEach(function(A){this.visit(A)},this))}},v.prototype.visit=function(d){switch(d.type){case"Pattern":this.visitPattern(d);break;case"Flags":this.visitFlags(d);break;case"Disjunction":this.visitDisjunction(d);break;case"Alternative":this.visitAlternative(d);break;case"StartAnchor":this.visitStartAnchor(d);break;case"EndAnchor":this.visitEndAnchor(d);break;case"WordBoundary":this.visitWordBoundary(d);break;case"NonWordBoundary":this.visitNonWordBoundary(d);break;case"Lookahead":this.visitLookahead(d);break;case"NegativeLookahead":this.visitNegativeLookahead(d);break;case"Character":this.visitCharacter(d);break;case"Set":this.visitSet(d);break;case"Group":this.visitGroup(d);break;case"GroupBackReference":this.visitGroupBackReference(d);break;case"Quantifier":this.visitQuantifier(d);break}this.visitChildren(d)},v.prototype.visitPattern=function(d){},v.prototype.visitFlags=function(d){},v.prototype.visitDisjunction=function(d){},v.prototype.visitAlternative=function(d){},v.prototype.visitStartAnchor=function(d){},v.prototype.visitEndAnchor=function(d){},v.prototype.visitWordBoundary=function(d){},v.prototype.visitNonWordBoundary=function(d){},v.prototype.visitLookahead=function(d){},v.prototype.visitNegativeLookahead=function(d){},v.prototype.visitCharacter=function(d){},v.prototype.visitSet=function(d){},v.prototype.visitGroup=function(d){},v.prototype.visitGroupBackReference=function(d){},v.prototype.visitQuantifier=function(d){},{RegExpParser:e,BaseRegExpVisitor:v,VERSION:"0.5.0"}})})(ns);var an=ns.exports,In={},Sc=new an.RegExpParser;function Yn(t){var e=t.toString();if(In.hasOwnProperty(e))return In[e];var n=Sc.pattern(e);return In[e]=n,n}function Bc(){In={}}var Fc=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),rs="Complement Sets are not supported for first char optimization",Sn=`Unable to use "first char" lexer optimizations: -`;function bc(t,e){e===void 0&&(e=!1);try{var n=Yn(t),r=kr(n.value,{},n.flags.ignoreCase);return r}catch(a){if(a.message===rs)e&&jo(""+Sn+(" Unable to optimize: < "+t.toString()+` > -`)+` Complement Sets cannot be automatically optimized. - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var i="";e&&(i=` - This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Pr(Sn+` -`+(" Failed parsing: < "+t.toString()+` > -`)+(" Using the regexp-to-ast library version: "+an.VERSION+` -`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+i)}}return[]}function kr(t,e,n){switch(t.type){case"Disjunction":for(var r=0;r=Jt)for(var l=o.from>=Jt?o.from:Jt,f=o.to,v=Tt(l),d=Tt(f),g=v;g<=d;g++)e[g]=g}}});break;case"Group":kr(c.value,e,n);break;default:throw Error("Non Exhaustive Match")}var h=c.quantifier!==void 0&&c.quantifier.atLeast===0;if(c.type==="Group"&&xr(c)===!1||c.type!=="Group"&&h===!1)break}break;default:throw Error("non exhaustive match!")}return xe(e)}function Nn(t,e,n){var r=Tt(t);e[r]=r,n===!0&&Dc(t,e)}function Dc(t,e){var n=String.fromCharCode(t),r=n.toUpperCase();if(r!==n){var i=Tt(r.charCodeAt(0));e[i]=i}else{var a=n.toLowerCase();if(a!==n){var i=Tt(a.charCodeAt(0));e[i]=i}}}function Ii(t,e){return Ht(t.value,function(n){if(typeof n=="number")return fe(e,n);var r=n;return Ht(e,function(i){return r.from<=i&&i<=r.to})!==void 0})}function xr(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?ot(t.value)?We(t.value,xr):xr(t.value):!1}var Vc=function(t){Fc(e,t);function e(n){var r=t.call(this)||this;return r.targetCharCodes=n,r.found=!1,r}return e.prototype.visitChildren=function(n){if(this.found!==!0){switch(n.type){case"Lookahead":this.visitLookahead(n);return;case"NegativeLookahead":this.visitNegativeLookahead(n);return}t.prototype.visitChildren.call(this,n)}},e.prototype.visitCharacter=function(n){fe(this.targetCharCodes,n.value)&&(this.found=!0)},e.prototype.visitSet=function(n){n.complement?Ii(n,this.targetCharCodes)===void 0&&(this.found=!0):Ii(n,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(an.BaseRegExpVisitor);function zr(t,e){if(e instanceof RegExp){var n=Yn(e),r=new Vc(t);return r.visit(n),r.found}else return Ht(e,function(i){return fe(t,i.charCodeAt(0))})!==void 0}var is=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),at="PATTERN",Lt="defaultMode",An="modes",os=typeof new RegExp("(?:)").sticky=="boolean";function Gc(t,e){e=Kr(e,{useSticky:os,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` -`],tracer:function(A,m){return m()}});var n=e.tracer;n("initCharCodeToOptimizedIndexMap",function(){ul()});var r;n("Reject Lexer.NA",function(){r=Wt(t,function(A){return A[at]===Qe.NA})});var i=!1,a;n("Transform Patterns",function(){i=!1,a=x(r,function(A){var m=A[at];if(dt(m)){var N=m.source;return N.length===1&&N!=="^"&&N!=="$"&&N!=="."&&!m.ignoreCase?N:N.length===2&&N[0]==="\\"&&!fe(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],N[1])?N[1]:e.useSticky?Mi(m):Oi(m)}else{if(Ct(m))return i=!0,{exec:m};if($(m,"exec"))return i=!0,m;if(typeof m=="string"){if(m.length===1)return m;var y=m.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),R=new RegExp(y);return e.useSticky?Mi(R):Oi(R)}else throw Error("non exhaustive match")}})});var c,h,p,u,o;n("misc mapping",function(){c=x(r,function(A){return A.tokenTypeIdx}),h=x(r,function(A){var m=A.GROUP;if(m!==Qe.SKIPPED){if(st(m))return m;if(pt(m))return!1;throw Error("non exhaustive match")}}),p=x(r,function(A){var m=A.LONGER_ALT;if(m){var N=Lc(r,m);return N}}),u=x(r,function(A){return A.PUSH_MODE}),o=x(r,function(A){return $(A,"POP_MODE")})});var s;n("Line Terminator Handling",function(){var A=cs(e.lineTerminatorCharacters);s=x(r,function(m){return!1}),e.positionTracking!=="onlyOffset"&&(s=x(r,function(m){if($(m,"LINE_BREAKS"))return m.LINE_BREAKS;if(as(m,A)===!1)return zr(A,m.PATTERN)}))});var l,f,v,d;n("Misc Mapping #2",function(){l=x(r,ss),f=x(a,al),v=Ne(r,function(A,m){var N=m.GROUP;return st(N)&&N!==Qe.SKIPPED&&(A[N]=[]),A},{}),d=x(a,function(A,m){return{pattern:a[m],longerAlt:p[m],canLineTerminator:s[m],isCustom:l[m],short:f[m],group:h[m],push:u[m],pop:o[m],tokenTypeIdx:c[m],tokenType:r[m]}})});var g=!0,E=[];return e.safeMode||n("First Char Optimization",function(){E=Ne(r,function(A,m,N){if(typeof m.PATTERN=="string"){var y=m.PATTERN.charCodeAt(0),R=Tt(y);Rr(A,R,d[N])}else if(ot(m.START_CHARS_HINT)){var T;V(m.START_CHARS_HINT,function(C){var M=typeof C=="string"?C.charCodeAt(0):C,_=Tt(M);T!==_&&(T=_,Rr(A,_,d[N]))})}else if(dt(m.PATTERN))if(m.PATTERN.unicode)g=!1,e.ensureOptimizations&&Pr(""+Sn+(" Unable to analyze < "+m.PATTERN.toString()+` > pattern. -`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. - This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var w=bc(m.PATTERN,e.ensureOptimizations);ee(w)&&(g=!1),V(w,function(C){Rr(A,C,d[N])})}else e.ensureOptimizations&&Pr(""+Sn+(" TokenType: <"+m.name+`> is using a custom token pattern without providing parameter. -`)+` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),g=!1;return A},[])}),n("ArrayPacking",function(){E=kc(E)}),{emptyGroups:v,patternIdxToConfig:d,charCodeToPatternIdxToConfig:E,hasCustom:i,canBeOptimized:g}}function $c(t,e){var n=[],r=Wc(t);n=n.concat(r.errors);var i=qc(r.valid),a=i.valid;return n=n.concat(i.errors),n=n.concat(Hc(a)),n=n.concat(jc(a)),n=n.concat(el(a,e)),n=n.concat(tl(a)),n}function Hc(t){var e=[],n=je(t,function(r){return dt(r[at])});return e=e.concat(Kc(n)),e=e.concat(Qc(n)),e=e.concat(Zc(n)),e=e.concat(Jc(n)),e=e.concat(zc(n)),e}function Wc(t){var e=je(t,function(i){return!$(i,at)}),n=x(e,function(i){return{message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:se.MISSING_PATTERN,tokenTypes:[i]}}),r=qn(t,e);return{errors:n,valid:r}}function qc(t){var e=je(t,function(i){var a=i[at];return!dt(a)&&!Ct(a)&&!$(a,"exec")&&!st(a)}),n=x(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:se.INVALID_PATTERN,tokenTypes:[i]}}),r=qn(t,e);return{errors:n,valid:r}}var Yc=/[^\\][\$]/;function Kc(t){var e=function(i){is(a,i);function a(){var c=i!==null&&i.apply(this,arguments)||this;return c.found=!1,c}return a.prototype.visitEndAnchor=function(c){this.found=!0},a}(an.BaseRegExpVisitor),n=je(t,function(i){var a=i[at];try{var c=Yn(a),h=new e;return h.visit(c),h.found}catch{return Yc.test(a.source)}}),r=x(n,function(i){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:se.EOI_ANCHOR_FOUND,tokenTypes:[i]}});return r}function zc(t){var e=je(t,function(r){var i=r[at];return i.test("")}),n=x(e,function(r){return{message:"Token Type: ->"+r.name+"<- static 'PATTERN' must not match an empty string",type:se.EMPTY_MATCH_PATTERN,tokenTypes:[r]}});return n}var Xc=/[^\\[][\^]|^\^/;function Qc(t){var e=function(i){is(a,i);function a(){var c=i!==null&&i.apply(this,arguments)||this;return c.found=!1,c}return a.prototype.visitStartAnchor=function(c){this.found=!0},a}(an.BaseRegExpVisitor),n=je(t,function(i){var a=i[at];try{var c=Yn(a),h=new e;return h.visit(c),h.found}catch{return Xc.test(a.source)}}),r=x(n,function(i){return{message:`Unexpected RegExp Anchor Error: - Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:se.SOI_ANCHOR_FOUND,tokenTypes:[i]}});return r}function Zc(t){var e=je(t,function(r){var i=r[at];return i instanceof RegExp&&(i.multiline||i.global)}),n=x(e,function(r){return{message:"Token Type: ->"+r.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:se.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[r]}});return n}function Jc(t){var e=[],n=x(t,function(a){return Ne(t,function(c,h){return a.PATTERN.source===h.PATTERN.source&&!fe(e,h)&&h.PATTERN!==Qe.NA&&(e.push(h),c.push(h)),c},[])});n=sn(n);var r=je(n,function(a){return a.length>1}),i=x(r,function(a){var c=x(a,function(p){return p.name}),h=Je(a).PATTERN;return{message:"The same RegExp pattern ->"+h+"<-"+("has been used in all of the following Token Types: "+c.join(", ")+" <-"),type:se.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}});return i}function jc(t){var e=je(t,function(r){if(!$(r,"GROUP"))return!1;var i=r.GROUP;return i!==Qe.SKIPPED&&i!==Qe.NA&&!st(i)}),n=x(e,function(r){return{message:"Token Type: ->"+r.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:se.INVALID_GROUP_TYPE_FOUND,tokenTypes:[r]}});return n}function el(t,e){var n=je(t,function(i){return i.PUSH_MODE!==void 0&&!fe(e,i.PUSH_MODE)}),r=x(n,function(i){var a="Token Type: ->"+i.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+i.PUSH_MODE+"<-which does not exist";return{message:a,type:se.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}});return r}function tl(t){var e=[],n=Ne(t,function(r,i,a){var c=i.PATTERN;return c===Qe.NA||(st(c)?r.push({str:c,idx:a,tokenType:i}):dt(c)&&rl(c)&&r.push({str:c.source,idx:a,tokenType:i})),r},[]);return V(t,function(r,i){V(n,function(a){var c=a.str,h=a.idx,p=a.tokenType;if(i"+r.name+"<-")+`in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:se.UNREACHABLE_PATTERN,tokenTypes:[r,p]})}})}),e}function nl(t,e){if(dt(e)){var n=e.exec(t);return n!==null&&n.index===0}else{if(Ct(e))return e(t,0,[],{});if($(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function rl(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return Ht(e,function(n){return t.source.indexOf(n)!==-1})===void 0}function Oi(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}function Mi(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}function il(t,e,n){var r=[];return $(t,Lt)||r.push({message:"A MultiMode Lexer cannot be initialized without a <"+Lt+`> property in its definition -`,type:se.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),$(t,An)||r.push({message:"A MultiMode Lexer cannot be initialized without a <"+An+`> property in its definition -`,type:se.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),$(t,An)&&$(t,Lt)&&!$(t.modes,t.defaultMode)&&r.push({message:"A MultiMode Lexer cannot be initialized with a "+Lt+": <"+t.defaultMode+`>which does not exist -`,type:se.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),$(t,An)&&V(t.modes,function(i,a){V(i,function(c,h){pt(c)&&r.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+a+"> at index: <"+h+`> -`),type:se.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),r}function ol(t,e,n){var r=[],i=!1,a=sn(Ge(Mc(t.modes,function(p){return p}))),c=Wt(a,function(p){return p[at]===Qe.NA}),h=cs(n);return e&&V(c,function(p){var u=as(p,h);if(u!==!1){var o=ll(p,u),s={message:o,type:u.issue,tokenType:p};r.push(s)}else $(p,"LINE_BREAKS")?p.LINE_BREAKS===!0&&(i=!0):zr(h,p.PATTERN)&&(i=!0)}),e&&!i&&r.push({message:`Warning: No LINE_BREAKS Found. - This Lexer has been defined to track line and column information, - But none of the Token Types can be identified as matching a line terminator. - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`,type:se.NO_LINE_BREAKS_FLAGS}),r}function sl(t){var e={},n=Ze(t);return V(n,function(r){var i=t[r];if(ot(i))e[r]=[];else throw Error("non exhaustive match")}),e}function ss(t){var e=t.PATTERN;if(dt(e))return!1;if(Ct(e))return!0;if($(e,"exec"))return!0;if(st(e))return!1;throw Error("non exhaustive match")}function al(t){return st(t)&&t.length===1?t.charCodeAt(0):!1}var cl={test:function(t){for(var e=t.length,n=this.lastIndex;n Token Type -`)+(" Root cause: "+e.errMsg+`. -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===se.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. -`+(" The problem is in the <"+t.name+`> Token Type -`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}function cs(t){var e=x(t,function(n){return st(n)&&n.length>0?n.charCodeAt(0):n});return e}function Rr(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}var Jt=256;function Tt(t){return t255?255+~~(t/255):t}}function Kn(t,e){var n=t.tokenTypeIdx;return n===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[n]===!0}function Bn(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}var Ui=1,ls={};function cn(t){var e=fl(t);hl(e),dl(e),pl(e),V(e,function(n){n.isParent=n.categoryMatches.length>0})}function fl(t){for(var e=Se(t),n=t,r=!0;r;){n=sn(Ge(x(n,function(a){return a.CATEGORIES})));var i=qn(n,e);e=e.concat(i),ee(i)?r=!1:n=i}return e}function hl(t){V(t,function(e){fs(e)||(ls[Ui]=e,e.tokenTypeIdx=Ui++),Li(e)&&!ot(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Li(e)||(e.CATEGORIES=[]),vl(e)||(e.categoryMatches=[]),gl(e)||(e.categoryMatchesMap={})})}function pl(t){V(t,function(e){e.categoryMatches=[],V(e.categoryMatchesMap,function(n,r){e.categoryMatches.push(ls[r].tokenTypeIdx)})})}function dl(t){V(t,function(e){us([],e)})}function us(t,e){V(t,function(n){e.categoryMatchesMap[n.tokenTypeIdx]=!0}),V(e.CATEGORIES,function(n){var r=t.concat(e);fe(r,n)||us(r,n)})}function fs(t){return $(t,"tokenTypeIdx")}function Li(t){return $(t,"CATEGORIES")}function vl(t){return $(t,"categoryMatches")}function gl(t){return $(t,"categoryMatchesMap")}function El(t){return $(t,"tokenTypeIdx")}var hs={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,n,r,i){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+n+" characters.")}},se;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(se||(se={}));var jt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` -`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:hs,traceInitPerf:!1,skipValidations:!1};Object.freeze(jt);var Qe=function(){function t(e,n){var r=this;if(n===void 0&&(n=jt),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof n=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`);this.config=Ti(jt,n);var i=this.config.traceInitPerf;i===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof i=="number"&&(this.traceInitMaxIdent=i,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var a,c=!0;r.TRACE_INIT("Lexer Config handling",function(){if(r.config.lineTerminatorsPattern===jt.lineTerminatorsPattern)r.config.lineTerminatorsPattern=cl;else if(r.config.lineTerminatorCharacters===jt.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(n.safeMode&&n.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');r.trackStartLines=/full|onlyStart/i.test(r.config.positionTracking),r.trackEndLines=/full/i.test(r.config.positionTracking),ot(e)?(a={modes:{}},a.modes[Lt]=Se(e),a[Lt]=Lt):(c=!1,a=on(e))}),r.config.skipValidations===!1&&(r.TRACE_INIT("performRuntimeChecks",function(){r.lexerDefinitionErrors=r.lexerDefinitionErrors.concat(il(a,r.trackStartLines,r.config.lineTerminatorCharacters))}),r.TRACE_INIT("performWarningRuntimeChecks",function(){r.lexerDefinitionWarning=r.lexerDefinitionWarning.concat(ol(a,r.trackStartLines,r.config.lineTerminatorCharacters))})),a.modes=a.modes?a.modes:{},V(a.modes,function(o,s){a.modes[s]=Wt(o,function(l){return pt(l)})});var h=Ze(a.modes);if(V(a.modes,function(o,s){r.TRACE_INIT("Mode: <"+s+"> processing",function(){if(r.modes.push(s),r.config.skipValidations===!1&&r.TRACE_INIT("validatePatterns",function(){r.lexerDefinitionErrors=r.lexerDefinitionErrors.concat($c(o,h))}),ee(r.lexerDefinitionErrors)){cn(o);var l;r.TRACE_INIT("analyzeTokenTypes",function(){l=Gc(o,{lineTerminatorCharacters:r.config.lineTerminatorCharacters,positionTracking:n.positionTracking,ensureOptimizations:n.ensureOptimizations,safeMode:n.safeMode,tracer:r.TRACE_INIT.bind(r)})}),r.patternIdxToConfig[s]=l.patternIdxToConfig,r.charCodeToPatternIdxToConfig[s]=l.charCodeToPatternIdxToConfig,r.emptyGroups=Ti(r.emptyGroups,l.emptyGroups),r.hasCustom=l.hasCustom||r.hasCustom,r.canModeBeOptimized[s]=l.canBeOptimized}})}),r.defaultMode=a.defaultMode,!ee(r.lexerDefinitionErrors)&&!r.config.deferDefinitionErrorsHandling){var p=x(r.lexerDefinitionErrors,function(o){return o.message}),u=p.join(`----------------------- -`);throw new Error(`Errors detected in definition of Lexer: -`+u)}V(r.lexerDefinitionWarning,function(o){jo(o.message)}),r.TRACE_INIT("Choosing sub-methods implementations",function(){if(os?(r.chopInput=wi,r.match=r.matchWithTest):(r.updateLastIndex=de,r.match=r.matchWithExec),c&&(r.handleModes=de),r.trackStartLines===!1&&(r.computeNewColumn=wi),r.trackEndLines===!1&&(r.updateTokenEndLineColumnLocation=de),/full/i.test(r.config.positionTracking))r.createTokenInstance=r.createFullToken;else if(/onlyStart/i.test(r.config.positionTracking))r.createTokenInstance=r.createStartOnlyToken;else if(/onlyOffset/i.test(r.config.positionTracking))r.createTokenInstance=r.createOffsetOnlyToken;else throw Error('Invalid config option: "'+r.config.positionTracking+'"');r.hasCustom?(r.addToken=r.addTokenUsingPush,r.handlePayload=r.handlePayloadWithCustom):(r.addToken=r.addTokenUsingMemberAccess,r.handlePayload=r.handlePayloadNoCustom)}),r.TRACE_INIT("Failed Optimization Warnings",function(){var o=Ne(r.canModeBeOptimized,function(s,l,f){return l===!1&&s.push(f),s},[]);if(n.ensureOptimizations&&!ee(o))throw Error("Lexer Modes: < "+o.join(", ")+` > cannot be optimized. - Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`)}),r.TRACE_INIT("clearRegExpParserCache",function(){Bc()}),r.TRACE_INIT("toFastProperties",function(){es(r)})})}return t.prototype.tokenize=function(e,n){if(n===void 0&&(n=this.defaultMode),!ee(this.lexerDefinitionErrors)){var r=x(this.lexerDefinitionErrors,function(c){return c.message}),i=r.join(`----------------------- -`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -`+i)}var a=this.tokenizeInternal(e,n);return a},t.prototype.tokenizeInternal=function(e,n){var r=this,i,a,c,h,p,u,o,s,l,f,v,d,g,E,A=e,m=A.length,N=0,y=0,R=this.hasCustom?0:Math.floor(e.length/10),T=new Array(R),w=[],C=this.trackStartLines?1:void 0,M=this.trackStartLines?1:void 0,_=sl(this.emptyGroups),W=this.trackStartLines,F=this.config.lineTerminatorsPattern,S=0,G=[],J=[],le=[],nt=[];Object.freeze(nt);var Ae=void 0;function Be(){return G}function Fe(we){var Kt=Tt(we),Dt=J[Kt];return Dt===void 0?nt:Dt}var rt=function(we){if(le.length===1&&we.tokenType.PUSH_MODE===void 0){var Kt=r.config.errorMessageProvider.buildUnableToPopLexerModeMessage(we);w.push({offset:we.startOffset,line:we.startLine!==void 0?we.startLine:void 0,column:we.startColumn!==void 0?we.startColumn:void 0,length:we.image.length,message:Kt})}else{le.pop();var Dt=Zo(le);G=r.patternIdxToConfig[Dt],J=r.charCodeToPatternIdxToConfig[Dt],S=G.length;var Js=r.canModeBeOptimized[Dt]&&r.config.safeMode===!1;J&&Js?Ae=Fe:Ae=Be}};function Ee(we){le.push(we),J=this.charCodeToPatternIdxToConfig[we],G=this.patternIdxToConfig[we],S=G.length,S=G.length;var Kt=this.canModeBeOptimized[we]&&this.config.safeMode===!1;J&&Kt?Ae=Fe:Ae=Be}Ee.call(this,n);for(var ue;Np.length&&(p=c,u=o,ue=nr)}break}}if(p!==null){if(s=p.length,l=ue.group,l!==void 0&&(f=ue.tokenTypeIdx,v=this.createTokenInstance(p,N,f,ue.tokenType,C,M,s),this.handlePayload(v,u),l===!1?y=this.addToken(T,y,v):_[l].push(v)),e=this.chopInput(e,s),N=N+s,M=this.computeNewColumn(M,s),W===!0&&ue.canLineTerminator===!0){var fn=0,ir=void 0,or=void 0;F.lastIndex=0;do ir=F.test(p),ir===!0&&(or=F.lastIndex-1,fn++);while(ir===!0);fn!==0&&(C=C+fn,M=s-or,this.updateTokenEndLineColumnLocation(v,l,or,fn,C,M,s))}this.handleModes(ue,rt,Ee,v)}else{for(var sr=N,si=C,ai=M,Yt=!1;!Yt&&N <"+e+">");var i=ts(n),a=i.time,c=i.value,h=a>10?console.warn:console.log;return this.traceInitIndent time: "+a+"ms"),this.traceInitIndent--,c}else return n()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();function Pt(t){return ps(t)?t.LABEL:t.name}function ml(t){return t.name}function ps(t){return st(t.LABEL)&&t.LABEL!==""}var Rl="parent",_i="categories",Pi="label",ki="group",xi="push_mode",Si="pop_mode",Bi="longer_alt",Fi="line_breaks",bi="start_chars_hint";function Xr(t){return Nl(t)}function Nl(t){var e=t.pattern,n={};if(n.name=t.name,pt(e)||(n.PATTERN=e),$(t,Rl))throw`The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return $(t,_i)&&(n.CATEGORIES=t[_i]),cn([n]),$(t,Pi)&&(n.LABEL=t[Pi]),$(t,ki)&&(n.GROUP=t[ki]),$(t,Si)&&(n.POP_MODE=t[Si]),$(t,xi)&&(n.PUSH_MODE=t[xi]),$(t,Bi)&&(n.LONGER_ALT=t[Bi]),$(t,Fi)&&(n.LINE_BREAKS=t[Fi]),$(t,bi)&&(n.START_CHARS_HINT=t[bi]),n}var wt=Xr({name:"EOF",pattern:Qe.NA});cn([wt]);function zn(t,e,n,r,i,a,c,h){return{image:e,startOffset:n,endOffset:r,startLine:i,endLine:a,startColumn:c,endColumn:h,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}function Al(t,e){return Kn(t,e)}var gt=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),ct=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),V(this.definition,function(n){n.accept(e)})},t}(),Ue=function(t){gt(e,t);function e(n){var r=t.call(this,[])||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(n){},enumerable:!1,configurable:!0}),e.prototype.accept=function(n){n.visit(this)},e}(ct),xt=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.orgText="",tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),Te=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.ignoreAmbiguities=!1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),ye=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),qe=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),Ye=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),ce=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),$e=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),He=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,r.ignoreAmbiguities=!1,r.hasPredicates=!1,tt(r,et(n,function(i){return i!==void 0})),r}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(n){this._definition=n},enumerable:!1,configurable:!0}),e}(ct),ne=function(){function t(e){this.idx=1,tt(this,et(e,function(n){return n!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();function ds(t){return x(t,en)}function en(t){function e(i){return x(i,en)}if(t instanceof Ue)return{type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};if(t instanceof Te)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ye)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof qe)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Ye)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:en(new ne({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof $e)return{type:"RepetitionWithSeparator",idx:t.idx,separator:en(new ne({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ce)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof He)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof ne){var n={type:"Terminal",name:t.terminalType.name,label:Pt(t.terminalType),idx:t.idx},r=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(n.pattern=dt(r)?r.source:r),n}else{if(t instanceof xt)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}var Xn=function(){function t(){}return t.prototype.walk=function(e,n){var r=this;n===void 0&&(n=[]),V(e.definition,function(i,a){var c=Re(e.definition,a+1);if(i instanceof Ue)r.walkProdRef(i,c,n);else if(i instanceof ne)r.walkTerminal(i,c,n);else if(i instanceof Te)r.walkFlat(i,c,n);else if(i instanceof ye)r.walkOption(i,c,n);else if(i instanceof qe)r.walkAtLeastOne(i,c,n);else if(i instanceof Ye)r.walkAtLeastOneSep(i,c,n);else if(i instanceof $e)r.walkManySep(i,c,n);else if(i instanceof ce)r.walkMany(i,c,n);else if(i instanceof He)r.walkOr(i,c,n);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,n,r){},t.prototype.walkProdRef=function(e,n,r){},t.prototype.walkFlat=function(e,n,r){var i=n.concat(r);this.walk(e,i)},t.prototype.walkOption=function(e,n,r){var i=n.concat(r);this.walk(e,i)},t.prototype.walkAtLeastOne=function(e,n,r){var i=[new ye({definition:e.definition})].concat(n,r);this.walk(e,i)},t.prototype.walkAtLeastOneSep=function(e,n,r){var i=Di(e,n,r);this.walk(e,i)},t.prototype.walkMany=function(e,n,r){var i=[new ye({definition:e.definition})].concat(n,r);this.walk(e,i)},t.prototype.walkManySep=function(e,n,r){var i=Di(e,n,r);this.walk(e,i)},t.prototype.walkOr=function(e,n,r){var i=this,a=n.concat(r);V(e.definition,function(c){var h=new Te({definition:[c]});i.walk(h,a)})},t}();function Di(t,e,n){var r=[new ye({definition:[new ne({terminalType:t.separator})].concat(t.definition)})],i=r.concat(e,n);return i}var St=function(){function t(){}return t.prototype.visit=function(e){var n=e;switch(n.constructor){case Ue:return this.visitNonTerminal(n);case Te:return this.visitAlternative(n);case ye:return this.visitOption(n);case qe:return this.visitRepetitionMandatory(n);case Ye:return this.visitRepetitionMandatoryWithSeparator(n);case $e:return this.visitRepetitionWithSeparator(n);case ce:return this.visitRepetition(n);case He:return this.visitAlternation(n);case ne:return this.visitTerminal(n);case xt:return this.visitRule(n);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}(),yl=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function Tl(t){return t instanceof Te||t instanceof ye||t instanceof ce||t instanceof qe||t instanceof Ye||t instanceof $e||t instanceof ne||t instanceof xt}function Fn(t,e){e===void 0&&(e=[]);var n=t instanceof ye||t instanceof ce||t instanceof $e;return n?!0:t instanceof He?Jo(t.definition,function(r){return Fn(r,e)}):t instanceof Ue&&fe(e,t)?!1:t instanceof ct?(t instanceof Ue&&e.push(t),We(t.definition,function(r){return Fn(r,e)})):!1}function wl(t){return t instanceof He}function it(t){if(t instanceof Ue)return"SUBRULE";if(t instanceof ye)return"OPTION";if(t instanceof He)return"OR";if(t instanceof qe)return"AT_LEAST_ONE";if(t instanceof Ye)return"AT_LEAST_ONE_SEP";if(t instanceof $e)return"MANY_SEP";if(t instanceof ce)return"MANY";if(t instanceof ne)return"CONSUME";throw Error("non exhaustive match")}var vs=function(t){yl(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.separator="-",n.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},n}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(n){var r=n.terminalType.name+this.separator+"Terminal";$(this.dslMethods,r)||(this.dslMethods[r]=[]),this.dslMethods[r].push(n)},e.prototype.visitNonTerminal=function(n){var r=n.nonTerminalName+this.separator+"Terminal";$(this.dslMethods,r)||(this.dslMethods[r]=[]),this.dslMethods[r].push(n)},e.prototype.visitOption=function(n){this.dslMethods.option.push(n)},e.prototype.visitRepetitionWithSeparator=function(n){this.dslMethods.repetitionWithSeparator.push(n)},e.prototype.visitRepetitionMandatory=function(n){this.dslMethods.repetitionMandatory.push(n)},e.prototype.visitRepetitionMandatoryWithSeparator=function(n){this.dslMethods.repetitionMandatoryWithSeparator.push(n)},e.prototype.visitRepetition=function(n){this.dslMethods.repetition.push(n)},e.prototype.visitAlternation=function(n){this.dslMethods.alternation.push(n)},e}(St),yn=new vs;function Cl(t){yn.reset(),t.accept(yn);var e=yn.dslMethods;return yn.reset(),e}function ln(t){if(t instanceof Ue)return ln(t.referencedRule);if(t instanceof ne)return Ml(t);if(Tl(t))return Il(t);if(wl(t))return Ol(t);throw Error("non exhaustive match")}function Il(t){for(var e=[],n=t.definition,r=0,i=n.length>r,a,c=!0;i&&c;)a=n[r],c=Fn(a),e=e.concat(ln(a)),r=r+1,i=n.length>r;return qr(e)}function Ol(t){var e=x(t.definition,function(n){return ln(n)});return qr(Ge(e))}function Ml(t){return[t.terminalType]}var gs="_~IN~_",Ul=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ll=function(t){Ul(e,t);function e(n){var r=t.call(this)||this;return r.topProd=n,r.follows={},r}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(n,r,i){},e.prototype.walkProdRef=function(n,r,i){var a=Pl(n.referencedRule,n.idx)+this.topProd.name,c=r.concat(i),h=new Te({definition:c}),p=ln(h);this.follows[a]=p},e}(Xn);function _l(t){var e={};return V(t,function(n){var r=new Ll(n).startWalking();tt(e,r)}),e}function Pl(t,e){return t.name+e+gs}var Qr={buildMismatchTokenMessage:function(t){var e=t.expected,n=t.actual;t.previous,t.ruleName;var r=ps(e),i=r?"--> "+Pt(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+i+" but found --> '"+n.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant;return t.ruleName,"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,n=t.actual;t.previous;var r=t.customUserDescription;t.ruleName;var i="Expecting: ",a=Je(n).image,c=` -but found: '`+a+"'";if(r)return i+r+c;var h=Ne(e,function(s,l){return s.concat(l)},[]),p=x(h,function(s){return"["+x(s,function(l){return Pt(l)}).join(", ")+"]"}),u=x(p,function(s,l){return" "+(l+1)+". "+s}),o=`one of these possible Token sequences: -`+u.join(` -`);return i+o+c},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,n=t.actual,r=t.customUserDescription;t.ruleName;var i="Expecting: ",a=Je(n).image,c=` -but found: '`+a+"'";if(r)return i+r+c;var h=x(e,function(u){return"["+x(u,function(o){return Pt(o)}).join(",")+"]"}),p=`expecting at least one iteration which starts with one of these possible Token sequences:: - `+("<"+h.join(" ,")+">");return i+p+c}};Object.freeze(Qr);var Es={buildRuleNotFoundError:function(t,e){var n="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- -inside top level rule: ->`+t.name+"<-";return n}},Qn={buildDuplicateFoundError:function(t,e){function n(o){return o instanceof ne?o.terminalType.name:o instanceof Ue?o.nonTerminalName:""}var r=t.name,i=Je(e),a=i.idx,c=it(i),h=n(i),p=a>0,u="->"+c+(p?a:"")+"<- "+(h?"with argument: ->"+h+"<-":"")+` - appears more than once (`+e.length+" times) in the top level rule: ->"+r+`<-. - For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `;return u=u.replace(/[ \t]+/g," "),u=u.replace(/\s\s+/g,` -`),u},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. -`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. -`)+`To resolve this make sure each Terminal and Non-Terminal names are unique -This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=x(t.prefixPath,function(i){return Pt(i)}).join(", "),n=t.alternation.idx===0?"":t.alternation.idx,r="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix -`+("in inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`;return r},buildAlternationAmbiguityError:function(t){var e=x(t.prefixPath,function(i){return Pt(i)}).join(", "),n=t.alternation.idx===0?"":t.alternation.idx,r="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, -`)+("<"+e+`> may appears as a prefix path in all these alternatives. -`);return r=r+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`,r},buildEmptyRepetitionError:function(t){var e=it(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var n="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. -This could lead to an infinite loop.`;return n},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. -`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: -`+(" inside <"+t.topLevelRule.name+`> Rule. - has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,n=x(t.leftRecursionPath,function(a){return a.name}),r=e+" --> "+n.concat([e]).join(" --> "),i=`Left Recursion found in grammar. -`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) -`)+(`without consuming any Tokens. The grammar path that causes this is: - `+r+` -`)+` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return i},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof xt?e=t.topLevelRule.name:e=t.topLevelRule;var n="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return n}},kl=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function xl(t,e){var n=new Sl(t,e);return n.resolveRefs(),n.errors}var Sl=function(t){kl(e,t);function e(n,r){var i=t.call(this)||this;return i.nameToTopRule=n,i.errMsgProvider=r,i.errors=[],i}return e.prototype.resolveRefs=function(){var n=this;V(xe(this.nameToTopRule),function(r){n.currTopLevel=r,r.accept(n)})},e.prototype.visitNonTerminal=function(n){var r=this.nameToTopRule[n.nonTerminalName];if(r)n.referencedRule=r;else{var i=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,n);this.errors.push({message:i,type:Le.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:n.nonTerminalName})}},e}(St),Bt=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Bl=function(t){Bt(e,t);function e(n,r){var i=t.call(this)||this;return i.topProd=n,i.path=r,i.possibleTokTypes=[],i.nextProductionName="",i.nextProductionOccurrence=0,i.found=!1,i.isAtEndOfPath=!1,i}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=Se(this.path.ruleStack).reverse(),this.occurrenceStack=Se(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(n,r){r===void 0&&(r=[]),this.found||t.prototype.walk.call(this,n,r)},e.prototype.walkProdRef=function(n,r,i){if(n.referencedRule.name===this.nextProductionName&&n.idx===this.nextProductionOccurrence){var a=r.concat(i);this.updateExpectedNext(),this.walk(n.referencedRule,a)}},e.prototype.updateExpectedNext=function(){ee(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(Xn),Fl=function(t){Bt(e,t);function e(n,r){var i=t.call(this,n,r)||this;return i.path=r,i.nextTerminalName="",i.nextTerminalOccurrence=0,i.nextTerminalName=i.path.lastTok.name,i.nextTerminalOccurrence=i.path.lastTokOccurrence,i}return e.prototype.walkTerminal=function(n,r,i){if(this.isAtEndOfPath&&n.terminalType.name===this.nextTerminalName&&n.idx===this.nextTerminalOccurrence&&!this.found){var a=r.concat(i),c=new Te({definition:a});this.possibleTokTypes=ln(c),this.found=!0}},e}(Bl),Zn=function(t){Bt(e,t);function e(n,r){var i=t.call(this)||this;return i.topRule=n,i.occurrence=r,i.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},i}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(Xn),bl=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkMany.call(this,n,r,i)},e}(Zn),Vi=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkManySep.call(this,n,r,i)},e}(Zn),Dl=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOne.call(this,n,r,i)},e}(Zn),Gi=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOneSep.call(this,n,r,i)},e}(Zn);function Sr(t,e,n){n===void 0&&(n=[]),n=Se(n);var r=[],i=0;function a(u){return u.concat(Re(t,i+1))}function c(u){var o=Sr(a(u),e,n);return r.concat(o)}for(;n.length=0;F--){var S=E.definition[F],G={idx:v,def:S.definition.concat(Re(f)),ruleStack:d,occurrenceStack:g};s.push(G),s.push(c)}else if(E instanceof Te)s.push({idx:v,def:E.definition.concat(Re(f)),ruleStack:d,occurrenceStack:g});else if(E instanceof xt)s.push(Vl(E,v,d,g));else throw Error("non exhaustive match")}}return o}function Vl(t,e,n,r){var i=Se(n);i.push(t.name);var a=Se(r);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var Rs=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),j;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(j||(j={}));function Gl(t){if(t instanceof ye)return j.OPTION;if(t instanceof ce)return j.REPETITION;if(t instanceof qe)return j.REPETITION_MANDATORY;if(t instanceof Ye)return j.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof $e)return j.REPETITION_WITH_SEPARATOR;if(t instanceof He)return j.ALTERNATION;throw Error("non exhaustive match")}function $l(t,e,n,r,i,a){var c=Zr(t,e,n),h=ys(c)?Bn:Kn;return a(c,r,h,i)}function Hl(t,e,n,r,i,a){var c=Jr(t,e,i,n),h=ys(c)?Bn:Kn;return a(c[0],h,r)}function Wl(t,e,n,r){var i=t.length,a=We(t,function(p){return We(p,function(u){return u.length===1})});if(e)return function(p){for(var u=x(p,function(m){return m.GATE}),o=0;o1}),c=x(xe(a),function(h){var p=Je(h),u=e.buildDuplicateFoundError(t,h),o=it(p),s={message:u,type:Le.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:o,occurrence:p.idx},l=Ts(p);return l&&(s.parameter=l),s});return c}function Zl(t){return it(t)+"_#_"+t.idx+"_#_"+Ts(t)}function Ts(t){return t instanceof ne?t.terminalType.name:t instanceof Ue?t.nonTerminalName:""}var Jl=function(t){jr(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.allProductions=[],n}return e.prototype.visitNonTerminal=function(n){this.allProductions.push(n)},e.prototype.visitOption=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatory=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatoryWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetition=function(n){this.allProductions.push(n)},e.prototype.visitAlternation=function(n){this.allProductions.push(n)},e.prototype.visitTerminal=function(n){this.allProductions.push(n)},e}(St);function jl(t,e,n,r){var i=[],a=Ne(e,function(h,p){return p.name===t.name?h+1:h},0);if(a>1){var c=r.buildDuplicateRuleNameError({topLevelRule:t,grammarName:n});i.push({message:c,type:Le.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function eu(t,e,n){var r=[],i;return fe(e,t)||(i="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+n+"<-as it is not defined in any of the super grammars ",r.push({message:i,type:Le.INVALID_RULE_OVERRIDE,ruleName:t})),r}function ws(t,e,n,r){r===void 0&&(r=[]);var i=[],a=Mn(e.definition);if(ee(a))return[];var c=t.name,h=fe(a,t);h&&i.push({message:n.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:r}),type:Le.LEFT_RECURSION,ruleName:c});var p=qn(a,r.concat([t])),u=x(p,function(o){var s=Se(r);return s.push(o),ws(t,o,n,s)});return i.concat(Ge(u))}function Mn(t){var e=[];if(ee(t))return e;var n=Je(t);if(n instanceof Ue)e.push(n.referencedRule);else if(n instanceof Te||n instanceof ye||n instanceof qe||n instanceof Ye||n instanceof $e||n instanceof ce)e=e.concat(Mn(n.definition));else if(n instanceof He)e=Ge(x(n.definition,function(c){return Mn(c.definition)}));else if(!(n instanceof ne))throw Error("non exhaustive match");var r=Fn(n),i=t.length>1;if(r&&i){var a=Re(t);return e.concat(Mn(a))}else return e}var ei=function(t){jr(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.alternations=[],n}return e.prototype.visitAlternation=function(n){this.alternations.push(n)},e}(St);function tu(t,e){var n=new ei;t.accept(n);var r=n.alternations,i=Ne(r,function(a,c){var h=nn(c.definition),p=x(h,function(u,o){var s=ms([u],[],null,1);return ee(s)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:c,emptyChoiceIdx:o}),type:Le.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:c.idx,alternative:o+1}:null});return a.concat(sn(p))},[]);return i}function nu(t,e,n){var r=new ei;t.accept(r);var i=r.alternations;i=Wt(i,function(c){return c.ignoreAmbiguities===!0});var a=Ne(i,function(c,h){var p=h.idx,u=h.maxLookahead||e,o=Zr(p,t,u,h),s=su(o,h,t,n),l=au(o,h,t,n);return c.concat(s,l)},[]);return a}var ru=function(t){jr(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.allProductions=[],n}return e.prototype.visitRepetitionWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatory=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatoryWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetition=function(n){this.allProductions.push(n)},e}(St);function iu(t,e){var n=new ei;t.accept(n);var r=n.alternations,i=Ne(r,function(a,c){return c.definition.length>255&&a.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:c}),type:Le.TOO_MANY_ALTS,ruleName:t.name,occurrence:c.idx}),a},[]);return i}function ou(t,e,n){var r=[];return V(t,function(i){var a=new ru;i.accept(a);var c=a.allProductions;V(c,function(h){var p=Gl(h),u=h.maxLookahead||e,o=h.idx,s=Jr(o,i,p,u),l=s[0];if(ee(Ge(l))){var f=n.buildEmptyRepetitionError({topLevelRule:i,repetition:h});r.push({message:f,type:Le.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),r}function su(t,e,n,r){var i=[],a=Ne(t,function(h,p,u){return e.definition[u].ignoreAmbiguities===!0||V(p,function(o){var s=[u];V(t,function(l,f){u!==f&&Br(l,o)&&e.definition[f].ignoreAmbiguities!==!0&&s.push(f)}),s.length>1&&!Br(i,o)&&(i.push(o),h.push({alts:s,path:o}))}),h},[]),c=x(a,function(h){var p=x(h.alts,function(o){return o+1}),u=r.buildAlternationAmbiguityError({topLevelRule:n,alternation:e,ambiguityIndices:p,prefixPath:h.path});return{message:u,type:Le.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:e.idx,alternatives:[h.alts]}});return c}function au(t,e,n,r){var i=[],a=Ne(t,function(c,h,p){var u=x(h,function(o){return{idx:p,path:o}});return c.concat(u)},[]);return V(a,function(c){var h=e.definition[c.idx];if(h.ignoreAmbiguities!==!0){var p=c.idx,u=c.path,o=Uc(a,function(l){return e.definition[l.idx].ignoreAmbiguities!==!0&&l.idx: - `+(""+a.join(` - -`).replace(/\n/g,` - `)))}}};return n.prototype=r,n.prototype.constructor=n,n._RULE_NAMES=e,n}function Ru(t,e,n){var r=function(){};Ds(r,t+"BaseSemanticsWithDefaults");var i=Object.create(n.prototype);return V(e,function(a){i[a]=Eu}),r.prototype=i,r.prototype.constructor=r,r}var bn;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(bn||(bn={}));function Nu(t,e){var n=Au(t,e),r=Tu(t,e);return n.concat(r)}function Au(t,e){var n=x(e,function(r){if(!Ct(t[r]))return{msg:"Missing visitor method: <"+r+"> on "+jn(t.constructor)+" CST Visitor.",type:bn.MISSING_METHOD,methodName:r}});return sn(n)}var yu=["constructor","visit","validateVisitor"];function Tu(t,e){var n=[];for(var r in t)Ct(t[r])&&!fe(yu,r)&&!fe(e,r)&&n.push({msg:"Redundant visitor method: <"+r+"> on "+jn(t.constructor)+` CST Visitor -There is no Grammar Rule corresponding to this method's name. -`,type:bn.REDUNDANT_METHOD,methodName:r});return n}var wu=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=$(e,"nodeLocationTracking")?e.nodeLocationTracking:vt.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=de,this.cstFinallyStateUpdate=de,this.cstPostTerminal=de,this.cstPostNonTerminal=de,this.cstPostRule=de;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Wi,this.setNodeLocationFromNode=Wi,this.cstPostRule=de,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=de,this.setNodeLocationFromNode=de,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Hi,this.setNodeLocationFromNode=Hi,this.cstPostRule=de,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=de,this.setNodeLocationFromNode=de,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=de,this.setNodeLocationFromNode=de,this.cstPostRule=de,this.setInitialNodeLocation=de;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var n=this.LA(1);e.location={startOffset:n.startOffset,startLine:n.startLine,startColumn:n.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,n){var r={name:e,children:{}};this.setInitialNodeLocation(r),this.CST_STACK.push(r)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var n=this.LA(0),r=e.location;r.startOffset<=n.startOffset?(r.endOffset=n.endOffset,r.endLine=n.endLine,r.endColumn=n.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var n=this.LA(0),r=e.location;r.startOffset<=n.startOffset?r.endOffset=n.endOffset:r.startOffset=NaN},t.prototype.cstPostTerminal=function(e,n){var r=this.CST_STACK[this.CST_STACK.length-1];du(r,n,e),this.setNodeLocationFromToken(r.location,n)},t.prototype.cstPostNonTerminal=function(e,n){var r=this.CST_STACK[this.CST_STACK.length-1];vu(r,n,e),this.setNodeLocationFromNode(r.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if(pt(this.baseCstVisitorConstructor)){var e=mu(this.className,Ze(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if(pt(this.baseCstVisitorWithDefaultsConstructor)){var e=Ru(this.className,Ze(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}(),Cu=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Vn},t.prototype.LA=function(e){var n=this.currIdx+e;return n<0||this.tokVectorLength<=n?Vn:this.tokVector[n]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}(),Iu=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,n,r){return this.consumeInternal(n,e,r)},t.prototype.subrule=function(e,n,r){return this.subruleInternal(n,e,r)},t.prototype.option=function(e,n){return this.optionInternal(n,e)},t.prototype.or=function(e,n){return this.orInternal(n,e)},t.prototype.many=function(e,n){return this.manyInternal(e,n)},t.prototype.atLeastOne=function(e,n){return this.atLeastOneInternal(e,n)},t.prototype.CONSUME=function(e,n){return this.consumeInternal(e,0,n)},t.prototype.CONSUME1=function(e,n){return this.consumeInternal(e,1,n)},t.prototype.CONSUME2=function(e,n){return this.consumeInternal(e,2,n)},t.prototype.CONSUME3=function(e,n){return this.consumeInternal(e,3,n)},t.prototype.CONSUME4=function(e,n){return this.consumeInternal(e,4,n)},t.prototype.CONSUME5=function(e,n){return this.consumeInternal(e,5,n)},t.prototype.CONSUME6=function(e,n){return this.consumeInternal(e,6,n)},t.prototype.CONSUME7=function(e,n){return this.consumeInternal(e,7,n)},t.prototype.CONSUME8=function(e,n){return this.consumeInternal(e,8,n)},t.prototype.CONSUME9=function(e,n){return this.consumeInternal(e,9,n)},t.prototype.SUBRULE=function(e,n){return this.subruleInternal(e,0,n)},t.prototype.SUBRULE1=function(e,n){return this.subruleInternal(e,1,n)},t.prototype.SUBRULE2=function(e,n){return this.subruleInternal(e,2,n)},t.prototype.SUBRULE3=function(e,n){return this.subruleInternal(e,3,n)},t.prototype.SUBRULE4=function(e,n){return this.subruleInternal(e,4,n)},t.prototype.SUBRULE5=function(e,n){return this.subruleInternal(e,5,n)},t.prototype.SUBRULE6=function(e,n){return this.subruleInternal(e,6,n)},t.prototype.SUBRULE7=function(e,n){return this.subruleInternal(e,7,n)},t.prototype.SUBRULE8=function(e,n){return this.subruleInternal(e,8,n)},t.prototype.SUBRULE9=function(e,n){return this.subruleInternal(e,9,n)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,n,r){if(r===void 0&&(r=Gn),fe(this.definedRulesNames,e)){var i=Qn.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),a={message:i,type:Le.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);var c=this.defineRule(e,n,r);return this[e]=c,c},t.prototype.OVERRIDE_RULE=function(e,n,r){r===void 0&&(r=Gn);var i=[];i=i.concat(eu(e,this.definedRulesNames,this.className)),this.definitionErrors.push.apply(this.definitionErrors,i);var a=this.defineRule(e,n,r);return this[e]=a,a},t.prototype.BACKTRACK=function(e,n){return function(){this.isBackTrackingStack.push(1);var r=this.saveRecogState();try{return e.apply(this,n),!0}catch(i){if(rn(i))return!1;throw i}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return ds(xe(this.gastProductionsCache))},t}(),Ou=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,n){if(this.className=gu(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Bn,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},$(n,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`);if(ot(e)){if(ee(e))throw Error(`A Token Vocabulary cannot be empty. - Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. - See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`)}if(ot(e))this.tokensMap=Ne(e,function(c,h){return c[h.name]=h,c},{});else if($(e,"modes")&&We(Ge(xe(e.modes)),El)){var r=Ge(xe(e.modes)),i=qr(r);this.tokensMap=Ne(i,function(c,h){return c[h.name]=h,c},{})}else if(Yr(e))this.tokensMap=on(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=wt;var a=We(xe(e),function(c){return ee(c.categoryMatches)});this.tokenMatcher=a?Bn:Kn,cn(xe(this.tokensMap))},t.prototype.defineRule=function(e,n,r){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var i=$(r,"resyncEnabled")?r.resyncEnabled:Gn.resyncEnabled,a=$(r,"recoveryValueFunc")?r.recoveryValueFunc:Gn.recoveryValueFunc,c=this.ruleShortNameIdx<n},t.prototype.orInternal=function(e,n){var r=this.getKeyForAutomaticLookahead(Fs,n),i=ot(e)?e:e.DEF,a=this.getLaFuncFromCache(r),c=a.call(this,i);if(c!==void 0){var h=i[c];return h.ALT.call(this)}this.raiseNoAltException(n,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),n=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ks(n,e))}},t.prototype.subruleInternal=function(e,n,r){var i;try{var a=r!==void 0?r.ARGS:void 0;return i=e.call(this,n,a),this.cstPostNonTerminal(i,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),i}catch(c){this.subruleInternalError(c,r,e.ruleName)}},t.prototype.subruleInternalError=function(e,n,r){throw rn(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,n!==void 0&&n.LABEL!==void 0?n.LABEL:r),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,n,r){var i;try{var a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,r)}catch(c){i=this.consumeInternalRecovery(e,n,c)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,i),i},t.prototype.consumeInternalError=function(e,n,r){var i,a=this.LA(0);throw r!==void 0&&r.ERR_MSG?i=r.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:n,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ti(i,n,a))},t.prototype.consumeInternalRecovery=function(e,n,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){var i=this.getFollowsForInRuleRecovery(e,n);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===Ss?r:a}}else throw r},t.prototype.saveRecogState=function(){var e=this.errors,n=Se(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:n,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,n,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(n,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),wt)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}(),Mu=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=$(e,"errorMessageProvider")?e.errorMessageProvider:vt.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if(rn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Se(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return Se(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,n,r){for(var i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],c=Jr(e,a,n,this.maxLookahead),h=c[0],p=[],u=1;u<=this.maxLookahead;u++)p.push(this.LA(u));var o=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:h,actual:p,previous:this.LA(0),customUserDescription:r,ruleName:i});throw this.SAVE_ERROR(new xs(o,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,n){for(var r=this.getCurrRuleFullName(),i=this.getGAstProductions()[r],a=Zr(e,i,this.maxLookahead),c=[],h=1;h<=this.maxLookahead;h++)c.push(this.LA(h));var p=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:c,previous:p,customUserDescription:n,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new Ps(u,this.LA(1),p))},t}(),Uu=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,n){var r=this.gastProductionsCache[e];if(pt(r))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return ms([r],n,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var n=Je(e.ruleStack),r=this.getGAstProductions(),i=r[n],a=new Fl(i,e).startWalking();return a},t}(),er={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(er);var Yi=!0,Ki=Math.pow(2,It)-1,Vs=Xr({name:"RECORDING_PHASE_TOKEN",pattern:Qe.NA});cn([Vs]);var Gs=zn(Vs,`This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Gs);var Lu={name:`This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},_u=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var n=function(i){var a=i>0?i:"";e["CONSUME"+a]=function(c,h){return this.consumeInternalRecord(c,i,h)},e["SUBRULE"+a]=function(c,h){return this.subruleInternalRecord(c,i,h)},e["OPTION"+a]=function(c){return this.optionInternalRecord(c,i)},e["OR"+a]=function(c){return this.orInternalRecord(c,i)},e["MANY"+a]=function(c){this.manyInternalRecord(i,c)},e["MANY_SEP"+a]=function(c){this.manySepFirstInternalRecord(i,c)},e["AT_LEAST_ONE"+a]=function(c){this.atLeastOneInternalRecord(i,c)},e["AT_LEAST_ONE_SEP"+a]=function(c){this.atLeastOneSepFirstInternalRecord(i,c)}},r=0;r<10;r++)n(r);e.consume=function(i,a,c){return this.consumeInternalRecord(a,i,c)},e.subrule=function(i,a,c){return this.subruleInternalRecord(a,i,c)},e.option=function(i,a){return this.optionInternalRecord(a,i)},e.or=function(i,a){return this.orInternalRecord(a,i)},e.many=function(i,a){this.manyInternalRecord(i,a)},e.atLeastOne=function(i,a){this.atLeastOneInternalRecord(i,a)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var n=0;n<10;n++){var r=n>0?n:"";delete e["CONSUME"+r],delete e["SUBRULE"+r],delete e["OPTION"+r],delete e["OR"+r],delete e["MANY"+r],delete e["MANY_SEP"+r],delete e["AT_LEAST_ONE"+r],delete e["AT_LEAST_ONE_SEP"+r]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,n){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vn},t.prototype.topLevelRuleRecord=function(e,n){try{var r=new xt({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),n.call(this),this.recordingProdStack.pop(),r}catch(i){if(i.KNOWN_RECORDER_ERROR!==!0)try{i.message=i.message+` - This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw i}throw i}},t.prototype.optionInternalRecord=function(e,n){return zt.call(this,ye,e,n)},t.prototype.atLeastOneInternalRecord=function(e,n){zt.call(this,qe,n,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,n){zt.call(this,Ye,n,e,Yi)},t.prototype.manyInternalRecord=function(e,n){zt.call(this,ce,n,e)},t.prototype.manySepFirstInternalRecord=function(e,n){zt.call(this,$e,n,e,Yi)},t.prototype.orInternalRecord=function(e,n){return Pu.call(this,e,n)},t.prototype.subruleInternalRecord=function(e,n,r){if(Dn(n),!e||$(e,"ruleName")===!1){var i=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=xn(this.recordingProdStack),c=e.ruleName,h=new Ue({idx:n,nonTerminalName:c,referencedRule:void 0});return a.definition.push(h),this.outputCst?Lu:er},t.prototype.consumeInternalRecord=function(e,n,r){if(Dn(n),!fs(e)){var i=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` - inside top level rule: <`+this.recordingProdStack[0].name+">"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=xn(this.recordingProdStack),c=new ne({idx:n,terminalType:e});return a.definition.push(c),Gs},t}();function zt(t,e,n,r){r===void 0&&(r=!1),Dn(n);var i=xn(this.recordingProdStack),a=Ct(e)?e:e.DEF,c=new t({definition:[],idx:n});return r&&(c.separator=e.SEP),$(e,"MAX_LOOKAHEAD")&&(c.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(c),a.call(this),i.definition.push(c),this.recordingProdStack.pop(),er}function Pu(t,e){var n=this;Dn(e);var r=xn(this.recordingProdStack),i=ot(t)===!1,a=i===!1?t:t.DEF,c=new He({definition:[],idx:e,ignoreAmbiguities:i&&t.IGNORE_AMBIGUITIES===!0});$(t,"MAX_LOOKAHEAD")&&(c.maxLookahead=t.MAX_LOOKAHEAD);var h=Jo(a,function(p){return Ct(p.GATE)});return c.hasPredicates=h,r.definition.push(c),V(a,function(p){var u=new Te({definition:[]});c.definition.push(u),$(p,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=p.IGNORE_AMBIGUITIES:$(p,"GATE")&&(u.ignoreAmbiguities=!0),n.recordingProdStack.push(u),p.ALT.call(n),n.recordingProdStack.pop()}),er}function zi(t){return t===0?"":""+t}function Dn(t){if(t<0||t>Ki){var e=new Error("Invalid DSL Method idx value: <"+t+`> - `+("Idx value must be a none negative value smaller than "+(Ki+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}var ku=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if($(e,"traceInitPerf")){var n=e.traceInitPerf,r=typeof n=="number";this.traceInitMaxIdent=r?n:1/0,this.traceInitPerf=r?n>0:n}else this.traceInitMaxIdent=0,this.traceInitPerf=vt.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,n){if(this.traceInitPerf===!0){this.traceInitIndent++;var r=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var i=ts(n),a=i.time,c=i.value,h=a>10?console.warn:console.log;return this.traceInitIndent time: "+a+"ms"),this.traceInitIndent--,c}else return n()},t}(),$s=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Vn=zn(wt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Vn);var vt=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Qr,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Gn=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0}),Le;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(Le||(Le={}));function xu(t){return t===void 0&&(t=void 0),function(){return t}}var ni=function(){function t(e,n){this.definitionErrors=[],this.selfAnalysisDone=!1;var r=this;if(r.initErrorHandler(n),r.initLexerAdapter(),r.initLooksAhead(n),r.initRecognizerEngine(e,n),r.initRecoverable(n),r.initTreeBuilder(n),r.initContentAssist(),r.initGastRecorder(n),r.initPerformanceTracer(n),$(n,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. - Please use the flag on the relevant DSL method instead. - See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`);this.skipValidations=$(n,"skipValidations")?n.skipValidations:vt.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var n;e.selfAnalysisDone=!0;var r=e.className;e.TRACE_INIT("toFastProps",function(){es(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),V(e.definedRulesNames,function(a){var c=e[a],h=c.originalGrammarAction,p=void 0;e.TRACE_INIT(a+" Rule",function(){p=e.topLevelRuleRecord(a,h)}),e.gastProductionsCache[a]=p})}finally{e.disableRecording()}});var i=[];if(e.TRACE_INIT("Grammar Resolving",function(){i=Cs({rules:xe(e.gastProductionsCache)}),e.definitionErrors.push.apply(e.definitionErrors,i)}),e.TRACE_INIT("Grammar Validations",function(){if(ee(i)&&e.skipValidations===!1){var a=Is({rules:xe(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:xe(e.tokensMap),errMsgProvider:Qn,grammarName:r});e.definitionErrors.push.apply(e.definitionErrors,a)}}),ee(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var a=_l(xe(e.gastProductionsCache));e.resyncFollows=a}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions(xe(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ee(e.definitionErrors))throw n=x(e.definitionErrors,function(a){return a.message}),new Error(`Parser Definition Errors detected: - `+n.join(` -------------------------------- -`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();xc(ni,[uu,pu,wu,Cu,Ou,Iu,Mu,Uu,_u,ku]);var Su=function(t){$s(e,t);function e(n,r){r===void 0&&(r=vt);var i=this,a=on(r);return a.outputCst=!0,i=t.call(this,n,a)||this,i}return e}(ni),Bu=function(t){$s(e,t);function e(n,r){r===void 0&&(r=vt);var i=this,a=on(r);return a.outputCst=!1,i=t.call(this,n,a)||this,i}return e}(ni);function Fu(t,e){var n=e===void 0?{}:e,r=n.resourceBase,i=r===void 0?"https://unpkg.com/chevrotain@"+_r+"/diagrams/":r,a=n.css,c=a===void 0?"https://unpkg.com/chevrotain@"+_r+"/diagrams/diagrams.css":a,h=` - - - - - -`,p=` - -`,u=` -\\n\\n\\n\\n\";\n var diagramsDiv = \"\\n
\\n\";\n var serializedGrammar = \"\\n\\n\";\n var initLogic = \"\\n\\n\";\n return (header + cssHtml + scripts + diagramsDiv + serializedGrammar + initLogic);\n}\n//# sourceMappingURL=render_public.js.map","import { forEach, map } from \"../utils/utils\";\nimport { RepetitionMandatory, Option, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal, NonTerminal, Alternation, Alternative, Repetition } from \"../parse/grammar/gast/gast_public\";\n/**\n * Missing features\n * 1. Rule arguments\n * 2. Gates\n * 3. embedded actions\n */\nvar NL = \"\\n\";\nexport function genUmdModule(options) {\n return \"\\n(function (root, factory) {\\n if (typeof define === 'function' && define.amd) {\\n // AMD. Register as an anonymous module.\\n define(['chevrotain'], factory);\\n } else if (typeof module === 'object' && module.exports) {\\n // Node. Does not work with strict CommonJS, but\\n // only CommonJS-like environments that support module.exports,\\n // like Node.\\n module.exports = factory(require('chevrotain'));\\n } else {\\n // Browser globals (root is window)\\n root.returnExports = factory(root.b);\\n }\\n}(typeof self !== 'undefined' ? self : this, function (chevrotain) {\\n\\n\" + genClass(options) + \"\\n \\nreturn {\\n \" + options.name + \": \" + options.name + \" \\n}\\n}));\\n\";\n}\nexport function genWrapperFunction(options) {\n return \" \\n\" + genClass(options) + \"\\nreturn new \" + options.name + \"(tokenVocabulary, config) \\n\";\n}\nexport function genClass(options) {\n // TODO: how to pass the token vocabulary? Constructor? other?\n var result = \"\\nfunction \" + options.name + \"(tokenVocabulary, config) {\\n // invoke super constructor\\n // No support for embedded actions currently, so we can 'hardcode'\\n // The use of CstParser.\\n chevrotain.CstParser.call(this, tokenVocabulary, config)\\n\\n const $ = this\\n\\n \" + genAllRules(options.rules) + \"\\n\\n // very important to call this after all the rules have been defined.\\n // otherwise the parser may not work correctly as it will lack information\\n // derived during the self analysis phase.\\n this.performSelfAnalysis(this)\\n}\\n\\n// inheritance as implemented in javascript in the previous decade... :(\\n\" + options.name + \".prototype = Object.create(chevrotain.CstParser.prototype)\\n\" + options.name + \".prototype.constructor = \" + options.name + \" \\n \";\n return result;\n}\nexport function genAllRules(rules) {\n var rulesText = map(rules, function (currRule) {\n return genRule(currRule, 1);\n });\n return rulesText.join(\"\\n\");\n}\nexport function genRule(prod, n) {\n var result = indent(n, \"$.RULE(\\\"\" + prod.name + \"\\\", function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"})\") + NL;\n return result;\n}\nexport function genTerminal(prod, n) {\n var name = prod.terminalType.name;\n // TODO: potential performance optimization, avoid tokenMap Dictionary access\n return indent(n, \"$.CONSUME\" + prod.idx + \"(this.tokensMap.\" + name + \")\" + NL);\n}\nexport function genNonTerminal(prod, n) {\n return indent(n, \"$.SUBRULE\" + prod.idx + \"($.\" + prod.nonTerminalName + \")\" + NL);\n}\nexport function genAlternation(prod, n) {\n var result = indent(n, \"$.OR\" + prod.idx + \"([\") + NL;\n var alts = map(prod.definition, function (altDef) { return genSingleAlt(altDef, n + 1); });\n result += alts.join(\",\" + NL);\n result += NL + indent(n, \"])\" + NL);\n return result;\n}\nexport function genSingleAlt(prod, n) {\n var result = indent(n, \"{\") + NL;\n result += indent(n + 1, \"ALT: function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"}\") + NL;\n result += indent(n, \"}\");\n return result;\n}\nfunction genProd(prod, n) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return genNonTerminal(prod, n);\n }\n else if (prod instanceof Option) {\n return genDSLRule(\"OPTION\", prod, n);\n }\n else if (prod instanceof RepetitionMandatory) {\n return genDSLRule(\"AT_LEAST_ONE\", prod, n);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return genDSLRule(\"AT_LEAST_ONE_SEP\", prod, n);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return genDSLRule(\"MANY_SEP\", prod, n);\n }\n else if (prod instanceof Repetition) {\n return genDSLRule(\"MANY\", prod, n);\n }\n else if (prod instanceof Alternation) {\n return genAlternation(prod, n);\n }\n else if (prod instanceof Terminal) {\n return genTerminal(prod, n);\n }\n else if (prod instanceof Alternative) {\n return genDefinition(prod.definition, n);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction genDSLRule(dslName, prod, n) {\n var result = indent(n, \"$.\" + (dslName + prod.idx) + \"(\");\n if (prod.separator) {\n result += \"{\" + NL;\n result +=\n indent(n + 1, \"SEP: this.tokensMap.\" + prod.separator.name) + \",\" + NL;\n result += \"DEF: \" + genDefFunction(prod.definition, n + 2) + NL;\n result += indent(n, \"}\") + NL;\n }\n else {\n result += genDefFunction(prod.definition, n + 1);\n }\n result += indent(n, \")\") + NL;\n return result;\n}\nfunction genDefFunction(definition, n) {\n var def = \"function() {\" + NL;\n def += genDefinition(definition, n);\n def += indent(n, \"}\") + NL;\n return def;\n}\nfunction genDefinition(def, n) {\n var result = \"\";\n forEach(def, function (prod) {\n result += genProd(prod, n + 1);\n });\n return result;\n}\nfunction indent(howMuch, text) {\n var spaces = Array(howMuch * 4 + 1).join(\" \");\n return spaces + text;\n}\n//# sourceMappingURL=generate.js.map","import { genUmdModule, genWrapperFunction } from \"./generate\";\nexport function generateParserFactory(options) {\n var wrapperText = genWrapperFunction({\n name: options.name,\n rules: options.rules\n });\n var constructorWrapper = new Function(\"tokenVocabulary\", \"config\", \"chevrotain\", wrapperText);\n return function (config) {\n return constructorWrapper(options.tokenVocabulary, config, \n // TODO: check how the require is transpiled/webpacked\n require(\"../api\"));\n };\n}\nexport function generateParserModule(options) {\n return genUmdModule({ name: options.name, rules: options.rules });\n}\n//# sourceMappingURL=generate_public.js.map","/* istanbul ignore file - tricky to import some things from this module during testing */\n// semantic version\nexport { VERSION } from \"./version\";\nexport { CstParser, EmbeddedActionsParser, ParserDefinitionErrorType, EMPTY_ALT } from \"./parse/parser/parser\";\nexport { Lexer, LexerDefinitionErrorType } from \"./scan/lexer_public\";\n// Tokens utilities\nexport { createToken, createTokenInstance, EOF, tokenLabel, tokenMatcher, tokenName } from \"./scan/tokens_public\";\n// Other Utilities\nexport { defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider, defaultParserErrorProvider } from \"./parse/errors_public\";\nexport { EarlyExitException, isRecognitionException, MismatchedTokenException, NotAllInputParsedException, NoViableAltException } from \"./parse/exceptions_public\";\nexport { defaultLexerErrorProvider } from \"./scan/lexer_errors_public\";\n// grammar reflection API\nexport { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./parse/grammar/gast/gast_public\";\n// GAST Utilities\nexport { serializeGrammar, serializeProduction } from \"./parse/grammar/gast/gast_public\";\nexport { GAstVisitor } from \"./parse/grammar/gast/gast_visitor_public\";\nexport { assignOccurrenceIndices, resolveGrammar, validateGrammar } from \"./parse/grammar/gast/gast_resolver_public\";\n/* istanbul ignore next */\nexport function clearCache() {\n console.warn(\"The clearCache function was 'soft' removed from the Chevrotain API.\" +\n \"\\n\\t It performs no action other than printing this message.\" +\n \"\\n\\t Please avoid using it as it will be completely removed in the future\");\n}\nexport { createSyntaxDiagramsCode } from \"./diagrams/render_public\";\nexport { generateParserFactory, generateParserModule } from \"./generate/generate_public\";\nvar Parser = /** @class */ (function () {\n function Parser() {\n throw new Error(\"The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\\t\\n\" +\n \"See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0\");\n }\n return Parser;\n}());\nexport { Parser };\n//# sourceMappingURL=api.js.map","const {createToken, Lexer} = require('chevrotain');\r\nconst FormulaError = require('../formulas/error')\r\n\r\n// the vocabulary will be exported and used in the Parser definition.\r\nconst tokenVocabulary = {};\r\n\r\nconst WhiteSpace = createToken({\r\n name: 'WhiteSpace',\r\n pattern: /\\s+/,\r\n group: Lexer.SKIPPED,\r\n});\r\n\r\nconst String = createToken({\r\n name: 'String',\r\n pattern: /\"(\"\"|[^\"])*\"/\r\n});\r\n\r\nconst SingleQuotedString = createToken({\r\n name: 'SingleQuotedString',\r\n pattern: /'(''|[^'])*'/\r\n});\r\n\r\nconst SheetQuoted = createToken({\r\n name: 'SheetQuoted',\r\n pattern: /'((?![\\\\\\/\\[\\]*?:]).)+?'!/\r\n});\r\n\r\nconst Function = createToken({\r\n name: 'Function',\r\n pattern: /[A-Za-z_]+[A-Za-z_0-9.]*\\(/\r\n});\r\n\r\nconst FormulaErrorT = createToken({\r\n name: 'FormulaErrorT',\r\n pattern: /#NULL!|#DIV\\/0!|#VALUE!|#NAME\\?|#NUM!|#N\\/A/\r\n});\r\n\r\nconst RefError = createToken({\r\n name: 'RefError',\r\n pattern: /#REF!/\r\n});\r\n\r\nconst Name = createToken({\r\n name: 'Name',\r\n pattern: /[a-zA-Z_][a-zA-Z0-9_.?]*/,\r\n // longer_alt: RangeColumn // e.g. A:AA\r\n});\r\n\r\nconst Sheet = createToken({\r\n name: 'Sheet',\r\n pattern: /[A-Za-z_.\\d\\u007F-\\uFFFF]+!/\r\n});\r\n\r\nconst Cell = createToken({\r\n name: 'Cell',\r\n pattern: /[$]?[A-Za-z]{1,3}[$]?[1-9][0-9]*/,\r\n longer_alt: Name\r\n});\r\n\r\nconst Number = createToken({\r\n name: 'Number',\r\n pattern: /[0-9]+[.]?[0-9]*([eE][+\\-][0-9]+)?/\r\n});\r\n\r\nconst Boolean = createToken({\r\n name: 'Boolean',\r\n pattern: /TRUE|FALSE/i\r\n});\r\n\r\nconst Column = createToken({\r\n name: 'Column',\r\n pattern: /[$]?[A-Za-z]{1,3}/,\r\n longer_alt: Name\r\n});\r\n\r\n\r\n/**\r\n * Symbols and operators\r\n */\r\nconst At = createToken({\r\n name: 'At',\r\n pattern: /@/\r\n});\r\n\r\nconst Comma = createToken({\r\n name: 'Comma',\r\n pattern: /,/\r\n});\r\n\r\nconst Colon = createToken({\r\n name: 'Colon',\r\n pattern: /:/\r\n});\r\n\r\nconst Semicolon = createToken({\r\n name: 'Semicolon',\r\n pattern: /;/\r\n});\r\n\r\nconst OpenParen = createToken({\r\n name: 'OpenParen',\r\n pattern: /\\(/\r\n});\r\n\r\nconst CloseParen = createToken({\r\n name: 'CloseParen',\r\n pattern: /\\)/\r\n});\r\n\r\nconst OpenSquareParen = createToken({\r\n name: 'OpenSquareParen',\r\n pattern: /\\[/\r\n});\r\n\r\nconst CloseSquareParen = createToken({\r\n name: 'CloseSquareParen',\r\n pattern: /]/\r\n});\r\n\r\nconst ExclamationMark = createToken({\r\n name: 'exclamationMark',\r\n pattern: /!/\r\n});\r\n\r\nconst OpenCurlyParen = createToken({\r\n name: 'OpenCurlyParen',\r\n pattern: /{/\r\n});\r\n\r\nconst CloseCurlyParen = createToken({\r\n name: 'CloseCurlyParen',\r\n pattern: /}/\r\n});\r\n\r\nconst QuoteS = createToken({\r\n name: 'QuoteS',\r\n pattern: /'/\r\n});\r\n\r\n\r\nconst MulOp = createToken({\r\n name: 'MulOp',\r\n pattern: /\\*/\r\n});\r\n\r\nconst PlusOp = createToken({\r\n name: 'PlusOp',\r\n pattern: /\\+/\r\n});\r\n\r\nconst DivOp = createToken({\r\n name: 'DivOp',\r\n pattern: /\\//\r\n});\r\n\r\nconst MinOp = createToken({\r\n name: 'MinOp',\r\n pattern: /-/\r\n});\r\n\r\nconst ConcatOp = createToken({\r\n name: 'ConcatOp',\r\n pattern: /&/\r\n});\r\n\r\nconst ExOp = createToken({\r\n name: 'ExOp',\r\n pattern: /\\^/\r\n});\r\n\r\nconst PercentOp = createToken({\r\n name: 'PercentOp',\r\n pattern: /%/\r\n});\r\n\r\nconst GtOp = createToken({\r\n name: 'GtOp',\r\n pattern: />/\r\n});\r\n\r\nconst EqOp = createToken({\r\n name: 'EqOp',\r\n pattern: /=/\r\n});\r\n\r\nconst LtOp = createToken({\r\n name: 'LtOp',\r\n pattern: //\r\n});\r\n\r\nconst GteOp = createToken({\r\n name: 'GteOp',\r\n pattern: />=/\r\n});\r\n\r\nconst LteOp = createToken({\r\n name: 'LteOp',\r\n pattern: /<=/\r\n});\r\n\r\n// The order of tokens is important\r\nconst allTokens = [\r\n\r\n WhiteSpace,\r\n String,\r\n SheetQuoted,\r\n SingleQuotedString,\r\n Function,\r\n FormulaErrorT,\r\n RefError,\r\n Sheet,\r\n Cell,\r\n Boolean,\r\n Column,\r\n Name,\r\n Number,\r\n\r\n At,\r\n Comma,\r\n Colon,\r\n Semicolon,\r\n OpenParen,\r\n CloseParen,\r\n OpenSquareParen,\r\n CloseSquareParen,\r\n // ExclamationMark,\r\n OpenCurlyParen,\r\n CloseCurlyParen,\r\n QuoteS,\r\n MulOp,\r\n PlusOp,\r\n DivOp,\r\n MinOp,\r\n ConcatOp,\r\n ExOp,\r\n MulOp,\r\n PercentOp,\r\n NeqOp,\r\n GteOp,\r\n LteOp,\r\n GtOp,\r\n EqOp,\r\n LtOp,\r\n];\r\n\r\nconst SelectLexer = new Lexer(allTokens, {ensureOptimizations: true});\r\n\r\nallTokens.forEach(tokenType => {\r\n tokenVocabulary[tokenType.name] = tokenType\r\n});\r\n\r\nmodule.exports = {\r\n tokenVocabulary: tokenVocabulary,\r\n\r\n lex: function (inputText) {\r\n const lexingResult = SelectLexer.tokenize(inputText)\r\n\r\n if (lexingResult.errors.length > 0) {\r\n const error = lexingResult.errors[0];\r\n const line = error.line, column = error.column;\r\n let msg = '\\n' + inputText.split('\\n')[line - 1] + '\\n';\r\n msg += Array(column - 1).fill(' ').join('') + '^\\n';\r\n error.message = msg + `Error at position ${line}:${column}\\n` + error.message;\r\n error.errorLocation = {line, column};\r\n throw FormulaError.ERROR(error.message, error);\r\n }\r\n\r\n return lexingResult\r\n }\r\n};\r\n","const lexer = require('./lexing');\r\nconst {EmbeddedActionsParser} = require(\"chevrotain\");\r\nconst tokenVocabulary = lexer.tokenVocabulary;\r\nconst {\r\n String,\r\n SheetQuoted,\r\n ExcelRefFunction,\r\n ExcelConditionalRefFunction,\r\n Function,\r\n FormulaErrorT,\r\n RefError,\r\n Cell,\r\n Sheet,\r\n Name,\r\n Number,\r\n Boolean,\r\n Column,\r\n\r\n // At,\r\n Comma,\r\n Colon,\r\n Semicolon,\r\n OpenParen,\r\n CloseParen,\r\n // OpenSquareParen,\r\n // CloseSquareParen,\r\n // ExclamationMark,\r\n OpenCurlyParen,\r\n CloseCurlyParen,\r\n MulOp,\r\n PlusOp,\r\n DivOp,\r\n MinOp,\r\n ConcatOp,\r\n ExOp,\r\n PercentOp,\r\n NeqOp,\r\n GteOp,\r\n LteOp,\r\n GtOp,\r\n EqOp,\r\n LtOp\r\n} = lexer.tokenVocabulary;\r\n\r\nclass Parsing extends EmbeddedActionsParser {\r\n /**\r\n *\r\n * @param {FormulaParser|DepParser} context\r\n * @param {Utils} utils\r\n */\r\n constructor(context, utils) {\r\n super(tokenVocabulary, {\r\n outputCst: false,\r\n maxLookahead: 1,\r\n skipValidations: true,\r\n // traceInitPerf: true,\r\n });\r\n this.utils = utils;\r\n this.binaryOperatorsPrecedence = [\r\n ['^'],\r\n ['*', '/'],\r\n ['+', '-'],\r\n ['&'],\r\n ['<', '>', '=', '<>', '<=', '>='],\r\n ];\r\n const $ = this;\r\n\r\n // Adopted from https://github.com/spreadsheetlab/XLParser/blob/master/src/XLParser/ExcelFormulaGrammar.cs\r\n\r\n $.RULE('formulaWithBinaryOp', () => {\r\n const infixes = [];\r\n const values = [$.SUBRULE($.formulaWithPercentOp)];\r\n $.MANY(() => {\r\n // Caching Arrays of Alternatives\r\n // https://sap.github.io/chevrotain/docs/guide/performance.html#caching-arrays-of-alternatives\r\n infixes.push($.OR($.c1 ||\r\n (\r\n $.c1 = [\r\n {ALT: () => $.CONSUME(GtOp).image},\r\n {ALT: () => $.CONSUME(EqOp).image},\r\n {ALT: () => $.CONSUME(LtOp).image},\r\n {ALT: () => $.CONSUME(NeqOp).image},\r\n {ALT: () => $.CONSUME(GteOp).image},\r\n {ALT: () => $.CONSUME(LteOp).image},\r\n {ALT: () => $.CONSUME(ConcatOp).image},\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image},\r\n {ALT: () => $.CONSUME(MulOp).image},\r\n {ALT: () => $.CONSUME(DivOp).image},\r\n {ALT: () => $.CONSUME(ExOp).image}\r\n ]\r\n )));\r\n values.push($.SUBRULE2($.formulaWithPercentOp));\r\n });\r\n $.ACTION(() => {\r\n // evaluate\r\n for (const ops of this.binaryOperatorsPrecedence) {\r\n for (let index = 0, length = infixes.length; index < length; index++) {\r\n const infix = infixes[index];\r\n if (!ops.includes(infix)) continue;\r\n infixes.splice(index, 1);\r\n values.splice(index, 2, this.utils.applyInfix(values[index], infix, values[index + 1]));\r\n index--;\r\n length--;\r\n }\r\n }\r\n });\r\n\r\n return values[0];\r\n });\r\n\r\n $.RULE('plusMinusOp', () => $.OR([\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image}\r\n ]));\r\n\r\n $.RULE('formulaWithPercentOp', () => {\r\n let value = $.SUBRULE($.formulaWithUnaryOp);\r\n $.OPTION(() => {\r\n const postfix = $.CONSUME(PercentOp).image;\r\n value = $.ACTION(() => this.utils.applyPostfix(value, postfix));\r\n });\r\n return value;\r\n });\r\n\r\n $.RULE('formulaWithUnaryOp', () => {\r\n // support ++---3 => -3\r\n const prefixes = [];\r\n $.MANY(() => {\r\n const op = $.OR([\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image}\r\n ]);\r\n prefixes.push(op);\r\n });\r\n const formula = $.SUBRULE($.formulaWithIntersect);\r\n if (prefixes.length > 0) return $.ACTION(() => this.utils.applyPrefix(prefixes, formula));\r\n return formula;\r\n });\r\n\r\n\r\n $.RULE('formulaWithIntersect', () => {\r\n // e.g. 'A1 A2 A3'\r\n let ref1 = $.SUBRULE($.formulaWithRange);\r\n const refs = [ref1];\r\n // console.log('check intersect')\r\n $.MANY({\r\n GATE: () => {\r\n // see https://github.com/SAP/chevrotain/blob/master/examples/grammars/css/css.js#L436-L441\r\n const prevToken = $.LA(0);\r\n const nextToken = $.LA(1);\r\n // This is the only place where the grammar is whitespace sensitive.\r\n return nextToken.startOffset > prevToken.endOffset + 1;\r\n },\r\n DEF: () => {\r\n refs.push($.SUBRULE3($.formulaWithRange));\r\n }\r\n });\r\n if (refs.length > 1) {\r\n return $.ACTION(() => $.ACTION(() => this.utils.applyIntersect(refs)))\r\n }\r\n return ref1;\r\n });\r\n\r\n $.RULE('formulaWithRange', () => {\r\n // e.g. 'A1:C3' or 'A1:A3:C4', can be any number of references, at lease 2\r\n const ref1 = $.SUBRULE($.formula);\r\n const refs = [ref1];\r\n $.MANY(() => {\r\n $.CONSUME(Colon);\r\n refs.push($.SUBRULE2($.formula));\r\n });\r\n if (refs.length > 1)\r\n return $.ACTION(() => $.ACTION(() => this.utils.applyRange(refs)));\r\n return ref1;\r\n });\r\n\r\n $.RULE('formula', () => $.OR9([\r\n {ALT: () => $.SUBRULE($.referenceWithoutInfix)},\r\n {ALT: () => $.SUBRULE($.paren)},\r\n {ALT: () => $.SUBRULE($.constant)},\r\n {ALT: () => $.SUBRULE($.functionCall)},\r\n {ALT: () => $.SUBRULE($.constantArray)},\r\n ]));\r\n\r\n $.RULE('paren', () => {\r\n // formula paren or union paren\r\n $.CONSUME(OpenParen);\r\n let result;\r\n const refs = [];\r\n refs.push($.SUBRULE($.formulaWithBinaryOp));\r\n $.MANY(() => {\r\n $.CONSUME(Comma);\r\n refs.push($.SUBRULE2($.formulaWithBinaryOp));\r\n });\r\n if (refs.length > 1)\r\n result = $.ACTION(() => this.utils.applyUnion(refs));\r\n else\r\n result = refs[0];\r\n\r\n $.CONSUME(CloseParen);\r\n return result;\r\n });\r\n\r\n $.RULE('constantArray', () => {\r\n // console.log('constantArray');\r\n const arr = [[]];\r\n let currentRow = 0;\r\n $.CONSUME(OpenCurlyParen);\r\n\r\n // array must contain at least one item\r\n arr[currentRow].push($.SUBRULE($.constantForArray));\r\n $.MANY(() => {\r\n const sep = $.OR([\r\n {ALT: () => $.CONSUME(Comma).image},\r\n {ALT: () => $.CONSUME(Semicolon).image}\r\n ]);\r\n const constant = $.SUBRULE2($.constantForArray);\r\n if (sep === ',') {\r\n arr[currentRow].push(constant)\r\n } else {\r\n currentRow++;\r\n arr[currentRow] = [];\r\n arr[currentRow].push(constant)\r\n }\r\n });\r\n\r\n $.CONSUME(CloseCurlyParen);\r\n\r\n return $.ACTION(() => this.utils.toArray(arr));\r\n });\r\n\r\n /**\r\n * Used in array\r\n */\r\n $.RULE('constantForArray', () => $.OR([\r\n {\r\n ALT: () => {\r\n const prefix = $.OPTION(() => $.SUBRULE($.plusMinusOp));\r\n const image = $.CONSUME(Number).image;\r\n const number = $.ACTION(() => this.utils.toNumber(image));\r\n if (prefix)\r\n return $.ACTION(() => this.utils.applyPrefix([prefix], number));\r\n return number;\r\n }\r\n }, {\r\n ALT: () => {\r\n const str = $.CONSUME(String).image;\r\n return $.ACTION(() => this.utils.toString(str));\r\n }\r\n }, {\r\n ALT: () => {\r\n const bool = $.CONSUME(Boolean).image;\r\n return $.ACTION(() => this.utils.toBoolean(bool));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(FormulaErrorT).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(RefError).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n },\r\n ]));\r\n\r\n $.RULE('constant', () => $.OR([\r\n {\r\n ALT: () => {\r\n const number = $.CONSUME(Number).image;\r\n return $.ACTION(() => this.utils.toNumber(number));\r\n }\r\n }, {\r\n ALT: () => {\r\n const str = $.CONSUME(String).image;\r\n return $.ACTION(() => this.utils.toString(str));\r\n }\r\n }, {\r\n ALT: () => {\r\n const bool = $.CONSUME(Boolean).image;\r\n return $.ACTION(() => this.utils.toBoolean(bool));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(FormulaErrorT).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n },\r\n ]));\r\n\r\n $.RULE('functionCall', () => {\r\n const functionName = $.CONSUME(Function).image.slice(0, -1);\r\n // console.log('functionName', functionName);\r\n const args = $.SUBRULE($.arguments);\r\n $.CONSUME(CloseParen);\r\n // dependency parser won't call function.\r\n return $.ACTION(() => context.callFunction(functionName, args));\r\n\r\n });\r\n\r\n $.RULE('arguments', () => {\r\n // console.log('try arguments')\r\n\r\n // allows ',' in the front\r\n $.MANY2(() => {\r\n $.CONSUME2(Comma);\r\n });\r\n const args = [];\r\n // allows empty arguments\r\n $.OPTION(() => {\r\n args.push($.SUBRULE($.formulaWithBinaryOp));\r\n $.MANY(() => {\r\n $.CONSUME1(Comma);\r\n args.push(null); // e.g. ROUND(1.5,)\r\n $.OPTION3(() => {\r\n args.pop();\r\n args.push($.SUBRULE2($.formulaWithBinaryOp))\r\n });\r\n });\r\n });\r\n return args;\r\n });\r\n\r\n $.RULE('referenceWithoutInfix', () => $.OR([\r\n\r\n {ALT: () => $.SUBRULE($.referenceItem)},\r\n\r\n {\r\n // sheet name prefix\r\n ALT: () => {\r\n // console.log('try sheetName');\r\n const sheetName = $.SUBRULE($.prefixName);\r\n // console.log('sheetName', sheetName);\r\n const referenceItem = $.SUBRULE2($.formulaWithRange);\r\n\r\n $.ACTION(() => {\r\n if (this.utils.isFormulaError(referenceItem))\r\n return referenceItem;\r\n referenceItem.ref.sheet = sheetName\r\n });\r\n return referenceItem;\r\n }\r\n },\r\n\r\n // {ALT: () => $.SUBRULE('dynamicDataExchange')},\r\n ]));\r\n\r\n $.RULE('referenceItem', () => $.OR([\r\n {\r\n ALT: () => {\r\n const address = $.CONSUME(Cell).image;\r\n return $.ACTION(() => this.utils.parseCellAddress(address));\r\n }\r\n },\r\n {\r\n ALT: () => {\r\n const name = $.CONSUME(Name).image;\r\n return $.ACTION(() => context.getVariable(name))\r\n }\r\n },\r\n {\r\n ALT: () => {\r\n const column = $.CONSUME(Column).image;\r\n return $.ACTION(() => this.utils.parseCol(column))\r\n }\r\n },\r\n // A row check should be here, but the token is same with Number,\r\n // In other to resolve ambiguities, I leave this empty, and\r\n // parse the number to row number when needed.\r\n {\r\n ALT: () => {\r\n const err = $.CONSUME(RefError).image;\r\n return $.ACTION(() => this.utils.toError(err))\r\n }\r\n },\r\n // {ALT: () => $.SUBRULE($.udfFunctionCall)},\r\n // {ALT: () => $.SUBRULE($.structuredReference)},\r\n ]));\r\n\r\n $.RULE('prefixName', () => $.OR([\r\n {ALT: () => $.CONSUME(Sheet).image.slice(0, -1)},\r\n {ALT: () => $.CONSUME(SheetQuoted).image.slice(1, -2).replace(/''/g, \"'\")},\r\n ]));\r\n\r\n this.performSelfAnalysis();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n Parser: Parsing,\r\n};\r\n","const FormulaError = require('../formulas/error');\r\nconst {Address} = require('../formulas/helpers');\r\nconst {Prefix, Postfix, Infix, Operators} = require('../formulas/operators');\r\nconst Collection = require('./type/collection');\r\nconst MAX_ROW = 1048576, MAX_COLUMN = 16384;\r\nconst {NotAllInputParsedException} = require('chevrotain');\r\n\r\nclass Utils {\r\n\r\n constructor(context) {\r\n this.context = context;\r\n }\r\n\r\n columnNameToNumber(columnName) {\r\n return Address.columnNameToNumber(columnName);\r\n }\r\n\r\n /**\r\n * Parse the cell address only.\r\n * @param {string} cellAddress\r\n * @return {{ref: {col: number, address: string, row: number}}}\r\n */\r\n parseCellAddress(cellAddress) {\r\n const res = cellAddress.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);\r\n // console.log('parseCellAddress', cellAddress);\r\n return {\r\n ref: {\r\n address: res[0],\r\n col: this.columnNameToNumber(res[2]),\r\n row: +res[4]\r\n },\r\n };\r\n }\r\n\r\n parseRow(row) {\r\n const rowNum = +row;\r\n if (!Number.isInteger(rowNum))\r\n throw Error('Row number must be integer.');\r\n return {\r\n ref: {\r\n col: undefined,\r\n row: +row\r\n },\r\n };\r\n }\r\n\r\n parseCol(col) {\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(col),\r\n row: undefined,\r\n },\r\n };\r\n }\r\n\r\n parseColRange(col1, col2) {\r\n // const res = colRange.match(/([$]?)([A-Za-z]{1,3}):([$]?)([A-Za-z]{1,4})/);\r\n col1 = this.columnNameToNumber(col1);\r\n col2 = this.columnNameToNumber(col2);\r\n return {\r\n ref: {\r\n from: {\r\n col: Math.min(col1, col2),\r\n row: null\r\n },\r\n to: {\r\n col: Math.max(col1, col2),\r\n row: null\r\n }\r\n }\r\n }\r\n }\r\n\r\n parseRowRange(row1, row2) {\r\n // const res = rowRange.match(/([$]?)([1-9][0-9]*):([$]?)([1-9][0-9]*)/);\r\n return {\r\n ref: {\r\n from: {\r\n col: null,\r\n row: Math.min(row1, row2),\r\n },\r\n to: {\r\n col: null,\r\n row: Math.max(row1, row2),\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n _applyPrefix(prefixes, val, isArray) {\r\n if (this.isFormulaError(val))\r\n return val;\r\n return Prefix.unaryOp(prefixes, val, isArray);\r\n }\r\n\r\n async applyPrefixAsync(prefixes, value) {\r\n const {val, isArray} = this.extractRefValue(await value);\r\n return this._applyPrefix(prefixes, val, isArray);\r\n }\r\n\r\n /**\r\n * Apply + or - unary prefix.\r\n * @param {Array.} prefixes\r\n * @param {*} value\r\n * @return {*}\r\n */\r\n applyPrefix(prefixes, value) {\r\n // console.log('applyPrefix', prefixes, value);\r\n if (this.context.async) {\r\n return this.applyPrefixAsync(prefixes, value);\r\n } else {\r\n const {val, isArray} = this.extractRefValue(value);\r\n return this._applyPrefix(prefixes, val, isArray);\r\n }\r\n }\r\n\r\n _applyPostfix(val, isArray, postfix) {\r\n if (this.isFormulaError(val))\r\n return val;\r\n return Postfix.percentOp(val, postfix, isArray);\r\n }\r\n\r\n async applyPostfixAsync(value, postfix) {\r\n const {val, isArray} = this.extractRefValue(await value);\r\n return this._applyPostfix(val, isArray, postfix);\r\n }\r\n\r\n applyPostfix(value, postfix) {\r\n // console.log('applyPostfix', value, postfix);\r\n if (this.context.async) {\r\n return this.applyPostfixAsync(value, postfix);\r\n } else {\r\n const {val, isArray} = this.extractRefValue(value);\r\n return this._applyPostfix(val, isArray, postfix)\r\n }\r\n }\r\n\r\n _applyInfix(res1, infix, res2) {\r\n const val1 = res1.val, isArray1 = res1.isArray;\r\n const val2 = res2.val, isArray2 = res2.isArray;\r\n if (this.isFormulaError(val1))\r\n return val1;\r\n if (this.isFormulaError(val2))\r\n return val2;\r\n if (Operators.compareOp.includes(infix))\r\n return Infix.compareOp(val1, infix, val2, isArray1, isArray2);\r\n else if (Operators.concatOp.includes(infix))\r\n return Infix.concatOp(val1, infix, val2, isArray1, isArray2);\r\n else if (Operators.mathOp.includes(infix))\r\n return Infix.mathOp(val1, infix, val2, isArray1, isArray2);\r\n else\r\n throw new Error(`Unrecognized infix: ${infix}`);\r\n }\r\n\r\n async applyInfixAsync(value1, infix, value2) {\r\n const res1 = this.extractRefValue(await value1);\r\n const res2 = this.extractRefValue(await value2);\r\n return this._applyInfix(res1, infix, res2)\r\n }\r\n\r\n applyInfix(value1, infix, value2) {\r\n if (this.context.async) {\r\n return this.applyInfixAsync(value1, infix, value2)\r\n } else {\r\n const res1 = this.extractRefValue(value1);\r\n const res2 = this.extractRefValue(value2);\r\n return this._applyInfix(res1, infix, res2)\r\n }\r\n }\r\n\r\n applyIntersect(refs) {\r\n // console.log('applyIntersect', refs);\r\n if (this.isFormulaError(refs[0]))\r\n return refs[0];\r\n if (!refs[0].ref)\r\n throw Error(`Expecting a reference, but got ${refs[0]}.`);\r\n // a intersection will keep track of references, value won't be retrieved here.\r\n let maxRow, maxCol, minRow, minCol, sheet, res; // index start from 1\r\n // first time setup\r\n const ref = refs.shift().ref;\r\n sheet = ref.sheet;\r\n if (!ref.from) {\r\n // check whole row/col reference\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n\r\n // cell ref\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n // update\r\n maxRow = Math.max(ref.from.row, ref.to.row);\r\n minRow = Math.min(ref.from.row, ref.to.row);\r\n maxCol = Math.max(ref.from.col, ref.to.col);\r\n minCol = Math.min(ref.from.col, ref.to.col);\r\n }\r\n\r\n let err;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n ref = ref.ref;\r\n if (!ref) throw Error(`Expecting a reference, but got ${ref}.`);\r\n if (!ref.from) {\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n // cell ref\r\n if (ref.row > maxRow || ref.row < minRow || ref.col > maxCol || ref.col < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n const refMaxRow = Math.max(ref.from.row, ref.to.row);\r\n const refMinRow = Math.min(ref.from.row, ref.to.row);\r\n const refMaxCol = Math.max(ref.from.col, ref.to.col);\r\n const refMinCol = Math.min(ref.from.col, ref.to.col);\r\n if (refMinRow > maxRow || refMaxRow < minRow || refMinCol > maxCol || refMaxCol < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n // update\r\n maxRow = Math.min(maxRow, refMaxRow);\r\n minRow = Math.max(minRow, refMinRow);\r\n maxCol = Math.min(maxCol, refMaxCol);\r\n minCol = Math.max(minCol, refMinCol);\r\n }\r\n });\r\n if (err) return err;\r\n // check if the ref can be reduced to cell reference\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n sheet,\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n sheet,\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n\r\n if (!res.ref.sheet)\r\n delete res.ref.sheet;\r\n return res;\r\n }\r\n\r\n applyUnion(refs) {\r\n const collection = new Collection();\r\n for (let i = 0; i < refs.length; i++) {\r\n if (this.isFormulaError(refs[i]))\r\n return refs[i];\r\n collection.add(this.extractRefValue(refs[i]).val, refs[i]);\r\n }\r\n\r\n // console.log('applyUnion', unions);\r\n return collection;\r\n }\r\n\r\n /**\r\n * Apply multiple references, e.g. A1:B3:C8:A:1:.....\r\n * @param refs\r\n // * @return {{ref: {from: {col: number, row: number}, to: {col: number, row: number}}}}\r\n */\r\n applyRange(refs) {\r\n let res, maxRow = -1, maxCol = -1, minRow = MAX_ROW + 1, minCol = MAX_COLUMN + 1;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n // row ref is saved as number, parse the number to row ref here\r\n if (typeof ref === 'number') {\r\n ref = this.parseRow(ref);\r\n }\r\n ref = ref.ref;\r\n // check whole row/col reference\r\n if (ref.row === undefined) {\r\n minRow = 1;\r\n maxRow = MAX_ROW\r\n }\r\n if (ref.col === undefined) {\r\n minCol = 1;\r\n maxCol = MAX_COLUMN;\r\n }\r\n\r\n if (ref.row > maxRow)\r\n maxRow = ref.row;\r\n if (ref.row < minRow)\r\n minRow = ref.row;\r\n if (ref.col > maxCol)\r\n maxCol = ref.col;\r\n if (ref.col < minCol)\r\n minCol = ref.col;\r\n });\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Throw away the refs, and retrieve the value.\r\n * @return {{val: *, isArray: boolean}}\r\n */\r\n extractRefValue(obj) {\r\n let res = obj, isArray = false;\r\n if (Array.isArray(res))\r\n isArray = true;\r\n if (obj.ref) {\r\n // can be number or array\r\n return {val: this.context.retrieveRef(obj), isArray};\r\n\r\n }\r\n return {val: res, isArray};\r\n }\r\n\r\n /**\r\n *\r\n * @param array\r\n * @return {Array}\r\n */\r\n toArray(array) {\r\n // TODO: check if array is valid\r\n // console.log('toArray', array);\r\n return array;\r\n }\r\n\r\n /**\r\n * @param {string} number\r\n * @return {number}\r\n */\r\n toNumber(number) {\r\n return Number(number);\r\n }\r\n\r\n /**\r\n * @param {string} string\r\n * @return {string}\r\n */\r\n toString(string) {\r\n return string.substring(1, string.length - 1) .replace(/\"\"/g, '\"');\r\n }\r\n\r\n /**\r\n * @param {string} bool\r\n * @return {boolean}\r\n */\r\n toBoolean(bool) {\r\n return bool === 'TRUE';\r\n }\r\n\r\n /**\r\n * Parse an error.\r\n * @param {string} error\r\n * @return {string}\r\n */\r\n toError(error) {\r\n return new FormulaError(error.toUpperCase());\r\n }\r\n\r\n isFormulaError(obj) {\r\n return obj instanceof FormulaError;\r\n }\r\n\r\n static formatChevrotainError(error, inputText) {\r\n let line, column, msg = '';\r\n // e.g. SUM(1))\r\n if (error instanceof NotAllInputParsedException) {\r\n line = error.token.startLine;\r\n column = error.token.startColumn;\r\n } else {\r\n line = error.previousToken.startLine;\r\n column = error.previousToken.startColumn + 1;\r\n }\r\n\r\n msg += '\\n' + inputText.split('\\n')[line - 1] + '\\n';\r\n msg += Array(column - 1).fill(' ').join('') + '^\\n';\r\n msg += `Error at position ${line}:${column}\\n` + error.message;\r\n error.errorLocation = {line, column};\r\n return FormulaError.ERROR(msg, error);\r\n }\r\n\r\n}\r\n\r\nmodule.exports = Utils;\r\n","const TextFunctions = require('../formulas/functions/text');\r\nconst MathFunctions = require('../formulas/functions/math');\r\nconst TrigFunctions = require('../formulas/functions/trigonometry');\r\nconst LogicalFunctions = require('../formulas/functions/logical');\r\nconst EngFunctions = require('../formulas/functions/engineering');\r\nconst ReferenceFunctions = require('../formulas/functions/reference');\r\nconst InformationFunctions = require('../formulas/functions/information');\r\nconst StatisticalFunctions = require('../formulas/functions/statistical');\r\nconst DateFunctions = require('../formulas/functions/date');\r\nconst WebFunctions = require('../formulas/functions/web');\r\nconst FormulaError = require('../formulas/error');\r\nconst {FormulaHelpers} = require('../formulas/helpers');\r\nconst {Parser, allTokens} = require('./parsing');\r\nconst lexer = require('./lexing');\r\nconst Utils = require('./utils');\r\n\r\n/**\r\n * A Excel Formula Parser & Evaluator\r\n */\r\nclass FormulaParser {\r\n\r\n /**\r\n * @param {{functions: {}, functionsNeedContext: {}, onVariable: function, onCell: function, onRange: function}} [config]\r\n * @param isTest - is in testing environment\r\n */\r\n constructor(config, isTest = false) {\r\n this.logs = [];\r\n this.isTest = isTest;\r\n this.utils = new Utils(this);\r\n config = Object.assign({\r\n functions: {},\r\n functionsNeedContext: {},\r\n onVariable: () => null,\r\n onCell: () => 0,\r\n onRange: () => [[0]],\r\n }, config);\r\n\r\n this.onVariable = config.onVariable;\r\n this.functions = Object.assign({}, DateFunctions, StatisticalFunctions, InformationFunctions, ReferenceFunctions,\r\n EngFunctions, LogicalFunctions, TextFunctions, MathFunctions, TrigFunctions, WebFunctions,\r\n config.functions, config.functionsNeedContext);\r\n this.onRange = config.onRange;\r\n this.onCell = config.onCell;\r\n\r\n // functions treat null as 0, other functions treats null as \"\"\r\n this.funsNullAs0 = Object.keys(MathFunctions)\r\n .concat(Object.keys(TrigFunctions))\r\n .concat(Object.keys(LogicalFunctions))\r\n .concat(Object.keys(EngFunctions))\r\n .concat(Object.keys(ReferenceFunctions))\r\n .concat(Object.keys(StatisticalFunctions))\r\n .concat(Object.keys(DateFunctions));\r\n\r\n // functions need context and don't need to retrieve references\r\n this.funsNeedContextAndNoDataRetrieve = ['ROW', 'ROWS', 'COLUMN', 'COLUMNS', 'SUMIF', 'INDEX', 'AVERAGEIF', 'IF'];\r\n\r\n // functions need parser context\r\n this.funsNeedContext = [...Object.keys(config.functionsNeedContext), ...this.funsNeedContextAndNoDataRetrieve,\r\n 'INDEX', 'OFFSET', 'INDIRECT', 'IF', 'CHOOSE', 'WEBSERVICE'];\r\n\r\n // functions preserve reference in arguments\r\n this.funsPreserveRef = Object.keys(InformationFunctions);\r\n\r\n this.parser = new Parser(this, this.utils);\r\n }\r\n\r\n /**\r\n * Get all lexing token names. Webpack needs this.\r\n * @return {Array.} - All token names that should not be minimized.\r\n */\r\n static get allTokens() {\r\n return allTokens;\r\n }\r\n\r\n /**\r\n * Get value from the cell reference\r\n * @param ref\r\n * @return {*}\r\n */\r\n getCell(ref) {\r\n // console.log('get cell', JSON.stringify(ref));\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n return this.onCell(ref);\r\n }\r\n\r\n /**\r\n * Get values from the range reference.\r\n * @param ref\r\n * @return {*}\r\n */\r\n getRange(ref) {\r\n // console.log('get range', JSON.stringify(ref));\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n return this.onRange(ref)\r\n }\r\n\r\n /**\r\n * TODO:\r\n * Get references or values from a user defined variable.\r\n * @param name\r\n * @return {*}\r\n */\r\n getVariable(name) {\r\n // console.log('get variable', name);\r\n const res = {ref: this.onVariable(name, this.position.sheet, this.position)};\r\n if (res.ref == null)\r\n return FormulaError.NAME;\r\n return res;\r\n }\r\n\r\n /**\r\n * Retrieve values from the given reference.\r\n * @param valueOrRef\r\n * @return {*}\r\n */\r\n retrieveRef(valueOrRef) {\r\n if (FormulaHelpers.isRangeRef(valueOrRef)) {\r\n return this.getRange(valueOrRef.ref);\r\n }\r\n if (FormulaHelpers.isCellRef(valueOrRef)) {\r\n return this.getCell(valueOrRef.ref)\r\n }\r\n return valueOrRef;\r\n }\r\n\r\n /**\r\n * Call an excel function.\r\n * @param name - Function name.\r\n * @param args - Arguments that pass to the function.\r\n * @return {*}\r\n */\r\n _callFunction(name, args) {\r\n if (name.indexOf('_xlfn.') === 0)\r\n name = name.slice(6);\r\n name = name.toUpperCase();\r\n // if one arg is null, it means 0 or \"\" depends on the function it calls\r\n const nullValue = this.funsNullAs0.includes(name) ? 0 : '';\r\n\r\n if (!this.funsNeedContextAndNoDataRetrieve.includes(name)) {\r\n // retrieve reference\r\n args = args.map(arg => {\r\n if (arg === null)\r\n return {value: nullValue, isArray: false, omitted: true};\r\n const res = this.utils.extractRefValue(arg);\r\n\r\n if (this.funsPreserveRef.includes(name)) {\r\n return {value: res.val, isArray: res.isArray, ref: arg.ref};\r\n }\r\n return {\r\n value: res.val,\r\n isArray: res.isArray,\r\n isRangeRef: !!FormulaHelpers.isRangeRef(arg),\r\n isCellRef: !!FormulaHelpers.isCellRef(arg)\r\n };\r\n });\r\n }\r\n // console.log('callFunction', name, args)\r\n\r\n if (this.functions[name]) {\r\n let res;\r\n try {\r\n if (!this.funsNeedContextAndNoDataRetrieve.includes(name) && !this.funsNeedContext.includes(name))\r\n res = (this.functions[name](...args));\r\n else\r\n res = (this.functions[name](this, ...args));\r\n } catch (e) {\r\n // allow functions throw FormulaError, this make functions easier to implement!\r\n if (e instanceof FormulaError) {\r\n return e;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n if (res === undefined) {\r\n // console.log(`Function ${name} may be not implemented.`);\r\n if (this.isTest) {\r\n if (!this.logs.includes(name)) this.logs.push(name);\r\n return {value: 0, ref: {}};\r\n }\r\n throw FormulaError.NOT_IMPLEMENTED(name);\r\n }\r\n return res;\r\n } else {\r\n // console.log(`Function ${name} is not implemented`);\r\n if (this.isTest) {\r\n if (!this.logs.includes(name)) this.logs.push(name);\r\n return {value: 0, ref: {}};\r\n }\r\n throw FormulaError.NOT_IMPLEMENTED(name);\r\n }\r\n }\r\n\r\n async callFunctionAsync(name, args) {\r\n const awaitedArgs = [];\r\n for (const arg of args) {\r\n awaitedArgs.push(await arg);\r\n }\r\n const res = await this._callFunction(name, awaitedArgs);\r\n return FormulaHelpers.checkFunctionResult(res)\r\n }\r\n\r\n callFunction(name, args) {\r\n if (this.async) {\r\n return this.callFunctionAsync(name, args);\r\n } else {\r\n const res = this._callFunction(name, args);\r\n return FormulaHelpers.checkFunctionResult(res);\r\n }\r\n }\r\n\r\n /**\r\n * Return currently supported functions.\r\n * @return {this}\r\n */\r\n supportedFunctions() {\r\n const supported = [];\r\n const functions = Object.keys(this.functions);\r\n functions.forEach(fun => {\r\n try {\r\n const res = this.functions[fun](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r\n if (res === undefined) return;\r\n supported.push(fun);\r\n } catch (e) {\r\n if (e instanceof Error)\r\n supported.push(fun);\r\n }\r\n });\r\n return supported.sort();\r\n }\r\n\r\n /**\r\n * Check and return the appropriate formula result.\r\n * @param result\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array\r\n * @return {*}\r\n */\r\n checkFormulaResult(result, allowReturnArray = false) {\r\n const type = typeof result;\r\n // number\r\n if (type === 'number') {\r\n if (isNaN(result)) {\r\n return FormulaError.VALUE;\r\n } else if (!isFinite(result)) {\r\n return FormulaError.NUM;\r\n }\r\n result += 0; // make -0 to 0\r\n } else if (type === 'object') {\r\n if (result instanceof FormulaError)\r\n return result;\r\n if (allowReturnArray) {\r\n if (result.ref) {\r\n result = this.retrieveRef(result);\r\n }\r\n // Disallow union, and other unknown data types.\r\n // e.g. `=(A1:C1, A2:E9)` -> #VALUE!\r\n if (typeof result === 'object' && !Array.isArray(result) && result != null) {\r\n return FormulaError.VALUE;\r\n }\r\n\r\n } else {\r\n if (result.ref && result.ref.row && !result.ref.from) {\r\n // single cell reference\r\n result = this.retrieveRef(result);\r\n } else if (result.ref && result.ref.from && result.ref.from.col === result.ref.to.col) {\r\n // single Column reference\r\n result = this.retrieveRef({\r\n ref: {\r\n row: result.ref.from.row, col: result.ref.from.col\r\n }\r\n });\r\n } else if (Array.isArray(result)) {\r\n result = result[0][0]\r\n } else {\r\n // array, range reference, union collections\r\n return FormulaError.VALUE;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse an excel formula.\r\n * @param {string} inputText\r\n * @param {{row: number, col: number}} [position] - The position of the parsed formula\r\n * e.g. {row: 1, col: 1}\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,\r\n * or data validation formulas.\r\n * @returns {*}\r\n */\r\n parse(inputText, position, allowReturnArray = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.position = position;\r\n this.async = false;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n let res;\r\n try {\r\n res = this.parser.formulaWithBinaryOp();\r\n res = this.checkFormulaResult(res, allowReturnArray);\r\n if (res instanceof FormulaError) {\r\n return res;\r\n }\r\n } catch (e) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n if (this.parser.errors.length > 0) {\r\n const error = this.parser.errors[0];\r\n throw Utils.formatChevrotainError(error, inputText);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Parse an excel formula asynchronously.\r\n * Use when providing custom async functions.\r\n * @param {string} inputText\r\n * @param {{row: number, col: number}} [position] - The position of the parsed formula\r\n * e.g. {row: 1, col: 1}\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,\r\n * or data validation formulas.\r\n * @returns {*}\r\n */\r\n async parseAsync(inputText, position, allowReturnArray = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.position = position;\r\n this.async = true;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n let res;\r\n try {\r\n res = await this.parser.formulaWithBinaryOp();\r\n res = this.checkFormulaResult(res, allowReturnArray);\r\n if (res instanceof FormulaError) {\r\n return res;\r\n }\r\n } catch (e) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n if (this.parser.errors.length > 0) {\r\n const error = this.parser.errors[0];\r\n throw Utils.formatChevrotainError(error, inputText);\r\n }\r\n return res;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n FormulaParser,\r\n FormulaHelpers,\r\n};\r\n","const FormulaError = require('../../formulas/error');\r\nconst {FormulaHelpers, Types, Address} = require('../../formulas/helpers');\r\nconst {Prefix, Postfix, Infix, Operators} = require('../../formulas/operators');\r\nconst Collection = require('../type/collection');\r\nconst MAX_ROW = 1048576, MAX_COLUMN = 16384;\r\n\r\nclass Utils {\r\n\r\n constructor(context) {\r\n this.context = context;\r\n }\r\n\r\n columnNameToNumber(columnName) {\r\n return Address.columnNameToNumber(columnName);\r\n }\r\n\r\n /**\r\n * Parse the cell address only.\r\n * @param {string} cellAddress\r\n * @return {{ref: {col: number, address: string, row: number}}}\r\n */\r\n parseCellAddress(cellAddress) {\r\n const res = cellAddress.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);\r\n // console.log('parseCellAddress', cellAddress);\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(res[2]),\r\n row: +res[4]\r\n },\r\n };\r\n }\r\n\r\n parseRow(row) {\r\n const rowNum = +row;\r\n if (!Number.isInteger(rowNum))\r\n throw Error('Row number must be integer.');\r\n return {\r\n ref: {\r\n col: undefined,\r\n row: +row\r\n },\r\n };\r\n }\r\n\r\n parseCol(col) {\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(col),\r\n row: undefined,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Apply + or - unary prefix.\r\n * @param {Array.} prefixes\r\n * @param {*} value\r\n * @return {*}\r\n */\r\n applyPrefix(prefixes, value) {\r\n this.extractRefValue(value);\r\n return 0;\r\n }\r\n\r\n applyPostfix(value, postfix) {\r\n this.extractRefValue(value);\r\n return 0\r\n }\r\n\r\n applyInfix(value1, infix, value2) {\r\n this.extractRefValue(value1);\r\n this.extractRefValue(value2);\r\n return 0;\r\n }\r\n\r\n applyIntersect(refs) {\r\n // console.log('applyIntersect', refs);\r\n if (this.isFormulaError(refs[0]))\r\n return refs[0];\r\n if (!refs[0].ref)\r\n throw Error(`Expecting a reference, but got ${refs[0]}.`);\r\n // a intersection will keep track of references, value won't be retrieved here.\r\n let maxRow, maxCol, minRow, minCol, sheet, res; // index start from 1\r\n // first time setup\r\n const ref = refs.shift().ref;\r\n sheet = ref.sheet;\r\n if (!ref.from) {\r\n // check whole row/col reference\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n\r\n // cell ref\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n // update\r\n maxRow = Math.max(ref.from.row, ref.to.row);\r\n minRow = Math.min(ref.from.row, ref.to.row);\r\n maxCol = Math.max(ref.from.col, ref.to.col);\r\n minCol = Math.min(ref.from.col, ref.to.col);\r\n }\r\n\r\n let err;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n ref = ref.ref;\r\n if (!ref) throw Error(`Expecting a reference, but got ${ref}.`);\r\n if (!ref.from) {\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n // cell ref\r\n if (ref.row > maxRow || ref.row < minRow || ref.col > maxCol || ref.col < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n const refMaxRow = Math.max(ref.from.row, ref.to.row);\r\n const refMinRow = Math.min(ref.from.row, ref.to.row);\r\n const refMaxCol = Math.max(ref.from.col, ref.to.col);\r\n const refMinCol = Math.min(ref.from.col, ref.to.col);\r\n if (refMinRow > maxRow || refMaxRow < minRow || refMinCol > maxCol || refMaxCol < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n // update\r\n maxRow = Math.min(maxRow, refMaxRow);\r\n minRow = Math.max(minRow, refMinRow);\r\n maxCol = Math.min(maxCol, refMaxCol);\r\n minCol = Math.max(minCol, refMinCol);\r\n }\r\n });\r\n if (err) return err;\r\n // check if the ref can be reduced to cell reference\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n sheet,\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n sheet,\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n\r\n if (!res.ref.sheet)\r\n delete res.ref.sheet;\r\n return res;\r\n }\r\n\r\n applyUnion(refs) {\r\n const collection = new Collection();\r\n for (let i = 0; i < refs.length; i++) {\r\n if (this.isFormulaError(refs[i]))\r\n return refs[i];\r\n collection.add(this.extractRefValue(refs[i]).val, refs[i]);\r\n }\r\n\r\n // console.log('applyUnion', unions);\r\n return collection;\r\n }\r\n\r\n /**\r\n * Apply multiple references, e.g. A1:B3:C8:A:1:.....\r\n * @param refs\r\n // * @return {{ref: {from: {col: number, row: number}, to: {col: number, row: number}}}}\r\n */\r\n applyRange(refs) {\r\n let res, maxRow = -1, maxCol = -1, minRow = MAX_ROW + 1, minCol = MAX_COLUMN + 1;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n // row ref is saved as number, parse the number to row ref here\r\n if (typeof ref === 'number') {\r\n ref = this.parseRow(ref);\r\n }\r\n ref = ref.ref;\r\n // check whole row/col reference\r\n if (ref.row === undefined) {\r\n minRow = 1;\r\n maxRow = MAX_ROW\r\n }\r\n if (ref.col === undefined) {\r\n minCol = 1;\r\n maxCol = MAX_COLUMN;\r\n }\r\n\r\n if (ref.row > maxRow)\r\n maxRow = ref.row;\r\n if (ref.row < minRow)\r\n minRow = ref.row;\r\n if (ref.col > maxCol)\r\n maxCol = ref.col;\r\n if (ref.col < minCol)\r\n minCol = ref.col;\r\n });\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Throw away the refs, and retrieve the value.\r\n * @return {{val: *, isArray: boolean}}\r\n */\r\n extractRefValue(obj) {\r\n const isArray = Array.isArray(obj);\r\n if (obj.ref) {\r\n // can be number or array\r\n return {val: this.context.retrieveRef(obj), isArray};\r\n\r\n }\r\n return {val: obj, isArray};\r\n }\r\n\r\n /**\r\n *\r\n * @param array\r\n * @return {Array}\r\n */\r\n toArray(array) {\r\n // TODO: check if array is valid\r\n // console.log('toArray', array);\r\n return array;\r\n }\r\n\r\n /**\r\n * @param {string} number\r\n * @return {number}\r\n */\r\n toNumber(number) {\r\n return Number(number);\r\n }\r\n\r\n /**\r\n * @param {string} string\r\n * @return {string}\r\n */\r\n toString(string) {\r\n return string.substring(1, string.length - 1) .replace(/\"\"/g, '\"');\r\n }\r\n\r\n /**\r\n * @param {string} bool\r\n * @return {boolean}\r\n */\r\n toBoolean(bool) {\r\n return bool === 'TRUE';\r\n }\r\n\r\n /**\r\n * Parse an error.\r\n * @param {string} error\r\n * @return {FormulaError}\r\n */\r\n toError(error) {\r\n return new FormulaError(error.toUpperCase());\r\n }\r\n\r\n isFormulaError(obj) {\r\n return obj instanceof FormulaError;\r\n }\r\n}\r\n\r\nmodule.exports = Utils;\r\n","const FormulaError = require('../../formulas/error');\r\nconst {FormulaHelpers} = require('../../formulas/helpers');\r\nconst {Parser} = require('../parsing');\r\nconst lexer = require('../lexing');\r\nconst Utils = require('./utils');\r\nconst {formatChevrotainError} = require('../utils');\r\n\r\nclass DepParser {\r\n\r\n /**\r\n *\r\n * @param {{onVariable: Function}} [config]\r\n */\r\n constructor(config) {\r\n this.data = [];\r\n this.utils = new Utils(this);\r\n config = Object.assign({\r\n onVariable: () => null,\r\n }, config);\r\n this.utils = new Utils(this);\r\n\r\n this.onVariable = config.onVariable;\r\n this.functions = {}\r\n\r\n this.parser = new Parser(this, this.utils);\r\n }\r\n\r\n /**\r\n * Get value from the cell reference\r\n * @param ref\r\n * @return {*}\r\n */\r\n getCell(ref) {\r\n // console.log('get cell', JSON.stringify(ref));\r\n if (ref.row != null) {\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n const idx = this.data.findIndex(element => {\r\n return (element.from && element.from.row <= ref.row && element.to.row >= ref.row\r\n && element.from.col <= ref.col && element.to.col >= ref.col)\r\n || (element.row === ref.row && element.col === ref.col && element.sheet === ref.sheet)\r\n });\r\n if (idx === -1)\r\n this.data.push(ref);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Get values from the range reference.\r\n * @param ref\r\n * @return {*}\r\n */\r\n getRange(ref) {\r\n // console.log('get range', JSON.stringify(ref));\r\n if (ref.from.row != null) {\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n\r\n const idx = this.data.findIndex(element => {\r\n return element.from && element.from.row === ref.from.row && element.from.col === ref.from.col\r\n && element.to.row === ref.to.row && element.to.col === ref.to.col;\r\n });\r\n if (idx === -1)\r\n this.data.push(ref);\r\n }\r\n return [[0]]\r\n }\r\n\r\n /**\r\n * TODO:\r\n * Get references or values from a user defined variable.\r\n * @param name\r\n * @return {*}\r\n */\r\n getVariable(name) {\r\n // console.log('get variable', name);\r\n const res = {ref: this.onVariable(name, this.position.sheet)};\r\n if (res.ref == null)\r\n return FormulaError.NAME;\r\n if (FormulaHelpers.isCellRef(res))\r\n this.getCell(res.ref);\r\n else {\r\n this.getRange(res.ref);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Retrieve values from the given reference.\r\n * @param valueOrRef\r\n * @return {*}\r\n */\r\n retrieveRef(valueOrRef) {\r\n if (FormulaHelpers.isRangeRef(valueOrRef)) {\r\n return this.getRange(valueOrRef.ref);\r\n }\r\n if (FormulaHelpers.isCellRef(valueOrRef)) {\r\n return this.getCell(valueOrRef.ref)\r\n }\r\n return valueOrRef;\r\n }\r\n\r\n /**\r\n * Call an excel function.\r\n * @param name - Function name.\r\n * @param args - Arguments that pass to the function.\r\n * @return {*}\r\n */\r\n callFunction(name, args) {\r\n args.forEach(arg => {\r\n if (arg == null)\r\n return;\r\n this.retrieveRef(arg);\r\n });\r\n return {value: 0, ref: {}};\r\n }\r\n\r\n /**\r\n * Check and return the appropriate formula result.\r\n * @param result\r\n * @return {*}\r\n */\r\n checkFormulaResult(result) {\r\n this.retrieveRef(result);\r\n }\r\n\r\n /**\r\n * Parse an excel formula and return the dependencies\r\n * @param {string} inputText\r\n * @param {{row: number, col: number, sheet: string}} position\r\n * @param {boolean} [ignoreError=false] if true, throw FormulaError when error occurred.\r\n * if false, the parser will return partial dependencies.\r\n * @returns {Array.<{}>}\r\n */\r\n parse(inputText, position, ignoreError = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.data = [];\r\n this.position = position;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n try {\r\n const res = this.parser.formulaWithBinaryOp();\r\n this.checkFormulaResult(res);\r\n } catch (e) {\r\n if (!ignoreError) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n }\r\n if (this.parser.errors.length > 0 && !ignoreError) {\r\n const error = this.parser.errors[0];\r\n throw formatChevrotainError(error, inputText);\r\n }\r\n\r\n return this.data;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n DepParser,\r\n};\r\n","const {FormulaParser} = require('./grammar/hooks');\r\nconst {DepParser} = require('./grammar/dependency/hooks');\r\nconst SSF = require('./ssf/ssf');\r\nconst FormulaError = require('./formulas/error');\r\n\r\n// const funs = new FormulaParser().supportedFunctions();\r\n// console.log('Supported:', funs.join(', '),\r\n// `\\nTotal: ${funs.length}/477, ${funs.length/477*100}% implemented.`);\r\n\r\n\r\nObject.assign(FormulaParser, {\r\n MAX_ROW: 1048576,\r\n MAX_COLUMN: 16384,\r\n SSF,\r\n DepParser,\r\n FormulaError, ...require('./formulas/helpers')\r\n});\r\nmodule.exports = FormulaParser;\r\n","import Parser, { DepParser } from 'fast-formula-parser';\nexport class FormulaParser {\n parser;\n depParser;\n root;\n constructor(root) {\n this.root = root;\n this.parser = new Parser({\n onCell: ({ col, row }) => {\n const cell = this.root.data[row - 1][col - 1];\n const cellValue = cell.resultValue.length > 0 ? cell.resultValue : cell.value;\n if (cellValue && isNaN(Number(cellValue)) === false)\n return Number(cellValue);\n return this.root.data[row - 1][col - 1].resultValue ?? '';\n },\n });\n this.depParser = new DepParser({});\n this.depParser;\n }\n}\n","import { Editor } from \"./components/editor\";\nimport { Scroller } from \"./components/scroller\";\nimport { Sheet } from \"./components/sheet\";\nimport { Table } from \"./components/table\";\nimport { Toolbar } from \"./components/toolbar\";\nimport { Cell, } from \"./modules/cell\";\nimport { Config, } from \"./modules/config\";\nimport { Selection } from \"./modules/selection\";\nimport { Styles } from \"./modules/styles\";\nimport { Viewport } from \"./modules/viewport\";\nimport \"./scss/main.scss\";\nimport { createSampleData } from \"./utils/createData\";\nimport { Cache, CachedColumn, CachedRow } from \"./modules/cache\";\nimport { Row } from \"./modules/row\";\nimport { Column } from \"./modules/column\";\nimport { ColumnsBar } from \"./components/columnsBar\";\nimport { RowsBar } from \"./components/rowsBar\";\nimport { EventTypes, Events } from \"./modules/events\";\nimport { Clipboard } from \"./modules/clipboard\";\nimport { FormulaParser } from \"./modules/formulaParser\";\nexport const CSS_PREFIX = \"modern_sc_\";\nexport default class Spreadsheet {\n table;\n scroller;\n toolbar;\n rowsBar;\n columnsBar;\n sheet;\n editor;\n styles;\n config;\n data;\n viewport;\n selection;\n cache;\n events;\n clipboard;\n formulaParser;\n constructor(target, props) {\n const data = createSampleData(40, 40);\n const config = this.makeConfigFromData(data, props?.view ?? { height: 600, width: 800 });\n if (props?.view) {\n config.view = props.view;\n }\n this.config = new Config(config);\n this.config.onCellClick = props?.onCellClick ?? null;\n this.config.onSelectonChange = props?.onSelectionChange ?? null;\n this.config.onCellChange = props?.onCellChange ?? null;\n this.config.onCopy = props?.onCopy ?? null;\n this.rowsBar = new RowsBar(this);\n this.columnsBar = new ColumnsBar(this);\n this.sheet = new Sheet(this);\n this.table = new Table(this);\n this.scroller = new Scroller(this);\n this.toolbar = new Toolbar(this);\n this.editor = new Editor(this);\n this.cache = this.getInitialCache();\n this.viewport = new Viewport(this, this.scroller.getViewportBoundlingRect());\n this.selection = new Selection();\n this.events = new Events(this);\n this.clipboard = new Clipboard(this);\n this.formulaParser = new FormulaParser(this);\n this.data = data;\n this.styles = new Styles();\n this.buildComponent();\n this.setElementsPositions();\n this.appendTableToTarget(target);\n this.renderSheet();\n this.renderColumnsBar();\n this.renderRowsBar();\n }\n setRowsBarPosition() {\n const top = this.columnsBar.height + this.toolbar.height;\n const left = 0;\n this.rowsBar.setElementPosition(top, left);\n }\n setColumnsBarPosition() {\n const top = this.toolbar.height;\n const left = this.rowsBar.width;\n this.columnsBar.setElementPosition(top, left);\n }\n setElementsPositions() {\n this.setRowsBarPosition();\n this.setColumnsBarPosition();\n }\n getInitialCache() {\n const cachedCols = [];\n let currentWidth = 0;\n for (let i = 0; i <= this.config.columns.length - 1; i++) {\n const col = this.config.columns[i];\n currentWidth += col.width;\n const cacheCol = new CachedColumn({\n xPos: currentWidth,\n colIdx: i,\n });\n cachedCols.push(cacheCol);\n }\n const cachedRows = [];\n let currentHeight = 0;\n for (let i = 0; i <= this.config.rows.length - 1; i++) {\n const row = this.config.rows[i];\n currentHeight += row.height;\n const cacheRow = new CachedRow({\n yPos: currentHeight,\n rowIdx: i,\n });\n cachedRows.push(cacheRow);\n }\n const cache = new Cache({\n columns: cachedCols,\n rows: cachedRows,\n });\n return cache;\n }\n buildComponent() {\n const content = document.createElement(\"div\"); //* Abstract\n content.style.top = this.columnsBarHeight + \"px\";\n content.style.left = this.rowsBarWidth + \"px\";\n content.appendChild(this.sheet.element);\n content.classList.add(CSS_PREFIX + \"content\");\n this.table.element.appendChild(this.toolbar.element);\n this.table.element.appendChild(this.rowsBar.element);\n this.table.element.appendChild(this.columnsBar.element);\n this.table.element.appendChild(content);\n this.table.element.appendChild(this.scroller.element);\n this.table.element.append(this.editor.element);\n }\n /**Destroy spreadsheet DOM element.\n *\n * May be usefull when need to rerender component.\n */\n destroy() {\n this.table.element.remove();\n }\n appendTableToTarget(target) {\n if (typeof target === \"string\") {\n const element = document.querySelector(target);\n if (!element)\n throw new Error(`Element with selector ${target} is not finded in DOM.\\n Make sure it exists.`);\n element?.appendChild(this.table.element);\n }\n if (target instanceof HTMLElement) {\n target.append(this.table.element);\n }\n }\n /** Canvas rendering context 2D.\n *\n * Abble to draw on canvas with default CanvasAPI methods\n */\n get ctx() {\n return this.sheet.ctx;\n }\n get viewProps() {\n return this.config.view;\n }\n get columnsBarHeight() {\n return this.columnsBar.height;\n }\n get rowsBarWidth() {\n return this.rowsBar.width;\n }\n get toolbarHeight() {\n return this.toolbar.height;\n }\n /** Focusing on interactive part of spreadsheet */\n focusTable() {\n this.scroller.element.focus();\n }\n getCellByCoords(x, y) {\n return this.sheet.getCellByCoords(x, y);\n }\n getCell(position) {\n const { column, row } = position;\n return this.data[row][column];\n }\n changeCellValues(position, values, enableCallback = true) {\n const { column, row } = position;\n this.data[row][column].changeValues(values);\n this.events.dispatch({\n type: EventTypes.CELL_CHANGE,\n cell: this.data[row][column],\n enableCallback: enableCallback\n });\n this.renderCell(row, column);\n }\n changeCellStyles(position, styles) {\n const { column, row } = position;\n this.data[row][column].changeStyles(styles);\n this.renderCell(row, column);\n }\n applyActionToRange(range, callback) {\n const fromRow = Math.min(range.from.row, range.to.row);\n const toRow = Math.max(range.from.row, range.to.row);\n const fromCol = Math.min(range.from.column, range.to.column);\n const toCol = Math.max(range.from.column, range.to.column);\n for (let row = fromRow; row <= toRow; row++) {\n for (let col = fromCol; col <= toCol; col++) {\n const cell = this.data[row][col];\n callback(cell);\n }\n }\n }\n deleteSelectedCellsValues() {\n if (this.selection.selectedRange !== null) {\n this.applyActionToRange(this.selection.selectedRange, (cell) => {\n this.changeCellValues(cell.position, {\n displayValue: \"\",\n resultValue: \"\",\n value: \"\",\n });\n });\n }\n else {\n if (!this.selection.selectedCell)\n return;\n this.changeCellValues(this.selection.selectedCell, {\n displayValue: \"\",\n resultValue: \"\",\n value: \"\",\n });\n }\n }\n showEditor(position, initialString) {\n this.editor.show(position, initialString);\n }\n renderSheet() {\n this.sheet.renderSheet();\n }\n renderSelection() {\n this.sheet.renderSelection();\n }\n renderColumnsBar() {\n this.columnsBar.renderBar();\n }\n renderRowsBar() {\n this.rowsBar.renderBar();\n }\n renderCell(row, col) {\n this.data[row][col].render(this);\n }\n loadData(data) {\n const rowsLength = data.length;\n const colsLength = data[0] ? data[0].length : 0;\n this.data = [];\n const formattedData = [];\n // Transform serialized objects to Cells\n for (let row = 0; row < rowsLength; row++) {\n const innerRow = [];\n for (let col = 0; col < colsLength; col++) {\n const cell = data[row][col];\n innerRow.push(new Cell({\n displayValue: cell.displayValue,\n position: cell.position,\n resultValue: cell.resultValue,\n value: cell.value,\n style: cell.style,\n }));\n }\n formattedData.push(innerRow);\n }\n const config = this.makeConfigFromData(formattedData, this.config.view);\n config.onCellChange = this.config.onCellChange;\n config.onCellClick = this.config.onCellClick;\n config.onCopy = this.config.onCopy;\n config.onSelectonChange = this.config.onSelectonChange;\n this.data = formattedData;\n this.selection.selectedCell = null;\n this.selection.selectedRange = null;\n this.config = config;\n this.cache = this.getInitialCache();\n this.scroller.updateScrollerSize();\n this.viewport = new Viewport(this, this.scroller.getViewportBoundlingRect());\n this.renderSheet();\n return this;\n }\n makeConfigFromData(data, view) {\n const lastRowIdx = data.length - 1;\n const lastColIdx = data[0] ? data[0].length : 0;\n const rows = [];\n for (let row = 0; row < lastRowIdx; row++) {\n rows.push(new Row({\n height: 40,\n title: String(row),\n }));\n }\n const columns = [];\n for (let col = 0; col < lastColIdx; col++) {\n columns.push(new Column({\n width: 150,\n title: String(col),\n }));\n }\n const config = new Config({\n view,\n rows,\n columns,\n onCellClick: null,\n });\n return config;\n }\n serializeData() {\n const rowsLength = this.data.length;\n const colsLength = this.data[0] ? this.data[0].length : 0;\n const cellsArray = [];\n for (let row = 0; row < rowsLength; row++) {\n const innerRow = [];\n for (let col = 0; col < colsLength; col++) {\n innerRow.push(this.data[row][col].getSerializableCell());\n }\n cellsArray.push(innerRow);\n }\n return cellsArray;\n }\n}\nexport * from \"./modules/cache\";\nexport * from \"./modules/cell\";\nexport * from \"./modules/column\";\nexport * from \"./modules/config\";\nexport * from \"./modules/renderBox\";\nexport * from \"./modules/row\";\nexport * from \"./modules/selection\";\nexport * from \"./modules/styles\";\nexport * from \"./modules/viewport\";\nexport * from \"./utils/createData\";\n"],"names":["EventTypes","Events","root","__publicField","event","scroller","offsetX","offsetY","clickedCell","cell","selection","Selection","_b","_a","enableCallback","range","data","dataAsString","action","err","RenderBox","config","cellPosition","column","x","row","y","Editor","key","target","element","CSS_PREFIX","position","initialString","height","width","checkEqualCellSelections","selection1","selection2","Scroller","lastSelectedCell","isRangeChanged","newSelection","keysRegex","isPressedLetterKey","cells","from","to","rect","horizontalScroller","verticalScroller","mode","scrollTop","scrollLeft","bottom","right","groupScrollers","stack","acc","curr","totalHeight","totalWidth","CellStyles","props","Position","SerializableCell","Cell$2","styles","values","parser","renderBox","ctx","Sheet$2","canvas","col","selectedCell","selectedRange","startRow","startCol","lastRow","lastCol","startCellBox","box","firstRowIdx","lastColIdx","lastRowIdx","firstColIdx","Table","container","sizes","Toolbar","toolbarElement","Config","Styles","Viewport","Column$2","Row","createSampleData","rows","columns","fillCellsByCoords","innerRow","value","Cell","createSampleConfig","rowsArr","i","rowItem","colsArr","colItem","Column","makeSpreadsheetConfigAndData","CachedColumn","CachedRow","Cache","initial","rowIdx","colIdx","ColumnsBar","top","left","isColSelected","specialX","RowsBar","isRowSeleted","specialY","Clipboard","mapedData","item","arrayOfCells","cellProps","rowsLength","colsLength","j","savedCell","Collection$3","refs","obj","ref","collection","Collection","FormulaError","require$$0","require$$1","Types","Factorials","ReversedTypes","FormulaHelpers","result","arr1","val","isArray","allowBoolean","number","params","valueType","allowUnion","hook","defValue","minSize","param","isCellRef","isRangeRef","isUnion","isLiteral","info","type","flat","allowSingleValue","paramType","variable","context","range1","range2","Address","H","arg","res","WildCard","lookupText","flags","Criteria","criteria","upper","op","dividend","name","modulo","columnName","len","code","rowOffset","colOffset","helpers","error","msg","details","functionName","args","SSF$1","SSF","_strrev","o","fill","c","l","pad0","v","d","t","pad_","rpad_","pad0r1","pad0r2","p2_32","pad0r","isgeneral","s","days","months","init_table","table_fmt","frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","q","parse_date_code","opts","b2","date","time","dow","dout","out","fix_hijri","basedate","dnthresh","base1904","datenum_local","date1904","epoch","general_fmt_int","general_fmt_num","gnr1","gnr2","gnr4","gnr5","gnr6","gfn2","w","gfn5","gfn3","gfn4","V","general_fmt","format","write_date","fmt","ss0","ss","tt","outl","commaify","write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","r","aval","sign","den","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","split_fmt","in_str","abstime","fmt_is_date","eval_fmt","flen","lst","dt","hr","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","cfregex","cfregex2","chkcond","thresh","choose_fmt","f","lat","m1","m2","load_entry","tbl","ssf","defaultResult","singleUnitStrs","placeNameStrs","num2Word","nums","maxLen","overflowIndex","overflowNums","remainingNumbs","digit","grammarFix","neungLen","combine","baht","satang","bahttext","num","bahtStr","satangStr","bahtArr","satangArr","module","require$$2","require$$3","charsets","toFull","set","toHalf","re","way","sets","toFullWidth","str0","toHalfWidth","TextFunctions","text","decimals","decimalString","text1","text2","findText","withinText","startNum","noCommas","comma","numChars","decimalSeparator","groupSeparator","leftParenOrMinus","rightParen","percent","letter","old_text","start_num","num_chars","new_text","arr","number_times","findTextRegex","formatText","e","Prefix","prefixes","prefix","Postfix","postfix","type2Number","Infix","value1","infix","value2","isArray1","isArray2","type1","type2","operators","fd","factorial","n","factorialDouble","MathFunctions","functionNum","options","ref1","radix","minLength","significance","absSignificance","times","offset","numberChosen","nFactorial","kFactorial","radians","a","b","array","numRow","numCol","det","diagLeft","diagRight","array1","array2","aNumRows","aNumCols","bNumRows","bNumCols","m","v1","v2","divisor","multiple","numbers","numerator","denominator","dimension","matrix","rowArr","temp","power","product","parsedNumber","degrees","form","digits","roman","multiplier","coefficients","coefficient","sumRange","ranges","isCriteriaArray","sum","rowNum","colNum","valueToAdd","arrays","arrayX","arrayY","math","MAX_NUMBER","TrigFunctions","trigonometry","getNumLogicalValue","numTrue","numFalse","LogicalFunctions","logicalTest","valueIfTrue","valueIfFalse","valueIfError","valueIfNa","logical","factory","exports","BESSEL","M","_horner","z","_bessel_iter","f0","f1","tdx","f2","_bessel_wrap","bessel0","bessel1","nonzero","b0","b1","besselj","W","b0_a1a","b0_a2a","b0_a1b","b0_a2b","a1","a2","xx","b1_a1a","b1_a2a","b1_a1b","b1_a2b","ret","jsum","bjp","bj","bjm","tox","bessely","besseli","b0_a","b0_b","b1_a","b1_b","bip","bi","bim","besselk","window","this","jStat","Math","undefined","concat","slice","toString","calcRdx","isFunction","isNumber","toVector","fn","index","submat","ind","nrow","objArr","cols","func","toAlter","ncol","retZero","retOne","retIdent","size","min","max","length","hival","step","current","cnt","start","end","rl","_slice","list","rcSlice","colSlice","rowSlice","nl","ml","diagArray","mat","jProto","funcs","passfunc","self","results","ascNum","clip","mean","tmp","prod","low","high","hash","_arr","logs","meanOfLogs","arrlen","diffs","arrLen","distinctNumbers","numberCounts","sortedDistinctNumbers","numberRanks","currentRank","count","first","last","rank","maxCount","numMaxCount","mode_arr","flag","sumsqerr","samples","dev","median","quantilesArray","alphap","betap","sortedArray","quantileVals","p","aleph","k","gamma","exclusive","realIndex","score","kind","counter","strict","binCnt","binWidth","bins","arr2","u","arr1Len","sq_dev","mu","sigma","skewSum","fullbool","tmpthis","callbackFunction","argsToPass","curriedFunction","vector","cof","ser","x0","x2","xp","gl","gl0","fact","xden","xnum","yi","aln","ap","del","h","ITMAX","an","fpmin","qab","qap","qam","aa","EPS","gln","pp","lna1","afac","isneg","ty","lna","lnb","al","shape","oalph","newthis","vals","fnfunc","alpha","beta","df1","df2","x1","local","scale","dof","rate","ncp","tol","min_iterations","flip","prob","lastvalue","std","dof2","betinc","eps","a0","m9","c9","betacdf","N","scaledPDF","samplesDone","scaledCDF","factor","sumarr","L","lam","U","slam","loglam","invalpha","vr","us","laplaceSign","tukeyWprob","nleg","ihalf","C1","C2","C3","bb","wlar","wincr1","wincr2","xleg","aleg","qsqz","pr_w","wincr","blb","binc","bub","einsum","cc1","wi","elsum","ac","qexpo","pplus","pminus","rinsum","tukeyQinv","p0","q0","p1","q1","p2","q2","p3","q3","p4","q4","c1","c2","c3","c4","c5","vmax","ps","nmeans","df","nlegq","ihalfq","eps1","eps2","dhaf","dquar","deigh","dlarg","ulen1","ulen2","ulen3","ulen4","xlegq","alegq","f2lf","f21","ff4","ulen","ans","otsum","twa1","t1","wprb","rotsum","maxiter","valx0","valx1","iter","xabs","push","isUsable","nrescols","rescols","nnorm","newarr","determinant","submatrix","maug","pivot","y2","maxrow","parts","matrix_mode","R","T","xv","xk","qr2","R_I","I","Aj","cAi","Ij","cIi","qr_solve","array_mode","QR","attrs","Q1","R1","RI","Q2","condition","ev","maxim","theta","t_j","u_j","order","k1","k2","u_j1","k3","k4","h1","g","X","pos","h_min","y1","F","dF","dl","temp1","temp2","Y","Bt","C","Vt","sides","zscore","tscore","expVar","sample","sampMean","sampSampMean","tmpargs","unexpVar","anovafscore","fscore","mean1","mean2","n1","n2","sd","qscore","means","change","pvalue","differenceOfProportions","pooled","se","sub_regress","exog","var_count","modelList","endog_index","exog_index","ols","endog","nobs","df_model","df_resid","coef","predict","resid","ybar","SSE","SSR","SST","R2","t_test","model","subModelList","sigmaHat","seBetaHat","mod","tStatistic","pValue","leftppf","interval95","F_test","F_statistic","fcdf","ols_wrap","ttest","ftest","adjust_R2","matrixRows","jMat","pass","jMatX","jMatY","innerinv","xtransp","next","compile","jMatYBar","yAverage","covar","sds","ts","inner","yBar","ssr","sse","sst","bessel","require$$4","MAX_OCT","MIN_OCT","MAX_BIN","MIN_BIN","numberRegex","IMWithoutRealRegex","IMRegex","parseIM","textOrNumber","real","im","unit","match","EngineeringFunctions","numberStr","places","number1","number2","shiftAmount","realNum","iNum","suffix","lowerLimit","upperLimit","ifNegative","toDecimal","toBinary","iNumber","realInput","imaginaryInput","imaginary","iNumber1","iNumber2","res1","unit1","res2","unit2","argument","realSum","imSum","prevUnit","isNegative","toHex","engineering","ReferenceFunctions","rowNumber","columnNumber","absNum","sheetText","indexNum","lookupValue","tableArray","rowIndexNum","rangeLookup","lookupType","prevValue","currValue","areaNum","colIndexNum","currRow","reference","error2Number","InfoFunctions","infoType","information","SQRT2PI","DistributionFunctions","cumulative","probability","numberS","trials","probabilityS","numberS2","degFreedom","actualRange","expectedRange","actual","expected","xsqr","filterArr1","filterArr2","lambda","d1","d2","x1Mean","x2Mean","s1","s2","e2y","knownYs","knownXs","filteredY","filteredX","xAllEqual","yMean","xMean","dataArray","binsArray","binsArrayFiltered","filterArr","knownY","knownX","newX","useConst","isKnownXOmitted","avg_x","avg_y","avg_xy","avg_xx","new_y","sample_s","number_sample","population_s","number_pop","pdf","cdf","standard_dev","number_f","number_s","probability_s","deg_freedom","distribution","StatisticalFunctions","avg","averageRange","statistical","MS_PER_DAY","d1900","WEEK_STARTS","WEEK_TYPES","WEEKEND_TYPES","timeRegex","dateRegex1","dateRegex2","dateRegex3","parseSimplifiedDate","fmt1","fmt2","fmt3","parseTime","minutes","seconds","ampm","now","toSerial","addOn","toDate","serial","parseDateWithExtra","serialOrString","isDateGiven","parseDate","compareDateIgnoreTime","date1","date2","isLeapYear","year","DateFunctions","month","day","startDate","endDate","yearDiff","monthDiff","dayDiff","dateText","method","dayNum","yearStart","holidays","holidaysArr","numWorkDays","found","weekend","weekendArr","skip","hour","minute","second","timeText","returnType","weekTypes","weekStart","basis","sm","sy","ed","em","ey","yLength","years","average","WebFunctions","url","web","VERSION","isEmpty","keys","mapValues","callback","objKeys","currKey","map","flatten","currItem","forEach","iteratorCallback","isObject","colKeys","isString","isUndefined","drop","howMuch","dropRight","filter","predicate","reject","pick","has","prop","contains","find","cloneArr","newArr","cloneObj","clonedObj","findAll","reduce","arrOrObj","iterator","isArr","accumulator","compact","uniq","identity","identities","currIdentity","isRegExp","every","difference","some","indexOf","assign","sources","_i","curSource","currSourceKeys","assignNoOverwrite","defaults","groupBy","groupKeyFunc","currGroupKey","currGroupArr","merge","obj1","obj2","keys2","NOOP","IDENTITY","packArray","holeyArr","orgValue","PRINT_ERROR","PRINT_WARNING","isES2015MapSupported","applyMixins","derivedCtor","baseCtors","baseCtor","baseProto","propName","basePropDescriptor","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","peek","timer","total","RegExpParser","newState","input","addFlag","alts","begin","terms","ASSERT_EXISTS","disjunction","ASSERT_NEVER_REACH_HERE","isBacktracking","atLeast","atMost","atom","complement","digitsCharCodes","whitespaceCodes","wordCharCodes","escapeCode","letterCode","escapedChar","nextChar","isFromSingleChar","isToSingleChar","insertToSet","capturing","groupAst","decimalPatternNoZero","decimalPattern","prevState","howMany","hexString","hexChar","hexDigitPattern","charCode","char","subItem","flagObj","flagKey","BaseRegExpVisitor","node","child","subChild","regExpAstCache","regExpParser","getRegExpAst","regExp","regExpStr","regExpAst","clearRegExpParserCache","__extends","extendStatics","__","complementErrorMessage","failedOptimizationPrefixMsg","getOptimizedStartCodesIndices","ensureOptimizations","ast","firstChars","firstCharOptimizedIndices","msgSuffix","ignoreCase","term","addOptimizedIdxToResult","rangeCode","minOptimizationVal","minUnOptVal","maxUnOptVal","minOptIdx","charCodeToOptimizedIndex","maxOptIdx","currOptIdx","isOptionalQuantifier","isWholeOptional","optimizedCharIdx","handleIgnoreCase","upperChar","lowerChar","findCode","setNode","targetCharCodes","codeOrRange","range_1","targetCode","CharCodeFinder","_super","_this","canMatchCharCode","charCodes","pattern","charCodeFinder","PATTERN","DEFAULT_MODE","MODES","SUPPORT_STICKY","analyzeTokenTypes","tokenTypes","tracer","initCharCodeToOptimizedIndexMap","onlyRelevantTypes","currType","Lexer","hasCustom","allTransformedPatterns","currPattern","regExpSource","addStickyFlag","addStartOfInput","escapedRegExpString","wrappedRegExp","patternIdxToType","patternIdxToGroup","patternIdxToLongerAltIdx","patternIdxToPushMode","patternIdxToPopMode","clazz","groupName","longerAltType","longerAltIdx","patternIdxToCanLineTerminator","lineTerminatorCharCodes","getCharCodes","tokType","checkLineBreaksIssues","patternIdxToIsCustom","patternIdxToShort","emptyGroups","patternIdxToConfig","isCustomPattern","isShortPattern","canBeOptimized","charCodeToPatternIdxToConfig","currTokType","optimizedIdx","addToMapOfArrays","lastOptimizedIdx_1","charOrInt","currOptimizedIdx","optimizedCodes","validatePatterns","validModesNames","errors","missingResult","findMissingPatterns","invalidResult","findInvalidPatterns","validTokenTypes","validateRegExpPattern","findInvalidGroupType","findModesThatDoNotExist","findUnreachablePatterns","withRegExpPatterns","findEndOfInputAnchor","findStartOfInputAnchor","findUnsupportedFlags","findDuplicatePatterns","findEmptyMatchRegExps","tokenTypesWithMissingPattern","LexerDefinitionErrorType","valid","tokenTypesWithInvalidPattern","end_of_input","EndAnchorFinder","invalidRegex","regexpAst","endAnchorVisitor","matchesEmptyString","start_of_input","StartAnchorFinder","startAnchorVisitor","invalidFlags","identicalPatterns","outerType","innerType","duplicatePatterns","currIdenticalSet","setOfIdentical","tokenTypeNames","dupPatternSrc","invalidTypes","group","validModes","invalidModes","canBeTested","noMetaChar","testIdx","tokenType","testTokenType","regExpArray","metaChars","performRuntimeChecks","lexerDefinition","trackLines","lineTerminatorCharacters","currModeValue","currModeName","currIdx","performWarningRuntimeChecks","warnings","hasAnyLineBreak","allTokenTypes","tokTypes","concreteTokenTypes","terminatorCharCodes","currIssue","message","buildLineBreakIssueMessage","warningDescriptor","cloneEmptyGroups","clonedResult","groupKeys","currGroupValue","LineTerminatorOptimizedTester","charsOrCodes","numOrString","charCodeToOptimizedIdxMap","tokenStructuredMatcher","tokInstance","tokConstructor","instanceType","tokenStructuredMatcherNoCategories","token","tokenShortNameIdx","tokenIdxToClass","augmentTokenTypes","tokenTypesAndParents","expandCategories","assignTokenDefaultProps","assignCategoriesMapProp","assignCategoriesTokensProp","categories","searching","newCategories","hasShortKeyProperty","hasCategoriesProperty","hasExtendingTokensTypesProperty","hasExtendingTokensTypesMapProperty","singleAssignCategoriesToksMap","path","nextNode","pathNode","nextCategory","newPath","isTokenType","defaultLexerErrorProvider","fullText","startOffset","line","DEFAULT_LEXER_CONFIG","traceInitVal","actualDefinition","hasOnlySingleMode","allModeNames","currModDef","currModName","currAnalyzeResult_1","allErrMessages","allErrMessagesString","unOptimizedModes","cannotBeOptimized","modeName","initialMode","lexResult","matchAltImage","matchedImage","payload","altPayload","imageLength","newToken","errLength","orgText","orgLength","matchedTokensIndex","guessedNumberOfTokens","matchedTokens","groups","lineTerminatorPattern","currModePatternsLength","currCharCodeToPatternIdxToConfig","modeStack","emptyArray","getPossiblePatterns","getPossiblePatternsSlow","getPossiblePatternsOptimized","possiblePatterns","pop_mode","popToken","msg_1","newMode","modeCanBeOptimized","push_mode","currConfig","nextCharCode","chosenPatternIdxToConfig","chosenPatternsLength","singleCharCode","longerAltConfig","longerAltPattern","numOfLTsInMatch","foundTerminator","lastLTEndOffset","errorStartOffset","errorLine","errorColumn","foundResyncPoint","currConfig_1","pushMode","newLastIndex","lastLTIdx","lastCharIsLT","fixForEndingInLT","oldColumn","image","tokenTypeIdx","startLine","startColumn","tokenVector","tokenToAdd","phaseDesc","phaseImpl","indent","traceMethod","tokenLabel","hasTokenLabel","tokenName","PARENT","CATEGORIES","LABEL","GROUP","PUSH_MODE","POP_MODE","LONGER_ALT","LINE_BREAKS","START_CHARS_HINT","createToken","createTokenInternal","EOF","createTokenInstance","endOffset","endLine","endColumn","tokenMatcher","AbstractProduction","_definition","visitor","NonTerminal","definition","Rule","Alternative","Option","RepetitionMandatory","RepetitionMandatoryWithSeparator","Repetition","RepetitionWithSeparator","Alternation","Terminal","serializeGrammar","topRules","serializeProduction","convertDefinition","serializedTerminal","RestWalker","prevRest","subProd","currRest","terminal","refProd","flatProd","fullOrRest","optionProd","atLeastOneProd","fullAtLeastOneRest","atLeastOneSepProd","fullAtLeastOneSepRest","restForRepetitionWithSeparator","manyProd","fullManyRest","manySepProd","fullManySepRest","orProd","alt","prodWrapper","repSepProd","repSepRest","fullRepSepRest","GAstVisitor","nodeAny","isSequenceProd","isOptionalProd","alreadyVisited","isDirectlyOptional","isBranchingProd","getProductionDslName","DslMethodsCollectorVisitor","subrule","option","manySep","atLeastOne","atLeastOneSep","many","or","collectorVisitor","collectMethods","rule","dslMethods","firstForTerminal","firstForSequence","firstForBranching","firstSet","seq","nextSubProdIdx","hasInnerProdsRemaining","currSubProd","isLastInnerProdOptional","allAlternativesFirsts","innerProd","IN","ResyncFollowsWalker","topProd","followName","buildBetweenProdsFollowPrefix","fullRest","restProd","t_in_topProd_follows","computeAllProdsFollows","topProductions","reSyncFollows","currRefsFollow","occurenceInParent","defaultParserErrorProvider","hasLabel","expectedMsg","firstRedundant","expectedPathsPerAlt","customUserDescription","errPrefix","actualText","errSuffix","allLookAheadPaths","currAltPaths","nextValidTokenSequences","currPath","currTokenType","nextValidSequenceItems","itemMsg","calculatedDescription","expectedIterationPaths","defaultGrammarResolverErrorProvider","topLevelRule","undefinedRule","defaultGrammarValidatorErrorProvider","duplicateProds","getExtraProductionArgument","topLevelName","duplicateProd","dslName","extraArgument","hasExplicitIndex","errMsg","pathMsg","currTok","occurrence","currtok","currMessage","ruleName","pathNames","utils.map","currRule","leftRecursivePath","resolveGrammar","topLevels","errMsgProvider","refResolver","GastRefResolverVisitor","nameToTopRule","ParserDefinitionErrorType","AbstractNextPossibleTokensWalker","NextAfterTokenWalker","AbstractNextTerminalAfterProductionWalker","topRule","NextTerminalAfterManyWalker","firstAfterMany","_first","NextTerminalAfterManySepWalker","firstAfterManySep","NextTerminalAfterAtLeastOneWalker","firstAfterAtLeastOne","NextTerminalAfterAtLeastOneSepWalker","atleastOneSepProd","firstAfterfirstAfterAtLeastOneSep","possiblePathsFrom","targetDef","maxLength","remainingPathWith","nextDef","getAlternativesForProd","alternatives","newDef","currAlt","nextPossibleTokensAfter","initialDef","tokMatcher","maxLookAhead","EXIT_NON_TERMINAL","EXIT_NON_TERMINAL_ARR","EXIT_ALTERNATIVE","foundCompletePath","tokenVectorLength","minimalAlternativesIndex","possiblePaths","currDef","currRuleStack","currOccurrenceStack","nextPath","nextIdx","actualToken","newRuleStack","newOccurrenceStack","nextPathWithout","nextPathWith","secondIteration","separatorGast","nthRepetition","currAltPath","expandTopLevelRule","newCurrOccurrenceStack","PROD_TYPE","getProdType","buildLookaheadFuncForOr","ruleGrammar","maxLookahead","hasPredicates","dynamicTokensEnabled","laFuncBuilder","lookAheadPaths","getLookaheadPathsForOr","areTokenCategoriesNotUsed","buildLookaheadFuncForOptionalProd","prodType","lookaheadBuilder","getLookaheadPathsForOptionalProd","buildAlternativesLookAheadFunc","numOfAlts","areAllOneTokenLookahead","orAlts","predicates","currNumOfPaths","currPredicate","currPathLength","nextToken","singleTokenAlts","choiceToAlt_1","currExtendingType","buildSingleAlternativeLookaheadFunction","numOfPaths","singleTokensTypes","expectedTokenType","expectedTokenUniqueKey_1","choiceToAlt_2","RestDefinitionFinderWalker","targetOccurrence","targetProdType","expectedProdType","InsideDefinitionFinderVisitor","targetRef","expectedProdName","initializeArrayOfArrays","pathToHashKeys","longerKeys","currShorterKey","categoriesKeySuffix","isUniquePrefixHash","altKnownPathsKeys","searchPathKeys","currAltIdx","otherAltKnownPathsKeys","searchIdx","searchKey","lookAheadSequenceFromAlternatives","altsDefs","partialAlts","finalResult","altsHashes","dict","newData","pathLength","currDataset","_loop_1","altIdx","currAltPathsAndSuffixes","currPathIdx","currPathPrefix","suffixDef","prefixKeys","isUnique","currAltResult","containsPath","newPartialPathsAndSuffixes","insideDefVisitor","insideDef","afterDefWalker","afterDef","insideFlat","AlternativeGAST","afterFlat","alternative","searchPath","compareOtherPath","otherPath","searchTok","otherTok","matchingTokens","isStrictPrefixOfPath","other","otherTokType","singleAltPaths","singlePath","validateGrammar","globalMaxLookahead","grammarName","duplicateErrors","currTopLevel","validateDuplicateProductions","leftRecursionErrors","currTopRule","validateNoLeftRecursion","emptyAltErrors","ambiguousAltsErrors","emptyRepetitionErrors","validateEmptyOrAlternative","validateAmbiguousAlternationAlternatives","validateSomeNonEmptyLookaheadPath","termsNamespaceConflictErrors","checkTerminalAndNoneTerminalsNameSpace","tooManyAltsErrors","curRule","validateTooManyAlts","duplicateRulesError","validateRuleDoesNotAlreadyExist","utils.flatten","OccurrenceValidationCollector","allRuleProductions","productionGroups","utils.groupBy","identifyProductionForDuplicates","duplicates","utils.pick","currGroup","utils.values","currDuplicates","firstProd","utils.first","defError","allRules","className","occurrences","validateRuleIsOverridden","definedRulesNames","utils.contains","nextNonTerminals","getFirstNoneTerminal","utils.isEmpty","foundLeftRecursion","validNextSteps","utils.difference","errorsFromNextSteps","currRefRule","utils.cloneArr","currSubDef","isFirstOptional","hasMore","rest","utils.drop","OrCollector","orCollector","ors","utils.reduce","currOr","exceptLast","utils.dropRight","currErrors","currAlternative","possibleFirstInAlt","utils.compact","currOccurrence","actualMaxLookahead","altsAmbiguityErrors","checkAlternativesAmbiguities","altsPrefixAmbiguityErrors","checkPrefixAlternativesAmbiguities","RepetionCollector","topLevelRules","currProd","paths","pathsInsideProduction","alternation","foundAmbiguousPaths","identicalAmbiguities","altsCurrPathAppearsIn","currOtherAlt","currOtherAltIdx","currAmbDescriptor","ambgIndices","pathsAndIndices","currPathsAndIdx","currPathAndIdx","alternativeGast","targetIdx","targetPath","prefixAmbiguitiesPathsAndIndices","searchPathAndIdx","currPathPrefixErrors","currAmbPathAndIdx","tokenNames","currToken","currRuleName","topRulesTable","orgResolveGrammar","orgValidateGrammar","assignOccurrenceIndices","methodsCollector","methods","currMethod","arrIdx","MISMATCHED_TOKEN_EXCEPTION","NO_VIABLE_ALT_EXCEPTION","EARLY_EXIT_EXCEPTION","NOT_ALL_INPUT_PARSED_EXCEPTION","RECOGNITION_EXCEPTION_NAMES","isRecognitionException","RecognitionException","_newTarget","MismatchedTokenException","previousToken","NoViableAltException","NotAllInputParsedException","EarlyExitException","EOF_FOLLOW_KEY","IN_RULE_RECOVERY_EXCEPTION","InRuleRecoveryException","Recoverable","DEFAULT_PARSER_CONFIG","attemptInRepetitionRecovery","tokToInsert","grammarRule","grammarRuleArgs","lookAheadFunc","expectedTokType","reSyncTokType","savedLexerState","resyncedTokens","passedResyncPoint","nextTokenWithoutResync","generateErrorMessage","expectTokAfterLastMatch","nextTokIdx","notStuck","tokIdxInRule","grammarPath","follows","nextTok","expectedToken","mismatchedTok","isMisMatchedTokInFollows","possibleFollowsTokType","isNextTokenWhatIsExpected","followKey","currentRuleReSyncSet","allPossibleReSyncTokTypes","nextTokenType","currRuleShortName","currRuleIdx","prevRuleShortName","explicitRuleStack","explicitOccurrenceStack","followStack","resyncTokens","prodFunc","lookaheadFunc","dslMethodIdx","prodOccurrence","nextToksWalker","pathRuleStack","pathOccurrenceStack","currShortName","firstAfterRepInfo","walker","isEndOfRule","BITS_FOR_METHOD_TYPE","BITS_FOR_OCCURRENCE_IDX","OR_IDX","OPTION_IDX","MANY_IDX","AT_LEAST_ONE_IDX","MANY_SEP_IDX","AT_LEAST_ONE_SEP_IDX","getKeyForAutomaticLookahead","ruleIdx","LooksAhead","rules","repetition","repetitionMandatory","repetitionMandatoryWithSeparator","repetitionWithSeparator","prodIdx","laFunc","prodKey","prodMaxLookahead","dslMethodName","setNodeLocationOnlyOffset","currNodeLocation","newLocationInfo","setNodeLocationFull","addTerminalToCst","tokenTypeName","addNoneTerminalToCst","ruleResult","classNameFromInstance","instance","NAME","existingNameProp","defineNameProp","nameValue","namePropDescriptor","defaultVisit","childrenNames","childrenNamesLength","currChildName","currChildArray","currChildArrayLength","currChild","createBaseSemanticVisitorConstructor","ruleNames","derivedConstructor","semanticProto","cstNode","semanticDefinitionErrors","validateVisitor","errorMessages","currDefError","createBaseVisitorConstructorWithDefaults","baseConstructor","withDefaultsProto","CstVisitorDefinitionError","visitorInstance","missingErrors","validateMissingCstMethods","redundantErrors","validateRedundantMethods","VALID_PROP_NAMES","TreeBuilder","fullRuleName","shortName","ruleCstNode","prevToken","loc","consumedToken","rootCst","ruleCstResult","preCstNode","newBaseCstVisitorConstructor","newConstructor","ruleStack","occurrenceStack","LexerAdapter","newInput","END_OF_FILE","soughtIdx","RecognizerApi","impl","ruleToCall","actionORMethodDef","altsOrOpts","implementation","DEFAULT_RULE_CONFIG","ruleImplementation","ruleErrors","orgState","RecognizerEngine","tokenVocabulary","uniqueTokens","noTokenCategoriesUsed","tokenConstructor","resyncEnabled","recoveryValueFunc","invokeRuleWithTry","cst","wrappedGrammarRule","idxInCallingRule","ruleNamePropName","resyncEnabledConfig","isFirstInvokedRule","reSyncEnabled","recogError","partialCstResult","orgLookaheadFunction_1","laKey","orgLookaheadFunction_2","separator","firstIterationLookaheadFunc","separatorLookAheadFunc","lookaheadFunction","orgLookaheadFunction_3","firstIterationLaFunc","nextTerminalAfterWalker","beforeIteration","afterIteration","altIdxToTake","chosenAlternative","firstRedundantTok","eFromConsumption","eFromInRuleRecovery","savedErrors","savedRuleStack","fullName","ErrorHandler","newErrors","userDefinedErrMsg","lookAheadPathsPerAlternative","insideProdPaths","actualTokens","errMsgTypes","ContentAssist","startRuleName","precedingInput","startRuleGast","topRuleName","gastProductions","topProduction","nextPossibleTokenTypes","RECORDING_NULL_OBJECT","HANDLE_SEPARATOR","MAX_METHOD_IDX","RFT","RECORDING_PHASE_TOKEN","RECORDING_PHASE_CSTNODE","GastRecorder","arg1","arg2","def","newTopLevelRule","originalError","recordProd","recordOrProd","assertMethodIdxIsValid","getIdxSuffix","prevProd","newNoneTerminal","prodConstructor","mainProdArg","handleSep","grammarAction","newProd","hasOptions","newOrProd","currAltFlat","PerformanceTracer","userTraceInitPerf","traceIsNumber","EMPTY_ALT","Parser","that","parserInstance","defErrorsMsgs","wrappedRule","originalGrammarAction","recordedRuleGast","resolverErrors","validationErrors","allFollows","CstParser","configClone","EmbeddedActionsParser","createSyntaxDiagramsCode","grammar","_c","resourceBase","_d","css","header","cssHtml","scripts","diagramsDiv","serializedGrammar","initLogic","NL","genUmdModule","genClass","genWrapperFunction","genAllRules","rulesText","genRule","genDefinition","genTerminal","genNonTerminal","genAlternation","altDef","genSingleAlt","genProd","genDSLRule","genDefFunction","spaces","generateParserFactory","wrapperText","constructorWrapper","generateParserModule","clearCache","WhiteSpace","String","SingleQuotedString","SheetQuoted","Function","FormulaErrorT","RefError","Name","Sheet","Number","Boolean","At","Comma","Colon","Semicolon","OpenParen","CloseParen","OpenSquareParen","CloseSquareParen","OpenCurlyParen","CloseCurlyParen","QuoteS","MulOp","PlusOp","DivOp","MinOp","ConcatOp","ExOp","PercentOp","GtOp","EqOp","LtOp","NeqOp","GteOp","LteOp","allTokens","SelectLexer","lexing","inputText","lexingResult","lexer","ExcelRefFunction","ExcelConditionalRefFunction","Parsing","utils","$","infixes","ops","formula","currentRow","sep","constant","bool","sheetName","referenceItem","address","parsing","Operators","MAX_ROW","MAX_COLUMN","Utils$3","cellAddress","col1","col2","row1","row2","val1","val2","maxRow","maxCol","minRow","minCol","sheet","refMaxRow","refMinRow","refMaxCol","refMinCol","string","Utils","EngFunctions","require$$5","InformationFunctions","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","FormulaParser$2","isTest","valueOrRef","nullValue","awaitedArgs","supported","fun","allowReturnArray","hooks","FormulaParser","Utils$1","formatChevrotainError","DepParser$1","ignoreError","DepParser","fastFormulaParser","cellValue","Spreadsheet","cachedCols","currentWidth","cacheCol","cachedRows","currentHeight","cacheRow","content","fromRow","toRow","fromCol","toCol","formattedData","view","cellsArray"],"mappings":"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","x_google_ignoreList":[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88]} \ No newline at end of file diff --git a/main.js b/main.js index cadc766..7ab9750 100644 --- a/main.js +++ b/main.js @@ -1,12198 +1,117 @@ -var Ys = Object.defineProperty; -var Ks = (t, e, n) => e in t ? Ys(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n; -var U = (t, e, n) => (Ks(t, typeof e != "symbol" ? e + "" : e, n), n); -var Ve; -(function(t) { - t.CELL_CLICK = "CELL_CLICK", t.SELECTION_CHANGE = "CHANGE_SELECTION", t.CELL_CHANGE = "CELL_CHANGE", t.COPY_CELLS = "COPY_CELLS"; -})(Ve || (Ve = {})); -class zs { - constructor(e) { - U(this, "root"); - U(this, "cellClick", (e, n) => { - var p, u; - if (e.button !== 0) - return; - const { offsetX: r, offsetY: i } = e, a = this.root.getCellByCoords(r, i), c = this.root.getCell(a), h = new br(); - h.selectedCell = a, h.selectedRange = { - from: a, - to: a - }, n.setSelectingMode(!0), this.changeSelection(h, !0), (u = (p = this.root.config).onCellClick) == null || u.call(p, e, c); - }); - U(this, "changeSelection", (e, n = !1) => { - var r, i; - this.root.selection = e, n && ((i = (r = this.root.config).onSelectonChange) == null || i.call(r, e)), this.root.renderSheet(), this.root.renderColumnsBar(), this.root.renderRowsBar(); - }); - U(this, "copy", (e, n, r) => { - var i, a; - (a = (i = this.root.config).onCopy) == null || a.call(i, e, n, r); - }); - this.root = e; - } - async dispatch(e) { - switch (e.type) { - case Ve.CELL_CLICK: { - const { event: n, scroller: r } = e; - this.cellClick(n, r); - break; - } - case Ve.SELECTION_CHANGE: { - const { selection: n, enableCallback: r } = e; - this.changeSelection(n, r); - break; - } - case Ve.CELL_CHANGE: { - const { cell: n, enableCallback: r } = e; - if (n.value.substring(0, 1).startsWith("=")) - try { - await n.evalFormula(this.root.formulaParser), n.displayValue = n.resultValue, this.root.renderCell(n.position.row, n.position.column), this.changeCellValues(n, r); - return; - } catch (i) { - console.error(i); - } - this.root.renderCell(n.position.row, n.position.column), this.changeCellValues(n, r); - break; - } - case Ve.COPY_CELLS: { - const { data: n, dataAsString: r, range: i } = e; - this.copy(i, n, r); - break; - } - } - } - changeCellValues(e, n = !0) { - var r, i; - n && ((i = (r = this.root.config).onCellChange) == null || i.call(r, e)); - } -} -class Gt { - constructor(e, n) { - U(this, "x"); - U(this, "y"); - U(this, "width"); - U(this, "height"); - this.x = this.getXCoord(n.column, e), this.y = this.getYCoord(n.row, e), this.width = e.columns[n.column].width, this.height = e.rows[n.row].height; - } - getXCoord(e, n) { - let r = 0; - for (let i = 0; i < e; i++) - r += n.columns[i].width; - return r; - } - getYCoord(e, n) { - let r = 0; - for (let i = 0; i < e; i++) - r += n.rows[i].height; - return r; - } -} -class Xs { - constructor(e) { - U(this, "element"); - U(this, "root"); - U(this, "handleKeydown", (e) => { - const { key: n } = e; - switch (n) { - case "Escape": { - this.hide(); - break; - } - case "Enter": { - if (!this.root.selection.selectedCell) - return; - this.root.changeCellValues(this.root.selection.selectedCell, { - value: this.element.value, - displayValue: this.element.value - }), this.root.events.dispatch({ - type: Ve.CELL_CHANGE, - cell: this.root.getCell(this.root.selection.selectedCell) - }), this.hide(), this.root.renderSelection(); - } - } - }); - U(this, "handleClickOutside", (e) => { - const n = e.target; - this.element.contains(n) || this.hide(); - }); - this.root = e; - const n = document.createElement("input"); - n.classList.add(Wt + "editor"), this.element = n, this.hide(); - } - hide() { - this.element.style.display = "none", this.element.classList.add("hide"), this.element.blur(), window.removeEventListener("click", this.handleClickOutside), this.element.removeEventListener("keydown", this.handleKeydown), this.root.focusTable(); - } - show(e, n) { - const { height: r, width: i, x: a, y: c } = new Gt(this.root.config, e), h = this.root.getCell(e); - this.element.classList.remove("hide"), this.element.style.top = c - this.root.viewport.top + this.root.columnsBarHeight + "px", this.element.style.left = a - this.root.viewport.left + this.root.rowsBarWidth + "px", this.element.style.width = i + "px", this.element.style.height = r + "px", this.element.style.display = "block", window.addEventListener("click", this.handleClickOutside), this.element.addEventListener("keydown", this.handleKeydown), this.element.value = n || h.value, this.element.focus(), n || this.element.select(); - } -} -function ri(t, e) { - return t.column === e.column && t.row === e.row; -} -class Qs { - constructor(e) { - U(this, "element"); - U(this, "verticalScroller"); - U(this, "horizontalScroller"); - U(this, "root"); - U(this, "isSelecting", !1); - U(this, "handleMouseMove", (e) => { - if (!this.isSelecting) - return; - const { offsetX: n, offsetY: r } = e, i = this.root.getCellByCoords(n, r); - let a = !1; - this.root.selection.selectedRange && (a = !ri(this.root.selection.selectedRange.to, i), a && (this.root.selection.selectedRange.to = i, this.root.events.dispatch({ - type: Ve.SELECTION_CHANGE, - selection: this.root.selection, - enableCallback: !0 - }))); - }); - U(this, "handleMouseUp", () => { - this.isSelecting = !1; - const e = { ...this.root.selection }; - this.root.selection.selectedRange && ri(this.root.selection.selectedRange.from, this.root.selection.selectedRange.to) && (e.selectedRange = null, this.root.events.dispatch({ - type: Ve.SELECTION_CHANGE, - selection: e, - enableCallback: !1 - })), this.root.renderSheet(), this.root.renderColumnsBar(), this.root.renderRowsBar(); - }); - U(this, "handleDoubleClick", (e) => { - e.preventDefault(); - const n = this.root.getCellByCoords(e.offsetX, e.offsetY); - this.root.showEditor(n); - }); - U(this, "handleKeydown", (e) => { - if (["ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"].includes(e.key)) { - switch (e.preventDefault(), this.root.selection.selectedRange = null, e.key) { - case "ArrowLeft": { - this.root.selection.selectedCell && this.root.selection.selectedCell.column > 0 && (this.root.selection.selectedCell.column -= 1); - break; - } - case "ArrowRight": { - this.root.selection.selectedCell && this.root.selection.selectedCell.column < this.root.config.columns.length - 1 && (this.root.selection.selectedCell.column += 1); - break; - } - case "ArrowUp": { - this.root.selection.selectedCell && this.root.selection.selectedCell.row > 0 && (this.root.selection.selectedCell.row -= 1); - break; - } - case "ArrowDown": { - this.root.selection.selectedCell && this.root.selection.selectedCell.row < this.root.config.rows.length - 1 && (this.root.selection.selectedCell.row += 1); - break; - } - } - this.root.events.dispatch({ - type: Ve.SELECTION_CHANGE, - selection: this.root.selection, - enableCallback: !0 - }); - } - const n = /^([a-z]|[а-я]|[0-9]|=)$/; - if (!e.metaKey && !e.ctrlKey) { - const r = n.test(e.key.toLowerCase()); - if (e.key === "F2" || r) { - if (e.preventDefault(), !this.root.selection.selectedCell) - return; - this.root.showEditor(this.root.selection.selectedCell, r ? e.key : void 0); - } - } - if (e.key === "Delete" && (e.preventDefault(), this.root.deleteSelectedCellsValues(), this.root.renderSheet()), e.metaKey || e.ctrlKey) { - if (e.code === "KeyC") { - let r; - const i = new br(); - if (this.root.selection.selectedRange) { - const { from: a, to: c } = this.root.selection.selectedRange; - i.selectedRange = this.root.selection.selectedRange, r = [...this.root.data.slice(a.row, c.row + 1).map((u) => u.slice(a.column, c.column + 1))]; - } else if (this.root.selection.selectedCell) { - const { column: a, row: c } = this.root.selection.selectedCell; - r = [[this.root.data[c][a]]], i.selectedRange = { - from: this.root.selection.selectedCell, - to: this.root.selection.selectedCell - }; - } else - return; - this.root.clipboard.copy(r, i.selectedRange); - return; - } - e.code; - } - }); - U(this, "handleClick", (e) => { - this.root.events.dispatch({ - type: Ve.CELL_CLICK, - event: e, - scroller: this - }); - }); - U(this, "handleScroll", () => { - const e = this.getViewportBoundlingRect(); - this.root.viewport.updateValues(e), this.root.renderSheet(), this.root.renderColumnsBar(), this.root.renderRowsBar(); - }); - this.root = e; - const { horizontalScroller: n, scroller: r, verticalScroller: i } = this.buildComponent(); - this.element = r, this.verticalScroller = i, this.horizontalScroller = n, this.element.style.height = this.root.config.view.height + "px", this.element.style.width = this.root.config.view.width + "px", this.element.style.top = this.root.columnsBarHeight + "px", this.element.style.left = this.root.rowsBarWidth + "px", this.element.tabIndex = -1, this.updateScrollerSize(), this.element.addEventListener("scroll", this.handleScroll), this.element.addEventListener("mousedown", this.handleClick), this.element.addEventListener("mousemove", this.handleMouseMove), this.element.addEventListener("mouseup", this.handleMouseUp), this.element.addEventListener("dblclick", this.handleDoubleClick), this.element.addEventListener("keydown", this.handleKeydown), this.element.addEventListener("paste", (a) => { - this.root.selection.selectedCell && this.root.clipboard.paste(this.root, this.root.selection.selectedCell, a); - }); - } - setSelectingMode(e) { - this.isSelecting = e; - } - getViewportBoundlingRect() { - const { scrollTop: e, scrollLeft: n } = this.element, { height: r, width: i } = this.element.getBoundingClientRect(), a = e + r, c = n + i; - return { - top: e, - left: n, - bottom: a, - right: c - }; - } - buildComponent() { - const e = document.createElement("div"), n = document.createElement("div"), r = document.createElement("div"), i = document.createElement("div"), a = document.createElement("div"); - return n.style.width = "0px", n.style.pointerEvents = "none", r.style.pointerEvents = "none", i.style.display = "flex", a.appendChild(n), a.appendChild(r), i.appendChild(a), this.verticalScroller = n, this.horizontalScroller = r, e.appendChild(i), e.contentEditable = "false", e.classList.add(Wt + "scroller"), { scroller: e, verticalScroller: n, horizontalScroller: r }; - } - getActualHeight() { - return this.root.config.rows.reduce((e, n) => (e += n.height, e), 0); - } - getActualWidth() { - return this.root.config.columns.reduce((e, n) => (e += n.width, e), 0); - } - updateScrollerSize() { - const e = this.getActualHeight(), n = this.getActualWidth(); - this.setScrollerHeight(e), this.setScrollerWidth(n); - } - setScrollerHeight(e) { - this.verticalScroller.style.height = e + "px"; - } - setScrollerWidth(e) { - this.horizontalScroller.style.width = e + "px"; - } -} -class vo { - constructor(e) { - U(this, "fontSize", 16); - U(this, "fontColor", "black"); - U(this, "background", "white"); - U(this, "borderColor", "black"); - U(this, "selectedBackground", "#4287f5"); - U(this, "selectedFontColor", "#ffffff"); - e && Object.assign(this, e); - } -} -class Zs { - constructor(e, n) { - U(this, "row"); - U(this, "column"); - this.row = e, this.column = n; - } -} -class Js { - constructor(e) { - U(this, "value"); - U(this, "displayValue"); - U(this, "resultValue"); - U(this, "position"); - U(this, "style"); - this.value = e.value, this.displayValue = e.displayValue, this.resultValue = e.resultValue, this.position = e.position, this.style = e.style; - } -} -let Fr = class { - constructor(e) { - /** True value (data) */ - U(this, "value"); - /** Value to render */ - U(this, "displayValue"); - /** This refers to the values that were obtained by calculations, for example, after calculating the formula */ - U(this, "resultValue"); - U(this, "position"); - U(this, "style", null); - U(this, "cellsDependsOnThisCell", []); - U(this, "dependedFromCells", []); - this.value = e.value, this.displayValue = e.displayValue, this.resultValue = e.resultValue, this.position = e.position, this.style = e.style; - } - getSerializableCell() { - return new Js({ - displayValue: this.displayValue, - position: this.position, - resultValue: this.resultValue, - style: this.style, - value: this.value - }); - } - changeStyles(e) { - this.style = e; - } - changeValues(e) { - Object.assign(this, e); - } - evalFormula(e) { - this.value.substring(0, 1) === "=" && (this.resultValue = e.parser.parse(this.value.slice(1), { - col: this.position.column, - row: this.position.row - })); - } - // private isCellInRange(root: Spreadsheet): boolean { - // const { column, row } = this.position; - // const { selectedRange } = root.selection; - // if (!selectedRange) return false; - // const isCellInRow = - // row >= Math.min(selectedRange.from.row, selectedRange.to.row) && - // row <= Math.max(selectedRange.to.row, selectedRange.from.row); - // const isCellInCol = - // column >= Math.min(selectedRange.from.column, selectedRange.to.column) && - // column <= Math.max(selectedRange.to.column, selectedRange.from.column); - // return isCellInCol && isCellInRow; - // } - render(e) { - const n = new Gt(e.config, this.position); - let { x: r, y: i } = n; - const { height: a, width: c } = n, { ctx: h } = e; - i -= e.viewport.top, r -= e.viewport.left; - const p = this.style ?? e.styles.cells; - h.clearRect(r, i, c, a), h.fillStyle = p.background, h.strokeStyle = "black", h.fillRect(r, i, c - 1, a - 1), h.strokeRect(r, i, c, a), h.fillStyle = p.fontColor, h.textAlign = "left", h.font = `${p.fontSize}px Arial`, h.textBaseline = "middle", h.fillText(this.displayValue, r + 2, i + a / 2); - } -}, js = class { - constructor(e) { - U(this, "element"); - U(this, "ctx"); - U(this, "root"); - this.root = e; - const n = document.createElement("canvas"); - n.classList.add(Wt + "sheet"), n.height = this.root.config.view.height, n.width = this.root.config.view.width, n.style.width = this.root.config.view.width + "px", n.style.height = this.root.config.view.height + "px", n.style.left = "0px", this.element = n; - const r = this.element.getContext("2d"); - if (!r) - throw new Error("Enable hardware acceleration"); - this.ctx = r; - } - getCellByCoords(e, n) { - let r = 0, i = 0; - for (; i <= n && (i += this.root.config.rows[r].height, !(i >= n)); ) - r++; - let a = 0, c = 0; - for (; c <= e && (c += this.root.config.columns[a].width, !(c >= e)); ) - a++; - return new Zs(r, a); - } - renderCell(e) { - const { column: n, row: r } = e; - this.root.data[r][n].render(this.root); - } - getSelectionRange() { - const { selectedCell: e, selectedRange: n } = this.root.selection; - if (!(!e && !n)) { - if (n) { - const r = Math.min(n.from.row, n.to.row), i = Math.min(n.from.column, n.to.column), a = Math.max(n.from.row, n.to.row), c = Math.max(n.from.column, n.to.column), h = new Gt(this.root.config, { - row: r, - column: i - }); - let p = 0; - for (let l = i; l <= c; l++) - p += this.root.config.columns[l].width; - let u = 0; - for (let l = r; l <= a; l++) - u += this.root.config.rows[l].height; - const o = h.x - this.root.viewport.left, s = h.y - this.root.viewport.top; - return { x: o, y: s, height: u, width: p }; - } - if (!n && e) { - const r = new Gt(this.root.config, e); - return r.x -= this.root.viewport.left, r.y -= this.root.viewport.top, r; - } - } - } - renderSelectionRange(e, n, r, i) { - this.ctx.save(), this.ctx.strokeStyle = "#7da8ff", this.ctx.lineWidth = 3, this.ctx.strokeRect(e, n, r, i), this.ctx.fillStyle = "#7da8ff35", this.ctx.fillRect(e, n, r, i), this.ctx.restore(); - } - renderSelection() { - const e = this.getSelectionRange(); - if (!e) - return; - const { height: n, width: r, x: i, y: a } = e; - this.renderSelectionRange(i, a, r, n); - } - renderSheet() { - const e = this.root.viewport.firstRow, n = this.root.viewport.lastCol + 3, r = this.root.viewport.lastRow + 3, i = this.root.viewport.firstCol; - for (let a = e; a <= r; a++) - for (let c = i; c <= n && !(!this.root.config.columns[c] || !this.root.config.rows[a]); c++) - this.renderCell({ column: c, row: a }); - this.renderSelection(); - } -}; -class ea { - constructor(e) { - U(this, "element"); - U(this, "root"); - this.root = e; - const n = document.createElement("div"); - n.classList.add(Wt + "spreadsheet_container"), this.element = n, this.changeElementSizes(this.root.viewProps); - } - changeElementSizes(e) { - const { height: n, width: r } = e; - this.element.style.width = r + this.root.rowsBarWidth + "px", this.element.style.height = n + this.root.columnsBarHeight + "px"; - } -} -class ta { - constructor(e) { - U(this, "element"); - U(this, "root"); - U(this, "height", 0); - this.root = e; - const n = document.createElement("div"); - n.classList.add(Wt + "toolbar"), this.element = n; - } -} -class Ir { - constructor(e) { - U(this, "rows"); - U(this, "columns"); - U(this, "view", { - width: 800, - height: 600 - }); - U(this, "onCellClick", null); - U(this, "onSelectonChange", null); - U(this, "onCellChange", null); - U(this, "onCopy"); - this.columns = e.columns, this.rows = e.rows, this.view = e.view, this.onCellClick = e.onCellClick ?? null, this.onSelectonChange = e.onSelectionChange ?? null, this.onCellChange = e.onCellChange ?? null, this.onCopy = e.onCopy ?? null; - } -} -class br { - constructor() { - U(this, "selectedCell", null); - U(this, "selectedRange", null); - } -} -class na { - constructor() { - U(this, "cells"); - this.cells = new vo(); - } -} -class ii { - constructor(e, n) { - U(this, "root"); - U(this, "top"); - U(this, "left"); - U(this, "right"); - U(this, "bottom"); - U(this, "firstRow"); - U(this, "lastRow"); - U(this, "firstCol"); - U(this, "lastCol"); - this.root = e, this.top = n.top, this.left = n.left, this.right = n.right, this.bottom = n.bottom, this.firstRow = this.getFirstRow(), this.lastCol = this.getFirstRow(); - //!Temp - this.firstCol = this.getFirstRow(); - //!Temp - this.lastRow = this.getLastRow(), this.updateValues({ - top: 0, - left: 0, - right: this.root.viewProps.width, - bottom: this.root.viewProps.height - }); - } - updateValues(e) { - this.top = e.top, this.left = e.left, this.right = e.right, this.bottom = e.bottom, this.firstRow = this.getFirstRow(), this.lastRow = this.getLastRow(), this.firstCol = this.getFirstCol(), this.lastCol = this.getLastCol(); - } - /** Get index of first row in viewport */ - getFirstRow() { - return this.root.cache.getRowByYCoord(this.top); - } - getLastRow() { - return this.root.cache.getRowByYCoord(this.bottom); - } - getFirstCol() { - return this.root.cache.getColumnByXCoord(this.left); - } - getLastCol() { - return this.root.cache.getColumnByXCoord(this.right); - } -} -let go = class { - constructor(e) { - U(this, "width"); - U(this, "title"); - this.width = e.width, this.title = e.title; - } -}; -class Eo { - constructor(e) { - U(this, "height"); - U(this, "title"); - this.height = e.height, this.title = e.title; - } -} -function mo(t, e, n = !1) { - const r = []; - for (let i = 0; i <= t; i++) { - const a = []; - for (let c = 0; c <= e; c++) { - const h = n ? `${i}:${c}` : "", p = new Fr({ - displayValue: h, - resultValue: h, - value: h, - position: { - column: c, - row: i - }, - style: null - }); - a.push(p); - } - r.push(a); - } - return r; -} -function ra(t, e) { - const n = []; - for (let a = 0; a <= t; a++) { - const c = new Eo({ - height: 40, - title: String(a) - }); - n.push(c); - } - const r = []; - for (let a = 0; a <= e; a++) { - const c = new go({ - title: String(a), - width: 150 - }); - r.push(c); - } - return new Ir({ - columns: r, - rows: n, - view: { - height: 600, - width: 800 - } - }); -} -function Bh(t, e) { - const n = mo(t, e), r = ra(t, e); - return { data: n, config: r }; -} -class ia { - constructor(e) { - U(this, "xPos"); - U(this, "colIdx"); - this.xPos = e.xPos, this.colIdx = e.colIdx; - } -} -class oa { - constructor(e) { - U(this, "yPos"); - U(this, "rowIdx"); - this.yPos = e.yPos, this.rowIdx = e.rowIdx; - } -} -class sa { - constructor(e) { - U(this, "columns"); - U(this, "rows"); - this.columns = e.columns, this.rows = e.rows; - } - getRowByYCoord(e) { - let n = 0; - for (let r = 0; r < this.rows.length && (n = r, !(e <= this.rows[r].yPos)); r++) - ; - return n; - } - getColumnByXCoord(e) { - let n = 0; - for (let r = 0; r < this.columns.length && (n = r, !(e <= this.columns[r].xPos)); r++) - ; - return n; - } -} -class aa { - constructor(e) { - U(this, "element"); - U(this, "root"); - U(this, "height", 35); - U(this, "width"); - // private resizerWidth = 1; - U(this, "ctx"); - this.root = e, this.element = this.createElement(); - const n = this.element.getContext("2d"); - if (!n) - throw new Error("Enable hardware acceleration"); - this.ctx = n, this.width = this.root.viewProps.width; - } - createElement() { - const e = document.createElement("canvas"); - return e.style.position = "absolute", e.style.height = this.height + "px", e.style.width = this.root.viewProps.width + "px", e.style.display = "block", e.style.borderLeft = "1px solid black", e.width = this.root.viewProps.width, e.height = this.height, e; - } - setElementPosition(e, n) { - this.element.style.top = e + "px", this.element.style.left = n + "px"; - } - isColumnSelected(e) { - const { selectedCell: n, selectedRange: r } = this.root.selection; - return n && n.column === e ? !0 : r ? e >= Math.min(r.from.column, r.to.column) && e <= Math.max(r.from.column, r.to.column) : !1; - } - // private getYCoordWithOffset(renderBox: RenderBox): number { - // const {y} = renderBox - // return y + this.root.toolbarHeight - // } - // private getXCoordWithOffset(renderBox: RenderBox): number { - // const {x} = renderBox - // return x - // } - renderText(e, n) { - const { width: r, x: i } = n; - this.ctx.fillStyle = "black", this.ctx.textAlign = "center", this.ctx.textBaseline = "middle", this.ctx.font = "12px Arial", this.ctx.fillText(this.root.config.columns[e].title, i + r / 2 - this.root.viewport.left, 0 + this.height / 2); - } - renderRect(e, n) { - const { width: r, x: i } = n, a = this.isColumnSelected(e); - this.ctx.fillStyle = a ? "#c7ebff" : "white", this.ctx.strokeStyle = "black", this.ctx.lineWidth = 1; - const c = i - this.root.viewport.left; - this.ctx.fillRect(c - 1, 0, r, this.height), this.ctx.strokeRect(c - 1, 0, r, this.height); - } - renderSingleColumn(e) { - const n = new Gt(this.root.config, { - row: 0, - column: e - }); - this.renderRect(e, n), this.renderText(e, n); - } - renderBar() { - const e = this.root.viewport.lastCol + 3, n = this.root.viewport.firstCol; - this.ctx.beginPath(), this.ctx.strokeStyle = "black", this.ctx.lineWidth = 1, this.ctx.moveTo(0, 0), this.ctx.lineTo(0, this.height), this.ctx.closePath(), this.ctx.stroke(); - for (let r = n; r <= e && this.root.config.columns[r]; r++) - this.renderSingleColumn(r); - } -} -class ca { - constructor(e) { - U(this, "element"); - U(this, "ctx"); - U(this, "root"); - U(this, "width", 35); - U(this, "height"); - U(this, "resizerHeight", 1); - this.root = e, this.element = this.createElement(); - const n = this.element.getContext("2d"); - if (!n) - throw new Error("Enable hardware acceleration"); - this.ctx = n, this.height = this.root.viewProps.height; - } - createElement() { - const e = document.createElement("canvas"); - return e.style.position = "absolute", e.style.height = this.root.viewProps.height + "px", e.style.width = this.width + "px", e.style.display = "block", e.style.borderTop = "1px solid black", e.width = this.width, e.height = this.root.viewProps.height, e; - } - setElementPosition(e, n) { - this.element.style.top = e + "px", this.element.style.left = n + "px"; - } - isRowSelected(e) { - const { selectedCell: n, selectedRange: r } = this.root.selection; - return n && n.row === e ? !0 : r ? e >= Math.min(r.from.row, r.to.row) && e <= Math.max(r.from.row, r.to.row) : !1; - } - renderText(e, n) { - const { y: r, height: i } = n; - this.ctx.fillStyle = "black", this.ctx.textAlign = "center", this.ctx.textBaseline = "middle", this.ctx.font = "12px Arial", this.ctx.fillText(this.root.config.rows[e].title, this.width / 2, r - this.root.viewport.top + i / 2); - } - renderRect(e, n) { - const { y: r, height: i } = n, a = this.isRowSelected(e); - this.ctx.fillStyle = a ? "#c7ebff" : "white", this.ctx.strokeStyle = "black", this.ctx.lineWidth = this.resizerHeight; - const c = r - this.root.viewport.top; - this.ctx.fillRect(0, c - 1, this.width, i), this.ctx.strokeRect(0, c - 1, this.width, i); - } - renderSingleRow(e) { - const n = new Gt(this.root.config, { - column: 0, - row: e - }); - this.renderRect(e, n), this.renderText(e, n); - } - renderBar() { - const e = this.root.viewport.lastRow + 3, n = this.root.viewport.firstRow; - this.ctx.beginPath(), this.ctx.moveTo(0, 0), this.ctx.strokeStyle = "black", this.ctx.lineWidth = 16, this.ctx.lineTo(35, 0), this.ctx.closePath(), this.ctx.stroke(); - for (let r = n; r <= e && this.root.config.rows[r]; r++) - this.renderSingleRow(r); - } -} -class la { - constructor(e) { - U(this, "saved", null); - U(this, "root"); - this.root = e; - } - copy(e, n) { - const r = e.map((i) => i.map((a) => a.displayValue).join(" ")).join(` -`); - this.saved = e, navigator.clipboard.writeText(r), this.root.events.dispatch({ - type: Ve.COPY_CELLS, - data: e, - dataAsString: r, - range: n - }); - } - paste(e, { column: n, row: r }, i) { - if (!this.saved) { - if (!i.clipboardData) - return; - const h = i.clipboardData.getData("text"); - try { - const u = h.split(` -`).map((l) => l.split(" ")).map((l) => l.map((f) => { - const v = { - displayValue: f, - position: { - column: n, - row: r - }, - resultValue: f, - style: new vo(), - value: f - }; - return new Fr(v); - })), o = u.length, s = u[0] ? u[0].length : 0; - for (let l = 0; l < o; l++) - for (let f = 0; f < s; f++) { - const v = u[l][f], d = { - column: n + f, - row: r + l - }, g = { - displayValue: v.displayValue, - value: v.value, - style: v.style - }; - e.changeCellValues(d, g, !1); - } - } catch (p) { - console.error("Cannot read clipboard. ", p); - } - e.renderSheet(); - return; - } - const a = this.saved.length, c = this.saved[0] ? this.saved[0].length : 0; - for (let h = 0; h < a; h++) - for (let p = 0; p < c; p++) { - const u = this.saved[h][p], o = { - column: n + p, - row: r + h - }, s = { - displayValue: u.displayValue, - value: u.value, - style: u.style - }; - e.changeCellValues(o, s, !1); - } - } -} -var Ro = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}; -function ua(t) { - return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t; -} -function fa(t) { - if (t.__esModule) - return t; - var e = t.default; - if (typeof e == "function") { - var n = function r() { - if (this instanceof r) { - var i = [null]; - i.push.apply(i, arguments); - var a = Function.bind.apply(e, i); - return new a(); - } - return e.apply(this, arguments); - }; - n.prototype = e.prototype; - } else - n = {}; - return Object.defineProperty(n, "__esModule", { value: !0 }), Object.keys(t).forEach(function(r) { - var i = Object.getOwnPropertyDescriptor(t, r); - Object.defineProperty(n, r, i.get ? i : { - enumerable: !0, - get: function() { - return t[r]; - } - }); - }), n; -} -let ha = class { - constructor(e, n) { - if (e == null && n == null) - this._data = [], this._refs = []; - else { - if (e.length !== n.length) - throw Error("Collection: data length should match references length."); - this._data = e, this._refs = n; - } - } - get data() { - return this._data; - } - get refs() { - return this._refs; - } - get length() { - return this._data.length; - } - /** - * Add data and references to this collection. - * @param {{}} obj - data - * @param {{}} ref - reference - */ - add(e, n) { - this._data.push(e), this._refs.push(n); - } -}; -var Gn = ha, or, oi; -function ge() { - if (oi) - return or; - oi = 1; - const t = he(), e = Gn, n = { - NUMBER: 0, - ARRAY: 1, - BOOLEAN: 2, - STRING: 3, - RANGE_REF: 4, - // can be 'A:C' or '1:4', not only 'A1:C3' - CELL_REF: 5, - COLLECTIONS: 6, - // Unions of references - NUMBER_NO_BOOLEAN: 10 - }, r = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368e3, 20922789888e3, 355687428096e3, 6402373705728e3, 121645100408832e3, 243290200817664e4, 5109094217170944e4, 11240007277776077e5, 2585201673888498e7, 6204484017332394e8, 15511210043330986e9, 40329146112660565e10, 10888869450418352e12, 30488834461171387e13, 8841761993739702e15, 26525285981219107e16, 8222838654177922e18, 2631308369336935e20, 8683317618811886e21, 29523279903960416e22, 10333147966386145e24, 37199332678990125e25, 13763753091226346e27, 5230226174666011e29, 20397882081197444e30, 8159152832478977e32, 3345252661316381e34, 140500611775288e37, 6041526306337383e37, 2658271574788449e39, 11962222086548019e40, 5502622159812089e42, 25862324151116818e43, 12413915592536073e45, 6082818640342675e47, 30414093201713376e48, 15511187532873822e50, 8065817517094388e52, 42748832840600255e53, 2308436973392414e56, 12696403353658276e57, 7109985878048635e59, 40526919504877214e60, 23505613312828785e62, 13868311854568984e64, 832098711274139e67, 5075802138772248e68, 3146997326038794e70, 198260831540444e73, 12688693218588417e73, 8247650592082472e75, 5443449390774431e77, 3647111091818868e79, 24800355424368305e80, 1711224524281413e83, 11978571669969892e84, 8504785885678623e86, 61234458376886085e87, 44701154615126844e89, 3307885441519386e92, 248091408113954e95, 18854947016660504e95, 14518309202828587e97, 11324281178206297e99, 8946182130782976e101, 7156945704626381e103, 5797126020747368e105, 4753643337012842e107, 3945523969720659e109, 3314240134565353e111, 281710411438055e114, 24227095383672734e114, 2107757298379528e117, 18548264225739844e118, 1650795516090846e121, 14857159644817615e122, 1352001527678403e125, 12438414054641308e126, 11567725070816416e128, 1087366156656743e131, 1032997848823906e133, 9916779348709496e134, 9619275968248212e136, 9426890448883248e138, 9332621544394415e140, 9332621544394415e142], i = {}; - Object.keys(n).forEach((o) => { - i[n[o]] = o; - }); - class a { - constructor() { - this.Types = n, this.type2Number = { - number: n.NUMBER, - boolean: n.BOOLEAN, - string: n.STRING, - object: -1 - }; - } - checkFunctionResult(s) { - if (typeof s === "number") { - if (isNaN(s)) - return t.VALUE; - if (!isFinite(s)) - return t.NUM; - } - return s ?? t.NULL; - } - /** - * Flatten an array - * @param {Array} arr1 - * @returns {*} - */ - flattenDeep(s) { - return s.reduce((l, f) => Array.isArray(f) ? l.concat(this.flattenDeep(f)) : l.concat(f), []); - } - /** - * - * @param obj - * @param isArray - if it is an array: [1,2,3], will extract the first element - * @param allowBoolean - Allow parse boolean into number - * @returns {number|FormulaError} - */ - acceptNumber(s, l = !0, f = !0) { - if (s instanceof t) - return s; - let v; - if (typeof s == "number") - v = s; - else if (typeof s == "boolean") - if (f) - v = Number(s); - else - throw t.VALUE; - else if (typeof s == "string") { - if (s.length === 0 || (v = Number(s), v !== v)) - throw t.VALUE; - } else if (Array.isArray(s)) - if (l) - v = this.acceptNumber(s[0][0]); - else if (s[0].length === 1) - v = this.acceptNumber(s[0][0]); - else - throw t.VALUE; - else - throw Error("Unknown type in FormulaHelpers.acceptNumber"); - return v; - } - /** - * Flatten parameters to 1D array. - * @see {@link FormulaHelpers.accept} - * @param {Array} params - Parameter that needs to flatten. - * @param {Types|null} valueType - The type each item should be, - * null if allows any type. This only applies to literals. - * @param {boolean} allowUnion - Allow union, e.g. (A1:C1, E4:F3) - * @param {function} hook - Invoked after parsing each item. - * of the array. - * @param {*} [defValue=null] - The value if an param is omitted. i.e. SUM(1,2,,,,,) - * @param {number} [minSize=1] - The minimum size of the parameters - */ - flattenParams(s, l, f, v, d = null, g = 1) { - if (s.length < g) - throw t.ARG_MISSING([l]); - d == null && (d = l === n.NUMBER ? 0 : l == null ? null : ""), s.forEach((E) => { - const { isCellRef: A, isRangeRef: m, isArray: N } = E, y = E.value instanceof e, R = !A && !m && !N && !y, T = { isLiteral: R, isCellRef: A, isRangeRef: m, isArray: N, isUnion: y }; - if (R) - E.omitted ? E = d : E = this.accept(E, l, d), v(E, T); - else if (A) - v(E.value, T); - else if (y) { - if (!f) - throw t.VALUE; - E = E.value.data, E = this.flattenDeep(E), E.forEach((w) => { - v(w, T); - }); - } else - (m || N) && (E = this.flattenDeep(E.value), E.forEach((w) => { - v(w, T); - })); - }); - } - /** - * Check if the param valid, return the parsed param. - * If type is not given, return the un-parsed param. - * @param {*} param - * @param {number|null} [type] - The expected type - * NUMBER: Expect a single number, - * ARRAY: Expect an flatten array, - * BOOLEAN: Expect a single boolean, - * STRING: Expect a single string, - * COLLECTIONS: Expect an Array of the above types - * null: Do not parse the value, return it directly. - * The collection is not a flatted array. - * @param {*} [defValue] - Default value if the param is not given. - * if undefined, this param is required, a Error will throw if not given. - * if null, and param is undefined, null will be returned. - * @param {boolean} [flat=true] - If the array should be flattened, - * only applicable when type is ARRAY. - * If false, collection is disallowed. - * @param {boolean} allowSingleValue - If pack single value into 2d array, - * only applicable when type is ARRAY. - * @return {string|number|boolean|{}|Array} - */ - accept(s, l = null, f, v = !0, d = !1) { - if (Array.isArray(l) && (l = l[0]), s == null && f === void 0) - throw t.ARG_MISSING([l]); - if (s == null) - return f; - if (typeof s != "object" || Array.isArray(s)) - return s; - const g = s.isArray; - if (s.value != null && (s = s.value), l == null) - return s; - if (s instanceof t) - throw s; - if (l === n.ARRAY) { - if (Array.isArray(s)) - return v ? this.flattenDeep(s) : s; - if (s instanceof e) - throw t.VALUE; - if (d) - return v ? [s] : [[s]]; - throw t.VALUE; - } else if (l === n.COLLECTIONS) - return s; - g && (s = s[0][0]); - const E = this.type(s); - if (l === n.STRING) - E === n.BOOLEAN ? s = s ? "TRUE" : "FALSE" : s = `${s}`; - else if (l === n.BOOLEAN) { - if (E === n.STRING) - throw t.VALUE; - E === n.NUMBER && (s = !!s); - } else if (l === n.NUMBER) - s = this.acceptNumber(s, !1); - else if (l === n.NUMBER_NO_BOOLEAN) - s = this.acceptNumber(s, !1, !1); - else - throw t.VALUE; - return s; - } - type(s) { - let l = this.type2Number[typeof s]; - return l === -1 && (Array.isArray(s) ? l = n.ARRAY : s.ref ? s.ref.from ? l = n.RANGE_REF : l = n.CELL_REF : s instanceof e && (l = n.COLLECTIONS)), l; - } - isRangeRef(s) { - return s.ref && s.ref.from; - } - isCellRef(s) { - return s.ref && !s.ref.from; - } - /** - * Helper function for SUMIF, AVERAGEIF,... - * @param context - * @param range1 - * @param range2 - */ - retrieveRanges(s, l, f) { - return f = u.extend(l, f), l = this.retrieveArg(s, l), l = c.accept(l, n.ARRAY, void 0, !1, !0), f !== l ? (f = this.retrieveArg(s, f), f = c.accept(f, n.ARRAY, void 0, !1, !0)) : f = l, [l, f]; - } - retrieveArg(s, l) { - if (l === null) - return { value: 0, isArray: !1, omitted: !0 }; - const f = s.utils.extractRefValue(l); - return { value: f.val, isArray: f.isArray, ref: l.ref }; - } - } - const c = new a(), h = { - /** - * @param {string|*} obj - * @returns {*} - */ - isWildCard: (o) => typeof o == "string" ? /[*?]/.test(o) : !1, - toRegex: (o, s) => RegExp(o.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/([^~]??)[?]/g, "$1.").replace(/([^~]??)[*]/g, "$1.*").replace(/~([?*])/g, "$1"), s) - }, p = { - /** - * Parse criteria, support comparison and wild card match. - * @param {string|number} criteria - * @return {{op: string, value: string|number|boolean|RegExp, match: boolean|undefined}} - The parsed criteria. - */ - parse: (o) => { - const s = typeof o; - if (s === "string") { - const l = o.toUpperCase(); - if (l === "TRUE" || l === "FALSE") - return { op: "=", value: l === "TRUE" }; - const f = o.match(/(<>|>=|<=|>|<|=)(.*)/); - if (f) { - let v = f[1], d; - if (isNaN(f[2])) { - const g = f[2].toUpperCase(); - if (g === "TRUE" || g === "FALSE") - d = g === "TRUE"; - else if (/#NULL!|#DIV\/0!|#VALUE!|#NAME\?|#NUM!|#N\/A|#REF!/.test(f[2])) - d = new t(f[2]); - else if (d = f[2], h.isWildCard(d)) - return { op: "wc", value: h.toRegex(d), match: v === "=" }; - } else - d = Number(f[2]); - return { op: v, value: d }; - } else - return h.isWildCard(o) ? { op: "wc", value: h.toRegex(o), match: !0 } : { op: "=", value: o }; - } else { - if (s === "boolean" || s === "number" || Array.isArray(o) || o instanceof t) - return { op: "=", value: o }; - throw Error(`Criteria.parse: type ${typeof o} not support`); - } - } - }, u = { - columnNumberToName: (o) => { - let s = o, l = "", f = 0; - for (; s > 0; ) - f = (s - 1) % 26, l = String.fromCharCode("A".charCodeAt(0) + f) + l, s = Math.floor((s - f) / 26); - return l; - }, - columnNameToNumber: (o) => { - o = o.toUpperCase(); - const s = o.length; - let l = 0; - for (let f = 0; f < s; f++) { - const v = o.charCodeAt(f); - isNaN(v) || (l += (v - 64) * 26 ** (s - f - 1)); - } - return l; - }, - /** - * Extend range2 to match with the dimension in range1. - * @param {{ref: {}}} range1 - * @param {{ref: {}}} [range2] - */ - extend: (o, s) => { - if (s == null) - return o; - let l, f; - if (c.isCellRef(o)) - l = 0, f = 0; - else if (c.isRangeRef(o)) - l = o.ref.to.row - o.ref.from.row, f = o.ref.to.col - o.ref.from.col; - else - throw Error("Address.extend should not reach here."); - return c.isCellRef(s) ? (l > 0 || f > 0) && (s = { - ref: { - from: { col: s.ref.col, row: s.ref.row }, - to: { row: s.ref.row + l, col: s.ref.col + f } - } - }) : (s.ref.to.row = s.ref.from.row + l, s.ref.to.col = s.ref.from.col + f), s; - } - }; - return or = { - FormulaHelpers: c, - Types: n, - ReversedTypes: i, - Factorials: r, - WildCard: h, - Criteria: p, - Address: u - }, or; -} -var sr, si; -function he() { - if (si) - return sr; - si = 1; - class t extends Error { - /** - * @param {string} error - error code, i.e. #NUM! - * @param {string} [msg] - detailed error message - * @param {object|Error} [details] - * @returns {FormulaError} - */ - constructor(n, r, i) { - if (super(r), r == null && i == null && t.errorMap.has(n)) - return t.errorMap.get(n); - r == null && i == null ? (this._error = n, t.errorMap.set(n, this)) : this._error = n, this.details = i; - } - /** - * Get the error name. - * @returns {string} formula error - */ - get error() { - return this._error; - } - get name() { - return this._error; - } - /** - * Return true if two errors are same. - * @param {FormulaError} err - * @returns {boolean} if two errors are same. - */ - equals(n) { - return n instanceof t && n._error === this._error; - } - /** - * Return the formula error in string representation. - * @returns {string} the formula error in string representation. - */ - toString() { - return this._error; - } - } - return t.errorMap = /* @__PURE__ */ new Map(), t.DIV0 = new t("#DIV/0!"), t.NA = new t("#N/A"), t.NAME = new t("#NAME?"), t.NULL = new t("#NULL!"), t.NUM = new t("#NUM!"), t.REF = new t("#REF!"), t.VALUE = new t("#VALUE!"), t.NOT_IMPLEMENTED = (e) => new t("#NAME?", `Function ${e} is not implemented.`), t.TOO_MANY_ARGS = (e) => new t("#N/A", `Function ${e} has too many arguments.`), t.ARG_MISSING = (e) => { - const { Types: n } = ge(); - return new t("#N/A", `Argument type ${e.map((r) => n[r]).join(", ")} is missing.`); - }, t.ERROR = (e, n) => new t("#ERROR!", e, n), sr = t, sr; -} -let _e = class { -}; -_e.version = "0.10.3"; -function bt(t) { - let e = "", n = t.length - 1; - for (; n >= 0; ) - e += t.charAt(n--); - return e; -} -function ke(t, e) { - let n = ""; - for (; n.length < e; ) - n += t; - return n; -} -function Xe(t, e) { - let n = "" + t; - return n.length >= e ? n : ke("0", e - n.length) + n; -} -function ar(t, e) { - let n = "" + t; - return n.length >= e ? n : ke(" ", e - n.length) + n; -} -function hn(t, e) { - let n = "" + t; - return n.length >= e ? n : n + ke(" ", e - n.length); -} -function pa(t, e) { - let n = "" + Math.round(t); - return n.length >= e ? n : ke("0", e - n.length) + n; -} -function da(t, e) { - let n = "" + t; - return n.length >= e ? n : ke("0", e - n.length) + n; -} -const ai = Math.pow(2, 32); -function Dt(t, e) { - if (t > ai || t < -ai) - return pa(t, e); - const n = Math.round(t); - return da(n, e); -} -function Ln(t, e) { - return e = e || 0, t.length >= 7 + e && (t.charCodeAt(e) | 32) === 103 && (t.charCodeAt(e + 1) | 32) === 101 && (t.charCodeAt(e + 2) | 32) === 110 && (t.charCodeAt(e + 3) | 32) === 101 && (t.charCodeAt(e + 4) | 32) === 114 && (t.charCodeAt(e + 5) | 32) === 97 && (t.charCodeAt(e + 6) | 32) === 108; -} -const ci = [ - ["Sun", "Sunday"], - ["Mon", "Monday"], - ["Tue", "Tuesday"], - ["Wed", "Wednesday"], - ["Thu", "Thursday"], - ["Fri", "Friday"], - ["Sat", "Saturday"] -], cr = [ - ["J", "Jan", "January"], - ["F", "Feb", "February"], - ["M", "Mar", "March"], - ["A", "Apr", "April"], - ["M", "May", "May"], - ["J", "Jun", "June"], - ["J", "Jul", "July"], - ["A", "Aug", "August"], - ["S", "Sep", "September"], - ["O", "Oct", "October"], - ["N", "Nov", "November"], - ["D", "Dec", "December"] -]; -function No(t) { - t[0] = "General", t[1] = "0", t[2] = "0.00", t[3] = "#,##0", t[4] = "#,##0.00", t[9] = "0%", t[10] = "0.00%", t[11] = "0.00E+00", t[12] = "# ?/?", t[13] = "# ??/??", t[14] = "m/d/yy", t[15] = "d-mmm-yy", t[16] = "d-mmm", t[17] = "mmm-yy", t[18] = "h:mm AM/PM", t[19] = "h:mm:ss AM/PM", t[20] = "h:mm", t[21] = "h:mm:ss", t[22] = "m/d/yy h:mm", t[37] = "#,##0 ;(#,##0)", t[38] = "#,##0 ;[Red](#,##0)", t[39] = "#,##0.00;(#,##0.00)", t[40] = "#,##0.00;[Red](#,##0.00)", t[45] = "mm:ss", t[46] = "[h]:mm:ss", t[47] = "mmss.0", t[48] = "##0.0E+0", t[49] = "@", t[56] = '"上午/下午 "hh"時"mm"分"ss"秒 "', t[65535] = "General"; -} -const _t = {}; -No(_t); -function pn(t, e, n) { - const r = t < 0 ? -1 : 1; - let i = t * r, a = 0, c = 1, h = 0, p = 1, u = 0, o = 0, s = Math.floor(i); - for (; u < e && (s = Math.floor(i), h = s * c + a, o = s * u + p, !(i - s < 5e-8)); ) - i = 1 / (i - s), a = c, c = h, p = u, u = o; - if (o > e && (u > e ? (o = p, h = a) : (o = u, h = c)), !n) - return [0, r * h, o]; - const l = Math.floor(r * h / o); - return [l, r * h - l * o, o]; -} -function Zt(t, e, n) { - if (t > 2958465 || t < 0) - return null; - let r = t | 0, i = Math.floor(86400 * (t - r)), a = 0, c = []; - const h = { D: r, T: i, u: 86400 * (t - r) - i, y: 0, m: 0, d: 0, H: 0, M: 0, S: 0, q: 0 }; - if (Math.abs(h.u) < 1e-6 && (h.u = 0), e && e.date1904 && (r += 1462), h.u > 0.9999 && (h.u = 0, ++i === 86400 && (h.T = i = 0, ++r, ++h.D)), r === 60) - c = n ? [1317, 10, 29] : [1900, 2, 29], a = 3; - else if (r === 0) - c = n ? [1317, 8, 29] : [1900, 1, 0], a = 6; - else { - r > 60 && --r; - const p = new Date(1900, 0, 1); - p.setDate(p.getDate() + r - 1), c = [p.getFullYear(), p.getMonth() + 1, p.getDate()], a = p.getDay(), r < 60 && (a = (a + 6) % 7), n && (a = Ea()); - } - return h.y = c[0], h.m = c[1], h.d = c[2], h.S = i % 60, i = Math.floor(i / 60), h.M = i % 60, i = Math.floor(i / 60), h.H = i, h.q = a, h; -} -_e.parse_date_code = Zt; -const Ao = new Date(1899, 11, 31, 0, 0, 0), va = Ao.getTime(), ga = new Date(1900, 2, 1, 0, 0, 0); -function yo(t, e) { - let n = t.getTime(); - return e ? n -= 1461 * 24 * 60 * 60 * 1e3 : t >= ga && (n += 24 * 60 * 60 * 1e3), (n - (va + (t.getTimezoneOffset() - Ao.getTimezoneOffset()) * 6e4)) / (24 * 60 * 60 * 1e3); -} -function To(t) { - return t.toString(10); -} -_e._general_int = To; -const wo = function() { - const e = /\.(\d*[1-9])0+$/, n = /\.0*$/, r = /\.(\d*[1-9])0+/, i = /\.0*[Ee]/, a = /(E[+-])(\d)$/; - function c(o) { - const s = o < 0 ? 12 : 11; - let l = u(o.toFixed(12)); - return l.length <= s || (l = o.toPrecision(10), l.length <= s) ? l : o.toExponential(5); - } - function h(o) { - let s = o.toFixed(11).replace(e, ".$1"); - return s.length > (o < 0 ? 12 : 11) && (s = o.toPrecision(6)), s; - } - function p(o) { - for (let s = 0; s !== o.length; ++s) - if ((o.charCodeAt(s) | 32) === 101) - return o.replace(r, ".$1").replace(i, "E").replace("e", "E").replace(a, "$10$2"); - return o; - } - function u(o) { - return o.indexOf(".") > -1 ? o.replace(n, "").replace(e, ".$1") : o; - } - return function(s) { - let l = Math.floor(Math.log(Math.abs(s)) * Math.LOG10E), f; - return l >= -4 && l <= -1 ? f = s.toPrecision(10 + l) : Math.abs(l) <= 9 ? f = c(s) : l === 10 ? f = s.toFixed(10).substr(0, 12) : f = h(s), u(p(f)); - }; -}(); -_e._general_num = wo; -function _n(t, e) { - switch (typeof t) { - case "string": - return t; - case "boolean": - return t ? "TRUE" : "FALSE"; - case "number": - return (t | 0) === t ? To(t) : wo(t); - case "undefined": - return ""; - case "object": - if (t == null) - return ""; - if (t instanceof Date) - return Uo(14, yo(t, e && e.date1904), e); - } - throw new Error("unsupported value in General format: " + t); -} -_e._general = _n; -function Ea() { - return 0; -} -function ma(t, e, n, r) { - let i = "", a = 0, c = 0, h = n.y, p, u = 0; - switch (t) { - case 98: - h = n.y + 543; - case 121: - switch (e.length) { - case 1: - case 2: - p = h % 100, u = 2; - break; - default: - p = h % 1e4, u = 4; - break; - } - break; - case 109: - switch (e.length) { - case 1: - case 2: - p = n.m, u = e.length; - break; - case 3: - return cr[n.m - 1][1]; - case 5: - return cr[n.m - 1][0]; - default: - return cr[n.m - 1][2]; - } - break; - case 100: - switch (e.length) { - case 1: - case 2: - p = n.d, u = e.length; - break; - case 3: - return ci[n.q][0]; - default: - return ci[n.q][1]; - } - break; - case 104: - switch (e.length) { - case 1: - case 2: - p = 1 + (n.H + 11) % 12, u = e.length; - break; - default: - throw "bad hour format: " + e; - } - break; - case 72: - switch (e.length) { - case 1: - case 2: - p = n.H, u = e.length; - break; - default: - throw "bad hour format: " + e; - } - break; - case 77: - switch (e.length) { - case 1: - case 2: - p = n.M, u = e.length; - break; - default: - throw "bad minute format: " + e; - } - break; - case 115: - if (e !== "s" && e !== "ss" && e !== ".0" && e !== ".00" && e !== ".000") - throw "bad second format: " + e; - return n.u === 0 && (e === "s" || e === "ss") ? Xe(n.S, e.length) : (r >= 2 ? c = r === 3 ? 1e3 : 100 : c = r === 1 ? 10 : 1, a = Math.round(c * (n.S + n.u)), a >= 60 * c && (a = 0), e === "s" ? a === 0 ? "0" : "" + a / c : (i = Xe(a, 2 + r), e === "ss" ? i.substr(0, 2) : "." + i.substr(2, e.length - 1))); - case 90: - switch (e) { - case "[h]": - case "[hh]": - p = n.D * 24 + n.H; - break; - case "[m]": - case "[mm]": - p = (n.D * 24 + n.H) * 60 + n.M; - break; - case "[s]": - case "[ss]": - p = ((n.D * 24 + n.H) * 60 + n.M) * 60 + Math.round(n.S + n.u); - break; - default: - throw "bad abstime format: " + e; - } - u = e.length === 3 ? 1 : 2; - break; - case 101: - p = h, u = 1; - } - return u > 0 ? Xe(p, u) : ""; -} -function Nt(t) { - if (t.length <= 3) - return t; - let n = t.length % 3, r = t.substr(0, n); - for (; n !== t.length; n += 3) - r += (r.length > 0 ? "," : "") + t.substr(n, 3); - return r; -} -const ht = function() { - const e = /%/g; - function n(y, R, T) { - const w = R.replace(e, ""), C = R.length - w.length; - return ht(y, w, T * Math.pow(10, 2 * C)) + ke("%", C); - } - function r(y, R, T) { - let w = R.length - 1; - for (; R.charCodeAt(w - 1) === 44; ) - --w; - return ht(y, R.substr(0, w), T / Math.pow(10, 3 * (R.length - w))); - } - function i(y, R) { - let T, w = y.indexOf("E") - y.indexOf(".") - 1; - if (y.match(/^#+0.0E\+0$/)) { - if (R === 0) - return "0.0E+0"; - if (R < 0) - return "-" + i(y, -R); - let C = y.indexOf("."); - C === -1 && (C = y.indexOf("E")); - let M = Math.floor(Math.log(R) * Math.LOG10E) % C; - if (M < 0 && (M += C), T = (R / Math.pow(10, M)).toPrecision(w + 1 + (C + M) % C), T.indexOf("e") === -1) { - const _ = Math.floor(Math.log(R) * Math.LOG10E); - for (T.indexOf(".") === -1 ? T = T.charAt(0) + "." + T.substr(1) + "E+" + (_ - T.length + M) : T += "E+" + (_ - M); T.substr(0, 2) === "0."; ) - T = T.charAt(0) + T.substr(2, C) + "." + T.substr(2 + C), T = T.replace(/^0+([1-9])/, "$1").replace(/^0+\./, "0."); - T = T.replace(/\+-/, "-"); - } - T = T.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/, function(_, W, F, S) { - return W + F + S.substr(0, (C + M) % C) + "." + S.substr(M) + "E"; - }); - } else - T = R.toExponential(w); - return y.match(/E\+00$/) && T.match(/e[+-]\d$/) && (T = T.substr(0, T.length - 1) + "0" + T.charAt(T.length - 1)), y.match(/E\-/) && T.match(/e\+/) && (T = T.replace(/e\+/, "e")), T.replace("e", "E"); - } - const a = /# (\?+)( ?)\/( ?)(\d+)/; - function c(y, R, T) { - const w = parseInt(y[4], 10), C = Math.round(R * w), M = Math.floor(C / w); - let _ = C - M * w, W = w; - return T + (M === 0 ? "" : "" + M) + " " + (_ === 0 ? ke(" ", y[1].length + 1 + y[4].length) : ar(_, y[1].length) + y[2] + "/" + y[3] + Xe(W, y[4].length)); - } - function h(y, R, T) { - return T + (R === 0 ? "" : "" + R) + ke(" ", y[1].length + 2 + y[4].length); - } - const p = /^#*0*\.([0#]+)/, u = /\).*[0#]/, o = /\(###\) ###\\?-####/; - function s(y) { - let R = "", T; - for (let w = 0; w !== y.length; ++w) - switch (T = y.charCodeAt(w)) { - case 35: - break; - case 63: - R += " "; - break; - case 48: - R += "0"; - break; - default: - R += String.fromCharCode(T); - } - return R; - } - function l(y, R) { - const T = Math.pow(10, R); - return "" + Math.round(y * T) / T; - } - function f(y, R) { - return R < ("" + Math.round((y - Math.floor(y)) * Math.pow(10, R))).length ? 0 : Math.round((y - Math.floor(y)) * Math.pow(10, R)); - } - function v(y, R) { - return R < ("" + Math.round((y - Math.floor(y)) * Math.pow(10, R))).length ? 1 : 0; - } - function d(y) { - return y < 2147483647 && y > -2147483648 ? "" + (y >= 0 ? y | 0 : y - 1 | 0) : "" + Math.floor(y); - } - function g(y, R, T) { - if (y.charCodeAt(0) === 40 && !R.match(u)) { - const G = R.replace(/\( */, "").replace(/ \)/, "").replace(/\)/, ""); - return T >= 0 ? g("n", G, T) : "(" + g("n", G, -T) + ")"; - } - if (R.charCodeAt(R.length - 1) === 44) - return r(y, R, T); - if (R.indexOf("%") !== -1) - return n(y, R, T); - if (R.indexOf("E") !== -1) - return i(R, T); - if (R.charCodeAt(0) === 36) - return "$" + g(y, R.substr(R.charAt(1) == " " ? 2 : 1), T); - let w, C, M, _, W = Math.abs(T), F = T < 0 ? "-" : ""; - if (R.match(/^00+$/)) - return F + Dt(W, R.length); - if (R.match(/^[#?]+$/)) - return w = Dt(T, 0), w === "0" && (w = ""), w.length > R.length ? w : s(R.substr(0, R.length - w.length)) + w; - if (C = R.match(a)) - return c(C, W, F); - if (R.match(/^#+0+$/)) - return F + Dt(W, R.length - R.indexOf("0")); - if (C = R.match(p)) - return w = l(T, C[1].length).replace(/^([^\.]+)$/, "$1." + s(C[1])).replace(/\.$/, "." + s(C[1])).replace(/\.(\d*)$/, function(G, J) { - return "." + J + ke("0", s(C[1]).length - J.length); - }), R.indexOf("0.") !== -1 ? w : w.replace(/^0\./, "."); - if (R = R.replace(/^#+([0.])/, "$1"), C = R.match(/^(0*)\.(#*)$/)) - return F + l(W, C[2].length).replace(/\.(\d*[1-9])0*$/, ".$1").replace(/^(-?\d*)$/, "$1.").replace(/^0\./, C[1].length ? "0." : "."); - if (C = R.match(/^#{1,3},##0(\.?)$/)) - return F + Nt(Dt(W, 0)); - if (C = R.match(/^#,##0\.([#0]*0)$/)) - return T < 0 ? "-" + g(y, R, -T) : Nt("" + (Math.floor(T) + v(T, C[1].length))) + "." + Xe(f(T, C[1].length), C[1].length); - if (C = R.match(/^#,#*,#0/)) - return g(y, R.replace(/^#,#*,/, ""), T); - if (C = R.match(/^([0#]+)(\\?-([0#]+))+$/)) - return w = bt(g(y, R.replace(/[\\-]/g, ""), T)), M = 0, bt(bt(R.replace(/\\/g, "")).replace(/[0#]/g, function(G) { - return M < w.length ? w.charAt(M++) : G === "0" ? "0" : ""; - })); - if (R.match(o)) - return w = g(y, "##########", T), "(" + w.substr(0, 3) + ") " + w.substr(3, 3) + "-" + w.substr(6); - let S = ""; - if (C = R.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) - return M = Math.min(C[4].length, 7), _ = pn(W, Math.pow(10, M) - 1, !1), w = "" + F, S = ht("n", C[1], _[1]), S.charAt(S.length - 1) === " " && (S = S.substr(0, S.length - 1) + "0"), w += S + C[2] + "/" + C[3], S = hn(_[2], M), S.length < C[4].length && (S = s(C[4].substr(C[4].length - S.length)) + S), w += S, w; - if (C = R.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) - return M = Math.min(Math.max(C[1].length, C[4].length), 7), _ = pn(W, Math.pow(10, M) - 1, !0), F + (_[0] || (_[1] ? "" : "0")) + " " + (_[1] ? ar(_[1], M) + C[2] + "/" + C[3] + hn(_[2], M) : ke(" ", 2 * M + 1 + C[2].length + C[3].length)); - if (C = R.match(/^[#0?]+$/)) - return w = Dt(T, 0), R.length <= w.length ? w : s(R.substr(0, R.length - w.length)) + w; - if (C = R.match(/^([#0?]+)\.([#0]+)$/)) { - w = "" + T.toFixed(Math.min(C[2].length, 10)).replace(/([^0])0+$/, "$1"), M = w.indexOf("."); - const G = R.indexOf(".") - M, J = R.length - w.length - G; - return s(R.substr(0, G) + w + R.substr(R.length - J)); - } - if (C = R.match(/^00,000\.([#0]*0)$/)) - return M = f(T, C[1].length), T < 0 ? "-" + g(y, R, -T) : Nt(d(T)).replace(/^\d,\d{3}$/, "0$&").replace(/^\d*$/, function(G) { - return "00," + (G.length < 3 ? Xe(0, 3 - G.length) : "") + G; - }) + "." + Xe(M, C[1].length); - switch (R) { - case "###,##0.00": - return g(y, "#,##0.00", T); - case "###,###": - case "##,###": - case "#,###": - const G = Nt(Dt(W, 0)); - return G !== "0" ? F + G : ""; - case "###,###.00": - return g(y, "###,##0.00", T).replace(/^0\./, "."); - case "#,###.00": - return g(y, "#,##0.00", T).replace(/^0\./, "."); - } - throw new Error("unsupported format |" + R + "|"); - } - function E(y, R, T) { - let w = R.length - 1; - for (; R.charCodeAt(w - 1) === 44; ) - --w; - return ht(y, R.substr(0, w), T / Math.pow(10, 3 * (R.length - w))); - } - function A(y, R, T) { - const w = R.replace(e, ""), C = R.length - w.length; - return ht(y, w, T * Math.pow(10, 2 * C)) + ke("%", C); - } - function m(y, R) { - let T, w = y.indexOf("E") - y.indexOf(".") - 1; - if (y.match(/^#+0.0E\+0$/)) { - if (R === 0) - return "0.0E+0"; - if (R < 0) - return "-" + m(y, -R); - let C = y.indexOf("."); - C === -1 && (C = y.indexOf("E")); - let M = Math.floor(Math.log(R) * Math.LOG10E) % C; - if (M < 0 && (M += C), T = (R / Math.pow(10, M)).toPrecision(w + 1 + (C + M) % C), !T.match(/[Ee]/)) { - const _ = Math.floor(Math.log(R) * Math.LOG10E); - T.indexOf(".") === -1 ? T = T.charAt(0) + "." + T.substr(1) + "E+" + (_ - T.length + M) : T += "E+" + (_ - M), T = T.replace(/\+-/, "-"); - } - T = T.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/, function(_, W, F, S) { - return W + F + S.substr(0, (C + M) % C) + "." + S.substr(M) + "E"; - }); - } else - T = R.toExponential(w); - return y.match(/E\+00$/) && T.match(/e[+-]\d$/) && (T = T.substr(0, T.length - 1) + "0" + T.charAt(T.length - 1)), y.match(/E\-/) && T.match(/e\+/) && (T = T.replace(/e\+/, "e")), T.replace("e", "E"); - } - function N(y, R, T) { - if (y.charCodeAt(0) === 40 && !R.match(u)) { - const G = R.replace(/\( */, "").replace(/ \)/, "").replace(/\)/, ""); - return T >= 0 ? N("n", G, T) : "(" + N("n", G, -T) + ")"; - } - if (R.charCodeAt(R.length - 1) === 44) - return E(y, R, T); - if (R.indexOf("%") !== -1) - return A(y, R, T); - if (R.indexOf("E") !== -1) - return m(R, T); - if (R.charCodeAt(0) === 36) - return "$" + N(y, R.substr(R.charAt(1) == " " ? 2 : 1), T); - let w, C, M, _, W = Math.abs(T), F = T < 0 ? "-" : ""; - if (R.match(/^00+$/)) - return F + Xe(W, R.length); - if (R.match(/^[#?]+$/)) - return w = "" + T, T === 0 && (w = ""), w.length > R.length ? w : s(R.substr(0, R.length - w.length)) + w; - if (C = R.match(a)) - return h(C, W, F); - if (R.match(/^#+0+$/)) - return F + Xe(W, R.length - R.indexOf("0")); - if (C = R.match(p)) - return w = ("" + T).replace(/^([^\.]+)$/, "$1." + s(C[1])).replace(/\.$/, "." + s(C[1])), w = w.replace(/\.(\d*)$/, function(G, J) { - return "." + J + ke("0", s(C[1]).length - J.length); - }), R.indexOf("0.") !== -1 ? w : w.replace(/^0\./, "."); - if (R = R.replace(/^#+([0.])/, "$1"), C = R.match(/^(0*)\.(#*)$/)) - return F + ("" + W).replace(/\.(\d*[1-9])0*$/, ".$1").replace(/^(-?\d*)$/, "$1.").replace(/^0\./, C[1].length ? "0." : "."); - if (C = R.match(/^#{1,3},##0(\.?)$/)) - return F + Nt("" + W); - if (C = R.match(/^#,##0\.([#0]*0)$/)) - return T < 0 ? "-" + N(y, R, -T) : Nt("" + T) + "." + ke("0", C[1].length); - if (C = R.match(/^#,#*,#0/)) - return N(y, R.replace(/^#,#*,/, ""), T); - if (C = R.match(/^([0#]+)(\\?-([0#]+))+$/)) - return w = bt(N(y, R.replace(/[\\-]/g, ""), T)), M = 0, bt(bt(R.replace(/\\/g, "")).replace(/[0#]/g, function(G) { - return M < w.length ? w.charAt(M++) : G === "0" ? "0" : ""; - })); - if (R.match(o)) - return w = N(y, "##########", T), "(" + w.substr(0, 3) + ") " + w.substr(3, 3) + "-" + w.substr(6); - let S = ""; - if (C = R.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/)) - return M = Math.min(C[4].length, 7), _ = pn(W, Math.pow(10, M) - 1, !1), w = "" + F, S = ht("n", C[1], _[1]), S.charAt(S.length - 1) == " " && (S = S.substr(0, S.length - 1) + "0"), w += S + C[2] + "/" + C[3], S = hn(_[2], M), S.length < C[4].length && (S = s(C[4].substr(C[4].length - S.length)) + S), w += S, w; - if (C = R.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/)) - return M = Math.min(Math.max(C[1].length, C[4].length), 7), _ = pn(W, Math.pow(10, M) - 1, !0), F + (_[0] || (_[1] ? "" : "0")) + " " + (_[1] ? ar(_[1], M) + C[2] + "/" + C[3] + hn(_[2], M) : ke(" ", 2 * M + 1 + C[2].length + C[3].length)); - if (C = R.match(/^[#0?]+$/)) - return w = "" + T, R.length <= w.length ? w : s(R.substr(0, R.length - w.length)) + w; - if (C = R.match(/^([#0]+)\.([#0]+)$/)) { - w = "" + T.toFixed(Math.min(C[2].length, 10)).replace(/([^0])0+$/, "$1"), M = w.indexOf("."); - let G = R.indexOf(".") - M, J = R.length - w.length - G; - return s(R.substr(0, G) + w + R.substr(R.length - J)); - } - if (C = R.match(/^00,000\.([#0]*0)$/)) - return T < 0 ? "-" + N(y, R, -T) : Nt("" + T).replace(/^\d,\d{3}$/, "0$&").replace(/^\d*$/, function(G) { - return "00," + (G.length < 3 ? Xe(0, 3 - G.length) : "") + G; - }) + "." + Xe(0, C[1].length); - switch (R) { - case "###,###": - case "##,###": - case "#,###": - const G = Nt("" + W); - return G !== "0" ? F + G : ""; - default: - if (R.match(/\.[0#?]*$/)) - return N(y, R.slice(0, R.lastIndexOf(".")), T) + s(R.slice(R.lastIndexOf("."))); - } - throw new Error("unsupported format |" + R + "|"); - } - return function(R, T, w) { - return (w | 0) === w ? N(R, T, w) : g(R, T, w); - }; -}(); -function Co(t) { - const e = []; - let n = !1, r = 0; - for (let i = 0; i < t.length; ++i) - switch ( - /*cc=*/ - t.charCodeAt(i) - ) { - case 34: - n = !n; - break; - case 95: - case 42: - case 92: - ++i; - break; - case 59: - e[e.length] = t.substr(r, i - r), r = i + 1; - } - if (e[e.length] = t.substr(r), n === !0) - throw new Error("Format |" + t + "| unterminated string "); - return e; -} -_e._split = Co; -const Io = /\[[HhMmSs]*\]/; -function Oo(t) { - let e = 0, n = "", r = ""; - for (; e < t.length; ) - switch (n = t.charAt(e)) { - case "G": - Ln(t, e) && (e += 6), e++; - break; - case '"': - for ( - ; - /*cc=*/ - t.charCodeAt(++e) !== 34 && e < t.length; - ) - ++e; - ++e; - break; - case "\\": - e += 2; - break; - case "_": - e += 2; - break; - case "@": - ++e; - break; - case "B": - case "b": - if (t.charAt(e + 1) === "1" || t.charAt(e + 1) === "2") - return !0; - case "M": - case "D": - case "Y": - case "H": - case "S": - case "E": - case "m": - case "d": - case "y": - case "h": - case "s": - case "e": - case "g": - return !0; - case "A": - case "a": - if (t.substr(e, 3).toUpperCase() === "A/P" || t.substr(e, 5).toUpperCase() === "AM/PM") - return !0; - ++e; - break; - case "[": - for (r = n; t.charAt(e++) !== "]" && e < t.length; ) - r += t.charAt(e); - if (r.match(Io)) - return !0; - break; - case ".": - case "0": - case "#": - for (; e < t.length && ("0#?.,E+-%".indexOf(n = t.charAt(++e)) > -1 || n == "\\" && t.charAt(e + 1) == "-" && "0#".indexOf(t.charAt(e + 2)) > -1); ) - ; - break; - case "?": - for (; t.charAt(++e) === n; ) - ; - break; - case "*": - ++e, (t.charAt(e) === " " || t.charAt(e) === "*") && ++e; - break; - case "(": - case ")": - ++e; - break; - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - for (; e < t.length && "0123456789".indexOf(t.charAt(++e)) > -1; ) - ; - break; - case " ": - ++e; - break; - default: - ++e; - break; - } - return !1; -} -_e.is_date = Oo; -function Mo(t, e, n, r) { - let i = [], a = "", c = 0, h = "", p = "t", u, o, s, l = "H"; - for (; c < t.length; ) - switch (h = t.charAt(c)) { - case "G": - if (!Ln(t, c)) - throw new Error("unrecognized character " + h + " in " + t); - i[i.length] = { t: "G", v: "General" }, c += 7; - break; - case '"': - for (a = ""; (s = t.charCodeAt(++c)) !== 34 && c < t.length; ) - a += String.fromCharCode(s); - i[i.length] = { t: "t", v: a }, ++c; - break; - case "\\": - const R = t.charAt(++c), T = R === "(" || R === ")" ? R : "t"; - i[i.length] = { t: T, v: R }, ++c; - break; - case "_": - i[i.length] = { t: "t", v: " " }, c += 2; - break; - case "@": - i[i.length] = { t: "T", v: e }, ++c; - break; - case "B": - case "b": - if (t.charAt(c + 1) === "1" || t.charAt(c + 1) === "2") { - if (u == null && (u = Zt(e, n, t.charAt(c + 1) === "2"), u == null)) - return ""; - i[i.length] = { t: "X", v: t.substr(c, 2) }, p = h, c += 2; - break; - } - case "M": - case "D": - case "Y": - case "H": - case "S": - case "E": - h = h.toLowerCase(); - case "m": - case "d": - case "y": - case "h": - case "s": - case "e": - case "g": - if (e < 0 || u == null && (u = Zt(e, n), u == null)) - return ""; - for (a = h; ++c < t.length && t.charAt(c).toLowerCase() === h; ) - a += h; - h === "m" && p.toLowerCase() === "h" && (h = "M"), h === "h" && (h = l), i[i.length] = { t: h, v: a }, p = h; - break; - case "A": - case "a": - const w = { t: h, v: h }; - if (u == null && (u = Zt(e, n)), t.substr(c, 3).toUpperCase() === "A/P" ? (u != null && (w.v = u.H >= 12 ? "P" : "A"), w.t = "T", l = "h", c += 3) : t.substr(c, 5).toUpperCase() === "AM/PM" ? (u != null && (w.v = u.H >= 12 ? "PM" : "AM"), w.t = "T", c += 5, l = "h") : (w.t = "t", ++c), u == null && w.t === "T") - return ""; - i[i.length] = w, p = h; - break; - case "[": - for (a = h; t.charAt(c++) !== "]" && c < t.length; ) - a += t.charAt(c); - if (a.slice(-1) !== "]") - throw 'unterminated "[" block: |' + a + "|"; - if (a.match(Io)) { - if (u == null && (u = Zt(e, n), u == null)) - return ""; - i[i.length] = { t: "Z", v: a.toLowerCase() }, p = a.charAt(1); - } else - a.indexOf("$") > -1 && (a = (a.match(/\$([^-\[\]]*)/) || [])[1] || "$", Oo(t) || (i[i.length] = { t: "t", v: a })); - break; - case ".": - if (u != null) { - for (a = h; ++c < t.length && (h = t.charAt(c)) === "0"; ) - a += h; - i[i.length] = { t: "s", v: a }; - break; - } - case "0": - case "#": - for (a = h; ++c < t.length && "0#?.,E+-%".indexOf(h = t.charAt(c)) > -1 || h == "\\" && t.charAt(c + 1) == "-" && c < t.length - 2 && "0#".indexOf(t.charAt(c + 2)) > -1; ) - a += h; - i[i.length] = { t: "n", v: a }; - break; - case "?": - for (a = h; t.charAt(++c) === h; ) - a += h; - i[i.length] = { t: h, v: a }, p = h; - break; - case "*": - ++c, (t.charAt(c) === " " || t.charAt(c) === "*") && ++c; - break; - case "(": - case ")": - i[i.length] = { t: r === 1 || typeof e == "number" && e < 0 ? "t" : h, v: h }, ++c; - break; - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - for (a = h; c < t.length && "0123456789".indexOf(t.charAt(++c)) > -1; ) - a += t.charAt(c); - i[i.length] = { t: "D", v: a }; - break; - case " ": - i[i.length] = { t: h, v: h }, ++c; - break; - default: - if (",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(h) === -1) - throw new Error("unrecognized character " + h + " in " + t); - i[i.length] = { t: "t", v: h }, ++c; - break; - } - let f = 0, v = 0, d; - for (c = i.length - 1, p = "t"; c >= 0; --c) - switch (i[c].t) { - case "h": - case "H": - i[c].t = l, p = "h", f < 1 && (f = 1); - break; - case "s": - (d = i[c].v.match(/\.0+$/)) && (v = Math.max(v, d[0].length - 1)), f < 3 && (f = 3); - case "d": - case "y": - case "M": - case "e": - p = i[c].t; - break; - case "m": - p === "s" && (i[c].t = "M", f < 2 && (f = 2)); - break; - case "X": - break; - case "Z": - f < 1 && i[c].v.match(/[Hh]/) && (f = 1), f < 2 && i[c].v.match(/[Mm]/) && (f = 2), f < 3 && i[c].v.match(/[Ss]/) && (f = 3); - } - switch (f) { - case 0: - break; - case 1: - u.u >= 0.5 && (u.u = 0, ++u.S), u.S >= 60 && (u.S = 0, ++u.M), u.M >= 60 && (u.M = 0, ++u.H); - break; - case 2: - u.u >= 0.5 && (u.u = 0, ++u.S), u.S >= 60 && (u.S = 0, ++u.M); - break; - } - let g = "", E; - for (c = 0; c < i.length; ++c) - switch (i[c].t) { - case "t": - case "T": - case " ": - case "D": - break; - case "X": - i[c].v = "", i[c].t = ";"; - break; - case "d": - case "m": - case "y": - case "h": - case "H": - case "M": - case "s": - case "e": - case "b": - case "Z": - i[c].v = ma(i[c].t.charCodeAt(0), i[c].v, u, v), i[c].t = "t"; - break; - case "n": - case "(": - case "?": - for (E = c + 1; i[E] != null && ((h = i[E].t) === "?" || h === "D" || (h === " " || h === "t") && i[E + 1] != null && (i[E + 1].t === "?" || i[E + 1].t === "t" && i[E + 1].v === "/") || i[c].t === "(" && (h === " " || h === "n" || h === ")") || h === "t" && (i[E].v === "/" || i[E].v === " " && i[E + 1] != null && i[E + 1].t === "?")); ) - i[c].v += i[E].v, i[E] = { v: "", t: ";" }, ++E; - g += i[c].v, c = E - 1; - break; - case "G": - i[c].t = "t", i[c].v = _n(e, n); - break; - } - let A = "", m, N; - if (g.length > 0) { - g.charCodeAt(0) === 40 ? (m = e < 0 && g.charCodeAt(0) === 45 ? -e : e, N = ht("(", g, m)) : (m = e < 0 && r > 1 ? -e : e, N = ht("n", g, m), m < 0 && i[0] && i[0].t === "t" && (N = N.substr(1), i[0].v = "-" + i[0].v)), E = N.length - 1; - let R = i.length; - for (c = 0; c < i.length; ++c) - if (i[c] != null && i[c].t !== "t" && i[c].v.indexOf(".") > -1) { - R = c; - break; - } - let T = i.length; - if (R === i.length && N.indexOf("E") === -1) { - for (c = i.length - 1; c >= 0; --c) - i[c] == null || "n?(".indexOf(i[c].t) === -1 || (E >= i[c].v.length - 1 ? (E -= i[c].v.length, i[c].v = N.substr(E + 1, i[c].v.length)) : E < 0 ? i[c].v = "" : (i[c].v = N.substr(0, E + 1), E = -1), i[c].t = "t", T = c); - E >= 0 && T < i.length && (i[T].v = N.substr(0, E + 1) + i[T].v); - } else if (R !== i.length && N.indexOf("E") === -1) { - for (E = N.indexOf(".") - 1, c = R; c >= 0; --c) - if (!(i[c] == null || "n?(".indexOf(i[c].t) === -1)) { - for (o = i[c].v.indexOf(".") > -1 && c === R ? i[c].v.indexOf(".") - 1 : i[c].v.length - 1, A = i[c].v.substr(o + 1); o >= 0; --o) - E >= 0 && (i[c].v.charAt(o) === "0" || i[c].v.charAt(o) === "#") && (A = N.charAt(E--) + A); - i[c].v = A, i[c].t = "t", T = c; - } - for (E >= 0 && T < i.length && (i[T].v = N.substr(0, E + 1) + i[T].v), E = N.indexOf(".") + 1, c = R; c < i.length; ++c) - if (!(i[c] == null || "n?(".indexOf(i[c].t) === -1 && c !== R)) { - for (o = i[c].v.indexOf(".") > -1 && c === R ? i[c].v.indexOf(".") + 1 : 0, A = i[c].v.substr(0, o); o < i[c].v.length; ++o) - E < N.length && (A += N.charAt(E++)); - i[c].v = A, i[c].t = "t", T = c; - } - } - } - for (c = 0; c < i.length; ++c) - i[c] != null && "n(?".indexOf(i[c].t) > -1 && (m = r > 1 && e < 0 && c > 0 && i[c - 1].v === "-" ? -e : e, i[c].v = ht(i[c].t, i[c].v, m), i[c].t = "t"); - let y = ""; - for (c = 0; c !== i.length; ++c) - i[c] != null && (y += i[c].v); - return y; -} -_e._eval = Mo; -const li = /\[[=<>]/, ui = /\[([=<>]*)(-?\d+\.?\d*)\]/; -function fi(t, e) { - if (e == null) - return !1; - const n = parseFloat(e[2]); - switch (e[1]) { - case "=": - if (t === n) - return !0; - break; - case ">": - if (t > n) - return !0; - break; - case "<": - if (t < n) - return !0; - break; - case "<>": - if (t !== n) - return !0; - break; - case ">=": - if (t >= n) - return !0; - break; - case "<=": - if (t <= n) - return !0; - break; - } - return !1; -} -function Ra(t, e) { - let n = Co(t), r = n.length, i = n[r - 1].indexOf("@"); - if (r < 4 && i > -1 && --r, n.length > 4) - throw new Error("cannot find right format for |" + n.join("|") + "|"); - if (typeof e != "number") - return [4, n.length === 4 || i > -1 ? n[n.length - 1] : "@"]; - switch (n.length) { - case 1: - n = i > -1 ? ["General", "General", "General", n[0]] : [n[0], n[0], n[0], "@"]; - break; - case 2: - n = i > -1 ? [n[0], n[0], n[0], n[1]] : [n[0], n[1], n[0], "@"]; - break; - case 3: - n = i > -1 ? [n[0], n[1], n[0], n[2]] : [n[0], n[1], n[2], "@"]; - break; - } - const a = e > 0 ? n[0] : e < 0 ? n[1] : n[2]; - if (n[0].indexOf("[") === -1 && n[1].indexOf("[") === -1) - return [r, a]; - if (n[0].match(li) != null || n[1].match(li) != null) { - const c = n[0].match(ui), h = n[1].match(ui); - return fi(e, c) ? [r, n[0]] : fi(e, h) ? [r, n[1]] : [r, n[c != null && h != null ? 2 : 1]]; - } - return [r, a]; -} -function Uo(t, e, n) { - n == null && (n = {}); - let r = ""; - switch (typeof t) { - case "string": - t === "m/d/yy" && n.dateNF ? r = n.dateNF : r = t; - break; - case "number": - t === 14 && n.dateNF ? r = n.dateNF : r = (n.table != null ? n.table : _t)[t]; - break; - } - if (Ln(r, 0)) - return _n(e, n); - e instanceof Date && (e = yo(e, n.date1904)); - const i = Ra(r, e); - if (Ln(i[1])) - return _n(e, n); - if (e === !0) - e = "TRUE"; - else if (e === !1) - e = "FALSE"; - else if (e === "" || e == null) - return ""; - return Mo(i[1], e, n, i[0]); -} -function Lo(t, e) { - if (typeof e != "number") { - e = +e || -1; - for (let n = 0; n < 392; ++n) { - if (_t[n] === void 0) { - e < 0 && (e = n); - continue; - } - if (_t[n] === t) { - e = n; - break; - } - } - e < 0 && (e = 391); - } - return _t[e] = t, e; -} -_e.load = Lo; -_e._table = _t; -_e.get_table = function() { - return _t; -}; -_e.load_table = function(e) { - for (let n = 0; n !== 392; ++n) - e[n] !== void 0 && Lo(e[n], n); -}; -_e.init_table = No; -_e.format = Uo; -var _o = _e, Po = { exports: {} }; -(function(t) { - const e = "ศูนย์บาทถ้วน", n = [ - "", - "หนึ่ง", - "สอง", - "สาม", - "สี่", - "ห้า", - "หก", - "เจ็ด", - "แปด", - "เก้า" - ], r = [ - "", - "สิบ", - "ร้อย", - "พัน", - "หมื่น", - "แสน", - "ล้าน" - ]; - function i(p) { - let u = ""; - const o = p.length, s = 7; - if (o > s) { - const l = o - s + 1, f = p.slice(0, l), v = p.slice(l); - return i(f) + "ล้าน" + i(v); - } else - for (let l = 0; l < o; l++) { - const f = p[l]; - f > 0 && (u += n[f] + r[o - l - 1]); - } - return u; - } - function a(p) { - let u = p; - u = u.replace("หนึ่งสิบ", "สิบ"), u = u.replace("สองสิบ", "ยี่สิบ"); - const o = 5; - return u.length > o && u.length - u.lastIndexOf("หนึ่ง") === o && (u = u.substr(0, u.length - o) + "เอ็ด"), u; - } - function c(p, u) { - let o = ""; - return p === "" && u === "" ? o = e : p !== "" && u === "" ? o = p + "บาทถ้วน" : p === "" && u !== "" ? o = u + "สตางค์" : o = p + "บาท" + u + "สตางค์", o; - } - function h(p) { - let u = e; - if (isNaN(p) || p >= Number.MAX_SAFE_INTEGER) - return u; - const o = Math.floor(p).toString(), s = Math.round(p % 1 * 100).toString(), l = Array.from(o).map(Number), f = Array.from(s).map(Number); - let v = i(l), d = i(f); - return v = a(v), d = a(d), u = c(v, d), u; - } - t.exports != null && (t.exports = h); -})(Po); -var Na = Po.exports; -const Ce = he(), { FormulaHelpers: Aa, Types: Y, WildCard: hi } = ge(), q = Aa, lr = _o, ya = Na, pi = { - latin: { halfRE: /[!-~]/g, fullRE: /[!-~]/g, delta: 65248 }, - hangul1: { halfRE: /[ᄀ-ᄒ]/g, fullRE: /[ᆨ-ᇂ]/g, delta: -60921 }, - hangul2: { halfRE: /[ᅡ-ᅵ]/g, fullRE: /[ᅡ-ᅵ]/g, delta: -61025 }, - kana: { - delta: 0, - half: "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚", - full: "。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜" - }, - extras: { - delta: 0, - half: "¢£¬¯¦¥₩ |←↑→↓■°", - full: "¢£¬ ̄¦¥₩ │←↑→↓■○" - } -}, Ta = (t) => (e) => t.delta ? String.fromCharCode(e.charCodeAt(0) + t.delta) : [...t.full][[...t.half].indexOf(e)], wa = (t) => (e) => t.delta ? String.fromCharCode(e.charCodeAt(0) - t.delta) : [...t.half][[...t.full].indexOf(e)], ko = (t, e) => t[e + "RE"] || new RegExp("[" + t[e] + "]", "g"), xo = Object.keys(pi).map((t) => pi[t]), Ca = (t) => xo.reduce((e, n) => e.replace(ko(n, "half"), Ta(n)), t), Ia = (t) => xo.reduce((e, n) => e.replace(ko(n, "full"), wa(n)), t), ft = { - ASC: (t) => (t = q.accept(t, Y.STRING), Ia(t)), - BAHTTEXT: (t) => { - t = q.accept(t, Y.NUMBER); - try { - return ya(t); - } catch (e) { - throw Error(`Error in https://github.com/jojoee/bahttext -${e.toString()}`); - } - }, - CHAR: (t) => { - if (t = q.accept(t, Y.NUMBER), t > 255 || t < 1) - throw Ce.VALUE; - return String.fromCharCode(t); - }, - CLEAN: (t) => (t = q.accept(t, Y.STRING), t.replace(/[\x00-\x1F]/g, "")), - CODE: (t) => { - if (t = q.accept(t, Y.STRING), t.length === 0) - throw Ce.VALUE; - return t.charCodeAt(0); - }, - CONCAT: (...t) => { - let e = ""; - return q.flattenParams(t, Y.STRING, !1, (n) => { - n = q.accept(n, Y.STRING), e += n; - }), e; - }, - CONCATENATE: (...t) => { - let e = ""; - if (t.length === 0) - throw Error("CONCATENATE need at least one argument."); - return t.forEach((n) => { - n = q.accept(n, Y.STRING), e += n; - }), e; - }, - DBCS: (t) => (t = q.accept(t, Y.STRING), Ca(t)), - DOLLAR: (t, e) => { - t = q.accept(t, Y.NUMBER), e = q.accept(e, Y.NUMBER, 2); - const n = Array(e).fill("0").join(""); - return lr.format(`$#,##0.${n}_);($#,##0.${n})`, t).trim(); - }, - EXACT: (t, e) => (t = q.accept(t, [Y.STRING]), e = q.accept(e, [Y.STRING]), t === e), - FIND: (t, e, n) => { - if (t = q.accept(t, Y.STRING), e = q.accept(e, Y.STRING), n = q.accept(n, Y.NUMBER, 1), n < 1 || n > e.length) - throw Ce.VALUE; - const r = e.indexOf(t, n - 1); - if (r === -1) - throw Ce.VALUE; - return r + 1; - }, - FINDB: (...t) => ft.FIND(...t), - FIXED: (t, e, n) => { - t = q.accept(t, Y.NUMBER), e = q.accept(e, Y.NUMBER, 2), n = q.accept(n, Y.BOOLEAN, !1); - const r = Array(e).fill("0").join(""), i = n ? "" : "#,"; - return lr.format(`${i}##0.${r}_);(${i}##0.${r})`, t).trim(); - }, - LEFT: (t, e) => { - if (t = q.accept(t, Y.STRING), e = q.accept(e, Y.NUMBER, 1), e < 0) - throw Ce.VALUE; - return e > t.length ? t : t.slice(0, e); - }, - LEFTB: (...t) => ft.LEFT(...t), - LEN: (t) => (t = q.accept(t, Y.STRING), t.length), - LENB: (...t) => ft.LEN(...t), - LOWER: (t) => (t = q.accept(t, Y.STRING), t.toLowerCase()), - MID: (t, e, n) => { - if (t = q.accept(t, Y.STRING), e = q.accept(e, Y.NUMBER), n = q.accept(n, Y.NUMBER), e > t.length) - return ""; - if (e < 1 || n < 1) - throw Ce.VALUE; - return t.slice(e - 1, e + n - 1); - }, - MIDB: (...t) => ft.MID(...t), - NUMBERVALUE: (t, e, n) => { - if (t = q.accept(t, Y.STRING), e = q.accept(e, Y.STRING, "."), n = q.accept(n, Y.STRING, ","), t.length === 0) - return 0; - if (e.length === 0 || n.length === 0 || (e = e[0], n = n[0], e === n || t.indexOf(e) < t.lastIndexOf(n))) - throw Ce.VALUE; - const r = t.replace(n, "").replace(e, ".").replace(/[^\-0-9.%()]/g, "").match(/([(-]*)([0-9]*[.]*[0-9]+)([)]?)([%]*)/); - if (!r) - throw Ce.VALUE; - const i = r[1].length, a = r[3].length, c = r[4].length; - let h = Number(r[2]); - if (i > 1 || i && !a || !i && a || isNaN(h)) - throw Ce.VALUE; - return h = h / 100 ** c, i ? -h : h; - }, - PHONETIC: () => { - }, - PROPER: (t) => (t = q.accept(t, [Y.STRING]), t = t.toLowerCase(), t = t.charAt(0).toUpperCase() + t.slice(1), t.replace( - /(?:[^a-zA-Z])([a-zA-Z])/g, - (e) => e.toUpperCase() - )), - REPLACE: (t, e, n, r) => { - t = q.accept(t, [Y.STRING]), e = q.accept(e, [Y.NUMBER]), n = q.accept(n, [Y.NUMBER]), r = q.accept(r, [Y.STRING]); - let i = t.split(""); - return i.splice(e - 1, n, r), i.join(""); - }, - REPLACEB: (...t) => ft.REPLACE(...t), - REPT: (t, e) => { - t = q.accept(t, Y.STRING), e = q.accept(e, Y.NUMBER); - let n = ""; - for (let r = 0; r < e; r++) - n += t; - return n; - }, - RIGHT: (t, e) => { - if (t = q.accept(t, Y.STRING), e = q.accept(e, Y.NUMBER, 1), e < 0) - throw Ce.VALUE; - const n = t.length; - return e > n ? t : t.slice(n - e); - }, - RIGHTB: (...t) => ft.RIGHT(...t), - SEARCH: (t, e, n) => { - if (t = q.accept(t, Y.STRING), e = q.accept(e, Y.STRING), n = q.accept(n, Y.NUMBER, 1), n < 1 || n > e.length) - throw Ce.VALUE; - let r = hi.isWildCard(t) ? hi.toRegex(t, "i") : t; - const i = e.slice(n - 1).search(r); - if (i === -1) - throw Ce.VALUE; - return i + n; - }, - SEARCHB: (...t) => ft.SEARCH(...t), - SUBSTITUTE: (...t) => { - }, - T: (t) => (t = q.accept(t), typeof t == "string" ? t : ""), - TEXT: (t, e) => { - t = q.accept(t, Y.NUMBER), e = q.accept(e, Y.STRING); - try { - return lr.format(e, t); - } catch (n) { - throw console.error(n), Ce.VALUE; - } - }, - TEXTJOIN: (...t) => { - }, - TRIM: (t) => (t = q.accept(t, [Y.STRING]), t.replace(/^\s+|\s+$/g, "")), - UNICHAR: (t) => { - if (t = q.accept(t, [Y.NUMBER]), t <= 0) - throw Ce.VALUE; - return String.fromCharCode(t); - }, - UNICODE: (t) => ft.CODE(t) -}; -var So = ft; -const tn = he(), { FormulaHelpers: Pn } = ge(), Oa = { - unaryOp: (t, e, n) => { - let r = 1; - if (t.forEach((i) => { - if (i !== "+") - if (i === "-") - r = -r; - else - throw new Error(`Unrecognized prefix: ${i}`); - }), e == null && (e = 0), r === 1) - return e; - try { - e = Pn.acceptNumber(e, n); - } catch (i) { - if (i instanceof tn) - Array.isArray(e) && (e = e[0][0]); - else - throw i; - } - return typeof e == "number" && isNaN(e) ? tn.VALUE : -e; - } -}, Ma = { - percentOp: (t, e, n) => { - try { - t = Pn.acceptNumber(t, n); - } catch (r) { - if (r instanceof tn) - return r; - throw r; - } - if (e === "%") - return t / 100; - throw new Error(`Unrecognized postfix: ${e}`); - } -}, At = { boolean: 3, string: 2, number: 1 }, Ua = { - compareOp: (t, e, n, r, i) => { - t == null && (t = 0), n == null && (n = 0), r && (t = t[0][0]), i && (n = n[0][0]); - const a = typeof t, c = typeof n; - if (a === c) - switch (e) { - case "=": - return t === n; - case ">": - return t > n; - case "<": - return t < n; - case "<>": - return t !== n; - case "<=": - return t <= n; - case ">=": - return t >= n; - } - else - switch (e) { - case "=": - return !1; - case ">": - return At[a] > At[c]; - case "<": - return At[a] < At[c]; - case "<>": - return !0; - case "<=": - return At[a] <= At[c]; - case ">=": - return At[a] >= At[c]; - } - throw Error("Infix.compareOp: Should not reach here."); - }, - concatOp: (t, e, n, r, i) => { - t == null && (t = ""), n == null && (n = ""), r && (t = t[0][0]), i && (n = n[0][0]); - const a = typeof t, c = typeof n; - return a === "boolean" && (t = t ? "TRUE" : "FALSE"), c === "boolean" && (n = n ? "TRUE" : "FALSE"), "" + t + n; - }, - mathOp: (t, e, n, r, i) => { - t == null && (t = 0), n == null && (n = 0); - try { - t = Pn.acceptNumber(t, r), n = Pn.acceptNumber(n, i); - } catch (a) { - if (a instanceof tn) - return a; - throw a; - } - switch (e) { - case "+": - return t + n; - case "-": - return t - n; - case "*": - return t * n; - case "/": - return n === 0 ? tn.DIV0 : t / n; - case "^": - return t ** n; - } - throw Error("Infix.mathOp: Should not reach here."); - } -}; -var Dr = { - Prefix: Oa, - Postfix: Ma, - Infix: Ua, - Operators: { - compareOp: ["<", ">", "=", "<>", "<=", ">="], - concatOp: ["&"], - mathOp: ["+", "-", "*", "/", "^"] - } -}; -const Q = he(), { FormulaHelpers: La, Types: P, Factorials: Bo, Criteria: _a } = ge(), { Infix: Pa } = Dr, L = La, ur = [], fr = []; -function Cn(t) { - return t <= 100 ? Bo[t] : ur[t] > 0 ? ur[t] : ur[t] = Cn(t - 1) * t; -} -function Fo(t) { - return t === 1 || t === 0 ? 1 : t === 2 ? 2 : fr[t] > 0 ? fr[t] : fr[t] = Fo(t - 2) * t; -} -const Pe = { - ABS: (t) => (t = L.accept(t, P.NUMBER), Math.abs(t)), - AGGREGATE: (t, e, n, ...r) => { - }, - ARABIC: (t) => { - if (t = L.accept(t, P.STRING).toUpperCase(), !/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(t)) - throw new Q("#VALUE!", "Invalid roman numeral in ARABIC evaluation."); - let e = 0; - return t.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, function(n) { - e += { - M: 1e3, - CM: 900, - D: 500, - CD: 400, - C: 100, - XC: 90, - L: 50, - XL: 40, - X: 10, - IX: 9, - V: 5, - IV: 4, - I: 1 - }[n]; - }), e; - }, - BASE: (t, e, n) => { - if (t = L.accept(t, P.NUMBER), t < 0 || t >= 2 ** 53 || (e = L.accept(e, P.NUMBER), e < 2 || e > 36) || (n = L.accept(n, P.NUMBER, 0), n < 0)) - throw Q.NUM; - const r = t.toString(e).toUpperCase(); - return new Array(Math.max(n + 1 - r.length, 0)).join("0") + r; - }, - CEILING: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), e === 0) - return 0; - if (t / e % 1 === 0) - return t; - const n = Math.abs(e), r = Math.floor(Math.abs(t) / n); - return t < 0 ? e < 0 ? -n * (r + 1) : -n * r : (r + 1) * n; - }, - "CEILING.MATH": (t, e, n) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER, t > 0 ? 1 : -1), n = L.accept(n, P.NUMBER, 0), t >= 0) - return Pe.CEILING(t, e); - const r = n ? e : 0; - return Pe.CEILING(t, e) - r; - }, - "CEILING.PRECISE": (t, e) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER, 1), Pe.CEILING(t, Math.abs(e))), - COMBIN: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), t < 0 || e < 0 || t < e) - throw Q.NUM; - const n = Pe.FACT(t), r = Pe.FACT(e); - return n / r / Pe.FACT(t - e); - }, - COMBINA: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), (t === 0 || t === 1) && e === 0) - return 1; - if (t < 0 || e < 0) - throw Q.NUM; - return Pe.COMBIN(t + e - 1, t - 1); - }, - DECIMAL: (t, e) => { - if (t = L.accept(t, P.STRING), e = L.accept(e, P.NUMBER), e = Math.trunc(e), e < 2 || e > 36) - throw Q.NUM; - const n = parseInt(t, e); - if (isNaN(n)) - throw Q.NUM; - return n; - }, - DEGREES: (t) => (t = L.accept(t, P.NUMBER), t * (180 / Math.PI)), - EVEN: (t) => Pe.CEILING(t, -2), - EXP: (t) => (t = L.accept(t, P.NUMBER), Math.exp(t)), - FACT: (t) => { - if (t = L.accept(t, P.NUMBER), t = Math.trunc(t), t > 170 || t < 0) - throw Q.NUM; - return t <= 100 ? Bo[t] : Cn(t); - }, - FACTDOUBLE: (t) => { - if (t = L.accept(t, P.NUMBER), t = Math.trunc(t), t < -1) - throw Q.NUM; - return t === -1 ? 1 : Fo(t); - }, - FLOOR: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), e === 0) - return 0; - if (t > 0 && e < 0) - throw Q.NUM; - if (t / e % 1 === 0) - return t; - const n = Math.abs(e), r = Math.floor(Math.abs(t) / n); - return t < 0 ? e < 0 ? -n * r : -n * (r + 1) : r * n; - }, - "FLOOR.MATH": (t, e, n) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER, t > 0 ? 1 : -1), n = L.accept(n, P.NUMBER, 0), n === 0 || t >= 0 ? Pe.FLOOR(t, Math.abs(e)) : Pe.FLOOR(t, e) + e), - "FLOOR.PRECISE": (t, e) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER, 1), Pe.FLOOR(t, Math.abs(e))), - GCD: (...t) => { - const e = []; - L.flattenParams( - t, - null, - !1, - (c) => { - if (c = typeof c == "boolean" ? NaN : Number(c), isNaN(c)) - throw Q.VALUE; - if (c < 0 || c > 9007199254740990) - throw Q.NUM; - e.push(Math.trunc(c)); - }, - 0 - ); - let n, r, i = t.length, a = Math.abs(e[0]); - for (n = 1; n < i; n++) { - for (r = Math.abs(e[n]); a && r; ) - a > r ? a %= r : r %= a; - a += r; - } - return a; - }, - INT: (t) => (t = L.accept(t, P.NUMBER), Math.floor(t)), - "ISO.CEILING": (...t) => Pe["CEILING.PRECISE"](...t), - LCM: (...t) => { - const e = []; - L.flattenParams( - t, - null, - !1, - (i) => { - if (i = typeof i == "boolean" ? NaN : Number(i), isNaN(i)) - throw Q.VALUE; - if (i < 0 || i > 9007199254740990) - throw Q.NUM; - e.push(Math.trunc(i)); - }, - 1 - ); - let n = e.length, r = Math.abs(e[0]); - for (let i = 1; i < n; i++) { - let a = Math.abs(e[i]), c = r; - for (; r && a; ) - r > a ? r %= a : a %= r; - r = Math.abs(c * e[i]) / (r + a); - } - return r; - }, - LN: (t) => (t = L.accept(t, P.NUMBER), Math.log(t)), - LOG: (t, e) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER, 10), Math.log(t) / Math.log(e)), - LOG10: (t) => (t = L.accept(t, P.NUMBER), Math.log10(t)), - MDETERM: (t) => { - if (t = L.accept(t, P.ARRAY, void 0, !1, !0), t[0].length !== t.length) - throw Q.VALUE; - const e = t.length, n = t[0].length; - let r = 0, i, a; - if (e === 1) - return t[0][0]; - if (e === 2) - return t[0][0] * t[1][1] - t[0][1] * t[1][0]; - for (let c = 0; c < n; c++) { - i = t[0][c], a = t[0][c]; - for (let h = 1; h < e; h++) - a *= t[h][((c + h) % n + n) % n], i *= t[h][((c - h) % n + n) % n]; - r += a - i; - } - return r; - }, - MINVERSE: (t) => { - }, - MMULT: (t, e) => { - t = L.accept(t, P.ARRAY, void 0, !1, !0), e = L.accept(e, P.ARRAY, void 0, !1, !0); - const n = t.length, r = t[0].length, i = e.length, a = e[0].length, c = new Array(n); - if (r !== i) - throw Q.VALUE; - for (let h = 0; h < n; h++) { - c[h] = new Array(a); - for (let p = 0; p < a; p++) { - c[h][p] = 0; - for (let u = 0; u < r; u++) { - const o = t[h][u], s = e[u][p]; - if (typeof o != "number" || typeof s != "number") - throw Q.VALUE; - c[h][p] += t[h][u] * e[u][p]; - } - } - } - return c; - }, - MOD: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), e === 0) - throw Q.DIV0; - return t - e * Pe.INT(t / e); - }, - MROUND: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), e === 0) - return 0; - if (t > 0 && e < 0 || t < 0 && e > 0) - throw Q.NUM; - return t / e % 1 === 0 ? t : Math.round(t / e) * e; - }, - MULTINOMIAL: (...t) => { - let e = 0, n = 1; - return L.flattenParams(t, P.NUMBER, !1, (r) => { - if (r < 0) - throw Q.NUM; - e += r, n *= Cn(r); - }), Cn(e) / n; - }, - MUNIT: (t) => { - t = L.accept(t, P.NUMBER); - const e = []; - for (let n = 0; n < t; n++) { - const r = []; - for (let i = 0; i < t; i++) - n === i ? r.push(1) : r.push(0); - e.push(r); - } - return e; - }, - ODD: (t) => { - if (t = L.accept(t, P.NUMBER), t === 0) - return 1; - let e = Math.ceil(Math.abs(t)); - return e = e & 1 ? e : e + 1, t > 0 ? e : -e; - }, - PI: () => Math.PI, - POWER: (t, e) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), t ** e), - PRODUCT: (...t) => { - let e = 1; - return L.flattenParams(t, null, !0, (n, r) => { - const i = Number(n); - r.isLiteral && !isNaN(i) ? e *= i : typeof n == "number" && (e *= n); - }, 1), e; - }, - QUOTIENT: (t, e) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), Math.trunc(t / e)), - RADIANS: (t) => (t = L.accept(t, P.NUMBER), t / 180 * Math.PI), - RAND: () => Math.random(), - RANDBETWEEN: (t, e) => (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), Math.floor(Math.random() * (e - t + 1) + t)), - ROMAN: (t, e) => { - if (t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER, 0), e !== 0) - throw Error("ROMAN: only allows form=0 (classic form)."); - const n = String(t).split(""), r = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"]; - let i = "", a = 3; - for (; a--; ) - i = (r[+n.pop() + a * 10] || "") + i; - return new Array(+n.join("") + 1).join("M") + i; - }, - ROUND: (t, e) => { - t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER); - const n = Math.pow(10, Math.abs(e)), r = t > 0 ? 1 : -1; - return e > 0 ? r * Math.round(Math.abs(t) * n) / n : e === 0 ? r * Math.round(Math.abs(t)) : r * Math.round(Math.abs(t) / n) * n; - }, - ROUNDDOWN: (t, e) => { - t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER); - const n = Math.pow(10, Math.abs(e)), r = t > 0 ? 1 : -1; - if (e > 0) { - const i = 1 / n * 0.5; - return r * Math.round((Math.abs(t) - i) * n) / n; - } else { - if (e === 0) - return r * Math.round(Math.abs(t) - 0.5); - { - const i = n * 0.5; - return r * Math.round((Math.abs(t) - i) / n) * n; - } - } - }, - ROUNDUP: (t, e) => { - t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER); - const n = Math.pow(10, Math.abs(e)), r = t > 0 ? 1 : -1; - if (e > 0) { - const i = 1 / n * 0.5; - return r * Math.round((Math.abs(t) + i) * n) / n; - } else { - if (e === 0) - return r * Math.round(Math.abs(t) + 0.5); - { - const i = n * 0.5; - return r * Math.round((Math.abs(t) + i) / n) * n; - } - } - }, - SERIESSUM: (t, e, n, r) => { - t = L.accept(t, P.NUMBER), e = L.accept(e, P.NUMBER), n = L.accept(n, P.NUMBER); - let i = 0, a; - return L.flattenParams([r], P.NUMBER, !1, (c) => { - if (typeof c != "number") - throw Q.VALUE; - i === 0 ? a = c * Math.pow(t, e) : a += c * Math.pow(t, e + i * n), i++; - }), a; - }, - SIGN: (t) => (t = L.accept(t, P.NUMBER), t > 0 ? 1 : t === 0 ? 0 : -1), - SQRT: (t) => { - if (t = L.accept(t, P.NUMBER), t < 0) - throw Q.NUM; - return Math.sqrt(t); - }, - SQRTPI: (t) => { - if (t = L.accept(t, P.NUMBER), t < 0) - throw Q.NUM; - return Math.sqrt(t * Math.PI); - }, - SUBTOTAL: () => { - }, - SUM: (...t) => { - let e = 0; - return L.flattenParams( - t, - P.NUMBER, - !0, - (n, r) => { - (r.isLiteral || typeof n == "number") && (e += n); - } - ), e; - }, - /** - * This functions requires instance of {@link FormulaParser}. - */ - SUMIF: (t, e, n, r) => { - const i = L.retrieveRanges(t, e, r); - e = i[0], r = i[1], n = L.retrieveArg(t, n); - const a = n.isArray; - n = _a.parse(L.accept(n)); - let c = 0; - return e.forEach((h, p) => { - h.forEach((u, o) => { - const s = r[p][o]; - typeof s == "number" && (n.op === "wc" ? n.match === n.value.test(u) && (c += s) : Pa.compareOp(u, n.op, n.value, Array.isArray(u), a) && (c += s)); - }); - }), c; - }, - SUMIFS: () => { - }, - SUMPRODUCT: (t, ...e) => { - t = L.accept(t, P.ARRAY, void 0, !1, !0), e.forEach((r) => { - if (r = L.accept(r, P.ARRAY, void 0, !1, !0), t[0].length !== r[0].length || t.length !== r.length) - throw Q.VALUE; - for (let i = 0; i < t.length; i++) - for (let a = 0; a < t[0].length; a++) - typeof t[i][a] != "number" && (t[i][a] = 0), typeof r[i][a] != "number" && (r[i][a] = 0), t[i][a] *= r[i][a]; - }); - let n = 0; - return t.forEach((r) => { - r.forEach((i) => { - n += i; - }); - }), n; - }, - SUMSQ: (...t) => { - let e = 0; - return L.flattenParams( - t, - P.NUMBER, - !0, - (n, r) => { - (r.isLiteral || typeof n == "number") && (e += n ** 2); - } - ), e; - }, - SUMX2MY2: (t, e) => { - const n = [], r = []; - let i = 0; - if (L.flattenParams([t], null, !1, (a, c) => { - n.push(a); - }), L.flattenParams([e], null, !1, (a, c) => { - r.push(a); - }), n.length !== r.length) - throw Q.NA; - for (let a = 0; a < n.length; a++) - typeof n[a] == "number" && typeof r[a] == "number" && (i += n[a] ** 2 - r[a] ** 2); - return i; - }, - SUMX2PY2: (t, e) => { - const n = [], r = []; - let i = 0; - if (L.flattenParams([t], null, !1, (a, c) => { - n.push(a); - }), L.flattenParams([e], null, !1, (a, c) => { - r.push(a); - }), n.length !== r.length) - throw Q.NA; - for (let a = 0; a < n.length; a++) - typeof n[a] == "number" && typeof r[a] == "number" && (i += n[a] ** 2 + r[a] ** 2); - return i; - }, - SUMXMY2: (t, e) => { - const n = [], r = []; - let i = 0; - if (L.flattenParams([t], null, !1, (a, c) => { - n.push(a); - }), L.flattenParams([e], null, !1, (a, c) => { - r.push(a); - }), n.length !== r.length) - throw Q.NA; - for (let a = 0; a < n.length; a++) - typeof n[a] == "number" && typeof r[a] == "number" && (i += (n[a] - r[a]) ** 2); - return i; - }, - TRUNC: (t) => (t = L.accept(t, P.NUMBER), Math.trunc(t)) -}; -var bo = Pe; -const Ie = he(), { FormulaHelpers: ka, Types: ie } = ge(), oe = ka, Vt = 2 ** 27 - 1, xa = { - ACOS: (t) => { - if (t = oe.accept(t, ie.NUMBER), t > 1 || t < -1) - throw Ie.NUM; - return Math.acos(t); - }, - ACOSH: (t) => { - if (t = oe.accept(t, ie.NUMBER), t < 1) - throw Ie.NUM; - return Math.acosh(t); - }, - ACOT: (t) => (t = oe.accept(t, ie.NUMBER), Math.PI / 2 - Math.atan(t)), - ACOTH: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) <= 1) - throw Ie.NUM; - return Math.atanh(1 / t); - }, - ASIN: (t) => { - if (t = oe.accept(t, ie.NUMBER), t > 1 || t < -1) - throw Ie.NUM; - return Math.asin(t); - }, - ASINH: (t) => (t = oe.accept(t, ie.NUMBER), Math.asinh(t)), - ATAN: (t) => (t = oe.accept(t, ie.NUMBER), Math.atan(t)), - ATAN2: (t, e) => { - if (t = oe.accept(t, ie.NUMBER), e = oe.accept(e, ie.NUMBER), e === 0 && t === 0) - throw Ie.DIV0; - return Math.atan2(e, t); - }, - ATANH: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > 1) - throw Ie.NUM; - return Math.atanh(t); - }, - COS: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > Vt) - throw Ie.NUM; - return Math.cos(t); - }, - COSH: (t) => (t = oe.accept(t, ie.NUMBER), Math.cosh(t)), - COT: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > Vt) - throw Ie.NUM; - if (t === 0) - throw Ie.DIV0; - return 1 / Math.tan(t); - }, - COTH: (t) => { - if (t = oe.accept(t, ie.NUMBER), t === 0) - throw Ie.DIV0; - return 1 / Math.tanh(t); - }, - CSC: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > Vt) - throw Ie.NUM; - return 1 / Math.sin(t); - }, - CSCH: (t) => { - if (t = oe.accept(t, ie.NUMBER), t === 0) - throw Ie.DIV0; - return 1 / Math.sinh(t); - }, - SEC: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > Vt) - throw Ie.NUM; - return 1 / Math.cos(t); - }, - SECH: (t) => (t = oe.accept(t, ie.NUMBER), 1 / Math.cosh(t)), - SIN: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > Vt) - throw Ie.NUM; - return Math.sin(t); - }, - SINH: (t) => (t = oe.accept(t, ie.NUMBER), Math.sinh(t)), - TAN: (t) => { - if (t = oe.accept(t, ie.NUMBER), Math.abs(t) > Vt) - throw Ie.NUM; - return Math.tan(t); - }, - TANH: (t) => (t = oe.accept(t, ie.NUMBER), Math.tanh(t)) -}; -var Sa = xa; -const yt = he(), { FormulaHelpers: Ba, Types: hr } = ge(), ze = Ba; -function pr(t) { - let e = 0, n = 0; - return ze.flattenParams(t, null, !0, (r) => { - const i = typeof r; - i === "string" ? r === "TRUE" ? r = !0 : r === "FALSE" && (r = !1) : i === "number" && (r = !!r), typeof r == "boolean" && (r === !0 ? e++ : n++); - }), [e, n]; -} -const Fa = { - AND: (...t) => { - const [e, n] = pr(t); - return e === 0 && n === 0 ? yt.VALUE : e > 0 && n === 0; - }, - FALSE: () => !1, - // Special - IF: (t, e, n, r) => (e = ze.accept(e, hr.BOOLEAN), n = ze.accept(n), r = ze.accept(r, null, !1), e ? n : r), - IFERROR: (t, e) => t.value instanceof yt ? ze.accept(e) : ze.accept(t), - IFNA: function(t, e) { - if (arguments.length > 2) - throw yt.TOO_MANY_ARGS("IFNA"); - return yt.NA.equals(t.value) ? ze.accept(e) : ze.accept(t); - }, - IFS: (...t) => { - if (t.length % 2 !== 0) - return new yt("#N/A", "IFS expects all arguments after position 0 to be in pairs."); - for (let e = 0; e < t.length / 2; e++) { - const n = ze.accept(t[e * 2], hr.BOOLEAN), r = ze.accept(t[e * 2 + 1]); - if (n) - return r; - } - return yt.NA; - }, - NOT: (t) => (t = ze.accept(t, hr.BOOLEAN), !t), - OR: (...t) => { - const [e, n] = pr(t); - return e === 0 && n === 0 ? yt.VALUE : e > 0; - }, - SWITCH: (...t) => { - }, - TRUE: () => !0, - XOR: (...t) => { - const [e, n] = pr(t); - return e === 0 && n === 0 ? yt.VALUE : e % 2 === 1; - } -}; -var ba = Fa, Do = {}; -(function(t) { - (function(e) { - e(typeof DO_NOT_EXPORT_BESSEL > "u" ? t : {}); - })(function(e) { - e.version = "1.0.2"; - var n = Math; - function r(o, s) { - for (var l = 0, f = 0; l < o.length; ++l) - f = s * f + o[l]; - return f; - } - function i(o, s, l, f, v) { - if (s === 0) - return l; - if (s === 1) - return f; - for (var d = 2 / o, g = f, E = 1; E < s; ++E) - g = f * E * d + v * l, l = f, f = g; - return g; - } - function a(o, s, l, f, v) { - return function(g, E) { - if (f) { - if (g === 0) - return f == 1 ? -1 / 0 : 1 / 0; - if (g < 0) - return NaN; - } - if (E === 0) - return o(g); - if (E === 1) - return s(g); - if (E < 0) - return NaN; - E |= 0; - var A = o(g), m = s(g); - return i(g, E, A, m, v); - }; - } - var c = function() { - var o = 0.636619772, s = [57568490574, -13362590354, 6516196407e-1, -1121442418e-2, 77392.33017, -184.9052456].reverse(), l = [57568490411, 1029532985, 9494680718e-3, 59272.64853, 267.8532712, 1].reverse(), f = [1, -0.001098628627, 2734510407e-14, -2073370639e-15, 2093887211e-16].reverse(), v = [-0.01562499995, 1430488765e-13, -6911147651e-15, 7621095161e-16, -934935152e-16].reverse(); - function d(y) { - var R = 0, T = 0, w = 0, C = y * y; - if (y < 8) - T = r(s, C), w = r(l, C), R = T / w; - else { - var M = y - 0.785398164; - C = 64 / C, T = r(f, C), w = r(v, C), R = n.sqrt(o / y) * (n.cos(M) * T - n.sin(M) * w * 8 / y); - } - return R; - } - var g = [72362614232, -7895059235, 2423968531e-1, -2972611439e-3, 15704.4826, -30.16036606].reverse(), E = [144725228442, 2300535178, 1858330474e-2, 99447.43394, 376.9991397, 1].reverse(), A = [1, 183105e-8, -3516396496e-14, 2457520174e-15, -240337019e-15].reverse(), m = [0.04687499995, -2002690873e-13, 8449199096e-15, -88228987e-14, 105787412e-15].reverse(); - function N(y) { - var R = 0, T = 0, w = 0, C = y * y, M = n.abs(y) - 2.356194491; - return Math.abs(y) < 8 ? (T = y * r(g, C), w = r(E, C), R = T / w) : (C = 64 / C, T = r(A, C), w = r(m, C), R = n.sqrt(o / n.abs(y)) * (n.cos(M) * T - n.sin(M) * w * 8 / n.abs(y)), y < 0 && (R = -R)), R; - } - return function y(R, T) { - if (T = Math.round(T), !isFinite(R)) - return isNaN(R) ? R : 0; - if (T < 0) - return (T % 2 ? -1 : 1) * y(R, -T); - if (R < 0) - return (T % 2 ? -1 : 1) * y(-R, T); - if (T === 0) - return d(R); - if (T === 1) - return N(R); - if (R === 0) - return 0; - var w = 0; - if (R > T) - w = i(R, T, d(R), N(R), -1); - else { - for (var C = 2 * n.floor((T + n.floor(n.sqrt(40 * T))) / 2), M = !1, _ = 0, W = 0, F = 1, S = 0, G = 2 / R, J = C; J > 0; J--) - S = J * G * F - _, _ = F, F = S, n.abs(F) > 1e10 && (F *= 1e-10, _ *= 1e-10, w *= 1e-10, W *= 1e-10), M && (W += F), M = !M, J == T && (w = _); - W = 2 * W - F, w /= W; - } - return w; - }; - }(), h = function() { - var o = 0.636619772, s = [-2957821389, 7062834065, -5123598036e-1, 1087988129e-2, -86327.92757, 228.4622733].reverse(), l = [40076544269, 7452499648e-1, 7189466438e-3, 47447.2647, 226.1030244, 1].reverse(), f = [1, -0.001098628627, 2734510407e-14, -2073370639e-15, 2093887211e-16].reverse(), v = [-0.01562499995, 1430488765e-13, -6911147651e-15, 7621095161e-16, -934945152e-16].reverse(); - function d(y) { - var R = 0, T = 0, w = 0, C = y * y, M = y - 0.785398164; - return y < 8 ? (T = r(s, C), w = r(l, C), R = T / w + o * c(y, 0) * n.log(y)) : (C = 64 / C, T = r(f, C), w = r(v, C), R = n.sqrt(o / y) * (n.sin(M) * T + n.cos(M) * w * 8 / y)), R; - } - var g = [-4900604943e3, 127527439e4, -51534381390, 7349264551e-1, -4237922726e-3, 8511.937935].reverse(), E = [249958057e5, 424441966400, 3733650367, 2245904002e-2, 102042.605, 354.9632885, 1].reverse(), A = [1, 183105e-8, -3516396496e-14, 2457520174e-15, -240337019e-15].reverse(), m = [0.04687499995, -2002690873e-13, 8449199096e-15, -88228987e-14, 105787412e-15].reverse(); - function N(y) { - var R = 0, T = 0, w = 0, C = y * y, M = y - 2.356194491; - return y < 8 ? (T = y * r(g, C), w = r(E, C), R = T / w + o * (c(y, 1) * n.log(y) - 1 / y)) : (C = 64 / C, T = r(A, C), w = r(m, C), R = n.sqrt(o / y) * (n.sin(M) * T + n.cos(M) * w * 8 / y)), R; - } - return a(d, N, "BESSELY", 1, -1); - }(), p = function() { - var o = [1, 3.5156229, 3.0899424, 1.2067492, 0.2659732, 0.0360768, 45813e-7].reverse(), s = [0.39894228, 0.01328592, 225319e-8, -157565e-8, 916281e-8, -0.02057706, 0.02635537, -0.01647633, 392377e-8].reverse(); - function l(g) { - return g <= 3.75 ? r(o, g * g / (3.75 * 3.75)) : n.exp(n.abs(g)) / n.sqrt(n.abs(g)) * r(s, 3.75 / n.abs(g)); - } - var f = [0.5, 0.87890594, 0.51498869, 0.15084934, 0.02658733, 301532e-8, 32411e-8].reverse(), v = [0.39894228, -0.03988024, -362018e-8, 163801e-8, -0.01031555, 0.02282967, -0.02895312, 0.01787654, -420059e-8].reverse(); - function d(g) { - return g < 3.75 ? g * r(f, g * g / (3.75 * 3.75)) : (g < 0 ? -1 : 1) * n.exp(n.abs(g)) / n.sqrt(n.abs(g)) * r(v, 3.75 / n.abs(g)); - } - return function g(E, A) { - if (A = Math.round(A), A === 0) - return l(E); - if (A === 1) - return d(E); - if (A < 0) - return NaN; - if (n.abs(E) === 0) - return 0; - if (E == 1 / 0) - return 1 / 0; - var m = 0, N, y = 2 / n.abs(E), R = 0, T = 1, w = 0, C = 2 * n.round((A + n.round(n.sqrt(40 * A))) / 2); - for (N = C; N > 0; N--) - w = N * y * T + R, R = T, T = w, n.abs(T) > 1e10 && (T *= 1e-10, R *= 1e-10, m *= 1e-10), N == A && (m = R); - return m *= g(E, 0) / T, E < 0 && A % 2 ? -m : m; - }; - }(), u = function() { - var o = [-0.57721566, 0.4227842, 0.23069756, 0.0348859, 262698e-8, 1075e-7, 74e-7].reverse(), s = [1.25331414, -0.07832358, 0.02189568, -0.01062446, 587872e-8, -25154e-7, 53208e-8].reverse(); - function l(g) { - return g <= 2 ? -n.log(g / 2) * p(g, 0) + r(o, g * g / 4) : n.exp(-g) / n.sqrt(g) * r(s, 2 / g); - } - var f = [1, 0.15443144, -0.67278579, -0.18156897, -0.01919402, -110404e-8, -4686e-8].reverse(), v = [1.25331414, 0.23498619, -0.0365562, 0.01504268, -780353e-8, 325614e-8, -68245e-8].reverse(); - function d(g) { - return g <= 2 ? n.log(g / 2) * p(g, 1) + 1 / g * r(f, g * g / 4) : n.exp(-g) / n.sqrt(g) * r(v, 2 / g); - } - return a(l, d, "BESSELK", 2, 1); - }(); - e.besselj = c, e.bessely = h, e.besseli = p, e.besselk = u; - }); -})(Do); -var Vo = { exports: {} }; -(function(t, e) { - (function(n, r) { - t.exports = r(); - })(Ro, function() { - var n = function(r, i) { - var a = Array.prototype.concat, c = Array.prototype.slice, h = Object.prototype.toString; - function p(A, m) { - var N = A > m ? A : m; - return r.pow( - 10, - 17 - ~~(r.log(N > 0 ? N : -N) * r.LOG10E) - ); - } - var u = Array.isArray || function(m) { - return h.call(m) === "[object Array]"; - }; - function o(A) { - return h.call(A) === "[object Function]"; - } - function s(A) { - return typeof A == "number" ? A - A === 0 : !1; - } - function l(A) { - return a.apply([], A); - } - function f() { - return new f._init(arguments); - } - f.fn = f.prototype, f._init = function(m) { - if (u(m[0])) - if (u(m[0][0])) { - o(m[1]) && (m[0] = f.map(m[0], m[1])); - for (var N = 0; N < m[0].length; N++) - this[N] = m[0][N]; - this.length = m[0].length; - } else - this[0] = o(m[1]) ? f.map(m[0], m[1]) : m[0], this.length = 1; - else if (s(m[0])) - this[0] = f.seq.apply(null, m), this.length = 1; - else { - if (m[0] instanceof f) - return f(m[0].toArray()); - this[0] = [], this.length = 1; - } - return this; - }, f._init.prototype = f.prototype, f._init.constructor = f, f.utils = { - calcRdx: p, - isArray: u, - isFunction: o, - isNumber: s, - toVector: l - }, f._random_fn = r.random, f.setRandom = function(m) { - if (typeof m != "function") - throw new TypeError("fn is not a function"); - f._random_fn = m; - }, f.extend = function(m) { - var N, y; - if (arguments.length === 1) { - for (y in m) - f[y] = m[y]; - return this; - } - for (N = 1; N < arguments.length; N++) - for (y in arguments[N]) - m[y] = arguments[N][y]; - return m; - }, f.rows = function(m) { - return m.length || 1; - }, f.cols = function(m) { - return m[0].length || 1; - }, f.dimensions = function(m) { - return { - rows: f.rows(m), - cols: f.cols(m) - }; - }, f.row = function(m, N) { - return u(N) ? N.map(function(y) { - return f.row(m, y); - }) : m[N]; - }, f.rowa = function(m, N) { - return f.row(m, N); - }, f.col = function(m, N) { - if (u(N)) { - var y = f.arange(m.length).map(function() { - return new Array(N.length); - }); - return N.forEach(function(w, C) { - f.arange(m.length).forEach(function(M) { - y[M][C] = m[M][w]; - }); - }), y; - } - for (var R = new Array(m.length), T = 0; T < m.length; T++) - R[T] = [m[T][N]]; - return R; - }, f.cola = function(m, N) { - return f.col(m, N).map(function(y) { - return y[0]; - }); - }, f.diag = function(m) { - for (var N = f.rows(m), y = new Array(N), R = 0; R < N; R++) - y[R] = [m[R][R]]; - return y; - }, f.antidiag = function(m) { - for (var N = f.rows(m) - 1, y = new Array(N), R = 0; N >= 0; N--, R++) - y[R] = [m[R][N]]; - return y; - }, f.transpose = function(m) { - var N = [], y, R, T, w, C; - for (u(m[0]) || (m = [m]), R = m.length, T = m[0].length, C = 0; C < T; C++) { - for (y = new Array(R), w = 0; w < R; w++) - y[w] = m[w][C]; - N.push(y); - } - return N.length === 1 ? N[0] : N; - }, f.map = function(m, N, y) { - var R, T, w, C, M; - for (u(m[0]) || (m = [m]), T = m.length, w = m[0].length, C = y ? m : new Array(T), R = 0; R < T; R++) - for (C[R] || (C[R] = new Array(w)), M = 0; M < w; M++) - C[R][M] = N(m[R][M], R, M); - return C.length === 1 ? C[0] : C; - }, f.cumreduce = function(m, N, y) { - var R, T, w, C, M; - for (u(m[0]) || (m = [m]), T = m.length, w = m[0].length, C = y ? m : new Array(T), R = 0; R < T; R++) - for (C[R] || (C[R] = new Array(w)), w > 0 && (C[R][0] = m[R][0]), M = 1; M < w; M++) - C[R][M] = N(C[R][M - 1], m[R][M]); - return C.length === 1 ? C[0] : C; - }, f.alter = function(m, N) { - return f.map(m, N, !0); - }, f.create = function(m, N, y) { - var R = new Array(m), T, w; - for (o(N) && (y = N, N = m), T = 0; T < m; T++) - for (R[T] = new Array(N), w = 0; w < N; w++) - R[T][w] = y(T, w); - return R; - }; - function v() { - return 0; - } - f.zeros = function(m, N) { - return s(N) || (N = m), f.create(m, N, v); - }; - function d() { - return 1; - } - f.ones = function(m, N) { - return s(N) || (N = m), f.create(m, N, d); - }, f.rand = function(m, N) { - return s(N) || (N = m), f.create(m, N, f._random_fn); - }; - function g(A, m) { - return A === m ? 1 : 0; - } - f.identity = function(m, N) { - return s(N) || (N = m), f.create(m, N, g); - }, f.symmetric = function(m) { - var N = m.length, y, R; - if (m.length !== m[0].length) - return !1; - for (y = 0; y < N; y++) - for (R = 0; R < N; R++) - if (m[R][y] !== m[y][R]) - return !1; - return !0; - }, f.clear = function(m) { - return f.alter(m, v); - }, f.seq = function(m, N, y, R) { - o(R) || (R = !1); - var T = [], w = p(m, N), C = (N * w - m * w) / ((y - 1) * w), M = m, _; - for (_ = 0; M <= N && _ < y; _++, M = (m * w + C * w * _) / w) - T.push(R ? R(M, _) : M); - return T; - }, f.arange = function(m, N, y) { - var R = [], T; - if (y = y || 1, N === i && (N = m, m = 0), m === N || y === 0) - return []; - if (m < N && y < 0) - return []; - if (m > N && y > 0) - return []; - if (y > 0) - for (T = m; T < N; T += y) - R.push(T); - else - for (T = m; T > N; T += y) - R.push(T); - return R; - }, f.slice = function() { - function A(N, y, R, T) { - var w, C = [], M = N.length; - if (y === i && R === i && T === i) - return f.copy(N); - if (y = y || 0, R = R || N.length, y = y >= 0 ? y : M + y, R = R >= 0 ? R : M + R, T = T || 1, y === R || T === 0) - return []; - if (y < R && T < 0) - return []; - if (y > R && T > 0) - return []; - if (T > 0) - for (w = y; w < R; w += T) - C.push(N[w]); - else - for (w = y; w > R; w += T) - C.push(N[w]); - return C; - } - function m(N, y) { - var R, T; - if (y = y || {}, s(y.row)) { - if (s(y.col)) - return N[y.row][y.col]; - var w = f.rowa(N, y.row); - return R = y.col || {}, A(w, R.start, R.end, R.step); - } - if (s(y.col)) { - var C = f.cola(N, y.col); - return T = y.row || {}, A(C, T.start, T.end, T.step); - } - T = y.row || {}, R = y.col || {}; - var M = A(N, T.start, T.end, T.step); - return M.map(function(_) { - return A(_, R.start, R.end, R.step); - }); - } - return m; - }(), f.sliceAssign = function(m, N, y) { - var R, T; - if (s(N.row)) { - if (s(N.col)) - return m[N.row][N.col] = y; - N.col = N.col || {}, N.col.start = N.col.start || 0, N.col.end = N.col.end || m[0].length, N.col.step = N.col.step || 1, R = f.arange( - N.col.start, - r.min(m.length, N.col.end), - N.col.step - ); - var w = N.row; - return R.forEach(function(M, _) { - m[w][M] = y[_]; - }), m; - } - if (s(N.col)) { - N.row = N.row || {}, N.row.start = N.row.start || 0, N.row.end = N.row.end || m.length, N.row.step = N.row.step || 1, T = f.arange( - N.row.start, - r.min(m[0].length, N.row.end), - N.row.step - ); - var C = N.col; - return T.forEach(function(M, _) { - m[M][C] = y[_]; - }), m; - } - return y[0].length === i && (y = [y]), N.row.start = N.row.start || 0, N.row.end = N.row.end || m.length, N.row.step = N.row.step || 1, N.col.start = N.col.start || 0, N.col.end = N.col.end || m[0].length, N.col.step = N.col.step || 1, T = f.arange( - N.row.start, - r.min(m.length, N.row.end), - N.row.step - ), R = f.arange( - N.col.start, - r.min(m[0].length, N.col.end), - N.col.step - ), T.forEach(function(M, _) { - R.forEach(function(W, F) { - m[M][W] = y[_][F]; - }); - }), m; - }, f.diagonal = function(m) { - var N = f.zeros(m.length, m.length); - return m.forEach(function(y, R) { - N[R][R] = y; - }), N; - }, f.copy = function(m) { - return m.map(function(N) { - return s(N) ? N : N.map(function(y) { - return y; - }); - }); - }; - var E = f.prototype; - return E.length = 0, E.push = Array.prototype.push, E.sort = Array.prototype.sort, E.splice = Array.prototype.splice, E.slice = Array.prototype.slice, E.toArray = function() { - return this.length > 1 ? c.call(this) : c.call(this)[0]; - }, E.map = function(m, N) { - return f(f.map(this, m, N)); - }, E.cumreduce = function(m, N) { - return f(f.cumreduce(this, m, N)); - }, E.alter = function(m) { - return f.alter(this, m), this; - }, function(A) { - for (var m = 0; m < A.length; m++) - (function(N) { - E[N] = function(y) { - var R = this, T; - return y ? (setTimeout(function() { - y.call(R, E[N].call(R)); - }), this) : (T = f[N](this), u(T) ? f(T) : T); - }; - })(A[m]); - }("transpose clear symmetric rows cols dimensions diag antidiag".split(" ")), function(A) { - for (var m = 0; m < A.length; m++) - (function(N) { - E[N] = function(y, R) { - var T = this; - return R ? (setTimeout(function() { - R.call(T, E[N].call(T, y)); - }), this) : f(f[N](this, y)); - }; - })(A[m]); - }("row col".split(" ")), function(A) { - for (var m = 0; m < A.length; m++) - (function(N) { - E[N] = function() { - return f(f[N].apply(null, arguments)); - }; - })(A[m]); - }("create zeros ones rand identity".split(" ")), f; - }(Math); - return function(r, i) { - var a = r.utils.isFunction; - function c(u, o) { - return u - o; - } - function h(u, o, s) { - return i.max(o, i.min(u, s)); - } - r.sum = function(o) { - for (var s = 0, l = o.length; --l >= 0; ) - s += o[l]; - return s; - }, r.sumsqrd = function(o) { - for (var s = 0, l = o.length; --l >= 0; ) - s += o[l] * o[l]; - return s; - }, r.sumsqerr = function(o) { - for (var s = r.mean(o), l = 0, f = o.length, v; --f >= 0; ) - v = o[f] - s, l += v * v; - return l; - }, r.sumrow = function(o) { - for (var s = 0, l = o.length; --l >= 0; ) - s += o[l]; - return s; - }, r.product = function(o) { - for (var s = 1, l = o.length; --l >= 0; ) - s *= o[l]; - return s; - }, r.min = function(o) { - for (var s = o[0], l = 0; ++l < o.length; ) - o[l] < s && (s = o[l]); - return s; - }, r.max = function(o) { - for (var s = o[0], l = 0; ++l < o.length; ) - o[l] > s && (s = o[l]); - return s; - }, r.unique = function(o) { - for (var s = {}, l = [], f = 0; f < o.length; f++) - s[o[f]] || (s[o[f]] = !0, l.push(o[f])); - return l; - }, r.mean = function(o) { - return r.sum(o) / o.length; - }, r.meansqerr = function(o) { - return r.sumsqerr(o) / o.length; - }, r.geomean = function(o) { - var s = o.map(i.log), l = r.mean(s); - return i.exp(l); - }, r.median = function(o) { - var s = o.length, l = o.slice().sort(c); - return s & 1 ? l[s / 2 | 0] : (l[s / 2 - 1] + l[s / 2]) / 2; - }, r.cumsum = function(o) { - return r.cumreduce(o, function(s, l) { - return s + l; - }); - }, r.cumprod = function(o) { - return r.cumreduce(o, function(s, l) { - return s * l; - }); - }, r.diff = function(o) { - var s = [], l = o.length, f; - for (f = 1; f < l; f++) - s.push(o[f] - o[f - 1]); - return s; - }, r.rank = function(u) { - var o, s = [], l = {}; - for (o = 0; o < u.length; o++) { - var f = u[o]; - l[f] ? l[f]++ : (l[f] = 1, s.push(f)); - } - var v = s.sort(c), d = {}, g = 1; - for (o = 0; o < v.length; o++) { - var f = v[o], E = l[f], A = g, m = g + E - 1, N = (A + m) / 2; - d[f] = N, g += E; - } - return u.map(function(y) { - return d[y]; - }); - }, r.mode = function(o) { - var s = o.length, l = o.slice().sort(c), f = 1, v = 0, d = 0, g = [], E; - for (E = 0; E < s; E++) - l[E] === l[E + 1] ? f++ : (f > v ? (g = [l[E]], v = f, d = 0) : f === v && (g.push(l[E]), d++), f = 1); - return d === 0 ? g[0] : g; - }, r.range = function(o) { - return r.max(o) - r.min(o); - }, r.variance = function(o, s) { - return r.sumsqerr(o) / (o.length - (s ? 1 : 0)); - }, r.pooledvariance = function(o) { - var s = o.reduce(function(f, v) { - return f + r.sumsqerr(v); - }, 0), l = o.reduce(function(f, v) { - return f + v.length; - }, 0); - return s / (l - o.length); - }, r.deviation = function(u) { - for (var o = r.mean(u), s = u.length, l = new Array(s), f = 0; f < s; f++) - l[f] = u[f] - o; - return l; - }, r.stdev = function(o, s) { - return i.sqrt(r.variance(o, s)); - }, r.pooledstdev = function(o) { - return i.sqrt(r.pooledvariance(o)); - }, r.meandev = function(o) { - for (var s = r.mean(o), l = [], f = o.length - 1; f >= 0; f--) - l.push(i.abs(o[f] - s)); - return r.mean(l); - }, r.meddev = function(o) { - for (var s = r.median(o), l = [], f = o.length - 1; f >= 0; f--) - l.push(i.abs(o[f] - s)); - return r.median(l); - }, r.coeffvar = function(o) { - return r.stdev(o) / r.mean(o); - }, r.quartiles = function(o) { - var s = o.length, l = o.slice().sort(c); - return [ - l[i.round(s / 4) - 1], - l[i.round(s / 2) - 1], - l[i.round(s * 3 / 4) - 1] - ]; - }, r.quantiles = function(o, s, l, f) { - var v = o.slice().sort(c), d = [s.length], g = o.length, E, A, m, N, y, R; - for (typeof l > "u" && (l = 3 / 8), typeof f > "u" && (f = 3 / 8), E = 0; E < s.length; E++) - A = s[E], m = l + A * (1 - l - f), N = g * A + m, y = i.floor(h(N, 1, g - 1)), R = h(N - y, 0, 1), d[E] = (1 - R) * v[y - 1] + R * v[y]; - return d; - }, r.percentile = function(o, s, l) { - var f = o.slice().sort(c), v = s * (f.length + (l ? 1 : -1)) + (l ? 0 : 1), d = parseInt(v), g = v - d; - return d + 1 < f.length ? f[d - 1] + g * (f[d] - f[d - 1]) : f[d - 1]; - }, r.percentileOfScore = function(o, s, l) { - var f = 0, v = o.length, d = !1, g, E; - for (l === "strict" && (d = !0), E = 0; E < v; E++) - g = o[E], (d && g < s || !d && g <= s) && f++; - return f / v; - }, r.histogram = function(o, s) { - s = s || 4; - var l = r.min(o), f = (r.max(o) - l) / s, v = o.length, d = [], g; - for (g = 0; g < s; g++) - d[g] = 0; - for (g = 0; g < v; g++) - d[i.min(i.floor((o[g] - l) / f), s - 1)] += 1; - return d; - }, r.covariance = function(o, s) { - var l = r.mean(o), f = r.mean(s), v = o.length, d = new Array(v), g; - for (g = 0; g < v; g++) - d[g] = (o[g] - l) * (s[g] - f); - return r.sum(d) / (v - 1); - }, r.corrcoeff = function(o, s) { - return r.covariance(o, s) / r.stdev(o, 1) / r.stdev(s, 1); - }, r.spearmancoeff = function(u, o) { - return u = r.rank(u), o = r.rank(o), r.corrcoeff(u, o); - }, r.stanMoment = function(o, s) { - for (var l = r.mean(o), f = r.stdev(o), v = o.length, d = 0, g = 0; g < v; g++) - d += i.pow((o[g] - l) / f, s); - return d / o.length; - }, r.skewness = function(o) { - return r.stanMoment(o, 3); - }, r.kurtosis = function(o) { - return r.stanMoment(o, 4) - 3; - }; - var p = r.prototype; - (function(u) { - for (var o = 0; o < u.length; o++) - (function(s) { - p[s] = function(l, f) { - var v = [], d = 0, g = this; - if (a(l) && (f = l, l = !1), f) - return setTimeout(function() { - f.call(g, p[s].call(g, l)); - }), this; - if (this.length > 1) { - for (g = l === !0 ? this : this.transpose(); d < g.length; d++) - v[d] = r[s](g[d]); - return v; - } - return r[s](this[0], l); - }; - })(u[o]); - })("cumsum cumprod".split(" ")), function(u) { - for (var o = 0; o < u.length; o++) - (function(s) { - p[s] = function(l, f) { - var v = [], d = 0, g = this; - if (a(l) && (f = l, l = !1), f) - return setTimeout(function() { - f.call(g, p[s].call(g, l)); - }), this; - if (this.length > 1) { - for (s !== "sumrow" && (g = l === !0 ? this : this.transpose()); d < g.length; d++) - v[d] = r[s](g[d]); - return l === !0 ? r[s](r.utils.toVector(v)) : v; - } - return r[s](this[0], l); - }; - })(u[o]); - }("sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr geomean median diff rank mode range variance deviation stdev meandev meddev coeffvar quartiles histogram skewness kurtosis".split(" ")), function(u) { - for (var o = 0; o < u.length; o++) - (function(s) { - p[s] = function() { - var l = [], f = 0, v = this, d = Array.prototype.slice.call(arguments), g; - if (a(d[d.length - 1])) { - g = d[d.length - 1]; - var E = d.slice(0, d.length - 1); - return setTimeout(function() { - g.call( - v, - p[s].apply(v, E) - ); - }), this; - } else { - g = void 0; - var A = function(N) { - return r[s].apply(v, [N].concat(d)); - }; - } - if (this.length > 1) { - for (v = v.transpose(); f < v.length; f++) - l[f] = A(v[f]); - return l; - } - return A(this[0]); - }; - })(u[o]); - }("quantiles percentileOfScore".split(" ")); - }(n, Math), function(r, i) { - r.gammaln = function(c) { - var h = 0, p = [ - 76.18009172947146, - -86.50532032941678, - 24.01409824083091, - -1.231739572450155, - 0.001208650973866179, - -5395239384953e-18 - ], u = 1.000000000190015, o, s, l; - for (l = (s = o = c) + 5.5, l -= (o + 0.5) * i.log(l); h < 6; h++) - u += p[h] / ++s; - return i.log(2.5066282746310007 * u / o) - l; - }, r.loggam = function(c) { - var h, p, u, o, s, l, f, v = [ - 0.08333333333333333, - -0.002777777777777778, - 7936507936507937e-19, - -5952380952380952e-19, - 8417508417508418e-19, - -0.001917526917526918, - 0.00641025641025641, - -0.02955065359477124, - 0.1796443723688307, - -1.3924322169059 - ]; - if (h = c, f = 0, c == 1 || c == 2) - return 0; - for (c <= 7 && (f = i.floor(7 - c), h = c + f), p = 1 / (h * h), u = 2 * i.PI, s = v[9], l = 8; l >= 0; l--) - s *= p, s += v[l]; - if (o = s / h + 0.5 * i.log(u) + (h - 0.5) * i.log(h) - h, c <= 7) - for (l = 1; l <= f; l++) - o -= i.log(h - 1), h -= 1; - return o; - }, r.gammafn = function(c) { - var h = [ - -1.716185138865495, - 24.76565080557592, - -379.80425647094563, - 629.3311553128184, - 866.9662027904133, - -31451.272968848367, - -36144.413418691176, - 66456.14382024054 - ], p = [ - -30.8402300119739, - 315.35062697960416, - -1015.1563674902192, - -3107.771671572311, - 22538.11842098015, - 4755.846277527881, - -134659.9598649693, - -115132.2596755535 - ], u = !1, o = 0, s = 0, l = 0, f = c, v, d, g, E; - if (c > 171.6243769536076) - return 1 / 0; - if (f <= 0) - if (E = f % 1 + 36e-17, E) - u = (f & 1 ? -1 : 1) * i.PI / i.sin(i.PI * E), f = 1 - f; - else - return 1 / 0; - for (g = f, f < 1 ? d = f++ : d = (f -= o = (f | 0) - 1) - 1, v = 0; v < 8; ++v) - l = (l + h[v]) * d, s = s * d + p[v]; - if (E = l / s + 1, g < f) - E /= g; - else if (g > f) - for (v = 0; v < o; ++v) - E *= f, f++; - return u && (E = u / E), E; - }, r.gammap = function(c, h) { - return r.lowRegGamma(c, h) * r.gammafn(c); - }, r.lowRegGamma = function(c, h) { - var p = r.gammaln(c), u = c, o = 1 / c, s = o, l = h + 1 - c, f = 1 / 1e-30, v = 1 / l, d = v, g = 1, E = -~(i.log(c >= 1 ? c : 1 / c) * 8.5 + c * 0.4 + 17), A; - if (h < 0 || c <= 0) - return NaN; - if (h < c + 1) { - for (; g <= E; g++) - o += s *= h / ++u; - return o * i.exp(-h + c * i.log(h) - p); - } - for (; g <= E; g++) - A = -g * (g - c), l += 2, v = A * v + l, f = l + A / f, v = 1 / v, d *= v * f; - return 1 - d * i.exp(-h + c * i.log(h) - p); - }, r.factorialln = function(c) { - return c < 0 ? NaN : r.gammaln(c + 1); - }, r.factorial = function(c) { - return c < 0 ? NaN : r.gammafn(c + 1); - }, r.combination = function(c, h) { - return c > 170 || h > 170 ? i.exp(r.combinationln(c, h)) : r.factorial(c) / r.factorial(h) / r.factorial(c - h); - }, r.combinationln = function(c, h) { - return r.factorialln(c) - r.factorialln(h) - r.factorialln(c - h); - }, r.permutation = function(c, h) { - return r.factorial(c) / r.factorial(c - h); - }, r.betafn = function(c, h) { - if (!(c <= 0 || h <= 0)) - return c + h > 170 ? i.exp(r.betaln(c, h)) : r.gammafn(c) * r.gammafn(h) / r.gammafn(c + h); - }, r.betaln = function(c, h) { - return r.gammaln(c) + r.gammaln(h) - r.gammaln(c + h); - }, r.betacf = function(c, h, p) { - var u = 1e-30, o = 1, s = h + p, l = h + 1, f = h - 1, v = 1, d = 1 - s * c / l, g, E, A, m; - for (i.abs(d) < u && (d = u), d = 1 / d, m = d; o <= 100 && (g = 2 * o, E = o * (p - o) * c / ((f + g) * (h + g)), d = 1 + E * d, i.abs(d) < u && (d = u), v = 1 + E / v, i.abs(v) < u && (v = u), d = 1 / d, m *= d * v, E = -(h + o) * (s + o) * c / ((h + g) * (l + g)), d = 1 + E * d, i.abs(d) < u && (d = u), v = 1 + E / v, i.abs(v) < u && (v = u), d = 1 / d, A = d * v, m *= A, !(i.abs(A - 1) < 3e-7)); o++) - ; - return m; - }, r.gammapinv = function(c, h) { - var p = 0, u = h - 1, o = 1e-8, s = r.gammaln(h), l, f, v, d, g, E, A; - if (c >= 1) - return i.max(100, h + 100 * i.sqrt(h)); - if (c <= 0) - return 0; - for (h > 1 ? (E = i.log(u), A = i.exp(u * (E - 1) - s), g = c < 0.5 ? c : 1 - c, v = i.sqrt(-2 * i.log(g)), l = (2.30753 + v * 0.27061) / (1 + v * (0.99229 + v * 0.04481)) - v, c < 0.5 && (l = -l), l = i.max( - 1e-3, - h * i.pow(1 - 1 / (9 * h) - l / (3 * i.sqrt(h)), 3) - )) : (v = 1 - h * (0.253 + h * 0.12), c < v ? l = i.pow(c / v, 1 / h) : l = 1 - i.log(1 - (c - v) / (1 - v))); p < 12; p++) { - if (l <= 0) - return 0; - if (f = r.lowRegGamma(h, l) - c, h > 1 ? v = A * i.exp(-(l - u) + u * (i.log(l) - E)) : v = i.exp(-l + u * i.log(l) - s), d = f / v, l -= v = d / (1 - 0.5 * i.min(1, d * ((h - 1) / l - 1))), l <= 0 && (l = 0.5 * (l + v)), i.abs(v) < o * l) - break; - } - return l; - }, r.erf = function(c) { - var h = [ - -1.3026537197817094, - 0.6419697923564902, - 0.019476473204185836, - -0.00956151478680863, - -946595344482036e-18, - 366839497852761e-18, - 42523324806907e-18, - -20278578112534e-18, - -1624290004647e-18, - 130365583558e-17, - 15626441722e-18, - -85238095915e-18, - 6529054439e-18, - 5059343495e-18, - -991364156e-18, - -227365122e-18, - 96467911e-18, - 2394038e-18, - -6886027e-18, - 894487e-18, - 313092e-18, - -112708e-18, - 381e-18, - 7106e-18, - -1523e-18, - -94e-18, - 121e-18, - -28e-18 - ], p = h.length - 1, u = !1, o = 0, s = 0, l, f, v, d; - for (c < 0 && (c = -c, u = !0), l = 2 / (2 + c), f = 4 * l - 2; p > 0; p--) - v = o, o = f * o - s + h[p], s = v; - return d = l * i.exp(-c * c + 0.5 * (h[0] + f * o) - s), u ? d - 1 : 1 - d; - }, r.erfc = function(c) { - return 1 - r.erf(c); - }, r.erfcinv = function(c) { - var h = 0, p, u, o, s; - if (c >= 2) - return -100; - if (c <= 0) - return 100; - for (s = c < 1 ? c : 2 - c, o = i.sqrt(-2 * i.log(s / 2)), p = -0.70711 * ((2.30753 + o * 0.27061) / (1 + o * (0.99229 + o * 0.04481)) - o); h < 2; h++) - u = r.erfc(p) - s, p += u / (1.1283791670955126 * i.exp(-p * p) - p * u); - return c < 1 ? p : -p; - }, r.ibetainv = function(c, h, p) { - var u = 1e-8, o = h - 1, s = p - 1, l = 0, f, v, d, g, E, A, m, N, y, R, T; - if (c <= 0) - return 0; - if (c >= 1) - return 1; - for (h >= 1 && p >= 1 ? (d = c < 0.5 ? c : 1 - c, g = i.sqrt(-2 * i.log(d)), m = (2.30753 + g * 0.27061) / (1 + g * (0.99229 + g * 0.04481)) - g, c < 0.5 && (m = -m), N = (m * m - 3) / 6, y = 2 / (1 / (2 * h - 1) + 1 / (2 * p - 1)), R = m * i.sqrt(N + y) / y - (1 / (2 * p - 1) - 1 / (2 * h - 1)) * (N + 5 / 6 - 2 / (3 * y)), m = h / (h + p * i.exp(2 * R))) : (f = i.log(h / (h + p)), v = i.log(p / (h + p)), g = i.exp(h * f) / h, E = i.exp(p * v) / p, R = g + E, c < g / R ? m = i.pow(h * R * c, 1 / h) : m = 1 - i.pow(p * R * (1 - c), 1 / p)), T = -r.gammaln(h) - r.gammaln(p) + r.gammaln(h + p); l < 10; l++) { - if (m === 0 || m === 1) - return m; - if (A = r.ibeta(m, h, p) - c, g = i.exp(o * i.log(m) + s * i.log(1 - m) + T), E = A / g, m -= g = E / (1 - 0.5 * i.min(1, E * (o / m - s / (1 - m)))), m <= 0 && (m = 0.5 * (m + g)), m >= 1 && (m = 0.5 * (m + g + 1)), i.abs(g) < u * m && l > 0) - break; - } - return m; - }, r.ibeta = function(c, h, p) { - var u = c === 0 || c === 1 ? 0 : i.exp(r.gammaln(h + p) - r.gammaln(h) - r.gammaln(p) + h * i.log(c) + p * i.log(1 - c)); - return c < 0 || c > 1 ? !1 : c < (h + 1) / (h + p + 2) ? u * r.betacf(c, h, p) / h : 1 - u * r.betacf(1 - c, p, h) / p; - }, r.randn = function(c, h) { - var p, u, o, s, l; - if (h || (h = c), c) - return r.create(c, h, function() { - return r.randn(); - }); - do - p = r._random_fn(), u = 1.7156 * (r._random_fn() - 0.5), o = p - 0.449871, s = i.abs(u) + 0.386595, l = o * o + s * (0.196 * s - 0.25472 * o); - while (l > 0.27597 && (l > 0.27846 || u * u > -4 * i.log(p) * p * p)); - return u / p; - }, r.randg = function(c, h, p) { - var u = c, o, s, l, f, v, d; - if (p || (p = h), c || (c = 1), h) - return d = r.zeros(h, p), d.alter(function() { - return r.randg(c); - }), d; - c < 1 && (c += 1), o = c - 1 / 3, s = 1 / i.sqrt(9 * o); - do { - do - v = r.randn(), f = 1 + s * v; - while (f <= 0); - f = f * f * f, l = r._random_fn(); - } while (l > 1 - 0.331 * i.pow(v, 4) && i.log(l) > 0.5 * v * v + o * (1 - f + i.log(f))); - if (c == u) - return o * f; - do - l = r._random_fn(); - while (l === 0); - return i.pow(l, 1 / u) * o * f; - }, function(a) { - for (var c = 0; c < a.length; c++) - (function(h) { - r.fn[h] = function() { - return r( - r.map(this, function(p) { - return r[h](p); - }) - ); - }; - })(a[c]); - }("gammaln gammafn factorial factorialln".split(" ")), function(a) { - for (var c = 0; c < a.length; c++) - (function(h) { - r.fn[h] = function() { - return r(r[h].apply(null, arguments)); - }; - })(a[c]); - }("randn".split(" ")); - }(n, Math), function(r, i) { - (function(u) { - for (var o = 0; o < u.length; o++) - (function(s) { - r[s] = function l(f, v, d) { - return this instanceof l ? (this._a = f, this._b = v, this._c = d, this) : new l(f, v, d); - }, r.fn[s] = function(l, f, v) { - var d = r[s](l, f, v); - return d.data = this, d; - }, r[s].prototype.sample = function(l) { - var f = this._a, v = this._b, d = this._c; - return l ? r.alter(l, function() { - return r[s].sample(f, v, d); - }) : r[s].sample(f, v, d); - }, function(l) { - for (var f = 0; f < l.length; f++) - (function(v) { - r[s].prototype[v] = function(d) { - var g = this._a, E = this._b, A = this._c; - return !d && d !== 0 && (d = this.data), typeof d != "number" ? r.fn.map.call(d, function(m) { - return r[s][v](m, g, E, A); - }) : r[s][v](d, g, E, A); - }; - })(l[f]); - }("pdf cdf inv".split(" ")), function(l) { - for (var f = 0; f < l.length; f++) - (function(v) { - r[s].prototype[v] = function() { - return r[s][v](this._a, this._b, this._c); - }; - })(l[f]); - }("mean median mode variance".split(" ")); - })(u[o]); - })("beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy laplace lognormal noncentralt normal pareto studentt weibull uniform binomial negbin hypgeom poisson triangular tukey arcsine".split(" ")), r.extend(r.beta, { - pdf: function(o, s, l) { - return o > 1 || o < 0 ? 0 : s == 1 && l == 1 ? 1 : s < 512 && l < 512 ? i.pow(o, s - 1) * i.pow(1 - o, l - 1) / r.betafn(s, l) : i.exp((s - 1) * i.log(o) + (l - 1) * i.log(1 - o) - r.betaln(s, l)); - }, - cdf: function(o, s, l) { - return o > 1 || o < 0 ? (o > 1) * 1 : r.ibeta(o, s, l); - }, - inv: function(o, s, l) { - return r.ibetainv(o, s, l); - }, - mean: function(o, s) { - return o / (o + s); - }, - median: function(o, s) { - return r.ibetainv(0.5, o, s); - }, - mode: function(o, s) { - return (o - 1) / (o + s - 2); - }, - // return a random sample - sample: function(o, s) { - var l = r.randg(o); - return l / (l + r.randg(s)); - }, - variance: function(o, s) { - return o * s / (i.pow(o + s, 2) * (o + s + 1)); - } - }), r.extend(r.centralF, { - // This implementation of the pdf function avoids float overflow - // See the way that R calculates this value: - // https://svn.r-project.org/R/trunk/src/nmath/df.c - pdf: function(o, s, l) { - var f, v, d; - return o < 0 ? 0 : s <= 2 ? o === 0 && s < 2 ? 1 / 0 : o === 0 && s === 2 ? 1 : 1 / r.betafn(s / 2, l / 2) * i.pow(s / l, s / 2) * i.pow(o, s / 2 - 1) * i.pow(1 + s / l * o, -(s + l) / 2) : (f = s * o / (l + o * s), v = l / (l + o * s), d = s * v / 2, d * r.binomial.pdf((s - 2) / 2, (s + l - 2) / 2, f)); - }, - cdf: function(o, s, l) { - return o < 0 ? 0 : r.ibeta(s * o / (s * o + l), s / 2, l / 2); - }, - inv: function(o, s, l) { - return l / (s * (1 / r.ibetainv(o, s / 2, l / 2) - 1)); - }, - mean: function(o, s) { - return s > 2 ? s / (s - 2) : void 0; - }, - mode: function(o, s) { - return o > 2 ? s * (o - 2) / (o * (s + 2)) : void 0; - }, - // return a random sample - sample: function(o, s) { - var l = r.randg(o / 2) * 2, f = r.randg(s / 2) * 2; - return l / o / (f / s); - }, - variance: function(o, s) { - if (!(s <= 4)) - return 2 * s * s * (o + s - 2) / (o * (s - 2) * (s - 2) * (s - 4)); - } - }), r.extend(r.cauchy, { - pdf: function(o, s, l) { - return l < 0 ? 0 : l / (i.pow(o - s, 2) + i.pow(l, 2)) / i.PI; - }, - cdf: function(o, s, l) { - return i.atan((o - s) / l) / i.PI + 0.5; - }, - inv: function(u, o, s) { - return o + s * i.tan(i.PI * (u - 0.5)); - }, - median: function(o) { - return o; - }, - mode: function(o) { - return o; - }, - sample: function(o, s) { - return r.randn() * i.sqrt(1 / (2 * r.randg(0.5))) * s + o; - } - }), r.extend(r.chisquare, { - pdf: function(o, s) { - return o < 0 ? 0 : o === 0 && s === 2 ? 0.5 : i.exp((s / 2 - 1) * i.log(o) - o / 2 - s / 2 * i.log(2) - r.gammaln(s / 2)); - }, - cdf: function(o, s) { - return o < 0 ? 0 : r.lowRegGamma(s / 2, o / 2); - }, - inv: function(u, o) { - return 2 * r.gammapinv(u, 0.5 * o); - }, - mean: function(u) { - return u; - }, - // TODO: this is an approximation (is there a better way?) - median: function(o) { - return o * i.pow(1 - 2 / (9 * o), 3); - }, - mode: function(o) { - return o - 2 > 0 ? o - 2 : 0; - }, - sample: function(o) { - return r.randg(o / 2) * 2; - }, - variance: function(o) { - return 2 * o; - } - }), r.extend(r.exponential, { - pdf: function(o, s) { - return o < 0 ? 0 : s * i.exp(-s * o); - }, - cdf: function(o, s) { - return o < 0 ? 0 : 1 - i.exp(-s * o); - }, - inv: function(u, o) { - return -i.log(1 - u) / o; - }, - mean: function(u) { - return 1 / u; - }, - median: function(u) { - return 1 / u * i.log(2); - }, - mode: function() { - return 0; - }, - sample: function(o) { - return -1 / o * i.log(r._random_fn()); - }, - variance: function(u) { - return i.pow(u, -2); - } - }), r.extend(r.gamma, { - pdf: function(o, s, l) { - return o < 0 ? 0 : o === 0 && s === 1 ? 1 / l : i.exp((s - 1) * i.log(o) - o / l - r.gammaln(s) - s * i.log(l)); - }, - cdf: function(o, s, l) { - return o < 0 ? 0 : r.lowRegGamma(s, o / l); - }, - inv: function(u, o, s) { - return r.gammapinv(u, o) * s; - }, - mean: function(u, o) { - return u * o; - }, - mode: function(o, s) { - if (o > 1) - return (o - 1) * s; - }, - sample: function(o, s) { - return r.randg(o) * s; - }, - variance: function(o, s) { - return o * s * s; - } - }), r.extend(r.invgamma, { - pdf: function(o, s, l) { - return o <= 0 ? 0 : i.exp(-(s + 1) * i.log(o) - l / o - r.gammaln(s) + s * i.log(l)); - }, - cdf: function(o, s, l) { - return o <= 0 ? 0 : 1 - r.lowRegGamma(s, l / o); - }, - inv: function(u, o, s) { - return s / r.gammapinv(1 - u, o); - }, - mean: function(u, o) { - return u > 1 ? o / (u - 1) : void 0; - }, - mode: function(o, s) { - return s / (o + 1); - }, - sample: function(o, s) { - return s / r.randg(o); - }, - variance: function(o, s) { - if (!(o <= 2)) - return s * s / ((o - 1) * (o - 1) * (o - 2)); - } - }), r.extend(r.kumaraswamy, { - pdf: function(o, s, l) { - return o === 0 && s === 1 ? l : o === 1 && l === 1 ? s : i.exp(i.log(s) + i.log(l) + (s - 1) * i.log(o) + (l - 1) * i.log(1 - i.pow(o, s))); - }, - cdf: function(o, s, l) { - return o < 0 ? 0 : o > 1 ? 1 : 1 - i.pow(1 - i.pow(o, s), l); - }, - inv: function(o, s, l) { - return i.pow(1 - i.pow(1 - o, 1 / l), 1 / s); - }, - mean: function(u, o) { - return o * r.gammafn(1 + 1 / u) * r.gammafn(o) / r.gammafn(1 + 1 / u + o); - }, - median: function(o, s) { - return i.pow(1 - i.pow(2, -1 / s), 1 / o); - }, - mode: function(o, s) { - if (o >= 1 && s >= 1 && o !== 1 && s !== 1) - return i.pow((o - 1) / (o * s - 1), 1 / o); - }, - variance: function() { - throw new Error("variance not yet implemented"); - } - }), r.extend(r.lognormal, { - pdf: function(o, s, l) { - return o <= 0 ? 0 : i.exp(-i.log(o) - 0.5 * i.log(2 * i.PI) - i.log(l) - i.pow(i.log(o) - s, 2) / (2 * l * l)); - }, - cdf: function(o, s, l) { - return o < 0 ? 0 : 0.5 + 0.5 * r.erf((i.log(o) - s) / i.sqrt(2 * l * l)); - }, - inv: function(u, o, s) { - return i.exp(-1.4142135623730951 * s * r.erfcinv(2 * u) + o); - }, - mean: function(o, s) { - return i.exp(o + s * s / 2); - }, - median: function(o) { - return i.exp(o); - }, - mode: function(o, s) { - return i.exp(o - s * s); - }, - sample: function(o, s) { - return i.exp(r.randn() * s + o); - }, - variance: function(o, s) { - return (i.exp(s * s) - 1) * i.exp(2 * o + s * s); - } - }), r.extend(r.noncentralt, { - pdf: function(o, s, l) { - var f = 1e-14; - return i.abs(l) < f ? r.studentt.pdf(o, s) : i.abs(o) < f ? i.exp(r.gammaln((s + 1) / 2) - l * l / 2 - 0.5 * i.log(i.PI * s) - r.gammaln(s / 2)) : s / o * (r.noncentralt.cdf(o * i.sqrt(1 + 2 / s), s + 2, l) - r.noncentralt.cdf(o, s, l)); - }, - cdf: function(o, s, l) { - var f = 1e-14, v = 200; - if (i.abs(l) < f) - return r.studentt.cdf(o, s); - var d = !1; - o < 0 && (d = !0, l = -l); - for (var g = r.normal.cdf(-l, 0, 1), E = f + 1, A = E, m = o * o / (o * o + s), N = 0, y = i.exp(-l * l / 2), R = i.exp(-l * l / 2 - 0.5 * i.log(2) - r.gammaln(3 / 2)) * l; N < v || A > f || E > f; ) - A = E, N > 0 && (y *= l * l / (2 * N), R *= l * l / (2 * (N + 1 / 2))), E = y * r.beta.cdf(m, N + 0.5, s / 2) + R * r.beta.cdf(m, N + 1, s / 2), g += 0.5 * E, N++; - return d ? 1 - g : g; - } - }), r.extend(r.normal, { - pdf: function(o, s, l) { - return i.exp(-0.5 * i.log(2 * i.PI) - i.log(l) - i.pow(o - s, 2) / (2 * l * l)); - }, - cdf: function(o, s, l) { - return 0.5 * (1 + r.erf((o - s) / i.sqrt(2 * l * l))); - }, - inv: function(u, o, s) { - return -1.4142135623730951 * s * r.erfcinv(2 * u) + o; - }, - mean: function(u) { - return u; - }, - median: function(o) { - return o; - }, - mode: function(u) { - return u; - }, - sample: function(o, s) { - return r.randn() * s + o; - }, - variance: function(u, o) { - return o * o; - } - }), r.extend(r.pareto, { - pdf: function(o, s, l) { - return o < s ? 0 : l * i.pow(s, l) / i.pow(o, l + 1); - }, - cdf: function(o, s, l) { - return o < s ? 0 : 1 - i.pow(s / o, l); - }, - inv: function(o, s, l) { - return s / i.pow(1 - o, 1 / l); - }, - mean: function(o, s) { - if (!(s <= 1)) - return s * i.pow(o, s) / (s - 1); - }, - median: function(o, s) { - return o * (s * i.SQRT2); - }, - mode: function(o) { - return o; - }, - variance: function(u, o) { - if (!(o <= 2)) - return u * u * o / (i.pow(o - 1, 2) * (o - 2)); - } - }), r.extend(r.studentt, { - pdf: function(o, s) { - return s = s > 1e100 ? 1e100 : s, 1 / (i.sqrt(s) * r.betafn(0.5, s / 2)) * i.pow(1 + o * o / s, -((s + 1) / 2)); - }, - cdf: function(o, s) { - var l = s / 2; - return r.ibeta((o + i.sqrt(o * o + s)) / (2 * i.sqrt(o * o + s)), l, l); - }, - inv: function(u, o) { - var s = r.ibetainv(2 * i.min(u, 1 - u), 0.5 * o, 0.5); - return s = i.sqrt(o * (1 - s) / s), u > 0.5 ? s : -s; - }, - mean: function(o) { - return o > 1 ? 0 : void 0; - }, - median: function() { - return 0; - }, - mode: function() { - return 0; - }, - sample: function(o) { - return r.randn() * i.sqrt(o / (2 * r.randg(o / 2))); - }, - variance: function(o) { - return o > 2 ? o / (o - 2) : o > 1 ? 1 / 0 : void 0; - } - }), r.extend(r.weibull, { - pdf: function(o, s, l) { - return o < 0 || s < 0 || l < 0 ? 0 : l / s * i.pow(o / s, l - 1) * i.exp(-i.pow(o / s, l)); - }, - cdf: function(o, s, l) { - return o < 0 ? 0 : 1 - i.exp(-i.pow(o / s, l)); - }, - inv: function(u, o, s) { - return o * i.pow(-i.log(1 - u), 1 / s); - }, - mean: function(u, o) { - return u * r.gammafn(1 + 1 / o); - }, - median: function(o, s) { - return o * i.pow(i.log(2), 1 / s); - }, - mode: function(o, s) { - return s <= 1 ? 0 : o * i.pow((s - 1) / s, 1 / s); - }, - sample: function(o, s) { - return o * i.pow(-i.log(r._random_fn()), 1 / s); - }, - variance: function(o, s) { - return o * o * r.gammafn(1 + 2 / s) - i.pow(r.weibull.mean(o, s), 2); - } - }), r.extend(r.uniform, { - pdf: function(o, s, l) { - return o < s || o > l ? 0 : 1 / (l - s); - }, - cdf: function(o, s, l) { - return o < s ? 0 : o < l ? (o - s) / (l - s) : 1; - }, - inv: function(u, o, s) { - return o + u * (s - o); - }, - mean: function(o, s) { - return 0.5 * (o + s); - }, - median: function(o, s) { - return r.mean(o, s); - }, - mode: function() { - throw new Error("mode is not yet implemented"); - }, - sample: function(o, s) { - return o / 2 + s / 2 + (s / 2 - o / 2) * (2 * r._random_fn() - 1); - }, - variance: function(o, s) { - return i.pow(s - o, 2) / 12; - } - }); - function a(u, o, s, l) { - for (var f = 0, v = 1, d = 1, g = 1, E = 0, A = 0, m; i.abs((d - A) / d) > l; ) - A = d, m = -(o + E) * (o + s + E) * u / (o + 2 * E) / (o + 2 * E + 1), f = d + m * f, v = g + m * v, E = E + 1, m = E * (s - E) * u / (o + 2 * E - 1) / (o + 2 * E), d = f + m * d, g = v + m * g, f = f / g, v = v / g, d = d / g, g = 1; - return d / o; - } - r.extend(r.binomial, { - pdf: function(o, s, l) { - return l === 0 || l === 1 ? s * l === o ? 1 : 0 : r.combination(s, o) * i.pow(l, o) * i.pow(1 - l, s - o); - }, - cdf: function(o, s, l) { - var f, v = 1e-10; - if (o < 0) - return 0; - if (o >= s) - return 1; - if (l < 0 || l > 1 || s <= 0) - return NaN; - o = i.floor(o); - var d = l, g = o + 1, E = s - o, A = g + E, m = i.exp(r.gammaln(A) - r.gammaln(E) - r.gammaln(g) + g * i.log(d) + E * i.log(1 - d)); - return d < (g + 1) / (A + 2) ? f = m * a(d, g, E, v) : f = 1 - m * a(1 - d, E, g, v), i.round((1 - f) * (1 / v)) / (1 / v); - } - }), r.extend(r.negbin, { - pdf: function(o, s, l) { - return o !== o >>> 0 ? !1 : o < 0 ? 0 : r.combination(o + s - 1, s - 1) * i.pow(1 - l, o) * i.pow(l, s); - }, - cdf: function(o, s, l) { - var f = 0, v = 0; - if (o < 0) - return 0; - for (; v <= o; v++) - f += r.negbin.pdf(v, s, l); - return f; - } - }), r.extend(r.hypgeom, { - pdf: function(o, s, l, f) { - if (o !== o | 0) - return !1; - if (o < 0 || o < l - (s - f)) - return 0; - if (o > f || o > l) - return 0; - if (l * 2 > s) - return f * 2 > s ? r.hypgeom.pdf(s - l - f + o, s, s - l, s - f) : r.hypgeom.pdf(f - o, s, s - l, f); - if (f * 2 > s) - return r.hypgeom.pdf(l - o, s, l, s - f); - if (l < f) - return r.hypgeom.pdf(o, s, f, l); - for (var v = 1, d = 0, g = 0; g < o; g++) { - for (; v > 1 && d < f; ) - v *= 1 - l / (s - d), d++; - v *= (f - g) * (l - g) / ((g + 1) * (s - l - f + g + 1)); - } - for (; d < f; d++) - v *= 1 - l / (s - d); - return i.min(1, i.max(0, v)); - }, - cdf: function(o, s, l, f) { - if (o < 0 || o < l - (s - f)) - return 0; - if (o >= f || o >= l) - return 1; - if (l * 2 > s) - return f * 2 > s ? r.hypgeom.cdf(s - l - f + o, s, s - l, s - f) : 1 - r.hypgeom.cdf(f - o - 1, s, s - l, f); - if (f * 2 > s) - return 1 - r.hypgeom.cdf(l - o - 1, s, l, s - f); - if (l < f) - return r.hypgeom.cdf(o, s, f, l); - for (var v = 1, d = 1, g = 0, E = 0; E < o; E++) { - for (; v > 1 && g < f; ) { - var A = 1 - l / (s - g); - d *= A, v *= A, g++; - } - d *= (f - E) * (l - E) / ((E + 1) * (s - l - f + E + 1)), v += d; - } - for (; g < f; g++) - v *= 1 - l / (s - g); - return i.min(1, i.max(0, v)); - } - }), r.extend(r.poisson, { - pdf: function(o, s) { - return s < 0 || o % 1 !== 0 || o < 0 ? 0 : i.pow(s, o) * i.exp(-s) / r.factorial(o); - }, - cdf: function(o, s) { - var l = [], f = 0; - if (o < 0) - return 0; - for (; f <= o; f++) - l.push(r.poisson.pdf(f, s)); - return r.sum(l); - }, - mean: function(u) { - return u; - }, - variance: function(u) { - return u; - }, - sampleSmall: function(o) { - var s = 1, l = 0, f = i.exp(-o); - do - l++, s *= r._random_fn(); - while (s > f); - return l - 1; - }, - sampleLarge: function(o) { - var s = o, l, f, v, d, g, E, A, m, N, y; - for (d = i.sqrt(s), g = i.log(s), A = 0.931 + 2.53 * d, E = -0.059 + 0.02483 * A, m = 1.1239 + 1.1328 / (A - 3.4), N = 0.9277 - 3.6224 / (A - 2); ; ) { - if (f = i.random() - 0.5, v = i.random(), y = 0.5 - i.abs(f), l = i.floor((2 * E / y + A) * f + s + 0.43), y >= 0.07 && v <= N) - return l; - if (!(l < 0 || y < 0.013 && v > y) && i.log(v) + i.log(m) - i.log(E / (y * y) + A) <= -s + l * g - r.loggam(l + 1)) - return l; - } - }, - sample: function(o) { - return o < 10 ? this.sampleSmall(o) : this.sampleLarge(o); - } - }), r.extend(r.triangular, { - pdf: function(o, s, l, f) { - return l <= s || f < s || f > l ? NaN : o < s || o > l ? 0 : o < f ? 2 * (o - s) / ((l - s) * (f - s)) : o === f ? 2 / (l - s) : 2 * (l - o) / ((l - s) * (l - f)); - }, - cdf: function(o, s, l, f) { - return l <= s || f < s || f > l ? NaN : o <= s ? 0 : o >= l ? 1 : o <= f ? i.pow(o - s, 2) / ((l - s) * (f - s)) : 1 - i.pow(l - o, 2) / ((l - s) * (l - f)); - }, - inv: function(o, s, l, f) { - return l <= s || f < s || f > l ? NaN : o <= (f - s) / (l - s) ? s + (l - s) * i.sqrt(o * ((f - s) / (l - s))) : s + (l - s) * (1 - i.sqrt((1 - o) * (1 - (f - s) / (l - s)))); - }, - mean: function(o, s, l) { - return (o + s + l) / 3; - }, - median: function(o, s, l) { - if (l <= (o + s) / 2) - return s - i.sqrt((s - o) * (s - l)) / i.sqrt(2); - if (l > (o + s) / 2) - return o + i.sqrt((s - o) * (l - o)) / i.sqrt(2); - }, - mode: function(o, s, l) { - return l; - }, - sample: function(o, s, l) { - var f = r._random_fn(); - return f < (l - o) / (s - o) ? o + i.sqrt(f * (s - o) * (l - o)) : s - i.sqrt((1 - f) * (s - o) * (s - l)); - }, - variance: function(o, s, l) { - return (o * o + s * s + l * l - o * s - o * l - s * l) / 18; - } - }), r.extend(r.arcsine, { - pdf: function(o, s, l) { - return l <= s ? NaN : o <= s || o >= l ? 0 : 2 / i.PI * i.pow(i.pow(l - s, 2) - i.pow(2 * o - s - l, 2), -0.5); - }, - cdf: function(o, s, l) { - return o < s ? 0 : o < l ? 2 / i.PI * i.asin(i.sqrt((o - s) / (l - s))) : 1; - }, - inv: function(u, o, s) { - return o + (0.5 - 0.5 * i.cos(i.PI * u)) * (s - o); - }, - mean: function(o, s) { - return s <= o ? NaN : (o + s) / 2; - }, - median: function(o, s) { - return s <= o ? NaN : (o + s) / 2; - }, - mode: function() { - throw new Error("mode is not yet implemented"); - }, - sample: function(o, s) { - return (o + s) / 2 + (s - o) / 2 * i.sin(2 * i.PI * r.uniform.sample(0, 1)); - }, - variance: function(o, s) { - return s <= o ? NaN : i.pow(s - o, 2) / 8; - } - }); - function c(u) { - return u / i.abs(u); - } - r.extend(r.laplace, { - pdf: function(o, s, l) { - return l <= 0 ? 0 : i.exp(-i.abs(o - s) / l) / (2 * l); - }, - cdf: function(o, s, l) { - return l <= 0 ? 0 : o < s ? 0.5 * i.exp((o - s) / l) : 1 - 0.5 * i.exp(-(o - s) / l); - }, - mean: function(u) { - return u; - }, - median: function(u) { - return u; - }, - mode: function(u) { - return u; - }, - variance: function(u, o) { - return 2 * o * o; - }, - sample: function(o, s) { - var l = r._random_fn() - 0.5; - return o - s * c(l) * i.log(1 - 2 * i.abs(l)); - } - }); - function h(u, o, s) { - var l = 12, f = 6, v = -30, d = -50, g = 60, E = 8, A = 3, m = 2, N = 3, y = [ - 0.9815606342467192, - 0.9041172563704749, - 0.7699026741943047, - 0.5873179542866175, - 0.3678314989981802, - 0.1252334085114689 - ], R = [ - 0.04717533638651183, - 0.10693932599531843, - 0.16007832854334622, - 0.20316742672306592, - 0.2334925365383548, - 0.24914704581340277 - ], T = u * 0.5; - if (T >= E) - return 1; - var w = 2 * r.normal.cdf(T, 0, 1, 1, 0) - 1; - w >= i.exp(d / s) ? w = i.pow(w, s) : w = 0; - var C; - u > A ? C = m : C = N; - for (var M = T, _ = (E - T) / C, W = M + _, F = 0, S = s - 1, G = 1; G <= C; G++) { - for (var J = 0, le = 0.5 * (W + M), nt = 0.5 * (W - M), Ae = 1; Ae <= l; Ae++) { - var Be, Fe; - f < Ae ? (Be = l - Ae + 1, Fe = y[Be - 1]) : (Be = Ae, Fe = -y[Be - 1]); - var rt = nt * Fe, Ee = le + rt, ue = Ee * Ee; - if (ue > g) - break; - var Et = 2 * r.normal.cdf(Ee, 0, 1, 1, 0), Bt = 2 * r.normal.cdf(Ee, u, 1, 1, 0), mt = Et * 0.5 - Bt * 0.5; - mt >= i.exp(v / S) && (mt = R[Be - 1] * i.exp(-(0.5 * ue)) * i.pow(mt, S), J += mt); - } - J *= 2 * nt * s / i.sqrt(2 * i.PI), F += J, M = W, W += _; - } - return w += F, w <= i.exp(v / o) ? 0 : (w = i.pow(w, o), w >= 1 ? 1 : w); - } - function p(u, o, s) { - var l = 0.322232421088, f = 0.099348462606, v = -1, d = 0.588581570495, g = -0.342242088547, E = 0.531103462366, A = -0.204231210125, m = 0.10353775285, N = -453642210148e-16, y = 0.0038560700634, R = 0.8832, T = 0.2368, w = 1.214, C = 1.208, M = 1.4142, _ = 120, W = 0.5 - 0.5 * u, F = i.sqrt(i.log(1 / (W * W))), S = F + ((((F * N + A) * F + g) * F + v) * F + l) / ((((F * y + m) * F + E) * F + d) * F + f); - s < _ && (S += (S * S * S + S) / s / 4); - var G = R - T * S; - return s < _ && (G += -w / s + C * S / s), S * (G * i.log(o - 1) + M); - } - r.extend(r.tukey, { - cdf: function(o, s, l) { - var f = 1, v = s, d = 16, g = 8, E = -30, A = 1e-14, m = 100, N = 800, y = 5e3, R = 25e3, T = 1, w = 0.5, C = 0.25, M = 0.125, _ = [ - 0.9894009349916499, - 0.9445750230732326, - 0.8656312023878318, - 0.755404408355003, - 0.6178762444026438, - 0.45801677765722737, - 0.2816035507792589, - 0.09501250983763744 - ], W = [ - 0.027152459411754096, - 0.062253523938647894, - 0.09515851168249279, - 0.12462897125553388, - 0.14959598881657674, - 0.16915651939500254, - 0.18260341504492358, - 0.1894506104550685 - ]; - if (o <= 0) - return 0; - if (l < 2 || f < 1 || v < 2) - return NaN; - if (!Number.isFinite(o)) - return 1; - if (l > R) - return h(o, f, v); - var F = l * 0.5, S = F * i.log(l) - l * i.log(2) - r.gammaln(F), G = F - 1, J = l * 0.25, le; - l <= m ? le = T : l <= N ? le = w : l <= y ? le = C : le = M, S += i.log(le); - for (var nt = 0, Ae = 1; Ae <= 50; Ae++) { - for (var Be = 0, Fe = (2 * Ae - 1) * le, rt = 1; rt <= d; rt++) { - var Ee, ue; - g < rt ? (Ee = rt - g - 1, ue = S + G * i.log(Fe + _[Ee] * le) - (_[Ee] * le + Fe) * J) : (Ee = rt - 1, ue = S + G * i.log(Fe - _[Ee] * le) + (_[Ee] * le - Fe) * J); - var Et; - if (ue >= E) { - g < rt ? Et = o * i.sqrt((_[Ee] * le + Fe) * 0.5) : Et = o * i.sqrt((-(_[Ee] * le) + Fe) * 0.5); - var Bt = h(Et, f, v), mt = Bt * W[Ee] * i.exp(ue); - Be += mt; - } - } - if (Ae * le >= 1 && Be <= A) - break; - nt += Be; - } - if (Be > A) - throw new Error("tukey.cdf failed to converge"); - return nt > 1 && (nt = 1), nt; - }, - inv: function(u, o, s) { - var l = 1, f = o, v = 1e-4, d = 50; - if (s < 2 || l < 1 || f < 2) - return NaN; - if (u < 0 || u > 1) - return NaN; - if (u === 0) - return 0; - if (u === 1) - return 1 / 0; - var g = p(u, f, s), E = r.tukey.cdf(g, o, s) - u, A; - E > 0 ? A = i.max(0, g - 1) : A = g + 1; - for (var m = r.tukey.cdf(A, o, s) - u, N, y = 1; y < d; y++) { - N = A - m * (A - g) / (m - E), E = m, g = A, N < 0 && (N = 0, m = -u), m = r.tukey.cdf(N, o, s) - u, A = N; - var R = i.abs(A - g); - if (R < v) - return N; - } - throw new Error("tukey.inv failed to converge"); - } - }); - }(n, Math), function(r, i) { - var a = Array.prototype.push, c = r.utils.isArray; - function h(p) { - return c(p) || p instanceof r; - } - r.extend({ - // add a vector/matrix to a vector/matrix or scalar - add: function(u, o) { - return h(o) ? (h(o[0]) || (o = [o]), r.map(u, function(s, l, f) { - return s + o[l][f]; - })) : r.map(u, function(s) { - return s + o; - }); - }, - // subtract a vector or scalar from the vector - subtract: function(u, o) { - return h(o) ? (h(o[0]) || (o = [o]), r.map(u, function(s, l, f) { - return s - o[l][f] || 0; - })) : r.map(u, function(s) { - return s - o; - }); - }, - // matrix division - divide: function(u, o) { - return h(o) ? (h(o[0]) || (o = [o]), r.multiply(u, r.inv(o))) : r.map(u, function(s) { - return s / o; - }); - }, - // matrix multiplication - multiply: function(u, o) { - var s, l, f, v, d, g, E, A; - if (u.length === void 0 && o.length === void 0) - return u * o; - if (d = u.length, g = u[0].length, E = r.zeros(d, f = h(o) ? o[0].length : g), A = 0, h(o)) { - for (; A < f; A++) - for (s = 0; s < d; s++) { - for (v = 0, l = 0; l < g; l++) - v += u[s][l] * o[l][A]; - E[s][A] = v; - } - return d === 1 && A === 1 ? E[0][0] : E; - } - return r.map(u, function(m) { - return m * o; - }); - }, - // outer([1,2,3],[4,5,6]) - // === - // [[1],[2],[3]] times [[4,5,6]] - // -> - // [[4,5,6],[8,10,12],[12,15,18]] - outer: function(u, o) { - return r.multiply(u.map(function(s) { - return [s]; - }), [o]); - }, - // Returns the dot product of two matricies - dot: function(u, o) { - h(u[0]) || (u = [u]), h(o[0]) || (o = [o]); - for (var s = u[0].length === 1 && u.length !== 1 ? r.transpose(u) : u, l = o[0].length === 1 && o.length !== 1 ? r.transpose(o) : o, f = [], v = 0, d = s.length, g = s[0].length, E, A; v < d; v++) { - for (f[v] = [], E = 0, A = 0; A < g; A++) - E += s[v][A] * l[v][A]; - f[v] = E; - } - return f.length === 1 ? f[0] : f; - }, - // raise every element by a scalar - pow: function(u, o) { - return r.map(u, function(s) { - return i.pow(s, o); - }); - }, - // exponentiate every element - exp: function(u) { - return r.map(u, function(o) { - return i.exp(o); - }); - }, - // generate the natural log of every element - log: function(u) { - return r.map(u, function(o) { - return i.log(o); - }); - }, - // generate the absolute values of the vector - abs: function(u) { - return r.map(u, function(o) { - return i.abs(o); - }); - }, - // computes the p-norm of the vector - // In the case that a matrix is passed, uses the first row as the vector - norm: function(u, o) { - var s = 0, l = 0; - for (isNaN(o) && (o = 2), h(u[0]) && (u = u[0]); l < u.length; l++) - s += i.pow(i.abs(u[l]), o); - return i.pow(s, 1 / o); - }, - // computes the angle between two vectors in rads - // In case a matrix is passed, this uses the first row as the vector - angle: function(u, o) { - return i.acos(r.dot(u, o) / (r.norm(u) * r.norm(o))); - }, - // augment one matrix by another - // Note: this function returns a matrix, not a jStat object - aug: function(u, o) { - var s = [], l; - for (l = 0; l < u.length; l++) - s.push(u[l].slice()); - for (l = 0; l < s.length; l++) - a.apply(s[l], o[l]); - return s; - }, - // The inv() function calculates the inverse of a matrix - // Create the inverse by augmenting the matrix by the identity matrix of the - // appropriate size, and then use G-J elimination on the augmented matrix. - inv: function(u) { - for (var o = u.length, s = u[0].length, l = r.identity(o, s), f = r.gauss_jordan(u, l), v = [], d = 0, g; d < o; d++) - for (v[d] = [], g = s; g < f[0].length; g++) - v[d][g - s] = f[d][g]; - return v; - }, - // calculate the determinant of a matrix - det: function p(u) { - if (u.length === 2) - return u[0][0] * u[1][1] - u[0][1] * u[1][0]; - for (var o = 0, s = 0; s < u.length; s++) { - for (var l = [], f = 1; f < u.length; f++) { - l[f - 1] = []; - for (var v = 0; v < u.length; v++) - v < s ? l[f - 1][v] = u[f][v] : v > s && (l[f - 1][v - 1] = u[f][v]); - } - var d = s % 2 ? -1 : 1; - o += p(l) * u[0][s] * d; - } - return o; - }, - gauss_elimination: function(u, o) { - var s = 0, l = 0, f = u.length, v = u[0].length, d = 1, g = 0, E = [], A, m, N, y; - for (u = r.aug(u, o), A = u[0].length, s = 0; s < f; s++) { - for (m = u[s][s], l = s, y = s + 1; y < v; y++) - m < i.abs(u[y][s]) && (m = u[y][s], l = y); - if (l != s) - for (y = 0; y < A; y++) - N = u[s][y], u[s][y] = u[l][y], u[l][y] = N; - for (l = s + 1; l < f; l++) - for (d = u[l][s] / u[s][s], y = s; y < A; y++) - u[l][y] = u[l][y] - d * u[s][y]; - } - for (s = f - 1; s >= 0; s--) { - for (g = 0, l = s + 1; l <= f - 1; l++) - g = g + E[l] * u[s][l]; - E[s] = (u[s][A - 1] - g) / u[s][s]; - } - return E; - }, - gauss_jordan: function(u, o) { - var s = r.aug(u, o), l = s.length, f = s[0].length, v = 0, d, g, E; - for (g = 0; g < l; g++) { - var A = g; - for (E = g + 1; E < l; E++) - i.abs(s[E][g]) > i.abs(s[A][g]) && (A = E); - var m = s[g]; - for (s[g] = s[A], s[A] = m, E = g + 1; E < l; E++) - for (v = s[E][g] / s[g][g], d = g; d < f; d++) - s[E][d] -= s[g][d] * v; - } - for (g = l - 1; g >= 0; g--) { - for (v = s[g][g], E = 0; E < g; E++) - for (d = f - 1; d > g - 1; d--) - s[E][d] -= s[g][d] * s[E][g] / v; - for (s[g][g] /= v, d = l; d < f; d++) - s[g][d] /= v; - } - return s; - }, - // solve equation - // Ax=b - // A is upper triangular matrix - // A=[[1,2,3],[0,4,5],[0,6,7]] - // b=[1,2,3] - // triaUpSolve(A,b) // -> [2.666,0.1666,1.666] - // if you use matrix style - // A=[[1,2,3],[0,4,5],[0,6,7]] - // b=[[1],[2],[3]] - // will return [[2.666],[0.1666],[1.666]] - triaUpSolve: function(u, o) { - var s = u[0].length, l = r.zeros(1, s)[0], f, v = !1; - return o[0].length != null && (o = o.map(function(d) { - return d[0]; - }), v = !0), r.arange(s - 1, -1, -1).forEach(function(d) { - f = r.arange(d + 1, s).map(function(g) { - return l[g] * u[d][g]; - }), l[d] = (o[d] - r.sum(f)) / u[d][d]; - }), v ? l.map(function(d) { - return [d]; - }) : l; - }, - triaLowSolve: function(u, o) { - var s = u[0].length, l = r.zeros(1, s)[0], f, v = !1; - return o[0].length != null && (o = o.map(function(d) { - return d[0]; - }), v = !0), r.arange(s).forEach(function(d) { - f = r.arange(d).map(function(g) { - return u[d][g] * l[g]; - }), l[d] = (o[d] - r.sum(f)) / u[d][d]; - }), v ? l.map(function(d) { - return [d]; - }) : l; - }, - // A -> [L,U] - // A=LU - // L is lower triangular matrix - // U is upper triangular matrix - lu: function(u) { - var o = u.length, s = r.identity(o), l = r.zeros(u.length, u[0].length), f; - return r.arange(o).forEach(function(v) { - l[0][v] = u[0][v]; - }), r.arange(1, o).forEach(function(v) { - r.arange(v).forEach(function(d) { - f = r.arange(d).map(function(g) { - return s[v][g] * l[g][d]; - }), s[v][d] = (u[v][d] - r.sum(f)) / l[d][d]; - }), r.arange(v, o).forEach(function(d) { - f = r.arange(v).map(function(g) { - return s[v][g] * l[g][d]; - }), l[v][d] = u[f.length][d] - r.sum(f); - }); - }), [s, l]; - }, - // A -> T - // A=TT' - // T is lower triangular matrix - cholesky: function(u) { - var o = u.length, s = r.zeros(u.length, u[0].length), l; - return r.arange(o).forEach(function(f) { - l = r.arange(f).map(function(v) { - return i.pow(s[f][v], 2); - }), s[f][f] = i.sqrt(u[f][f] - r.sum(l)), r.arange(f + 1, o).forEach(function(v) { - l = r.arange(f).map(function(d) { - return s[f][d] * s[v][d]; - }), s[v][f] = (u[f][v] - r.sum(l)) / s[f][f]; - }); - }), s; - }, - gauss_jacobi: function(u, o, s, l) { - for (var f = 0, v = 0, d = u.length, g = [], E = [], A = [], m, N, y, R; f < d; f++) - for (g[f] = [], E[f] = [], A[f] = [], v = 0; v < d; v++) - f > v ? (g[f][v] = u[f][v], E[f][v] = A[f][v] = 0) : f < v ? (E[f][v] = u[f][v], g[f][v] = A[f][v] = 0) : (A[f][v] = u[f][v], g[f][v] = E[f][v] = 0); - for (y = r.multiply(r.multiply(r.inv(A), r.add(g, E)), -1), N = r.multiply(r.inv(A), o), m = s, R = r.add(r.multiply(y, s), N), f = 2; i.abs(r.norm(r.subtract(R, m))) > l; ) - m = R, R = r.add(r.multiply(y, m), N), f++; - return R; - }, - gauss_seidel: function(u, o, s, l) { - for (var f = 0, v = u.length, d = [], g = [], E = [], A, m, N, y, R; f < v; f++) - for (d[f] = [], g[f] = [], E[f] = [], A = 0; A < v; A++) - f > A ? (d[f][A] = u[f][A], g[f][A] = E[f][A] = 0) : f < A ? (g[f][A] = u[f][A], d[f][A] = E[f][A] = 0) : (E[f][A] = u[f][A], d[f][A] = g[f][A] = 0); - for (y = r.multiply(r.multiply(r.inv(r.add(E, d)), g), -1), N = r.multiply(r.inv(r.add(E, d)), o), m = s, R = r.add(r.multiply(y, s), N), f = 2; i.abs(r.norm(r.subtract(R, m))) > l; ) - m = R, R = r.add(r.multiply(y, m), N), f = f + 1; - return R; - }, - SOR: function(u, o, s, l, f) { - for (var v = 0, d = u.length, g = [], E = [], A = [], m, N, y, R, T; v < d; v++) - for (g[v] = [], E[v] = [], A[v] = [], m = 0; m < d; m++) - v > m ? (g[v][m] = u[v][m], E[v][m] = A[v][m] = 0) : v < m ? (E[v][m] = u[v][m], g[v][m] = A[v][m] = 0) : (A[v][m] = u[v][m], g[v][m] = E[v][m] = 0); - for (R = r.multiply( - r.inv(r.add(A, r.multiply(g, f))), - r.subtract( - r.multiply(A, 1 - f), - r.multiply(E, f) - ) - ), y = r.multiply(r.multiply(r.inv(r.add( - A, - r.multiply(g, f) - )), o), f), N = s, T = r.add(r.multiply(R, s), y), v = 2; i.abs(r.norm(r.subtract(T, N))) > l; ) - N = T, T = r.add(r.multiply(R, N), y), v++; - return T; - }, - householder: function(u) { - for (var o = u.length, s = u[0].length, l = 0, f = [], v = [], d, g, E, A, m; l < o - 1; l++) { - for (d = 0, A = l + 1; A < s; A++) - d += u[A][l] * u[A][l]; - for (m = u[l + 1][l] > 0 ? -1 : 1, d = m * i.sqrt(d), g = i.sqrt((d * d - u[l + 1][l] * d) / 2), f = r.zeros(o, 1), f[l + 1][0] = (u[l + 1][l] - d) / (2 * g), E = l + 2; E < o; E++) - f[E][0] = u[E][l] / (2 * g); - v = r.subtract( - r.identity(o, s), - r.multiply(r.multiply(f, r.transpose(f)), 2) - ), u = r.multiply(v, r.multiply(u, v)); - } - return u; - }, - // A -> [Q,R] - // Q is orthogonal matrix - // R is upper triangular - QR: function() { - var p = r.sum, u = r.arange; - function o(s) { - var l = s.length, f = s[0].length, v = r.zeros(f, f); - s = r.copy(s); - var d, g, E; - for (g = 0; g < f; g++) { - for (v[g][g] = i.sqrt(p(u(l).map(function(A) { - return s[A][g] * s[A][g]; - }))), d = 0; d < l; d++) - s[d][g] = s[d][g] / v[g][g]; - for (E = g + 1; E < f; E++) - for (v[g][E] = p(u(l).map(function(A) { - return s[A][g] * s[A][E]; - })), d = 0; d < l; d++) - s[d][E] = s[d][E] - s[d][g] * v[g][E]; - } - return [s, v]; - } - return o; - }(), - lstsq: function() { - function p(o) { - o = r.copy(o); - var s = o.length, l = r.identity(s); - return r.arange(s - 1, -1, -1).forEach(function(f) { - r.sliceAssign( - l, - { row: f }, - r.divide(r.slice(l, { row: f }), o[f][f]) - ), r.sliceAssign( - o, - { row: f }, - r.divide(r.slice(o, { row: f }), o[f][f]) - ), r.arange(f).forEach(function(v) { - var d = r.multiply(o[v][f], -1), g = r.slice(o, { row: v }), E = r.multiply(r.slice(o, { row: f }), d); - r.sliceAssign(o, { row: v }, r.add(g, E)); - var A = r.slice(l, { row: v }), m = r.multiply(r.slice(l, { row: f }), d); - r.sliceAssign(l, { row: v }, r.add(A, m)); - }); - }), l; - } - function u(o, s) { - var l = !1; - s[0].length === void 0 && (s = s.map(function(R) { - return [R]; - }), l = !0); - var f = r.QR(o), v = f[0], d = f[1], g = o[0].length, E = r.slice(v, { col: { end: g } }), A = r.slice(d, { row: { end: g } }), m = p(A), N = r.transpose(E); - N[0].length === void 0 && (N = [N]); - var y = r.multiply(r.multiply(m, N), s); - return y.length === void 0 && (y = [[y]]), l ? y.map(function(R) { - return R[0]; - }) : y; - } - return u; - }(), - jacobi: function(u) { - for (var o = 1, s = u.length, l = r.identity(s, s), f = [], v, d, g, E, A, m, N, y; o === 1; ) { - for (m = u[0][1], E = 0, A = 1, d = 0; d < s; d++) - for (g = 0; g < s; g++) - d != g && m < i.abs(u[d][g]) && (m = i.abs(u[d][g]), E = d, A = g); - for (u[E][E] === u[A][A] ? N = u[E][A] > 0 ? i.PI / 4 : -i.PI / 4 : N = i.atan(2 * u[E][A] / (u[E][E] - u[A][A])) / 2, y = r.identity(s, s), y[E][E] = i.cos(N), y[E][A] = -i.sin(N), y[A][E] = i.sin(N), y[A][A] = i.cos(N), l = r.multiply(l, y), v = r.multiply(r.multiply(r.inv(y), u), y), u = v, o = 0, d = 1; d < s; d++) - for (g = 1; g < s; g++) - d != g && i.abs(u[d][g]) > 1e-3 && (o = 1); - } - for (d = 0; d < s; d++) - f.push(u[d][d]); - return [l, f]; - }, - rungekutta: function(u, o, s, l, f, v) { - var d, g, E, A, m; - if (v === 2) - for (; l <= s; ) - d = o * u(l, f), g = o * u(l + o, f + d), E = f + (d + g) / 2, f = E, l = l + o; - if (v === 4) - for (; l <= s; ) - d = o * u(l, f), g = o * u(l + o / 2, f + d / 2), A = o * u(l + o / 2, f + g / 2), m = o * u(l + o, f + A), E = f + (d + 2 * g + 2 * A + m) / 6, f = E, l = l + o; - return f; - }, - romberg: function(u, o, s, l) { - for (var f = 0, v = (s - o) / 2, d = [], g = [], E = [], A, m, N, y, R; f < l / 2; ) { - for (R = u(o), N = o, y = 0; N <= s; N = N + v, y++) - d[y] = N; - for (A = d.length, N = 1; N < A - 1; N++) - R += (N % 2 !== 0 ? 4 : 2) * u(d[N]); - R = v / 3 * (R + u(s)), E[f] = R, v /= 2, f++; - } - for (m = E.length, A = 1; m !== 1; ) { - for (N = 0; N < m - 1; N++) - g[N] = (i.pow(4, A) * E[N + 1] - E[N]) / (i.pow(4, A) - 1); - m = g.length, E = g, g = [], A++; - } - return E; - }, - richardson: function(u, o, s, l) { - function f(T, w) { - for (var C = 0, M = T.length, _; C < M; C++) - T[C] === w && (_ = C); - return _; - } - for (var v = i.abs(s - u[f(u, s) + 1]), d = 0, g = [], E = [], A, m, N, y, R; l >= v; ) - A = f(u, s + l), m = f(u, s), g[d] = (o[A] - 2 * o[m] + o[2 * m - A]) / (l * l), l /= 2, d++; - for (y = g.length, N = 1; y != 1; ) { - for (R = 0; R < y - 1; R++) - E[R] = (i.pow(4, N) * g[R + 1] - g[R]) / (i.pow(4, N) - 1); - y = E.length, g = E, E = [], N++; - } - return g; - }, - simpson: function(u, o, s, l) { - for (var f = (s - o) / l, v = u(o), d = [], g = o, E = 0, A = 1, m; g <= s; g = g + f, E++) - d[E] = g; - for (m = d.length; A < m - 1; A++) - v += (A % 2 !== 0 ? 4 : 2) * u(d[A]); - return f / 3 * (v + u(s)); - }, - hermite: function(u, o, s, l) { - for (var f = u.length, v = 0, d = 0, g = [], E = [], A = [], m = [], N; d < f; d++) { - for (g[d] = 1, N = 0; N < f; N++) - d != N && (g[d] *= (l - u[N]) / (u[d] - u[N])); - for (E[d] = 0, N = 0; N < f; N++) - d != N && (E[d] += 1 / (u[d] - u[N])); - A[d] = (1 - 2 * (l - u[d]) * E[d]) * (g[d] * g[d]), m[d] = (l - u[d]) * (g[d] * g[d]), v += A[d] * o[d] + m[d] * s[d]; - } - return v; - }, - lagrange: function(u, o, s) { - for (var l = 0, f = 0, v, d, g = u.length; f < g; f++) { - for (d = o[f], v = 0; v < g; v++) - f != v && (d *= (s - u[v]) / (u[f] - u[v])); - l += d; - } - return l; - }, - cubic_spline: function(u, o, s) { - for (var l = u.length, f = 0, v, d = [], g = [], E = [], A = [], m = [], N = [], y = []; f < l - 1; f++) - m[f] = u[f + 1] - u[f]; - for (E[0] = 0, f = 1; f < l - 1; f++) - E[f] = 3 / m[f] * (o[f + 1] - o[f]) - 3 / m[f - 1] * (o[f] - o[f - 1]); - for (f = 1; f < l - 1; f++) - d[f] = [], g[f] = [], d[f][f - 1] = m[f - 1], d[f][f] = 2 * (m[f - 1] + m[f]), d[f][f + 1] = m[f], g[f][0] = E[f]; - for (A = r.multiply(r.inv(d), g), v = 0; v < l - 1; v++) - N[v] = (o[v + 1] - o[v]) / m[v] - m[v] * (A[v + 1][0] + 2 * A[v][0]) / 3, y[v] = (A[v + 1][0] - A[v][0]) / (3 * m[v]); - for (v = 0; v < l && !(u[v] > s); v++) - ; - return v -= 1, o[v] + (s - u[v]) * N[v] + r.sq(s - u[v]) * A[v] + (s - u[v]) * r.sq(s - u[v]) * y[v]; - }, - gauss_quadrature: function() { - throw new Error("gauss_quadrature not yet implemented"); - }, - PCA: function(u) { - var o = u.length, s = u[0].length, l = 0, f, v, d = [], g = [], E = [], A = [], m = [], N = [], y = [], R = [], T = [], w = []; - for (l = 0; l < o; l++) - d[l] = r.sum(u[l]) / s; - for (l = 0; l < s; l++) - for (y[l] = [], f = 0; f < o; f++) - y[l][f] = u[f][l] - d[f]; - for (y = r.transpose(y), l = 0; l < o; l++) - for (R[l] = [], f = 0; f < o; f++) - R[l][f] = r.dot([y[l]], [y[f]]) / (s - 1); - for (E = r.jacobi(R), T = E[0], g = E[1], w = r.transpose(T), l = 0; l < g.length; l++) - for (f = l; f < g.length; f++) - g[l] < g[f] && (v = g[l], g[l] = g[f], g[f] = v, A = w[l], w[l] = w[f], w[f] = A); - for (N = r.transpose(y), l = 0; l < o; l++) - for (m[l] = [], f = 0; f < N.length; f++) - m[l][f] = r.dot([w[l]], [N[f]]); - return [u, g, w, m]; - } - }), function(p) { - for (var u = 0; u < p.length; u++) - (function(o) { - r.fn[o] = function(s, l) { - var f = this; - return l ? (setTimeout(function() { - l.call(f, r.fn[o].call(f, s)); - }, 15), this) : typeof r[o](this, s) == "number" ? r[o](this, s) : r(r[o](this, s)); - }; - })(p[u]); - }("add divide multiply subtract dot pow exp log abs norm angle".split(" ")); - }(n, Math), function(r, i) { - var a = [].slice, c = r.utils.isNumber, h = r.utils.isArray; - r.extend({ - // 2 different parameter lists: - // (value, mean, sd) - // (value, array, flag) - zscore: function() { - var o = a.call(arguments); - return c(o[1]) ? (o[0] - o[1]) / o[2] : (o[0] - r.mean(o[1])) / r.stdev(o[1], o[2]); - }, - // 3 different paramter lists: - // (value, mean, sd, sides) - // (zscore, sides) - // (value, array, sides, flag) - ztest: function() { - var o = a.call(arguments), s; - return h(o[1]) ? (s = r.zscore(o[0], o[1], o[3]), o[2] === 1 ? r.normal.cdf(-i.abs(s), 0, 1) : r.normal.cdf(-i.abs(s), 0, 1) * 2) : o.length > 2 ? (s = r.zscore(o[0], o[1], o[2]), o[3] === 1 ? r.normal.cdf(-i.abs(s), 0, 1) : r.normal.cdf(-i.abs(s), 0, 1) * 2) : (s = o[0], o[1] === 1 ? r.normal.cdf(-i.abs(s), 0, 1) : r.normal.cdf(-i.abs(s), 0, 1) * 2); - } - }), r.extend(r.fn, { - zscore: function(o, s) { - return (o - this.mean()) / this.stdev(s); - }, - ztest: function(o, s, l) { - var f = i.abs(this.zscore(o, l)); - return s === 1 ? r.normal.cdf(-f, 0, 1) : r.normal.cdf(-f, 0, 1) * 2; - } - }), r.extend({ - // 2 parameter lists - // (value, mean, sd, n) - // (value, array) - tscore: function() { - var o = a.call(arguments); - return o.length === 4 ? (o[0] - o[1]) / (o[2] / i.sqrt(o[3])) : (o[0] - r.mean(o[1])) / (r.stdev(o[1], !0) / i.sqrt(o[1].length)); - }, - // 3 different paramter lists: - // (value, mean, sd, n, sides) - // (tscore, n, sides) - // (value, array, sides) - ttest: function() { - var o = a.call(arguments), s; - return o.length === 5 ? (s = i.abs(r.tscore(o[0], o[1], o[2], o[3])), o[4] === 1 ? r.studentt.cdf(-s, o[3] - 1) : r.studentt.cdf(-s, o[3] - 1) * 2) : c(o[1]) ? (s = i.abs(o[0]), o[2] == 1 ? r.studentt.cdf(-s, o[1] - 1) : r.studentt.cdf(-s, o[1] - 1) * 2) : (s = i.abs(r.tscore(o[0], o[1])), o[2] == 1 ? r.studentt.cdf(-s, o[1].length - 1) : r.studentt.cdf(-s, o[1].length - 1) * 2); - } - }), r.extend(r.fn, { - tscore: function(o) { - return (o - this.mean()) / (this.stdev(!0) / i.sqrt(this.cols())); - }, - ttest: function(o, s) { - return s === 1 ? 1 - r.studentt.cdf(i.abs(this.tscore(o)), this.cols() - 1) : r.studentt.cdf(-i.abs(this.tscore(o)), this.cols() - 1) * 2; - } - }), r.extend({ - // Paramter list is as follows: - // (array1, array2, array3, ...) - // or it is an array of arrays - // array of arrays conversion - anovafscore: function() { - var o = a.call(arguments), s, l, f, v, d, g, E, A; - if (o.length === 1) { - for (d = new Array(o[0].length), E = 0; E < o[0].length; E++) - d[E] = o[0][E]; - o = d; - } - for (l = new Array(), E = 0; E < o.length; E++) - l = l.concat(o[E]); - for (f = r.mean(l), s = 0, E = 0; E < o.length; E++) - s = s + o[E].length * i.pow(r.mean(o[E]) - f, 2); - for (s /= o.length - 1, g = 0, E = 0; E < o.length; E++) - for (v = r.mean(o[E]), A = 0; A < o[E].length; A++) - g += i.pow(o[E][A] - v, 2); - return g /= l.length - o.length, s / g; - }, - // 2 different paramter setups - // (array1, array2, array3, ...) - // (anovafscore, df1, df2) - anovaftest: function() { - var o = a.call(arguments), s, l, f, v; - if (c(o[0])) - return 1 - r.centralF.cdf(o[0], o[1], o[2]); - var d = r.anovafscore(o); - for (s = o.length - 1, f = 0, v = 0; v < o.length; v++) - f = f + o[v].length; - return l = f - s - 1, 1 - r.centralF.cdf(d, s, l); - }, - ftest: function(o, s, l) { - return 1 - r.centralF.cdf(o, s, l); - } - }), r.extend(r.fn, { - anovafscore: function() { - return r.anovafscore(this.toArray()); - }, - anovaftes: function() { - var o = 0, s; - for (s = 0; s < this.length; s++) - o = o + this[s].length; - return r.ftest(this.anovafscore(), this.length - 1, o - this.length); - } - }), r.extend({ - // 2 parameter lists - // (mean1, mean2, n1, n2, sd) - // (array1, array2, sd) - qscore: function() { - var o = a.call(arguments), s, l, f, v, d; - return c(o[0]) ? (s = o[0], l = o[1], f = o[2], v = o[3], d = o[4]) : (s = r.mean(o[0]), l = r.mean(o[1]), f = o[0].length, v = o[1].length, d = o[2]), i.abs(s - l) / (d * i.sqrt((1 / f + 1 / v) / 2)); - }, - // 3 different parameter lists: - // (qscore, n, k) - // (mean1, mean2, n1, n2, sd, n, k) - // (array1, array2, sd, n, k) - qtest: function() { - var o = a.call(arguments), s; - o.length === 3 ? (s = o[0], o = o.slice(1)) : o.length === 7 ? (s = r.qscore(o[0], o[1], o[2], o[3], o[4]), o = o.slice(5)) : (s = r.qscore(o[0], o[1], o[2]), o = o.slice(3)); - var l = o[0], f = o[1]; - return 1 - r.tukey.cdf(s, f, l - f); - }, - tukeyhsd: function(o) { - for (var s = r.pooledstdev(o), l = o.map(function(A) { - return r.mean(A); - }), f = o.reduce(function(A, m) { - return A + m.length; - }, 0), v = [], d = 0; d < o.length; ++d) - for (var g = d + 1; g < o.length; ++g) { - var E = r.qtest(l[d], l[g], o[d].length, o[g].length, s, f, o.length); - v.push([[d, g], E]); - } - return v; - } - }), r.extend({ - // 2 different parameter setups - // (value, alpha, sd, n) - // (value, alpha, array) - normalci: function() { - var o = a.call(arguments), s = new Array(2), l; - return o.length === 4 ? l = i.abs(r.normal.inv(o[1] / 2, 0, 1) * o[2] / i.sqrt(o[3])) : l = i.abs(r.normal.inv(o[1] / 2, 0, 1) * r.stdev(o[2]) / i.sqrt(o[2].length)), s[0] = o[0] - l, s[1] = o[0] + l, s; - }, - // 2 different parameter setups - // (value, alpha, sd, n) - // (value, alpha, array) - tci: function() { - var o = a.call(arguments), s = new Array(2), l; - return o.length === 4 ? l = i.abs(r.studentt.inv(o[1] / 2, o[3] - 1) * o[2] / i.sqrt(o[3])) : l = i.abs(r.studentt.inv(o[1] / 2, o[2].length - 1) * r.stdev(o[2], !0) / i.sqrt(o[2].length)), s[0] = o[0] - l, s[1] = o[0] + l, s; - }, - significant: function(o, s) { - return o < s; - } - }), r.extend(r.fn, { - normalci: function(o, s) { - return r.normalci(o, s, this.toArray()); - }, - tci: function(o, s) { - return r.tci(o, s, this.toArray()); - } - }); - function p(u, o, s, l) { - if (u > 1 || s > 1 || u <= 0 || s <= 0) - throw new Error("Proportions should be greater than 0 and less than 1"); - var f = (u * o + s * l) / (o + l), v = i.sqrt(f * (1 - f) * (1 / o + 1 / l)); - return (u - s) / v; - } - r.extend(r.fn, { - oneSidedDifferenceOfProportions: function(o, s, l, f) { - var v = p(o, s, l, f); - return r.ztest(v, 1); - }, - twoSidedDifferenceOfProportions: function(o, s, l, f) { - var v = p(o, s, l, f); - return r.ztest(v, 2); - } - }); - }(n, Math), n.models = function() { - function r(p) { - var u = p[0].length, o = n.arange(u).map(function(s) { - var l = n.arange(u).filter(function(f) { - return f !== s; - }); - return i( - n.col(p, s).map(function(f) { - return f[0]; - }), - n.col(p, l) - ); - }); - return o; - } - function i(p, u) { - var o = p.length, s = u[0].length - 1, l = o - s - 1, f = n.lstsq(u, p), v = n.multiply(u, f.map(function(y) { - return [y]; - })).map(function(y) { - return y[0]; - }), d = n.subtract(p, v), g = n.mean(p), E = n.sum(v.map(function(y) { - return Math.pow(y - g, 2); - })), A = n.sum(p.map(function(y, R) { - return Math.pow(y - v[R], 2); - })), m = E + A, N = E / m; - return { - exog: u, - endog: p, - nobs: o, - df_model: s, - df_resid: l, - coef: f, - predict: v, - resid: d, - ybar: g, - SST: m, - SSE: E, - SSR: A, - R2: N - }; - } - function a(p) { - var u = r(p.exog), o = Math.sqrt(p.SSR / p.df_resid), s = u.map(function(g) { - var E = g.SST, A = g.R2; - return o / Math.sqrt(E * (1 - A)); - }), l = p.coef.map(function(g, E) { - return (g - 0) / s[E]; - }), f = l.map(function(g) { - var E = n.studentt.cdf(g, p.df_resid); - return (E > 0.5 ? 1 - E : E) * 2; - }), v = n.studentt.inv(0.975, p.df_resid), d = p.coef.map(function(g, E) { - var A = v * s[E]; - return [g - A, g + A]; - }); - return { - se: s, - t: l, - p: f, - sigmaHat: o, - interval95: d - }; - } - function c(p) { - var u = p.R2 / p.df_model / ((1 - p.R2) / p.df_resid), o = function(l, f, v) { - return n.beta.cdf(l / (v / f + l), f / 2, v / 2); - }, s = 1 - o(u, p.df_model, p.df_resid); - return { F_statistic: u, pvalue: s }; - } - function h(p, u) { - var o = i(p, u), s = a(o), l = c(o), f = 1 - (1 - o.R2) * ((o.nobs - 1) / o.df_resid); - return o.t = s, o.f = l, o.adjust_R2 = f, o; - } - return { ols: h }; - }(), n.extend({ - buildxmatrix: function() { - for (var i = new Array(arguments.length), a = 0; a < arguments.length; a++) { - var c = [1]; - i[a] = c.concat(arguments[a]); - } - return n(i); - }, - builddxmatrix: function() { - for (var i = new Array(arguments[0].length), a = 0; a < arguments[0].length; a++) { - var c = [1]; - i[a] = c.concat(arguments[0][a]); - } - return n(i); - }, - buildjxmatrix: function(i) { - for (var a = new Array(i.length), c = 0; c < i.length; c++) - a[c] = i[c]; - return n.builddxmatrix(a); - }, - buildymatrix: function(i) { - return n(i).transpose(); - }, - buildjymatrix: function(i) { - return i.transpose(); - }, - matrixmult: function(i, a) { - var c, h, p, u, o; - if (i.cols() == a.rows()) { - if (a.rows() > 1) { - for (u = [], c = 0; c < i.rows(); c++) - for (u[c] = [], h = 0; h < a.cols(); h++) { - for (o = 0, p = 0; p < i.cols(); p++) - o += i.toArray()[c][p] * a.toArray()[p][h]; - u[c][h] = o; - } - return n(u); - } - for (u = [], c = 0; c < i.rows(); c++) - for (u[c] = [], h = 0; h < a.cols(); h++) { - for (o = 0, p = 0; p < i.cols(); p++) - o += i.toArray()[c][p] * a.toArray()[h]; - u[c][h] = o; - } - return n(u); - } - }, - //regress and regresst to be fixed - regress: function(i, a) { - var c = n.xtranspxinv(i), h = i.transpose(), p = n.matrixmult(n(c), h); - return n.matrixmult(p, a); - }, - regresst: function(i, a, c) { - var h = n.regress(i, a), p = {}; - p.anova = {}; - var u = n.jMatYBar(i, h); - p.yBar = u; - var o = a.mean(); - p.anova.residuals = n.residuals(a, u), p.anova.ssr = n.ssr(u, o), p.anova.msr = p.anova.ssr / (i[0].length - 1), p.anova.sse = n.sse(a, u), p.anova.mse = p.anova.sse / (a.length - (i[0].length - 1) - 1), p.anova.sst = n.sst(a, o), p.anova.mst = p.anova.sst / (a.length - 1), p.anova.r2 = 1 - p.anova.sse / p.anova.sst, p.anova.r2 < 0 && (p.anova.r2 = 0), p.anova.fratio = p.anova.msr / p.anova.mse, p.anova.pvalue = n.anovaftest( - p.anova.fratio, - i[0].length - 1, - a.length - (i[0].length - 1) - 1 - ), p.anova.rmse = Math.sqrt(p.anova.mse), p.anova.r2adj = 1 - p.anova.mse / p.anova.mst, p.anova.r2adj < 0 && (p.anova.r2adj = 0), p.stats = new Array(i[0].length); - for (var s = n.xtranspxinv(i), l, f, v, d = 0; d < h.length; d++) - l = Math.sqrt(p.anova.mse * Math.abs(s[d][d])), f = Math.abs(h[d] / l), v = n.ttest(f, a.length - i[0].length - 1, c), p.stats[d] = [h[d], l, f, v]; - return p.regress = h, p; - }, - xtranspx: function(i) { - return n.matrixmult(i.transpose(), i); - }, - xtranspxinv: function(i) { - var a = n.matrixmult(i.transpose(), i), c = n.inv(a); - return c; - }, - jMatYBar: function(i, a) { - var c = n.matrixmult(i, a); - return new n(c); - }, - residuals: function(i, a) { - return n.matrixsubtract(i, a); - }, - ssr: function(i, a) { - for (var c = 0, h = 0; h < i.length; h++) - c += Math.pow(i[h] - a, 2); - return c; - }, - sse: function(i, a) { - for (var c = 0, h = 0; h < i.length; h++) - c += Math.pow(i[h] - a[h], 2); - return c; - }, - sst: function(i, a) { - for (var c = 0, h = 0; h < i.length; h++) - c += Math.pow(i[h] - a, 2); - return c; - }, - matrixsubtract: function(i, a) { - for (var c = new Array(i.length), h = 0; h < i.length; h++) { - c[h] = new Array(i[h].length); - for (var p = 0; p < i[h].length; p++) - c[h][p] = i[h][p] - a[h][p]; - } - return n(c); - } - }), n.jStat = n, n; - }); -})(Vo); -var Go = Vo.exports; -const D = he(), Ke = So, { FormulaHelpers: Da, Types: H } = ge(), b = Da, dn = Do, di = Go, Va = 536870911, Ga = -536870912, dr = 511, vn = -512, $a = /^\s?[+-]?\s?[0-9]+[.]?[0-9]*([eE][+\-][0-9]+)?\s?$/, Ha = /^\s?([+-]?\s?([0-9]+[.]?[0-9]*([eE][+\-][0-9]+)?)?)\s?[ij]\s?$/, Wa = /^\s?([+-]?\s?[0-9]+[.]?[0-9]*([eE][+\-][0-9]+)?)\s?([+-]?\s?([0-9]+[.]?[0-9]*([eE][+\-][0-9]+)?)?)\s?[ij]\s?$/; -function re(t) { - t = b.accept(t); - let e = 0, n = 0, r = "i"; - if (typeof t == "number") - return { real: t, im: n, unit: r }; - if (typeof t == "boolean") - throw D.VALUE; - let i = t.match($a); - if (i) - return e = Number(i[0]), { real: e, im: n, unit: r }; - if (i = t.match(Ha), i) - return n = Number(/^\s?[+-]?\s?$/.test(i[1]) ? i[1] + "1" : i[1]), r = i[0].slice(-1), { real: e, im: n, unit: r }; - if (i = t.match(Wa), i) - return e = Number(i[1]), n = Number(/^\s?[+-]?\s?$/.test(i[3]) ? i[3] + "1" : i[3]), r = i[0].slice(-1), { real: e, im: n, unit: r }; - throw D.NUM; -} -const K = { - BESSELI: (t, e) => { - if (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN), e = Math.trunc(e), e < 0) - throw D.NUM; - return dn.besseli(t, e); - }, - BESSELJ: (t, e) => { - if (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN), e = Math.trunc(e), e < 0) - throw D.NUM; - return dn.besselj(t, e); - }, - BESSELK: (t, e) => { - if (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN), e = Math.trunc(e), e < 0) - throw D.NUM; - return dn.besselk(t, e); - }, - BESSELY: (t, e) => { - if (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN), e = Math.trunc(e), e < 0) - throw D.NUM; - return dn.bessely(t, e); - }, - BIN2DEC: (t) => { - t = b.accept(t, H.NUMBER_NO_BOOLEAN); - let e = t.toString(); - if (e.length > 10) - throw D.NUM; - return e.length === 10 && e.substring(0, 1) === "1" ? parseInt(e.substring(1), 2) + vn : parseInt(e, 2); - }, - BIN2HEX: (t, e) => { - t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN, null); - const n = t.toString(); - if (n.length > 10) - throw D.NUM; - if (n.length === 10 && n.substring(0, 1) === "1") - return (parseInt(n.substring(1), 2) + 1099511627264).toString(16).toUpperCase(); - const r = parseInt(t, 2).toString(16); - if (e == null) - return r.toUpperCase(); - if (e < 0) - throw D.NUM; - if (e = Math.trunc(e), e >= r.length) - return (Ke.REPT("0", e - r.length) + r).toUpperCase(); - throw D.NUM; - }, - BIN2OCT: (t, e) => { - t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER, null); - let n = t.toString(); - if (n.length > 10) - throw D.NUM; - if (n.length === 10 && n.substr(0, 1) === "1") - return (parseInt(n.substr(1), 2) + 1073741312).toString(8); - let r = parseInt(t, 2).toString(8); - if (e == null) - return r.toUpperCase(); - if (e < 0) - throw D.NUM; - if (e = Math.trunc(e), e >= r.length) - return Ke.REPT("0", e - r.length) + r; - throw D.NUM; - }, - BITAND: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER), t < 0 || e < 0 || Math.floor(t) !== t || Math.floor(e) !== e || t > 281474976710655 || e > 281474976710655) - throw D.NUM; - return t & e; - }, - BITLSHIFT: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER), e = Math.trunc(e), Math.abs(e) > 53 || t < 0 || Math.floor(t) !== t || t > 281474976710655) - throw D.NUM; - const n = e >= 0 ? t * 2 ** e : Math.trunc(t / 2 ** -e); - if (n > 281474976710655) - throw D.NUM; - return n; - }, - BITOR: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER), t < 0 || e < 0 || Math.floor(t) !== t || Math.floor(e) !== e || t > 281474976710655 || e > 281474976710655) - throw D.NUM; - return t | e; - }, - BITRSHIFT: (t, e) => (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER), K.BITLSHIFT(t, -e)), - BITXOR: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER), t < 0 || t > 281474976710655 || Math.floor(t) !== t || e < 0 || e > 281474976710655 || Math.floor(e) !== e) - throw D.NUM; - return t ^ e; - }, - COMPLEX: (t, e, n) => { - if (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN), n = b.accept(n, H.STRING, "i"), n !== "i" && n !== "j") - throw D.VALUE; - if (t === 0 && e === 0) - return 0; - if (t === 0) - return e === 1 ? n : e === -1 ? "-" + n : e.toString() + n; - if (e === 0) - return t.toString(); - { - let r = e > 0 ? "+" : ""; - return e === 1 ? t.toString() + r + n : e === -1 ? t.toString() + r + "-" + n : t.toString() + r + e.toString() + n; - } - }, - DEC2BIN: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER, null), t < vn || t > dr) - throw D.NUM; - if (t < 0) - return "1" + Ke.REPT("0", 9 - (512 + t).toString(2).length) + (512 + t).toString(2); - let n = parseInt(t, 10).toString(2); - if (e == null) - return n; - if (e = Math.trunc(e), e <= 0 || e < n.length) - throw D.NUM; - return Ke.REPT("0", e - n.length) + n; - }, - DEC2HEX: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER, null), t < -549755813888 || t > 549755813888) - throw D.NUM; - if (t < 0) - return (1099511627776 + t).toString(16).toUpperCase(); - let n = parseInt(t, 10).toString(16); - if (e == null) - return n.toUpperCase(); - if (e = Math.trunc(e), e <= 0 || e < n.length) - throw D.NUM; - return Ke.REPT("0", e - n.length) + n.toUpperCase(); - }, - DEC2OCT: (t, e) => { - if (t = b.accept(t, H.NUMBER), e = b.accept(e, H.NUMBER, null), t < -536870912 || t > 536870912) - throw D.NUM; - if (t < 0) - return (t + 1073741824).toString(8); - let n = parseInt(t, 10).toString(8); - if (e == null) - return n.toUpperCase(); - if (e = Math.trunc(e), e <= 0 || e < n.length) - throw D.NUM; - return Ke.REPT("0", e - n.length) + n; - }, - DELTA: (t, e) => (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN, 0), t === e ? 1 : 0), - ERF: (t, e) => (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN, 0), di.erf(t)), - ERFC: (t) => (t = b.accept(t, H.NUMBER_NO_BOOLEAN), di.erfc(t)), - GESTEP: (t, e) => (t = b.accept(t, H.NUMBER_NO_BOOLEAN), e = b.accept(e, H.NUMBER_NO_BOOLEAN, 0), t >= e ? 1 : 0), - HEX2BIN: (t, e) => { - if (t = b.accept(t, H.STRING), e = b.accept(e, H.NUMBER, null), t.length > 10 || !/^[0-9a-fA-F]*$/.test(t)) - throw D.NUM; - let n = t.length === 10 && t.substr(0, 1).toLowerCase() === "f", r = n ? parseInt(t, 16) - 1099511627776 : parseInt(t, 16); - if (r < vn || r > dr) - throw D.NUM; - if (n) - return "1" + Ke.REPT("0", 9 - (r + 512).toString(2).length) + (r + 512).toString(2); - let i = r.toString(2); - if (e == null) - return i; - if (e = Math.trunc(e), e <= 0 || e < i.length) - throw D.NUM; - return Ke.REPT("0", e - i.length) + i; - }, - HEX2DEC: (t) => { - if (t = b.accept(t, H.STRING), t.length > 10 || !/^[0-9a-fA-F]*$/.test(t)) - throw D.NUM; - let e = parseInt(t, 16); - return e >= 549755813888 ? e - 1099511627776 : e; - }, - HEX2OCT: (t, e) => { - if (t = b.accept(t, H.STRING), t.length > 10 || !/^[0-9a-fA-F]*$/.test(t)) - throw D.NUM; - let n = K.HEX2DEC(t); - if (n > Va || n < Ga) - throw D.NUM; - return K.DEC2OCT(n, e); - }, - IMABS: (t) => { - const { real: e, im: n } = re(t); - return Math.sqrt(Math.pow(e, 2) + Math.pow(n, 2)); - }, - IMAGINARY: (t) => re(t).im, - IMARGUMENT: (t) => { - const { real: e, im: n } = re(t); - if (e === 0 && n === 0) - throw D.DIV0; - return e === 0 && n > 0 ? Math.PI / 2 : e === 0 && n < 0 ? -Math.PI / 2 : e < 0 && n === 0 ? Math.PI : e > 0 && n === 0 ? 0 : e > 0 ? Math.atan(n / e) : e < 0 && n > 0 ? Math.atan(n / e) + Math.PI : Math.atan(n / e) - Math.PI; - }, - IMCONJUGATE: (t) => { - const { real: e, im: n, unit: r } = re(t); - return n !== 0 ? K.COMPLEX(e, -n, r) : "" + e; - }, - IMCOS: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.cos(e) * (Math.exp(n) + Math.exp(-n)) / 2, a = -Math.sin(e) * (Math.exp(n) - Math.exp(-n)) / 2; - return K.COMPLEX(i, a, r); - }, - IMCOSH: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.cos(n) * (Math.exp(e) + Math.exp(-e)) / 2, a = -Math.sin(n) * (Math.exp(e) - Math.exp(-e)) / 2; - return K.COMPLEX(i, -a, r); - }, - IMCOT: (t) => { - t = b.accept(t); - let e = K.IMCOS(t), n = K.IMSIN(t); - return K.IMDIV(e, n); - }, - IMCSC: (t) => (t = b.accept(t), K.IMDIV("1", K.IMSIN(t))), - IMCSCH: (t) => (t = b.accept(t), K.IMDIV("1", K.IMSINH(t))), - IMDIV: (t, e) => { - const n = re(t), r = n.real, i = n.im, a = n.unit, c = re(e), h = c.real, p = c.im, u = c.unit; - if (h === 0 && p === 0 || a !== u) - throw D.NUM; - let o = a, s = Math.pow(h, 2) + Math.pow(p, 2); - return K.COMPLEX((r * h + i * p) / s, (i * h - r * p) / s, o); - }, - IMEXP: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.exp(e); - return K.COMPLEX(i * Math.cos(n), i * Math.sin(n), r); - }, - IMLN: (t) => { - const { real: e, im: n, unit: r } = re(t); - return K.COMPLEX( - Math.log(Math.sqrt(Math.pow(e, 2) + Math.pow(n, 2))), - Math.atan(n / e), - r - ); - }, - IMLOG10: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.log(Math.sqrt(Math.pow(e, 2) + Math.pow(n, 2))) / Math.log(10), a = Math.atan(n / e) / Math.log(10); - return K.COMPLEX(i, a, r); - }, - IMLOG2: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.log(Math.sqrt(Math.pow(e, 2) + Math.pow(n, 2))) / Math.log(2), a = Math.atan(n / e) / Math.log(2); - return K.COMPLEX(i, a, r); - }, - IMPOWER: (t, e) => { - let { unit: n } = re(t); - e = b.accept(e, H.NUMBER_NO_BOOLEAN); - let r = Math.pow(K.IMABS(t), e), i = K.IMARGUMENT(t), a = r * Math.cos(e * i), c = r * Math.sin(e * i); - return K.COMPLEX(a, c, n); - }, - IMPRODUCT: (...t) => { - let e, n = 0; - return b.flattenParams(t, null, !1, (r) => { - if (n === 0) - e = b.accept(r), re(e); - else { - const i = re(e), a = i.real, c = i.im, h = i.unit, p = re(r), u = p.real, o = p.im, s = p.unit; - if (h !== s) - throw D.VALUE; - e = K.COMPLEX(a * u - c * o, a * o + c * u); - } - n++; - }, 1), e; - }, - IMREAL: (t) => re(t).real, - IMSEC: (t) => K.IMDIV("1", K.IMCOS(t)), - IMSECH: (t) => K.IMDIV("1", K.IMCOSH(t)), - IMSIN: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.sin(e) * (Math.exp(n) + Math.exp(-n)) / 2, a = Math.cos(e) * (Math.exp(n) - Math.exp(-n)) / 2; - return K.COMPLEX(i, a, r); - }, - IMSINH: (t) => { - const { real: e, im: n, unit: r } = re(t); - let i = Math.cos(n) * (Math.exp(e) - Math.exp(-e)) / 2, a = Math.sin(n) * (Math.exp(e) + Math.exp(-e)) / 2; - return K.COMPLEX(i, a, r); - }, - IMSQRT: (t) => { - const { unit: e } = re(t); - let n = Math.sqrt(K.IMABS(t)), r = K.IMARGUMENT(t); - return K.COMPLEX(n * Math.cos(r / 2), n * Math.sin(r / 2), e); - }, - IMSUB: (t, e) => { - const n = re(t), r = n.real, i = n.im, a = n.unit, c = re(e), h = c.real, p = c.im, u = c.unit; - if (a !== u) - throw D.VALUE; - return K.COMPLEX(r - h, i - p, a); - }, - IMSUM: (...t) => { - let e = 0, n = 0, r; - return b.flattenParams(t, null, !1, (i) => { - const { real: a, im: c, unit: h } = re(i); - if (r || (r = h), r !== h) - throw D.VALUE; - e += a, n += c; - }), K.COMPLEX(e, n, r); - }, - IMTAN: (t) => { - const { unit: e } = re(t); - return K.IMDIV(K.IMSIN(t), K.IMCOS(t), e); - }, - // FIXME: need to check the test cases - OCT2BIN: (t, e) => { - if (t = b.accept(t, H.STRING), e = b.accept(e, H.NUMBER, null), t.length > 10 || e > 10 || e !== null && e < 0) - throw D.NUM; - e = Math.trunc(e); - let n = t.length === 10 && t.substring(0, 1) === "7", r = K.OCT2DEC(t); - if (r < vn || r > dr) - return D.NUM; - if (n) - return "1" + Ke.REPT("0", 9 - (512 + r).toString(2).length) + (512 + r).toString(2); - let i = r.toString(2); - if (e === 0) - return i; - if (e < i.length) - throw D.NUM; - return Ke.REPT("0", e - i.length) + i; - }, - OCT2DEC: (t) => { - if (t = b.accept(t, H.STRING), t.length > 10) - throw D.NUM; - for (const n of t) - if (n < "0" || n > "7") - throw D.NUM; - let e = parseInt(t, 8); - return e >= 536870912 ? e - 1073741824 : e; - }, - OCT2HEX: (t, e) => { - if (t = b.accept(t, H.STRING), e = b.accept(e, H.NUMBER_NO_BOOLEAN, null), t.length > 10) - throw D.NUM; - for (const i of t) - if (i < "0" || i > "7") - throw D.NUM; - if (e = Math.trunc(e), e < 0 || e > 10) - throw D.NUM; - let n = K.OCT2DEC(t), r = K.DEC2HEX(n); - if (e === 0) - return r; - if (e < r.length) - throw D.NUM; - return Ke.REPT("0", e - r.length) + r; - } -}; -var qa = K; -const te = he(), { FormulaHelpers: Ya, Types: Oe, WildCard: gn, Address: Ka } = ge(), vi = Gn, X = Ya, za = { - ADDRESS: (t, e, n, r, i) => { - if (t = X.accept(t, Oe.NUMBER), e = X.accept(e, Oe.NUMBER), n = X.accept(n, Oe.NUMBER, 1), r = X.accept(r, Oe.BOOLEAN, !0), i = X.accept(i, Oe.STRING, ""), t < 1 || e < 1 || n < 1 || n > 4) - throw te.VALUE; - let a = ""; - return i.length > 0 && (/[^A-Za-z_.\d\u007F-\uFFFF]/.test(i) ? a += `'${i}'!` : a += i + "!"), r ? (a += n === 1 || n === 3 ? "$" : "", a += Ka.columnNumberToName(e), a += n === 1 || n === 2 ? "$" : "", a += t) : (a += "R", a += n === 4 || n === 3 ? `[${t}]` : t, a += "C", a += n === 4 || n === 2 ? `[${e}]` : e), a; - }, - AREAS: (t) => (t = X.accept(t), t instanceof vi ? t.length : 1), - CHOOSE: (t, ...e) => { - }, - // Special - COLUMN: (t, e) => { - if (e == null) { - if (t.position.col != null) - return t.position.col; - throw Error("FormulaParser.parse is called without position parameter."); - } else { - if (typeof e != "object" || Array.isArray(e)) - throw te.VALUE; - if (X.isCellRef(e)) - return e.ref.col; - if (X.isRangeRef(e)) - return e.ref.from.col; - throw Error("ReferenceFunctions.COLUMN should not reach here."); - } - }, - // Special - COLUMNS: (t, e) => { - if (e == null) - throw Error("COLUMNS requires one argument"); - if (typeof e != "object" || Array.isArray(e)) - throw te.VALUE; - if (X.isCellRef(e)) - return 1; - if (X.isRangeRef(e)) - return Math.abs(e.ref.from.col - e.ref.to.col) + 1; - throw Error("ReferenceFunctions.COLUMNS should not reach here."); - }, - HLOOKUP: (t, e, n, r) => { - t = X.accept(t); - try { - e = X.accept(e, Oe.ARRAY, void 0, !1); - } catch (a) { - throw a instanceof te ? te.NA : a; - } - if (n = X.accept(n, Oe.NUMBER), r = X.accept(r, Oe.BOOLEAN, !0), n < 1) - throw te.VALUE; - if (e[n - 1] === void 0) - throw te.REF; - const i = typeof t; - if (r) { - let a = i === typeof e[0][0] ? e[0][0] : null; - for (let c = 1; c < e[0].length; c++) { - const h = e[0][c]; - if (typeof h === i) { - if (a > t && h > t) - throw te.NA; - if (h === t) - return e[n - 1][c]; - if (a != null && h > t && a <= t) - return e[n - 1][c - 1]; - a = h; - } - } - if (a == null) - throw te.NA; - return a; - } else { - let a = -1; - if (gn.isWildCard(t) ? a = e[0].findIndex((c) => gn.toRegex(t, "i").test(c)) : a = e[0].findIndex((c) => c === t), a === -1) - throw te.NA; - return e[n - 1][a]; - } - }, - // Special - INDEX: (t, e, n, r, i) => { - n = t.utils.extractRefValue(n), n = { value: n.val, isArray: n.isArray }, n = X.accept(n, Oe.NUMBER), n = Math.trunc(n), r == null ? r = 1 : (r = t.utils.extractRefValue(r), r = { value: r.val, isArray: r.isArray }, r = X.accept(r, Oe.NUMBER, 1), r = Math.trunc(r)), i == null ? i = 1 : (i = t.utils.extractRefValue(i), i = { value: i.val, isArray: i.isArray }, i = X.accept(i, Oe.NUMBER, 1), i = Math.trunc(i)); - let a = e; - if (e instanceof vi) - a = e.refs[i - 1]; - else if (i > 1) - throw te.REF; - if (n === 0 && r === 0) - return a; - if (n === 0) { - if (X.isRangeRef(a)) { - if (a.ref.to.col - a.ref.from.col < r - 1) - throw te.REF; - return a.ref.from.col += r - 1, a.ref.to.col = a.ref.from.col, a; - } else if (Array.isArray(a)) { - const c = []; - return a.forEach((h) => c.push([h[r - 1]])), c; - } - } - if (r === 0) { - if (X.isRangeRef(a)) { - if (a.ref.to.row - a.ref.from.row < n - 1) - throw te.REF; - return a.ref.from.row += n - 1, a.ref.to.row = a.ref.from.row, a; - } else if (Array.isArray(a)) - return a[r - 1]; - } - if (n !== 0 && r !== 0) { - if (X.isRangeRef(a)) { - if (a = a.ref, a.to.row - a.from.row < n - 1 || a.to.col - a.from.col < r - 1) - throw te.REF; - return { ref: { row: a.from.row + n - 1, col: a.from.col + r - 1 } }; - } else if (X.isCellRef(a)) { - if (a = a.ref, n > 1 || r > 1) - throw te.REF; - return { ref: { row: a.row + n - 1, col: a.col + r - 1 } }; - } else if (Array.isArray(a)) { - if (a.length < n || a[0].length < r) - throw te.REF; - return a[n - 1][r - 1]; - } - } - }, - MATCH: () => { - }, - // Special - ROW: (t, e) => { - if (e == null) { - if (t.position.row != null) - return t.position.row; - throw Error("FormulaParser.parse is called without position parameter."); - } else { - if (typeof e != "object" || Array.isArray(e)) - throw te.VALUE; - if (X.isCellRef(e)) - return e.ref.row; - if (X.isRangeRef(e)) - return e.ref.from.row; - throw Error("ReferenceFunctions.ROW should not reach here."); - } - }, - // Special - ROWS: (t, e) => { - if (e == null) - throw Error("ROWS requires one argument"); - if (typeof e != "object" || Array.isArray(e)) - throw te.VALUE; - if (X.isCellRef(e)) - return 1; - if (X.isRangeRef(e)) - return Math.abs(e.ref.from.row - e.ref.to.row) + 1; - throw Error("ReferenceFunctions.ROWS should not reach here."); - }, - TRANSPOSE: (t) => { - t = X.accept(t, Oe.ARRAY, void 0, !1); - const e = []; - for (let n = 0; n < t[0].length; n++) { - e[n] = []; - for (let r = 0; r < t.length; r++) - e[n][r] = t[r][n]; - } - return e; - }, - VLOOKUP: (t, e, n, r) => { - t = X.accept(t); - try { - e = X.accept(e, Oe.ARRAY, void 0, !1); - } catch (a) { - throw a instanceof te ? te.NA : a; - } - if (n = X.accept(n, Oe.NUMBER), r = X.accept(r, Oe.BOOLEAN, !0), n < 1) - throw te.VALUE; - if (e[0][n - 1] === void 0) - throw te.REF; - const i = typeof t; - if (r) { - let a = i === typeof e[0][0] ? e[0][0] : null; - for (let c = 1; c < e.length; c++) { - const h = e[c], p = e[c][0]; - if (typeof p === i) { - if (a > t && p > t) - throw te.NA; - if (p === t) - return h[n - 1]; - if (a != null && p > t && a <= t) - return e[c - 1][n - 1]; - a = p; - } - } - if (a == null) - throw te.NA; - return a; - } else { - let a = -1; - if (gn.isWildCard(t) ? a = e.findIndex((c) => gn.toRegex(t, "i").test(c[0])) : a = e.findIndex((c) => c[0] === t), a === -1) - throw te.NA; - return e[a][n - 1]; - } - } -}; -var Xa = za; -const lt = he(), { FormulaHelpers: Qa, Types: Za } = ge(), me = Qa, Ja = { - "#NULL!": 1, - "#DIV/0!": 2, - "#VALUE!": 3, - "#REF!": 4, - "#NAME?": 5, - "#NUM!": 6, - "#N/A": 7 -}, ja = { - CELL: (t, e) => { - }, - "ERROR.TYPE": (t) => { - if (t = me.accept(t), t instanceof lt) - return Ja[t.toString()]; - throw lt.NA; - }, - INFO: () => { - }, - ISBLANK: (t) => t.ref ? t.value == null || t.value === "" : !1, - ISERR: (t) => (t = me.accept(t), t instanceof lt && t.toString() !== "#N/A"), - ISERROR: (t) => (t = me.accept(t), t instanceof lt), - ISEVEN: (t) => (t = me.accept(t, Za.NUMBER), t = Math.trunc(t), t % 2 === 0), - ISLOGICAL: (t) => (t = me.accept(t), typeof t == "boolean"), - ISNA: (t) => (t = me.accept(t), t instanceof lt && t.toString() === "#N/A"), - ISNONTEXT: (t) => (t = me.accept(t), typeof t != "string"), - ISNUMBER: (t) => (t = me.accept(t), typeof t == "number"), - ISREF: (t) => !t.ref || me.isCellRef(t) && (t.ref.row > 1048576 || t.ref.col > 16384) || me.isRangeRef(t) && (t.ref.from.row > 1048576 || t.ref.from.col > 16384 || t.ref.to.row > 1048576 || t.ref.to.col > 16384) ? !1 : (t = me.accept(t), !(t instanceof lt && t.toString() === "#REF!")), - ISTEXT: (t) => (t = me.accept(t), typeof t == "string"), - N: (t) => { - t = me.accept(t); - const e = typeof t; - if (e === "number") - return t; - if (e === "boolean") - return Number(t); - if (t instanceof lt) - throw t; - return 0; - }, - NA: () => { - throw lt.NA; - }, - TYPE: (t) => { - if (t.ref) { - if (me.isRangeRef(t)) - return 16; - if (me.isCellRef(t) && (t = me.accept(t), typeof t == "string" && t.length === 0)) - return 1; - } - t = me.accept(t); - const e = typeof t; - if (e === "number") - return 1; - if (e === "string") - return 2; - if (e === "boolean") - return 4; - if (t instanceof lt) - return 16; - if (Array.isArray(t)) - return 64; - } -}; -var ec = ja; -const k = he(), { FormulaHelpers: tc, Types: I } = ge(), O = tc, B = Go, En = bo, nc = 2.5066282746310002, $o = { - "BETA.DIST": (t, e, n, r, i, a) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), i = O.accept(i, I.NUMBER, 0), a = O.accept(a, I.NUMBER, 1), e <= 0 || n <= 0 || t < i || t > a || i === a) - throw k.NUM; - return t = (t - i) / (a - i), r ? B.beta.cdf(t, e, n) : B.beta.pdf(t, e, n) / (a - i); - }, - "BETA.INV": (t, e, n, r, i) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.NUMBER, 0), i = O.accept(i, I.NUMBER, 1), e <= 0 || n <= 0 || t <= 0 || t > 1) - throw k.NUM; - return B.beta.inv(t, e, n) * (i - r) + r; - }, - "BINOM.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), e < 0 || n < 0 || n > 1 || t < 0 || t > e) - throw k.NUM; - return r ? B.binomial.cdf(t, e, n) : B.binomial.pdf(t, e, n); - }, - "BINOM.DIST.RANGE": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.NUMBER, n), t < 0 || e < 0 || e > 1 || n < 0 || n > t || r < n || r > t) - throw k.NUM; - let i = 0; - for (let a = n; a <= r; a++) - i += En.COMBIN(t, a) * Math.pow(e, a) * Math.pow(1 - e, t - a); - return i; - }, - "BINOM.INV": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t < 0 || e < 0 || e > 1 || n < 0 || n > 1) - throw k.NUM; - let r = 0; - for (; r <= t; ) { - if (B.binomial.cdf(r, t, e) >= n) - return r; - r++; - } - }, - "CHISQ.DIST": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), e = Math.trunc(e), t < 0 || e < 1 || e > 10 ** 10) - throw k.NUM; - return n ? B.chisquare.cdf(t, e) : B.chisquare.pdf(t, e); - }, - "CHISQ.DIST.RT": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), e = Math.trunc(e), t < 0 || e < 1 || e > 10 ** 10) - throw k.NUM; - return 1 - B.chisquare.cdf(t, e); - }, - "CHISQ.INV": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), e = Math.trunc(e), t < 0 || t > 1 || e < 1 || e > 10 ** 10) - throw k.NUM; - return B.chisquare.inv(t, e); - }, - "CHISQ.INV.RT": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), e = Math.trunc(e), t < 0 || t > 1 || e < 1 || e > 10 ** 10) - throw k.NUM; - return B.chisquare.inv(1 - t, e); - }, - "CHISQ.TEST": (t, e) => { - const n = O.accept(t, I.ARRAY, void 0, !1, !1), r = O.accept(e, I.ARRAY, void 0, !1, !1); - if (n.length !== r.length || n[0].length !== r[0].length || n.length === 1 && n[0].length === 1) - throw k.NA; - const i = n.length, a = n[0].length; - let c = (i - 1) * (a - 1); - i === 1 ? c = a - 1 : c = i - 1; - let h = 0; - for (let l = 0; l < i; l++) - for (let f = 0; f < a; f++) - if (!(typeof n[l][f] != "number" || typeof r[l][f] != "number")) { - if (r[l][f] === 0) - throw k.DIV0; - h += Math.pow(n[l][f] - r[l][f], 2) / r[l][f]; - } - let p = Math.exp(-0.5 * h); - c % 2 === 1 && (p = p * Math.sqrt(2 * h / Math.PI)); - let u = c; - for (; u >= 2; ) - p = p * h / u, u = u - 2; - let o = p, s = c; - for (; o > 1e-15 * p; ) - s = s + 2, o = o * h / s, p = p + o; - return 1 - p; - }, - "CONFIDENCE.NORM": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), n = Math.trunc(n), t <= 0 || t >= 1 || e <= 0 || n < 1) - throw k.NUM; - return B.normalci(1, t, e, n)[1] - 1; - }, - "CONFIDENCE.T": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), n = Math.trunc(n), t <= 0 || t >= 1 || e <= 0 || n < 1) - throw k.NUM; - if (n === 1) - throw k.DIV0; - return B.tci(1, t, e, n)[1] - 1; - }, - CORREL: (t, e) => { - if (t = O.accept(t, I.ARRAY, void 0, !0, !0), e = O.accept(e, I.ARRAY, void 0, !0, !0), t.length !== e.length) - throw k.NA; - const n = [], r = []; - for (let i = 0; i < t.length; i++) - typeof t[i] != "number" || typeof e[i] != "number" || (n.push(t[i]), r.push(e[i])); - if (n.length <= 1) - throw k.DIV0; - return B.corrcoeff(n, r); - }, - "COVARIANCE.P": (t, e) => { - if (t = O.accept(t, I.ARRAY, void 0, !0, !0), e = O.accept(e, I.ARRAY, void 0, !0, !0), t.length !== e.length) - throw k.NA; - const n = [], r = []; - for (let h = 0; h < t.length; h++) - typeof t[h] != "number" || typeof e[h] != "number" || (n.push(t[h]), r.push(e[h])); - const i = B.mean(n), a = B.mean(r); - let c = 0; - for (let h = 0; h < n.length; h++) - c += (n[h] - i) * (r[h] - a); - return c / n.length; - }, - "COVARIANCE.S": (t, e) => { - if (t = O.accept(t, I.ARRAY, void 0, !0, !0), e = O.accept(e, I.ARRAY, void 0, !0, !0), t.length !== e.length) - throw k.NA; - const n = [], r = []; - for (let i = 0; i < t.length; i++) - typeof t[i] != "number" || typeof e[i] != "number" || (n.push(t[i]), r.push(e[i])); - if (n.length <= 1) - throw k.DIV0; - return B.covariance(n, r); - }, - DEVSQ: (...t) => { - let e = 0, n = []; - O.flattenParams(t, I.NUMBER, !0, (i, a) => { - typeof i == "number" && (e += i, n.push(i)); - }); - const r = e / n.length; - e = 0; - for (let i = 0; i < n.length; i++) - e += (n[i] - r) ** 2; - return e; - }, - "EXPON.DIST": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.BOOLEAN), t < 0 || e <= 0) - throw k.NUM; - return n ? B.exponential.cdf(t, e) : B.exponential.pdf(t, e); - }, - "F.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), t < 0 || e < 1 || n < 1) - throw k.NUM; - return e = Math.trunc(e), n = Math.trunc(n), r ? B.centralF.cdf(t, e, n) : B.centralF.pdf(t, e, n); - }, - "F.DIST.RT": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t < 0 || e < 1 || n < 1) - throw k.NUM; - return e = Math.trunc(e), n = Math.trunc(n), 1 - B.centralF.cdf(t, e, n); - }, - "F.INV": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t < 0 || t > 1 || e < 1 || n < 1) - throw k.NUM; - return e = Math.trunc(e), n = Math.trunc(n), B.centralF.inv(t, e, n); - }, - "F.INV.RT": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t < 0 || t > 1 || e < 1 || e >= Math.pow(10, 10) || n < 1 || n >= Math.pow(10, 10)) - throw k.NUM; - return e = Math.trunc(e), n = Math.trunc(n), B.centralF.inv(1 - t, e, n); - }, - /** - * https://en.wikipedia.org/wiki/F-test_of_equality_of_variances - */ - "F.TEST": (t, e) => { - t = O.accept(t, I.ARRAY, void 0, !0, !0), e = O.accept(e, I.ARRAY, void 0, !0, !0); - const n = [], r = []; - let i = 0, a = 0; - for (let p = 0; p < Math.max(t.length, e.length); p++) - typeof t[p] == "number" && (n.push(t[p]), i += t[p]), typeof e[p] == "number" && (r.push(e[p]), a += e[p]); - if (n.length <= 1 || r.length <= 1) - throw k.DIV0; - i /= n.length, a /= r.length; - let c = 0, h = 0; - for (let p = 0; p < n.length; p++) - c += (i - n[p]) ** 2; - c /= n.length - 1; - for (let p = 0; p < r.length; p++) - h += (a - r[p]) ** 2; - return h /= r.length - 1, B.centralF.cdf(c / h, n.length - 1, r.length - 1) * 2; - }, - FISHER: (t) => { - if (t = O.accept(t, I.NUMBER), t <= -1 || t >= 1) - throw k.NUM; - return Math.log((1 + t) / (1 - t)) / 2; - }, - FISHERINV: (t) => { - t = O.accept(t, I.NUMBER); - let e = Math.exp(2 * t); - return (e - 1) / (e + 1); - }, - // FIXME - FORECAST: (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.ARRAY, void 0, !0, !0), n = O.accept(n, I.ARRAY, void 0, !0, !0), n.length !== e.length) - throw k.NA; - const r = [], i = []; - let a = !0; - for (let l = 0; l < e.length; l++) - typeof e[l] != "number" || typeof n[l] != "number" || (r.push(e[l]), i.push(n[l]), n[l] !== n[0] && (a = !1)); - if (a) - throw k.DIV0; - const c = B.mean(r), h = B.mean(i); - let p = 0, u = 0; - for (let l = 0; l < r.length; l++) - p += (i[l] - h) * (r[l] - c), u += (i[l] - h) ** 2; - const o = p / u; - return c - o * h + o * t; - }, - "FORECAST.ETS": () => { - }, - "FORECAST.ETS.CONFINT": () => { - }, - "FORECAST.ETS.SEASONALITY": () => { - }, - "FORECAST.ETS.STAT": () => { - }, - "FORECAST.LINEAR": (...t) => $o.FORECAST(...t), - FREQUENCY: (t, e) => { - t = O.accept(t, I.ARRAY, void 0, !0, !0), e = O.accept(e, I.ARRAY, void 0, !0, !0); - const n = []; - for (let i = 0; i < e.length; i++) - typeof e[i] == "number" && n.push(e[i]); - n.sort(), n.push(1 / 0); - const r = []; - for (let i = 0; i < n.length; i++) { - r[i] = [], r[i][0] = 0; - for (let a = 0; a < t.length; a++) { - if (typeof t[a] != "number") - continue; - t[a] <= n[i] && (r[i][0]++, t[a] = null); - } - } - return r; - }, - GAMMA: (t) => { - if (t = O.accept(t, I.NUMBER), t === 0 || t < 0 && t === Math.trunc(t)) - throw k.NUM; - return B.gammafn(t); - }, - "GAMMA.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), t < 0 || e <= 0 || n <= 0) - throw k.NUM; - return r ? B.gamma.cdf(t, e, n, !0) : B.gamma.pdf(t, e, n, !1); - }, - "GAMMA.INV": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t < 0 || t > 1 || e <= 0 || n <= 0) - throw k.NUM; - return B.gamma.inv(t, e, n); - }, - GAMMALN: (t) => { - if (t = O.accept(t, I.NUMBER), t <= 0) - throw k.NUM; - return B.gammaln(t); - }, - "GAMMALN.PRECISE": (t) => { - if (t = O.accept(t, I.NUMBER), t <= 0) - throw k.NUM; - return B.gammaln(t); - }, - GAUSS: (t) => (t = O.accept(t, I.NUMBER), B.normal.cdf(t, 0, 1) - 0.5), - GEOMEAN: (...t) => { - const e = []; - return O.flattenParams(t, I.NUMBER, !0, (n, r) => { - typeof n == "number" && e.push(n); - }), B.geomean(e); - }, - GROWTH: (t, e, n, r) => { - t = O.accept(t, I.ARRAY, void 0, !0, !0); - for (let f = 0; f < t.length; f++) - if (typeof t[f] != "number") - throw k.VALUE; - e = O.accept(e, I.ARRAY, null, !0, !0); - const i = e == null; - if (e == null) { - e = []; - for (let f = 1; f <= t.length; f++) - e.push(f); - } else { - if (e.length !== t.length) - throw k.REF; - for (let f = 0; f < e.length; f++) - if (typeof e[f] != "number") - throw k.VALUE; - } - if (n = O.accept(n, I.ARRAY, null, !1, !0), n == null && i) { - n = []; - for (let f = 1; f <= t.length; f++) - n.push(f); - n = [n]; - } else - n == null && (n = Array.isArray(e[0]) ? e : [e]); - r = O.accept(r, I.BOOLEAN, !0); - const a = t.length; - let c = 0, h = 0, p = 0, u = 0; - for (let f = 0; f < a; f++) { - const v = e[f], d = Math.log(t[f]); - c += v, h += d, p += v * d, u += v * v; - } - c /= a, h /= a, p /= a, u /= a; - let o, s; - r ? (o = (p - c * h) / (u - c * c), s = h - o * c) : (o = p / u, s = 0); - const l = []; - for (let f = 0; f < n.length; f++) { - l[f] = []; - for (let v = 0; v < n[0].length; v++) { - if (typeof n[f][v] != "number") - throw k.VALUE; - l[f][v] = Math.exp(s + o * n[f][v]); - } - } - return l; - }, - HARMEAN: (...t) => { - let e = 0, n = 0; - return O.flattenParams(t, I.NUMBER, !0, (r, i) => { - typeof r == "number" && (n += 1 / r, e++); - }), e / n; - }, - "HYPGEOM.DIST": (t, e, n, r, i) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.NUMBER), i = O.accept(i, I.BOOLEAN), t = Math.trunc(t), e = Math.trunc(e), n = Math.trunc(n), r = Math.trunc(r), r <= 0 || t < 0 || e <= 0 || n <= 0 || e > r || n > r || e < t || n < t || t < e - r + n) - throw k.NUM; - function a(h, p, u, o) { - return En.COMBIN(u, h) * En.COMBIN(o - u, p - h) / En.COMBIN(o, p); - } - function c(h, p, u, o) { - let s = 0; - for (let l = 0; l <= h; l++) - s += a(l, p, u, o); - return s; - } - return i ? c(t, e, n, r) : a(t, e, n, r); - }, - INTERCEPT: (t, e) => { - if (t = O.accept(t, I.ARRAY, void 0, !0, !0), e = O.accept(e, I.ARRAY, void 0, !0, !0), e.length !== t.length) - throw k.NA; - const n = [], r = []; - for (let u = 0; u < t.length; u++) - typeof t[u] != "number" || typeof e[u] != "number" || (n.push(t[u]), r.push(e[u])); - if (n.length <= 1) - throw k.DIV0; - const i = B.mean(n), a = B.mean(r); - let c = 0, h = 0; - for (let u = 0; u < n.length; u++) - c += (r[u] - a) * (n[u] - i), h += (r[u] - a) ** 2; - const p = c / h; - return i - p * a; - }, - KURT: (...t) => { - let e = 0, n = []; - O.flattenParams(t, I.NUMBER, !0, (a, c) => { - typeof a == "number" && (e += a, n.push(a)); - }); - const r = n.length; - e /= r; - let i = 0; - for (let a = 0; a < r; a++) - i += Math.pow(n[a] - e, 4); - return i = i / Math.pow(B.stdev(n, !0), 4), r * (r + 1) / ((r - 1) * (r - 2) * (r - 3)) * i - 3 * (r - 1) * (r - 1) / ((r - 2) * (r - 3)); - }, - LINEST: () => { - }, - LOGEST: () => { - }, - "LOGNORM.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), t <= 0 || n <= 0) - throw k.NUM; - return r ? B.lognormal.cdf(t, e, n) : B.lognormal.pdf(t, e, n); - }, - "LOGNORM.INV": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t <= 0 || t >= 1 || n <= 0) - throw k.NUM; - return B.lognormal.inv(t, e, n); - }, - "MODE.MULT": () => { - }, - "MODE.SNGL": () => { - }, - "NEGBINOM.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), t = Math.trunc(t), e = Math.trunc(e), n < 0 || n > 1 || t < 0 || e < 1) - throw k.NUM; - return r ? B.negbin.cdf(t, e, n) : B.negbin.pdf(t, e, n); - }, - "NORM.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), n <= 0) - throw k.NUM; - return r ? B.normal.cdf(t, e, n) : B.normal.pdf(t, e, n); - }, - "NORM.INV": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), t <= 0 || t >= 1 || n <= 0) - throw k.NUM; - return B.normal.inv(t, e, n); - }, - "NORM.S.DIST": (t, e) => (t = O.accept(t, I.NUMBER), e = O.accept(e, I.BOOLEAN), e ? B.normal.cdf(t, 0, 1) : B.normal.pdf(t, 0, 1)), - "NORM.S.INV": (t) => { - if (t = O.accept(t, I.NUMBER), t <= 0 || t >= 1) - throw k.NUM; - return B.normal.inv(t, 0, 1); - }, - PEARSON: () => { - }, - "PERCENTILE.EXC": () => { - }, - "PERCENTILE.INC": () => { - }, - "PERCENTRANK.EXC": () => { - }, - "PERCENTRANK.INC": () => { - }, - PERMUTATIONA: () => { - }, - PHI: (t) => (t = O.accept(t, I.NUMBER), Math.exp(-0.5 * t * t) / nc), - "POISSON.DIST": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.BOOLEAN), t < 0 || e < 0) - throw k.NUM; - return t = Math.trunc(t), n ? B.poisson.cdf(t, e) : B.poisson.pdf(t, e); - }, - PROB: () => { - }, - "QUARTILE.EXC": () => { - }, - "QUARTILE.INC": () => { - }, - "RANK.AVG": () => { - }, - "RANK.EQ": () => { - }, - RSQ: () => { - }, - SKEW: () => { - }, - "SKEW.P": () => { - }, - SLOPE: () => { - }, - STANDARDIZE: (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), n <= 0) - throw k.NUM; - return (t - e) / n; - }, - "STDEV.P": () => { - }, - "STDEV.S": () => { - }, - STDEVA: () => { - }, - STDEVPA: () => { - }, - STEYX: () => { - }, - "T.DIST": (t, e, n) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.BOOLEAN), e < 1) - throw k.NUM; - return n ? B.studentt.cdf(t, e) : B.studentt.pdf(t, e); - }, - "T.DIST.2T": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), e < 1 || t < 0) - throw k.NUM; - return (1 - B.studentt.cdf(t, e)) * 2; - }, - "T.DIST.RT": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), e < 1) - throw k.NUM; - return 1 - B.studentt.cdf(t, e); - }, - "T.INV": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), t <= 0 || t > 1 || e < 1) - throw k.NUM; - return e = e % 1 === 0 ? e : Math.trunc(e), B.studentt.inv(t, e); - }, - "T.INV.2T": (t, e) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), t <= 0 || t > 1 || e < 1) - throw k.NUM; - return e = e % 1 === 0 ? e : Math.trunc(e), Math.abs(B.studentt.inv(t / 2, e)); - }, - "T.TEST": () => { - }, - TREND: () => { - }, - TRIMMEAN: () => { - }, - "VAR.P": () => { - }, - "VAR.S": () => { - }, - VARA: () => { - }, - VARPA: () => { - }, - "WEIBULL.DIST": (t, e, n, r) => { - if (t = O.accept(t, I.NUMBER), e = O.accept(e, I.NUMBER), n = O.accept(n, I.NUMBER), r = O.accept(r, I.BOOLEAN), t < 0 || e <= 0 || n <= 0) - throw k.NUM; - return r ? 1 - Math.exp(-Math.pow(t / n, e)) : Math.pow(t, e - 1) * Math.exp(-Math.pow(t / n, e)) * e / Math.pow(n, e); - }, - "Z.TEST": () => { - } -}; -var rc = { - DistributionFunctions: $o -}; -const ic = he(), { FormulaHelpers: oc, Types: mn, Criteria: gi, Address: Dh } = ge(), { Infix: Ei } = Dr, ut = oc, { DistributionFunctions: sc } = rc, ac = { - AVEDEV: (...t) => { - let e = 0; - const n = []; - ut.flattenParams(t, mn.NUMBER, !0, (i, a) => { - typeof i == "number" && (e += i, n.push(i)); - }); - const r = e / n.length; - e = 0; - for (let i = 0; i < n.length; i++) - e += Math.abs(n[i] - r); - return e / n.length; - }, - AVERAGE: (...t) => { - let e = 0, n = 0; - return ut.flattenParams(t, mn.NUMBER, !0, (r, i) => { - typeof r == "number" && (e += r, n++); - }), e / n; - }, - AVERAGEA: (...t) => { - let e = 0, n = 0; - return ut.flattenParams(t, mn.NUMBER, !0, (r, i) => { - const a = typeof r; - a === "number" ? (e += r, n++) : a === "string" && n++; - }), e / n; - }, - // special - AVERAGEIF: (t, e, n, r) => { - const i = ut.retrieveRanges(t, e, r); - e = i[0], r = i[1], n = ut.retrieveArg(t, n); - const a = n.isArray; - n = gi.parse(ut.accept(n)); - let c = 0, h = 0; - if (e.forEach((p, u) => { - p.forEach((o, s) => { - const l = r[u][s]; - typeof l == "number" && (n.op === "wc" ? n.match === n.value.test(o) && (c += l, h++) : Ei.compareOp(o, n.op, n.value, Array.isArray(o), a) && (c += l, h++)); - }); - }), h === 0) - throw ic.DIV0; - return c / h; - }, - AVERAGEIFS: () => { - }, - COUNT: (...t) => { - let e = 0; - return ut.flattenParams( - t, - null, - !0, - (n, r) => { - (r.isLiteral && !isNaN(n) || typeof n == "number") && e++; - } - ), e; - }, - COUNTIF: (t, e) => { - t = ut.accept(t, mn.ARRAY, void 0, !1, !0); - const n = e.isArray; - e = ut.accept(e); - let r = 0; - return e = gi.parse(e), t.forEach((i) => { - i.forEach((a) => { - e.op === "wc" ? e.match === e.value.test(a) && r++ : Ei.compareOp(a, e.op, e.value, Array.isArray(a), n) && r++; - }); - }), r; - }, - LARGE: () => { - }, - MAX: () => { - }, - MAXA: () => { - }, - MAXIFS: () => { - }, - MEDIAN: () => { - }, - MIN: () => { - }, - MINA: () => { - }, - MINIFS: () => { - }, - PERMUT: () => { - }, - PERMUTATIONA: () => { - }, - SMALL: () => { - } -}; -var cc = Object.assign(ac, sc); -const De = he(), { FormulaHelpers: lc, Types: pe } = ge(), ae = lc, Rn = 1e3 * 60 * 60 * 24, Or = new Date(Date.UTC(1900, 0, 1)), uc = [ - void 0, - 0, - 1, - void 0, - void 0, - void 0, - void 0, - void 0, - void 0, - void 0, - void 0, - void 0, - 1, - 2, - 3, - 4, - 5, - 6, - 0 -], fc = [ - void 0, - [1, 2, 3, 4, 5, 6, 7], - [7, 1, 2, 3, 4, 5, 6], - [6, 0, 1, 2, 3, 4, 5], - void 0, - void 0, - void 0, - void 0, - void 0, - void 0, - void 0, - [7, 1, 2, 3, 4, 5, 6], - [6, 7, 1, 2, 3, 4, 5], - [5, 6, 7, 1, 2, 3, 4], - [4, 5, 6, 7, 1, 2, 3], - [3, 4, 5, 6, 7, 1, 2], - [2, 3, 4, 5, 6, 7, 1], - [1, 2, 3, 4, 5, 6, 7] -], mi = [ - void 0, - [6, 0], - [0, 1], - [1, 2], - [2, 3], - [3, 4], - [4, 5], - [5, 6], - void 0, - void 0, - void 0, - [0], - [1], - [2], - [3], - [4], - [5], - [6] -], hc = /^\s*(\d\d?)\s*(:\s*\d\d?)?\s*(:\s*\d\d?)?\s*(pm|am)?\s*$/i, pc = /^\s*((\d\d?)\s*([-\/])\s*(\d\d?))([\d:.apm\s]*)$/i, dc = /^\s*((\d\d?)\s*([-/])\s*(jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*))([\d:.apm\s]*)$/i, vc = /^\s*((jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*)\s*([-/])\s*(\d\d?))([\d:.apm\s]*)$/i; -function gc(t) { - const e = t.match(pc), n = t.match(dc), r = t.match(vc); - return e ? t = e[1] + e[3] + (/* @__PURE__ */ new Date()).getFullYear() + e[5] : n ? t = n[1] + n[3] + (/* @__PURE__ */ new Date()).getFullYear() + n[5] : r && (t = r[1] + r[3] + (/* @__PURE__ */ new Date()).getFullYear() + r[5]), new Date(Date.parse(`${t} UTC`)); -} -function Ec(t) { - const e = t.match(hc); - if (!e) - return; - const n = e[2] ? e[2] : ":00", r = e[3] ? e[3] : ":00", i = e[4] ? " " + e[4] : "", a = new Date(Date.parse(`1/1/1900 ${e[1] + n + r + i} UTC`)); - let c = /* @__PURE__ */ new Date(); - return c = new Date(Date.UTC( - c.getFullYear(), - c.getMonth(), - c.getDate(), - c.getHours(), - c.getMinutes(), - c.getSeconds(), - c.getMilliseconds() - )), new Date(Date.UTC( - c.getUTCFullYear(), - c.getUTCMonth(), - c.getUTCDate(), - a.getUTCHours(), - a.getUTCMinutes(), - a.getUTCSeconds(), - a.getUTCMilliseconds() - )); -} -function Ot(t) { - const e = t > -22038912e5 ? 2 : 1; - return Math.floor((t - Or) / 864e5) + e; -} -function mc(t) { - if (t < 0) - throw De.VALUE; - return t <= 60 ? new Date(Or.getTime() + (t - 1) * 864e5) : new Date(Or.getTime() + (t - 2) * 864e5); -} -function Ho(t) { - if (t instanceof Date) - return { date: t }; - t = ae.accept(t); - let e = !0, n; - return isNaN(t) ? (n = Ec(t), n ? e = !1 : n = gc(t)) : (t = Number(t), n = mc(t)), { date: n, isDateGiven: e }; -} -function Z(t) { - return Ho(t).date; -} -function vr(t, e) { - return t.getUTCFullYear() === e.getUTCFullYear() && t.getUTCMonth() === e.getUTCMonth() && t.getUTCDate() === e.getUTCDate(); -} -function Rc(t) { - return t === 1900 ? !0 : new Date(t, 1, 29).getMonth() === 1; -} -const Mt = { - DATE: (t, e, n) => { - if (t = ae.accept(t, pe.NUMBER), e = ae.accept(e, pe.NUMBER), n = ae.accept(n, pe.NUMBER), t < 0 || t >= 1e4) - throw De.NUM; - return t < 1900 && (t += 1900), Ot(Date.UTC(t, e - 1, n)); - }, - DATEDIF: (t, e, n) => { - if (t = Z(t), e = Z(e), n = ae.accept(n, pe.STRING).toLowerCase(), t > e) - throw De.NUM; - const r = e.getUTCFullYear() - t.getUTCFullYear(), i = e.getUTCMonth() - t.getUTCMonth(), a = e.getUTCDate() - t.getUTCDate(); - let c; - switch (n) { - case "y": - return c = i < 0 || i === 0 && a < 0 ? -1 : 0, c + r; - case "m": - return c = a < 0 ? -1 : 0, r * 12 + i + c; - case "d": - return Math.floor(e - t) / Rn; - case "md": - return t.setUTCFullYear(e.getUTCFullYear()), a < 0 ? t.setUTCMonth(e.getUTCMonth() - 1) : t.setUTCMonth(e.getUTCMonth()), Math.floor(e - t) / Rn; - case "ym": - return c = a < 0 ? -1 : 0, (c + r * 12 + i) % 12; - case "yd": - return i < 0 || i === 0 && a < 0 ? t.setUTCFullYear(e.getUTCFullYear() - 1) : t.setUTCFullYear(e.getUTCFullYear()), Math.floor(e - t) / Rn; - } - }, - /** - * Limitation: Year must be four digit, only support ISO 8016 date format. - * Does not support date without year, i.e. "5-JUL". - * @param {string} dateText - */ - DATEVALUE: (t) => { - t = ae.accept(t, pe.STRING); - const { date: e, isDateGiven: n } = Ho(t); - if (!n) - return 0; - const r = Ot(e); - if (r < 0 || r > 2958465) - throw De.VALUE; - return r; - }, - DAY: (t) => Z(t).getUTCDate(), - DAYS: (t, e) => { - t = Z(t), e = Z(e); - let n = 0; - return e < -22038912e5 && -22038912e5 < t && (n = 1), Math.floor(t - e) / Rn + n; - }, - DAYS360: (t, e, n) => { - t = Z(t), e = Z(e), n = ae.accept(n, pe.BOOLEAN, !1), t.getUTCDate() === 31 && t.setUTCDate(30), !n && t.getUTCDate() < 30 && e.getUTCDate() > 30 ? e.setUTCMonth(e.getUTCMonth() + 1, 1) : e.getUTCDate() === 31 && e.setUTCDate(30); - const r = e.getUTCFullYear() - t.getUTCFullYear(), i = e.getUTCMonth() - t.getUTCMonth(), a = e.getUTCDate() - t.getUTCDate(); - return i * 30 + a + r * 12 * 30; - }, - EDATE: (t, e) => (t = Z(t), e = ae.accept(e, pe.NUMBER), t.setUTCMonth(t.getUTCMonth() + e), Ot(t)), - EOMONTH: (t, e) => (t = Z(t), e = ae.accept(e, pe.NUMBER), t.setUTCMonth(t.getUTCMonth() + e + 1, 0), Ot(t)), - HOUR: (t) => Z(t).getUTCHours(), - ISOWEEKNUM: (t) => { - const e = Z(t), n = new Date(Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())), r = n.getUTCDay(); - n.setUTCDate(n.getUTCDate() + 4 - r); - const i = new Date(Date.UTC(n.getUTCFullYear(), 0, 1)); - return Math.ceil(((n - i) / 864e5 + 1) / 7); - }, - MINUTE: (t) => Z(t).getUTCMinutes(), - MONTH: (t) => Z(t).getUTCMonth() + 1, - NETWORKDAYS: (t, e, n) => { - t = Z(t), e = Z(e); - let r = 1; - if (t > e) { - r = -1; - const c = t; - t = e, e = c; - } - const i = []; - n != null && ae.flattenParams([n], pe.NUMBER, !1, (c) => { - i.push(Z(c)); - }); - let a = 0; - for (; t <= e; ) { - if (t.getUTCDay() !== 0 && t.getUTCDay() !== 6) { - let c = !1; - for (let h = 0; h < i.length; h++) - if (vr(t, i[h])) { - c = !0; - break; - } - c || a++; - } - t.setUTCDate(t.getUTCDate() + 1); - } - return r * a; - }, - "NETWORKDAYS.INTL": (t, e, n, r) => { - t = Z(t), e = Z(e); - let i = 1; - if (t > e) { - i = -1; - const h = t; - t = e, e = h; - } - if (n = ae.accept(n, null, 1), n === "1111111") - return 0; - if (typeof n == "string" && Number(n).toString() !== n) { - if (n.length !== 7) - throw De.VALUE; - n = n.charAt(6) + n.slice(0, 6); - const h = []; - for (let p = 0; p < n.length; p++) - n.charAt(p) === "1" && h.push(p); - n = h; - } else { - if (typeof n != "number") - throw De.VALUE; - n = mi[n]; - } - const a = []; - r != null && ae.flattenParams([r], pe.NUMBER, !1, (h) => { - a.push(Z(h)); - }); - let c = 0; - for (; t <= e; ) { - let h = !1; - for (let p = 0; p < n.length; p++) - if (n[p] === t.getUTCDay()) { - h = !0; - break; - } - if (!h) { - let p = !1; - for (let u = 0; u < a.length; u++) - if (vr(t, a[u])) { - p = !0; - break; - } - p || c++; - } - t.setUTCDate(t.getUTCDate() + 1); - } - return i * c; - }, - NOW: () => { - const t = /* @__PURE__ */ new Date(); - return Ot(Date.UTC( - t.getFullYear(), - t.getMonth(), - t.getDate(), - t.getHours(), - t.getMinutes(), - t.getSeconds(), - t.getMilliseconds() - )) + (3600 * t.getHours() + 60 * t.getMinutes() + t.getSeconds()) / 86400; - }, - SECOND: (t) => Z(t).getUTCSeconds(), - TIME: (t, e, n) => { - if (t = ae.accept(t, pe.NUMBER), e = ae.accept(e, pe.NUMBER), n = ae.accept(n, pe.NUMBER), t < 0 || t > 32767 || e < 0 || e > 32767 || n < 0 || n > 32767) - throw De.NUM; - return (3600 * t + 60 * e + n) / 86400; - }, - TIMEVALUE: (t) => (t = Z(t), (3600 * t.getUTCHours() + 60 * t.getUTCMinutes() + t.getUTCSeconds()) / 86400), - TODAY: () => { - const t = /* @__PURE__ */ new Date(); - return Ot(Date.UTC(t.getFullYear(), t.getMonth(), t.getDate())); - }, - WEEKDAY: (t, e) => { - const n = Z(t); - e = ae.accept(e, pe.NUMBER, 1); - const r = n.getUTCDay(), i = fc[e]; - if (!i) - throw De.NUM; - return i[r]; - }, - WEEKNUM: (t, e) => { - const n = Z(t); - if (e = ae.accept(e, pe.NUMBER, 1), e === 21) - return Mt.ISOWEEKNUM(t); - const r = uc[e], i = new Date(Date.UTC(n.getUTCFullYear(), 0, 1)), a = i.getUTCDay() < r ? 1 : 0; - return Math.ceil(((n - i) / 864e5 + 1) / 7) + a; - }, - WORKDAY: (t, e, n) => Mt["WORKDAY.INTL"](t, e, 1, n), - "WORKDAY.INTL": (t, e, n, r) => { - if (t = Z(t), e = ae.accept(e, pe.NUMBER), n = ae.accept(n, null, 1), n === "1111111") - throw De.VALUE; - if (typeof n == "string" && Number(n).toString() !== n) { - if (n.length !== 7) - throw De.VALUE; - n = n.charAt(6) + n.slice(0, 6); - const c = []; - for (let h = 0; h < n.length; h++) - n.charAt(h) === "1" && c.push(h); - n = c; - } else { - if (typeof n != "number") - throw De.VALUE; - if (n = mi[n], n == null) - throw De.NUM; - } - const i = []; - r != null && ae.flattenParams([r], pe.NUMBER, !1, (c) => { - i.push(Z(c)); - }), t.setUTCDate(t.getUTCDate() + 1); - let a = 0; - for (; a < e; ) { - let c = !1; - for (let h = 0; h < n.length; h++) - if (n[h] === t.getUTCDay()) { - c = !0; - break; - } - if (!c) { - let h = !1; - for (let p = 0; p < i.length; p++) - if (vr(t, i[p])) { - h = !0; - break; - } - h || a++; - } - t.setUTCDate(t.getUTCDate() + 1); - } - return Ot(t) - 1; - }, - YEAR: (t) => Z(t).getUTCFullYear(), - // Warning: may have bugs - YEARFRAC: (t, e, n) => { - if (t = Z(t), e = Z(e), t > e) { - const u = t; - t = e, e = u; - } - if (n = ae.accept(n, pe.NUMBER, 0), n = Math.trunc(n), n < 0 || n > 4) - throw De.VALUE; - let r = t.getUTCDate(); - const i = t.getUTCMonth() + 1, a = t.getUTCFullYear(); - let c = e.getUTCDate(); - const h = e.getUTCMonth() + 1, p = e.getUTCFullYear(); - switch (n) { - case 0: - return r === 31 && c === 31 ? (r = 30, c = 30) : r === 31 ? r = 30 : r === 30 && c === 31 && (c = 30), Math.abs(c + h * 30 + p * 360 - (r + i * 30 + a * 360)) / 360; - case 1: - if (p - a < 2) { - const u = Rc(a) && a !== 1900 ? 366 : 365; - return Mt.DAYS(e, t) / u; - } else { - const u = p - a + 1, s = (new Date(p + 1, 0, 1) - new Date(a, 0, 1)) / 1e3 / 60 / 60 / 24 / u; - return Mt.DAYS(e, t) / s; - } - case 2: - return Math.abs(Mt.DAYS(e, t) / 360); - case 3: - return Math.abs(Mt.DAYS(e, t) / 365); - case 4: - return Math.abs(c + h * 30 + p * 360 - (r + i * 30 + a * 360)) / 360; - } - } -}; -var Nc = Mt; -const Ac = he(), { FormulaHelpers: yc, Types: Tc } = ge(), wc = yc, Cc = { - ENCODEURL: (t) => encodeURIComponent(wc.accept(t, Tc.STRING)), - FILTERXML: () => { - }, - WEBSERVICE: (t, e) => { - throw Ac.ERROR("WEBSERVICE is not supported in sync mode."); - } -}; -var Ic = Cc, Mr = "7.1.2"; -function ee(t) { - return t && t.length === 0; -} -function Ze(t) { - return t == null ? [] : Object.keys(t); -} -function xe(t) { - for (var e = [], n = Object.keys(t), r = 0; r < n.length; r++) - e.push(t[n[r]]); - return e; -} -function Oc(t, e) { - for (var n = [], r = Ze(t), i = 0; i < r.length; i++) { - var a = r[i]; - n.push(e.call(null, t[a], a)); - } - return n; -} -function x(t, e) { - for (var n = [], r = 0; r < t.length; r++) - n.push(e.call(null, t[r], r)); - return n; -} -function Ge(t) { - for (var e = [], n = 0; n < t.length; n++) { - var r = t[n]; - Array.isArray(r) ? e = e.concat(Ge(r)) : e.push(r); - } - return e; -} -function Je(t) { - return ee(t) ? void 0 : t[0]; -} -function Wo(t) { - var e = t && t.length; - return e ? t[e - 1] : void 0; -} -function V(t, e) { - if (Array.isArray(t)) - for (var n = 0; n < t.length; n++) - e.call(null, t[n], n); - else if (Gr(t)) - for (var r = Ze(t), n = 0; n < r.length; n++) { - var i = r[n], a = t[i]; - e.call(null, a, i); - } - else - throw Error("non exhaustive match"); -} -function st(t) { - return typeof t == "string"; -} -function pt(t) { - return t === void 0; -} -function Ct(t) { - return t instanceof Function; -} -function Re(t, e) { - return e === void 0 && (e = 1), t.slice(e, t.length); -} -function nn(t, e) { - return e === void 0 && (e = 1), t.slice(0, t.length - e); -} -function je(t, e) { - var n = []; - if (Array.isArray(t)) - for (var r = 0; r < t.length; r++) { - var i = t[r]; - e.call(null, i) && n.push(i); - } - return n; -} -function Ht(t, e) { - return je(t, function(n) { - return !e(n); - }); -} -function et(t, e) { - for (var n = Object.keys(t), r = {}, i = 0; i < n.length; i++) { - var a = n[i], c = t[a]; - e(c) && (r[a] = c); - } - return r; -} -function $(t, e) { - return Gr(t) ? t.hasOwnProperty(e) : !1; -} -function fe(t, e) { - return $t(t, function(n) { - return n === e; - }) !== void 0; -} -function Se(t) { - for (var e = [], n = 0; n < t.length; n++) - e.push(t[n]); - return e; -} -function on(t) { - var e = {}; - for (var n in t) - Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); - return e; -} -function $t(t, e) { - for (var n = 0; n < t.length; n++) { - var r = t[n]; - if (e.call(null, r)) - return r; - } -} -function Mc(t, e) { - for (var n = [], r = 0; r < t.length; r++) { - var i = t[r]; - e.call(null, i) && n.push(i); - } - return n; -} -function Ne(t, e, n) { - for (var r = Array.isArray(t), i = r ? t : xe(t), a = r ? [] : Ze(t), c = n, h = 0; h < i.length; h++) - c = e.call(null, c, i[h], r ? h : a[h]); - return c; -} -function sn(t) { - return Ht(t, function(e) { - return e == null; - }); -} -function Vr(t, e) { - e === void 0 && (e = function(r) { - return r; - }); - var n = []; - return Ne(t, function(r, i) { - var a = e(i); - return fe(n, a) ? r : (n.push(a), r.concat(i)); - }, []); -} -function ot(t) { - return Array.isArray(t); -} -function dt(t) { - return t instanceof RegExp; -} -function Gr(t) { - return t instanceof Object; -} -function We(t, e) { - for (var n = 0; n < t.length; n++) - if (!e(t[n], n)) - return !1; - return !0; -} -function $n(t, e) { - return Ht(t, function(n) { - return fe(e, n); - }); -} -function qo(t, e) { - for (var n = 0; n < t.length; n++) - if (e(t[n])) - return !0; - return !1; -} -function Uc(t, e) { - for (var n = 0; n < t.length; n++) - if (t[n] === e) - return n; - return -1; -} -function tt(t) { - for (var e = [], n = 1; n < arguments.length; n++) - e[n - 1] = arguments[n]; - for (var r = 0; r < e.length; r++) - for (var i = e[r], a = Ze(i), c = 0; c < a.length; c++) { - var h = a[c]; - t[h] = i[h]; - } - return t; -} -function Lc(t) { - for (var e = [], n = 1; n < arguments.length; n++) - e[n - 1] = arguments[n]; - for (var r = 0; r < e.length; r++) - for (var i = e[r], a = Ze(i), c = 0; c < a.length; c++) { - var h = a[c]; - $(t, h) || (t[h] = i[h]); - } - return t; -} -function $r() { - for (var t = [], e = 0; e < arguments.length; e++) - t[e] = arguments[e]; - return Lc.apply(null, [{}].concat(t)); -} -function _c(t, e) { - var n = {}; - return V(t, function(r) { - var i = e(r), a = n[i]; - a ? a.push(r) : n[i] = [r]; - }), n; -} -function Ri(t, e) { - for (var n = on(t), r = Ze(e), i = 0; i < r.length; i++) { - var a = r[i], c = e[a]; - n[a] = c; - } - return n; -} -function de() { -} -function Ni(t) { - return t; -} -function Pc(t) { - for (var e = [], n = 0; n < t.length; n++) { - var r = t[n]; - e.push(r !== void 0 ? r : void 0); - } - return e; -} -function Ur(t) { - console && console.error && console.error("Error: " + t); -} -function Yo(t) { - console && console.warn && console.warn("Warning: " + t); -} -function Ai() { - return typeof Map == "function"; -} -function kc(t, e) { - e.forEach(function(n) { - var r = n.prototype; - Object.getOwnPropertyNames(r).forEach(function(i) { - if (i !== "constructor") { - var a = Object.getOwnPropertyDescriptor(r, i); - a && (a.get || a.set) ? Object.defineProperty(t.prototype, i, a) : t.prototype[i] = n.prototype[i]; - } - }); - }); -} -function Ko(t) { - function e() { - } - e.prototype = t; - var n = new e(); - function r() { - return typeof n.bar; - } - return r(), r(), t; -} -function kn(t) { - return t[t.length - 1]; -} -function zo(t) { - var e = (/* @__PURE__ */ new Date()).getTime(), n = t(), r = (/* @__PURE__ */ new Date()).getTime(), i = r - e; - return { time: i, value: n }; -} -var Xo = { exports: {} }; -(function(t) { - (function(e, n) { - t.exports ? t.exports = n() : e.regexpToAst = n(); - })( - typeof self < "u" ? ( - // istanbul ignore next - self - ) : Ro, - function() { - function e() { - } - e.prototype.saveState = function() { - return { - idx: this.idx, - input: this.input, - groupIdx: this.groupIdx - }; - }, e.prototype.restoreState = function(d) { - this.idx = d.idx, this.input = d.input, this.groupIdx = d.groupIdx; - }, e.prototype.pattern = function(d) { - this.idx = 0, this.input = d, this.groupIdx = 0, this.consumeChar("/"); - var g = this.disjunction(); - this.consumeChar("/"); - for (var E = { - type: "Flags", - loc: { begin: this.idx, end: d.length }, - global: !1, - ignoreCase: !1, - multiLine: !1, - unicode: !1, - sticky: !1 - }; this.isRegExpFlag(); ) - switch (this.popChar()) { - case "g": - h(E, "global"); - break; - case "i": - h(E, "ignoreCase"); - break; - case "m": - h(E, "multiLine"); - break; - case "u": - h(E, "unicode"); - break; - case "y": - h(E, "sticky"); - break; - } - if (this.idx !== this.input.length) - throw Error( - "Redundant input: " + this.input.substring(this.idx) - ); - return { - type: "Pattern", - flags: E, - value: g, - loc: this.loc(0) - }; - }, e.prototype.disjunction = function() { - var d = [], g = this.idx; - for (d.push(this.alternative()); this.peekChar() === "|"; ) - this.consumeChar("|"), d.push(this.alternative()); - return { type: "Disjunction", value: d, loc: this.loc(g) }; - }, e.prototype.alternative = function() { - for (var d = [], g = this.idx; this.isTerm(); ) - d.push(this.term()); - return { type: "Alternative", value: d, loc: this.loc(g) }; - }, e.prototype.term = function() { - return this.isAssertion() ? this.assertion() : this.atom(); - }, e.prototype.assertion = function() { - var d = this.idx; - switch (this.popChar()) { - case "^": - return { - type: "StartAnchor", - loc: this.loc(d) - }; - case "$": - return { type: "EndAnchor", loc: this.loc(d) }; - case "\\": - switch (this.popChar()) { - case "b": - return { - type: "WordBoundary", - loc: this.loc(d) - }; - case "B": - return { - type: "NonWordBoundary", - loc: this.loc(d) - }; - } - throw Error("Invalid Assertion Escape"); - case "(": - this.consumeChar("?"); - var g; - switch (this.popChar()) { - case "=": - g = "Lookahead"; - break; - case "!": - g = "NegativeLookahead"; - break; - } - p(g); - var E = this.disjunction(); - return this.consumeChar(")"), { - type: g, - value: E, - loc: this.loc(d) - }; - } - u(); - }, e.prototype.quantifier = function(d) { - var g, E = this.idx; - switch (this.popChar()) { - case "*": - g = { - atLeast: 0, - atMost: 1 / 0 - }; - break; - case "+": - g = { - atLeast: 1, - atMost: 1 / 0 - }; - break; - case "?": - g = { - atLeast: 0, - atMost: 1 - }; - break; - case "{": - var A = this.integerIncludingZero(); - switch (this.popChar()) { - case "}": - g = { - atLeast: A, - atMost: A - }; - break; - case ",": - var m; - this.isDigit() ? (m = this.integerIncludingZero(), g = { - atLeast: A, - atMost: m - }) : g = { - atLeast: A, - atMost: 1 / 0 - }, this.consumeChar("}"); - break; - } - if (d === !0 && g === void 0) - return; - p(g); - break; - } - if (!(d === !0 && g === void 0)) - return p(g), this.peekChar(0) === "?" ? (this.consumeChar("?"), g.greedy = !1) : g.greedy = !0, g.type = "Quantifier", g.loc = this.loc(E), g; - }, e.prototype.atom = function() { - var d, g = this.idx; - switch (this.peekChar()) { - case ".": - d = this.dotAll(); - break; - case "\\": - d = this.atomEscape(); - break; - case "[": - d = this.characterClass(); - break; - case "(": - d = this.group(); - break; - } - return d === void 0 && this.isPatternCharacter() && (d = this.patternCharacter()), p(d), d.loc = this.loc(g), this.isQuantifier() && (d.quantifier = this.quantifier()), d; - }, e.prototype.dotAll = function() { - return this.consumeChar("."), { - type: "Set", - complement: !0, - value: [a(` -`), a("\r"), a("\u2028"), a("\u2029")] - }; - }, e.prototype.atomEscape = function() { - switch (this.consumeChar("\\"), this.peekChar()) { - case "1": - case "2": - case "3": - case "4": - case "5": - case "6": - case "7": - case "8": - case "9": - return this.decimalEscapeAtom(); - case "d": - case "D": - case "s": - case "S": - case "w": - case "W": - return this.characterClassEscape(); - case "f": - case "n": - case "r": - case "t": - case "v": - return this.controlEscapeAtom(); - case "c": - return this.controlLetterEscapeAtom(); - case "0": - return this.nulCharacterAtom(); - case "x": - return this.hexEscapeSequenceAtom(); - case "u": - return this.regExpUnicodeEscapeSequenceAtom(); - default: - return this.identityEscapeAtom(); - } - }, e.prototype.decimalEscapeAtom = function() { - var d = this.positiveInteger(); - return { type: "GroupBackReference", value: d }; - }, e.prototype.characterClassEscape = function() { - var d, g = !1; - switch (this.popChar()) { - case "d": - d = s; - break; - case "D": - d = s, g = !0; - break; - case "s": - d = f; - break; - case "S": - d = f, g = !0; - break; - case "w": - d = l; - break; - case "W": - d = l, g = !0; - break; - } - return p(d), { type: "Set", value: d, complement: g }; - }, e.prototype.controlEscapeAtom = function() { - var d; - switch (this.popChar()) { - case "f": - d = a("\f"); - break; - case "n": - d = a(` -`); - break; - case "r": - d = a("\r"); - break; - case "t": - d = a(" "); - break; - case "v": - d = a("\v"); - break; - } - return p(d), { type: "Character", value: d }; - }, e.prototype.controlLetterEscapeAtom = function() { - this.consumeChar("c"); - var d = this.popChar(); - if (/[a-zA-Z]/.test(d) === !1) - throw Error("Invalid "); - var g = d.toUpperCase().charCodeAt(0) - 64; - return { type: "Character", value: g }; - }, e.prototype.nulCharacterAtom = function() { - return this.consumeChar("0"), { type: "Character", value: a("\0") }; - }, e.prototype.hexEscapeSequenceAtom = function() { - return this.consumeChar("x"), this.parseHexDigits(2); - }, e.prototype.regExpUnicodeEscapeSequenceAtom = function() { - return this.consumeChar("u"), this.parseHexDigits(4); - }, e.prototype.identityEscapeAtom = function() { - var d = this.popChar(); - return { type: "Character", value: a(d) }; - }, e.prototype.classPatternCharacterAtom = function() { - switch (this.peekChar()) { - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - case "\\": - case "]": - throw Error("TBD"); - default: - var d = this.popChar(); - return { type: "Character", value: a(d) }; - } - }, e.prototype.characterClass = function() { - var d = [], g = !1; - for (this.consumeChar("["), this.peekChar(0) === "^" && (this.consumeChar("^"), g = !0); this.isClassAtom(); ) { - var E = this.classAtom(), A = E.type === "Character"; - if (A && this.isRangeDash()) { - this.consumeChar("-"); - var m = this.classAtom(), N = m.type === "Character"; - if (N) { - if (m.value < E.value) - throw Error("Range out of order in character class"); - d.push({ from: E.value, to: m.value }); - } else - c(E.value, d), d.push(a("-")), c(m.value, d); - } else - c(E.value, d); - } - return this.consumeChar("]"), { type: "Set", complement: g, value: d }; - }, e.prototype.classAtom = function() { - switch (this.peekChar()) { - case "]": - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - throw Error("TBD"); - case "\\": - return this.classEscape(); - default: - return this.classPatternCharacterAtom(); - } - }, e.prototype.classEscape = function() { - switch (this.consumeChar("\\"), this.peekChar()) { - case "b": - return this.consumeChar("b"), { type: "Character", value: a("\b") }; - case "d": - case "D": - case "s": - case "S": - case "w": - case "W": - return this.characterClassEscape(); - case "f": - case "n": - case "r": - case "t": - case "v": - return this.controlEscapeAtom(); - case "c": - return this.controlLetterEscapeAtom(); - case "0": - return this.nulCharacterAtom(); - case "x": - return this.hexEscapeSequenceAtom(); - case "u": - return this.regExpUnicodeEscapeSequenceAtom(); - default: - return this.identityEscapeAtom(); - } - }, e.prototype.group = function() { - var d = !0; - switch (this.consumeChar("("), this.peekChar(0)) { - case "?": - this.consumeChar("?"), this.consumeChar(":"), d = !1; - break; - default: - this.groupIdx++; - break; - } - var g = this.disjunction(); - this.consumeChar(")"); - var E = { - type: "Group", - capturing: d, - value: g - }; - return d && (E.idx = this.groupIdx), E; - }, e.prototype.positiveInteger = function() { - var d = this.popChar(); - if (i.test(d) === !1) - throw Error("Expecting a positive integer"); - for (; r.test(this.peekChar(0)); ) - d += this.popChar(); - return parseInt(d, 10); - }, e.prototype.integerIncludingZero = function() { - var d = this.popChar(); - if (r.test(d) === !1) - throw Error("Expecting an integer"); - for (; r.test(this.peekChar(0)); ) - d += this.popChar(); - return parseInt(d, 10); - }, e.prototype.patternCharacter = function() { - var d = this.popChar(); - switch (d) { - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - case "^": - case "$": - case "\\": - case ".": - case "*": - case "+": - case "?": - case "(": - case ")": - case "[": - case "|": - throw Error("TBD"); - default: - return { type: "Character", value: a(d) }; - } - }, e.prototype.isRegExpFlag = function() { - switch (this.peekChar(0)) { - case "g": - case "i": - case "m": - case "u": - case "y": - return !0; - default: - return !1; - } - }, e.prototype.isRangeDash = function() { - return this.peekChar() === "-" && this.isClassAtom(1); - }, e.prototype.isDigit = function() { - return r.test(this.peekChar(0)); - }, e.prototype.isClassAtom = function(d) { - switch (d === void 0 && (d = 0), this.peekChar(d)) { - case "]": - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - return !1; - default: - return !0; - } - }, e.prototype.isTerm = function() { - return this.isAtom() || this.isAssertion(); - }, e.prototype.isAtom = function() { - if (this.isPatternCharacter()) - return !0; - switch (this.peekChar(0)) { - case ".": - case "\\": - case "[": - case "(": - return !0; - default: - return !1; - } - }, e.prototype.isAssertion = function() { - switch (this.peekChar(0)) { - case "^": - case "$": - return !0; - case "\\": - switch (this.peekChar(1)) { - case "b": - case "B": - return !0; - default: - return !1; - } - case "(": - return this.peekChar(1) === "?" && (this.peekChar(2) === "=" || this.peekChar(2) === "!"); - default: - return !1; - } - }, e.prototype.isQuantifier = function() { - var d = this.saveState(); - try { - return this.quantifier(!0) !== void 0; - } catch { - return !1; - } finally { - this.restoreState(d); - } - }, e.prototype.isPatternCharacter = function() { - switch (this.peekChar()) { - case "^": - case "$": - case "\\": - case ".": - case "*": - case "+": - case "?": - case "(": - case ")": - case "[": - case "|": - case "/": - case ` -`: - case "\r": - case "\u2028": - case "\u2029": - return !1; - default: - return !0; - } - }, e.prototype.parseHexDigits = function(d) { - for (var g = "", E = 0; E < d; E++) { - var A = this.popChar(); - if (n.test(A) === !1) - throw Error("Expecting a HexDecimal digits"); - g += A; - } - var m = parseInt(g, 16); - return { type: "Character", value: m }; - }, e.prototype.peekChar = function(d) { - return d === void 0 && (d = 0), this.input[this.idx + d]; - }, e.prototype.popChar = function() { - var d = this.peekChar(0); - return this.consumeChar(), d; - }, e.prototype.consumeChar = function(d) { - if (d !== void 0 && this.input[this.idx] !== d) - throw Error( - "Expected: '" + d + "' but found: '" + this.input[this.idx] + "' at offset: " + this.idx - ); - if (this.idx >= this.input.length) - throw Error("Unexpected end of input"); - this.idx++; - }, e.prototype.loc = function(d) { - return { begin: d, end: this.idx }; - }; - var n = /[0-9a-fA-F]/, r = /[0-9]/, i = /[1-9]/; - function a(d) { - return d.charCodeAt(0); - } - function c(d, g) { - d.length !== void 0 ? d.forEach(function(E) { - g.push(E); - }) : g.push(d); - } - function h(d, g) { - if (d[g] === !0) - throw "duplicate flag " + g; - d[g] = !0; - } - function p(d) { - if (d === void 0) - throw Error("Internal Error - Should never get here!"); - } - function u() { - throw Error("Internal Error - Should never get here!"); - } - var o, s = []; - for (o = a("0"); o <= a("9"); o++) - s.push(o); - var l = [a("_")].concat(s); - for (o = a("a"); o <= a("z"); o++) - l.push(o); - for (o = a("A"); o <= a("Z"); o++) - l.push(o); - var f = [ - a(" "), - a("\f"), - a(` -`), - a("\r"), - a(" "), - a("\v"), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a(" "), - a("\u2028"), - a("\u2029"), - a(" "), - a(" "), - a(" "), - a("\uFEFF") - ]; - function v() { - } - return v.prototype.visitChildren = function(d) { - for (var g in d) { - var E = d[g]; - d.hasOwnProperty(g) && (E.type !== void 0 ? this.visit(E) : Array.isArray(E) && E.forEach(function(A) { - this.visit(A); - }, this)); - } - }, v.prototype.visit = function(d) { - switch (d.type) { - case "Pattern": - this.visitPattern(d); - break; - case "Flags": - this.visitFlags(d); - break; - case "Disjunction": - this.visitDisjunction(d); - break; - case "Alternative": - this.visitAlternative(d); - break; - case "StartAnchor": - this.visitStartAnchor(d); - break; - case "EndAnchor": - this.visitEndAnchor(d); - break; - case "WordBoundary": - this.visitWordBoundary(d); - break; - case "NonWordBoundary": - this.visitNonWordBoundary(d); - break; - case "Lookahead": - this.visitLookahead(d); - break; - case "NegativeLookahead": - this.visitNegativeLookahead(d); - break; - case "Character": - this.visitCharacter(d); - break; - case "Set": - this.visitSet(d); - break; - case "Group": - this.visitGroup(d); - break; - case "GroupBackReference": - this.visitGroupBackReference(d); - break; - case "Quantifier": - this.visitQuantifier(d); - break; - } - this.visitChildren(d); - }, v.prototype.visitPattern = function(d) { - }, v.prototype.visitFlags = function(d) { - }, v.prototype.visitDisjunction = function(d) { - }, v.prototype.visitAlternative = function(d) { - }, v.prototype.visitStartAnchor = function(d) { - }, v.prototype.visitEndAnchor = function(d) { - }, v.prototype.visitWordBoundary = function(d) { - }, v.prototype.visitNonWordBoundary = function(d) { - }, v.prototype.visitLookahead = function(d) { - }, v.prototype.visitNegativeLookahead = function(d) { - }, v.prototype.visitCharacter = function(d) { - }, v.prototype.visitSet = function(d) { - }, v.prototype.visitGroup = function(d) { - }, v.prototype.visitGroupBackReference = function(d) { - }, v.prototype.visitQuantifier = function(d) { - }, { - RegExpParser: e, - BaseRegExpVisitor: v, - VERSION: "0.5.0" - }; - } - ); -})(Xo); -var an = Xo.exports, In = {}, xc = new an.RegExpParser(); -function Hn(t) { - var e = t.toString(); - if (In.hasOwnProperty(e)) - return In[e]; - var n = xc.pattern(e); - return In[e] = n, n; -} -function Sc() { - In = {}; -} -var Bc = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), Qo = "Complement Sets are not supported for first char optimization", xn = `Unable to use "first char" lexer optimizations: -`; -function Fc(t, e) { - e === void 0 && (e = !1); - try { - var n = Hn(t), r = Lr(n.value, {}, n.flags.ignoreCase); - return r; - } catch (a) { - if (a.message === Qo) - e && Yo("" + xn + (" Unable to optimize: < " + t.toString() + ` > -`) + ` Complement Sets cannot be automatically optimized. +"use strict";var js=Object.defineProperty;var ea=(t,e,n)=>e in t?js(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var U=(t,e,n)=>(ea(t,typeof e!="symbol"?e+"":e,n),n);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var Ve;(function(t){t.CELL_CLICK="CELL_CLICK",t.SELECTION_CHANGE="CHANGE_SELECTION",t.CELL_CHANGE="CELL_CHANGE",t.COPY_CELLS="COPY_CELLS"})(Ve||(Ve={}));class ta{constructor(e){U(this,"root");U(this,"cellClick",(e,n)=>{var p,u;if(e.button!==0)return;const{offsetX:r,offsetY:i}=e,a=this.root.getCellByCoords(r,i),c=this.root.getCell(a),h=new Hn;h.selectedCell=a,h.selectedRange={from:a,to:a},n.setSelectingMode(!0),this.changeSelection(h,!0),(u=(p=this.root.config).onCellClick)==null||u.call(p,e,c)});U(this,"changeSelection",(e,n=!1)=>{var r,i;this.root.selection=e,n&&((i=(r=this.root.config).onSelectonChange)==null||i.call(r,e)),this.root.renderSheet(),this.root.renderColumnsBar(),this.root.renderRowsBar()});U(this,"copy",(e,n,r)=>{var i,a;(a=(i=this.root.config).onCopy)==null||a.call(i,e,n,r)});this.root=e}async dispatch(e){switch(e.type){case Ve.CELL_CLICK:{const{event:n,scroller:r}=e;this.cellClick(n,r);break}case Ve.SELECTION_CHANGE:{const{selection:n,enableCallback:r}=e;this.changeSelection(n,r);break}case Ve.CELL_CHANGE:{const{cell:n,enableCallback:r}=e;if(n.value.substring(0,1).startsWith("="))try{await n.evalFormula(this.root.formulaParser),n.displayValue=n.resultValue,this.root.renderCell(n.position.row,n.position.column),this.changeCellValues(n,r);return}catch(i){console.error(i)}this.root.renderCell(n.position.row,n.position.column),this.changeCellValues(n,r);break}case Ve.COPY_CELLS:{const{data:n,dataAsString:r,range:i}=e;this.copy(i,n,r);break}}}changeCellValues(e,n=!0){var r,i;n&&((i=(r=this.root.config).onCellChange)==null||i.call(r,e))}}class kt{constructor(e,n){U(this,"x");U(this,"y");U(this,"width");U(this,"height");this.x=this.getXCoord(n.column,e),this.y=this.getYCoord(n.row,e),this.width=e.columns[n.column].width,this.height=e.rows[n.row].height}getXCoord(e,n){let r=0;for(let i=0;i{const{key:n}=e;switch(n){case"Escape":{this.hide();break}case"Enter":{if(!this.root.selection.selectedCell)return;this.root.changeCellValues(this.root.selection.selectedCell,{value:this.element.value,displayValue:this.element.value}),this.root.events.dispatch({type:Ve.CELL_CHANGE,cell:this.root.getCell(this.root.selection.selectedCell)}),this.hide(),this.root.renderSelection()}}});U(this,"handleClickOutside",e=>{const n=e.target;this.element.contains(n)||this.hide()});this.root=e;const n=document.createElement("input");n.classList.add(Ft+"editor"),this.element=n,this.hide()}hide(){this.element.style.display="none",this.element.classList.add("hide"),this.element.blur(),window.removeEventListener("click",this.handleClickOutside),this.element.removeEventListener("keydown",this.handleKeydown),this.root.focusTable()}show(e,n){const{height:r,width:i,x:a,y:c}=new kt(this.root.config,e),h=this.root.getCell(e);this.element.classList.remove("hide"),this.element.style.top=c-this.root.viewport.top+this.root.columnsBarHeight+"px",this.element.style.left=a-this.root.viewport.left+this.root.rowsBarWidth+"px",this.element.style.width=i+"px",this.element.style.height=r+"px",this.element.style.display="block",window.addEventListener("click",this.handleClickOutside),this.element.addEventListener("keydown",this.handleKeydown),this.element.value=n||h.value,this.element.focus(),n||this.element.select()}}function ci(t,e){return t.column===e.column&&t.row===e.row}class ra{constructor(e){U(this,"element");U(this,"verticalScroller");U(this,"horizontalScroller");U(this,"root");U(this,"isSelecting",!1);U(this,"handleMouseMove",e=>{if(!this.isSelecting)return;const{offsetX:n,offsetY:r}=e,i=this.root.getCellByCoords(n,r);let a=!1;this.root.selection.selectedRange&&(a=!ci(this.root.selection.selectedRange.to,i),a&&(this.root.selection.selectedRange.to=i,this.root.events.dispatch({type:Ve.SELECTION_CHANGE,selection:this.root.selection,enableCallback:!0})))});U(this,"handleMouseUp",()=>{this.isSelecting=!1;const e={...this.root.selection};this.root.selection.selectedRange&&ci(this.root.selection.selectedRange.from,this.root.selection.selectedRange.to)&&(e.selectedRange=null,this.root.events.dispatch({type:Ve.SELECTION_CHANGE,selection:e,enableCallback:!1})),this.root.renderSheet(),this.root.renderColumnsBar(),this.root.renderRowsBar()});U(this,"handleDoubleClick",e=>{e.preventDefault();const n=this.root.getCellByCoords(e.offsetX,e.offsetY);this.root.showEditor(n)});U(this,"handleKeydown",e=>{if(["ArrowLeft","ArrowRight","ArrowUp","ArrowDown"].includes(e.key)){switch(e.preventDefault(),this.root.selection.selectedRange=null,e.key){case"ArrowLeft":{this.root.selection.selectedCell&&this.root.selection.selectedCell.column>0&&(this.root.selection.selectedCell.column-=1);break}case"ArrowRight":{this.root.selection.selectedCell&&this.root.selection.selectedCell.column0&&(this.root.selection.selectedCell.row-=1);break}case"ArrowDown":{this.root.selection.selectedCell&&this.root.selection.selectedCell.rowu.slice(a.column,c.column+1))]}else if(this.root.selection.selectedCell){const{column:a,row:c}=this.root.selection.selectedCell;r=[[this.root.data[c][a]]],i.selectedRange={from:this.root.selection.selectedCell,to:this.root.selection.selectedCell}}else return;this.root.clipboard.copy(r,i.selectedRange);return}e.code}});U(this,"handleClick",e=>{this.root.events.dispatch({type:Ve.CELL_CLICK,event:e,scroller:this})});U(this,"handleScroll",()=>{const e=this.getViewportBoundlingRect();this.root.viewport.updateValues(e),this.root.renderSheet(),this.root.renderColumnsBar(),this.root.renderRowsBar()});this.root=e;const{horizontalScroller:n,scroller:r,verticalScroller:i}=this.buildComponent();this.element=r,this.verticalScroller=i,this.horizontalScroller=n,this.element.style.height=this.root.config.view.height+"px",this.element.style.width=this.root.config.view.width+"px",this.element.style.top=this.root.columnsBarHeight+"px",this.element.style.left=this.root.rowsBarWidth+"px",this.element.tabIndex=-1,this.updateScrollerSize(),this.element.addEventListener("scroll",this.handleScroll),this.element.addEventListener("mousedown",this.handleClick),this.element.addEventListener("mousemove",this.handleMouseMove),this.element.addEventListener("mouseup",this.handleMouseUp),this.element.addEventListener("dblclick",this.handleDoubleClick),this.element.addEventListener("keydown",this.handleKeydown),this.element.addEventListener("paste",a=>{this.root.selection.selectedCell&&this.root.clipboard.paste(this.root,this.root.selection.selectedCell,a)})}setSelectingMode(e){this.isSelecting=e}getViewportBoundlingRect(){const{scrollTop:e,scrollLeft:n}=this.element,{height:r,width:i}=this.element.getBoundingClientRect(),a=e+r,c=n+i;return{top:e,left:n,bottom:a,right:c}}buildComponent(){const e=document.createElement("div"),n=document.createElement("div"),r=document.createElement("div"),i=document.createElement("div"),a=document.createElement("div");return n.style.width="0px",n.style.pointerEvents="none",r.style.pointerEvents="none",i.style.display="flex",a.appendChild(n),a.appendChild(r),i.appendChild(a),this.verticalScroller=n,this.horizontalScroller=r,e.appendChild(i),e.contentEditable="false",e.classList.add(Ft+"scroller"),{scroller:e,verticalScroller:n,horizontalScroller:r}}getActualHeight(){return this.root.config.rows.reduce((e,n)=>(e+=n.height,e),0)}getActualWidth(){return this.root.config.columns.reduce((e,n)=>(e+=n.width,e),0)}updateScrollerSize(){const e=this.getActualHeight(),n=this.getActualWidth();this.setScrollerHeight(e),this.setScrollerWidth(n)}setScrollerHeight(e){this.verticalScroller.style.height=e+"px"}setScrollerWidth(e){this.horizontalScroller.style.width=e+"px"}}class Vr{constructor(e){U(this,"fontSize",16);U(this,"fontColor","black");U(this,"background","white");U(this,"borderColor","black");U(this,"selectedBackground","#4287f5");U(this,"selectedFontColor","#ffffff");e&&Object.assign(this,e)}}class Ro{constructor(e,n){U(this,"row");U(this,"column");this.row=e,this.column=n}}class No{constructor(e){U(this,"value");U(this,"displayValue");U(this,"resultValue");U(this,"position");U(this,"style");this.value=e.value,this.displayValue=e.displayValue,this.resultValue=e.resultValue,this.position=e.position,this.style=e.style}}let $n=class{constructor(e){U(this,"value");U(this,"displayValue");U(this,"resultValue");U(this,"position");U(this,"style",null);U(this,"cellsDependsOnThisCell",[]);U(this,"dependedFromCells",[]);this.value=e.value,this.displayValue=e.displayValue,this.resultValue=e.resultValue,this.position=e.position,this.style=e.style}getSerializableCell(){return new No({displayValue:this.displayValue,position:this.position,resultValue:this.resultValue,style:this.style,value:this.value})}changeStyles(e){this.style=e}changeValues(e){Object.assign(this,e)}evalFormula(e){this.value.substring(0,1)==="="&&(this.resultValue=e.parser.parse(this.value.slice(1),{col:this.position.column,row:this.position.row}))}render(e){const n=new kt(e.config,this.position);let{x:r,y:i}=n;const{height:a,width:c}=n,{ctx:h}=e;i-=e.viewport.top,r-=e.viewport.left;const p=this.style??e.styles.cells;h.clearRect(r,i,c,a),h.fillStyle=p.background,h.strokeStyle="black",h.fillRect(r,i,c-1,a-1),h.strokeRect(r,i,c,a),h.fillStyle=p.fontColor,h.textAlign="left",h.font=`${p.fontSize}px Arial`,h.textBaseline="middle",h.fillText(this.displayValue,r+2,i+a/2)}},ia=class{constructor(e){U(this,"element");U(this,"ctx");U(this,"root");this.root=e;const n=document.createElement("canvas");n.classList.add(Ft+"sheet"),n.height=this.root.config.view.height,n.width=this.root.config.view.width,n.style.width=this.root.config.view.width+"px",n.style.height=this.root.config.view.height+"px",n.style.left="0px",this.element=n;const r=this.element.getContext("2d");if(!r)throw new Error("Enable hardware acceleration");this.ctx=r}getCellByCoords(e,n){let r=0,i=0;for(;i<=n&&(i+=this.root.config.rows[r].height,!(i>=n));)r++;let a=0,c=0;for(;c<=e&&(c+=this.root.config.columns[a].width,!(c>=e));)a++;return new Ro(r,a)}renderCell(e){const{column:n,row:r}=e;this.root.data[r][n].render(this.root)}getSelectionRange(){const{selectedCell:e,selectedRange:n}=this.root.selection;if(!(!e&&!n)){if(n){const r=Math.min(n.from.row,n.to.row),i=Math.min(n.from.column,n.to.column),a=Math.max(n.from.row,n.to.row),c=Math.max(n.from.column,n.to.column),h=new kt(this.root.config,{row:r,column:i});let p=0;for(let l=i;l<=c;l++)p+=this.root.config.columns[l].width;let u=0;for(let l=r;l<=a;l++)u+=this.root.config.rows[l].height;const o=h.x-this.root.viewport.left,s=h.y-this.root.viewport.top;return{x:o,y:s,height:u,width:p}}if(!n&&e){const r=new kt(this.root.config,e);return r.x-=this.root.viewport.left,r.y-=this.root.viewport.top,r}}}renderSelectionRange(e,n,r,i){this.ctx.save(),this.ctx.strokeStyle="#7da8ff",this.ctx.lineWidth=3,this.ctx.strokeRect(e,n,r,i),this.ctx.fillStyle="#7da8ff35",this.ctx.fillRect(e,n,r,i),this.ctx.restore()}renderSelection(){const e=this.getSelectionRange();if(!e)return;const{height:n,width:r,x:i,y:a}=e;this.renderSelectionRange(i,a,r,n)}renderSheet(){const e=this.root.viewport.firstRow,n=this.root.viewport.lastCol+3,r=this.root.viewport.lastRow+3,i=this.root.viewport.firstCol;for(let a=e;a<=r;a++)for(let c=i;c<=n&&!(!this.root.config.columns[c]||!this.root.config.rows[a]);c++)this.renderCell({column:c,row:a});this.renderSelection()}};class oa{constructor(e){U(this,"element");U(this,"root");this.root=e;const n=document.createElement("div");n.classList.add(Ft+"spreadsheet_container"),this.element=n,this.changeElementSizes(this.root.viewProps)}changeElementSizes(e){const{height:n,width:r}=e;this.element.style.width=r+this.root.rowsBarWidth+"px",this.element.style.height=n+this.root.columnsBarHeight+"px"}}class sa{constructor(e){U(this,"element");U(this,"root");U(this,"height",0);this.root=e;const n=document.createElement("div");n.classList.add(Ft+"toolbar"),this.element=n}}class Ln{constructor(e){U(this,"rows");U(this,"columns");U(this,"view",{width:800,height:600});U(this,"onCellClick",null);U(this,"onSelectonChange",null);U(this,"onCellChange",null);U(this,"onCopy");this.columns=e.columns,this.rows=e.rows,this.view=e.view,this.onCellClick=e.onCellClick??null,this.onSelectonChange=e.onSelectionChange??null,this.onCellChange=e.onCellChange??null,this.onCopy=e.onCopy??null}}class Hn{constructor(){U(this,"selectedCell",null);U(this,"selectedRange",null)}}class Ao{constructor(){U(this,"cells");this.cells=new Vr}}class Ur{constructor(e,n){U(this,"root");U(this,"top");U(this,"left");U(this,"right");U(this,"bottom");U(this,"firstRow");U(this,"lastRow");U(this,"firstCol");U(this,"lastCol");this.root=e,this.top=n.top,this.left=n.left,this.right=n.right,this.bottom=n.bottom,this.firstRow=this.getFirstRow(),this.lastCol=this.getFirstRow();//!Temp +this.firstCol=this.getFirstRow();//!Temp +this.lastRow=this.getLastRow(),this.updateValues({top:0,left:0,right:this.root.viewProps.width,bottom:this.root.viewProps.height})}updateValues(e){this.top=e.top,this.left=e.left,this.right=e.right,this.bottom=e.bottom,this.firstRow=this.getFirstRow(),this.lastRow=this.getLastRow(),this.firstCol=this.getFirstCol(),this.lastCol=this.getLastCol()}getFirstRow(){return this.root.cache.getRowByYCoord(this.top)}getLastRow(){return this.root.cache.getRowByYCoord(this.bottom)}getFirstCol(){return this.root.cache.getColumnByXCoord(this.left)}getLastCol(){return this.root.cache.getColumnByXCoord(this.right)}}let Gr=class{constructor(e){U(this,"width");U(this,"title");this.width=e.width,this.title=e.title}};class $r{constructor(e){U(this,"height");U(this,"title");this.height=e.height,this.title=e.title}}function Hr(t,e,n=!1){const r=[];for(let i=0;i<=t;i++){const a=[];for(let c=0;c<=e;c++){const h=n?`${i}:${c}`:"",p=new $n({displayValue:h,resultValue:h,value:h,position:{column:c,row:i},style:null});a.push(p)}r.push(a)}return r}function yo(t,e){const n=[];for(let a=0;a<=t;a++){const c=new $r({height:40,title:String(a)});n.push(c)}const r=[];for(let a=0;a<=e;a++){const c=new Gr({title:String(a),width:150});r.push(c)}return new Ln({columns:r,rows:n,view:{height:600,width:800}})}function aa(t,e){const n=Hr(t,e),r=yo(t,e);return{data:n,config:r}}class To{constructor(e){U(this,"xPos");U(this,"colIdx");this.xPos=e.xPos,this.colIdx=e.colIdx}}class wo{constructor(e){U(this,"yPos");U(this,"rowIdx");this.yPos=e.yPos,this.rowIdx=e.rowIdx}}class Co{constructor(e){U(this,"columns");U(this,"rows");this.columns=e.columns,this.rows=e.rows}getRowByYCoord(e){let n=0;for(let r=0;r=Math.min(r.from.column,r.to.column)&&e<=Math.max(r.from.column,r.to.column):!1}renderText(e,n){const{width:r,x:i}=n;this.ctx.fillStyle="black",this.ctx.textAlign="center",this.ctx.textBaseline="middle",this.ctx.font="12px Arial",this.ctx.fillText(this.root.config.columns[e].title,i+r/2-this.root.viewport.left,0+this.height/2)}renderRect(e,n){const{width:r,x:i}=n,a=this.isColumnSelected(e);this.ctx.fillStyle=a?"#c7ebff":"white",this.ctx.strokeStyle="black",this.ctx.lineWidth=1;const c=i-this.root.viewport.left;this.ctx.fillRect(c-1,0,r,this.height),this.ctx.strokeRect(c-1,0,r,this.height)}renderSingleColumn(e){const n=new kt(this.root.config,{row:0,column:e});this.renderRect(e,n),this.renderText(e,n)}renderBar(){const e=this.root.viewport.lastCol+3,n=this.root.viewport.firstCol;this.ctx.beginPath(),this.ctx.strokeStyle="black",this.ctx.lineWidth=1,this.ctx.moveTo(0,0),this.ctx.lineTo(0,this.height),this.ctx.closePath(),this.ctx.stroke();for(let r=n;r<=e&&this.root.config.columns[r];r++)this.renderSingleColumn(r)}}class la{constructor(e){U(this,"element");U(this,"ctx");U(this,"root");U(this,"width",35);U(this,"height");U(this,"resizerHeight",1);this.root=e,this.element=this.createElement();const n=this.element.getContext("2d");if(!n)throw new Error("Enable hardware acceleration");this.ctx=n,this.height=this.root.viewProps.height}createElement(){const e=document.createElement("canvas");return e.style.position="absolute",e.style.height=this.root.viewProps.height+"px",e.style.width=this.width+"px",e.style.display="block",e.style.borderTop="1px solid black",e.width=this.width,e.height=this.root.viewProps.height,e}setElementPosition(e,n){this.element.style.top=e+"px",this.element.style.left=n+"px"}isRowSelected(e){const{selectedCell:n,selectedRange:r}=this.root.selection;return n&&n.row===e?!0:r?e>=Math.min(r.from.row,r.to.row)&&e<=Math.max(r.from.row,r.to.row):!1}renderText(e,n){const{y:r,height:i}=n;this.ctx.fillStyle="black",this.ctx.textAlign="center",this.ctx.textBaseline="middle",this.ctx.font="12px Arial",this.ctx.fillText(this.root.config.rows[e].title,this.width/2,r-this.root.viewport.top+i/2)}renderRect(e,n){const{y:r,height:i}=n,a=this.isRowSelected(e);this.ctx.fillStyle=a?"#c7ebff":"white",this.ctx.strokeStyle="black",this.ctx.lineWidth=this.resizerHeight;const c=r-this.root.viewport.top;this.ctx.fillRect(0,c-1,this.width,i),this.ctx.strokeRect(0,c-1,this.width,i)}renderSingleRow(e){const n=new kt(this.root.config,{column:0,row:e});this.renderRect(e,n),this.renderText(e,n)}renderBar(){const e=this.root.viewport.lastRow+3,n=this.root.viewport.firstRow;this.ctx.beginPath(),this.ctx.moveTo(0,0),this.ctx.strokeStyle="black",this.ctx.lineWidth=16,this.ctx.lineTo(35,0),this.ctx.closePath(),this.ctx.stroke();for(let r=n;r<=e&&this.root.config.rows[r];r++)this.renderSingleRow(r)}}class ua{constructor(e){U(this,"saved",null);U(this,"root");this.root=e}copy(e,n){const r=e.map(i=>i.map(a=>a.displayValue).join(" ")).join(` +`);this.saved=e,navigator.clipboard.writeText(r),this.root.events.dispatch({type:Ve.COPY_CELLS,data:e,dataAsString:r,range:n})}paste(e,{column:n,row:r},i){if(!this.saved){if(!i.clipboardData)return;const h=i.clipboardData.getData("text");try{const u=h.split(` +`).map(l=>l.split(" ")).map(l=>l.map(f=>{const v={displayValue:f,position:{column:n,row:r},resultValue:f,style:new Vr,value:f};return new $n(v)})),o=u.length,s=u[0]?u[0].length:0;for(let l=0;l{i[n[o]]=o});class a{constructor(){this.Types=n,this.type2Number={number:n.NUMBER,boolean:n.BOOLEAN,string:n.STRING,object:-1}}checkFunctionResult(s){if(typeof s==="number"){if(isNaN(s))return t.VALUE;if(!isFinite(s))return t.NUM}return s??t.NULL}flattenDeep(s){return s.reduce((l,f)=>Array.isArray(f)?l.concat(this.flattenDeep(f)):l.concat(f),[])}acceptNumber(s,l=!0,f=!0){if(s instanceof t)return s;let v;if(typeof s=="number")v=s;else if(typeof s=="boolean")if(f)v=Number(s);else throw t.VALUE;else if(typeof s=="string"){if(s.length===0||(v=Number(s),v!==v))throw t.VALUE}else if(Array.isArray(s))if(l)v=this.acceptNumber(s[0][0]);else if(s[0].length===1)v=this.acceptNumber(s[0][0]);else throw t.VALUE;else throw Error("Unknown type in FormulaHelpers.acceptNumber");return v}flattenParams(s,l,f,v,d=null,g=1){if(s.length{const{isCellRef:A,isRangeRef:m,isArray:N}=E,y=E.value instanceof e,R=!A&&!m&&!N&&!y,T={isLiteral:R,isCellRef:A,isRangeRef:m,isArray:N,isUnion:y};if(R)E.omitted?E=d:E=this.accept(E,l,d),v(E,T);else if(A)v(E.value,T);else if(y){if(!f)throw t.VALUE;E=E.value.data,E=this.flattenDeep(E),E.forEach(w=>{v(w,T)})}else(m||N)&&(E=this.flattenDeep(E.value),E.forEach(w=>{v(w,T)}))})}accept(s,l=null,f,v=!0,d=!1){if(Array.isArray(l)&&(l=l[0]),s==null&&f===void 0)throw t.ARG_MISSING([l]);if(s==null)return f;if(typeof s!="object"||Array.isArray(s))return s;const g=s.isArray;if(s.value!=null&&(s=s.value),l==null)return s;if(s instanceof t)throw s;if(l===n.ARRAY){if(Array.isArray(s))return v?this.flattenDeep(s):s;if(s instanceof e)throw t.VALUE;if(d)return v?[s]:[[s]];throw t.VALUE}else if(l===n.COLLECTIONS)return s;g&&(s=s[0][0]);const E=this.type(s);if(l===n.STRING)E===n.BOOLEAN?s=s?"TRUE":"FALSE":s=`${s}`;else if(l===n.BOOLEAN){if(E===n.STRING)throw t.VALUE;E===n.NUMBER&&(s=!!s)}else if(l===n.NUMBER)s=this.acceptNumber(s,!1);else if(l===n.NUMBER_NO_BOOLEAN)s=this.acceptNumber(s,!1,!1);else throw t.VALUE;return s}type(s){let l=this.type2Number[typeof s];return l===-1&&(Array.isArray(s)?l=n.ARRAY:s.ref?s.ref.from?l=n.RANGE_REF:l=n.CELL_REF:s instanceof e&&(l=n.COLLECTIONS)),l}isRangeRef(s){return s.ref&&s.ref.from}isCellRef(s){return s.ref&&!s.ref.from}retrieveRanges(s,l,f){return f=u.extend(l,f),l=this.retrieveArg(s,l),l=c.accept(l,n.ARRAY,void 0,!1,!0),f!==l?(f=this.retrieveArg(s,f),f=c.accept(f,n.ARRAY,void 0,!1,!0)):f=l,[l,f]}retrieveArg(s,l){if(l===null)return{value:0,isArray:!1,omitted:!0};const f=s.utils.extractRefValue(l);return{value:f.val,isArray:f.isArray,ref:l.ref}}}const c=new a,h={isWildCard:o=>typeof o=="string"?/[*?]/.test(o):!1,toRegex:(o,s)=>RegExp(o.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/([^~]??)[?]/g,"$1.").replace(/([^~]??)[*]/g,"$1.*").replace(/~([?*])/g,"$1"),s)},p={parse:o=>{const s=typeof o;if(s==="string"){const l=o.toUpperCase();if(l==="TRUE"||l==="FALSE")return{op:"=",value:l==="TRUE"};const f=o.match(/(<>|>=|<=|>|<|=)(.*)/);if(f){let v=f[1],d;if(isNaN(f[2])){const g=f[2].toUpperCase();if(g==="TRUE"||g==="FALSE")d=g==="TRUE";else if(/#NULL!|#DIV\/0!|#VALUE!|#NAME\?|#NUM!|#N\/A|#REF!/.test(f[2]))d=new t(f[2]);else if(d=f[2],h.isWildCard(d))return{op:"wc",value:h.toRegex(d),match:v==="="}}else d=Number(f[2]);return{op:v,value:d}}else return h.isWildCard(o)?{op:"wc",value:h.toRegex(o),match:!0}:{op:"=",value:o}}else{if(s==="boolean"||s==="number"||Array.isArray(o)||o instanceof t)return{op:"=",value:o};throw Error(`Criteria.parse: type ${typeof o} not support`)}}},u={columnNumberToName:o=>{let s=o,l="",f=0;for(;s>0;)f=(s-1)%26,l=String.fromCharCode("A".charCodeAt(0)+f)+l,s=Math.floor((s-f)/26);return l},columnNameToNumber:o=>{o=o.toUpperCase();const s=o.length;let l=0;for(let f=0;f{if(s==null)return o;let l,f;if(c.isCellRef(o))l=0,f=0;else if(c.isRangeRef(o))l=o.ref.to.row-o.ref.from.row,f=o.ref.to.col-o.ref.from.col;else throw Error("Address.extend should not reach here.");return c.isCellRef(s)?(l>0||f>0)&&(s={ref:{from:{col:s.ref.col,row:s.ref.row},to:{row:s.ref.row+l,col:s.ref.col+f}}}):(s.ref.to.row=s.ref.from.row+l,s.ref.to.col=s.ref.from.col+f),s}};return cr={FormulaHelpers:c,Types:n,ReversedTypes:i,Factorials:r,WildCard:h,Criteria:p,Address:u},cr}var lr,ui;function he(){if(ui)return lr;ui=1;class t extends Error{constructor(n,r,i){if(super(r),r==null&&i==null&&t.errorMap.has(n))return t.errorMap.get(n);r==null&&i==null?(this._error=n,t.errorMap.set(n,this)):this._error=n,this.details=i}get error(){return this._error}get name(){return this._error}equals(n){return n instanceof t&&n._error===this._error}toString(){return this._error}}return t.errorMap=new Map,t.DIV0=new t("#DIV/0!"),t.NA=new t("#N/A"),t.NAME=new t("#NAME?"),t.NULL=new t("#NULL!"),t.NUM=new t("#NUM!"),t.REF=new t("#REF!"),t.VALUE=new t("#VALUE!"),t.NOT_IMPLEMENTED=e=>new t("#NAME?",`Function ${e} is not implemented.`),t.TOO_MANY_ARGS=e=>new t("#N/A",`Function ${e} has too many arguments.`),t.ARG_MISSING=e=>{const{Types:n}=ge();return new t("#N/A",`Argument type ${e.map(r=>n[r]).join(", ")} is missing.`)},t.ERROR=(e,n)=>new t("#ERROR!",e,n),lr=t,lr}let _e=class{};_e.version="0.10.3";function Vt(t){let e="",n=t.length-1;for(;n>=0;)e+=t.charAt(n--);return e}function ke(t,e){let n="";for(;n.length=e?n:ke("0",e-n.length)+n}function ur(t,e){let n=""+t;return n.length>=e?n:ke(" ",e-n.length)+n}function hn(t,e){let n=""+t;return n.length>=e?n:n+ke(" ",e-n.length)}function da(t,e){let n=""+Math.round(t);return n.length>=e?n:ke("0",e-n.length)+n}function va(t,e){let n=""+t;return n.length>=e?n:ke("0",e-n.length)+n}const fi=Math.pow(2,32);function Gt(t,e){if(t>fi||t<-fi)return da(t,e);const n=Math.round(t);return va(n,e)}function _n(t,e){return e=e||0,t.length>=7+e&&(t.charCodeAt(e)|32)===103&&(t.charCodeAt(e+1)|32)===101&&(t.charCodeAt(e+2)|32)===110&&(t.charCodeAt(e+3)|32)===101&&(t.charCodeAt(e+4)|32)===114&&(t.charCodeAt(e+5)|32)===97&&(t.charCodeAt(e+6)|32)===108}const hi=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],fr=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function Oo(t){t[0]="General",t[1]="0",t[2]="0.00",t[3]="#,##0",t[4]="#,##0.00",t[9]="0%",t[10]="0.00%",t[11]="0.00E+00",t[12]="# ?/?",t[13]="# ??/??",t[14]="m/d/yy",t[15]="d-mmm-yy",t[16]="d-mmm",t[17]="mmm-yy",t[18]="h:mm AM/PM",t[19]="h:mm:ss AM/PM",t[20]="h:mm",t[21]="h:mm:ss",t[22]="m/d/yy h:mm",t[37]="#,##0 ;(#,##0)",t[38]="#,##0 ;[Red](#,##0)",t[39]="#,##0.00;(#,##0.00)",t[40]="#,##0.00;[Red](#,##0.00)",t[45]="mm:ss",t[46]="[h]:mm:ss",t[47]="mmss.0",t[48]="##0.0E+0",t[49]="@",t[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',t[65535]="General"}const _t={};Oo(_t);function pn(t,e,n){const r=t<0?-1:1;let i=t*r,a=0,c=1,h=0,p=1,u=0,o=0,s=Math.floor(i);for(;ue&&(u>e?(o=p,h=a):(o=u,h=c)),!n)return[0,r*h,o];const l=Math.floor(r*h/o);return[l,r*h-l*o,o]}function Zt(t,e,n){if(t>2958465||t<0)return null;let r=t|0,i=Math.floor(86400*(t-r)),a=0,c=[];const h={D:r,T:i,u:86400*(t-r)-i,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(h.u)<1e-6&&(h.u=0),e&&e.date1904&&(r+=1462),h.u>.9999&&(h.u=0,++i===86400&&(h.T=i=0,++r,++h.D)),r===60)c=n?[1317,10,29]:[1900,2,29],a=3;else if(r===0)c=n?[1317,8,29]:[1900,1,0],a=6;else{r>60&&--r;const p=new Date(1900,0,1);p.setDate(p.getDate()+r-1),c=[p.getFullYear(),p.getMonth()+1,p.getDate()],a=p.getDay(),r<60&&(a=(a+6)%7),n&&(a=ma())}return h.y=c[0],h.m=c[1],h.d=c[2],h.S=i%60,i=Math.floor(i/60),h.M=i%60,i=Math.floor(i/60),h.H=i,h.q=a,h}_e.parse_date_code=Zt;const Mo=new Date(1899,11,31,0,0,0),ga=Mo.getTime(),Ea=new Date(1900,2,1,0,0,0);function Uo(t,e){let n=t.getTime();return e?n-=1461*24*60*60*1e3:t>=Ea&&(n+=24*60*60*1e3),(n-(ga+(t.getTimezoneOffset()-Mo.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function Lo(t){return t.toString(10)}_e._general_int=Lo;const _o=function(){const e=/\.(\d*[1-9])0+$/,n=/\.0*$/,r=/\.(\d*[1-9])0+/,i=/\.0*[Ee]/,a=/(E[+-])(\d)$/;function c(o){const s=o<0?12:11;let l=u(o.toFixed(12));return l.length<=s||(l=o.toPrecision(10),l.length<=s)?l:o.toExponential(5)}function h(o){let s=o.toFixed(11).replace(e,".$1");return s.length>(o<0?12:11)&&(s=o.toPrecision(6)),s}function p(o){for(let s=0;s!==o.length;++s)if((o.charCodeAt(s)|32)===101)return o.replace(r,".$1").replace(i,"E").replace("e","E").replace(a,"$10$2");return o}function u(o){return o.indexOf(".")>-1?o.replace(n,"").replace(e,".$1"):o}return function(s){let l=Math.floor(Math.log(Math.abs(s))*Math.LOG10E),f;return l>=-4&&l<=-1?f=s.toPrecision(10+l):Math.abs(l)<=9?f=c(s):l===10?f=s.toFixed(10).substr(0,12):f=h(s),u(p(f))}}();_e._general_num=_o;function Pn(t,e){switch(typeof t){case"string":return t;case"boolean":return t?"TRUE":"FALSE";case"number":return(t|0)===t?Lo(t):_o(t);case"undefined":return"";case"object":if(t==null)return"";if(t instanceof Date)return Bo(14,Uo(t,e&&e.date1904),e)}throw new Error("unsupported value in General format: "+t)}_e._general=Pn;function ma(){return 0}function Ra(t,e,n,r){let i="",a=0,c=0,h=n.y,p,u=0;switch(t){case 98:h=n.y+543;case 121:switch(e.length){case 1:case 2:p=h%100,u=2;break;default:p=h%1e4,u=4;break}break;case 109:switch(e.length){case 1:case 2:p=n.m,u=e.length;break;case 3:return fr[n.m-1][1];case 5:return fr[n.m-1][0];default:return fr[n.m-1][2]}break;case 100:switch(e.length){case 1:case 2:p=n.d,u=e.length;break;case 3:return hi[n.q][0];default:return hi[n.q][1]}break;case 104:switch(e.length){case 1:case 2:p=1+(n.H+11)%12,u=e.length;break;default:throw"bad hour format: "+e}break;case 72:switch(e.length){case 1:case 2:p=n.H,u=e.length;break;default:throw"bad hour format: "+e}break;case 77:switch(e.length){case 1:case 2:p=n.M,u=e.length;break;default:throw"bad minute format: "+e}break;case 115:if(e!=="s"&&e!=="ss"&&e!==".0"&&e!==".00"&&e!==".000")throw"bad second format: "+e;return n.u===0&&(e==="s"||e==="ss")?Xe(n.S,e.length):(r>=2?c=r===3?1e3:100:c=r===1?10:1,a=Math.round(c*(n.S+n.u)),a>=60*c&&(a=0),e==="s"?a===0?"0":""+a/c:(i=Xe(a,2+r),e==="ss"?i.substr(0,2):"."+i.substr(2,e.length-1)));case 90:switch(e){case"[h]":case"[hh]":p=n.D*24+n.H;break;case"[m]":case"[mm]":p=(n.D*24+n.H)*60+n.M;break;case"[s]":case"[ss]":p=((n.D*24+n.H)*60+n.M)*60+Math.round(n.S+n.u);break;default:throw"bad abstime format: "+e}u=e.length===3?1:2;break;case 101:p=h,u=1}return u>0?Xe(p,u):""}function Nt(t){if(t.length<=3)return t;let n=t.length%3,r=t.substr(0,n);for(;n!==t.length;n+=3)r+=(r.length>0?",":"")+t.substr(n,3);return r}const ht=function(){const e=/%/g;function n(y,R,T){const w=R.replace(e,""),C=R.length-w.length;return ht(y,w,T*Math.pow(10,2*C))+ke("%",C)}function r(y,R,T){let w=R.length-1;for(;R.charCodeAt(w-1)===44;)--w;return ht(y,R.substr(0,w),T/Math.pow(10,3*(R.length-w)))}function i(y,R){let T,w=y.indexOf("E")-y.indexOf(".")-1;if(y.match(/^#+0.0E\+0$/)){if(R===0)return"0.0E+0";if(R<0)return"-"+i(y,-R);let C=y.indexOf(".");C===-1&&(C=y.indexOf("E"));let M=Math.floor(Math.log(R)*Math.LOG10E)%C;if(M<0&&(M+=C),T=(R/Math.pow(10,M)).toPrecision(w+1+(C+M)%C),T.indexOf("e")===-1){const _=Math.floor(Math.log(R)*Math.LOG10E);for(T.indexOf(".")===-1?T=T.charAt(0)+"."+T.substr(1)+"E+"+(_-T.length+M):T+="E+"+(_-M);T.substr(0,2)==="0.";)T=T.charAt(0)+T.substr(2,C)+"."+T.substr(2+C),T=T.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");T=T.replace(/\+-/,"-")}T=T.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(_,W,F,S){return W+F+S.substr(0,(C+M)%C)+"."+S.substr(M)+"E"})}else T=R.toExponential(w);return y.match(/E\+00$/)&&T.match(/e[+-]\d$/)&&(T=T.substr(0,T.length-1)+"0"+T.charAt(T.length-1)),y.match(/E\-/)&&T.match(/e\+/)&&(T=T.replace(/e\+/,"e")),T.replace("e","E")}const a=/# (\?+)( ?)\/( ?)(\d+)/;function c(y,R,T){const w=parseInt(y[4],10),C=Math.round(R*w),M=Math.floor(C/w);let _=C-M*w,W=w;return T+(M===0?"":""+M)+" "+(_===0?ke(" ",y[1].length+1+y[4].length):ur(_,y[1].length)+y[2]+"/"+y[3]+Xe(W,y[4].length))}function h(y,R,T){return T+(R===0?"":""+R)+ke(" ",y[1].length+2+y[4].length)}const p=/^#*0*\.([0#]+)/,u=/\).*[0#]/,o=/\(###\) ###\\?-####/;function s(y){let R="",T;for(let w=0;w!==y.length;++w)switch(T=y.charCodeAt(w)){case 35:break;case 63:R+=" ";break;case 48:R+="0";break;default:R+=String.fromCharCode(T)}return R}function l(y,R){const T=Math.pow(10,R);return""+Math.round(y*T)/T}function f(y,R){return R<(""+Math.round((y-Math.floor(y))*Math.pow(10,R))).length?0:Math.round((y-Math.floor(y))*Math.pow(10,R))}function v(y,R){return R<(""+Math.round((y-Math.floor(y))*Math.pow(10,R))).length?1:0}function d(y){return y<2147483647&&y>-2147483648?""+(y>=0?y|0:y-1|0):""+Math.floor(y)}function g(y,R,T){if(y.charCodeAt(0)===40&&!R.match(u)){const G=R.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return T>=0?g("n",G,T):"("+g("n",G,-T)+")"}if(R.charCodeAt(R.length-1)===44)return r(y,R,T);if(R.indexOf("%")!==-1)return n(y,R,T);if(R.indexOf("E")!==-1)return i(R,T);if(R.charCodeAt(0)===36)return"$"+g(y,R.substr(R.charAt(1)==" "?2:1),T);let w,C,M,_,W=Math.abs(T),F=T<0?"-":"";if(R.match(/^00+$/))return F+Gt(W,R.length);if(R.match(/^[#?]+$/))return w=Gt(T,0),w==="0"&&(w=""),w.length>R.length?w:s(R.substr(0,R.length-w.length))+w;if(C=R.match(a))return c(C,W,F);if(R.match(/^#+0+$/))return F+Gt(W,R.length-R.indexOf("0"));if(C=R.match(p))return w=l(T,C[1].length).replace(/^([^\.]+)$/,"$1."+s(C[1])).replace(/\.$/,"."+s(C[1])).replace(/\.(\d*)$/,function(G,J){return"."+J+ke("0",s(C[1]).length-J.length)}),R.indexOf("0.")!==-1?w:w.replace(/^0\./,".");if(R=R.replace(/^#+([0.])/,"$1"),C=R.match(/^(0*)\.(#*)$/))return F+l(W,C[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,C[1].length?"0.":".");if(C=R.match(/^#{1,3},##0(\.?)$/))return F+Nt(Gt(W,0));if(C=R.match(/^#,##0\.([#0]*0)$/))return T<0?"-"+g(y,R,-T):Nt(""+(Math.floor(T)+v(T,C[1].length)))+"."+Xe(f(T,C[1].length),C[1].length);if(C=R.match(/^#,#*,#0/))return g(y,R.replace(/^#,#*,/,""),T);if(C=R.match(/^([0#]+)(\\?-([0#]+))+$/))return w=Vt(g(y,R.replace(/[\\-]/g,""),T)),M=0,Vt(Vt(R.replace(/\\/g,"")).replace(/[0#]/g,function(G){return M=0?N("n",G,T):"("+N("n",G,-T)+")"}if(R.charCodeAt(R.length-1)===44)return E(y,R,T);if(R.indexOf("%")!==-1)return A(y,R,T);if(R.indexOf("E")!==-1)return m(R,T);if(R.charCodeAt(0)===36)return"$"+N(y,R.substr(R.charAt(1)==" "?2:1),T);let w,C,M,_,W=Math.abs(T),F=T<0?"-":"";if(R.match(/^00+$/))return F+Xe(W,R.length);if(R.match(/^[#?]+$/))return w=""+T,T===0&&(w=""),w.length>R.length?w:s(R.substr(0,R.length-w.length))+w;if(C=R.match(a))return h(C,W,F);if(R.match(/^#+0+$/))return F+Xe(W,R.length-R.indexOf("0"));if(C=R.match(p))return w=(""+T).replace(/^([^\.]+)$/,"$1."+s(C[1])).replace(/\.$/,"."+s(C[1])),w=w.replace(/\.(\d*)$/,function(G,J){return"."+J+ke("0",s(C[1]).length-J.length)}),R.indexOf("0.")!==-1?w:w.replace(/^0\./,".");if(R=R.replace(/^#+([0.])/,"$1"),C=R.match(/^(0*)\.(#*)$/))return F+(""+W).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,C[1].length?"0.":".");if(C=R.match(/^#{1,3},##0(\.?)$/))return F+Nt(""+W);if(C=R.match(/^#,##0\.([#0]*0)$/))return T<0?"-"+N(y,R,-T):Nt(""+T)+"."+ke("0",C[1].length);if(C=R.match(/^#,#*,#0/))return N(y,R.replace(/^#,#*,/,""),T);if(C=R.match(/^([0#]+)(\\?-([0#]+))+$/))return w=Vt(N(y,R.replace(/[\\-]/g,""),T)),M=0,Vt(Vt(R.replace(/\\/g,"")).replace(/[0#]/g,function(G){return M-1||n=="\\"&&t.charAt(e+1)=="-"&&"0#".indexOf(t.charAt(e+2))>-1););break;case"?":for(;t.charAt(++e)===n;);break;case"*":++e,(t.charAt(e)===" "||t.charAt(e)==="*")&&++e;break;case"(":case")":++e;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;e-1;);break;case" ":++e;break;default:++e;break}return!1}_e.is_date=xo;function So(t,e,n,r){let i=[],a="",c=0,h="",p="t",u,o,s,l="H";for(;c=12?"P":"A"),w.t="T",l="h",c+=3):t.substr(c,5).toUpperCase()==="AM/PM"?(u!=null&&(w.v=u.H>=12?"PM":"AM"),w.t="T",c+=5,l="h"):(w.t="t",++c),u==null&&w.t==="T")return"";i[i.length]=w,p=h;break;case"[":for(a=h;t.charAt(c++)!=="]"&&c-1&&(a=(a.match(/\$([^-\[\]]*)/)||[])[1]||"$",xo(t)||(i[i.length]={t:"t",v:a}));break;case".":if(u!=null){for(a=h;++c-1||h=="\\"&&t.charAt(c+1)=="-"&&c-1;)a+=h;i[i.length]={t:"n",v:a};break;case"?":for(a=h;t.charAt(++c)===h;)a+=h;i[i.length]={t:h,v:a},p=h;break;case"*":++c,(t.charAt(c)===" "||t.charAt(c)==="*")&&++c;break;case"(":case")":i[i.length]={t:r===1||typeof e=="number"&&e<0?"t":h,v:h},++c;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(a=h;c-1;)a+=t.charAt(c);i[i.length]={t:"D",v:a};break;case" ":i[i.length]={t:h,v:h},++c;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(h)===-1)throw new Error("unrecognized character "+h+" in "+t);i[i.length]={t:"t",v:h},++c;break}let f=0,v=0,d;for(c=i.length-1,p="t";c>=0;--c)switch(i[c].t){case"h":case"H":i[c].t=l,p="h",f<1&&(f=1);break;case"s":(d=i[c].v.match(/\.0+$/))&&(v=Math.max(v,d[0].length-1)),f<3&&(f=3);case"d":case"y":case"M":case"e":p=i[c].t;break;case"m":p==="s"&&(i[c].t="M",f<2&&(f=2));break;case"X":break;case"Z":f<1&&i[c].v.match(/[Hh]/)&&(f=1),f<2&&i[c].v.match(/[Mm]/)&&(f=2),f<3&&i[c].v.match(/[Ss]/)&&(f=3)}switch(f){case 0:break;case 1:u.u>=.5&&(u.u=0,++u.S),u.S>=60&&(u.S=0,++u.M),u.M>=60&&(u.M=0,++u.H);break;case 2:u.u>=.5&&(u.u=0,++u.S),u.S>=60&&(u.S=0,++u.M);break}let g="",E;for(c=0;c0){g.charCodeAt(0)===40?(m=e<0&&g.charCodeAt(0)===45?-e:e,N=ht("(",g,m)):(m=e<0&&r>1?-e:e,N=ht("n",g,m),m<0&&i[0]&&i[0].t==="t"&&(N=N.substr(1),i[0].v="-"+i[0].v)),E=N.length-1;let R=i.length;for(c=0;c-1){R=c;break}let T=i.length;if(R===i.length&&N.indexOf("E")===-1){for(c=i.length-1;c>=0;--c)i[c]==null||"n?(".indexOf(i[c].t)===-1||(E>=i[c].v.length-1?(E-=i[c].v.length,i[c].v=N.substr(E+1,i[c].v.length)):E<0?i[c].v="":(i[c].v=N.substr(0,E+1),E=-1),i[c].t="t",T=c);E>=0&&T=0;--c)if(!(i[c]==null||"n?(".indexOf(i[c].t)===-1)){for(o=i[c].v.indexOf(".")>-1&&c===R?i[c].v.indexOf(".")-1:i[c].v.length-1,A=i[c].v.substr(o+1);o>=0;--o)E>=0&&(i[c].v.charAt(o)==="0"||i[c].v.charAt(o)==="#")&&(A=N.charAt(E--)+A);i[c].v=A,i[c].t="t",T=c}for(E>=0&&T-1&&c===R?i[c].v.indexOf(".")+1:0,A=i[c].v.substr(0,o);o-1&&(m=r>1&&e<0&&c>0&&i[c-1].v==="-"?-e:e,i[c].v=ht(i[c].t,i[c].v,m),i[c].t="t");let y="";for(c=0;c!==i.length;++c)i[c]!=null&&(y+=i[c].v);return y}_e._eval=So;const pi=/\[[=<>]/,di=/\[([=<>]*)(-?\d+\.?\d*)\]/;function vi(t,e){if(e==null)return!1;const n=parseFloat(e[2]);switch(e[1]){case"=":if(t===n)return!0;break;case">":if(t>n)return!0;break;case"<":if(t":if(t!==n)return!0;break;case">=":if(t>=n)return!0;break;case"<=":if(t<=n)return!0;break}return!1}function Na(t,e){let n=Po(t),r=n.length,i=n[r-1].indexOf("@");if(r<4&&i>-1&&--r,n.length>4)throw new Error("cannot find right format for |"+n.join("|")+"|");if(typeof e!="number")return[4,n.length===4||i>-1?n[n.length-1]:"@"];switch(n.length){case 1:n=i>-1?["General","General","General",n[0]]:[n[0],n[0],n[0],"@"];break;case 2:n=i>-1?[n[0],n[0],n[0],n[1]]:[n[0],n[1],n[0],"@"];break;case 3:n=i>-1?[n[0],n[1],n[0],n[2]]:[n[0],n[1],n[2],"@"];break}const a=e>0?n[0]:e<0?n[1]:n[2];if(n[0].indexOf("[")===-1&&n[1].indexOf("[")===-1)return[r,a];if(n[0].match(pi)!=null||n[1].match(pi)!=null){const c=n[0].match(di),h=n[1].match(di);return vi(e,c)?[r,n[0]]:vi(e,h)?[r,n[1]]:[r,n[c!=null&&h!=null?2:1]]}return[r,a]}function Bo(t,e,n){n==null&&(n={});let r="";switch(typeof t){case"string":t==="m/d/yy"&&n.dateNF?r=n.dateNF:r=t;break;case"number":t===14&&n.dateNF?r=n.dateNF:r=(n.table!=null?n.table:_t)[t];break}if(_n(r,0))return Pn(e,n);e instanceof Date&&(e=Uo(e,n.date1904));const i=Na(r,e);if(_n(i[1]))return Pn(e,n);if(e===!0)e="TRUE";else if(e===!1)e="FALSE";else if(e===""||e==null)return"";return So(i[1],e,n,i[0])}function Fo(t,e){if(typeof e!="number"){e=+e||-1;for(let n=0;n<392;++n){if(_t[n]===void 0){e<0&&(e=n);continue}if(_t[n]===t){e=n;break}}e<0&&(e=391)}return _t[e]=t,e}_e.load=Fo;_e._table=_t;_e.get_table=function(){return _t};_e.load_table=function(e){for(let n=0;n!==392;++n)e[n]!==void 0&&Fo(e[n],n)};_e.init_table=Oo;_e.format=Bo;var bo=_e,Do={exports:{}};(function(t){const e="ศูนย์บาทถ้วน",n=["","หนึ่ง","สอง","สาม","สี่","ห้า","หก","เจ็ด","แปด","เก้า"],r=["","สิบ","ร้อย","พัน","หมื่น","แสน","ล้าน"];function i(p){let u="";const o=p.length,s=7;if(o>s){const l=o-s+1,f=p.slice(0,l),v=p.slice(l);return i(f)+"ล้าน"+i(v)}else for(let l=0;l0&&(u+=n[f]+r[o-l-1])}return u}function a(p){let u=p;u=u.replace("หนึ่งสิบ","สิบ"),u=u.replace("สองสิบ","ยี่สิบ");const o=5;return u.length>o&&u.length-u.lastIndexOf("หนึ่ง")===o&&(u=u.substr(0,u.length-o)+"เอ็ด"),u}function c(p,u){let o="";return p===""&&u===""?o=e:p!==""&&u===""?o=p+"บาทถ้วน":p===""&&u!==""?o=u+"สตางค์":o=p+"บาท"+u+"สตางค์",o}function h(p){let u=e;if(isNaN(p)||p>=Number.MAX_SAFE_INTEGER)return u;const o=Math.floor(p).toString(),s=Math.round(p%1*100).toString(),l=Array.from(o).map(Number),f=Array.from(s).map(Number);let v=i(l),d=i(f);return v=a(v),d=a(d),u=c(v,d),u}t.exports!=null&&(t.exports=h)})(Do);var Aa=Do.exports;const Ce=he(),{FormulaHelpers:ya,Types:Y,WildCard:gi}=ge(),q=ya,hr=bo,Ta=Aa,Ei={latin:{halfRE:/[!-~]/g,fullRE:/[!-~]/g,delta:65248},hangul1:{halfRE:/[ᄀ-ᄒ]/g,fullRE:/[ᆨ-ᇂ]/g,delta:-60921},hangul2:{halfRE:/[ᅡ-ᅵ]/g,fullRE:/[ᅡ-ᅵ]/g,delta:-61025},kana:{delta:0,half:"。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚",full:"。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜"},extras:{delta:0,half:"¢£¬¯¦¥₩ |←↑→↓■°",full:"¢£¬ ̄¦¥₩ │←↑→↓■○"}},wa=t=>e=>t.delta?String.fromCharCode(e.charCodeAt(0)+t.delta):[...t.full][[...t.half].indexOf(e)],Ca=t=>e=>t.delta?String.fromCharCode(e.charCodeAt(0)-t.delta):[...t.half][[...t.full].indexOf(e)],Vo=(t,e)=>t[e+"RE"]||new RegExp("["+t[e]+"]","g"),Go=Object.keys(Ei).map(t=>Ei[t]),Ia=t=>Go.reduce((e,n)=>e.replace(Vo(n,"half"),wa(n)),t),Oa=t=>Go.reduce((e,n)=>e.replace(Vo(n,"full"),Ca(n)),t),ft={ASC:t=>(t=q.accept(t,Y.STRING),Oa(t)),BAHTTEXT:t=>{t=q.accept(t,Y.NUMBER);try{return Ta(t)}catch(e){throw Error(`Error in https://github.com/jojoee/bahttext +${e.toString()}`)}},CHAR:t=>{if(t=q.accept(t,Y.NUMBER),t>255||t<1)throw Ce.VALUE;return String.fromCharCode(t)},CLEAN:t=>(t=q.accept(t,Y.STRING),t.replace(/[\x00-\x1F]/g,"")),CODE:t=>{if(t=q.accept(t,Y.STRING),t.length===0)throw Ce.VALUE;return t.charCodeAt(0)},CONCAT:(...t)=>{let e="";return q.flattenParams(t,Y.STRING,!1,n=>{n=q.accept(n,Y.STRING),e+=n}),e},CONCATENATE:(...t)=>{let e="";if(t.length===0)throw Error("CONCATENATE need at least one argument.");return t.forEach(n=>{n=q.accept(n,Y.STRING),e+=n}),e},DBCS:t=>(t=q.accept(t,Y.STRING),Ia(t)),DOLLAR:(t,e)=>{t=q.accept(t,Y.NUMBER),e=q.accept(e,Y.NUMBER,2);const n=Array(e).fill("0").join("");return hr.format(`$#,##0.${n}_);($#,##0.${n})`,t).trim()},EXACT:(t,e)=>(t=q.accept(t,[Y.STRING]),e=q.accept(e,[Y.STRING]),t===e),FIND:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.STRING),n=q.accept(n,Y.NUMBER,1),n<1||n>e.length)throw Ce.VALUE;const r=e.indexOf(t,n-1);if(r===-1)throw Ce.VALUE;return r+1},FINDB:(...t)=>ft.FIND(...t),FIXED:(t,e,n)=>{t=q.accept(t,Y.NUMBER),e=q.accept(e,Y.NUMBER,2),n=q.accept(n,Y.BOOLEAN,!1);const r=Array(e).fill("0").join(""),i=n?"":"#,";return hr.format(`${i}##0.${r}_);(${i}##0.${r})`,t).trim()},LEFT:(t,e)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER,1),e<0)throw Ce.VALUE;return e>t.length?t:t.slice(0,e)},LEFTB:(...t)=>ft.LEFT(...t),LEN:t=>(t=q.accept(t,Y.STRING),t.length),LENB:(...t)=>ft.LEN(...t),LOWER:t=>(t=q.accept(t,Y.STRING),t.toLowerCase()),MID:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER),n=q.accept(n,Y.NUMBER),e>t.length)return"";if(e<1||n<1)throw Ce.VALUE;return t.slice(e-1,e+n-1)},MIDB:(...t)=>ft.MID(...t),NUMBERVALUE:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.STRING,"."),n=q.accept(n,Y.STRING,","),t.length===0)return 0;if(e.length===0||n.length===0||(e=e[0],n=n[0],e===n||t.indexOf(e)1||i&&!a||!i&&a||isNaN(h))throw Ce.VALUE;return h=h/100**c,i?-h:h},PHONETIC:()=>{},PROPER:t=>(t=q.accept(t,[Y.STRING]),t=t.toLowerCase(),t=t.charAt(0).toUpperCase()+t.slice(1),t.replace(/(?:[^a-zA-Z])([a-zA-Z])/g,e=>e.toUpperCase())),REPLACE:(t,e,n,r)=>{t=q.accept(t,[Y.STRING]),e=q.accept(e,[Y.NUMBER]),n=q.accept(n,[Y.NUMBER]),r=q.accept(r,[Y.STRING]);let i=t.split("");return i.splice(e-1,n,r),i.join("")},REPLACEB:(...t)=>ft.REPLACE(...t),REPT:(t,e)=>{t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER);let n="";for(let r=0;r{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.NUMBER,1),e<0)throw Ce.VALUE;const n=t.length;return e>n?t:t.slice(n-e)},RIGHTB:(...t)=>ft.RIGHT(...t),SEARCH:(t,e,n)=>{if(t=q.accept(t,Y.STRING),e=q.accept(e,Y.STRING),n=q.accept(n,Y.NUMBER,1),n<1||n>e.length)throw Ce.VALUE;let r=gi.isWildCard(t)?gi.toRegex(t,"i"):t;const i=e.slice(n-1).search(r);if(i===-1)throw Ce.VALUE;return i+n},SEARCHB:(...t)=>ft.SEARCH(...t),SUBSTITUTE:(...t)=>{},T:t=>(t=q.accept(t),typeof t=="string"?t:""),TEXT:(t,e)=>{t=q.accept(t,Y.NUMBER),e=q.accept(e,Y.STRING);try{return hr.format(e,t)}catch(n){throw console.error(n),Ce.VALUE}},TEXTJOIN:(...t)=>{},TRIM:t=>(t=q.accept(t,[Y.STRING]),t.replace(/^\s+|\s+$/g,"")),UNICHAR:t=>{if(t=q.accept(t,[Y.NUMBER]),t<=0)throw Ce.VALUE;return String.fromCharCode(t)},UNICODE:t=>ft.CODE(t)};var $o=ft;const tn=he(),{FormulaHelpers:kn}=ge(),Ma={unaryOp:(t,e,n)=>{let r=1;if(t.forEach(i=>{if(i!=="+")if(i==="-")r=-r;else throw new Error(`Unrecognized prefix: ${i}`)}),e==null&&(e=0),r===1)return e;try{e=kn.acceptNumber(e,n)}catch(i){if(i instanceof tn)Array.isArray(e)&&(e=e[0][0]);else throw i}return typeof e=="number"&&isNaN(e)?tn.VALUE:-e}},Ua={percentOp:(t,e,n)=>{try{t=kn.acceptNumber(t,n)}catch(r){if(r instanceof tn)return r;throw r}if(e==="%")return t/100;throw new Error(`Unrecognized postfix: ${e}`)}},At={boolean:3,string:2,number:1},La={compareOp:(t,e,n,r,i)=>{t==null&&(t=0),n==null&&(n=0),r&&(t=t[0][0]),i&&(n=n[0][0]);const a=typeof t,c=typeof n;if(a===c)switch(e){case"=":return t===n;case">":return t>n;case"<":return t":return t!==n;case"<=":return t<=n;case">=":return t>=n}else switch(e){case"=":return!1;case">":return At[a]>At[c];case"<":return At[a]":return!0;case"<=":return At[a]<=At[c];case">=":return At[a]>=At[c]}throw Error("Infix.compareOp: Should not reach here.")},concatOp:(t,e,n,r,i)=>{t==null&&(t=""),n==null&&(n=""),r&&(t=t[0][0]),i&&(n=n[0][0]);const a=typeof t,c=typeof n;return a==="boolean"&&(t=t?"TRUE":"FALSE"),c==="boolean"&&(n=n?"TRUE":"FALSE"),""+t+n},mathOp:(t,e,n,r,i)=>{t==null&&(t=0),n==null&&(n=0);try{t=kn.acceptNumber(t,r),n=kn.acceptNumber(n,i)}catch(a){if(a instanceof tn)return a;throw a}switch(e){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return n===0?tn.DIV0:t/n;case"^":return t**n}throw Error("Infix.mathOp: Should not reach here.")}};var Wr={Prefix:Ma,Postfix:Ua,Infix:La,Operators:{compareOp:["<",">","=","<>","<=",">="],concatOp:["&"],mathOp:["+","-","*","/","^"]}};const Q=he(),{FormulaHelpers:_a,Types:P,Factorials:Ho,Criteria:Pa}=ge(),{Infix:ka}=Wr,L=_a,pr=[],dr=[];function Cn(t){return t<=100?Ho[t]:pr[t]>0?pr[t]:pr[t]=Cn(t-1)*t}function Wo(t){return t===1||t===0?1:t===2?2:dr[t]>0?dr[t]:dr[t]=Wo(t-2)*t}const Pe={ABS:t=>(t=L.accept(t,P.NUMBER),Math.abs(t)),AGGREGATE:(t,e,n,...r)=>{},ARABIC:t=>{if(t=L.accept(t,P.STRING).toUpperCase(),!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(t))throw new Q("#VALUE!","Invalid roman numeral in ARABIC evaluation.");let e=0;return t.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g,function(n){e+={M:1e3,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1}[n]}),e},BASE:(t,e,n)=>{if(t=L.accept(t,P.NUMBER),t<0||t>=2**53||(e=L.accept(e,P.NUMBER),e<2||e>36)||(n=L.accept(n,P.NUMBER,0),n<0))throw Q.NUM;const r=t.toString(e).toUpperCase();return new Array(Math.max(n+1-r.length,0)).join("0")+r},CEILING:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)return 0;if(t/e%1===0)return t;const n=Math.abs(e),r=Math.floor(Math.abs(t)/n);return t<0?e<0?-n*(r+1):-n*r:(r+1)*n},"CEILING.MATH":(t,e,n)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,t>0?1:-1),n=L.accept(n,P.NUMBER,0),t>=0)return Pe.CEILING(t,e);const r=n?e:0;return Pe.CEILING(t,e)-r},"CEILING.PRECISE":(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,1),Pe.CEILING(t,Math.abs(e))),COMBIN:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),t<0||e<0||t{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),(t===0||t===1)&&e===0)return 1;if(t<0||e<0)throw Q.NUM;return Pe.COMBIN(t+e-1,t-1)},DECIMAL:(t,e)=>{if(t=L.accept(t,P.STRING),e=L.accept(e,P.NUMBER),e=Math.trunc(e),e<2||e>36)throw Q.NUM;const n=parseInt(t,e);if(isNaN(n))throw Q.NUM;return n},DEGREES:t=>(t=L.accept(t,P.NUMBER),t*(180/Math.PI)),EVEN:t=>Pe.CEILING(t,-2),EXP:t=>(t=L.accept(t,P.NUMBER),Math.exp(t)),FACT:t=>{if(t=L.accept(t,P.NUMBER),t=Math.trunc(t),t>170||t<0)throw Q.NUM;return t<=100?Ho[t]:Cn(t)},FACTDOUBLE:t=>{if(t=L.accept(t,P.NUMBER),t=Math.trunc(t),t<-1)throw Q.NUM;return t===-1?1:Wo(t)},FLOOR:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)return 0;if(t>0&&e<0)throw Q.NUM;if(t/e%1===0)return t;const n=Math.abs(e),r=Math.floor(Math.abs(t)/n);return t<0?e<0?-n*r:-n*(r+1):r*n},"FLOOR.MATH":(t,e,n)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,t>0?1:-1),n=L.accept(n,P.NUMBER,0),n===0||t>=0?Pe.FLOOR(t,Math.abs(e)):Pe.FLOOR(t,e)+e),"FLOOR.PRECISE":(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,1),Pe.FLOOR(t,Math.abs(e))),GCD:(...t)=>{const e=[];L.flattenParams(t,null,!1,c=>{if(c=typeof c=="boolean"?NaN:Number(c),isNaN(c))throw Q.VALUE;if(c<0||c>9007199254740990)throw Q.NUM;e.push(Math.trunc(c))},0);let n,r,i=t.length,a=Math.abs(e[0]);for(n=1;nr?a%=r:r%=a;a+=r}return a},INT:t=>(t=L.accept(t,P.NUMBER),Math.floor(t)),"ISO.CEILING":(...t)=>Pe["CEILING.PRECISE"](...t),LCM:(...t)=>{const e=[];L.flattenParams(t,null,!1,i=>{if(i=typeof i=="boolean"?NaN:Number(i),isNaN(i))throw Q.VALUE;if(i<0||i>9007199254740990)throw Q.NUM;e.push(Math.trunc(i))},1);let n=e.length,r=Math.abs(e[0]);for(let i=1;ia?r%=a:a%=r;r=Math.abs(c*e[i])/(r+a)}return r},LN:t=>(t=L.accept(t,P.NUMBER),Math.log(t)),LOG:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,10),Math.log(t)/Math.log(e)),LOG10:t=>(t=L.accept(t,P.NUMBER),Math.log10(t)),MDETERM:t=>{if(t=L.accept(t,P.ARRAY,void 0,!1,!0),t[0].length!==t.length)throw Q.VALUE;const e=t.length,n=t[0].length;let r=0,i,a;if(e===1)return t[0][0];if(e===2)return t[0][0]*t[1][1]-t[0][1]*t[1][0];for(let c=0;c{},MMULT:(t,e)=>{t=L.accept(t,P.ARRAY,void 0,!1,!0),e=L.accept(e,P.ARRAY,void 0,!1,!0);const n=t.length,r=t[0].length,i=e.length,a=e[0].length,c=new Array(n);if(r!==i)throw Q.VALUE;for(let h=0;h{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)throw Q.DIV0;return t-e*Pe.INT(t/e)},MROUND:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),e===0)return 0;if(t>0&&e<0||t<0&&e>0)throw Q.NUM;return t/e%1===0?t:Math.round(t/e)*e},MULTINOMIAL:(...t)=>{let e=0,n=1;return L.flattenParams(t,P.NUMBER,!1,r=>{if(r<0)throw Q.NUM;e+=r,n*=Cn(r)}),Cn(e)/n},MUNIT:t=>{t=L.accept(t,P.NUMBER);const e=[];for(let n=0;n{if(t=L.accept(t,P.NUMBER),t===0)return 1;let e=Math.ceil(Math.abs(t));return e=e&1?e:e+1,t>0?e:-e},PI:()=>Math.PI,POWER:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),t**e),PRODUCT:(...t)=>{let e=1;return L.flattenParams(t,null,!0,(n,r)=>{const i=Number(n);r.isLiteral&&!isNaN(i)?e*=i:typeof n=="number"&&(e*=n)},1),e},QUOTIENT:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),Math.trunc(t/e)),RADIANS:t=>(t=L.accept(t,P.NUMBER),t/180*Math.PI),RAND:()=>Math.random(),RANDBETWEEN:(t,e)=>(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),Math.floor(Math.random()*(e-t+1)+t)),ROMAN:(t,e)=>{if(t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER,0),e!==0)throw Error("ROMAN: only allows form=0 (classic form).");const n=String(t).split(""),r=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];let i="",a=3;for(;a--;)i=(r[+n.pop()+a*10]||"")+i;return new Array(+n.join("")+1).join("M")+i},ROUND:(t,e)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER);const n=Math.pow(10,Math.abs(e)),r=t>0?1:-1;return e>0?r*Math.round(Math.abs(t)*n)/n:e===0?r*Math.round(Math.abs(t)):r*Math.round(Math.abs(t)/n)*n},ROUNDDOWN:(t,e)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER);const n=Math.pow(10,Math.abs(e)),r=t>0?1:-1;if(e>0){const i=1/n*.5;return r*Math.round((Math.abs(t)-i)*n)/n}else{if(e===0)return r*Math.round(Math.abs(t)-.5);{const i=n*.5;return r*Math.round((Math.abs(t)-i)/n)*n}}},ROUNDUP:(t,e)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER);const n=Math.pow(10,Math.abs(e)),r=t>0?1:-1;if(e>0){const i=1/n*.5;return r*Math.round((Math.abs(t)+i)*n)/n}else{if(e===0)return r*Math.round(Math.abs(t)+.5);{const i=n*.5;return r*Math.round((Math.abs(t)+i)/n)*n}}},SERIESSUM:(t,e,n,r)=>{t=L.accept(t,P.NUMBER),e=L.accept(e,P.NUMBER),n=L.accept(n,P.NUMBER);let i=0,a;return L.flattenParams([r],P.NUMBER,!1,c=>{if(typeof c!="number")throw Q.VALUE;i===0?a=c*Math.pow(t,e):a+=c*Math.pow(t,e+i*n),i++}),a},SIGN:t=>(t=L.accept(t,P.NUMBER),t>0?1:t===0?0:-1),SQRT:t=>{if(t=L.accept(t,P.NUMBER),t<0)throw Q.NUM;return Math.sqrt(t)},SQRTPI:t=>{if(t=L.accept(t,P.NUMBER),t<0)throw Q.NUM;return Math.sqrt(t*Math.PI)},SUBTOTAL:()=>{},SUM:(...t)=>{let e=0;return L.flattenParams(t,P.NUMBER,!0,(n,r)=>{(r.isLiteral||typeof n=="number")&&(e+=n)}),e},SUMIF:(t,e,n,r)=>{const i=L.retrieveRanges(t,e,r);e=i[0],r=i[1],n=L.retrieveArg(t,n);const a=n.isArray;n=Pa.parse(L.accept(n));let c=0;return e.forEach((h,p)=>{h.forEach((u,o)=>{const s=r[p][o];typeof s=="number"&&(n.op==="wc"?n.match===n.value.test(u)&&(c+=s):ka.compareOp(u,n.op,n.value,Array.isArray(u),a)&&(c+=s))})}),c},SUMIFS:()=>{},SUMPRODUCT:(t,...e)=>{t=L.accept(t,P.ARRAY,void 0,!1,!0),e.forEach(r=>{if(r=L.accept(r,P.ARRAY,void 0,!1,!0),t[0].length!==r[0].length||t.length!==r.length)throw Q.VALUE;for(let i=0;i{r.forEach(i=>{n+=i})}),n},SUMSQ:(...t)=>{let e=0;return L.flattenParams(t,P.NUMBER,!0,(n,r)=>{(r.isLiteral||typeof n=="number")&&(e+=n**2)}),e},SUMX2MY2:(t,e)=>{const n=[],r=[];let i=0;if(L.flattenParams([t],null,!1,(a,c)=>{n.push(a)}),L.flattenParams([e],null,!1,(a,c)=>{r.push(a)}),n.length!==r.length)throw Q.NA;for(let a=0;a{const n=[],r=[];let i=0;if(L.flattenParams([t],null,!1,(a,c)=>{n.push(a)}),L.flattenParams([e],null,!1,(a,c)=>{r.push(a)}),n.length!==r.length)throw Q.NA;for(let a=0;a{const n=[],r=[];let i=0;if(L.flattenParams([t],null,!1,(a,c)=>{n.push(a)}),L.flattenParams([e],null,!1,(a,c)=>{r.push(a)}),n.length!==r.length)throw Q.NA;for(let a=0;a(t=L.accept(t,P.NUMBER),Math.trunc(t))};var qo=Pe;const Ie=he(),{FormulaHelpers:xa,Types:ie}=ge(),oe=xa,$t=2**27-1,Sa={ACOS:t=>{if(t=oe.accept(t,ie.NUMBER),t>1||t<-1)throw Ie.NUM;return Math.acos(t)},ACOSH:t=>{if(t=oe.accept(t,ie.NUMBER),t<1)throw Ie.NUM;return Math.acosh(t)},ACOT:t=>(t=oe.accept(t,ie.NUMBER),Math.PI/2-Math.atan(t)),ACOTH:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)<=1)throw Ie.NUM;return Math.atanh(1/t)},ASIN:t=>{if(t=oe.accept(t,ie.NUMBER),t>1||t<-1)throw Ie.NUM;return Math.asin(t)},ASINH:t=>(t=oe.accept(t,ie.NUMBER),Math.asinh(t)),ATAN:t=>(t=oe.accept(t,ie.NUMBER),Math.atan(t)),ATAN2:(t,e)=>{if(t=oe.accept(t,ie.NUMBER),e=oe.accept(e,ie.NUMBER),e===0&&t===0)throw Ie.DIV0;return Math.atan2(e,t)},ATANH:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>1)throw Ie.NUM;return Math.atanh(t)},COS:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return Math.cos(t)},COSH:t=>(t=oe.accept(t,ie.NUMBER),Math.cosh(t)),COT:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;if(t===0)throw Ie.DIV0;return 1/Math.tan(t)},COTH:t=>{if(t=oe.accept(t,ie.NUMBER),t===0)throw Ie.DIV0;return 1/Math.tanh(t)},CSC:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return 1/Math.sin(t)},CSCH:t=>{if(t=oe.accept(t,ie.NUMBER),t===0)throw Ie.DIV0;return 1/Math.sinh(t)},SEC:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return 1/Math.cos(t)},SECH:t=>(t=oe.accept(t,ie.NUMBER),1/Math.cosh(t)),SIN:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return Math.sin(t)},SINH:t=>(t=oe.accept(t,ie.NUMBER),Math.sinh(t)),TAN:t=>{if(t=oe.accept(t,ie.NUMBER),Math.abs(t)>$t)throw Ie.NUM;return Math.tan(t)},TANH:t=>(t=oe.accept(t,ie.NUMBER),Math.tanh(t))};var Ba=Sa;const yt=he(),{FormulaHelpers:Fa,Types:vr}=ge(),ze=Fa;function gr(t){let e=0,n=0;return ze.flattenParams(t,null,!0,r=>{const i=typeof r;i==="string"?r==="TRUE"?r=!0:r==="FALSE"&&(r=!1):i==="number"&&(r=!!r),typeof r=="boolean"&&(r===!0?e++:n++)}),[e,n]}const ba={AND:(...t)=>{const[e,n]=gr(t);return e===0&&n===0?yt.VALUE:e>0&&n===0},FALSE:()=>!1,IF:(t,e,n,r)=>(e=ze.accept(e,vr.BOOLEAN),n=ze.accept(n),r=ze.accept(r,null,!1),e?n:r),IFERROR:(t,e)=>t.value instanceof yt?ze.accept(e):ze.accept(t),IFNA:function(t,e){if(arguments.length>2)throw yt.TOO_MANY_ARGS("IFNA");return yt.NA.equals(t.value)?ze.accept(e):ze.accept(t)},IFS:(...t)=>{if(t.length%2!==0)return new yt("#N/A","IFS expects all arguments after position 0 to be in pairs.");for(let e=0;e(t=ze.accept(t,vr.BOOLEAN),!t),OR:(...t)=>{const[e,n]=gr(t);return e===0&&n===0?yt.VALUE:e>0},SWITCH:(...t)=>{},TRUE:()=>!0,XOR:(...t)=>{const[e,n]=gr(t);return e===0&&n===0?yt.VALUE:e%2===1}};var Da=ba,Yo={};(function(t){(function(e){e(typeof DO_NOT_EXPORT_BESSEL>"u"?t:{})})(function(e){e.version="1.0.2";var n=Math;function r(o,s){for(var l=0,f=0;lT)w=i(R,T,d(R),N(R),-1);else{for(var C=2*n.floor((T+n.floor(n.sqrt(40*T)))/2),M=!1,_=0,W=0,F=1,S=0,G=2/R,J=C;J>0;J--)S=J*G*F-_,_=F,F=S,n.abs(F)>1e10&&(F*=1e-10,_*=1e-10,w*=1e-10,W*=1e-10),M&&(W+=F),M=!M,J==T&&(w=_);W=2*W-F,w/=W}return w}}(),h=function(){var o=.636619772,s=[-2957821389,7062834065,-5123598036e-1,1087988129e-2,-86327.92757,228.4622733].reverse(),l=[40076544269,7452499648e-1,7189466438e-3,47447.2647,226.1030244,1].reverse(),f=[1,-.001098628627,2734510407e-14,-2073370639e-15,2093887211e-16].reverse(),v=[-.01562499995,.0001430488765,-6911147651e-15,7621095161e-16,-934945152e-16].reverse();function d(y){var R=0,T=0,w=0,C=y*y,M=y-.785398164;return y<8?(T=r(s,C),w=r(l,C),R=T/w+o*c(y,0)*n.log(y)):(C=64/C,T=r(f,C),w=r(v,C),R=n.sqrt(o/y)*(n.sin(M)*T+n.cos(M)*w*8/y)),R}var g=[-4900604943e3,127527439e4,-51534381390,7349264551e-1,-4237922726e-3,8511.937935].reverse(),E=[249958057e5,424441966400,3733650367,2245904002e-2,102042.605,354.9632885,1].reverse(),A=[1,.00183105,-3516396496e-14,2457520174e-15,-240337019e-15].reverse(),m=[.04687499995,-.0002002690873,8449199096e-15,-88228987e-14,105787412e-15].reverse();function N(y){var R=0,T=0,w=0,C=y*y,M=y-2.356194491;return y<8?(T=y*r(g,C),w=r(E,C),R=T/w+o*(c(y,1)*n.log(y)-1/y)):(C=64/C,T=r(A,C),w=r(m,C),R=n.sqrt(o/y)*(n.sin(M)*T+n.cos(M)*w*8/y)),R}return a(d,N,"BESSELY",1,-1)}(),p=function(){var o=[1,3.5156229,3.0899424,1.2067492,.2659732,.0360768,.0045813].reverse(),s=[.39894228,.01328592,.00225319,-.00157565,.00916281,-.02057706,.02635537,-.01647633,.00392377].reverse();function l(g){return g<=3.75?r(o,g*g/(3.75*3.75)):n.exp(n.abs(g))/n.sqrt(n.abs(g))*r(s,3.75/n.abs(g))}var f=[.5,.87890594,.51498869,.15084934,.02658733,.00301532,32411e-8].reverse(),v=[.39894228,-.03988024,-.00362018,.00163801,-.01031555,.02282967,-.02895312,.01787654,-.00420059].reverse();function d(g){return g<3.75?g*r(f,g*g/(3.75*3.75)):(g<0?-1:1)*n.exp(n.abs(g))/n.sqrt(n.abs(g))*r(v,3.75/n.abs(g))}return function g(E,A){if(A=Math.round(A),A===0)return l(E);if(A===1)return d(E);if(A<0)return NaN;if(n.abs(E)===0)return 0;if(E==1/0)return 1/0;var m=0,N,y=2/n.abs(E),R=0,T=1,w=0,C=2*n.round((A+n.round(n.sqrt(40*A)))/2);for(N=C;N>0;N--)w=N*y*T+R,R=T,T=w,n.abs(T)>1e10&&(T*=1e-10,R*=1e-10,m*=1e-10),N==A&&(m=R);return m*=g(E,0)/T,E<0&&A%2?-m:m}}(),u=function(){var o=[-.57721566,.4227842,.23069756,.0348859,.00262698,1075e-7,74e-7].reverse(),s=[1.25331414,-.07832358,.02189568,-.01062446,.00587872,-.0025154,53208e-8].reverse();function l(g){return g<=2?-n.log(g/2)*p(g,0)+r(o,g*g/4):n.exp(-g)/n.sqrt(g)*r(s,2/g)}var f=[1,.15443144,-.67278579,-.18156897,-.01919402,-.00110404,-4686e-8].reverse(),v=[1.25331414,.23498619,-.0365562,.01504268,-.00780353,.00325614,-68245e-8].reverse();function d(g){return g<=2?n.log(g/2)*p(g,1)+1/g*r(f,g*g/4):n.exp(-g)/n.sqrt(g)*r(v,2/g)}return a(l,d,"BESSELK",2,1)}();e.besselj=c,e.bessely=h,e.besseli=p,e.besselk=u})})(Yo);var Ko={exports:{}};(function(t,e){(function(n,r){t.exports=r()})(Io,function(){var n=function(r,i){var a=Array.prototype.concat,c=Array.prototype.slice,h=Object.prototype.toString;function p(A,m){var N=A>m?A:m;return r.pow(10,17-~~(r.log(N>0?N:-N)*r.LOG10E))}var u=Array.isArray||function(m){return h.call(m)==="[object Array]"};function o(A){return h.call(A)==="[object Function]"}function s(A){return typeof A=="number"?A-A===0:!1}function l(A){return a.apply([],A)}function f(){return new f._init(arguments)}f.fn=f.prototype,f._init=function(m){if(u(m[0]))if(u(m[0][0])){o(m[1])&&(m[0]=f.map(m[0],m[1]));for(var N=0;N=0;N--,R++)y[R]=[m[R][N]];return y},f.transpose=function(m){var N=[],y,R,T,w,C;for(u(m[0])||(m=[m]),R=m.length,T=m[0].length,C=0;C0&&(C[R][0]=m[R][0]),M=1;MN&&y>0)return[];if(y>0)for(T=m;TN;T+=y)R.push(T);return R},f.slice=function(){function A(N,y,R,T){var w,C=[],M=N.length;if(y===i&&R===i&&T===i)return f.copy(N);if(y=y||0,R=R||N.length,y=y>=0?y:M+y,R=R>=0?R:M+R,T=T||1,y===R||T===0)return[];if(yR&&T>0)return[];if(T>0)for(w=y;wR;w+=T)C.push(N[w]);return C}function m(N,y){var R,T;if(y=y||{},s(y.row)){if(s(y.col))return N[y.row][y.col];var w=f.rowa(N,y.row);return R=y.col||{},A(w,R.start,R.end,R.step)}if(s(y.col)){var C=f.cola(N,y.col);return T=y.row||{},A(C,T.start,T.end,T.step)}T=y.row||{},R=y.col||{};var M=A(N,T.start,T.end,T.step);return M.map(function(_){return A(_,R.start,R.end,R.step)})}return m}(),f.sliceAssign=function(m,N,y){var R,T;if(s(N.row)){if(s(N.col))return m[N.row][N.col]=y;N.col=N.col||{},N.col.start=N.col.start||0,N.col.end=N.col.end||m[0].length,N.col.step=N.col.step||1,R=f.arange(N.col.start,r.min(m.length,N.col.end),N.col.step);var w=N.row;return R.forEach(function(M,_){m[w][M]=y[_]}),m}if(s(N.col)){N.row=N.row||{},N.row.start=N.row.start||0,N.row.end=N.row.end||m.length,N.row.step=N.row.step||1,T=f.arange(N.row.start,r.min(m[0].length,N.row.end),N.row.step);var C=N.col;return T.forEach(function(M,_){m[M][C]=y[_]}),m}return y[0].length===i&&(y=[y]),N.row.start=N.row.start||0,N.row.end=N.row.end||m.length,N.row.step=N.row.step||1,N.col.start=N.col.start||0,N.col.end=N.col.end||m[0].length,N.col.step=N.col.step||1,T=f.arange(N.row.start,r.min(m.length,N.row.end),N.row.step),R=f.arange(N.col.start,r.min(m[0].length,N.col.end),N.col.step),T.forEach(function(M,_){R.forEach(function(W,F){m[M][W]=y[_][F]})}),m},f.diagonal=function(m){var N=f.zeros(m.length,m.length);return m.forEach(function(y,R){N[R][R]=y}),N},f.copy=function(m){return m.map(function(N){return s(N)?N:N.map(function(y){return y})})};var E=f.prototype;return E.length=0,E.push=Array.prototype.push,E.sort=Array.prototype.sort,E.splice=Array.prototype.splice,E.slice=Array.prototype.slice,E.toArray=function(){return this.length>1?c.call(this):c.call(this)[0]},E.map=function(m,N){return f(f.map(this,m,N))},E.cumreduce=function(m,N){return f(f.cumreduce(this,m,N))},E.alter=function(m){return f.alter(this,m),this},function(A){for(var m=0;m=0;)s+=o[l];return s},r.sumsqrd=function(o){for(var s=0,l=o.length;--l>=0;)s+=o[l]*o[l];return s},r.sumsqerr=function(o){for(var s=r.mean(o),l=0,f=o.length,v;--f>=0;)v=o[f]-s,l+=v*v;return l},r.sumrow=function(o){for(var s=0,l=o.length;--l>=0;)s+=o[l];return s},r.product=function(o){for(var s=1,l=o.length;--l>=0;)s*=o[l];return s},r.min=function(o){for(var s=o[0],l=0;++ls&&(s=o[l]);return s},r.unique=function(o){for(var s={},l=[],f=0;fv?(g=[l[E]],v=f,d=0):f===v&&(g.push(l[E]),d++),f=1);return d===0?g[0]:g},r.range=function(o){return r.max(o)-r.min(o)},r.variance=function(o,s){return r.sumsqerr(o)/(o.length-(s?1:0))},r.pooledvariance=function(o){var s=o.reduce(function(f,v){return f+r.sumsqerr(v)},0),l=o.reduce(function(f,v){return f+v.length},0);return s/(l-o.length)},r.deviation=function(u){for(var o=r.mean(u),s=u.length,l=new Array(s),f=0;f=0;f--)l.push(i.abs(o[f]-s));return r.mean(l)},r.meddev=function(o){for(var s=r.median(o),l=[],f=o.length-1;f>=0;f--)l.push(i.abs(o[f]-s));return r.median(l)},r.coeffvar=function(o){return r.stdev(o)/r.mean(o)},r.quartiles=function(o){var s=o.length,l=o.slice().sort(c);return[l[i.round(s/4)-1],l[i.round(s/2)-1],l[i.round(s*3/4)-1]]},r.quantiles=function(o,s,l,f){var v=o.slice().sort(c),d=[s.length],g=o.length,E,A,m,N,y,R;for(typeof l>"u"&&(l=3/8),typeof f>"u"&&(f=3/8),E=0;E1){for(g=l===!0?this:this.transpose();d1){for(s!=="sumrow"&&(g=l===!0?this:this.transpose());d1){for(v=v.transpose();f=0;l--)s*=p,s+=v[l];if(o=s/h+.5*i.log(u)+(h-.5)*i.log(h)-h,c<=7)for(l=1;l<=f;l++)o-=i.log(h-1),h-=1;return o},r.gammafn=function(c){var h=[-1.716185138865495,24.76565080557592,-379.80425647094563,629.3311553128184,866.9662027904133,-31451.272968848367,-36144.413418691176,66456.14382024054],p=[-30.8402300119739,315.35062697960416,-1015.1563674902192,-3107.771671572311,22538.11842098015,4755.846277527881,-134659.9598649693,-115132.2596755535],u=!1,o=0,s=0,l=0,f=c,v,d,g,E;if(c>171.6243769536076)return 1/0;if(f<=0)if(E=f%1+36e-17,E)u=(f&1?-1:1)*i.PI/i.sin(i.PI*E),f=1-f;else return 1/0;for(g=f,f<1?d=f++:d=(f-=o=(f|0)-1)-1,v=0;v<8;++v)l=(l+h[v])*d,s=s*d+p[v];if(E=l/s+1,gf)for(v=0;v=1?c:1/c)*8.5+c*.4+17),A;if(h<0||c<=0)return NaN;if(h170||h>170?i.exp(r.combinationln(c,h)):r.factorial(c)/r.factorial(h)/r.factorial(c-h)},r.combinationln=function(c,h){return r.factorialln(c)-r.factorialln(h)-r.factorialln(c-h)},r.permutation=function(c,h){return r.factorial(c)/r.factorial(c-h)},r.betafn=function(c,h){if(!(c<=0||h<=0))return c+h>170?i.exp(r.betaln(c,h)):r.gammafn(c)*r.gammafn(h)/r.gammafn(c+h)},r.betaln=function(c,h){return r.gammaln(c)+r.gammaln(h)-r.gammaln(c+h)},r.betacf=function(c,h,p){var u=1e-30,o=1,s=h+p,l=h+1,f=h-1,v=1,d=1-s*c/l,g,E,A,m;for(i.abs(d)=1)return i.max(100,h+100*i.sqrt(h));if(c<=0)return 0;for(h>1?(E=i.log(u),A=i.exp(u*(E-1)-s),g=c<.5?c:1-c,v=i.sqrt(-2*i.log(g)),l=(2.30753+v*.27061)/(1+v*(.99229+v*.04481))-v,c<.5&&(l=-l),l=i.max(.001,h*i.pow(1-1/(9*h)-l/(3*i.sqrt(h)),3))):(v=1-h*(.253+h*.12),c1?v=A*i.exp(-(l-u)+u*(i.log(l)-E)):v=i.exp(-l+u*i.log(l)-s),d=f/v,l-=v=d/(1-.5*i.min(1,d*((h-1)/l-1))),l<=0&&(l=.5*(l+v)),i.abs(v)0;p--)v=o,o=f*o-s+h[p],s=v;return d=l*i.exp(-c*c+.5*(h[0]+f*o)-s),u?d-1:1-d},r.erfc=function(c){return 1-r.erf(c)},r.erfcinv=function(c){var h=0,p,u,o,s;if(c>=2)return-100;if(c<=0)return 100;for(s=c<1?c:2-c,o=i.sqrt(-2*i.log(s/2)),p=-.70711*((2.30753+o*.27061)/(1+o*(.99229+o*.04481))-o);h<2;h++)u=r.erfc(p)-s,p+=u/(1.1283791670955126*i.exp(-p*p)-p*u);return c<1?p:-p},r.ibetainv=function(c,h,p){var u=1e-8,o=h-1,s=p-1,l=0,f,v,d,g,E,A,m,N,y,R,T;if(c<=0)return 0;if(c>=1)return 1;for(h>=1&&p>=1?(d=c<.5?c:1-c,g=i.sqrt(-2*i.log(d)),m=(2.30753+g*.27061)/(1+g*(.99229+g*.04481))-g,c<.5&&(m=-m),N=(m*m-3)/6,y=2/(1/(2*h-1)+1/(2*p-1)),R=m*i.sqrt(N+y)/y-(1/(2*p-1)-1/(2*h-1))*(N+5/6-2/(3*y)),m=h/(h+p*i.exp(2*R))):(f=i.log(h/(h+p)),v=i.log(p/(h+p)),g=i.exp(h*f)/h,E=i.exp(p*v)/p,R=g+E,c=1&&(m=.5*(m+g+1)),i.abs(g)0)break}return m},r.ibeta=function(c,h,p){var u=c===0||c===1?0:i.exp(r.gammaln(h+p)-r.gammaln(h)-r.gammaln(p)+h*i.log(c)+p*i.log(1-c));return c<0||c>1?!1:c<(h+1)/(h+p+2)?u*r.betacf(c,h,p)/h:1-u*r.betacf(1-c,p,h)/p},r.randn=function(c,h){var p,u,o,s,l;if(h||(h=c),c)return r.create(c,h,function(){return r.randn()});do p=r._random_fn(),u=1.7156*(r._random_fn()-.5),o=p-.449871,s=i.abs(u)+.386595,l=o*o+s*(.196*s-.25472*o);while(l>.27597&&(l>.27846||u*u>-4*i.log(p)*p*p));return u/p},r.randg=function(c,h,p){var u=c,o,s,l,f,v,d;if(p||(p=h),c||(c=1),h)return d=r.zeros(h,p),d.alter(function(){return r.randg(c)}),d;c<1&&(c+=1),o=c-1/3,s=1/i.sqrt(9*o);do{do v=r.randn(),f=1+s*v;while(f<=0);f=f*f*f,l=r._random_fn()}while(l>1-.331*i.pow(v,4)&&i.log(l)>.5*v*v+o*(1-f+i.log(f)));if(c==u)return o*f;do l=r._random_fn();while(l===0);return i.pow(l,1/u)*o*f},function(a){for(var c=0;c1||o<0?0:s==1&&l==1?1:s<512&&l<512?i.pow(o,s-1)*i.pow(1-o,l-1)/r.betafn(s,l):i.exp((s-1)*i.log(o)+(l-1)*i.log(1-o)-r.betaln(s,l))},cdf:function(o,s,l){return o>1||o<0?(o>1)*1:r.ibeta(o,s,l)},inv:function(o,s,l){return r.ibetainv(o,s,l)},mean:function(o,s){return o/(o+s)},median:function(o,s){return r.ibetainv(.5,o,s)},mode:function(o,s){return(o-1)/(o+s-2)},sample:function(o,s){var l=r.randg(o);return l/(l+r.randg(s))},variance:function(o,s){return o*s/(i.pow(o+s,2)*(o+s+1))}}),r.extend(r.centralF,{pdf:function(o,s,l){var f,v,d;return o<0?0:s<=2?o===0&&s<2?1/0:o===0&&s===2?1:1/r.betafn(s/2,l/2)*i.pow(s/l,s/2)*i.pow(o,s/2-1)*i.pow(1+s/l*o,-(s+l)/2):(f=s*o/(l+o*s),v=l/(l+o*s),d=s*v/2,d*r.binomial.pdf((s-2)/2,(s+l-2)/2,f))},cdf:function(o,s,l){return o<0?0:r.ibeta(s*o/(s*o+l),s/2,l/2)},inv:function(o,s,l){return l/(s*(1/r.ibetainv(o,s/2,l/2)-1))},mean:function(o,s){return s>2?s/(s-2):void 0},mode:function(o,s){return o>2?s*(o-2)/(o*(s+2)):void 0},sample:function(o,s){var l=r.randg(o/2)*2,f=r.randg(s/2)*2;return l/o/(f/s)},variance:function(o,s){if(!(s<=4))return 2*s*s*(o+s-2)/(o*(s-2)*(s-2)*(s-4))}}),r.extend(r.cauchy,{pdf:function(o,s,l){return l<0?0:l/(i.pow(o-s,2)+i.pow(l,2))/i.PI},cdf:function(o,s,l){return i.atan((o-s)/l)/i.PI+.5},inv:function(u,o,s){return o+s*i.tan(i.PI*(u-.5))},median:function(o){return o},mode:function(o){return o},sample:function(o,s){return r.randn()*i.sqrt(1/(2*r.randg(.5)))*s+o}}),r.extend(r.chisquare,{pdf:function(o,s){return o<0?0:o===0&&s===2?.5:i.exp((s/2-1)*i.log(o)-o/2-s/2*i.log(2)-r.gammaln(s/2))},cdf:function(o,s){return o<0?0:r.lowRegGamma(s/2,o/2)},inv:function(u,o){return 2*r.gammapinv(u,.5*o)},mean:function(u){return u},median:function(o){return o*i.pow(1-2/(9*o),3)},mode:function(o){return o-2>0?o-2:0},sample:function(o){return r.randg(o/2)*2},variance:function(o){return 2*o}}),r.extend(r.exponential,{pdf:function(o,s){return o<0?0:s*i.exp(-s*o)},cdf:function(o,s){return o<0?0:1-i.exp(-s*o)},inv:function(u,o){return-i.log(1-u)/o},mean:function(u){return 1/u},median:function(u){return 1/u*i.log(2)},mode:function(){return 0},sample:function(o){return-1/o*i.log(r._random_fn())},variance:function(u){return i.pow(u,-2)}}),r.extend(r.gamma,{pdf:function(o,s,l){return o<0?0:o===0&&s===1?1/l:i.exp((s-1)*i.log(o)-o/l-r.gammaln(s)-s*i.log(l))},cdf:function(o,s,l){return o<0?0:r.lowRegGamma(s,o/l)},inv:function(u,o,s){return r.gammapinv(u,o)*s},mean:function(u,o){return u*o},mode:function(o,s){if(o>1)return(o-1)*s},sample:function(o,s){return r.randg(o)*s},variance:function(o,s){return o*s*s}}),r.extend(r.invgamma,{pdf:function(o,s,l){return o<=0?0:i.exp(-(s+1)*i.log(o)-l/o-r.gammaln(s)+s*i.log(l))},cdf:function(o,s,l){return o<=0?0:1-r.lowRegGamma(s,l/o)},inv:function(u,o,s){return s/r.gammapinv(1-u,o)},mean:function(u,o){return u>1?o/(u-1):void 0},mode:function(o,s){return s/(o+1)},sample:function(o,s){return s/r.randg(o)},variance:function(o,s){if(!(o<=2))return s*s/((o-1)*(o-1)*(o-2))}}),r.extend(r.kumaraswamy,{pdf:function(o,s,l){return o===0&&s===1?l:o===1&&l===1?s:i.exp(i.log(s)+i.log(l)+(s-1)*i.log(o)+(l-1)*i.log(1-i.pow(o,s)))},cdf:function(o,s,l){return o<0?0:o>1?1:1-i.pow(1-i.pow(o,s),l)},inv:function(o,s,l){return i.pow(1-i.pow(1-o,1/l),1/s)},mean:function(u,o){return o*r.gammafn(1+1/u)*r.gammafn(o)/r.gammafn(1+1/u+o)},median:function(o,s){return i.pow(1-i.pow(2,-1/s),1/o)},mode:function(o,s){if(o>=1&&s>=1&&o!==1&&s!==1)return i.pow((o-1)/(o*s-1),1/o)},variance:function(){throw new Error("variance not yet implemented")}}),r.extend(r.lognormal,{pdf:function(o,s,l){return o<=0?0:i.exp(-i.log(o)-.5*i.log(2*i.PI)-i.log(l)-i.pow(i.log(o)-s,2)/(2*l*l))},cdf:function(o,s,l){return o<0?0:.5+.5*r.erf((i.log(o)-s)/i.sqrt(2*l*l))},inv:function(u,o,s){return i.exp(-1.4142135623730951*s*r.erfcinv(2*u)+o)},mean:function(o,s){return i.exp(o+s*s/2)},median:function(o){return i.exp(o)},mode:function(o,s){return i.exp(o-s*s)},sample:function(o,s){return i.exp(r.randn()*s+o)},variance:function(o,s){return(i.exp(s*s)-1)*i.exp(2*o+s*s)}}),r.extend(r.noncentralt,{pdf:function(o,s,l){var f=1e-14;return i.abs(l)f||E>f;)A=E,N>0&&(y*=l*l/(2*N),R*=l*l/(2*(N+1/2))),E=y*r.beta.cdf(m,N+.5,s/2)+R*r.beta.cdf(m,N+1,s/2),g+=.5*E,N++;return d?1-g:g}}),r.extend(r.normal,{pdf:function(o,s,l){return i.exp(-.5*i.log(2*i.PI)-i.log(l)-i.pow(o-s,2)/(2*l*l))},cdf:function(o,s,l){return .5*(1+r.erf((o-s)/i.sqrt(2*l*l)))},inv:function(u,o,s){return-1.4142135623730951*s*r.erfcinv(2*u)+o},mean:function(u){return u},median:function(o){return o},mode:function(u){return u},sample:function(o,s){return r.randn()*s+o},variance:function(u,o){return o*o}}),r.extend(r.pareto,{pdf:function(o,s,l){return o1e100?1e100:s,1/(i.sqrt(s)*r.betafn(.5,s/2))*i.pow(1+o*o/s,-((s+1)/2))},cdf:function(o,s){var l=s/2;return r.ibeta((o+i.sqrt(o*o+s))/(2*i.sqrt(o*o+s)),l,l)},inv:function(u,o){var s=r.ibetainv(2*i.min(u,1-u),.5*o,.5);return s=i.sqrt(o*(1-s)/s),u>.5?s:-s},mean:function(o){return o>1?0:void 0},median:function(){return 0},mode:function(){return 0},sample:function(o){return r.randn()*i.sqrt(o/(2*r.randg(o/2)))},variance:function(o){return o>2?o/(o-2):o>1?1/0:void 0}}),r.extend(r.weibull,{pdf:function(o,s,l){return o<0||s<0||l<0?0:l/s*i.pow(o/s,l-1)*i.exp(-i.pow(o/s,l))},cdf:function(o,s,l){return o<0?0:1-i.exp(-i.pow(o/s,l))},inv:function(u,o,s){return o*i.pow(-i.log(1-u),1/s)},mean:function(u,o){return u*r.gammafn(1+1/o)},median:function(o,s){return o*i.pow(i.log(2),1/s)},mode:function(o,s){return s<=1?0:o*i.pow((s-1)/s,1/s)},sample:function(o,s){return o*i.pow(-i.log(r._random_fn()),1/s)},variance:function(o,s){return o*o*r.gammafn(1+2/s)-i.pow(r.weibull.mean(o,s),2)}}),r.extend(r.uniform,{pdf:function(o,s,l){return ol?0:1/(l-s)},cdf:function(o,s,l){return ol;)A=d,m=-(o+E)*(o+s+E)*u/(o+2*E)/(o+2*E+1),f=d+m*f,v=g+m*v,E=E+1,m=E*(s-E)*u/(o+2*E-1)/(o+2*E),d=f+m*d,g=v+m*g,f=f/g,v=v/g,d=d/g,g=1;return d/o}r.extend(r.binomial,{pdf:function(o,s,l){return l===0||l===1?s*l===o?1:0:r.combination(s,o)*i.pow(l,o)*i.pow(1-l,s-o)},cdf:function(o,s,l){var f,v=1e-10;if(o<0)return 0;if(o>=s)return 1;if(l<0||l>1||s<=0)return NaN;o=i.floor(o);var d=l,g=o+1,E=s-o,A=g+E,m=i.exp(r.gammaln(A)-r.gammaln(E)-r.gammaln(g)+g*i.log(d)+E*i.log(1-d));return d<(g+1)/(A+2)?f=m*a(d,g,E,v):f=1-m*a(1-d,E,g,v),i.round((1-f)*(1/v))/(1/v)}}),r.extend(r.negbin,{pdf:function(o,s,l){return o!==o>>>0?!1:o<0?0:r.combination(o+s-1,s-1)*i.pow(1-l,o)*i.pow(l,s)},cdf:function(o,s,l){var f=0,v=0;if(o<0)return 0;for(;v<=o;v++)f+=r.negbin.pdf(v,s,l);return f}}),r.extend(r.hypgeom,{pdf:function(o,s,l,f){if(o!==o|0)return!1;if(o<0||of||o>l)return 0;if(l*2>s)return f*2>s?r.hypgeom.pdf(s-l-f+o,s,s-l,s-f):r.hypgeom.pdf(f-o,s,s-l,f);if(f*2>s)return r.hypgeom.pdf(l-o,s,l,s-f);if(l1&&d=f||o>=l)return 1;if(l*2>s)return f*2>s?r.hypgeom.cdf(s-l-f+o,s,s-l,s-f):1-r.hypgeom.cdf(f-o-1,s,s-l,f);if(f*2>s)return 1-r.hypgeom.cdf(l-o-1,s,l,s-f);if(l1&&gf);return l-1},sampleLarge:function(o){var s=o,l,f,v,d,g,E,A,m,N,y;for(d=i.sqrt(s),g=i.log(s),A=.931+2.53*d,E=-.059+.02483*A,m=1.1239+1.1328/(A-3.4),N=.9277-3.6224/(A-2);;){if(f=i.random()-.5,v=i.random(),y=.5-i.abs(f),l=i.floor((2*E/y+A)*f+s+.43),y>=.07&&v<=N)return l;if(!(l<0||y<.013&&v>y)&&i.log(v)+i.log(m)-i.log(E/(y*y)+A)<=-s+l*g-r.loggam(l+1))return l}},sample:function(o){return o<10?this.sampleSmall(o):this.sampleLarge(o)}}),r.extend(r.triangular,{pdf:function(o,s,l,f){return l<=s||fl?NaN:ol?0:ol?NaN:o<=s?0:o>=l?1:o<=f?i.pow(o-s,2)/((l-s)*(f-s)):1-i.pow(l-o,2)/((l-s)*(l-f))},inv:function(o,s,l,f){return l<=s||fl?NaN:o<=(f-s)/(l-s)?s+(l-s)*i.sqrt(o*((f-s)/(l-s))):s+(l-s)*(1-i.sqrt((1-o)*(1-(f-s)/(l-s))))},mean:function(o,s,l){return(o+s+l)/3},median:function(o,s,l){if(l<=(o+s)/2)return s-i.sqrt((s-o)*(s-l))/i.sqrt(2);if(l>(o+s)/2)return o+i.sqrt((s-o)*(l-o))/i.sqrt(2)},mode:function(o,s,l){return l},sample:function(o,s,l){var f=r._random_fn();return f<(l-o)/(s-o)?o+i.sqrt(f*(s-o)*(l-o)):s-i.sqrt((1-f)*(s-o)*(s-l))},variance:function(o,s,l){return(o*o+s*s+l*l-o*s-o*l-s*l)/18}}),r.extend(r.arcsine,{pdf:function(o,s,l){return l<=s?NaN:o<=s||o>=l?0:2/i.PI*i.pow(i.pow(l-s,2)-i.pow(2*o-s-l,2),-.5)},cdf:function(o,s,l){return o=E)return 1;var w=2*r.normal.cdf(T,0,1,1,0)-1;w>=i.exp(d/s)?w=i.pow(w,s):w=0;var C;u>A?C=m:C=N;for(var M=T,_=(E-T)/C,W=M+_,F=0,S=s-1,G=1;G<=C;G++){for(var J=0,le=.5*(W+M),nt=.5*(W-M),Ae=1;Ae<=l;Ae++){var Be,Fe;fg)break;var Et=2*r.normal.cdf(Ee,0,1,1,0),bt=2*r.normal.cdf(Ee,u,1,1,0),mt=Et*.5-bt*.5;mt>=i.exp(v/S)&&(mt=R[Be-1]*i.exp(-(.5*ue))*i.pow(mt,S),J+=mt)}J*=2*nt*s/i.sqrt(2*i.PI),F+=J,M=W,W+=_}return w+=F,w<=i.exp(v/o)?0:(w=i.pow(w,o),w>=1?1:w)}function p(u,o,s){var l=.322232421088,f=.099348462606,v=-1,d=.588581570495,g=-.342242088547,E=.531103462366,A=-.204231210125,m=.10353775285,N=-453642210148e-16,y=.0038560700634,R=.8832,T=.2368,w=1.214,C=1.208,M=1.4142,_=120,W=.5-.5*u,F=i.sqrt(i.log(1/(W*W))),S=F+((((F*N+A)*F+g)*F+v)*F+l)/((((F*y+m)*F+E)*F+d)*F+f);s<_&&(S+=(S*S*S+S)/s/4);var G=R-T*S;return s<_&&(G+=-w/s+C*S/s),S*(G*i.log(o-1)+M)}r.extend(r.tukey,{cdf:function(o,s,l){var f=1,v=s,d=16,g=8,E=-30,A=1e-14,m=100,N=800,y=5e3,R=25e3,T=1,w=.5,C=.25,M=.125,_=[.9894009349916499,.9445750230732326,.8656312023878318,.755404408355003,.6178762444026438,.45801677765722737,.2816035507792589,.09501250983763744],W=[.027152459411754096,.062253523938647894,.09515851168249279,.12462897125553388,.14959598881657674,.16915651939500254,.18260341504492358,.1894506104550685];if(o<=0)return 0;if(l<2||f<1||v<2)return NaN;if(!Number.isFinite(o))return 1;if(l>R)return h(o,f,v);var F=l*.5,S=F*i.log(l)-l*i.log(2)-r.gammaln(F),G=F-1,J=l*.25,le;l<=m?le=T:l<=N?le=w:l<=y?le=C:le=M,S+=i.log(le);for(var nt=0,Ae=1;Ae<=50;Ae++){for(var Be=0,Fe=(2*Ae-1)*le,rt=1;rt<=d;rt++){var Ee,ue;g=E){g=1&&Be<=A)break;nt+=Be}if(Be>A)throw new Error("tukey.cdf failed to converge");return nt>1&&(nt=1),nt},inv:function(u,o,s){var l=1,f=o,v=1e-4,d=50;if(s<2||l<1||f<2)return NaN;if(u<0||u>1)return NaN;if(u===0)return 0;if(u===1)return 1/0;var g=p(u,f,s),E=r.tukey.cdf(g,o,s)-u,A;E>0?A=i.max(0,g-1):A=g+1;for(var m=r.tukey.cdf(A,o,s)-u,N,y=1;ys&&(l[f-1][v-1]=u[f][v])}var d=s%2?-1:1;o+=p(l)*u[0][s]*d}return o},gauss_elimination:function(u,o){var s=0,l=0,f=u.length,v=u[0].length,d=1,g=0,E=[],A,m,N,y;for(u=r.aug(u,o),A=u[0].length,s=0;s=0;s--){for(g=0,l=s+1;l<=f-1;l++)g=g+E[l]*u[s][l];E[s]=(u[s][A-1]-g)/u[s][s]}return E},gauss_jordan:function(u,o){var s=r.aug(u,o),l=s.length,f=s[0].length,v=0,d,g,E;for(g=0;gi.abs(s[A][g])&&(A=E);var m=s[g];for(s[g]=s[A],s[A]=m,E=g+1;E=0;g--){for(v=s[g][g],E=0;Eg-1;d--)s[E][d]-=s[g][d]*s[E][g]/v;for(s[g][g]/=v,d=l;dv?(g[f][v]=u[f][v],E[f][v]=A[f][v]=0):fl;)m=R,R=r.add(r.multiply(y,m),N),f++;return R},gauss_seidel:function(u,o,s,l){for(var f=0,v=u.length,d=[],g=[],E=[],A,m,N,y,R;fA?(d[f][A]=u[f][A],g[f][A]=E[f][A]=0):fl;)m=R,R=r.add(r.multiply(y,m),N),f=f+1;return R},SOR:function(u,o,s,l,f){for(var v=0,d=u.length,g=[],E=[],A=[],m,N,y,R,T;vm?(g[v][m]=u[v][m],E[v][m]=A[v][m]=0):vl;)N=T,T=r.add(r.multiply(R,N),y),v++;return T},householder:function(u){for(var o=u.length,s=u[0].length,l=0,f=[],v=[],d,g,E,A,m;l0?-1:1,d=m*i.sqrt(d),g=i.sqrt((d*d-u[l+1][l]*d)/2),f=r.zeros(o,1),f[l+1][0]=(u[l+1][l]-d)/(2*g),E=l+2;E0?i.PI/4:-i.PI/4:N=i.atan(2*u[E][A]/(u[E][E]-u[A][A]))/2,y=r.identity(s,s),y[E][E]=i.cos(N),y[E][A]=-i.sin(N),y[A][E]=i.sin(N),y[A][A]=i.cos(N),l=r.multiply(l,y),v=r.multiply(r.multiply(r.inv(y),u),y),u=v,o=0,d=1;d.001&&(o=1)}for(d=0;d=v;)A=f(u,s+l),m=f(u,s),g[d]=(o[A]-2*o[m]+o[2*m-A])/(l*l),l/=2,d++;for(y=g.length,N=1;y!=1;){for(R=0;Rs);v++);return v-=1,o[v]+(s-u[v])*N[v]+r.sq(s-u[v])*A[v]+(s-u[v])*r.sq(s-u[v])*y[v]},gauss_quadrature:function(){throw new Error("gauss_quadrature not yet implemented")},PCA:function(u){var o=u.length,s=u[0].length,l=0,f,v,d=[],g=[],E=[],A=[],m=[],N=[],y=[],R=[],T=[],w=[];for(l=0;l2?(s=r.zscore(o[0],o[1],o[2]),o[3]===1?r.normal.cdf(-i.abs(s),0,1):r.normal.cdf(-i.abs(s),0,1)*2):(s=o[0],o[1]===1?r.normal.cdf(-i.abs(s),0,1):r.normal.cdf(-i.abs(s),0,1)*2)}}),r.extend(r.fn,{zscore:function(o,s){return(o-this.mean())/this.stdev(s)},ztest:function(o,s,l){var f=i.abs(this.zscore(o,l));return s===1?r.normal.cdf(-f,0,1):r.normal.cdf(-f,0,1)*2}}),r.extend({tscore:function(){var o=a.call(arguments);return o.length===4?(o[0]-o[1])/(o[2]/i.sqrt(o[3])):(o[0]-r.mean(o[1]))/(r.stdev(o[1],!0)/i.sqrt(o[1].length))},ttest:function(){var o=a.call(arguments),s;return o.length===5?(s=i.abs(r.tscore(o[0],o[1],o[2],o[3])),o[4]===1?r.studentt.cdf(-s,o[3]-1):r.studentt.cdf(-s,o[3]-1)*2):c(o[1])?(s=i.abs(o[0]),o[2]==1?r.studentt.cdf(-s,o[1]-1):r.studentt.cdf(-s,o[1]-1)*2):(s=i.abs(r.tscore(o[0],o[1])),o[2]==1?r.studentt.cdf(-s,o[1].length-1):r.studentt.cdf(-s,o[1].length-1)*2)}}),r.extend(r.fn,{tscore:function(o){return(o-this.mean())/(this.stdev(!0)/i.sqrt(this.cols()))},ttest:function(o,s){return s===1?1-r.studentt.cdf(i.abs(this.tscore(o)),this.cols()-1):r.studentt.cdf(-i.abs(this.tscore(o)),this.cols()-1)*2}}),r.extend({anovafscore:function(){var o=a.call(arguments),s,l,f,v,d,g,E,A;if(o.length===1){for(d=new Array(o[0].length),E=0;E1||s>1||u<=0||s<=0)throw new Error("Proportions should be greater than 0 and less than 1");var f=(u*o+s*l)/(o+l),v=i.sqrt(f*(1-f)*(1/o+1/l));return(u-s)/v}r.extend(r.fn,{oneSidedDifferenceOfProportions:function(o,s,l,f){var v=p(o,s,l,f);return r.ztest(v,1)},twoSidedDifferenceOfProportions:function(o,s,l,f){var v=p(o,s,l,f);return r.ztest(v,2)}})}(n,Math),n.models=function(){function r(p){var u=p[0].length,o=n.arange(u).map(function(s){var l=n.arange(u).filter(function(f){return f!==s});return i(n.col(p,s).map(function(f){return f[0]}),n.col(p,l))});return o}function i(p,u){var o=p.length,s=u[0].length-1,l=o-s-1,f=n.lstsq(u,p),v=n.multiply(u,f.map(function(y){return[y]})).map(function(y){return y[0]}),d=n.subtract(p,v),g=n.mean(p),E=n.sum(v.map(function(y){return Math.pow(y-g,2)})),A=n.sum(p.map(function(y,R){return Math.pow(y-v[R],2)})),m=E+A,N=E/m;return{exog:u,endog:p,nobs:o,df_model:s,df_resid:l,coef:f,predict:v,resid:d,ybar:g,SST:m,SSE:E,SSR:A,R2:N}}function a(p){var u=r(p.exog),o=Math.sqrt(p.SSR/p.df_resid),s=u.map(function(g){var E=g.SST,A=g.R2;return o/Math.sqrt(E*(1-A))}),l=p.coef.map(function(g,E){return(g-0)/s[E]}),f=l.map(function(g){var E=n.studentt.cdf(g,p.df_resid);return(E>.5?1-E:E)*2}),v=n.studentt.inv(.975,p.df_resid),d=p.coef.map(function(g,E){var A=v*s[E];return[g-A,g+A]});return{se:s,t:l,p:f,sigmaHat:o,interval95:d}}function c(p){var u=p.R2/p.df_model/((1-p.R2)/p.df_resid),o=function(l,f,v){return n.beta.cdf(l/(v/f+l),f/2,v/2)},s=1-o(u,p.df_model,p.df_resid);return{F_statistic:u,pvalue:s}}function h(p,u){var o=i(p,u),s=a(o),l=c(o),f=1-(1-o.R2)*((o.nobs-1)/o.df_resid);return o.t=s,o.f=l,o.adjust_R2=f,o}return{ols:h}}(),n.extend({buildxmatrix:function(){for(var i=new Array(arguments.length),a=0;a1){for(u=[],c=0;c{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.besseli(t,e)},BESSELJ:(t,e)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.besselj(t,e)},BESSELK:(t,e)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.besselk(t,e)},BESSELY:(t,e)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),e=Math.trunc(e),e<0)throw D.NUM;return dn.bessely(t,e)},BIN2DEC:t=>{t=b.accept(t,H.NUMBER_NO_BOOLEAN);let e=t.toString();if(e.length>10)throw D.NUM;return e.length===10&&e.substring(0,1)==="1"?parseInt(e.substring(1),2)+vn:parseInt(e,2)},BIN2HEX:(t,e)=>{t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,null);const n=t.toString();if(n.length>10)throw D.NUM;if(n.length===10&&n.substring(0,1)==="1")return(parseInt(n.substring(1),2)+0xfffffffe00).toString(16).toUpperCase();const r=parseInt(t,2).toString(16);if(e==null)return r.toUpperCase();if(e<0)throw D.NUM;if(e=Math.trunc(e),e>=r.length)return(Ke.REPT("0",e-r.length)+r).toUpperCase();throw D.NUM},BIN2OCT:(t,e)=>{t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER,null);let n=t.toString();if(n.length>10)throw D.NUM;if(n.length===10&&n.substr(0,1)==="1")return(parseInt(n.substr(1),2)+1073741312).toString(8);let r=parseInt(t,2).toString(8);if(e==null)return r.toUpperCase();if(e<0)throw D.NUM;if(e=Math.trunc(e),e>=r.length)return Ke.REPT("0",e-r.length)+r;throw D.NUM},BITAND:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),t<0||e<0||Math.floor(t)!==t||Math.floor(e)!==e||t>0xffffffffffff||e>0xffffffffffff)throw D.NUM;return t&e},BITLSHIFT:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),e=Math.trunc(e),Math.abs(e)>53||t<0||Math.floor(t)!==t||t>0xffffffffffff)throw D.NUM;const n=e>=0?t*2**e:Math.trunc(t/2**-e);if(n>0xffffffffffff)throw D.NUM;return n},BITOR:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),t<0||e<0||Math.floor(t)!==t||Math.floor(e)!==e||t>0xffffffffffff||e>0xffffffffffff)throw D.NUM;return t|e},BITRSHIFT:(t,e)=>(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),K.BITLSHIFT(t,-e)),BITXOR:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER),t<0||t>0xffffffffffff||Math.floor(t)!==t||e<0||e>0xffffffffffff||Math.floor(e)!==e)throw D.NUM;return t^e},COMPLEX:(t,e,n)=>{if(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN),n=b.accept(n,H.STRING,"i"),n!=="i"&&n!=="j")throw D.VALUE;if(t===0&&e===0)return 0;if(t===0)return e===1?n:e===-1?"-"+n:e.toString()+n;if(e===0)return t.toString();{let r=e>0?"+":"";return e===1?t.toString()+r+n:e===-1?t.toString()+r+"-"+n:t.toString()+r+e.toString()+n}},DEC2BIN:(t,e)=>{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER,null),tEr)throw D.NUM;if(t<0)return"1"+Ke.REPT("0",9-(512+t).toString(2).length)+(512+t).toString(2);let n=parseInt(t,10).toString(2);if(e==null)return n;if(e=Math.trunc(e),e<=0||e{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER,null),t<-549755813888||t>549755813888)throw D.NUM;if(t<0)return(1099511627776+t).toString(16).toUpperCase();let n=parseInt(t,10).toString(16);if(e==null)return n.toUpperCase();if(e=Math.trunc(e),e<=0||e{if(t=b.accept(t,H.NUMBER),e=b.accept(e,H.NUMBER,null),t<-536870912||t>536870912)throw D.NUM;if(t<0)return(t+1073741824).toString(8);let n=parseInt(t,10).toString(8);if(e==null)return n.toUpperCase();if(e=Math.trunc(e),e<=0||e(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,0),t===e?1:0),ERF:(t,e)=>(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,0),mi.erf(t)),ERFC:t=>(t=b.accept(t,H.NUMBER_NO_BOOLEAN),mi.erfc(t)),GESTEP:(t,e)=>(t=b.accept(t,H.NUMBER_NO_BOOLEAN),e=b.accept(e,H.NUMBER_NO_BOOLEAN,0),t>=e?1:0),HEX2BIN:(t,e)=>{if(t=b.accept(t,H.STRING),e=b.accept(e,H.NUMBER,null),t.length>10||!/^[0-9a-fA-F]*$/.test(t))throw D.NUM;let n=t.length===10&&t.substr(0,1).toLowerCase()==="f",r=n?parseInt(t,16)-1099511627776:parseInt(t,16);if(rEr)throw D.NUM;if(n)return"1"+Ke.REPT("0",9-(r+512).toString(2).length)+(r+512).toString(2);let i=r.toString(2);if(e==null)return i;if(e=Math.trunc(e),e<=0||e{if(t=b.accept(t,H.STRING),t.length>10||!/^[0-9a-fA-F]*$/.test(t))throw D.NUM;let e=parseInt(t,16);return e>=549755813888?e-1099511627776:e},HEX2OCT:(t,e)=>{if(t=b.accept(t,H.STRING),t.length>10||!/^[0-9a-fA-F]*$/.test(t))throw D.NUM;let n=K.HEX2DEC(t);if(n>Ga||n<$a)throw D.NUM;return K.DEC2OCT(n,e)},IMABS:t=>{const{real:e,im:n}=re(t);return Math.sqrt(Math.pow(e,2)+Math.pow(n,2))},IMAGINARY:t=>re(t).im,IMARGUMENT:t=>{const{real:e,im:n}=re(t);if(e===0&&n===0)throw D.DIV0;return e===0&&n>0?Math.PI/2:e===0&&n<0?-Math.PI/2:e<0&&n===0?Math.PI:e>0&&n===0?0:e>0?Math.atan(n/e):e<0&&n>0?Math.atan(n/e)+Math.PI:Math.atan(n/e)-Math.PI},IMCONJUGATE:t=>{const{real:e,im:n,unit:r}=re(t);return n!==0?K.COMPLEX(e,-n,r):""+e},IMCOS:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.cos(e)*(Math.exp(n)+Math.exp(-n))/2,a=-Math.sin(e)*(Math.exp(n)-Math.exp(-n))/2;return K.COMPLEX(i,a,r)},IMCOSH:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.cos(n)*(Math.exp(e)+Math.exp(-e))/2,a=-Math.sin(n)*(Math.exp(e)-Math.exp(-e))/2;return K.COMPLEX(i,-a,r)},IMCOT:t=>{t=b.accept(t);let e=K.IMCOS(t),n=K.IMSIN(t);return K.IMDIV(e,n)},IMCSC:t=>(t=b.accept(t),K.IMDIV("1",K.IMSIN(t))),IMCSCH:t=>(t=b.accept(t),K.IMDIV("1",K.IMSINH(t))),IMDIV:(t,e)=>{const n=re(t),r=n.real,i=n.im,a=n.unit,c=re(e),h=c.real,p=c.im,u=c.unit;if(h===0&&p===0||a!==u)throw D.NUM;let o=a,s=Math.pow(h,2)+Math.pow(p,2);return K.COMPLEX((r*h+i*p)/s,(i*h-r*p)/s,o)},IMEXP:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.exp(e);return K.COMPLEX(i*Math.cos(n),i*Math.sin(n),r)},IMLN:t=>{const{real:e,im:n,unit:r}=re(t);return K.COMPLEX(Math.log(Math.sqrt(Math.pow(e,2)+Math.pow(n,2))),Math.atan(n/e),r)},IMLOG10:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.log(Math.sqrt(Math.pow(e,2)+Math.pow(n,2)))/Math.log(10),a=Math.atan(n/e)/Math.log(10);return K.COMPLEX(i,a,r)},IMLOG2:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.log(Math.sqrt(Math.pow(e,2)+Math.pow(n,2)))/Math.log(2),a=Math.atan(n/e)/Math.log(2);return K.COMPLEX(i,a,r)},IMPOWER:(t,e)=>{let{unit:n}=re(t);e=b.accept(e,H.NUMBER_NO_BOOLEAN);let r=Math.pow(K.IMABS(t),e),i=K.IMARGUMENT(t),a=r*Math.cos(e*i),c=r*Math.sin(e*i);return K.COMPLEX(a,c,n)},IMPRODUCT:(...t)=>{let e,n=0;return b.flattenParams(t,null,!1,r=>{if(n===0)e=b.accept(r),re(e);else{const i=re(e),a=i.real,c=i.im,h=i.unit,p=re(r),u=p.real,o=p.im,s=p.unit;if(h!==s)throw D.VALUE;e=K.COMPLEX(a*u-c*o,a*o+c*u)}n++},1),e},IMREAL:t=>re(t).real,IMSEC:t=>K.IMDIV("1",K.IMCOS(t)),IMSECH:t=>K.IMDIV("1",K.IMCOSH(t)),IMSIN:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.sin(e)*(Math.exp(n)+Math.exp(-n))/2,a=Math.cos(e)*(Math.exp(n)-Math.exp(-n))/2;return K.COMPLEX(i,a,r)},IMSINH:t=>{const{real:e,im:n,unit:r}=re(t);let i=Math.cos(n)*(Math.exp(e)-Math.exp(-e))/2,a=Math.sin(n)*(Math.exp(e)+Math.exp(-e))/2;return K.COMPLEX(i,a,r)},IMSQRT:t=>{const{unit:e}=re(t);let n=Math.sqrt(K.IMABS(t)),r=K.IMARGUMENT(t);return K.COMPLEX(n*Math.cos(r/2),n*Math.sin(r/2),e)},IMSUB:(t,e)=>{const n=re(t),r=n.real,i=n.im,a=n.unit,c=re(e),h=c.real,p=c.im,u=c.unit;if(a!==u)throw D.VALUE;return K.COMPLEX(r-h,i-p,a)},IMSUM:(...t)=>{let e=0,n=0,r;return b.flattenParams(t,null,!1,i=>{const{real:a,im:c,unit:h}=re(i);if(r||(r=h),r!==h)throw D.VALUE;e+=a,n+=c}),K.COMPLEX(e,n,r)},IMTAN:t=>{const{unit:e}=re(t);return K.IMDIV(K.IMSIN(t),K.IMCOS(t),e)},OCT2BIN:(t,e)=>{if(t=b.accept(t,H.STRING),e=b.accept(e,H.NUMBER,null),t.length>10||e>10||e!==null&&e<0)throw D.NUM;e=Math.trunc(e);let n=t.length===10&&t.substring(0,1)==="7",r=K.OCT2DEC(t);if(rEr)return D.NUM;if(n)return"1"+Ke.REPT("0",9-(512+r).toString(2).length)+(512+r).toString(2);let i=r.toString(2);if(e===0)return i;if(e{if(t=b.accept(t,H.STRING),t.length>10)throw D.NUM;for(const n of t)if(n<"0"||n>"7")throw D.NUM;let e=parseInt(t,8);return e>=536870912?e-1073741824:e},OCT2HEX:(t,e)=>{if(t=b.accept(t,H.STRING),e=b.accept(e,H.NUMBER_NO_BOOLEAN,null),t.length>10)throw D.NUM;for(const i of t)if(i<"0"||i>"7")throw D.NUM;if(e=Math.trunc(e),e<0||e>10)throw D.NUM;let n=K.OCT2DEC(t),r=K.DEC2HEX(n);if(e===0)return r;if(e{if(t=X.accept(t,Oe.NUMBER),e=X.accept(e,Oe.NUMBER),n=X.accept(n,Oe.NUMBER,1),r=X.accept(r,Oe.BOOLEAN,!0),i=X.accept(i,Oe.STRING,""),t<1||e<1||n<1||n>4)throw te.VALUE;let a="";return i.length>0&&(/[^A-Za-z_.\d\u007F-\uFFFF]/.test(i)?a+=`'${i}'!`:a+=i+"!"),r?(a+=n===1||n===3?"$":"",a+=za.columnNumberToName(e),a+=n===1||n===2?"$":"",a+=t):(a+="R",a+=n===4||n===3?`[${t}]`:t,a+="C",a+=n===4||n===2?`[${e}]`:e),a},AREAS:t=>(t=X.accept(t),t instanceof Ri?t.length:1),CHOOSE:(t,...e)=>{},COLUMN:(t,e)=>{if(e==null){if(t.position.col!=null)return t.position.col;throw Error("FormulaParser.parse is called without position parameter.")}else{if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return e.ref.col;if(X.isRangeRef(e))return e.ref.from.col;throw Error("ReferenceFunctions.COLUMN should not reach here.")}},COLUMNS:(t,e)=>{if(e==null)throw Error("COLUMNS requires one argument");if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return 1;if(X.isRangeRef(e))return Math.abs(e.ref.from.col-e.ref.to.col)+1;throw Error("ReferenceFunctions.COLUMNS should not reach here.")},HLOOKUP:(t,e,n,r)=>{t=X.accept(t);try{e=X.accept(e,Oe.ARRAY,void 0,!1)}catch(a){throw a instanceof te?te.NA:a}if(n=X.accept(n,Oe.NUMBER),r=X.accept(r,Oe.BOOLEAN,!0),n<1)throw te.VALUE;if(e[n-1]===void 0)throw te.REF;const i=typeof t;if(r){let a=i===typeof e[0][0]?e[0][0]:null;for(let c=1;ct&&h>t)throw te.NA;if(h===t)return e[n-1][c];if(a!=null&&h>t&&a<=t)return e[n-1][c-1];a=h}}if(a==null)throw te.NA;return a}else{let a=-1;if(gn.isWildCard(t)?a=e[0].findIndex(c=>gn.toRegex(t,"i").test(c)):a=e[0].findIndex(c=>c===t),a===-1)throw te.NA;return e[n-1][a]}},INDEX:(t,e,n,r,i)=>{n=t.utils.extractRefValue(n),n={value:n.val,isArray:n.isArray},n=X.accept(n,Oe.NUMBER),n=Math.trunc(n),r==null?r=1:(r=t.utils.extractRefValue(r),r={value:r.val,isArray:r.isArray},r=X.accept(r,Oe.NUMBER,1),r=Math.trunc(r)),i==null?i=1:(i=t.utils.extractRefValue(i),i={value:i.val,isArray:i.isArray},i=X.accept(i,Oe.NUMBER,1),i=Math.trunc(i));let a=e;if(e instanceof Ri)a=e.refs[i-1];else if(i>1)throw te.REF;if(n===0&&r===0)return a;if(n===0){if(X.isRangeRef(a)){if(a.ref.to.col-a.ref.from.colc.push([h[r-1]])),c}}if(r===0){if(X.isRangeRef(a)){if(a.ref.to.row-a.ref.from.row1||r>1)throw te.REF;return{ref:{row:a.row+n-1,col:a.col+r-1}}}else if(Array.isArray(a)){if(a.length{},ROW:(t,e)=>{if(e==null){if(t.position.row!=null)return t.position.row;throw Error("FormulaParser.parse is called without position parameter.")}else{if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return e.ref.row;if(X.isRangeRef(e))return e.ref.from.row;throw Error("ReferenceFunctions.ROW should not reach here.")}},ROWS:(t,e)=>{if(e==null)throw Error("ROWS requires one argument");if(typeof e!="object"||Array.isArray(e))throw te.VALUE;if(X.isCellRef(e))return 1;if(X.isRangeRef(e))return Math.abs(e.ref.from.row-e.ref.to.row)+1;throw Error("ReferenceFunctions.ROWS should not reach here.")},TRANSPOSE:t=>{t=X.accept(t,Oe.ARRAY,void 0,!1);const e=[];for(let n=0;n{t=X.accept(t);try{e=X.accept(e,Oe.ARRAY,void 0,!1)}catch(a){throw a instanceof te?te.NA:a}if(n=X.accept(n,Oe.NUMBER),r=X.accept(r,Oe.BOOLEAN,!0),n<1)throw te.VALUE;if(e[0][n-1]===void 0)throw te.REF;const i=typeof t;if(r){let a=i===typeof e[0][0]?e[0][0]:null;for(let c=1;ct&&p>t)throw te.NA;if(p===t)return h[n-1];if(a!=null&&p>t&&a<=t)return e[c-1][n-1];a=p}}if(a==null)throw te.NA;return a}else{let a=-1;if(gn.isWildCard(t)?a=e.findIndex(c=>gn.toRegex(t,"i").test(c[0])):a=e.findIndex(c=>c[0]===t),a===-1)throw te.NA;return e[a][n-1]}}};var Qa=Xa;const lt=he(),{FormulaHelpers:Za,Types:Ja}=ge(),me=Za,ja={"#NULL!":1,"#DIV/0!":2,"#VALUE!":3,"#REF!":4,"#NAME?":5,"#NUM!":6,"#N/A":7},ec={CELL:(t,e)=>{},"ERROR.TYPE":t=>{if(t=me.accept(t),t instanceof lt)return ja[t.toString()];throw lt.NA},INFO:()=>{},ISBLANK:t=>t.ref?t.value==null||t.value==="":!1,ISERR:t=>(t=me.accept(t),t instanceof lt&&t.toString()!=="#N/A"),ISERROR:t=>(t=me.accept(t),t instanceof lt),ISEVEN:t=>(t=me.accept(t,Ja.NUMBER),t=Math.trunc(t),t%2===0),ISLOGICAL:t=>(t=me.accept(t),typeof t=="boolean"),ISNA:t=>(t=me.accept(t),t instanceof lt&&t.toString()==="#N/A"),ISNONTEXT:t=>(t=me.accept(t),typeof t!="string"),ISNUMBER:t=>(t=me.accept(t),typeof t=="number"),ISREF:t=>!t.ref||me.isCellRef(t)&&(t.ref.row>1048576||t.ref.col>16384)||me.isRangeRef(t)&&(t.ref.from.row>1048576||t.ref.from.col>16384||t.ref.to.row>1048576||t.ref.to.col>16384)?!1:(t=me.accept(t),!(t instanceof lt&&t.toString()==="#REF!")),ISTEXT:t=>(t=me.accept(t),typeof t=="string"),N:t=>{t=me.accept(t);const e=typeof t;if(e==="number")return t;if(e==="boolean")return Number(t);if(t instanceof lt)throw t;return 0},NA:()=>{throw lt.NA},TYPE:t=>{if(t.ref){if(me.isRangeRef(t))return 16;if(me.isCellRef(t)&&(t=me.accept(t),typeof t=="string"&&t.length===0))return 1}t=me.accept(t);const e=typeof t;if(e==="number")return 1;if(e==="string")return 2;if(e==="boolean")return 4;if(t instanceof lt)return 16;if(Array.isArray(t))return 64}};var tc=ec;const k=he(),{FormulaHelpers:nc,Types:I}=ge(),O=nc,B=zo,En=qo,rc=2.5066282746310002,Xo={"BETA.DIST":(t,e,n,r,i,a)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),i=O.accept(i,I.NUMBER,0),a=O.accept(a,I.NUMBER,1),e<=0||n<=0||ta||i===a)throw k.NUM;return t=(t-i)/(a-i),r?B.beta.cdf(t,e,n):B.beta.pdf(t,e,n)/(a-i)},"BETA.INV":(t,e,n,r,i)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.NUMBER,0),i=O.accept(i,I.NUMBER,1),e<=0||n<=0||t<=0||t>1)throw k.NUM;return B.beta.inv(t,e,n)*(i-r)+r},"BINOM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),e<0||n<0||n>1||t<0||t>e)throw k.NUM;return r?B.binomial.cdf(t,e,n):B.binomial.pdf(t,e,n)},"BINOM.DIST.RANGE":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.NUMBER,n),t<0||e<0||e>1||n<0||n>t||rt)throw k.NUM;let i=0;for(let a=n;a<=r;a++)i+=En.COMBIN(t,a)*Math.pow(e,a)*Math.pow(1-e,t-a);return i},"BINOM.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||e<0||e>1||n<0||n>1)throw k.NUM;let r=0;for(;r<=t;){if(B.binomial.cdf(r,t,e)>=n)return r;r++}},"CHISQ.DIST":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),e=Math.trunc(e),t<0||e<1||e>10**10)throw k.NUM;return n?B.chisquare.cdf(t,e):B.chisquare.pdf(t,e)},"CHISQ.DIST.RT":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e=Math.trunc(e),t<0||e<1||e>10**10)throw k.NUM;return 1-B.chisquare.cdf(t,e)},"CHISQ.INV":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e=Math.trunc(e),t<0||t>1||e<1||e>10**10)throw k.NUM;return B.chisquare.inv(t,e)},"CHISQ.INV.RT":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e=Math.trunc(e),t<0||t>1||e<1||e>10**10)throw k.NUM;return B.chisquare.inv(1-t,e)},"CHISQ.TEST":(t,e)=>{const n=O.accept(t,I.ARRAY,void 0,!1,!1),r=O.accept(e,I.ARRAY,void 0,!1,!1);if(n.length!==r.length||n[0].length!==r[0].length||n.length===1&&n[0].length===1)throw k.NA;const i=n.length,a=n[0].length;let c=(i-1)*(a-1);i===1?c=a-1:c=i-1;let h=0;for(let l=0;l=2;)p=p*h/u,u=u-2;let o=p,s=c;for(;o>1e-15*p;)s=s+2,o=o*h/s,p=p+o;return 1-p},"CONFIDENCE.NORM":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),n=Math.trunc(n),t<=0||t>=1||e<=0||n<1)throw k.NUM;return B.normalci(1,t,e,n)[1]-1},"CONFIDENCE.T":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),n=Math.trunc(n),t<=0||t>=1||e<=0||n<1)throw k.NUM;if(n===1)throw k.DIV0;return B.tci(1,t,e,n)[1]-1},CORREL:(t,e)=>{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),t.length!==e.length)throw k.NA;const n=[],r=[];for(let i=0;i{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),t.length!==e.length)throw k.NA;const n=[],r=[];for(let h=0;h{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),t.length!==e.length)throw k.NA;const n=[],r=[];for(let i=0;i{let e=0,n=[];O.flattenParams(t,I.NUMBER,!0,(i,a)=>{typeof i=="number"&&(e+=i,n.push(i))});const r=e/n.length;e=0;for(let i=0;i{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.BOOLEAN),t<0||e<=0)throw k.NUM;return n?B.exponential.cdf(t,e):B.exponential.pdf(t,e)},"F.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<0||e<1||n<1)throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),r?B.centralF.cdf(t,e,n):B.centralF.pdf(t,e,n)},"F.DIST.RT":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||e<1||n<1)throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),1-B.centralF.cdf(t,e,n)},"F.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||t>1||e<1||n<1)throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),B.centralF.inv(t,e,n)},"F.INV.RT":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||t>1||e<1||e>=Math.pow(10,10)||n<1||n>=Math.pow(10,10))throw k.NUM;return e=Math.trunc(e),n=Math.trunc(n),B.centralF.inv(1-t,e,n)},"F.TEST":(t,e)=>{t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0);const n=[],r=[];let i=0,a=0;for(let p=0;p{if(t=O.accept(t,I.NUMBER),t<=-1||t>=1)throw k.NUM;return Math.log((1+t)/(1-t))/2},FISHERINV:t=>{t=O.accept(t,I.NUMBER);let e=Math.exp(2*t);return(e-1)/(e+1)},FORECAST:(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.ARRAY,void 0,!0,!0),n=O.accept(n,I.ARRAY,void 0,!0,!0),n.length!==e.length)throw k.NA;const r=[],i=[];let a=!0;for(let l=0;l{},"FORECAST.ETS.CONFINT":()=>{},"FORECAST.ETS.SEASONALITY":()=>{},"FORECAST.ETS.STAT":()=>{},"FORECAST.LINEAR":(...t)=>Xo.FORECAST(...t),FREQUENCY:(t,e)=>{t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0);const n=[];for(let i=0;i{if(t=O.accept(t,I.NUMBER),t===0||t<0&&t===Math.trunc(t))throw k.NUM;return B.gammafn(t)},"GAMMA.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<0||e<=0||n<=0)throw k.NUM;return r?B.gamma.cdf(t,e,n,!0):B.gamma.pdf(t,e,n,!1)},"GAMMA.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<0||t>1||e<=0||n<=0)throw k.NUM;return B.gamma.inv(t,e,n)},GAMMALN:t=>{if(t=O.accept(t,I.NUMBER),t<=0)throw k.NUM;return B.gammaln(t)},"GAMMALN.PRECISE":t=>{if(t=O.accept(t,I.NUMBER),t<=0)throw k.NUM;return B.gammaln(t)},GAUSS:t=>(t=O.accept(t,I.NUMBER),B.normal.cdf(t,0,1)-.5),GEOMEAN:(...t)=>{const e=[];return O.flattenParams(t,I.NUMBER,!0,(n,r)=>{typeof n=="number"&&e.push(n)}),B.geomean(e)},GROWTH:(t,e,n,r)=>{t=O.accept(t,I.ARRAY,void 0,!0,!0);for(let f=0;f{let e=0,n=0;return O.flattenParams(t,I.NUMBER,!0,(r,i)=>{typeof r=="number"&&(n+=1/r,e++)}),e/n},"HYPGEOM.DIST":(t,e,n,r,i)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.NUMBER),i=O.accept(i,I.BOOLEAN),t=Math.trunc(t),e=Math.trunc(e),n=Math.trunc(n),r=Math.trunc(r),r<=0||t<0||e<=0||n<=0||e>r||n>r||e{if(t=O.accept(t,I.ARRAY,void 0,!0,!0),e=O.accept(e,I.ARRAY,void 0,!0,!0),e.length!==t.length)throw k.NA;const n=[],r=[];for(let u=0;u{let e=0,n=[];O.flattenParams(t,I.NUMBER,!0,(a,c)=>{typeof a=="number"&&(e+=a,n.push(a))});const r=n.length;e/=r;let i=0;for(let a=0;a{},LOGEST:()=>{},"LOGNORM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<=0||n<=0)throw k.NUM;return r?B.lognormal.cdf(t,e,n):B.lognormal.pdf(t,e,n)},"LOGNORM.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<=0||t>=1||n<=0)throw k.NUM;return B.lognormal.inv(t,e,n)},"MODE.MULT":()=>{},"MODE.SNGL":()=>{},"NEGBINOM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t=Math.trunc(t),e=Math.trunc(e),n<0||n>1||t<0||e<1)throw k.NUM;return r?B.negbin.cdf(t,e,n):B.negbin.pdf(t,e,n)},"NORM.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),n<=0)throw k.NUM;return r?B.normal.cdf(t,e,n):B.normal.pdf(t,e,n)},"NORM.INV":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),t<=0||t>=1||n<=0)throw k.NUM;return B.normal.inv(t,e,n)},"NORM.S.DIST":(t,e)=>(t=O.accept(t,I.NUMBER),e=O.accept(e,I.BOOLEAN),e?B.normal.cdf(t,0,1):B.normal.pdf(t,0,1)),"NORM.S.INV":t=>{if(t=O.accept(t,I.NUMBER),t<=0||t>=1)throw k.NUM;return B.normal.inv(t,0,1)},PEARSON:()=>{},"PERCENTILE.EXC":()=>{},"PERCENTILE.INC":()=>{},"PERCENTRANK.EXC":()=>{},"PERCENTRANK.INC":()=>{},PERMUTATIONA:()=>{},PHI:t=>(t=O.accept(t,I.NUMBER),Math.exp(-.5*t*t)/rc),"POISSON.DIST":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.BOOLEAN),t<0||e<0)throw k.NUM;return t=Math.trunc(t),n?B.poisson.cdf(t,e):B.poisson.pdf(t,e)},PROB:()=>{},"QUARTILE.EXC":()=>{},"QUARTILE.INC":()=>{},"RANK.AVG":()=>{},"RANK.EQ":()=>{},RSQ:()=>{},SKEW:()=>{},"SKEW.P":()=>{},SLOPE:()=>{},STANDARDIZE:(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),n<=0)throw k.NUM;return(t-e)/n},"STDEV.P":()=>{},"STDEV.S":()=>{},STDEVA:()=>{},STDEVPA:()=>{},STEYX:()=>{},"T.DIST":(t,e,n)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.BOOLEAN),e<1)throw k.NUM;return n?B.studentt.cdf(t,e):B.studentt.pdf(t,e)},"T.DIST.2T":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e<1||t<0)throw k.NUM;return(1-B.studentt.cdf(t,e))*2},"T.DIST.RT":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),e<1)throw k.NUM;return 1-B.studentt.cdf(t,e)},"T.INV":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),t<=0||t>1||e<1)throw k.NUM;return e=e%1===0?e:Math.trunc(e),B.studentt.inv(t,e)},"T.INV.2T":(t,e)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),t<=0||t>1||e<1)throw k.NUM;return e=e%1===0?e:Math.trunc(e),Math.abs(B.studentt.inv(t/2,e))},"T.TEST":()=>{},TREND:()=>{},TRIMMEAN:()=>{},"VAR.P":()=>{},"VAR.S":()=>{},VARA:()=>{},VARPA:()=>{},"WEIBULL.DIST":(t,e,n,r)=>{if(t=O.accept(t,I.NUMBER),e=O.accept(e,I.NUMBER),n=O.accept(n,I.NUMBER),r=O.accept(r,I.BOOLEAN),t<0||e<=0||n<=0)throw k.NUM;return r?1-Math.exp(-Math.pow(t/n,e)):Math.pow(t,e-1)*Math.exp(-Math.pow(t/n,e))*e/Math.pow(n,e)},"Z.TEST":()=>{}};var ic={DistributionFunctions:Xo};const oc=he(),{FormulaHelpers:sc,Types:mn,Criteria:Ni,Address:Vh}=ge(),{Infix:Ai}=Wr,ut=sc,{DistributionFunctions:ac}=ic,cc={AVEDEV:(...t)=>{let e=0;const n=[];ut.flattenParams(t,mn.NUMBER,!0,(i,a)=>{typeof i=="number"&&(e+=i,n.push(i))});const r=e/n.length;e=0;for(let i=0;i{let e=0,n=0;return ut.flattenParams(t,mn.NUMBER,!0,(r,i)=>{typeof r=="number"&&(e+=r,n++)}),e/n},AVERAGEA:(...t)=>{let e=0,n=0;return ut.flattenParams(t,mn.NUMBER,!0,(r,i)=>{const a=typeof r;a==="number"?(e+=r,n++):a==="string"&&n++}),e/n},AVERAGEIF:(t,e,n,r)=>{const i=ut.retrieveRanges(t,e,r);e=i[0],r=i[1],n=ut.retrieveArg(t,n);const a=n.isArray;n=Ni.parse(ut.accept(n));let c=0,h=0;if(e.forEach((p,u)=>{p.forEach((o,s)=>{const l=r[u][s];typeof l=="number"&&(n.op==="wc"?n.match===n.value.test(o)&&(c+=l,h++):Ai.compareOp(o,n.op,n.value,Array.isArray(o),a)&&(c+=l,h++))})}),h===0)throw oc.DIV0;return c/h},AVERAGEIFS:()=>{},COUNT:(...t)=>{let e=0;return ut.flattenParams(t,null,!0,(n,r)=>{(r.isLiteral&&!isNaN(n)||typeof n=="number")&&e++}),e},COUNTIF:(t,e)=>{t=ut.accept(t,mn.ARRAY,void 0,!1,!0);const n=e.isArray;e=ut.accept(e);let r=0;return e=Ni.parse(e),t.forEach(i=>{i.forEach(a=>{e.op==="wc"?e.match===e.value.test(a)&&r++:Ai.compareOp(a,e.op,e.value,Array.isArray(a),n)&&r++})}),r},LARGE:()=>{},MAX:()=>{},MAXA:()=>{},MAXIFS:()=>{},MEDIAN:()=>{},MIN:()=>{},MINA:()=>{},MINIFS:()=>{},PERMUT:()=>{},PERMUTATIONA:()=>{},SMALL:()=>{}};var lc=Object.assign(cc,ac);const De=he(),{FormulaHelpers:uc,Types:pe}=ge(),ae=uc,Rn=1e3*60*60*24,Lr=new Date(Date.UTC(1900,0,1)),fc=[void 0,0,1,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,1,2,3,4,5,6,0],hc=[void 0,[1,2,3,4,5,6,7],[7,1,2,3,4,5,6],[6,0,1,2,3,4,5],void 0,void 0,void 0,void 0,void 0,void 0,void 0,[7,1,2,3,4,5,6],[6,7,1,2,3,4,5],[5,6,7,1,2,3,4],[4,5,6,7,1,2,3],[3,4,5,6,7,1,2],[2,3,4,5,6,7,1],[1,2,3,4,5,6,7]],yi=[void 0,[6,0],[0,1],[1,2],[2,3],[3,4],[4,5],[5,6],void 0,void 0,void 0,[0],[1],[2],[3],[4],[5],[6]],pc=/^\s*(\d\d?)\s*(:\s*\d\d?)?\s*(:\s*\d\d?)?\s*(pm|am)?\s*$/i,dc=/^\s*((\d\d?)\s*([-\/])\s*(\d\d?))([\d:.apm\s]*)$/i,vc=/^\s*((\d\d?)\s*([-/])\s*(jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*))([\d:.apm\s]*)$/i,gc=/^\s*((jan\w*|feb\w*|mar\w*|apr\w*|may\w*|jun\w*|jul\w*|aug\w*|sep\w*|oct\w*|nov\w*|dec\w*)\s*([-/])\s*(\d\d?))([\d:.apm\s]*)$/i;function Ec(t){const e=t.match(dc),n=t.match(vc),r=t.match(gc);return e?t=e[1]+e[3]+new Date().getFullYear()+e[5]:n?t=n[1]+n[3]+new Date().getFullYear()+n[5]:r&&(t=r[1]+r[3]+new Date().getFullYear()+r[5]),new Date(Date.parse(`${t} UTC`))}function mc(t){const e=t.match(pc);if(!e)return;const n=e[2]?e[2]:":00",r=e[3]?e[3]:":00",i=e[4]?" "+e[4]:"",a=new Date(Date.parse(`1/1/1900 ${e[1]+n+r+i} UTC`));let c=new Date;return c=new Date(Date.UTC(c.getFullYear(),c.getMonth(),c.getDate(),c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds())),new Date(Date.UTC(c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate(),a.getUTCHours(),a.getUTCMinutes(),a.getUTCSeconds(),a.getUTCMilliseconds()))}function Ot(t){const e=t>-22038912e5?2:1;return Math.floor((t-Lr)/864e5)+e}function Rc(t){if(t<0)throw De.VALUE;return t<=60?new Date(Lr.getTime()+(t-1)*864e5):new Date(Lr.getTime()+(t-2)*864e5)}function Qo(t){if(t instanceof Date)return{date:t};t=ae.accept(t);let e=!0,n;return isNaN(t)?(n=mc(t),n?e=!1:n=Ec(t)):(t=Number(t),n=Rc(t)),{date:n,isDateGiven:e}}function Z(t){return Qo(t).date}function mr(t,e){return t.getUTCFullYear()===e.getUTCFullYear()&&t.getUTCMonth()===e.getUTCMonth()&&t.getUTCDate()===e.getUTCDate()}function Nc(t){return t===1900?!0:new Date(t,1,29).getMonth()===1}const Mt={DATE:(t,e,n)=>{if(t=ae.accept(t,pe.NUMBER),e=ae.accept(e,pe.NUMBER),n=ae.accept(n,pe.NUMBER),t<0||t>=1e4)throw De.NUM;return t<1900&&(t+=1900),Ot(Date.UTC(t,e-1,n))},DATEDIF:(t,e,n)=>{if(t=Z(t),e=Z(e),n=ae.accept(n,pe.STRING).toLowerCase(),t>e)throw De.NUM;const r=e.getUTCFullYear()-t.getUTCFullYear(),i=e.getUTCMonth()-t.getUTCMonth(),a=e.getUTCDate()-t.getUTCDate();let c;switch(n){case"y":return c=i<0||i===0&&a<0?-1:0,c+r;case"m":return c=a<0?-1:0,r*12+i+c;case"d":return Math.floor(e-t)/Rn;case"md":return t.setUTCFullYear(e.getUTCFullYear()),a<0?t.setUTCMonth(e.getUTCMonth()-1):t.setUTCMonth(e.getUTCMonth()),Math.floor(e-t)/Rn;case"ym":return c=a<0?-1:0,(c+r*12+i)%12;case"yd":return i<0||i===0&&a<0?t.setUTCFullYear(e.getUTCFullYear()-1):t.setUTCFullYear(e.getUTCFullYear()),Math.floor(e-t)/Rn}},DATEVALUE:t=>{t=ae.accept(t,pe.STRING);const{date:e,isDateGiven:n}=Qo(t);if(!n)return 0;const r=Ot(e);if(r<0||r>2958465)throw De.VALUE;return r},DAY:t=>Z(t).getUTCDate(),DAYS:(t,e)=>{t=Z(t),e=Z(e);let n=0;return e<-22038912e5&&-22038912e5{t=Z(t),e=Z(e),n=ae.accept(n,pe.BOOLEAN,!1),t.getUTCDate()===31&&t.setUTCDate(30),!n&&t.getUTCDate()<30&&e.getUTCDate()>30?e.setUTCMonth(e.getUTCMonth()+1,1):e.getUTCDate()===31&&e.setUTCDate(30);const r=e.getUTCFullYear()-t.getUTCFullYear(),i=e.getUTCMonth()-t.getUTCMonth(),a=e.getUTCDate()-t.getUTCDate();return i*30+a+r*12*30},EDATE:(t,e)=>(t=Z(t),e=ae.accept(e,pe.NUMBER),t.setUTCMonth(t.getUTCMonth()+e),Ot(t)),EOMONTH:(t,e)=>(t=Z(t),e=ae.accept(e,pe.NUMBER),t.setUTCMonth(t.getUTCMonth()+e+1,0),Ot(t)),HOUR:t=>Z(t).getUTCHours(),ISOWEEKNUM:t=>{const e=Z(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),r=n.getUTCDay();n.setUTCDate(n.getUTCDate()+4-r);const i=new Date(Date.UTC(n.getUTCFullYear(),0,1));return Math.ceil(((n-i)/864e5+1)/7)},MINUTE:t=>Z(t).getUTCMinutes(),MONTH:t=>Z(t).getUTCMonth()+1,NETWORKDAYS:(t,e,n)=>{t=Z(t),e=Z(e);let r=1;if(t>e){r=-1;const c=t;t=e,e=c}const i=[];n!=null&&ae.flattenParams([n],pe.NUMBER,!1,c=>{i.push(Z(c))});let a=0;for(;t<=e;){if(t.getUTCDay()!==0&&t.getUTCDay()!==6){let c=!1;for(let h=0;h{t=Z(t),e=Z(e);let i=1;if(t>e){i=-1;const h=t;t=e,e=h}if(n=ae.accept(n,null,1),n==="1111111")return 0;if(typeof n=="string"&&Number(n).toString()!==n){if(n.length!==7)throw De.VALUE;n=n.charAt(6)+n.slice(0,6);const h=[];for(let p=0;p{a.push(Z(h))});let c=0;for(;t<=e;){let h=!1;for(let p=0;p{const t=new Date;return Ot(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))+(3600*t.getHours()+60*t.getMinutes()+t.getSeconds())/86400},SECOND:t=>Z(t).getUTCSeconds(),TIME:(t,e,n)=>{if(t=ae.accept(t,pe.NUMBER),e=ae.accept(e,pe.NUMBER),n=ae.accept(n,pe.NUMBER),t<0||t>32767||e<0||e>32767||n<0||n>32767)throw De.NUM;return(3600*t+60*e+n)/86400},TIMEVALUE:t=>(t=Z(t),(3600*t.getUTCHours()+60*t.getUTCMinutes()+t.getUTCSeconds())/86400),TODAY:()=>{const t=new Date;return Ot(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()))},WEEKDAY:(t,e)=>{const n=Z(t);e=ae.accept(e,pe.NUMBER,1);const r=n.getUTCDay(),i=hc[e];if(!i)throw De.NUM;return i[r]},WEEKNUM:(t,e)=>{const n=Z(t);if(e=ae.accept(e,pe.NUMBER,1),e===21)return Mt.ISOWEEKNUM(t);const r=fc[e],i=new Date(Date.UTC(n.getUTCFullYear(),0,1)),a=i.getUTCDay()Mt["WORKDAY.INTL"](t,e,1,n),"WORKDAY.INTL":(t,e,n,r)=>{if(t=Z(t),e=ae.accept(e,pe.NUMBER),n=ae.accept(n,null,1),n==="1111111")throw De.VALUE;if(typeof n=="string"&&Number(n).toString()!==n){if(n.length!==7)throw De.VALUE;n=n.charAt(6)+n.slice(0,6);const c=[];for(let h=0;h{i.push(Z(c))}),t.setUTCDate(t.getUTCDate()+1);let a=0;for(;aZ(t).getUTCFullYear(),YEARFRAC:(t,e,n)=>{if(t=Z(t),e=Z(e),t>e){const u=t;t=e,e=u}if(n=ae.accept(n,pe.NUMBER,0),n=Math.trunc(n),n<0||n>4)throw De.VALUE;let r=t.getUTCDate();const i=t.getUTCMonth()+1,a=t.getUTCFullYear();let c=e.getUTCDate();const h=e.getUTCMonth()+1,p=e.getUTCFullYear();switch(n){case 0:return r===31&&c===31?(r=30,c=30):r===31?r=30:r===30&&c===31&&(c=30),Math.abs(c+h*30+p*360-(r+i*30+a*360))/360;case 1:if(p-a<2){const u=Nc(a)&&a!==1900?366:365;return Mt.DAYS(e,t)/u}else{const u=p-a+1,s=(new Date(p+1,0,1)-new Date(a,0,1))/1e3/60/60/24/u;return Mt.DAYS(e,t)/s}case 2:return Math.abs(Mt.DAYS(e,t)/360);case 3:return Math.abs(Mt.DAYS(e,t)/365);case 4:return Math.abs(c+h*30+p*360-(r+i*30+a*360))/360}}};var Ac=Mt;const yc=he(),{FormulaHelpers:Tc,Types:wc}=ge(),Cc=Tc,Ic={ENCODEURL:t=>encodeURIComponent(Cc.accept(t,wc.STRING)),FILTERXML:()=>{},WEBSERVICE:(t,e)=>{throw yc.ERROR("WEBSERVICE is not supported in sync mode.")}};var Oc=Ic,_r="7.1.2";function ee(t){return t&&t.length===0}function Ze(t){return t==null?[]:Object.keys(t)}function xe(t){for(var e=[],n=Object.keys(t),r=0;r=this.input.length)throw Error("Unexpected end of input");this.idx++},e.prototype.loc=function(d){return{begin:d,end:this.idx}};var n=/[0-9a-fA-F]/,r=/[0-9]/,i=/[1-9]/;function a(d){return d.charCodeAt(0)}function c(d,g){d.length!==void 0?d.forEach(function(E){g.push(E)}):g.push(d)}function h(d,g){if(d[g]===!0)throw"duplicate flag "+g;d[g]=!0}function p(d){if(d===void 0)throw Error("Internal Error - Should never get here!")}function u(){throw Error("Internal Error - Should never get here!")}var o,s=[];for(o=a("0");o<=a("9");o++)s.push(o);var l=[a("_")].concat(s);for(o=a("a");o<=a("z");o++)l.push(o);for(o=a("A");o<=a("Z");o++)l.push(o);var f=[a(" "),a("\f"),a(` +`),a("\r"),a(" "),a("\v"),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a(" "),a("\u2028"),a("\u2029"),a(" "),a(" "),a(" "),a("\uFEFF")];function v(){}return v.prototype.visitChildren=function(d){for(var g in d){var E=d[g];d.hasOwnProperty(g)&&(E.type!==void 0?this.visit(E):Array.isArray(E)&&E.forEach(function(A){this.visit(A)},this))}},v.prototype.visit=function(d){switch(d.type){case"Pattern":this.visitPattern(d);break;case"Flags":this.visitFlags(d);break;case"Disjunction":this.visitDisjunction(d);break;case"Alternative":this.visitAlternative(d);break;case"StartAnchor":this.visitStartAnchor(d);break;case"EndAnchor":this.visitEndAnchor(d);break;case"WordBoundary":this.visitWordBoundary(d);break;case"NonWordBoundary":this.visitNonWordBoundary(d);break;case"Lookahead":this.visitLookahead(d);break;case"NegativeLookahead":this.visitNegativeLookahead(d);break;case"Character":this.visitCharacter(d);break;case"Set":this.visitSet(d);break;case"Group":this.visitGroup(d);break;case"GroupBackReference":this.visitGroupBackReference(d);break;case"Quantifier":this.visitQuantifier(d);break}this.visitChildren(d)},v.prototype.visitPattern=function(d){},v.prototype.visitFlags=function(d){},v.prototype.visitDisjunction=function(d){},v.prototype.visitAlternative=function(d){},v.prototype.visitStartAnchor=function(d){},v.prototype.visitEndAnchor=function(d){},v.prototype.visitWordBoundary=function(d){},v.prototype.visitNonWordBoundary=function(d){},v.prototype.visitLookahead=function(d){},v.prototype.visitNegativeLookahead=function(d){},v.prototype.visitCharacter=function(d){},v.prototype.visitSet=function(d){},v.prototype.visitGroup=function(d){},v.prototype.visitGroupBackReference=function(d){},v.prototype.visitQuantifier=function(d){},{RegExpParser:e,BaseRegExpVisitor:v,VERSION:"0.5.0"}})})(ns);var an=ns.exports,In={},Sc=new an.RegExpParser;function Yn(t){var e=t.toString();if(In.hasOwnProperty(e))return In[e];var n=Sc.pattern(e);return In[e]=n,n}function Bc(){In={}}var Fc=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),rs="Complement Sets are not supported for first char optimization",Sn=`Unable to use "first char" lexer optimizations: +`;function bc(t,e){e===void 0&&(e=!1);try{var n=Yn(t),r=kr(n.value,{},n.flags.ignoreCase);return r}catch(a){if(a.message===rs)e&&jo(""+Sn+(" Unable to optimize: < "+t.toString()+` > +`)+` Complement Sets cannot be automatically optimized. This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`); - else { - var i = ""; - e && (i = ` + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{var i="";e&&(i=` This will disable the lexer's first char optimizations. - See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`), Ur(xn + ` -` + (" Failed parsing: < " + t.toString() + ` > -`) + (" Using the regexp-to-ast library version: " + an.VERSION + ` -`) + " Please open an issue at: https://github.com/bd82/regexp-to-ast/issues" + i); - } - } - return []; -} -function Lr(t, e, n) { - switch (t.type) { - case "Disjunction": - for (var r = 0; r < t.value.length; r++) - Lr(t.value[r], e, n); - break; - case "Alternative": - for (var i = t.value, r = 0; r < i.length; r++) { - var a = i[r]; - switch (a.type) { - case "EndAnchor": - case "GroupBackReference": - case "Lookahead": - case "NegativeLookahead": - case "StartAnchor": - case "WordBoundary": - case "NonWordBoundary": - continue; - } - var c = a; - switch (c.type) { - case "Character": - Nn(c.value, e, n); - break; - case "Set": - if (c.complement === !0) - throw Error(Qo); - V(c.value, function(u) { - if (typeof u == "number") - Nn(u, e, n); - else { - var o = u; - if (n === !0) - for (var s = o.from; s <= o.to; s++) - Nn(s, e, n); - else { - for (var s = o.from; s <= o.to && s < Jt; s++) - Nn(s, e, n); - if (o.to >= Jt) - for (var l = o.from >= Jt ? o.from : Jt, f = o.to, v = Tt(l), d = Tt(f), g = v; g <= d; g++) - e[g] = g; - } - } - }); - break; - case "Group": - Lr(c.value, e, n); - break; - default: - throw Error("Non Exhaustive Match"); - } - var h = c.quantifier !== void 0 && c.quantifier.atLeast === 0; - if ( - // A group may be optional due to empty contents /(?:)/ - // or if everything inside it is optional /((a)?)/ - c.type === "Group" && _r(c) === !1 || // If this term is not a group it may only be optional if it has an optional quantifier - c.type !== "Group" && h === !1 - ) - break; - } - break; - default: - throw Error("non exhaustive match!"); - } - return xe(e); -} -function Nn(t, e, n) { - var r = Tt(t); - e[r] = r, n === !0 && bc(t, e); -} -function bc(t, e) { - var n = String.fromCharCode(t), r = n.toUpperCase(); - if (r !== n) { - var i = Tt(r.charCodeAt(0)); - e[i] = i; - } else { - var a = n.toLowerCase(); - if (a !== n) { - var i = Tt(a.charCodeAt(0)); - e[i] = i; - } - } -} -function yi(t, e) { - return $t(t.value, function(n) { - if (typeof n == "number") - return fe(e, n); - var r = n; - return $t(e, function(i) { - return r.from <= i && i <= r.to; - }) !== void 0; - }); -} -function _r(t) { - return t.quantifier && t.quantifier.atLeast === 0 ? !0 : t.value ? ot(t.value) ? We(t.value, _r) : _r(t.value) : !1; -} -var Dc = ( - /** @class */ - function(t) { - Bc(e, t); - function e(n) { - var r = t.call(this) || this; - return r.targetCharCodes = n, r.found = !1, r; - } - return e.prototype.visitChildren = function(n) { - if (this.found !== !0) { - switch (n.type) { - case "Lookahead": - this.visitLookahead(n); - return; - case "NegativeLookahead": - this.visitNegativeLookahead(n); - return; - } - t.prototype.visitChildren.call(this, n); - } - }, e.prototype.visitCharacter = function(n) { - fe(this.targetCharCodes, n.value) && (this.found = !0); - }, e.prototype.visitSet = function(n) { - n.complement ? yi(n, this.targetCharCodes) === void 0 && (this.found = !0) : yi(n, this.targetCharCodes) !== void 0 && (this.found = !0); - }, e; - }(an.BaseRegExpVisitor) -); -function Hr(t, e) { - if (e instanceof RegExp) { - var n = Hn(e), r = new Dc(t); - return r.visit(n), r.found; - } else - return $t(e, function(i) { - return fe(t, i.charCodeAt(0)); - }) !== void 0; -} -var Zo = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), at = "PATTERN", Lt = "defaultMode", An = "modes", Jo = typeof new RegExp("(?:)").sticky == "boolean"; -function Vc(t, e) { - e = $r(e, { - useSticky: Jo, - debug: !1, - safeMode: !1, - positionTracking: "full", - lineTerminatorCharacters: ["\r", ` -`], - tracer: function(A, m) { - return m(); - } - }); - var n = e.tracer; - n("initCharCodeToOptimizedIndexMap", function() { - ll(); - }); - var r; - n("Reject Lexer.NA", function() { - r = Ht(t, function(A) { - return A[at] === Qe.NA; - }); - }); - var i = !1, a; - n("Transform Patterns", function() { - i = !1, a = x(r, function(A) { - var m = A[at]; - if (dt(m)) { - var N = m.source; - return N.length === 1 && // only these regExp meta characters which can appear in a length one regExp - N !== "^" && N !== "$" && N !== "." && !m.ignoreCase ? N : N.length === 2 && N[0] === "\\" && // not a meta character - !fe([ - "d", - "D", - "s", - "S", - "t", - "r", - "n", - "t", - "0", - "c", - "b", - "B", - "f", - "v", - "w", - "W" - ], N[1]) ? N[1] : e.useSticky ? wi(m) : Ti(m); - } else { - if (Ct(m)) - return i = !0, { exec: m }; - if ($(m, "exec")) - return i = !0, m; - if (typeof m == "string") { - if (m.length === 1) - return m; - var y = m.replace(/[\\^$.*+?()[\]{}|]/g, "\\$&"), R = new RegExp(y); - return e.useSticky ? wi(R) : Ti(R); - } else - throw Error("non exhaustive match"); - } - }); - }); - var c, h, p, u, o; - n("misc mapping", function() { - c = x(r, function(A) { - return A.tokenTypeIdx; - }), h = x(r, function(A) { - var m = A.GROUP; - if (m !== Qe.SKIPPED) { - if (st(m)) - return m; - if (pt(m)) - return !1; - throw Error("non exhaustive match"); - } - }), p = x(r, function(A) { - var m = A.LONGER_ALT; - if (m) { - var N = Uc(r, m); - return N; - } - }), u = x(r, function(A) { - return A.PUSH_MODE; - }), o = x(r, function(A) { - return $(A, "POP_MODE"); - }); - }); - var s; - n("Line Terminator Handling", function() { - var A = ts(e.lineTerminatorCharacters); - s = x(r, function(m) { - return !1; - }), e.positionTracking !== "onlyOffset" && (s = x(r, function(m) { - if ($(m, "LINE_BREAKS")) - return m.LINE_BREAKS; - if (es(m, A) === !1) - return Hr(A, m.PATTERN); - })); - }); - var l, f, v, d; - n("Misc Mapping #2", function() { - l = x(r, jo), f = x(a, sl), v = Ne(r, function(A, m) { - var N = m.GROUP; - return st(N) && N !== Qe.SKIPPED && (A[N] = []), A; - }, {}), d = x(a, function(A, m) { - return { - pattern: a[m], - longerAlt: p[m], - canLineTerminator: s[m], - isCustom: l[m], - short: f[m], - group: h[m], - push: u[m], - pop: o[m], - tokenTypeIdx: c[m], - tokenType: r[m] - }; - }); - }); - var g = !0, E = []; - return e.safeMode || n("First Char Optimization", function() { - E = Ne(r, function(A, m, N) { - if (typeof m.PATTERN == "string") { - var y = m.PATTERN.charCodeAt(0), R = Tt(y); - gr(A, R, d[N]); - } else if (ot(m.START_CHARS_HINT)) { - var T; - V(m.START_CHARS_HINT, function(C) { - var M = typeof C == "string" ? C.charCodeAt(0) : C, _ = Tt(M); - T !== _ && (T = _, gr(A, _, d[N])); - }); - } else if (dt(m.PATTERN)) - if (m.PATTERN.unicode) - g = !1, e.ensureOptimizations && Ur("" + xn + (" Unable to analyze < " + m.PATTERN.toString() + ` > pattern. -`) + ` The regexp unicode flag is not currently supported by the regexp-to-ast library. + See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),Pr(Sn+` +`+(" Failed parsing: < "+t.toString()+` > +`)+(" Using the regexp-to-ast library version: "+an.VERSION+` +`)+" Please open an issue at: https://github.com/bd82/regexp-to-ast/issues"+i)}}return[]}function kr(t,e,n){switch(t.type){case"Disjunction":for(var r=0;r=Jt)for(var l=o.from>=Jt?o.from:Jt,f=o.to,v=Tt(l),d=Tt(f),g=v;g<=d;g++)e[g]=g}}});break;case"Group":kr(c.value,e,n);break;default:throw Error("Non Exhaustive Match")}var h=c.quantifier!==void 0&&c.quantifier.atLeast===0;if(c.type==="Group"&&xr(c)===!1||c.type!=="Group"&&h===!1)break}break;default:throw Error("non exhaustive match!")}return xe(e)}function Nn(t,e,n){var r=Tt(t);e[r]=r,n===!0&&Dc(t,e)}function Dc(t,e){var n=String.fromCharCode(t),r=n.toUpperCase();if(r!==n){var i=Tt(r.charCodeAt(0));e[i]=i}else{var a=n.toLowerCase();if(a!==n){var i=Tt(a.charCodeAt(0));e[i]=i}}}function Ii(t,e){return Ht(t.value,function(n){if(typeof n=="number")return fe(e,n);var r=n;return Ht(e,function(i){return r.from<=i&&i<=r.to})!==void 0})}function xr(t){return t.quantifier&&t.quantifier.atLeast===0?!0:t.value?ot(t.value)?We(t.value,xr):xr(t.value):!1}var Vc=function(t){Fc(e,t);function e(n){var r=t.call(this)||this;return r.targetCharCodes=n,r.found=!1,r}return e.prototype.visitChildren=function(n){if(this.found!==!0){switch(n.type){case"Lookahead":this.visitLookahead(n);return;case"NegativeLookahead":this.visitNegativeLookahead(n);return}t.prototype.visitChildren.call(this,n)}},e.prototype.visitCharacter=function(n){fe(this.targetCharCodes,n.value)&&(this.found=!0)},e.prototype.visitSet=function(n){n.complement?Ii(n,this.targetCharCodes)===void 0&&(this.found=!0):Ii(n,this.targetCharCodes)!==void 0&&(this.found=!0)},e}(an.BaseRegExpVisitor);function zr(t,e){if(e instanceof RegExp){var n=Yn(e),r=new Vc(t);return r.visit(n),r.found}else return Ht(e,function(i){return fe(t,i.charCodeAt(0))})!==void 0}var is=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),at="PATTERN",Lt="defaultMode",An="modes",os=typeof new RegExp("(?:)").sticky=="boolean";function Gc(t,e){e=Kr(e,{useSticky:os,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` +`],tracer:function(A,m){return m()}});var n=e.tracer;n("initCharCodeToOptimizedIndexMap",function(){ul()});var r;n("Reject Lexer.NA",function(){r=Wt(t,function(A){return A[at]===Qe.NA})});var i=!1,a;n("Transform Patterns",function(){i=!1,a=x(r,function(A){var m=A[at];if(dt(m)){var N=m.source;return N.length===1&&N!=="^"&&N!=="$"&&N!=="."&&!m.ignoreCase?N:N.length===2&&N[0]==="\\"&&!fe(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],N[1])?N[1]:e.useSticky?Mi(m):Oi(m)}else{if(Ct(m))return i=!0,{exec:m};if($(m,"exec"))return i=!0,m;if(typeof m=="string"){if(m.length===1)return m;var y=m.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),R=new RegExp(y);return e.useSticky?Mi(R):Oi(R)}else throw Error("non exhaustive match")}})});var c,h,p,u,o;n("misc mapping",function(){c=x(r,function(A){return A.tokenTypeIdx}),h=x(r,function(A){var m=A.GROUP;if(m!==Qe.SKIPPED){if(st(m))return m;if(pt(m))return!1;throw Error("non exhaustive match")}}),p=x(r,function(A){var m=A.LONGER_ALT;if(m){var N=Lc(r,m);return N}}),u=x(r,function(A){return A.PUSH_MODE}),o=x(r,function(A){return $(A,"POP_MODE")})});var s;n("Line Terminator Handling",function(){var A=cs(e.lineTerminatorCharacters);s=x(r,function(m){return!1}),e.positionTracking!=="onlyOffset"&&(s=x(r,function(m){if($(m,"LINE_BREAKS"))return m.LINE_BREAKS;if(as(m,A)===!1)return zr(A,m.PATTERN)}))});var l,f,v,d;n("Misc Mapping #2",function(){l=x(r,ss),f=x(a,al),v=Ne(r,function(A,m){var N=m.GROUP;return st(N)&&N!==Qe.SKIPPED&&(A[N]=[]),A},{}),d=x(a,function(A,m){return{pattern:a[m],longerAlt:p[m],canLineTerminator:s[m],isCustom:l[m],short:f[m],group:h[m],push:u[m],pop:o[m],tokenTypeIdx:c[m],tokenType:r[m]}})});var g=!0,E=[];return e.safeMode||n("First Char Optimization",function(){E=Ne(r,function(A,m,N){if(typeof m.PATTERN=="string"){var y=m.PATTERN.charCodeAt(0),R=Tt(y);Rr(A,R,d[N])}else if(ot(m.START_CHARS_HINT)){var T;V(m.START_CHARS_HINT,function(C){var M=typeof C=="string"?C.charCodeAt(0):C,_=Tt(M);T!==_&&(T=_,Rr(A,_,d[N]))})}else if(dt(m.PATTERN))if(m.PATTERN.unicode)g=!1,e.ensureOptimizations&&Pr(""+Sn+(" Unable to analyze < "+m.PATTERN.toString()+` > pattern. +`)+` The regexp unicode flag is not currently supported by the regexp-to-ast library. This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`); - else { - var w = Fc(m.PATTERN, e.ensureOptimizations); - ee(w) && (g = !1), V(w, function(C) { - gr(A, C, d[N]); - }); - } - else - e.ensureOptimizations && Ur("" + xn + (" TokenType: <" + m.name + `> is using a custom token pattern without providing parameter. -`) + ` This will disable the lexer's first char optimizations. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`), g = !1; - return A; - }, []); - }), n("ArrayPacking", function() { - E = Pc(E); - }), { - emptyGroups: v, - patternIdxToConfig: d, - charCodeToPatternIdxToConfig: E, - hasCustom: i, - canBeOptimized: g - }; -} -function Gc(t, e) { - var n = [], r = Hc(t); - n = n.concat(r.errors); - var i = Wc(r.valid), a = i.valid; - return n = n.concat(i.errors), n = n.concat($c(a)), n = n.concat(Jc(a)), n = n.concat(jc(a, e)), n = n.concat(el(a)), n; -} -function $c(t) { - var e = [], n = je(t, function(r) { - return dt(r[at]); - }); - return e = e.concat(Yc(n)), e = e.concat(Xc(n)), e = e.concat(Qc(n)), e = e.concat(Zc(n)), e = e.concat(Kc(n)), e; -} -function Hc(t) { - var e = je(t, function(i) { - return !$(i, at); - }), n = x(e, function(i) { - return { - message: "Token Type: ->" + i.name + "<- missing static 'PATTERN' property", - type: se.MISSING_PATTERN, - tokenTypes: [i] - }; - }), r = $n(t, e); - return { errors: n, valid: r }; -} -function Wc(t) { - var e = je(t, function(i) { - var a = i[at]; - return !dt(a) && !Ct(a) && !$(a, "exec") && !st(a); - }), n = x(e, function(i) { - return { - message: "Token Type: ->" + i.name + "<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.", - type: se.INVALID_PATTERN, - tokenTypes: [i] - }; - }), r = $n(t, e); - return { errors: n, valid: r }; -} -var qc = /[^\\][\$]/; -function Yc(t) { - var e = ( - /** @class */ - function(i) { - Zo(a, i); - function a() { - var c = i !== null && i.apply(this, arguments) || this; - return c.found = !1, c; - } - return a.prototype.visitEndAnchor = function(c) { - this.found = !0; - }, a; - }(an.BaseRegExpVisitor) - ), n = je(t, function(i) { - var a = i[at]; - try { - var c = Hn(a), h = new e(); - return h.visit(c), h.found; - } catch { - return qc.test(a.source); - } - }), r = x(n, function(i) { - return { - message: `Unexpected RegExp Anchor Error: - Token Type: ->` + i.name + `<- static 'PATTERN' cannot contain end of input anchor '$' - See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`, - type: se.EOI_ANCHOR_FOUND, - tokenTypes: [i] - }; - }); - return r; -} -function Kc(t) { - var e = je(t, function(r) { - var i = r[at]; - return i.test(""); - }), n = x(e, function(r) { - return { - message: "Token Type: ->" + r.name + "<- static 'PATTERN' must not match an empty string", - type: se.EMPTY_MATCH_PATTERN, - tokenTypes: [r] - }; - }); - return n; -} -var zc = /[^\\[][\^]|^\^/; -function Xc(t) { - var e = ( - /** @class */ - function(i) { - Zo(a, i); - function a() { - var c = i !== null && i.apply(this, arguments) || this; - return c.found = !1, c; - } - return a.prototype.visitStartAnchor = function(c) { - this.found = !0; - }, a; - }(an.BaseRegExpVisitor) - ), n = je(t, function(i) { - var a = i[at]; - try { - var c = Hn(a), h = new e(); - return h.visit(c), h.found; - } catch { - return zc.test(a.source); - } - }), r = x(n, function(i) { - return { - message: `Unexpected RegExp Anchor Error: - Token Type: ->` + i.name + `<- static 'PATTERN' cannot contain start of input anchor '^' - See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`, - type: se.SOI_ANCHOR_FOUND, - tokenTypes: [i] - }; - }); - return r; -} -function Qc(t) { - var e = je(t, function(r) { - var i = r[at]; - return i instanceof RegExp && (i.multiline || i.global); - }), n = x(e, function(r) { - return { - message: "Token Type: ->" + r.name + "<- static 'PATTERN' may NOT contain global('g') or multiline('m')", - type: se.UNSUPPORTED_FLAGS_FOUND, - tokenTypes: [r] - }; - }); - return n; -} -function Zc(t) { - var e = [], n = x(t, function(a) { - return Ne(t, function(c, h) { - return a.PATTERN.source === h.PATTERN.source && !fe(e, h) && h.PATTERN !== Qe.NA && (e.push(h), c.push(h)), c; - }, []); - }); - n = sn(n); - var r = je(n, function(a) { - return a.length > 1; - }), i = x(r, function(a) { - var c = x(a, function(p) { - return p.name; - }), h = Je(a).PATTERN; - return { - message: "The same RegExp pattern ->" + h + "<-" + ("has been used in all of the following Token Types: " + c.join(", ") + " <-"), - type: se.DUPLICATE_PATTERNS_FOUND, - tokenTypes: a - }; - }); - return i; -} -function Jc(t) { - var e = je(t, function(r) { - if (!$(r, "GROUP")) - return !1; - var i = r.GROUP; - return i !== Qe.SKIPPED && i !== Qe.NA && !st(i); - }), n = x(e, function(r) { - return { - message: "Token Type: ->" + r.name + "<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String", - type: se.INVALID_GROUP_TYPE_FOUND, - tokenTypes: [r] - }; - }); - return n; -} -function jc(t, e) { - var n = je(t, function(i) { - return i.PUSH_MODE !== void 0 && !fe(e, i.PUSH_MODE); - }), r = x(n, function(i) { - var a = "Token Type: ->" + i.name + "<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->" + i.PUSH_MODE + "<-which does not exist"; - return { - message: a, - type: se.PUSH_MODE_DOES_NOT_EXIST, - tokenTypes: [i] - }; - }); - return r; -} -function el(t) { - var e = [], n = Ne(t, function(r, i, a) { - var c = i.PATTERN; - return c === Qe.NA || (st(c) ? r.push({ str: c, idx: a, tokenType: i }) : dt(c) && nl(c) && r.push({ str: c.source, idx: a, tokenType: i })), r; - }, []); - return V(t, function(r, i) { - V(n, function(a) { - var c = a.str, h = a.idx, p = a.tokenType; - if (i < h && tl(c, r.PATTERN)) { - var u = "Token: ->" + p.name + `<- can never be matched. -` + ("Because it appears AFTER the Token Type ->" + r.name + "<-") + `in the lexer's definition. -See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`; - e.push({ - message: u, - type: se.UNREACHABLE_PATTERN, - tokenTypes: [r, p] - }); - } - }); - }), e; -} -function tl(t, e) { - if (dt(e)) { - var n = e.exec(t); - return n !== null && n.index === 0; - } else { - if (Ct(e)) - return e(t, 0, [], {}); - if ($(e, "exec")) - return e.exec(t, 0, [], {}); - if (typeof e == "string") - return e === t; - throw Error("non exhaustive match"); - } -} -function nl(t) { - var e = [ - ".", - "\\", - "[", - "]", - "|", - "^", - "$", - "(", - ")", - "?", - "*", - "+", - "{" - ]; - return $t(e, function(n) { - return t.source.indexOf(n) !== -1; - }) === void 0; -} -function Ti(t) { - var e = t.ignoreCase ? "i" : ""; - return new RegExp("^(?:" + t.source + ")", e); -} -function wi(t) { - var e = t.ignoreCase ? "iy" : "y"; - return new RegExp("" + t.source, e); -} -function rl(t, e, n) { - var r = []; - return $(t, Lt) || r.push({ - message: "A MultiMode Lexer cannot be initialized without a <" + Lt + `> property in its definition -`, - type: se.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE - }), $(t, An) || r.push({ - message: "A MultiMode Lexer cannot be initialized without a <" + An + `> property in its definition -`, - type: se.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY - }), $(t, An) && $(t, Lt) && !$(t.modes, t.defaultMode) && r.push({ - message: "A MultiMode Lexer cannot be initialized with a " + Lt + ": <" + t.defaultMode + `>which does not exist -`, - type: se.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST - }), $(t, An) && V(t.modes, function(i, a) { - V(i, function(c, h) { - pt(c) && r.push({ - message: "A Lexer cannot be initialized using an undefined Token Type. Mode:" + ("<" + a + "> at index: <" + h + `> -`), - type: se.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED - }); - }); - }), r; -} -function il(t, e, n) { - var r = [], i = !1, a = sn(Ge(Oc(t.modes, function(p) { - return p; - }))), c = Ht(a, function(p) { - return p[at] === Qe.NA; - }), h = ts(n); - return e && V(c, function(p) { - var u = es(p, h); - if (u !== !1) { - var o = cl(p, u), s = { - message: o, - type: u.issue, - tokenType: p - }; - r.push(s); - } else - $(p, "LINE_BREAKS") ? p.LINE_BREAKS === !0 && (i = !0) : Hr(h, p.PATTERN) && (i = !0); - }), e && !i && r.push({ - message: `Warning: No LINE_BREAKS Found. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{var w=bc(m.PATTERN,e.ensureOptimizations);ee(w)&&(g=!1),V(w,function(C){Rr(A,C,d[N])})}else e.ensureOptimizations&&Pr(""+Sn+(" TokenType: <"+m.name+`> is using a custom token pattern without providing parameter. +`)+` This will disable the lexer's first char optimizations. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),g=!1;return A},[])}),n("ArrayPacking",function(){E=kc(E)}),{emptyGroups:v,patternIdxToConfig:d,charCodeToPatternIdxToConfig:E,hasCustom:i,canBeOptimized:g}}function $c(t,e){var n=[],r=Wc(t);n=n.concat(r.errors);var i=qc(r.valid),a=i.valid;return n=n.concat(i.errors),n=n.concat(Hc(a)),n=n.concat(jc(a)),n=n.concat(el(a,e)),n=n.concat(tl(a)),n}function Hc(t){var e=[],n=je(t,function(r){return dt(r[at])});return e=e.concat(Kc(n)),e=e.concat(Qc(n)),e=e.concat(Zc(n)),e=e.concat(Jc(n)),e=e.concat(zc(n)),e}function Wc(t){var e=je(t,function(i){return!$(i,at)}),n=x(e,function(i){return{message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:se.MISSING_PATTERN,tokenTypes:[i]}}),r=qn(t,e);return{errors:n,valid:r}}function qc(t){var e=je(t,function(i){var a=i[at];return!dt(a)&&!Ct(a)&&!$(a,"exec")&&!st(a)}),n=x(e,function(i){return{message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:se.INVALID_PATTERN,tokenTypes:[i]}}),r=qn(t,e);return{errors:n,valid:r}}var Yc=/[^\\][\$]/;function Kc(t){var e=function(i){is(a,i);function a(){var c=i!==null&&i.apply(this,arguments)||this;return c.found=!1,c}return a.prototype.visitEndAnchor=function(c){this.found=!0},a}(an.BaseRegExpVisitor),n=je(t,function(i){var a=i[at];try{var c=Yn(a),h=new e;return h.visit(c),h.found}catch{return Yc.test(a.source)}}),r=x(n,function(i){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' + See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:se.EOI_ANCHOR_FOUND,tokenTypes:[i]}});return r}function zc(t){var e=je(t,function(r){var i=r[at];return i.test("")}),n=x(e,function(r){return{message:"Token Type: ->"+r.name+"<- static 'PATTERN' must not match an empty string",type:se.EMPTY_MATCH_PATTERN,tokenTypes:[r]}});return n}var Xc=/[^\\[][\^]|^\^/;function Qc(t){var e=function(i){is(a,i);function a(){var c=i!==null&&i.apply(this,arguments)||this;return c.found=!1,c}return a.prototype.visitStartAnchor=function(c){this.found=!0},a}(an.BaseRegExpVisitor),n=je(t,function(i){var a=i[at];try{var c=Yn(a),h=new e;return h.visit(c),h.found}catch{return Xc.test(a.source)}}),r=x(n,function(i){return{message:`Unexpected RegExp Anchor Error: + Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' + See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:se.SOI_ANCHOR_FOUND,tokenTypes:[i]}});return r}function Zc(t){var e=je(t,function(r){var i=r[at];return i instanceof RegExp&&(i.multiline||i.global)}),n=x(e,function(r){return{message:"Token Type: ->"+r.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:se.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[r]}});return n}function Jc(t){var e=[],n=x(t,function(a){return Ne(t,function(c,h){return a.PATTERN.source===h.PATTERN.source&&!fe(e,h)&&h.PATTERN!==Qe.NA&&(e.push(h),c.push(h)),c},[])});n=sn(n);var r=je(n,function(a){return a.length>1}),i=x(r,function(a){var c=x(a,function(p){return p.name}),h=Je(a).PATTERN;return{message:"The same RegExp pattern ->"+h+"<-"+("has been used in all of the following Token Types: "+c.join(", ")+" <-"),type:se.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}});return i}function jc(t){var e=je(t,function(r){if(!$(r,"GROUP"))return!1;var i=r.GROUP;return i!==Qe.SKIPPED&&i!==Qe.NA&&!st(i)}),n=x(e,function(r){return{message:"Token Type: ->"+r.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:se.INVALID_GROUP_TYPE_FOUND,tokenTypes:[r]}});return n}function el(t,e){var n=je(t,function(i){return i.PUSH_MODE!==void 0&&!fe(e,i.PUSH_MODE)}),r=x(n,function(i){var a="Token Type: ->"+i.name+"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->"+i.PUSH_MODE+"<-which does not exist";return{message:a,type:se.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}});return r}function tl(t){var e=[],n=Ne(t,function(r,i,a){var c=i.PATTERN;return c===Qe.NA||(st(c)?r.push({str:c,idx:a,tokenType:i}):dt(c)&&rl(c)&&r.push({str:c.source,idx:a,tokenType:i})),r},[]);return V(t,function(r,i){V(n,function(a){var c=a.str,h=a.idx,p=a.tokenType;if(i"+r.name+"<-")+`in the lexer's definition. +See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:u,type:se.UNREACHABLE_PATTERN,tokenTypes:[r,p]})}})}),e}function nl(t,e){if(dt(e)){var n=e.exec(t);return n!==null&&n.index===0}else{if(Ct(e))return e(t,0,[],{});if($(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function rl(t){var e=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return Ht(e,function(n){return t.source.indexOf(n)!==-1})===void 0}function Oi(t){var e=t.ignoreCase?"i":"";return new RegExp("^(?:"+t.source+")",e)}function Mi(t){var e=t.ignoreCase?"iy":"y";return new RegExp(""+t.source,e)}function il(t,e,n){var r=[];return $(t,Lt)||r.push({message:"A MultiMode Lexer cannot be initialized without a <"+Lt+`> property in its definition +`,type:se.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),$(t,An)||r.push({message:"A MultiMode Lexer cannot be initialized without a <"+An+`> property in its definition +`,type:se.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),$(t,An)&&$(t,Lt)&&!$(t.modes,t.defaultMode)&&r.push({message:"A MultiMode Lexer cannot be initialized with a "+Lt+": <"+t.defaultMode+`>which does not exist +`,type:se.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),$(t,An)&&V(t.modes,function(i,a){V(i,function(c,h){pt(c)&&r.push({message:"A Lexer cannot be initialized using an undefined Token Type. Mode:"+("<"+a+"> at index: <"+h+`> +`),type:se.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED})})}),r}function ol(t,e,n){var r=[],i=!1,a=sn(Ge(Mc(t.modes,function(p){return p}))),c=Wt(a,function(p){return p[at]===Qe.NA}),h=cs(n);return e&&V(c,function(p){var u=as(p,h);if(u!==!1){var o=ll(p,u),s={message:o,type:u.issue,tokenType:p};r.push(s)}else $(p,"LINE_BREAKS")?p.LINE_BREAKS===!0&&(i=!0):zr(h,p.PATTERN)&&(i=!0)}),e&&!i&&r.push({message:`Warning: No LINE_BREAKS Found. This Lexer has been defined to track line and column information, But none of the Token Types can be identified as matching a line terminator. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS - for details.`, - type: se.NO_LINE_BREAKS_FLAGS - }), r; -} -function ol(t) { - var e = {}, n = Ze(t); - return V(n, function(r) { - var i = t[r]; - if (ot(i)) - e[r] = []; - else - throw Error("non exhaustive match"); - }), e; -} -function jo(t) { - var e = t.PATTERN; - if (dt(e)) - return !1; - if (Ct(e)) - return !0; - if ($(e, "exec")) - return !0; - if (st(e)) - return !1; - throw Error("non exhaustive match"); -} -function sl(t) { - return st(t) && t.length === 1 ? t.charCodeAt(0) : !1; -} -var al = { - // implements /\n|\r\n?/g.test - test: function(t) { - for (var e = t.length, n = this.lastIndex; n < e; n++) { - var r = t.charCodeAt(n); - if (r === 10) - return this.lastIndex = n + 1, !0; - if (r === 13) - return t.charCodeAt(n + 1) === 10 ? this.lastIndex = n + 2 : this.lastIndex = n + 1, !0; - } - return !1; - }, - lastIndex: 0 -}; -function es(t, e) { - if ($(t, "LINE_BREAKS")) - return !1; - if (dt(t.PATTERN)) { - try { - Hr(e, t.PATTERN); - } catch (n) { - return { - issue: se.IDENTIFY_TERMINATOR, - errMsg: n.message - }; - } - return !1; - } else { - if (st(t.PATTERN)) - return !1; - if (jo(t)) - return { issue: se.CUSTOM_LINE_BREAK }; - throw Error("non exhaustive match"); - } -} -function cl(t, e) { - if (e.issue === se.IDENTIFY_TERMINATOR) - return `Warning: unable to identify line terminator usage in pattern. -` + (" The problem is in the <" + t.name + `> Token Type -`) + (" Root cause: " + e.errMsg + `. -`) + " For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR"; - if (e.issue === se.CUSTOM_LINE_BREAK) - return `Warning: A Custom Token Pattern should specify the option. -` + (" The problem is in the <" + t.name + `> Token Type -`) + " For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK"; - throw Error("non exhaustive match"); -} -function ts(t) { - var e = x(t, function(n) { - return st(n) && n.length > 0 ? n.charCodeAt(0) : n; - }); - return e; -} -function gr(t, e, n) { - t[e] === void 0 ? t[e] = [n] : t[e].push(n); -} -var Jt = 256; -function Tt(t) { - return t < Jt ? t : On[t]; -} -var On = []; -function ll() { - if (ee(On)) { - On = new Array(65536); - for (var t = 0; t < 65536; t++) - On[t] = t > 255 ? 255 + ~~(t / 255) : t; - } -} -function Wn(t, e) { - var n = t.tokenTypeIdx; - return n === e.tokenTypeIdx ? !0 : e.isParent === !0 && e.categoryMatchesMap[n] === !0; -} -function Sn(t, e) { - return t.tokenTypeIdx === e.tokenTypeIdx; -} -var Ci = 1, ns = {}; -function cn(t) { - var e = ul(t); - fl(e), pl(e), hl(e), V(e, function(n) { - n.isParent = n.categoryMatches.length > 0; - }); -} -function ul(t) { - for (var e = Se(t), n = t, r = !0; r; ) { - n = sn(Ge(x(n, function(a) { - return a.CATEGORIES; - }))); - var i = $n(n, e); - e = e.concat(i), ee(i) ? r = !1 : n = i; - } - return e; -} -function fl(t) { - V(t, function(e) { - is(e) || (ns[Ci] = e, e.tokenTypeIdx = Ci++), Ii(e) && !ot(e.CATEGORIES) && (e.CATEGORIES = [e.CATEGORIES]), Ii(e) || (e.CATEGORIES = []), dl(e) || (e.categoryMatches = []), vl(e) || (e.categoryMatchesMap = {}); - }); -} -function hl(t) { - V(t, function(e) { - e.categoryMatches = [], V(e.categoryMatchesMap, function(n, r) { - e.categoryMatches.push(ns[r].tokenTypeIdx); - }); - }); -} -function pl(t) { - V(t, function(e) { - rs([], e); - }); -} -function rs(t, e) { - V(t, function(n) { - e.categoryMatchesMap[n.tokenTypeIdx] = !0; - }), V(e.CATEGORIES, function(n) { - var r = t.concat(e); - fe(r, n) || rs(r, n); - }); -} -function is(t) { - return $(t, "tokenTypeIdx"); -} -function Ii(t) { - return $(t, "CATEGORIES"); -} -function dl(t) { - return $(t, "categoryMatches"); -} -function vl(t) { - return $(t, "categoryMatchesMap"); -} -function gl(t) { - return $(t, "tokenTypeIdx"); -} -var os = { - buildUnableToPopLexerModeMessage: function(t) { - return "Unable to pop Lexer Mode after encountering Token ->" + t.image + "<- The Mode Stack is empty"; - }, - buildUnexpectedCharactersMessage: function(t, e, n, r, i) { - return "unexpected character: ->" + t.charAt(e) + "<- at offset: " + e + "," + (" skipped " + n + " characters."); - } -}, se; -(function(t) { - t[t.MISSING_PATTERN = 0] = "MISSING_PATTERN", t[t.INVALID_PATTERN = 1] = "INVALID_PATTERN", t[t.EOI_ANCHOR_FOUND = 2] = "EOI_ANCHOR_FOUND", t[t.UNSUPPORTED_FLAGS_FOUND = 3] = "UNSUPPORTED_FLAGS_FOUND", t[t.DUPLICATE_PATTERNS_FOUND = 4] = "DUPLICATE_PATTERNS_FOUND", t[t.INVALID_GROUP_TYPE_FOUND = 5] = "INVALID_GROUP_TYPE_FOUND", t[t.PUSH_MODE_DOES_NOT_EXIST = 6] = "PUSH_MODE_DOES_NOT_EXIST", t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE = 7] = "MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE", t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY = 8] = "MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY", t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST = 9] = "MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST", t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED = 10] = "LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED", t[t.SOI_ANCHOR_FOUND = 11] = "SOI_ANCHOR_FOUND", t[t.EMPTY_MATCH_PATTERN = 12] = "EMPTY_MATCH_PATTERN", t[t.NO_LINE_BREAKS_FLAGS = 13] = "NO_LINE_BREAKS_FLAGS", t[t.UNREACHABLE_PATTERN = 14] = "UNREACHABLE_PATTERN", t[t.IDENTIFY_TERMINATOR = 15] = "IDENTIFY_TERMINATOR", t[t.CUSTOM_LINE_BREAK = 16] = "CUSTOM_LINE_BREAK"; -})(se || (se = {})); -var jt = { - deferDefinitionErrorsHandling: !1, - positionTracking: "full", - lineTerminatorsPattern: /\n|\r\n?/g, - lineTerminatorCharacters: [` -`, "\r"], - ensureOptimizations: !1, - safeMode: !1, - errorMessageProvider: os, - traceInitPerf: !1, - skipValidations: !1 -}; -Object.freeze(jt); -var Qe = ( - /** @class */ - function() { - function t(e, n) { - var r = this; - if (n === void 0 && (n = jt), this.lexerDefinition = e, this.lexerDefinitionErrors = [], this.lexerDefinitionWarning = [], this.patternIdxToConfig = {}, this.charCodeToPatternIdxToConfig = {}, this.modes = [], this.emptyGroups = {}, this.config = void 0, this.trackStartLines = !0, this.trackEndLines = !0, this.hasCustom = !1, this.canModeBeOptimized = {}, typeof n == "boolean") - throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. -a boolean 2nd argument is no longer supported`); - this.config = Ri(jt, n); - var i = this.config.traceInitPerf; - i === !0 ? (this.traceInitMaxIdent = 1 / 0, this.traceInitPerf = !0) : typeof i == "number" && (this.traceInitMaxIdent = i, this.traceInitPerf = !0), this.traceInitIndent = -1, this.TRACE_INIT("Lexer Constructor", function() { - var a, c = !0; - r.TRACE_INIT("Lexer Config handling", function() { - if (r.config.lineTerminatorsPattern === jt.lineTerminatorsPattern) - r.config.lineTerminatorsPattern = al; - else if (r.config.lineTerminatorCharacters === jt.lineTerminatorCharacters) - throw Error(`Error: Missing property on the Lexer config. - For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`); - if (n.safeMode && n.ensureOptimizations) - throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.'); - r.trackStartLines = /full|onlyStart/i.test(r.config.positionTracking), r.trackEndLines = /full/i.test(r.config.positionTracking), ot(e) ? (a = { modes: {} }, a.modes[Lt] = Se(e), a[Lt] = Lt) : (c = !1, a = on(e)); - }), r.config.skipValidations === !1 && (r.TRACE_INIT("performRuntimeChecks", function() { - r.lexerDefinitionErrors = r.lexerDefinitionErrors.concat(rl(a, r.trackStartLines, r.config.lineTerminatorCharacters)); - }), r.TRACE_INIT("performWarningRuntimeChecks", function() { - r.lexerDefinitionWarning = r.lexerDefinitionWarning.concat(il(a, r.trackStartLines, r.config.lineTerminatorCharacters)); - })), a.modes = a.modes ? a.modes : {}, V(a.modes, function(o, s) { - a.modes[s] = Ht(o, function(l) { - return pt(l); - }); - }); - var h = Ze(a.modes); - if (V(a.modes, function(o, s) { - r.TRACE_INIT("Mode: <" + s + "> processing", function() { - if (r.modes.push(s), r.config.skipValidations === !1 && r.TRACE_INIT("validatePatterns", function() { - r.lexerDefinitionErrors = r.lexerDefinitionErrors.concat(Gc(o, h)); - }), ee(r.lexerDefinitionErrors)) { - cn(o); - var l; - r.TRACE_INIT("analyzeTokenTypes", function() { - l = Vc(o, { - lineTerminatorCharacters: r.config.lineTerminatorCharacters, - positionTracking: n.positionTracking, - ensureOptimizations: n.ensureOptimizations, - safeMode: n.safeMode, - tracer: r.TRACE_INIT.bind(r) - }); - }), r.patternIdxToConfig[s] = l.patternIdxToConfig, r.charCodeToPatternIdxToConfig[s] = l.charCodeToPatternIdxToConfig, r.emptyGroups = Ri(r.emptyGroups, l.emptyGroups), r.hasCustom = l.hasCustom || r.hasCustom, r.canModeBeOptimized[s] = l.canBeOptimized; - } - }); - }), r.defaultMode = a.defaultMode, !ee(r.lexerDefinitionErrors) && !r.config.deferDefinitionErrorsHandling) { - var p = x(r.lexerDefinitionErrors, function(o) { - return o.message; - }), u = p.join(`----------------------- -`); - throw new Error(`Errors detected in definition of Lexer: -` + u); - } - V(r.lexerDefinitionWarning, function(o) { - Yo(o.message); - }), r.TRACE_INIT("Choosing sub-methods implementations", function() { - if (Jo ? (r.chopInput = Ni, r.match = r.matchWithTest) : (r.updateLastIndex = de, r.match = r.matchWithExec), c && (r.handleModes = de), r.trackStartLines === !1 && (r.computeNewColumn = Ni), r.trackEndLines === !1 && (r.updateTokenEndLineColumnLocation = de), /full/i.test(r.config.positionTracking)) - r.createTokenInstance = r.createFullToken; - else if (/onlyStart/i.test(r.config.positionTracking)) - r.createTokenInstance = r.createStartOnlyToken; - else if (/onlyOffset/i.test(r.config.positionTracking)) - r.createTokenInstance = r.createOffsetOnlyToken; - else - throw Error('Invalid config option: "' + r.config.positionTracking + '"'); - r.hasCustom ? (r.addToken = r.addTokenUsingPush, r.handlePayload = r.handlePayloadWithCustom) : (r.addToken = r.addTokenUsingMemberAccess, r.handlePayload = r.handlePayloadNoCustom); - }), r.TRACE_INIT("Failed Optimization Warnings", function() { - var o = Ne(r.canModeBeOptimized, function(s, l, f) { - return l === !1 && s.push(f), s; - }, []); - if (n.ensureOptimizations && !ee(o)) - throw Error("Lexer Modes: < " + o.join(", ") + ` > cannot be optimized. + for details.`,type:se.NO_LINE_BREAKS_FLAGS}),r}function sl(t){var e={},n=Ze(t);return V(n,function(r){var i=t[r];if(ot(i))e[r]=[];else throw Error("non exhaustive match")}),e}function ss(t){var e=t.PATTERN;if(dt(e))return!1;if(Ct(e))return!0;if($(e,"exec"))return!0;if(st(e))return!1;throw Error("non exhaustive match")}function al(t){return st(t)&&t.length===1?t.charCodeAt(0):!1}var cl={test:function(t){for(var e=t.length,n=this.lastIndex;n Token Type +`)+(" Root cause: "+e.errMsg+`. +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR";if(e.issue===se.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. +`+(" The problem is in the <"+t.name+`> Token Type +`)+" For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK";throw Error("non exhaustive match")}function cs(t){var e=x(t,function(n){return st(n)&&n.length>0?n.charCodeAt(0):n});return e}function Rr(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}var Jt=256;function Tt(t){return t255?255+~~(t/255):t}}function Kn(t,e){var n=t.tokenTypeIdx;return n===e.tokenTypeIdx?!0:e.isParent===!0&&e.categoryMatchesMap[n]===!0}function Bn(t,e){return t.tokenTypeIdx===e.tokenTypeIdx}var Ui=1,ls={};function cn(t){var e=fl(t);hl(e),dl(e),pl(e),V(e,function(n){n.isParent=n.categoryMatches.length>0})}function fl(t){for(var e=Se(t),n=t,r=!0;r;){n=sn(Ge(x(n,function(a){return a.CATEGORIES})));var i=qn(n,e);e=e.concat(i),ee(i)?r=!1:n=i}return e}function hl(t){V(t,function(e){fs(e)||(ls[Ui]=e,e.tokenTypeIdx=Ui++),Li(e)&&!ot(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Li(e)||(e.CATEGORIES=[]),vl(e)||(e.categoryMatches=[]),gl(e)||(e.categoryMatchesMap={})})}function pl(t){V(t,function(e){e.categoryMatches=[],V(e.categoryMatchesMap,function(n,r){e.categoryMatches.push(ls[r].tokenTypeIdx)})})}function dl(t){V(t,function(e){us([],e)})}function us(t,e){V(t,function(n){e.categoryMatchesMap[n.tokenTypeIdx]=!0}),V(e.CATEGORIES,function(n){var r=t.concat(e);fe(r,n)||us(r,n)})}function fs(t){return $(t,"tokenTypeIdx")}function Li(t){return $(t,"CATEGORIES")}function vl(t){return $(t,"categoryMatches")}function gl(t){return $(t,"categoryMatchesMap")}function El(t){return $(t,"tokenTypeIdx")}var hs={buildUnableToPopLexerModeMessage:function(t){return"Unable to pop Lexer Mode after encountering Token ->"+t.image+"<- The Mode Stack is empty"},buildUnexpectedCharactersMessage:function(t,e,n,r,i){return"unexpected character: ->"+t.charAt(e)+"<- at offset: "+e+","+(" skipped "+n+" characters.")}},se;(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK"})(se||(se={}));var jt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` +`,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:hs,traceInitPerf:!1,skipValidations:!1};Object.freeze(jt);var Qe=function(){function t(e,n){var r=this;if(n===void 0&&(n=jt),this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.config=void 0,this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},typeof n=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. +a boolean 2nd argument is no longer supported`);this.config=Ti(jt,n);var i=this.config.traceInitPerf;i===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof i=="number"&&(this.traceInitMaxIdent=i,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",function(){var a,c=!0;r.TRACE_INIT("Lexer Config handling",function(){if(r.config.lineTerminatorsPattern===jt.lineTerminatorsPattern)r.config.lineTerminatorsPattern=cl;else if(r.config.lineTerminatorCharacters===jt.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. + For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(n.safeMode&&n.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');r.trackStartLines=/full|onlyStart/i.test(r.config.positionTracking),r.trackEndLines=/full/i.test(r.config.positionTracking),ot(e)?(a={modes:{}},a.modes[Lt]=Se(e),a[Lt]=Lt):(c=!1,a=on(e))}),r.config.skipValidations===!1&&(r.TRACE_INIT("performRuntimeChecks",function(){r.lexerDefinitionErrors=r.lexerDefinitionErrors.concat(il(a,r.trackStartLines,r.config.lineTerminatorCharacters))}),r.TRACE_INIT("performWarningRuntimeChecks",function(){r.lexerDefinitionWarning=r.lexerDefinitionWarning.concat(ol(a,r.trackStartLines,r.config.lineTerminatorCharacters))})),a.modes=a.modes?a.modes:{},V(a.modes,function(o,s){a.modes[s]=Wt(o,function(l){return pt(l)})});var h=Ze(a.modes);if(V(a.modes,function(o,s){r.TRACE_INIT("Mode: <"+s+"> processing",function(){if(r.modes.push(s),r.config.skipValidations===!1&&r.TRACE_INIT("validatePatterns",function(){r.lexerDefinitionErrors=r.lexerDefinitionErrors.concat($c(o,h))}),ee(r.lexerDefinitionErrors)){cn(o);var l;r.TRACE_INIT("analyzeTokenTypes",function(){l=Gc(o,{lineTerminatorCharacters:r.config.lineTerminatorCharacters,positionTracking:n.positionTracking,ensureOptimizations:n.ensureOptimizations,safeMode:n.safeMode,tracer:r.TRACE_INIT.bind(r)})}),r.patternIdxToConfig[s]=l.patternIdxToConfig,r.charCodeToPatternIdxToConfig[s]=l.charCodeToPatternIdxToConfig,r.emptyGroups=Ti(r.emptyGroups,l.emptyGroups),r.hasCustom=l.hasCustom||r.hasCustom,r.canModeBeOptimized[s]=l.canBeOptimized}})}),r.defaultMode=a.defaultMode,!ee(r.lexerDefinitionErrors)&&!r.config.deferDefinitionErrorsHandling){var p=x(r.lexerDefinitionErrors,function(o){return o.message}),u=p.join(`----------------------- +`);throw new Error(`Errors detected in definition of Lexer: +`+u)}V(r.lexerDefinitionWarning,function(o){jo(o.message)}),r.TRACE_INIT("Choosing sub-methods implementations",function(){if(os?(r.chopInput=wi,r.match=r.matchWithTest):(r.updateLastIndex=de,r.match=r.matchWithExec),c&&(r.handleModes=de),r.trackStartLines===!1&&(r.computeNewColumn=wi),r.trackEndLines===!1&&(r.updateTokenEndLineColumnLocation=de),/full/i.test(r.config.positionTracking))r.createTokenInstance=r.createFullToken;else if(/onlyStart/i.test(r.config.positionTracking))r.createTokenInstance=r.createStartOnlyToken;else if(/onlyOffset/i.test(r.config.positionTracking))r.createTokenInstance=r.createOffsetOnlyToken;else throw Error('Invalid config option: "'+r.config.positionTracking+'"');r.hasCustom?(r.addToken=r.addTokenUsingPush,r.handlePayload=r.handlePayloadWithCustom):(r.addToken=r.addTokenUsingMemberAccess,r.handlePayload=r.handlePayloadNoCustom)}),r.TRACE_INIT("Failed Optimization Warnings",function(){var o=Ne(r.canModeBeOptimized,function(s,l,f){return l===!1&&s.push(f),s},[]);if(n.ensureOptimizations&&!ee(o))throw Error("Lexer Modes: < "+o.join(", ")+` > cannot be optimized. Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. - Or inspect the console log for details on how to resolve these issues.`); - }), r.TRACE_INIT("clearRegExpParserCache", function() { - Sc(); - }), r.TRACE_INIT("toFastProperties", function() { - Ko(r); - }); - }); - } - return t.prototype.tokenize = function(e, n) { - if (n === void 0 && (n = this.defaultMode), !ee(this.lexerDefinitionErrors)) { - var r = x(this.lexerDefinitionErrors, function(c) { - return c.message; - }), i = r.join(`----------------------- -`); - throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: -` + i); - } - var a = this.tokenizeInternal(e, n); - return a; - }, t.prototype.tokenizeInternal = function(e, n) { - var r = this, i, a, c, h, p, u, o, s, l, f, v, d, g, E, A = e, m = A.length, N = 0, y = 0, R = this.hasCustom ? 0 : Math.floor(e.length / 10), T = new Array(R), w = [], C = this.trackStartLines ? 1 : void 0, M = this.trackStartLines ? 1 : void 0, _ = ol(this.emptyGroups), W = this.trackStartLines, F = this.config.lineTerminatorsPattern, S = 0, G = [], J = [], le = [], nt = []; - Object.freeze(nt); - var Ae = void 0; - function Be() { - return G; - } - function Fe(we) { - var Kt = Tt(we), Ft = J[Kt]; - return Ft === void 0 ? nt : Ft; - } - var rt = function(we) { - if (le.length === 1 && // if we have both a POP_MODE and a PUSH_MODE this is in-fact a "transition" - // So no error should occur. - we.tokenType.PUSH_MODE === void 0) { - var Kt = r.config.errorMessageProvider.buildUnableToPopLexerModeMessage(we); - w.push({ - offset: we.startOffset, - line: we.startLine !== void 0 ? we.startLine : void 0, - column: we.startColumn !== void 0 ? we.startColumn : void 0, - length: we.image.length, - message: Kt - }); - } else { - le.pop(); - var Ft = Wo(le); - G = r.patternIdxToConfig[Ft], J = r.charCodeToPatternIdxToConfig[Ft], S = G.length; - var qs = r.canModeBeOptimized[Ft] && r.config.safeMode === !1; - J && qs ? Ae = Fe : Ae = Be; - } - }; - function Ee(we) { - le.push(we), J = this.charCodeToPatternIdxToConfig[we], G = this.patternIdxToConfig[we], S = G.length, S = G.length; - var Kt = this.canModeBeOptimized[we] && this.config.safeMode === !1; - J && Kt ? Ae = Fe : Ae = Be; - } - Ee.call(this, n); - for (var ue; N < m; ) { - p = null; - var Et = A.charCodeAt(N), Bt = Ae(Et), mt = Bt.length; - for (i = 0; i < mt; i++) { - ue = Bt[i]; - var Rt = ue.pattern; - u = null; - var qt = ue.short; - if (qt !== !1 ? Et === qt && (p = Rt) : ue.isCustom === !0 ? (E = Rt.exec(A, N, T, _), E !== null ? (p = E[0], E.payload !== void 0 && (u = E.payload)) : p = null) : (this.updateLastIndex(Rt, N), p = this.match(Rt, e, N)), p !== null) { - if (h = ue.longerAlt, h !== void 0) { - var jn = G[h], er = jn.pattern; - o = null, jn.isCustom === !0 ? (E = er.exec(A, N, T, _), E !== null ? (c = E[0], E.payload !== void 0 && (o = E.payload)) : c = null) : (this.updateLastIndex(er, N), c = this.match(er, e, N)), c && c.length > p.length && (p = c, u = o, ue = jn); - } - break; - } - } - if (p !== null) { - if (s = p.length, l = ue.group, l !== void 0 && (f = ue.tokenTypeIdx, v = this.createTokenInstance(p, N, f, ue.tokenType, C, M, s), this.handlePayload(v, u), l === !1 ? y = this.addToken(T, y, v) : _[l].push(v)), e = this.chopInput(e, s), N = N + s, M = this.computeNewColumn(M, s), W === !0 && ue.canLineTerminator === !0) { - var fn = 0, tr = void 0, nr = void 0; - F.lastIndex = 0; - do - tr = F.test(p), tr === !0 && (nr = F.lastIndex - 1, fn++); - while (tr === !0); - fn !== 0 && (C = C + fn, M = s - nr, this.updateTokenEndLineColumnLocation(v, l, nr, fn, C, M, s)); - } - this.handleModes(ue, rt, Ee, v); - } else { - for (var rr = N, ti = C, ni = M, Yt = !1; !Yt && N < m; ) - for (A.charCodeAt(N), e = this.chopInput(e, 1), N++, a = 0; a < S; a++) { - var ir = G[a], Rt = ir.pattern, qt = ir.short; - if (qt !== !1 ? A.charCodeAt(N) === qt && (Yt = !0) : ir.isCustom === !0 ? Yt = Rt.exec(A, N, T, _) !== null : (this.updateLastIndex(Rt, N), Yt = Rt.exec(e) !== null), Yt === !0) - break; - } - d = N - rr, g = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(A, rr, d, ti, ni), w.push({ - offset: rr, - line: ti, - column: ni, - length: d, - message: g - }); - } - } - return this.hasCustom || (T.length = y), { - tokens: T, - groups: _, - errors: w - }; - }, t.prototype.handleModes = function(e, n, r, i) { - if (e.pop === !0) { - var a = e.push; - n(i), a !== void 0 && r.call(this, a); - } else - e.push !== void 0 && r.call(this, e.push); - }, t.prototype.chopInput = function(e, n) { - return e.substring(n); - }, t.prototype.updateLastIndex = function(e, n) { - e.lastIndex = n; - }, t.prototype.updateTokenEndLineColumnLocation = function(e, n, r, i, a, c, h) { - var p, u; - n !== void 0 && (p = r === h - 1, u = p ? -1 : 0, i === 1 && p === !0 || (e.endLine = a + u, e.endColumn = c - 1 + -u)); - }, t.prototype.computeNewColumn = function(e, n) { - return e + n; - }, t.prototype.createTokenInstance = function() { - return null; - }, t.prototype.createOffsetOnlyToken = function(e, n, r, i) { - return { - image: e, - startOffset: n, - tokenTypeIdx: r, - tokenType: i - }; - }, t.prototype.createStartOnlyToken = function(e, n, r, i, a, c) { - return { - image: e, - startOffset: n, - startLine: a, - startColumn: c, - tokenTypeIdx: r, - tokenType: i - }; - }, t.prototype.createFullToken = function(e, n, r, i, a, c, h) { - return { - image: e, - startOffset: n, - endOffset: n + h - 1, - startLine: a, - endLine: a, - startColumn: c, - endColumn: c + h - 1, - tokenTypeIdx: r, - tokenType: i - }; - }, t.prototype.addToken = function(e, n, r) { - return 666; - }, t.prototype.addTokenUsingPush = function(e, n, r) { - return e.push(r), n; - }, t.prototype.addTokenUsingMemberAccess = function(e, n, r) { - return e[n] = r, n++, n; - }, t.prototype.handlePayload = function(e, n) { - }, t.prototype.handlePayloadNoCustom = function(e, n) { - }, t.prototype.handlePayloadWithCustom = function(e, n) { - n !== null && (e.payload = n); - }, t.prototype.match = function(e, n, r) { - return null; - }, t.prototype.matchWithTest = function(e, n, r) { - var i = e.test(n); - return i === !0 ? n.substring(r, e.lastIndex) : null; - }, t.prototype.matchWithExec = function(e, n) { - var r = e.exec(n); - return r !== null ? r[0] : r; - }, t.prototype.TRACE_INIT = function(e, n) { - if (this.traceInitPerf === !0) { - this.traceInitIndent++; - var r = new Array(this.traceInitIndent + 1).join(" "); - this.traceInitIndent < this.traceInitMaxIdent && console.log(r + "--> <" + e + ">"); - var i = zo(n), a = i.time, c = i.value, h = a > 10 ? console.warn : console.log; - return this.traceInitIndent < this.traceInitMaxIdent && h(r + "<-- <" + e + "> time: " + a + "ms"), this.traceInitIndent--, c; - } else - return n(); - }, t.SKIPPED = "This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.", t.NA = /NOT_APPLICABLE/, t; - }() -); -function Pt(t) { - return ss(t) ? t.LABEL : t.name; -} -function El(t) { - return t.name; -} -function ss(t) { - return st(t.LABEL) && t.LABEL !== ""; -} -var ml = "parent", Oi = "categories", Mi = "label", Ui = "group", Li = "push_mode", _i = "pop_mode", Pi = "longer_alt", ki = "line_breaks", xi = "start_chars_hint"; -function Wr(t) { - return Rl(t); -} -function Rl(t) { - var e = t.pattern, n = {}; - if (n.name = t.name, pt(e) || (n.PATTERN = e), $(t, ml)) - throw `The parent property is no longer supported. -See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`; - return $(t, Oi) && (n.CATEGORIES = t[Oi]), cn([n]), $(t, Mi) && (n.LABEL = t[Mi]), $(t, Ui) && (n.GROUP = t[Ui]), $(t, _i) && (n.POP_MODE = t[_i]), $(t, Li) && (n.PUSH_MODE = t[Li]), $(t, Pi) && (n.LONGER_ALT = t[Pi]), $(t, ki) && (n.LINE_BREAKS = t[ki]), $(t, xi) && (n.START_CHARS_HINT = t[xi]), n; -} -var wt = Wr({ name: "EOF", pattern: Qe.NA }); -cn([wt]); -function qn(t, e, n, r, i, a, c, h) { - return { - image: e, - startOffset: n, - endOffset: r, - startLine: i, - endLine: a, - startColumn: c, - endColumn: h, - tokenTypeIdx: t.tokenTypeIdx, - tokenType: t - }; -} -function Nl(t, e) { - return Wn(t, e); -} -var gt = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), ct = ( - /** @class */ - function() { - function t(e) { - this._definition = e; - } - return Object.defineProperty(t.prototype, "definition", { - get: function() { - return this._definition; - }, - set: function(e) { - this._definition = e; - }, - enumerable: !1, - configurable: !0 - }), t.prototype.accept = function(e) { - e.visit(this), V(this.definition, function(n) { - n.accept(e); - }); - }, t; - }() -), Ue = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, []) || this; - return r.idx = 1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return Object.defineProperty(e.prototype, "definition", { - get: function() { - return this.referencedRule !== void 0 ? this.referencedRule.definition : []; - }, - set: function(n) { - }, - enumerable: !1, - configurable: !0 - }), e.prototype.accept = function(n) { - n.visit(this); - }, e; - }(ct) -), kt = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.orgText = "", tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), Te = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.ignoreAmbiguities = !1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), ye = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.idx = 1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), qe = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.idx = 1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), Ye = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.idx = 1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), ce = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.idx = 1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), $e = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.idx = 1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return e; - }(ct) -), He = ( - /** @class */ - function(t) { - gt(e, t); - function e(n) { - var r = t.call(this, n.definition) || this; - return r.idx = 1, r.ignoreAmbiguities = !1, r.hasPredicates = !1, tt(r, et(n, function(i) { - return i !== void 0; - })), r; - } - return Object.defineProperty(e.prototype, "definition", { - get: function() { - return this._definition; - }, - set: function(n) { - this._definition = n; - }, - enumerable: !1, - configurable: !0 - }), e; - }(ct) -), ne = ( - /** @class */ - function() { - function t(e) { - this.idx = 1, tt(this, et(e, function(n) { - return n !== void 0; - })); - } - return t.prototype.accept = function(e) { - e.visit(this); - }, t; - }() -); -function as(t) { - return x(t, en); -} -function en(t) { - function e(i) { - return x(i, en); - } - if (t instanceof Ue) - return { - type: "NonTerminal", - name: t.nonTerminalName, - idx: t.idx - }; - if (t instanceof Te) - return { - type: "Alternative", - definition: e(t.definition) - }; - if (t instanceof ye) - return { - type: "Option", - idx: t.idx, - definition: e(t.definition) - }; - if (t instanceof qe) - return { - type: "RepetitionMandatory", - idx: t.idx, - definition: e(t.definition) - }; - if (t instanceof Ye) - return { - type: "RepetitionMandatoryWithSeparator", - idx: t.idx, - separator: en(new ne({ terminalType: t.separator })), - definition: e(t.definition) - }; - if (t instanceof $e) - return { - type: "RepetitionWithSeparator", - idx: t.idx, - separator: en(new ne({ terminalType: t.separator })), - definition: e(t.definition) - }; - if (t instanceof ce) - return { - type: "Repetition", - idx: t.idx, - definition: e(t.definition) - }; - if (t instanceof He) - return { - type: "Alternation", - idx: t.idx, - definition: e(t.definition) - }; - if (t instanceof ne) { - var n = { - type: "Terminal", - name: t.terminalType.name, - label: Pt(t.terminalType), - idx: t.idx - }, r = t.terminalType.PATTERN; - return t.terminalType.PATTERN && (n.pattern = dt(r) ? r.source : r), n; - } else { - if (t instanceof kt) - return { - type: "Rule", - name: t.name, - orgText: t.orgText, - definition: e(t.definition) - }; - throw Error("non exhaustive match"); - } -} -var Yn = ( - /** @class */ - function() { - function t() { - } - return t.prototype.walk = function(e, n) { - var r = this; - n === void 0 && (n = []), V(e.definition, function(i, a) { - var c = Re(e.definition, a + 1); - if (i instanceof Ue) - r.walkProdRef(i, c, n); - else if (i instanceof ne) - r.walkTerminal(i, c, n); - else if (i instanceof Te) - r.walkFlat(i, c, n); - else if (i instanceof ye) - r.walkOption(i, c, n); - else if (i instanceof qe) - r.walkAtLeastOne(i, c, n); - else if (i instanceof Ye) - r.walkAtLeastOneSep(i, c, n); - else if (i instanceof $e) - r.walkManySep(i, c, n); - else if (i instanceof ce) - r.walkMany(i, c, n); - else if (i instanceof He) - r.walkOr(i, c, n); - else - throw Error("non exhaustive match"); - }); - }, t.prototype.walkTerminal = function(e, n, r) { - }, t.prototype.walkProdRef = function(e, n, r) { - }, t.prototype.walkFlat = function(e, n, r) { - var i = n.concat(r); - this.walk(e, i); - }, t.prototype.walkOption = function(e, n, r) { - var i = n.concat(r); - this.walk(e, i); - }, t.prototype.walkAtLeastOne = function(e, n, r) { - var i = [ - new ye({ definition: e.definition }) - ].concat(n, r); - this.walk(e, i); - }, t.prototype.walkAtLeastOneSep = function(e, n, r) { - var i = Si(e, n, r); - this.walk(e, i); - }, t.prototype.walkMany = function(e, n, r) { - var i = [ - new ye({ definition: e.definition }) - ].concat(n, r); - this.walk(e, i); - }, t.prototype.walkManySep = function(e, n, r) { - var i = Si(e, n, r); - this.walk(e, i); - }, t.prototype.walkOr = function(e, n, r) { - var i = this, a = n.concat(r); - V(e.definition, function(c) { - var h = new Te({ definition: [c] }); - i.walk(h, a); - }); - }, t; - }() -); -function Si(t, e, n) { - var r = [ - new ye({ - definition: [new ne({ terminalType: t.separator })].concat(t.definition) - }) - ], i = r.concat(e, n); - return i; -} -var xt = ( - /** @class */ - function() { - function t() { - } - return t.prototype.visit = function(e) { - var n = e; - switch (n.constructor) { - case Ue: - return this.visitNonTerminal(n); - case Te: - return this.visitAlternative(n); - case ye: - return this.visitOption(n); - case qe: - return this.visitRepetitionMandatory(n); - case Ye: - return this.visitRepetitionMandatoryWithSeparator(n); - case $e: - return this.visitRepetitionWithSeparator(n); - case ce: - return this.visitRepetition(n); - case He: - return this.visitAlternation(n); - case ne: - return this.visitTerminal(n); - case kt: - return this.visitRule(n); - default: - throw Error("non exhaustive match"); - } - }, t.prototype.visitNonTerminal = function(e) { - }, t.prototype.visitAlternative = function(e) { - }, t.prototype.visitOption = function(e) { - }, t.prototype.visitRepetition = function(e) { - }, t.prototype.visitRepetitionMandatory = function(e) { - }, t.prototype.visitRepetitionMandatoryWithSeparator = function(e) { - }, t.prototype.visitRepetitionWithSeparator = function(e) { - }, t.prototype.visitAlternation = function(e) { - }, t.prototype.visitTerminal = function(e) { - }, t.prototype.visitRule = function(e) { - }, t; - }() -), Al = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(); -function yl(t) { - return t instanceof Te || t instanceof ye || t instanceof ce || t instanceof qe || t instanceof Ye || t instanceof $e || t instanceof ne || t instanceof kt; -} -function Bn(t, e) { - e === void 0 && (e = []); - var n = t instanceof ye || t instanceof ce || t instanceof $e; - return n ? !0 : t instanceof He ? qo(t.definition, function(r) { - return Bn(r, e); - }) : t instanceof Ue && fe(e, t) ? !1 : t instanceof ct ? (t instanceof Ue && e.push(t), We(t.definition, function(r) { - return Bn(r, e); - })) : !1; -} -function Tl(t) { - return t instanceof He; -} -function it(t) { - if (t instanceof Ue) - return "SUBRULE"; - if (t instanceof ye) - return "OPTION"; - if (t instanceof He) - return "OR"; - if (t instanceof qe) - return "AT_LEAST_ONE"; - if (t instanceof Ye) - return "AT_LEAST_ONE_SEP"; - if (t instanceof $e) - return "MANY_SEP"; - if (t instanceof ce) - return "MANY"; - if (t instanceof ne) - return "CONSUME"; - throw Error("non exhaustive match"); -} -var cs = ( - /** @class */ - function(t) { - Al(e, t); - function e() { - var n = t !== null && t.apply(this, arguments) || this; - return n.separator = "-", n.dslMethods = { - option: [], - alternation: [], - repetition: [], - repetitionWithSeparator: [], - repetitionMandatory: [], - repetitionMandatoryWithSeparator: [] - }, n; - } - return e.prototype.reset = function() { - this.dslMethods = { - option: [], - alternation: [], - repetition: [], - repetitionWithSeparator: [], - repetitionMandatory: [], - repetitionMandatoryWithSeparator: [] - }; - }, e.prototype.visitTerminal = function(n) { - var r = n.terminalType.name + this.separator + "Terminal"; - $(this.dslMethods, r) || (this.dslMethods[r] = []), this.dslMethods[r].push(n); - }, e.prototype.visitNonTerminal = function(n) { - var r = n.nonTerminalName + this.separator + "Terminal"; - $(this.dslMethods, r) || (this.dslMethods[r] = []), this.dslMethods[r].push(n); - }, e.prototype.visitOption = function(n) { - this.dslMethods.option.push(n); - }, e.prototype.visitRepetitionWithSeparator = function(n) { - this.dslMethods.repetitionWithSeparator.push(n); - }, e.prototype.visitRepetitionMandatory = function(n) { - this.dslMethods.repetitionMandatory.push(n); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(n) { - this.dslMethods.repetitionMandatoryWithSeparator.push(n); - }, e.prototype.visitRepetition = function(n) { - this.dslMethods.repetition.push(n); - }, e.prototype.visitAlternation = function(n) { - this.dslMethods.alternation.push(n); - }, e; - }(xt) -), yn = new cs(); -function wl(t) { - yn.reset(), t.accept(yn); - var e = yn.dslMethods; - return yn.reset(), e; -} -function ln(t) { - if (t instanceof Ue) - return ln(t.referencedRule); - if (t instanceof ne) - return Ol(t); - if (yl(t)) - return Cl(t); - if (Tl(t)) - return Il(t); - throw Error("non exhaustive match"); -} -function Cl(t) { - for (var e = [], n = t.definition, r = 0, i = n.length > r, a, c = !0; i && c; ) - a = n[r], c = Bn(a), e = e.concat(ln(a)), r = r + 1, i = n.length > r; - return Vr(e); -} -function Il(t) { - var e = x(t.definition, function(n) { - return ln(n); - }); - return Vr(Ge(e)); -} -function Ol(t) { - return [t.terminalType]; -} -var ls = "_~IN~_", Ml = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), Ul = ( - /** @class */ - function(t) { - Ml(e, t); - function e(n) { - var r = t.call(this) || this; - return r.topProd = n, r.follows = {}, r; - } - return e.prototype.startWalking = function() { - return this.walk(this.topProd), this.follows; - }, e.prototype.walkTerminal = function(n, r, i) { - }, e.prototype.walkProdRef = function(n, r, i) { - var a = _l(n.referencedRule, n.idx) + this.topProd.name, c = r.concat(i), h = new Te({ definition: c }), p = ln(h); - this.follows[a] = p; - }, e; - }(Yn) -); -function Ll(t) { - var e = {}; - return V(t, function(n) { - var r = new Ul(n).startWalking(); - tt(e, r); - }), e; -} -function _l(t, e) { - return t.name + e + ls; -} -var qr = { - buildMismatchTokenMessage: function(t) { - var e = t.expected, n = t.actual; - t.previous, t.ruleName; - var r = ss(e), i = r ? "--> " + Pt(e) + " <--" : "token of type --> " + e.name + " <--", a = "Expecting " + i + " but found --> '" + n.image + "' <--"; - return a; - }, - buildNotAllInputParsedMessage: function(t) { - var e = t.firstRedundant; - return t.ruleName, "Redundant input, expecting EOF but found: " + e.image; - }, - buildNoViableAltMessage: function(t) { - var e = t.expectedPathsPerAlt, n = t.actual; - t.previous; - var r = t.customUserDescription; - t.ruleName; - var i = "Expecting: ", a = Je(n).image, c = ` -but found: '` + a + "'"; - if (r) - return i + r + c; - var h = Ne(e, function(s, l) { - return s.concat(l); - }, []), p = x(h, function(s) { - return "[" + x(s, function(l) { - return Pt(l); - }).join(", ") + "]"; - }), u = x(p, function(s, l) { - return " " + (l + 1) + ". " + s; - }), o = `one of these possible Token sequences: -` + u.join(` -`); - return i + o + c; - }, - buildEarlyExitMessage: function(t) { - var e = t.expectedIterationPaths, n = t.actual, r = t.customUserDescription; - t.ruleName; - var i = "Expecting: ", a = Je(n).image, c = ` -but found: '` + a + "'"; - if (r) - return i + r + c; - var h = x(e, function(u) { - return "[" + x(u, function(o) { - return Pt(o); - }).join(",") + "]"; - }), p = `expecting at least one iteration which starts with one of these possible Token sequences:: - ` + ("<" + h.join(" ,") + ">"); - return i + p + c; - } -}; -Object.freeze(qr); -var us = { - buildRuleNotFoundError: function(t, e) { - var n = "Invalid grammar, reference to a rule which is not defined: ->" + e.nonTerminalName + `<- -inside top level rule: ->` + t.name + "<-"; - return n; - } -}, Kn = { - buildDuplicateFoundError: function(t, e) { - function n(o) { - return o instanceof ne ? o.terminalType.name : o instanceof Ue ? o.nonTerminalName : ""; - } - var r = t.name, i = Je(e), a = i.idx, c = it(i), h = n(i), p = a > 0, u = "->" + c + (p ? a : "") + "<- " + (h ? "with argument: ->" + h + "<-" : "") + ` - appears more than once (` + e.length + " times) in the top level rule: ->" + r + `<-. + Or inspect the console log for details on how to resolve these issues.`)}),r.TRACE_INIT("clearRegExpParserCache",function(){Bc()}),r.TRACE_INIT("toFastProperties",function(){es(r)})})}return t.prototype.tokenize=function(e,n){if(n===void 0&&(n=this.defaultMode),!ee(this.lexerDefinitionErrors)){var r=x(this.lexerDefinitionErrors,function(c){return c.message}),i=r.join(`----------------------- +`);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: +`+i)}var a=this.tokenizeInternal(e,n);return a},t.prototype.tokenizeInternal=function(e,n){var r=this,i,a,c,h,p,u,o,s,l,f,v,d,g,E,A=e,m=A.length,N=0,y=0,R=this.hasCustom?0:Math.floor(e.length/10),T=new Array(R),w=[],C=this.trackStartLines?1:void 0,M=this.trackStartLines?1:void 0,_=sl(this.emptyGroups),W=this.trackStartLines,F=this.config.lineTerminatorsPattern,S=0,G=[],J=[],le=[],nt=[];Object.freeze(nt);var Ae=void 0;function Be(){return G}function Fe(we){var Kt=Tt(we),Dt=J[Kt];return Dt===void 0?nt:Dt}var rt=function(we){if(le.length===1&&we.tokenType.PUSH_MODE===void 0){var Kt=r.config.errorMessageProvider.buildUnableToPopLexerModeMessage(we);w.push({offset:we.startOffset,line:we.startLine!==void 0?we.startLine:void 0,column:we.startColumn!==void 0?we.startColumn:void 0,length:we.image.length,message:Kt})}else{le.pop();var Dt=Zo(le);G=r.patternIdxToConfig[Dt],J=r.charCodeToPatternIdxToConfig[Dt],S=G.length;var Js=r.canModeBeOptimized[Dt]&&r.config.safeMode===!1;J&&Js?Ae=Fe:Ae=Be}};function Ee(we){le.push(we),J=this.charCodeToPatternIdxToConfig[we],G=this.patternIdxToConfig[we],S=G.length,S=G.length;var Kt=this.canModeBeOptimized[we]&&this.config.safeMode===!1;J&&Kt?Ae=Fe:Ae=Be}Ee.call(this,n);for(var ue;Np.length&&(p=c,u=o,ue=nr)}break}}if(p!==null){if(s=p.length,l=ue.group,l!==void 0&&(f=ue.tokenTypeIdx,v=this.createTokenInstance(p,N,f,ue.tokenType,C,M,s),this.handlePayload(v,u),l===!1?y=this.addToken(T,y,v):_[l].push(v)),e=this.chopInput(e,s),N=N+s,M=this.computeNewColumn(M,s),W===!0&&ue.canLineTerminator===!0){var fn=0,ir=void 0,or=void 0;F.lastIndex=0;do ir=F.test(p),ir===!0&&(or=F.lastIndex-1,fn++);while(ir===!0);fn!==0&&(C=C+fn,M=s-or,this.updateTokenEndLineColumnLocation(v,l,or,fn,C,M,s))}this.handleModes(ue,rt,Ee,v)}else{for(var sr=N,si=C,ai=M,Yt=!1;!Yt&&N <"+e+">");var i=ts(n),a=i.time,c=i.value,h=a>10?console.warn:console.log;return this.traceInitIndent time: "+a+"ms"),this.traceInitIndent--,c}else return n()},t.SKIPPED="This marks a skipped Token pattern, this means each token identified by it willbe consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.",t.NA=/NOT_APPLICABLE/,t}();function Pt(t){return ps(t)?t.LABEL:t.name}function ml(t){return t.name}function ps(t){return st(t.LABEL)&&t.LABEL!==""}var Rl="parent",_i="categories",Pi="label",ki="group",xi="push_mode",Si="pop_mode",Bi="longer_alt",Fi="line_breaks",bi="start_chars_hint";function Xr(t){return Nl(t)}function Nl(t){var e=t.pattern,n={};if(n.name=t.name,pt(e)||(n.PATTERN=e),$(t,Rl))throw`The parent property is no longer supported. +See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.`;return $(t,_i)&&(n.CATEGORIES=t[_i]),cn([n]),$(t,Pi)&&(n.LABEL=t[Pi]),$(t,ki)&&(n.GROUP=t[ki]),$(t,Si)&&(n.POP_MODE=t[Si]),$(t,xi)&&(n.PUSH_MODE=t[xi]),$(t,Bi)&&(n.LONGER_ALT=t[Bi]),$(t,Fi)&&(n.LINE_BREAKS=t[Fi]),$(t,bi)&&(n.START_CHARS_HINT=t[bi]),n}var wt=Xr({name:"EOF",pattern:Qe.NA});cn([wt]);function zn(t,e,n,r,i,a,c,h){return{image:e,startOffset:n,endOffset:r,startLine:i,endLine:a,startColumn:c,endColumn:h,tokenTypeIdx:t.tokenTypeIdx,tokenType:t}}function Al(t,e){return Kn(t,e)}var gt=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),ct=function(){function t(e){this._definition=e}return Object.defineProperty(t.prototype,"definition",{get:function(){return this._definition},set:function(e){this._definition=e},enumerable:!1,configurable:!0}),t.prototype.accept=function(e){e.visit(this),V(this.definition,function(n){n.accept(e)})},t}(),Ue=function(t){gt(e,t);function e(n){var r=t.call(this,[])||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return Object.defineProperty(e.prototype,"definition",{get:function(){return this.referencedRule!==void 0?this.referencedRule.definition:[]},set:function(n){},enumerable:!1,configurable:!0}),e.prototype.accept=function(n){n.visit(this)},e}(ct),xt=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.orgText="",tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),Te=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.ignoreAmbiguities=!1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),ye=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),qe=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),Ye=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),ce=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),$e=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,tt(r,et(n,function(i){return i!==void 0})),r}return e}(ct),He=function(t){gt(e,t);function e(n){var r=t.call(this,n.definition)||this;return r.idx=1,r.ignoreAmbiguities=!1,r.hasPredicates=!1,tt(r,et(n,function(i){return i!==void 0})),r}return Object.defineProperty(e.prototype,"definition",{get:function(){return this._definition},set:function(n){this._definition=n},enumerable:!1,configurable:!0}),e}(ct),ne=function(){function t(e){this.idx=1,tt(this,et(e,function(n){return n!==void 0}))}return t.prototype.accept=function(e){e.visit(this)},t}();function ds(t){return x(t,en)}function en(t){function e(i){return x(i,en)}if(t instanceof Ue)return{type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};if(t instanceof Te)return{type:"Alternative",definition:e(t.definition)};if(t instanceof ye)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof qe)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Ye)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:en(new ne({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof $e)return{type:"RepetitionWithSeparator",idx:t.idx,separator:en(new ne({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof ce)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof He)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof ne){var n={type:"Terminal",name:t.terminalType.name,label:Pt(t.terminalType),idx:t.idx},r=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(n.pattern=dt(r)?r.source:r),n}else{if(t instanceof xt)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}var Xn=function(){function t(){}return t.prototype.walk=function(e,n){var r=this;n===void 0&&(n=[]),V(e.definition,function(i,a){var c=Re(e.definition,a+1);if(i instanceof Ue)r.walkProdRef(i,c,n);else if(i instanceof ne)r.walkTerminal(i,c,n);else if(i instanceof Te)r.walkFlat(i,c,n);else if(i instanceof ye)r.walkOption(i,c,n);else if(i instanceof qe)r.walkAtLeastOne(i,c,n);else if(i instanceof Ye)r.walkAtLeastOneSep(i,c,n);else if(i instanceof $e)r.walkManySep(i,c,n);else if(i instanceof ce)r.walkMany(i,c,n);else if(i instanceof He)r.walkOr(i,c,n);else throw Error("non exhaustive match")})},t.prototype.walkTerminal=function(e,n,r){},t.prototype.walkProdRef=function(e,n,r){},t.prototype.walkFlat=function(e,n,r){var i=n.concat(r);this.walk(e,i)},t.prototype.walkOption=function(e,n,r){var i=n.concat(r);this.walk(e,i)},t.prototype.walkAtLeastOne=function(e,n,r){var i=[new ye({definition:e.definition})].concat(n,r);this.walk(e,i)},t.prototype.walkAtLeastOneSep=function(e,n,r){var i=Di(e,n,r);this.walk(e,i)},t.prototype.walkMany=function(e,n,r){var i=[new ye({definition:e.definition})].concat(n,r);this.walk(e,i)},t.prototype.walkManySep=function(e,n,r){var i=Di(e,n,r);this.walk(e,i)},t.prototype.walkOr=function(e,n,r){var i=this,a=n.concat(r);V(e.definition,function(c){var h=new Te({definition:[c]});i.walk(h,a)})},t}();function Di(t,e,n){var r=[new ye({definition:[new ne({terminalType:t.separator})].concat(t.definition)})],i=r.concat(e,n);return i}var St=function(){function t(){}return t.prototype.visit=function(e){var n=e;switch(n.constructor){case Ue:return this.visitNonTerminal(n);case Te:return this.visitAlternative(n);case ye:return this.visitOption(n);case qe:return this.visitRepetitionMandatory(n);case Ye:return this.visitRepetitionMandatoryWithSeparator(n);case $e:return this.visitRepetitionWithSeparator(n);case ce:return this.visitRepetition(n);case He:return this.visitAlternation(n);case ne:return this.visitTerminal(n);case xt:return this.visitRule(n);default:throw Error("non exhaustive match")}},t.prototype.visitNonTerminal=function(e){},t.prototype.visitAlternative=function(e){},t.prototype.visitOption=function(e){},t.prototype.visitRepetition=function(e){},t.prototype.visitRepetitionMandatory=function(e){},t.prototype.visitRepetitionMandatoryWithSeparator=function(e){},t.prototype.visitRepetitionWithSeparator=function(e){},t.prototype.visitAlternation=function(e){},t.prototype.visitTerminal=function(e){},t.prototype.visitRule=function(e){},t}(),yl=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function Tl(t){return t instanceof Te||t instanceof ye||t instanceof ce||t instanceof qe||t instanceof Ye||t instanceof $e||t instanceof ne||t instanceof xt}function Fn(t,e){e===void 0&&(e=[]);var n=t instanceof ye||t instanceof ce||t instanceof $e;return n?!0:t instanceof He?Jo(t.definition,function(r){return Fn(r,e)}):t instanceof Ue&&fe(e,t)?!1:t instanceof ct?(t instanceof Ue&&e.push(t),We(t.definition,function(r){return Fn(r,e)})):!1}function wl(t){return t instanceof He}function it(t){if(t instanceof Ue)return"SUBRULE";if(t instanceof ye)return"OPTION";if(t instanceof He)return"OR";if(t instanceof qe)return"AT_LEAST_ONE";if(t instanceof Ye)return"AT_LEAST_ONE_SEP";if(t instanceof $e)return"MANY_SEP";if(t instanceof ce)return"MANY";if(t instanceof ne)return"CONSUME";throw Error("non exhaustive match")}var vs=function(t){yl(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.separator="-",n.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]},n}return e.prototype.reset=function(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}},e.prototype.visitTerminal=function(n){var r=n.terminalType.name+this.separator+"Terminal";$(this.dslMethods,r)||(this.dslMethods[r]=[]),this.dslMethods[r].push(n)},e.prototype.visitNonTerminal=function(n){var r=n.nonTerminalName+this.separator+"Terminal";$(this.dslMethods,r)||(this.dslMethods[r]=[]),this.dslMethods[r].push(n)},e.prototype.visitOption=function(n){this.dslMethods.option.push(n)},e.prototype.visitRepetitionWithSeparator=function(n){this.dslMethods.repetitionWithSeparator.push(n)},e.prototype.visitRepetitionMandatory=function(n){this.dslMethods.repetitionMandatory.push(n)},e.prototype.visitRepetitionMandatoryWithSeparator=function(n){this.dslMethods.repetitionMandatoryWithSeparator.push(n)},e.prototype.visitRepetition=function(n){this.dslMethods.repetition.push(n)},e.prototype.visitAlternation=function(n){this.dslMethods.alternation.push(n)},e}(St),yn=new vs;function Cl(t){yn.reset(),t.accept(yn);var e=yn.dslMethods;return yn.reset(),e}function ln(t){if(t instanceof Ue)return ln(t.referencedRule);if(t instanceof ne)return Ml(t);if(Tl(t))return Il(t);if(wl(t))return Ol(t);throw Error("non exhaustive match")}function Il(t){for(var e=[],n=t.definition,r=0,i=n.length>r,a,c=!0;i&&c;)a=n[r],c=Fn(a),e=e.concat(ln(a)),r=r+1,i=n.length>r;return qr(e)}function Ol(t){var e=x(t.definition,function(n){return ln(n)});return qr(Ge(e))}function Ml(t){return[t.terminalType]}var gs="_~IN~_",Ul=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Ll=function(t){Ul(e,t);function e(n){var r=t.call(this)||this;return r.topProd=n,r.follows={},r}return e.prototype.startWalking=function(){return this.walk(this.topProd),this.follows},e.prototype.walkTerminal=function(n,r,i){},e.prototype.walkProdRef=function(n,r,i){var a=Pl(n.referencedRule,n.idx)+this.topProd.name,c=r.concat(i),h=new Te({definition:c}),p=ln(h);this.follows[a]=p},e}(Xn);function _l(t){var e={};return V(t,function(n){var r=new Ll(n).startWalking();tt(e,r)}),e}function Pl(t,e){return t.name+e+gs}var Qr={buildMismatchTokenMessage:function(t){var e=t.expected,n=t.actual;t.previous,t.ruleName;var r=ps(e),i=r?"--> "+Pt(e)+" <--":"token of type --> "+e.name+" <--",a="Expecting "+i+" but found --> '"+n.image+"' <--";return a},buildNotAllInputParsedMessage:function(t){var e=t.firstRedundant;return t.ruleName,"Redundant input, expecting EOF but found: "+e.image},buildNoViableAltMessage:function(t){var e=t.expectedPathsPerAlt,n=t.actual;t.previous;var r=t.customUserDescription;t.ruleName;var i="Expecting: ",a=Je(n).image,c=` +but found: '`+a+"'";if(r)return i+r+c;var h=Ne(e,function(s,l){return s.concat(l)},[]),p=x(h,function(s){return"["+x(s,function(l){return Pt(l)}).join(", ")+"]"}),u=x(p,function(s,l){return" "+(l+1)+". "+s}),o=`one of these possible Token sequences: +`+u.join(` +`);return i+o+c},buildEarlyExitMessage:function(t){var e=t.expectedIterationPaths,n=t.actual,r=t.customUserDescription;t.ruleName;var i="Expecting: ",a=Je(n).image,c=` +but found: '`+a+"'";if(r)return i+r+c;var h=x(e,function(u){return"["+x(u,function(o){return Pt(o)}).join(",")+"]"}),p=`expecting at least one iteration which starts with one of these possible Token sequences:: + `+("<"+h.join(" ,")+">");return i+p+c}};Object.freeze(Qr);var Es={buildRuleNotFoundError:function(t,e){var n="Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- +inside top level rule: ->`+t.name+"<-";return n}},Qn={buildDuplicateFoundError:function(t,e){function n(o){return o instanceof ne?o.terminalType.name:o instanceof Ue?o.nonTerminalName:""}var r=t.name,i=Je(e),a=i.idx,c=it(i),h=n(i),p=a>0,u="->"+c+(p?a:"")+"<- "+(h?"with argument: ->"+h+"<-":"")+` + appears more than once (`+e.length+" times) in the top level rule: ->"+r+`<-. For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES - `; - return u = u.replace(/[ \t]+/g, " "), u = u.replace(/\s\s+/g, ` -`), u; - }, - buildNamespaceConflictError: function(t) { - var e = `Namespace conflict found in grammar. -` + ("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <" + t.name + `>. -`) + `To resolve this make sure each Terminal and Non-Terminal names are unique + `;return u=u.replace(/[ \t]+/g," "),u=u.replace(/\s\s+/g,` +`),u},buildNamespaceConflictError:function(t){var e=`Namespace conflict found in grammar. +`+("The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <"+t.name+`>. +`)+`To resolve this make sure each Terminal and Non-Terminal names are unique This is easy to accomplish by using the convention that Terminal names start with an uppercase letter -and Non-Terminal names start with a lower case letter.`; - return e; - }, - buildAlternationPrefixAmbiguityError: function(t) { - var e = x(t.prefixPath, function(i) { - return Pt(i); - }).join(", "), n = t.alternation.idx === 0 ? "" : t.alternation.idx, r = "Ambiguous alternatives: <" + t.ambiguityIndices.join(" ,") + `> due to common lookahead prefix -` + ("in inside <" + t.topLevelRule.name + `> Rule, -`) + ("<" + e + `> may appears as a prefix path in all these alternatives. -`) + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX -For Further details.`; - return r; - }, - buildAlternationAmbiguityError: function(t) { - var e = x(t.prefixPath, function(i) { - return Pt(i); - }).join(", "), n = t.alternation.idx === 0 ? "" : t.alternation.idx, r = "Ambiguous Alternatives Detected: <" + t.ambiguityIndices.join(" ,") + "> in " + (" inside <" + t.topLevelRule.name + `> Rule, -`) + ("<" + e + `> may appears as a prefix path in all these alternatives. -`); - return r = r + `See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES -For Further details.`, r; - }, - buildEmptyRepetitionError: function(t) { - var e = it(t.repetition); - t.repetition.idx !== 0 && (e += t.repetition.idx); - var n = "The repetition <" + e + "> within Rule <" + t.topLevelRule.name + `> can never consume any tokens. -This could lead to an infinite loop.`; - return n; - }, - // TODO: remove - `errors_public` from nyc.config.js exclude - // once this method is fully removed from this file - buildTokenNameError: function(t) { - return "deprecated"; - }, - buildEmptyAlternationError: function(t) { - var e = "Ambiguous empty alternative: <" + (t.emptyChoiceIdx + 1) + ">" + (" in inside <" + t.topLevelRule.name + `> Rule. -`) + "Only the last alternative may be an empty alternative."; - return e; - }, - buildTooManyAlternativesError: function(t) { - var e = `An Alternation cannot have more than 256 alternatives: -` + (" inside <" + t.topLevelRule.name + `> Rule. - has ` + (t.alternation.definition.length + 1) + " alternatives."); - return e; - }, - buildLeftRecursionError: function(t) { - var e = t.topLevelRule.name, n = x(t.leftRecursionPath, function(a) { - return a.name; - }), r = e + " --> " + n.concat([e]).join(" --> "), i = `Left Recursion found in grammar. -` + ("rule: <" + e + `> can be invoked from itself (directly or indirectly) -`) + (`without consuming any Tokens. The grammar path that causes this is: - ` + r + ` -`) + ` To fix this refactor your grammar to remove the left recursion. -see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`; - return i; - }, - // TODO: remove - `errors_public` from nyc.config.js exclude - // once this method is fully removed from this file - buildInvalidRuleNameError: function(t) { - return "deprecated"; - }, - buildDuplicateRuleNameError: function(t) { - var e; - t.topLevelRule instanceof kt ? e = t.topLevelRule.name : e = t.topLevelRule; - var n = "Duplicate definition, rule: ->" + e + "<- is already defined in the grammar: ->" + t.grammarName + "<-"; - return n; - } -}, Pl = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(); -function kl(t, e) { - var n = new xl(t, e); - return n.resolveRefs(), n.errors; -} -var xl = ( - /** @class */ - function(t) { - Pl(e, t); - function e(n, r) { - var i = t.call(this) || this; - return i.nameToTopRule = n, i.errMsgProvider = r, i.errors = [], i; - } - return e.prototype.resolveRefs = function() { - var n = this; - V(xe(this.nameToTopRule), function(r) { - n.currTopLevel = r, r.accept(n); - }); - }, e.prototype.visitNonTerminal = function(n) { - var r = this.nameToTopRule[n.nonTerminalName]; - if (r) - n.referencedRule = r; - else { - var i = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, n); - this.errors.push({ - message: i, - type: Le.UNRESOLVED_SUBRULE_REF, - ruleName: this.currTopLevel.name, - unresolvedRefName: n.nonTerminalName - }); - } - }, e; - }(xt) -), St = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), Sl = ( - /** @class */ - function(t) { - St(e, t); - function e(n, r) { - var i = t.call(this) || this; - return i.topProd = n, i.path = r, i.possibleTokTypes = [], i.nextProductionName = "", i.nextProductionOccurrence = 0, i.found = !1, i.isAtEndOfPath = !1, i; - } - return e.prototype.startWalking = function() { - if (this.found = !1, this.path.ruleStack[0] !== this.topProd.name) - throw Error("The path does not start with the walker's top Rule!"); - return this.ruleStack = Se(this.path.ruleStack).reverse(), this.occurrenceStack = Se(this.path.occurrenceStack).reverse(), this.ruleStack.pop(), this.occurrenceStack.pop(), this.updateExpectedNext(), this.walk(this.topProd), this.possibleTokTypes; - }, e.prototype.walk = function(n, r) { - r === void 0 && (r = []), this.found || t.prototype.walk.call(this, n, r); - }, e.prototype.walkProdRef = function(n, r, i) { - if (n.referencedRule.name === this.nextProductionName && n.idx === this.nextProductionOccurrence) { - var a = r.concat(i); - this.updateExpectedNext(), this.walk(n.referencedRule, a); - } - }, e.prototype.updateExpectedNext = function() { - ee(this.ruleStack) ? (this.nextProductionName = "", this.nextProductionOccurrence = 0, this.isAtEndOfPath = !0) : (this.nextProductionName = this.ruleStack.pop(), this.nextProductionOccurrence = this.occurrenceStack.pop()); - }, e; - }(Yn) -), Bl = ( - /** @class */ - function(t) { - St(e, t); - function e(n, r) { - var i = t.call(this, n, r) || this; - return i.path = r, i.nextTerminalName = "", i.nextTerminalOccurrence = 0, i.nextTerminalName = i.path.lastTok.name, i.nextTerminalOccurrence = i.path.lastTokOccurrence, i; - } - return e.prototype.walkTerminal = function(n, r, i) { - if (this.isAtEndOfPath && n.terminalType.name === this.nextTerminalName && n.idx === this.nextTerminalOccurrence && !this.found) { - var a = r.concat(i), c = new Te({ definition: a }); - this.possibleTokTypes = ln(c), this.found = !0; - } - }, e; - }(Sl) -), zn = ( - /** @class */ - function(t) { - St(e, t); - function e(n, r) { - var i = t.call(this) || this; - return i.topRule = n, i.occurrence = r, i.result = { - token: void 0, - occurrence: void 0, - isEndOfRule: void 0 - }, i; - } - return e.prototype.startWalking = function() { - return this.walk(this.topRule), this.result; - }, e; - }(Yn) -), Fl = ( - /** @class */ - function(t) { - St(e, t); - function e() { - return t !== null && t.apply(this, arguments) || this; - } - return e.prototype.walkMany = function(n, r, i) { - if (n.idx === this.occurrence) { - var a = Je(r.concat(i)); - this.result.isEndOfRule = a === void 0, a instanceof ne && (this.result.token = a.terminalType, this.result.occurrence = a.idx); - } else - t.prototype.walkMany.call(this, n, r, i); - }, e; - }(zn) -), Bi = ( - /** @class */ - function(t) { - St(e, t); - function e() { - return t !== null && t.apply(this, arguments) || this; - } - return e.prototype.walkManySep = function(n, r, i) { - if (n.idx === this.occurrence) { - var a = Je(r.concat(i)); - this.result.isEndOfRule = a === void 0, a instanceof ne && (this.result.token = a.terminalType, this.result.occurrence = a.idx); - } else - t.prototype.walkManySep.call(this, n, r, i); - }, e; - }(zn) -), bl = ( - /** @class */ - function(t) { - St(e, t); - function e() { - return t !== null && t.apply(this, arguments) || this; - } - return e.prototype.walkAtLeastOne = function(n, r, i) { - if (n.idx === this.occurrence) { - var a = Je(r.concat(i)); - this.result.isEndOfRule = a === void 0, a instanceof ne && (this.result.token = a.terminalType, this.result.occurrence = a.idx); - } else - t.prototype.walkAtLeastOne.call(this, n, r, i); - }, e; - }(zn) -), Fi = ( - /** @class */ - function(t) { - St(e, t); - function e() { - return t !== null && t.apply(this, arguments) || this; - } - return e.prototype.walkAtLeastOneSep = function(n, r, i) { - if (n.idx === this.occurrence) { - var a = Je(r.concat(i)); - this.result.isEndOfRule = a === void 0, a instanceof ne && (this.result.token = a.terminalType, this.result.occurrence = a.idx); - } else - t.prototype.walkAtLeastOneSep.call(this, n, r, i); - }, e; - }(zn) -); -function Pr(t, e, n) { - n === void 0 && (n = []), n = Se(n); - var r = [], i = 0; - function a(u) { - return u.concat(Re(t, i + 1)); - } - function c(u) { - var o = Pr(a(u), e, n); - return r.concat(o); - } - for (; n.length < e && i < t.length; ) { - var h = t[i]; - if (h instanceof Te) - return c(h.definition); - if (h instanceof Ue) - return c(h.definition); - if (h instanceof ye) - r = c(h.definition); - else if (h instanceof qe) { - var p = h.definition.concat([ - new ce({ - definition: h.definition - }) - ]); - return c(p); - } else if (h instanceof Ye) { - var p = [ - new Te({ definition: h.definition }), - new ce({ - definition: [new ne({ terminalType: h.separator })].concat(h.definition) - }) - ]; - return c(p); - } else if (h instanceof $e) { - var p = h.definition.concat([ - new ce({ - definition: [new ne({ terminalType: h.separator })].concat(h.definition) - }) - ]); - r = c(p); - } else if (h instanceof ce) { - var p = h.definition.concat([ - new ce({ - definition: h.definition - }) - ]); - r = c(p); - } else { - if (h instanceof He) - return V(h.definition, function(u) { - ee(u.definition) === !1 && (r = c(u.definition)); - }), r; - if (h instanceof ne) - n.push(h.terminalType); - else - throw Error("non exhaustive match"); - } - i++; - } - return r.push({ - partialPath: n, - suffixDef: Re(t, i) - }), r; -} -function fs(t, e, n, r) { - var i = "EXIT_NONE_TERMINAL", a = [i], c = "EXIT_ALTERNATIVE", h = !1, p = e.length, u = p - r - 1, o = [], s = []; - for (s.push({ - idx: -1, - def: t, - ruleStack: [], - occurrenceStack: [] - }); !ee(s); ) { - var l = s.pop(); - if (l === c) { - h && Wo(s).idx <= u && s.pop(); - continue; - } - var f = l.def, v = l.idx, d = l.ruleStack, g = l.occurrenceStack; - if (!ee(f)) { - var E = f[0]; - if (E === i) { - var A = { - idx: v, - def: Re(f), - ruleStack: nn(d), - occurrenceStack: nn(g) - }; - s.push(A); - } else if (E instanceof ne) - if (v < p - 1) { - var m = v + 1, N = e[m]; - if (n(N, E.terminalType)) { - var A = { - idx: m, - def: Re(f), - ruleStack: d, - occurrenceStack: g - }; - s.push(A); - } - } else if (v === p - 1) - o.push({ - nextTokenType: E.terminalType, - nextTokenOccurrence: E.idx, - ruleStack: d, - occurrenceStack: g - }), h = !0; - else - throw Error("non exhaustive match"); - else if (E instanceof Ue) { - var y = Se(d); - y.push(E.nonTerminalName); - var R = Se(g); - R.push(E.idx); - var A = { - idx: v, - def: E.definition.concat(a, Re(f)), - ruleStack: y, - occurrenceStack: R - }; - s.push(A); - } else if (E instanceof ye) { - var T = { - idx: v, - def: Re(f), - ruleStack: d, - occurrenceStack: g - }; - s.push(T), s.push(c); - var w = { - idx: v, - def: E.definition.concat(Re(f)), - ruleStack: d, - occurrenceStack: g - }; - s.push(w); - } else if (E instanceof qe) { - var C = new ce({ - definition: E.definition, - idx: E.idx - }), M = E.definition.concat([C], Re(f)), A = { - idx: v, - def: M, - ruleStack: d, - occurrenceStack: g - }; - s.push(A); - } else if (E instanceof Ye) { - var _ = new ne({ - terminalType: E.separator - }), C = new ce({ - definition: [_].concat(E.definition), - idx: E.idx - }), M = E.definition.concat([C], Re(f)), A = { - idx: v, - def: M, - ruleStack: d, - occurrenceStack: g - }; - s.push(A); - } else if (E instanceof $e) { - var T = { - idx: v, - def: Re(f), - ruleStack: d, - occurrenceStack: g - }; - s.push(T), s.push(c); - var _ = new ne({ - terminalType: E.separator - }), W = new ce({ - definition: [_].concat(E.definition), - idx: E.idx - }), M = E.definition.concat([W], Re(f)), w = { - idx: v, - def: M, - ruleStack: d, - occurrenceStack: g - }; - s.push(w); - } else if (E instanceof ce) { - var T = { - idx: v, - def: Re(f), - ruleStack: d, - occurrenceStack: g - }; - s.push(T), s.push(c); - var W = new ce({ - definition: E.definition, - idx: E.idx - }), M = E.definition.concat([W], Re(f)), w = { - idx: v, - def: M, - ruleStack: d, - occurrenceStack: g - }; - s.push(w); - } else if (E instanceof He) - for (var F = E.definition.length - 1; F >= 0; F--) { - var S = E.definition[F], G = { - idx: v, - def: S.definition.concat(Re(f)), - ruleStack: d, - occurrenceStack: g - }; - s.push(G), s.push(c); - } - else if (E instanceof Te) - s.push({ - idx: v, - def: E.definition.concat(Re(f)), - ruleStack: d, - occurrenceStack: g - }); - else if (E instanceof kt) - s.push(Dl(E, v, d, g)); - else - throw Error("non exhaustive match"); - } - } - return o; -} -function Dl(t, e, n, r) { - var i = Se(n); - i.push(t.name); - var a = Se(r); - return a.push(1), { - idx: e, - def: t.definition, - ruleStack: i, - occurrenceStack: a - }; -} -var hs = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), j; -(function(t) { - t[t.OPTION = 0] = "OPTION", t[t.REPETITION = 1] = "REPETITION", t[t.REPETITION_MANDATORY = 2] = "REPETITION_MANDATORY", t[t.REPETITION_MANDATORY_WITH_SEPARATOR = 3] = "REPETITION_MANDATORY_WITH_SEPARATOR", t[t.REPETITION_WITH_SEPARATOR = 4] = "REPETITION_WITH_SEPARATOR", t[t.ALTERNATION = 5] = "ALTERNATION"; -})(j || (j = {})); -function Vl(t) { - if (t instanceof ye) - return j.OPTION; - if (t instanceof ce) - return j.REPETITION; - if (t instanceof qe) - return j.REPETITION_MANDATORY; - if (t instanceof Ye) - return j.REPETITION_MANDATORY_WITH_SEPARATOR; - if (t instanceof $e) - return j.REPETITION_WITH_SEPARATOR; - if (t instanceof He) - return j.ALTERNATION; - throw Error("non exhaustive match"); -} -function Gl(t, e, n, r, i, a) { - var c = Yr(t, e, n), h = vs(c) ? Sn : Wn; - return a(c, r, h, i); -} -function $l(t, e, n, r, i, a) { - var c = Kr(t, e, i, n), h = vs(c) ? Sn : Wn; - return a(c[0], h, r); -} -function Hl(t, e, n, r) { - var i = t.length, a = We(t, function(p) { - return We(p, function(u) { - return u.length === 1; - }); - }); - if (e) - return function(p) { - for (var u = x(p, function(m) { - return m.GATE; - }), o = 0; o < i; o++) { - var s = t[o], l = s.length, f = u[o]; - if (!(f !== void 0 && f.call(this) === !1)) - e: - for (var v = 0; v < l; v++) { - for (var d = s[v], g = d.length, E = 0; E < g; E++) { - var A = this.LA(E + 1); - if (n(A, d[E]) === !1) - continue e; - } - return o; - } - } - }; - if (a && !r) { - var c = x(t, function(p) { - return Ge(p); - }), h = Ne(c, function(p, u, o) { - return V(u, function(s) { - $(p, s.tokenTypeIdx) || (p[s.tokenTypeIdx] = o), V(s.categoryMatches, function(l) { - $(p, l) || (p[l] = o); - }); - }), p; - }, []); - return function() { - var p = this.LA(1); - return h[p.tokenTypeIdx]; - }; - } else - return function() { - for (var p = 0; p < i; p++) { - var u = t[p], o = u.length; - e: - for (var s = 0; s < o; s++) { - for (var l = u[s], f = l.length, v = 0; v < f; v++) { - var d = this.LA(v + 1); - if (n(d, l[v]) === !1) - continue e; - } - return p; - } - } - }; -} -function Wl(t, e, n) { - var r = We(t, function(u) { - return u.length === 1; - }), i = t.length; - if (r && !n) { - var a = Ge(t); - if (a.length === 1 && ee(a[0].categoryMatches)) { - var c = a[0], h = c.tokenTypeIdx; - return function() { - return this.LA(1).tokenTypeIdx === h; - }; - } else { - var p = Ne(a, function(u, o, s) { - return u[o.tokenTypeIdx] = !0, V(o.categoryMatches, function(l) { - u[l] = !0; - }), u; - }, []); - return function() { - var u = this.LA(1); - return p[u.tokenTypeIdx] === !0; - }; - } - } else - return function() { - e: - for (var u = 0; u < i; u++) { - for (var o = t[u], s = o.length, l = 0; l < s; l++) { - var f = this.LA(l + 1); - if (e(f, o[l]) === !1) - continue e; - } - return !0; - } - return !1; - }; -} -var ql = ( - /** @class */ - function(t) { - hs(e, t); - function e(n, r, i) { - var a = t.call(this) || this; - return a.topProd = n, a.targetOccurrence = r, a.targetProdType = i, a; - } - return e.prototype.startWalking = function() { - return this.walk(this.topProd), this.restDef; - }, e.prototype.checkIsTarget = function(n, r, i, a) { - return n.idx === this.targetOccurrence && this.targetProdType === r ? (this.restDef = i.concat(a), !0) : !1; - }, e.prototype.walkOption = function(n, r, i) { - this.checkIsTarget(n, j.OPTION, r, i) || t.prototype.walkOption.call(this, n, r, i); - }, e.prototype.walkAtLeastOne = function(n, r, i) { - this.checkIsTarget(n, j.REPETITION_MANDATORY, r, i) || t.prototype.walkOption.call(this, n, r, i); - }, e.prototype.walkAtLeastOneSep = function(n, r, i) { - this.checkIsTarget(n, j.REPETITION_MANDATORY_WITH_SEPARATOR, r, i) || t.prototype.walkOption.call(this, n, r, i); - }, e.prototype.walkMany = function(n, r, i) { - this.checkIsTarget(n, j.REPETITION, r, i) || t.prototype.walkOption.call(this, n, r, i); - }, e.prototype.walkManySep = function(n, r, i) { - this.checkIsTarget(n, j.REPETITION_WITH_SEPARATOR, r, i) || t.prototype.walkOption.call(this, n, r, i); - }, e; - }(Yn) -), ps = ( - /** @class */ - function(t) { - hs(e, t); - function e(n, r, i) { - var a = t.call(this) || this; - return a.targetOccurrence = n, a.targetProdType = r, a.targetRef = i, a.result = [], a; - } - return e.prototype.checkIsTarget = function(n, r) { - n.idx === this.targetOccurrence && this.targetProdType === r && (this.targetRef === void 0 || n === this.targetRef) && (this.result = n.definition); - }, e.prototype.visitOption = function(n) { - this.checkIsTarget(n, j.OPTION); - }, e.prototype.visitRepetition = function(n) { - this.checkIsTarget(n, j.REPETITION); - }, e.prototype.visitRepetitionMandatory = function(n) { - this.checkIsTarget(n, j.REPETITION_MANDATORY); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(n) { - this.checkIsTarget(n, j.REPETITION_MANDATORY_WITH_SEPARATOR); - }, e.prototype.visitRepetitionWithSeparator = function(n) { - this.checkIsTarget(n, j.REPETITION_WITH_SEPARATOR); - }, e.prototype.visitAlternation = function(n) { - this.checkIsTarget(n, j.ALTERNATION); - }, e; - }(xt) -); -function bi(t) { - for (var e = new Array(t), n = 0; n < t; n++) - e[n] = []; - return e; -} -function Er(t) { - for (var e = [""], n = 0; n < t.length; n++) { - for (var r = t[n], i = [], a = 0; a < e.length; a++) { - var c = e[a]; - i.push(c + "_" + r.tokenTypeIdx); - for (var h = 0; h < r.categoryMatches.length; h++) { - var p = "_" + r.categoryMatches[h]; - i.push(c + p); - } - } - e = i; - } - return e; -} -function Yl(t, e, n) { - for (var r = 0; r < t.length; r++) - if (r !== n) - for (var i = t[r], a = 0; a < e.length; a++) { - var c = e[a]; - if (i[c] === !0) - return !1; - } - return !0; -} -function ds(t, e) { - for (var n = x(t, function(o) { - return Pr([o], 1); - }), r = bi(n.length), i = x(n, function(o) { - var s = {}; - return V(o, function(l) { - var f = Er(l.partialPath); - V(f, function(v) { - s[v] = !0; - }); - }), s; - }), a = n, c = 1; c <= e; c++) { - var h = a; - a = bi(h.length); - for (var p = function(o) { - for (var s = h[o], l = 0; l < s.length; l++) { - var f = s[l].partialPath, v = s[l].suffixDef, d = Er(f), g = Yl(i, d, o); - if (g || ee(v) || f.length === e) { - var E = r[o]; - if (kr(E, f) === !1) { - E.push(f); - for (var A = 0; A < d.length; A++) { - var m = d[A]; - i[o][m] = !0; - } - } - } else { - var N = Pr(v, c + 1, f); - a[o] = a[o].concat(N), V(N, function(y) { - var R = Er(y.partialPath); - V(R, function(T) { - i[o][T] = !0; - }); - }); - } - } - }, u = 0; u < h.length; u++) - p(u); - } - return r; -} -function Yr(t, e, n, r) { - var i = new ps(t, j.ALTERNATION, r); - return e.accept(i), ds(i.result, n); -} -function Kr(t, e, n, r) { - var i = new ps(t, n); - e.accept(i); - var a = i.result, c = new ql(e, t, n), h = c.startWalking(), p = new Te({ definition: a }), u = new Te({ definition: h }); - return ds([p, u], r); -} -function kr(t, e) { - e: - for (var n = 0; n < t.length; n++) { - var r = t[n]; - if (r.length === e.length) { - for (var i = 0; i < r.length; i++) { - var a = e[i], c = r[i], h = a === c || c.categoryMatchesMap[a.tokenTypeIdx] !== void 0; - if (h === !1) - continue e; - } - return !0; - } - } - return !1; -} -function Kl(t, e) { - return t.length < e.length && We(t, function(n, r) { - var i = e[r]; - return n === i || i.categoryMatchesMap[n.tokenTypeIdx]; - }); -} -function vs(t) { - return We(t, function(e) { - return We(e, function(n) { - return We(n, function(r) { - return ee(r.categoryMatches); - }); - }); - }); -} -var zr = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(); -function zl(t, e, n, r, i) { - var a = x(t, function(f) { - return Xl(f, r); - }), c = x(t, function(f) { - return Es(f, f, r); - }), h = [], p = [], u = []; - We(c, ee) && (h = x(t, function(f) { - return eu(f, r); - }), p = x(t, function(f) { - return tu(f, e, r); - }), u = iu(t, e, r)); - var o = au(t, n, r), s = x(t, function(f) { - return ru(f, r); - }), l = x(t, function(f) { - return Jl(f, t, i, r); - }); - return Ge(a.concat(u, c, h, p, o, s, l)); -} -function Xl(t, e) { - var n = new Zl(); - t.accept(n); - var r = n.allProductions, i = _c(r, Ql), a = et(i, function(h) { - return h.length > 1; - }), c = x(xe(a), function(h) { - var p = Je(h), u = e.buildDuplicateFoundError(t, h), o = it(p), s = { - message: u, - type: Le.DUPLICATE_PRODUCTIONS, - ruleName: t.name, - dslName: o, - occurrence: p.idx - }, l = gs(p); - return l && (s.parameter = l), s; - }); - return c; -} -function Ql(t) { - return it(t) + "_#_" + t.idx + "_#_" + gs(t); -} -function gs(t) { - return t instanceof ne ? t.terminalType.name : t instanceof Ue ? t.nonTerminalName : ""; -} -var Zl = ( - /** @class */ - function(t) { - zr(e, t); - function e() { - var n = t !== null && t.apply(this, arguments) || this; - return n.allProductions = [], n; - } - return e.prototype.visitNonTerminal = function(n) { - this.allProductions.push(n); - }, e.prototype.visitOption = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetitionWithSeparator = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetitionMandatory = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetition = function(n) { - this.allProductions.push(n); - }, e.prototype.visitAlternation = function(n) { - this.allProductions.push(n); - }, e.prototype.visitTerminal = function(n) { - this.allProductions.push(n); - }, e; - }(xt) -); -function Jl(t, e, n, r) { - var i = [], a = Ne(e, function(h, p) { - return p.name === t.name ? h + 1 : h; - }, 0); - if (a > 1) { - var c = r.buildDuplicateRuleNameError({ - topLevelRule: t, - grammarName: n - }); - i.push({ - message: c, - type: Le.DUPLICATE_RULE_NAME, - ruleName: t.name - }); - } - return i; -} -function jl(t, e, n) { - var r = [], i; - return fe(e, t) || (i = "Invalid rule override, rule: ->" + t + "<- cannot be overridden in the grammar: ->" + n + "<-as it is not defined in any of the super grammars ", r.push({ - message: i, - type: Le.INVALID_RULE_OVERRIDE, - ruleName: t - })), r; -} -function Es(t, e, n, r) { - r === void 0 && (r = []); - var i = [], a = Mn(e.definition); - if (ee(a)) - return []; - var c = t.name, h = fe(a, t); - h && i.push({ - message: n.buildLeftRecursionError({ - topLevelRule: t, - leftRecursionPath: r - }), - type: Le.LEFT_RECURSION, - ruleName: c - }); - var p = $n(a, r.concat([t])), u = x(p, function(o) { - var s = Se(r); - return s.push(o), Es(t, o, n, s); - }); - return i.concat(Ge(u)); -} -function Mn(t) { - var e = []; - if (ee(t)) - return e; - var n = Je(t); - if (n instanceof Ue) - e.push(n.referencedRule); - else if (n instanceof Te || n instanceof ye || n instanceof qe || n instanceof Ye || n instanceof $e || n instanceof ce) - e = e.concat(Mn(n.definition)); - else if (n instanceof He) - e = Ge(x(n.definition, function(c) { - return Mn(c.definition); - })); - else if (!(n instanceof ne)) - throw Error("non exhaustive match"); - var r = Bn(n), i = t.length > 1; - if (r && i) { - var a = Re(t); - return e.concat(Mn(a)); - } else - return e; -} -var Xr = ( - /** @class */ - function(t) { - zr(e, t); - function e() { - var n = t !== null && t.apply(this, arguments) || this; - return n.alternations = [], n; - } - return e.prototype.visitAlternation = function(n) { - this.alternations.push(n); - }, e; - }(xt) -); -function eu(t, e) { - var n = new Xr(); - t.accept(n); - var r = n.alternations, i = Ne(r, function(a, c) { - var h = nn(c.definition), p = x(h, function(u, o) { - var s = fs([u], [], null, 1); - return ee(s) ? { - message: e.buildEmptyAlternationError({ - topLevelRule: t, - alternation: c, - emptyChoiceIdx: o - }), - type: Le.NONE_LAST_EMPTY_ALT, - ruleName: t.name, - occurrence: c.idx, - alternative: o + 1 - } : null; - }); - return a.concat(sn(p)); - }, []); - return i; -} -function tu(t, e, n) { - var r = new Xr(); - t.accept(r); - var i = r.alternations; - i = Ht(i, function(c) { - return c.ignoreAmbiguities === !0; - }); - var a = Ne(i, function(c, h) { - var p = h.idx, u = h.maxLookahead || e, o = Yr(p, t, u, h), s = ou(o, h, t, n), l = su(o, h, t, n); - return c.concat(s, l); - }, []); - return a; -} -var nu = ( - /** @class */ - function(t) { - zr(e, t); - function e() { - var n = t !== null && t.apply(this, arguments) || this; - return n.allProductions = [], n; - } - return e.prototype.visitRepetitionWithSeparator = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetitionMandatory = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetitionMandatoryWithSeparator = function(n) { - this.allProductions.push(n); - }, e.prototype.visitRepetition = function(n) { - this.allProductions.push(n); - }, e; - }(xt) -); -function ru(t, e) { - var n = new Xr(); - t.accept(n); - var r = n.alternations, i = Ne(r, function(a, c) { - return c.definition.length > 255 && a.push({ - message: e.buildTooManyAlternativesError({ - topLevelRule: t, - alternation: c - }), - type: Le.TOO_MANY_ALTS, - ruleName: t.name, - occurrence: c.idx - }), a; - }, []); - return i; -} -function iu(t, e, n) { - var r = []; - return V(t, function(i) { - var a = new nu(); - i.accept(a); - var c = a.allProductions; - V(c, function(h) { - var p = Vl(h), u = h.maxLookahead || e, o = h.idx, s = Kr(o, i, p, u), l = s[0]; - if (ee(Ge(l))) { - var f = n.buildEmptyRepetitionError({ - topLevelRule: i, - repetition: h - }); - r.push({ - message: f, - type: Le.NO_NON_EMPTY_LOOKAHEAD, - ruleName: i.name - }); - } - }); - }), r; -} -function ou(t, e, n, r) { - var i = [], a = Ne(t, function(h, p, u) { - return e.definition[u].ignoreAmbiguities === !0 || V(p, function(o) { - var s = [u]; - V(t, function(l, f) { - u !== f && kr(l, o) && // ignore (skip) ambiguities with this "other" alternative - e.definition[f].ignoreAmbiguities !== !0 && s.push(f); - }), s.length > 1 && !kr(i, o) && (i.push(o), h.push({ - alts: s, - path: o - })); - }), h; - }, []), c = x(a, function(h) { - var p = x(h.alts, function(o) { - return o + 1; - }), u = r.buildAlternationAmbiguityError({ - topLevelRule: n, - alternation: e, - ambiguityIndices: p, - prefixPath: h.path - }); - return { - message: u, - type: Le.AMBIGUOUS_ALTS, - ruleName: n.name, - occurrence: e.idx, - alternatives: [h.alts] - }; - }); - return c; -} -function su(t, e, n, r) { - var i = [], a = Ne(t, function(c, h, p) { - var u = x(h, function(o) { - return { idx: p, path: o }; - }); - return c.concat(u); - }, []); - return V(a, function(c) { - var h = e.definition[c.idx]; - if (h.ignoreAmbiguities !== !0) { - var p = c.idx, u = c.path, o = Mc(a, function(l) { - return ( - // ignore (skip) ambiguities with this "other" alternative - e.definition[l.idx].ignoreAmbiguities !== !0 && l.idx < p && // checking for strict prefix because identical lookaheads - // will be be detected using a different validation. - Kl(l.path, u) - ); - }), s = x(o, function(l) { - var f = [l.idx + 1, p + 1], v = e.idx === 0 ? "" : e.idx, d = r.buildAlternationPrefixAmbiguityError({ - topLevelRule: n, - alternation: e, - ambiguityIndices: f, - prefixPath: l.path - }); - return { - message: d, - type: Le.AMBIGUOUS_PREFIX_ALTS, - ruleName: n.name, - occurrence: v, - alternatives: f - }; - }); - i = i.concat(s); - } - }), i; -} -function au(t, e, n) { - var r = [], i = x(e, function(a) { - return a.name; - }); - return V(t, function(a) { - var c = a.name; - if (fe(i, c)) { - var h = n.buildNamespaceConflictError(a); - r.push({ - message: h, - type: Le.CONFLICT_TOKENS_RULES_NAMESPACE, - ruleName: c - }); - } - }), r; -} -function ms(t) { - t = $r(t, { - errMsgProvider: us - }); - var e = {}; - return V(t.rules, function(n) { - e[n.name] = n; - }), kl(e, t.errMsgProvider); -} -function Rs(t) { - return t = $r(t, { - errMsgProvider: Kn - }), zl(t.rules, t.maxLookahead, t.tokenTypes, t.errMsgProvider, t.grammarName); -} -function cu(t) { - V(t.rules, function(e) { - var n = new cs(); - e.accept(n), V(n.dslMethods, function(r) { - V(r, function(i, a) { - i.idx = a + 1; - }); - }); - }); -} -var un = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), Ns = "MismatchedTokenException", As = "NoViableAltException", ys = "EarlyExitException", Ts = "NotAllInputParsedException", ws = [ - Ns, - As, - ys, - Ts -]; -Object.freeze(ws); -function rn(t) { - return fe(ws, t.name); -} -var Xn = ( - /** @class */ - function(t) { - un(e, t); - function e(n, r) { - var i = this.constructor, a = t.call(this, n) || this; - return a.token = r, a.resyncedTokens = [], Object.setPrototypeOf(a, i.prototype), Error.captureStackTrace && Error.captureStackTrace(a, a.constructor), a; - } - return e; - }(Error) -), Qr = ( - /** @class */ - function(t) { - un(e, t); - function e(n, r, i) { - var a = t.call(this, n, r) || this; - return a.previousToken = i, a.name = Ns, a; - } - return e; - }(Xn) -), Cs = ( - /** @class */ - function(t) { - un(e, t); - function e(n, r, i) { - var a = t.call(this, n, r) || this; - return a.previousToken = i, a.name = As, a; - } - return e; - }(Xn) -), Is = ( - /** @class */ - function(t) { - un(e, t); - function e(n, r) { - var i = t.call(this, n, r) || this; - return i.name = Ts, i; - } - return e; - }(Xn) -), Os = ( - /** @class */ - function(t) { - un(e, t); - function e(n, r, i) { - var a = t.call(this, n, r) || this; - return a.previousToken = i, a.name = ys, a; - } - return e; - }(Xn) -), mr = {}, Ms = "InRuleRecoveryException"; -function Us(t) { - this.name = Ms, this.message = t; -} -Us.prototype = Error.prototype; -var lu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initRecoverable = function(e) { - this.firstAfterRepMap = {}, this.resyncFollows = {}, this.recoveryEnabled = $(e, "recoveryEnabled") ? e.recoveryEnabled : vt.recoveryEnabled, this.recoveryEnabled && (this.attemptInRepetitionRecovery = uu); - }, t.prototype.getTokenToInsert = function(e) { - var n = qn(e, "", NaN, NaN, NaN, NaN, NaN, NaN); - return n.isInsertedInRecovery = !0, n; - }, t.prototype.canTokenTypeBeInsertedInRecovery = function(e) { - return !0; - }, t.prototype.tryInRepetitionRecovery = function(e, n, r, i) { - for (var a = this, c = this.findReSyncTokenType(), h = this.exportLexerState(), p = [], u = !1, o = this.LA(1), s = this.LA(1), l = function() { - var f = a.LA(0), v = a.errorMessageProvider.buildMismatchTokenMessage({ - expected: i, - actual: o, - previous: f, - ruleName: a.getCurrRuleFullName() - }), d = new Qr(v, o, a.LA(0)); - d.resyncedTokens = nn(p), a.SAVE_ERROR(d); - }; !u; ) - if (this.tokenMatcher(s, i)) { - l(); - return; - } else if (r.call(this)) { - l(), e.apply(this, n); - return; - } else - this.tokenMatcher(s, c) ? u = !0 : (s = this.SKIP_TOKEN(), this.addToResyncTokens(s, p)); - this.importLexerState(h); - }, t.prototype.shouldInRepetitionRecoveryBeTried = function(e, n, r) { - return !(r === !1 || e === void 0 || n === void 0 || this.tokenMatcher(this.LA(1), e) || this.isBackTracking() || this.canPerformInRuleRecovery(e, this.getFollowsForInRuleRecovery(e, n))); - }, t.prototype.getFollowsForInRuleRecovery = function(e, n) { - var r = this.getCurrentGrammarPath(e, n), i = this.getNextPossibleTokenTypes(r); - return i; - }, t.prototype.tryInRuleRecovery = function(e, n) { - if (this.canRecoverWithSingleTokenInsertion(e, n)) { - var r = this.getTokenToInsert(e); - return r; - } - if (this.canRecoverWithSingleTokenDeletion(e)) { - var i = this.SKIP_TOKEN(); - return this.consumeToken(), i; - } - throw new Us("sad sad panda"); - }, t.prototype.canPerformInRuleRecovery = function(e, n) { - return this.canRecoverWithSingleTokenInsertion(e, n) || this.canRecoverWithSingleTokenDeletion(e); - }, t.prototype.canRecoverWithSingleTokenInsertion = function(e, n) { - var r = this; - if (!this.canTokenTypeBeInsertedInRecovery(e) || ee(n)) - return !1; - var i = this.LA(1), a = $t(n, function(c) { - return r.tokenMatcher(i, c); - }) !== void 0; - return a; - }, t.prototype.canRecoverWithSingleTokenDeletion = function(e) { - var n = this.tokenMatcher(this.LA(2), e); - return n; - }, t.prototype.isInCurrentRuleReSyncSet = function(e) { - var n = this.getCurrFollowKey(), r = this.getFollowSetFromFollowKey(n); - return fe(r, e); - }, t.prototype.findReSyncTokenType = function() { - for (var e = this.flattenFollowSet(), n = this.LA(1), r = 2; ; ) { - var i = n.tokenType; - if (fe(e, i)) - return i; - n = this.LA(r), r++; - } - }, t.prototype.getCurrFollowKey = function() { - if (this.RULE_STACK.length === 1) - return mr; - var e = this.getLastExplicitRuleShortName(), n = this.getLastExplicitRuleOccurrenceIndex(), r = this.getPreviousExplicitRuleShortName(); - return { - ruleName: this.shortRuleNameToFullName(e), - idxInCallingRule: n, - inRule: this.shortRuleNameToFullName(r) - }; - }, t.prototype.buildFullFollowKeyStack = function() { - var e = this, n = this.RULE_STACK, r = this.RULE_OCCURRENCE_STACK; - return x(n, function(i, a) { - return a === 0 ? mr : { - ruleName: e.shortRuleNameToFullName(i), - idxInCallingRule: r[a], - inRule: e.shortRuleNameToFullName(n[a - 1]) - }; - }); - }, t.prototype.flattenFollowSet = function() { - var e = this, n = x(this.buildFullFollowKeyStack(), function(r) { - return e.getFollowSetFromFollowKey(r); - }); - return Ge(n); - }, t.prototype.getFollowSetFromFollowKey = function(e) { - if (e === mr) - return [wt]; - var n = e.ruleName + e.idxInCallingRule + ls + e.inRule; - return this.resyncFollows[n]; - }, t.prototype.addToResyncTokens = function(e, n) { - return this.tokenMatcher(e, wt) || n.push(e), n; - }, t.prototype.reSyncTo = function(e) { - for (var n = [], r = this.LA(1); this.tokenMatcher(r, e) === !1; ) - r = this.SKIP_TOKEN(), this.addToResyncTokens(r, n); - return nn(n); - }, t.prototype.attemptInRepetitionRecovery = function(e, n, r, i, a, c, h) { - }, t.prototype.getCurrentGrammarPath = function(e, n) { - var r = this.getHumanReadableRuleStack(), i = Se(this.RULE_OCCURRENCE_STACK), a = { - ruleStack: r, - occurrenceStack: i, - lastTok: e, - lastTokOccurrence: n - }; - return a; - }, t.prototype.getHumanReadableRuleStack = function() { - var e = this; - return x(this.RULE_STACK, function(n) { - return e.shortRuleNameToFullName(n); - }); - }, t; - }() -); -function uu(t, e, n, r, i, a, c) { - var h = this.getKeyForAutomaticLookahead(r, i), p = this.firstAfterRepMap[h]; - if (p === void 0) { - var u = this.getCurrRuleFullName(), o = this.getGAstProductions()[u], s = new a(o, i); - p = s.startWalking(), this.firstAfterRepMap[h] = p; - } - var l = p.token, f = p.occurrence, v = p.isEndOfRule; - this.RULE_STACK.length === 1 && v && l === void 0 && (l = wt, f = 1), this.shouldInRepetitionRecoveryBeTried(l, f, c) && this.tryInRepetitionRecovery(t, e, n, l); -} -var fu = 4, It = 8, Ls = 1 << It, _s = 2 << It, xr = 3 << It, Sr = 4 << It, Br = 5 << It, Un = 6 << It; -function Rr(t, e, n) { - return n | e | t; -} -var hu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initLooksAhead = function(e) { - this.dynamicTokensEnabled = $(e, "dynamicTokensEnabled") ? e.dynamicTokensEnabled : vt.dynamicTokensEnabled, this.maxLookahead = $(e, "maxLookahead") ? e.maxLookahead : vt.maxLookahead, this.lookAheadFuncsCache = Ai() ? /* @__PURE__ */ new Map() : [], Ai() ? (this.getLaFuncFromCache = this.getLaFuncFromMap, this.setLaFuncCache = this.setLaFuncCacheUsingMap) : (this.getLaFuncFromCache = this.getLaFuncFromObj, this.setLaFuncCache = this.setLaFuncUsingObj); - }, t.prototype.preComputeLookaheadFunctions = function(e) { - var n = this; - V(e, function(r) { - n.TRACE_INIT(r.name + " Rule Lookahead", function() { - var i = wl(r), a = i.alternation, c = i.repetition, h = i.option, p = i.repetitionMandatory, u = i.repetitionMandatoryWithSeparator, o = i.repetitionWithSeparator; - V(a, function(s) { - var l = s.idx === 0 ? "" : s.idx; - n.TRACE_INIT("" + it(s) + l, function() { - var f = Gl(s.idx, r, s.maxLookahead || n.maxLookahead, s.hasPredicates, n.dynamicTokensEnabled, n.lookAheadBuilderForAlternatives), v = Rr(n.fullRuleNameToShort[r.name], Ls, s.idx); - n.setLaFuncCache(v, f); - }); - }), V(c, function(s) { - n.computeLookaheadFunc(r, s.idx, xr, j.REPETITION, s.maxLookahead, it(s)); - }), V(h, function(s) { - n.computeLookaheadFunc(r, s.idx, _s, j.OPTION, s.maxLookahead, it(s)); - }), V(p, function(s) { - n.computeLookaheadFunc(r, s.idx, Sr, j.REPETITION_MANDATORY, s.maxLookahead, it(s)); - }), V(u, function(s) { - n.computeLookaheadFunc(r, s.idx, Un, j.REPETITION_MANDATORY_WITH_SEPARATOR, s.maxLookahead, it(s)); - }), V(o, function(s) { - n.computeLookaheadFunc(r, s.idx, Br, j.REPETITION_WITH_SEPARATOR, s.maxLookahead, it(s)); - }); - }); - }); - }, t.prototype.computeLookaheadFunc = function(e, n, r, i, a, c) { - var h = this; - this.TRACE_INIT("" + c + (n === 0 ? "" : n), function() { - var p = $l(n, e, a || h.maxLookahead, h.dynamicTokensEnabled, i, h.lookAheadBuilderForOptional), u = Rr(h.fullRuleNameToShort[e.name], r, n); - h.setLaFuncCache(u, p); - }); - }, t.prototype.lookAheadBuilderForOptional = function(e, n, r) { - return Wl(e, n, r); - }, t.prototype.lookAheadBuilderForAlternatives = function(e, n, r, i) { - return Hl(e, n, r, i); - }, t.prototype.getKeyForAutomaticLookahead = function(e, n) { - var r = this.getLastExplicitRuleShortName(); - return Rr(r, e, n); - }, t.prototype.getLaFuncFromCache = function(e) { - }, t.prototype.getLaFuncFromMap = function(e) { - return this.lookAheadFuncsCache.get(e); - }, t.prototype.getLaFuncFromObj = function(e) { - return this.lookAheadFuncsCache[e]; - }, t.prototype.setLaFuncCache = function(e, n) { - }, t.prototype.setLaFuncCacheUsingMap = function(e, n) { - this.lookAheadFuncsCache.set(e, n); - }, t.prototype.setLaFuncUsingObj = function(e, n) { - this.lookAheadFuncsCache[e] = n; - }, t; - }() -); -function Di(t, e) { - isNaN(t.startOffset) === !0 ? (t.startOffset = e.startOffset, t.endOffset = e.endOffset) : t.endOffset < e.endOffset && (t.endOffset = e.endOffset); -} -function Vi(t, e) { - isNaN(t.startOffset) === !0 ? (t.startOffset = e.startOffset, t.startColumn = e.startColumn, t.startLine = e.startLine, t.endOffset = e.endOffset, t.endColumn = e.endColumn, t.endLine = e.endLine) : t.endOffset < e.endOffset && (t.endOffset = e.endOffset, t.endColumn = e.endColumn, t.endLine = e.endLine); -} -function pu(t, e, n) { - t.children[n] === void 0 ? t.children[n] = [e] : t.children[n].push(e); -} -function du(t, e, n) { - t.children[e] === void 0 ? t.children[e] = [n] : t.children[e].push(n); -} -function vu(t) { - return Qn(t.constructor); -} -var Gi = "name"; -function Qn(t) { - var e = t.name; - return e || "anonymous"; -} -function Ps(t, e) { - var n = Object.getOwnPropertyDescriptor(t, Gi); - return pt(n) || n.configurable ? (Object.defineProperty(t, Gi, { - enumerable: !1, - configurable: !0, - writable: !1, - value: e - }), !0) : !1; -} -function gu(t, e) { - for (var n = Ze(t), r = n.length, i = 0; i < r; i++) - for (var a = n[i], c = t[a], h = c.length, p = 0; p < h; p++) { - var u = c[p]; - u.tokenTypeIdx === void 0 && this[u.name](u.children, e); - } -} -function Eu(t, e) { - var n = function() { - }; - Ps(n, t + "BaseSemantics"); - var r = { - visit: function(i, a) { - if (ot(i) && (i = i[0]), !pt(i)) - return this[i.name](i.children, a); - }, - validateVisitor: function() { - var i = Ru(this, e); - if (!ee(i)) { - var a = x(i, function(c) { - return c.msg; - }); - throw Error("Errors Detected in CST Visitor <" + Qn(this.constructor) + `>: - ` + ("" + a.join(` +and Non-Terminal names start with a lower case letter.`;return e},buildAlternationPrefixAmbiguityError:function(t){var e=x(t.prefixPath,function(i){return Pt(i)}).join(", "),n=t.alternation.idx===0?"":t.alternation.idx,r="Ambiguous alternatives: <"+t.ambiguityIndices.join(" ,")+`> due to common lookahead prefix +`+("in inside <"+t.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`)+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX +For Further details.`;return r},buildAlternationAmbiguityError:function(t){var e=x(t.prefixPath,function(i){return Pt(i)}).join(", "),n=t.alternation.idx===0?"":t.alternation.idx,r="Ambiguous Alternatives Detected: <"+t.ambiguityIndices.join(" ,")+"> in "+(" inside <"+t.topLevelRule.name+`> Rule, +`)+("<"+e+`> may appears as a prefix path in all these alternatives. +`);return r=r+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES +For Further details.`,r},buildEmptyRepetitionError:function(t){var e=it(t.repetition);t.repetition.idx!==0&&(e+=t.repetition.idx);var n="The repetition <"+e+"> within Rule <"+t.topLevelRule.name+`> can never consume any tokens. +This could lead to an infinite loop.`;return n},buildTokenNameError:function(t){return"deprecated"},buildEmptyAlternationError:function(t){var e="Ambiguous empty alternative: <"+(t.emptyChoiceIdx+1)+">"+(" in inside <"+t.topLevelRule.name+`> Rule. +`)+"Only the last alternative may be an empty alternative.";return e},buildTooManyAlternativesError:function(t){var e=`An Alternation cannot have more than 256 alternatives: +`+(" inside <"+t.topLevelRule.name+`> Rule. + has `+(t.alternation.definition.length+1)+" alternatives.");return e},buildLeftRecursionError:function(t){var e=t.topLevelRule.name,n=x(t.leftRecursionPath,function(a){return a.name}),r=e+" --> "+n.concat([e]).join(" --> "),i=`Left Recursion found in grammar. +`+("rule: <"+e+`> can be invoked from itself (directly or indirectly) +`)+(`without consuming any Tokens. The grammar path that causes this is: + `+r+` +`)+` To fix this refactor your grammar to remove the left recursion. +see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.`;return i},buildInvalidRuleNameError:function(t){return"deprecated"},buildDuplicateRuleNameError:function(t){var e;t.topLevelRule instanceof xt?e=t.topLevelRule.name:e=t.topLevelRule;var n="Duplicate definition, rule: ->"+e+"<- is already defined in the grammar: ->"+t.grammarName+"<-";return n}},kl=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}();function xl(t,e){var n=new Sl(t,e);return n.resolveRefs(),n.errors}var Sl=function(t){kl(e,t);function e(n,r){var i=t.call(this)||this;return i.nameToTopRule=n,i.errMsgProvider=r,i.errors=[],i}return e.prototype.resolveRefs=function(){var n=this;V(xe(this.nameToTopRule),function(r){n.currTopLevel=r,r.accept(n)})},e.prototype.visitNonTerminal=function(n){var r=this.nameToTopRule[n.nonTerminalName];if(r)n.referencedRule=r;else{var i=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,n);this.errors.push({message:i,type:Le.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:n.nonTerminalName})}},e}(St),Bt=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Bl=function(t){Bt(e,t);function e(n,r){var i=t.call(this)||this;return i.topProd=n,i.path=r,i.possibleTokTypes=[],i.nextProductionName="",i.nextProductionOccurrence=0,i.found=!1,i.isAtEndOfPath=!1,i}return e.prototype.startWalking=function(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=Se(this.path.ruleStack).reverse(),this.occurrenceStack=Se(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes},e.prototype.walk=function(n,r){r===void 0&&(r=[]),this.found||t.prototype.walk.call(this,n,r)},e.prototype.walkProdRef=function(n,r,i){if(n.referencedRule.name===this.nextProductionName&&n.idx===this.nextProductionOccurrence){var a=r.concat(i);this.updateExpectedNext(),this.walk(n.referencedRule,a)}},e.prototype.updateExpectedNext=function(){ee(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())},e}(Xn),Fl=function(t){Bt(e,t);function e(n,r){var i=t.call(this,n,r)||this;return i.path=r,i.nextTerminalName="",i.nextTerminalOccurrence=0,i.nextTerminalName=i.path.lastTok.name,i.nextTerminalOccurrence=i.path.lastTokOccurrence,i}return e.prototype.walkTerminal=function(n,r,i){if(this.isAtEndOfPath&&n.terminalType.name===this.nextTerminalName&&n.idx===this.nextTerminalOccurrence&&!this.found){var a=r.concat(i),c=new Te({definition:a});this.possibleTokTypes=ln(c),this.found=!0}},e}(Bl),Zn=function(t){Bt(e,t);function e(n,r){var i=t.call(this)||this;return i.topRule=n,i.occurrence=r,i.result={token:void 0,occurrence:void 0,isEndOfRule:void 0},i}return e.prototype.startWalking=function(){return this.walk(this.topRule),this.result},e}(Xn),bl=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkMany=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkMany.call(this,n,r,i)},e}(Zn),Vi=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkManySep=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkManySep.call(this,n,r,i)},e}(Zn),Dl=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOne=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOne.call(this,n,r,i)},e}(Zn),Gi=function(t){Bt(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.walkAtLeastOneSep=function(n,r,i){if(n.idx===this.occurrence){var a=Je(r.concat(i));this.result.isEndOfRule=a===void 0,a instanceof ne&&(this.result.token=a.terminalType,this.result.occurrence=a.idx)}else t.prototype.walkAtLeastOneSep.call(this,n,r,i)},e}(Zn);function Sr(t,e,n){n===void 0&&(n=[]),n=Se(n);var r=[],i=0;function a(u){return u.concat(Re(t,i+1))}function c(u){var o=Sr(a(u),e,n);return r.concat(o)}for(;n.length=0;F--){var S=E.definition[F],G={idx:v,def:S.definition.concat(Re(f)),ruleStack:d,occurrenceStack:g};s.push(G),s.push(c)}else if(E instanceof Te)s.push({idx:v,def:E.definition.concat(Re(f)),ruleStack:d,occurrenceStack:g});else if(E instanceof xt)s.push(Vl(E,v,d,g));else throw Error("non exhaustive match")}}return o}function Vl(t,e,n,r){var i=Se(n);i.push(t.name);var a=Se(r);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var Rs=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),j;(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(j||(j={}));function Gl(t){if(t instanceof ye)return j.OPTION;if(t instanceof ce)return j.REPETITION;if(t instanceof qe)return j.REPETITION_MANDATORY;if(t instanceof Ye)return j.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof $e)return j.REPETITION_WITH_SEPARATOR;if(t instanceof He)return j.ALTERNATION;throw Error("non exhaustive match")}function $l(t,e,n,r,i,a){var c=Zr(t,e,n),h=ys(c)?Bn:Kn;return a(c,r,h,i)}function Hl(t,e,n,r,i,a){var c=Jr(t,e,i,n),h=ys(c)?Bn:Kn;return a(c[0],h,r)}function Wl(t,e,n,r){var i=t.length,a=We(t,function(p){return We(p,function(u){return u.length===1})});if(e)return function(p){for(var u=x(p,function(m){return m.GATE}),o=0;o1}),c=x(xe(a),function(h){var p=Je(h),u=e.buildDuplicateFoundError(t,h),o=it(p),s={message:u,type:Le.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:o,occurrence:p.idx},l=Ts(p);return l&&(s.parameter=l),s});return c}function Zl(t){return it(t)+"_#_"+t.idx+"_#_"+Ts(t)}function Ts(t){return t instanceof ne?t.terminalType.name:t instanceof Ue?t.nonTerminalName:""}var Jl=function(t){jr(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.allProductions=[],n}return e.prototype.visitNonTerminal=function(n){this.allProductions.push(n)},e.prototype.visitOption=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatory=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatoryWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetition=function(n){this.allProductions.push(n)},e.prototype.visitAlternation=function(n){this.allProductions.push(n)},e.prototype.visitTerminal=function(n){this.allProductions.push(n)},e}(St);function jl(t,e,n,r){var i=[],a=Ne(e,function(h,p){return p.name===t.name?h+1:h},0);if(a>1){var c=r.buildDuplicateRuleNameError({topLevelRule:t,grammarName:n});i.push({message:c,type:Le.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function eu(t,e,n){var r=[],i;return fe(e,t)||(i="Invalid rule override, rule: ->"+t+"<- cannot be overridden in the grammar: ->"+n+"<-as it is not defined in any of the super grammars ",r.push({message:i,type:Le.INVALID_RULE_OVERRIDE,ruleName:t})),r}function ws(t,e,n,r){r===void 0&&(r=[]);var i=[],a=Mn(e.definition);if(ee(a))return[];var c=t.name,h=fe(a,t);h&&i.push({message:n.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:r}),type:Le.LEFT_RECURSION,ruleName:c});var p=qn(a,r.concat([t])),u=x(p,function(o){var s=Se(r);return s.push(o),ws(t,o,n,s)});return i.concat(Ge(u))}function Mn(t){var e=[];if(ee(t))return e;var n=Je(t);if(n instanceof Ue)e.push(n.referencedRule);else if(n instanceof Te||n instanceof ye||n instanceof qe||n instanceof Ye||n instanceof $e||n instanceof ce)e=e.concat(Mn(n.definition));else if(n instanceof He)e=Ge(x(n.definition,function(c){return Mn(c.definition)}));else if(!(n instanceof ne))throw Error("non exhaustive match");var r=Fn(n),i=t.length>1;if(r&&i){var a=Re(t);return e.concat(Mn(a))}else return e}var ei=function(t){jr(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.alternations=[],n}return e.prototype.visitAlternation=function(n){this.alternations.push(n)},e}(St);function tu(t,e){var n=new ei;t.accept(n);var r=n.alternations,i=Ne(r,function(a,c){var h=nn(c.definition),p=x(h,function(u,o){var s=ms([u],[],null,1);return ee(s)?{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:c,emptyChoiceIdx:o}),type:Le.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:c.idx,alternative:o+1}:null});return a.concat(sn(p))},[]);return i}function nu(t,e,n){var r=new ei;t.accept(r);var i=r.alternations;i=Wt(i,function(c){return c.ignoreAmbiguities===!0});var a=Ne(i,function(c,h){var p=h.idx,u=h.maxLookahead||e,o=Zr(p,t,u,h),s=su(o,h,t,n),l=au(o,h,t,n);return c.concat(s,l)},[]);return a}var ru=function(t){jr(e,t);function e(){var n=t!==null&&t.apply(this,arguments)||this;return n.allProductions=[],n}return e.prototype.visitRepetitionWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatory=function(n){this.allProductions.push(n)},e.prototype.visitRepetitionMandatoryWithSeparator=function(n){this.allProductions.push(n)},e.prototype.visitRepetition=function(n){this.allProductions.push(n)},e}(St);function iu(t,e){var n=new ei;t.accept(n);var r=n.alternations,i=Ne(r,function(a,c){return c.definition.length>255&&a.push({message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:c}),type:Le.TOO_MANY_ALTS,ruleName:t.name,occurrence:c.idx}),a},[]);return i}function ou(t,e,n){var r=[];return V(t,function(i){var a=new ru;i.accept(a);var c=a.allProductions;V(c,function(h){var p=Gl(h),u=h.maxLookahead||e,o=h.idx,s=Jr(o,i,p,u),l=s[0];if(ee(Ge(l))){var f=n.buildEmptyRepetitionError({topLevelRule:i,repetition:h});r.push({message:f,type:Le.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),r}function su(t,e,n,r){var i=[],a=Ne(t,function(h,p,u){return e.definition[u].ignoreAmbiguities===!0||V(p,function(o){var s=[u];V(t,function(l,f){u!==f&&Br(l,o)&&e.definition[f].ignoreAmbiguities!==!0&&s.push(f)}),s.length>1&&!Br(i,o)&&(i.push(o),h.push({alts:s,path:o}))}),h},[]),c=x(a,function(h){var p=x(h.alts,function(o){return o+1}),u=r.buildAlternationAmbiguityError({topLevelRule:n,alternation:e,ambiguityIndices:p,prefixPath:h.path});return{message:u,type:Le.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:e.idx,alternatives:[h.alts]}});return c}function au(t,e,n,r){var i=[],a=Ne(t,function(c,h,p){var u=x(h,function(o){return{idx:p,path:o}});return c.concat(u)},[]);return V(a,function(c){var h=e.definition[c.idx];if(h.ignoreAmbiguities!==!0){var p=c.idx,u=c.path,o=Uc(a,function(l){return e.definition[l.idx].ignoreAmbiguities!==!0&&l.idx: + `+(""+a.join(` -`).replace(/\n/g, ` - `))); - } - } - }; - return n.prototype = r, n.prototype.constructor = n, n._RULE_NAMES = e, n; -} -function mu(t, e, n) { - var r = function() { - }; - Ps(r, t + "BaseSemanticsWithDefaults"); - var i = Object.create(n.prototype); - return V(e, function(a) { - i[a] = gu; - }), r.prototype = i, r.prototype.constructor = r, r; -} -var Fn; -(function(t) { - t[t.REDUNDANT_METHOD = 0] = "REDUNDANT_METHOD", t[t.MISSING_METHOD = 1] = "MISSING_METHOD"; -})(Fn || (Fn = {})); -function Ru(t, e) { - var n = Nu(t, e), r = yu(t, e); - return n.concat(r); -} -function Nu(t, e) { - var n = x(e, function(r) { - if (!Ct(t[r])) - return { - msg: "Missing visitor method: <" + r + "> on " + Qn(t.constructor) + " CST Visitor.", - type: Fn.MISSING_METHOD, - methodName: r - }; - }); - return sn(n); -} -var Au = ["constructor", "visit", "validateVisitor"]; -function yu(t, e) { - var n = []; - for (var r in t) - Ct(t[r]) && !fe(Au, r) && !fe(e, r) && n.push({ - msg: "Redundant visitor method: <" + r + "> on " + Qn(t.constructor) + ` CST Visitor +`).replace(/\n/g,` + `)))}}};return n.prototype=r,n.prototype.constructor=n,n._RULE_NAMES=e,n}function Ru(t,e,n){var r=function(){};Ds(r,t+"BaseSemanticsWithDefaults");var i=Object.create(n.prototype);return V(e,function(a){i[a]=Eu}),r.prototype=i,r.prototype.constructor=r,r}var bn;(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(bn||(bn={}));function Nu(t,e){var n=Au(t,e),r=Tu(t,e);return n.concat(r)}function Au(t,e){var n=x(e,function(r){if(!Ct(t[r]))return{msg:"Missing visitor method: <"+r+"> on "+jn(t.constructor)+" CST Visitor.",type:bn.MISSING_METHOD,methodName:r}});return sn(n)}var yu=["constructor","visit","validateVisitor"];function Tu(t,e){var n=[];for(var r in t)Ct(t[r])&&!fe(yu,r)&&!fe(e,r)&&n.push({msg:"Redundant visitor method: <"+r+"> on "+jn(t.constructor)+` CST Visitor There is no Grammar Rule corresponding to this method's name. -`, - type: Fn.REDUNDANT_METHOD, - methodName: r - }); - return n; -} -var Tu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initTreeBuilder = function(e) { - if (this.CST_STACK = [], this.outputCst = e.outputCst, this.nodeLocationTracking = $(e, "nodeLocationTracking") ? e.nodeLocationTracking : vt.nodeLocationTracking, !this.outputCst) - this.cstInvocationStateUpdate = de, this.cstFinallyStateUpdate = de, this.cstPostTerminal = de, this.cstPostNonTerminal = de, this.cstPostRule = de; - else if (/full/i.test(this.nodeLocationTracking)) - this.recoveryEnabled ? (this.setNodeLocationFromToken = Vi, this.setNodeLocationFromNode = Vi, this.cstPostRule = de, this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery) : (this.setNodeLocationFromToken = de, this.setNodeLocationFromNode = de, this.cstPostRule = this.cstPostRuleFull, this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular); - else if (/onlyOffset/i.test(this.nodeLocationTracking)) - this.recoveryEnabled ? (this.setNodeLocationFromToken = Di, this.setNodeLocationFromNode = Di, this.cstPostRule = de, this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery) : (this.setNodeLocationFromToken = de, this.setNodeLocationFromNode = de, this.cstPostRule = this.cstPostRuleOnlyOffset, this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular); - else if (/none/i.test(this.nodeLocationTracking)) - this.setNodeLocationFromToken = de, this.setNodeLocationFromNode = de, this.cstPostRule = de, this.setInitialNodeLocation = de; - else - throw Error('Invalid config option: "' + e.nodeLocationTracking + '"'); - }, t.prototype.setInitialNodeLocationOnlyOffsetRecovery = function(e) { - e.location = { - startOffset: NaN, - endOffset: NaN - }; - }, t.prototype.setInitialNodeLocationOnlyOffsetRegular = function(e) { - e.location = { - // without error recovery the starting Location of a new CstNode is guaranteed - // To be the next Token's startOffset (for valid inputs). - // For invalid inputs there won't be any CSTOutput so this potential - // inaccuracy does not matter - startOffset: this.LA(1).startOffset, - endOffset: NaN - }; - }, t.prototype.setInitialNodeLocationFullRecovery = function(e) { - e.location = { - startOffset: NaN, - startLine: NaN, - startColumn: NaN, - endOffset: NaN, - endLine: NaN, - endColumn: NaN - }; - }, t.prototype.setInitialNodeLocationFullRegular = function(e) { - var n = this.LA(1); - e.location = { - startOffset: n.startOffset, - startLine: n.startLine, - startColumn: n.startColumn, - endOffset: NaN, - endLine: NaN, - endColumn: NaN - }; - }, t.prototype.cstInvocationStateUpdate = function(e, n) { - var r = { - name: e, - children: {} - }; - this.setInitialNodeLocation(r), this.CST_STACK.push(r); - }, t.prototype.cstFinallyStateUpdate = function() { - this.CST_STACK.pop(); - }, t.prototype.cstPostRuleFull = function(e) { - var n = this.LA(0), r = e.location; - r.startOffset <= n.startOffset ? (r.endOffset = n.endOffset, r.endLine = n.endLine, r.endColumn = n.endColumn) : (r.startOffset = NaN, r.startLine = NaN, r.startColumn = NaN); - }, t.prototype.cstPostRuleOnlyOffset = function(e) { - var n = this.LA(0), r = e.location; - r.startOffset <= n.startOffset ? r.endOffset = n.endOffset : r.startOffset = NaN; - }, t.prototype.cstPostTerminal = function(e, n) { - var r = this.CST_STACK[this.CST_STACK.length - 1]; - pu(r, n, e), this.setNodeLocationFromToken(r.location, n); - }, t.prototype.cstPostNonTerminal = function(e, n) { - var r = this.CST_STACK[this.CST_STACK.length - 1]; - du(r, n, e), this.setNodeLocationFromNode(r.location, e.location); - }, t.prototype.getBaseCstVisitorConstructor = function() { - if (pt(this.baseCstVisitorConstructor)) { - var e = Eu(this.className, Ze(this.gastProductionsCache)); - return this.baseCstVisitorConstructor = e, e; - } - return this.baseCstVisitorConstructor; - }, t.prototype.getBaseCstVisitorConstructorWithDefaults = function() { - if (pt(this.baseCstVisitorWithDefaultsConstructor)) { - var e = mu(this.className, Ze(this.gastProductionsCache), this.getBaseCstVisitorConstructor()); - return this.baseCstVisitorWithDefaultsConstructor = e, e; - } - return this.baseCstVisitorWithDefaultsConstructor; - }, t.prototype.getLastExplicitRuleShortName = function() { - var e = this.RULE_STACK; - return e[e.length - 1]; - }, t.prototype.getPreviousExplicitRuleShortName = function() { - var e = this.RULE_STACK; - return e[e.length - 2]; - }, t.prototype.getLastExplicitRuleOccurrenceIndex = function() { - var e = this.RULE_OCCURRENCE_STACK; - return e[e.length - 1]; - }, t; - }() -), wu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initLexerAdapter = function() { - this.tokVector = [], this.tokVectorLength = 0, this.currIdx = -1; - }, Object.defineProperty(t.prototype, "input", { - get: function() { - return this.tokVector; - }, - set: function(e) { - if (this.selfAnalysisDone !== !0) - throw Error("Missing invocation at the end of the Parser's constructor."); - this.reset(), this.tokVector = e, this.tokVectorLength = e.length; - }, - enumerable: !1, - configurable: !0 - }), t.prototype.SKIP_TOKEN = function() { - return this.currIdx <= this.tokVector.length - 2 ? (this.consumeToken(), this.LA(1)) : Dn; - }, t.prototype.LA = function(e) { - var n = this.currIdx + e; - return n < 0 || this.tokVectorLength <= n ? Dn : this.tokVector[n]; - }, t.prototype.consumeToken = function() { - this.currIdx++; - }, t.prototype.exportLexerState = function() { - return this.currIdx; - }, t.prototype.importLexerState = function(e) { - this.currIdx = e; - }, t.prototype.resetLexerState = function() { - this.currIdx = -1; - }, t.prototype.moveToTerminatedState = function() { - this.currIdx = this.tokVector.length - 1; - }, t.prototype.getLexerPosition = function() { - return this.exportLexerState(); - }, t; - }() -), Cu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.ACTION = function(e) { - return e.call(this); - }, t.prototype.consume = function(e, n, r) { - return this.consumeInternal(n, e, r); - }, t.prototype.subrule = function(e, n, r) { - return this.subruleInternal(n, e, r); - }, t.prototype.option = function(e, n) { - return this.optionInternal(n, e); - }, t.prototype.or = function(e, n) { - return this.orInternal(n, e); - }, t.prototype.many = function(e, n) { - return this.manyInternal(e, n); - }, t.prototype.atLeastOne = function(e, n) { - return this.atLeastOneInternal(e, n); - }, t.prototype.CONSUME = function(e, n) { - return this.consumeInternal(e, 0, n); - }, t.prototype.CONSUME1 = function(e, n) { - return this.consumeInternal(e, 1, n); - }, t.prototype.CONSUME2 = function(e, n) { - return this.consumeInternal(e, 2, n); - }, t.prototype.CONSUME3 = function(e, n) { - return this.consumeInternal(e, 3, n); - }, t.prototype.CONSUME4 = function(e, n) { - return this.consumeInternal(e, 4, n); - }, t.prototype.CONSUME5 = function(e, n) { - return this.consumeInternal(e, 5, n); - }, t.prototype.CONSUME6 = function(e, n) { - return this.consumeInternal(e, 6, n); - }, t.prototype.CONSUME7 = function(e, n) { - return this.consumeInternal(e, 7, n); - }, t.prototype.CONSUME8 = function(e, n) { - return this.consumeInternal(e, 8, n); - }, t.prototype.CONSUME9 = function(e, n) { - return this.consumeInternal(e, 9, n); - }, t.prototype.SUBRULE = function(e, n) { - return this.subruleInternal(e, 0, n); - }, t.prototype.SUBRULE1 = function(e, n) { - return this.subruleInternal(e, 1, n); - }, t.prototype.SUBRULE2 = function(e, n) { - return this.subruleInternal(e, 2, n); - }, t.prototype.SUBRULE3 = function(e, n) { - return this.subruleInternal(e, 3, n); - }, t.prototype.SUBRULE4 = function(e, n) { - return this.subruleInternal(e, 4, n); - }, t.prototype.SUBRULE5 = function(e, n) { - return this.subruleInternal(e, 5, n); - }, t.prototype.SUBRULE6 = function(e, n) { - return this.subruleInternal(e, 6, n); - }, t.prototype.SUBRULE7 = function(e, n) { - return this.subruleInternal(e, 7, n); - }, t.prototype.SUBRULE8 = function(e, n) { - return this.subruleInternal(e, 8, n); - }, t.prototype.SUBRULE9 = function(e, n) { - return this.subruleInternal(e, 9, n); - }, t.prototype.OPTION = function(e) { - return this.optionInternal(e, 0); - }, t.prototype.OPTION1 = function(e) { - return this.optionInternal(e, 1); - }, t.prototype.OPTION2 = function(e) { - return this.optionInternal(e, 2); - }, t.prototype.OPTION3 = function(e) { - return this.optionInternal(e, 3); - }, t.prototype.OPTION4 = function(e) { - return this.optionInternal(e, 4); - }, t.prototype.OPTION5 = function(e) { - return this.optionInternal(e, 5); - }, t.prototype.OPTION6 = function(e) { - return this.optionInternal(e, 6); - }, t.prototype.OPTION7 = function(e) { - return this.optionInternal(e, 7); - }, t.prototype.OPTION8 = function(e) { - return this.optionInternal(e, 8); - }, t.prototype.OPTION9 = function(e) { - return this.optionInternal(e, 9); - }, t.prototype.OR = function(e) { - return this.orInternal(e, 0); - }, t.prototype.OR1 = function(e) { - return this.orInternal(e, 1); - }, t.prototype.OR2 = function(e) { - return this.orInternal(e, 2); - }, t.prototype.OR3 = function(e) { - return this.orInternal(e, 3); - }, t.prototype.OR4 = function(e) { - return this.orInternal(e, 4); - }, t.prototype.OR5 = function(e) { - return this.orInternal(e, 5); - }, t.prototype.OR6 = function(e) { - return this.orInternal(e, 6); - }, t.prototype.OR7 = function(e) { - return this.orInternal(e, 7); - }, t.prototype.OR8 = function(e) { - return this.orInternal(e, 8); - }, t.prototype.OR9 = function(e) { - return this.orInternal(e, 9); - }, t.prototype.MANY = function(e) { - this.manyInternal(0, e); - }, t.prototype.MANY1 = function(e) { - this.manyInternal(1, e); - }, t.prototype.MANY2 = function(e) { - this.manyInternal(2, e); - }, t.prototype.MANY3 = function(e) { - this.manyInternal(3, e); - }, t.prototype.MANY4 = function(e) { - this.manyInternal(4, e); - }, t.prototype.MANY5 = function(e) { - this.manyInternal(5, e); - }, t.prototype.MANY6 = function(e) { - this.manyInternal(6, e); - }, t.prototype.MANY7 = function(e) { - this.manyInternal(7, e); - }, t.prototype.MANY8 = function(e) { - this.manyInternal(8, e); - }, t.prototype.MANY9 = function(e) { - this.manyInternal(9, e); - }, t.prototype.MANY_SEP = function(e) { - this.manySepFirstInternal(0, e); - }, t.prototype.MANY_SEP1 = function(e) { - this.manySepFirstInternal(1, e); - }, t.prototype.MANY_SEP2 = function(e) { - this.manySepFirstInternal(2, e); - }, t.prototype.MANY_SEP3 = function(e) { - this.manySepFirstInternal(3, e); - }, t.prototype.MANY_SEP4 = function(e) { - this.manySepFirstInternal(4, e); - }, t.prototype.MANY_SEP5 = function(e) { - this.manySepFirstInternal(5, e); - }, t.prototype.MANY_SEP6 = function(e) { - this.manySepFirstInternal(6, e); - }, t.prototype.MANY_SEP7 = function(e) { - this.manySepFirstInternal(7, e); - }, t.prototype.MANY_SEP8 = function(e) { - this.manySepFirstInternal(8, e); - }, t.prototype.MANY_SEP9 = function(e) { - this.manySepFirstInternal(9, e); - }, t.prototype.AT_LEAST_ONE = function(e) { - this.atLeastOneInternal(0, e); - }, t.prototype.AT_LEAST_ONE1 = function(e) { - return this.atLeastOneInternal(1, e); - }, t.prototype.AT_LEAST_ONE2 = function(e) { - this.atLeastOneInternal(2, e); - }, t.prototype.AT_LEAST_ONE3 = function(e) { - this.atLeastOneInternal(3, e); - }, t.prototype.AT_LEAST_ONE4 = function(e) { - this.atLeastOneInternal(4, e); - }, t.prototype.AT_LEAST_ONE5 = function(e) { - this.atLeastOneInternal(5, e); - }, t.prototype.AT_LEAST_ONE6 = function(e) { - this.atLeastOneInternal(6, e); - }, t.prototype.AT_LEAST_ONE7 = function(e) { - this.atLeastOneInternal(7, e); - }, t.prototype.AT_LEAST_ONE8 = function(e) { - this.atLeastOneInternal(8, e); - }, t.prototype.AT_LEAST_ONE9 = function(e) { - this.atLeastOneInternal(9, e); - }, t.prototype.AT_LEAST_ONE_SEP = function(e) { - this.atLeastOneSepFirstInternal(0, e); - }, t.prototype.AT_LEAST_ONE_SEP1 = function(e) { - this.atLeastOneSepFirstInternal(1, e); - }, t.prototype.AT_LEAST_ONE_SEP2 = function(e) { - this.atLeastOneSepFirstInternal(2, e); - }, t.prototype.AT_LEAST_ONE_SEP3 = function(e) { - this.atLeastOneSepFirstInternal(3, e); - }, t.prototype.AT_LEAST_ONE_SEP4 = function(e) { - this.atLeastOneSepFirstInternal(4, e); - }, t.prototype.AT_LEAST_ONE_SEP5 = function(e) { - this.atLeastOneSepFirstInternal(5, e); - }, t.prototype.AT_LEAST_ONE_SEP6 = function(e) { - this.atLeastOneSepFirstInternal(6, e); - }, t.prototype.AT_LEAST_ONE_SEP7 = function(e) { - this.atLeastOneSepFirstInternal(7, e); - }, t.prototype.AT_LEAST_ONE_SEP8 = function(e) { - this.atLeastOneSepFirstInternal(8, e); - }, t.prototype.AT_LEAST_ONE_SEP9 = function(e) { - this.atLeastOneSepFirstInternal(9, e); - }, t.prototype.RULE = function(e, n, r) { - if (r === void 0 && (r = Vn), fe(this.definedRulesNames, e)) { - var i = Kn.buildDuplicateRuleNameError({ - topLevelRule: e, - grammarName: this.className - }), a = { - message: i, - type: Le.DUPLICATE_RULE_NAME, - ruleName: e - }; - this.definitionErrors.push(a); - } - this.definedRulesNames.push(e); - var c = this.defineRule(e, n, r); - return this[e] = c, c; - }, t.prototype.OVERRIDE_RULE = function(e, n, r) { - r === void 0 && (r = Vn); - var i = []; - i = i.concat(jl(e, this.definedRulesNames, this.className)), this.definitionErrors.push.apply(this.definitionErrors, i); - var a = this.defineRule(e, n, r); - return this[e] = a, a; - }, t.prototype.BACKTRACK = function(e, n) { - return function() { - this.isBackTrackingStack.push(1); - var r = this.saveRecogState(); - try { - return e.apply(this, n), !0; - } catch (i) { - if (rn(i)) - return !1; - throw i; - } finally { - this.reloadRecogState(r), this.isBackTrackingStack.pop(); - } - }; - }, t.prototype.getGAstProductions = function() { - return this.gastProductionsCache; - }, t.prototype.getSerializedGastProductions = function() { - return as(xe(this.gastProductionsCache)); - }, t; - }() -), Iu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initRecognizerEngine = function(e, n) { - if (this.className = vu(this), this.shortRuleNameToFull = {}, this.fullRuleNameToShort = {}, this.ruleShortNameIdx = 256, this.tokenMatcher = Sn, this.definedRulesNames = [], this.tokensMap = {}, this.isBackTrackingStack = [], this.RULE_STACK = [], this.RULE_OCCURRENCE_STACK = [], this.gastProductionsCache = {}, $(n, "serializedGrammar")) - throw Error(`The Parser's configuration can no longer contain a property. +`,type:bn.REDUNDANT_METHOD,methodName:r});return n}var wu=function(){function t(){}return t.prototype.initTreeBuilder=function(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=$(e,"nodeLocationTracking")?e.nodeLocationTracking:vt.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=de,this.cstFinallyStateUpdate=de,this.cstPostTerminal=de,this.cstPostNonTerminal=de,this.cstPostRule=de;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Wi,this.setNodeLocationFromNode=Wi,this.cstPostRule=de,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=de,this.setNodeLocationFromNode=de,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=Hi,this.setNodeLocationFromNode=Hi,this.cstPostRule=de,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=de,this.setNodeLocationFromNode=de,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=de,this.setNodeLocationFromNode=de,this.cstPostRule=de,this.setInitialNodeLocation=de;else throw Error('Invalid config option: "'+e.nodeLocationTracking+'"')},t.prototype.setInitialNodeLocationOnlyOffsetRecovery=function(e){e.location={startOffset:NaN,endOffset:NaN}},t.prototype.setInitialNodeLocationOnlyOffsetRegular=function(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}},t.prototype.setInitialNodeLocationFullRecovery=function(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.setInitialNodeLocationFullRegular=function(e){var n=this.LA(1);e.location={startOffset:n.startOffset,startLine:n.startLine,startColumn:n.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}},t.prototype.cstInvocationStateUpdate=function(e,n){var r={name:e,children:{}};this.setInitialNodeLocation(r),this.CST_STACK.push(r)},t.prototype.cstFinallyStateUpdate=function(){this.CST_STACK.pop()},t.prototype.cstPostRuleFull=function(e){var n=this.LA(0),r=e.location;r.startOffset<=n.startOffset?(r.endOffset=n.endOffset,r.endLine=n.endLine,r.endColumn=n.endColumn):(r.startOffset=NaN,r.startLine=NaN,r.startColumn=NaN)},t.prototype.cstPostRuleOnlyOffset=function(e){var n=this.LA(0),r=e.location;r.startOffset<=n.startOffset?r.endOffset=n.endOffset:r.startOffset=NaN},t.prototype.cstPostTerminal=function(e,n){var r=this.CST_STACK[this.CST_STACK.length-1];du(r,n,e),this.setNodeLocationFromToken(r.location,n)},t.prototype.cstPostNonTerminal=function(e,n){var r=this.CST_STACK[this.CST_STACK.length-1];vu(r,n,e),this.setNodeLocationFromNode(r.location,e.location)},t.prototype.getBaseCstVisitorConstructor=function(){if(pt(this.baseCstVisitorConstructor)){var e=mu(this.className,Ze(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor},t.prototype.getBaseCstVisitorConstructorWithDefaults=function(){if(pt(this.baseCstVisitorWithDefaultsConstructor)){var e=Ru(this.className,Ze(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor},t.prototype.getLastExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-1]},t.prototype.getPreviousExplicitRuleShortName=function(){var e=this.RULE_STACK;return e[e.length-2]},t.prototype.getLastExplicitRuleOccurrenceIndex=function(){var e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]},t}(),Cu=function(){function t(){}return t.prototype.initLexerAdapter=function(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1},Object.defineProperty(t.prototype,"input",{get:function(){return this.tokVector},set:function(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length},enumerable:!1,configurable:!0}),t.prototype.SKIP_TOKEN=function(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Vn},t.prototype.LA=function(e){var n=this.currIdx+e;return n<0||this.tokVectorLength<=n?Vn:this.tokVector[n]},t.prototype.consumeToken=function(){this.currIdx++},t.prototype.exportLexerState=function(){return this.currIdx},t.prototype.importLexerState=function(e){this.currIdx=e},t.prototype.resetLexerState=function(){this.currIdx=-1},t.prototype.moveToTerminatedState=function(){this.currIdx=this.tokVector.length-1},t.prototype.getLexerPosition=function(){return this.exportLexerState()},t}(),Iu=function(){function t(){}return t.prototype.ACTION=function(e){return e.call(this)},t.prototype.consume=function(e,n,r){return this.consumeInternal(n,e,r)},t.prototype.subrule=function(e,n,r){return this.subruleInternal(n,e,r)},t.prototype.option=function(e,n){return this.optionInternal(n,e)},t.prototype.or=function(e,n){return this.orInternal(n,e)},t.prototype.many=function(e,n){return this.manyInternal(e,n)},t.prototype.atLeastOne=function(e,n){return this.atLeastOneInternal(e,n)},t.prototype.CONSUME=function(e,n){return this.consumeInternal(e,0,n)},t.prototype.CONSUME1=function(e,n){return this.consumeInternal(e,1,n)},t.prototype.CONSUME2=function(e,n){return this.consumeInternal(e,2,n)},t.prototype.CONSUME3=function(e,n){return this.consumeInternal(e,3,n)},t.prototype.CONSUME4=function(e,n){return this.consumeInternal(e,4,n)},t.prototype.CONSUME5=function(e,n){return this.consumeInternal(e,5,n)},t.prototype.CONSUME6=function(e,n){return this.consumeInternal(e,6,n)},t.prototype.CONSUME7=function(e,n){return this.consumeInternal(e,7,n)},t.prototype.CONSUME8=function(e,n){return this.consumeInternal(e,8,n)},t.prototype.CONSUME9=function(e,n){return this.consumeInternal(e,9,n)},t.prototype.SUBRULE=function(e,n){return this.subruleInternal(e,0,n)},t.prototype.SUBRULE1=function(e,n){return this.subruleInternal(e,1,n)},t.prototype.SUBRULE2=function(e,n){return this.subruleInternal(e,2,n)},t.prototype.SUBRULE3=function(e,n){return this.subruleInternal(e,3,n)},t.prototype.SUBRULE4=function(e,n){return this.subruleInternal(e,4,n)},t.prototype.SUBRULE5=function(e,n){return this.subruleInternal(e,5,n)},t.prototype.SUBRULE6=function(e,n){return this.subruleInternal(e,6,n)},t.prototype.SUBRULE7=function(e,n){return this.subruleInternal(e,7,n)},t.prototype.SUBRULE8=function(e,n){return this.subruleInternal(e,8,n)},t.prototype.SUBRULE9=function(e,n){return this.subruleInternal(e,9,n)},t.prototype.OPTION=function(e){return this.optionInternal(e,0)},t.prototype.OPTION1=function(e){return this.optionInternal(e,1)},t.prototype.OPTION2=function(e){return this.optionInternal(e,2)},t.prototype.OPTION3=function(e){return this.optionInternal(e,3)},t.prototype.OPTION4=function(e){return this.optionInternal(e,4)},t.prototype.OPTION5=function(e){return this.optionInternal(e,5)},t.prototype.OPTION6=function(e){return this.optionInternal(e,6)},t.prototype.OPTION7=function(e){return this.optionInternal(e,7)},t.prototype.OPTION8=function(e){return this.optionInternal(e,8)},t.prototype.OPTION9=function(e){return this.optionInternal(e,9)},t.prototype.OR=function(e){return this.orInternal(e,0)},t.prototype.OR1=function(e){return this.orInternal(e,1)},t.prototype.OR2=function(e){return this.orInternal(e,2)},t.prototype.OR3=function(e){return this.orInternal(e,3)},t.prototype.OR4=function(e){return this.orInternal(e,4)},t.prototype.OR5=function(e){return this.orInternal(e,5)},t.prototype.OR6=function(e){return this.orInternal(e,6)},t.prototype.OR7=function(e){return this.orInternal(e,7)},t.prototype.OR8=function(e){return this.orInternal(e,8)},t.prototype.OR9=function(e){return this.orInternal(e,9)},t.prototype.MANY=function(e){this.manyInternal(0,e)},t.prototype.MANY1=function(e){this.manyInternal(1,e)},t.prototype.MANY2=function(e){this.manyInternal(2,e)},t.prototype.MANY3=function(e){this.manyInternal(3,e)},t.prototype.MANY4=function(e){this.manyInternal(4,e)},t.prototype.MANY5=function(e){this.manyInternal(5,e)},t.prototype.MANY6=function(e){this.manyInternal(6,e)},t.prototype.MANY7=function(e){this.manyInternal(7,e)},t.prototype.MANY8=function(e){this.manyInternal(8,e)},t.prototype.MANY9=function(e){this.manyInternal(9,e)},t.prototype.MANY_SEP=function(e){this.manySepFirstInternal(0,e)},t.prototype.MANY_SEP1=function(e){this.manySepFirstInternal(1,e)},t.prototype.MANY_SEP2=function(e){this.manySepFirstInternal(2,e)},t.prototype.MANY_SEP3=function(e){this.manySepFirstInternal(3,e)},t.prototype.MANY_SEP4=function(e){this.manySepFirstInternal(4,e)},t.prototype.MANY_SEP5=function(e){this.manySepFirstInternal(5,e)},t.prototype.MANY_SEP6=function(e){this.manySepFirstInternal(6,e)},t.prototype.MANY_SEP7=function(e){this.manySepFirstInternal(7,e)},t.prototype.MANY_SEP8=function(e){this.manySepFirstInternal(8,e)},t.prototype.MANY_SEP9=function(e){this.manySepFirstInternal(9,e)},t.prototype.AT_LEAST_ONE=function(e){this.atLeastOneInternal(0,e)},t.prototype.AT_LEAST_ONE1=function(e){return this.atLeastOneInternal(1,e)},t.prototype.AT_LEAST_ONE2=function(e){this.atLeastOneInternal(2,e)},t.prototype.AT_LEAST_ONE3=function(e){this.atLeastOneInternal(3,e)},t.prototype.AT_LEAST_ONE4=function(e){this.atLeastOneInternal(4,e)},t.prototype.AT_LEAST_ONE5=function(e){this.atLeastOneInternal(5,e)},t.prototype.AT_LEAST_ONE6=function(e){this.atLeastOneInternal(6,e)},t.prototype.AT_LEAST_ONE7=function(e){this.atLeastOneInternal(7,e)},t.prototype.AT_LEAST_ONE8=function(e){this.atLeastOneInternal(8,e)},t.prototype.AT_LEAST_ONE9=function(e){this.atLeastOneInternal(9,e)},t.prototype.AT_LEAST_ONE_SEP=function(e){this.atLeastOneSepFirstInternal(0,e)},t.prototype.AT_LEAST_ONE_SEP1=function(e){this.atLeastOneSepFirstInternal(1,e)},t.prototype.AT_LEAST_ONE_SEP2=function(e){this.atLeastOneSepFirstInternal(2,e)},t.prototype.AT_LEAST_ONE_SEP3=function(e){this.atLeastOneSepFirstInternal(3,e)},t.prototype.AT_LEAST_ONE_SEP4=function(e){this.atLeastOneSepFirstInternal(4,e)},t.prototype.AT_LEAST_ONE_SEP5=function(e){this.atLeastOneSepFirstInternal(5,e)},t.prototype.AT_LEAST_ONE_SEP6=function(e){this.atLeastOneSepFirstInternal(6,e)},t.prototype.AT_LEAST_ONE_SEP7=function(e){this.atLeastOneSepFirstInternal(7,e)},t.prototype.AT_LEAST_ONE_SEP8=function(e){this.atLeastOneSepFirstInternal(8,e)},t.prototype.AT_LEAST_ONE_SEP9=function(e){this.atLeastOneSepFirstInternal(9,e)},t.prototype.RULE=function(e,n,r){if(r===void 0&&(r=Gn),fe(this.definedRulesNames,e)){var i=Qn.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),a={message:i,type:Le.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(a)}this.definedRulesNames.push(e);var c=this.defineRule(e,n,r);return this[e]=c,c},t.prototype.OVERRIDE_RULE=function(e,n,r){r===void 0&&(r=Gn);var i=[];i=i.concat(eu(e,this.definedRulesNames,this.className)),this.definitionErrors.push.apply(this.definitionErrors,i);var a=this.defineRule(e,n,r);return this[e]=a,a},t.prototype.BACKTRACK=function(e,n){return function(){this.isBackTrackingStack.push(1);var r=this.saveRecogState();try{return e.apply(this,n),!0}catch(i){if(rn(i))return!1;throw i}finally{this.reloadRecogState(r),this.isBackTrackingStack.pop()}}},t.prototype.getGAstProductions=function(){return this.gastProductionsCache},t.prototype.getSerializedGastProductions=function(){return ds(xe(this.gastProductionsCache))},t}(),Ou=function(){function t(){}return t.prototype.initRecognizerEngine=function(e,n){if(this.className=gu(this),this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Bn,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},$(n,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 - For Further details.`); - if (ot(e)) { - if (ee(e)) - throw Error(`A Token Vocabulary cannot be empty. + For Further details.`);if(ot(e)){if(ee(e))throw Error(`A Token Vocabulary cannot be empty. Note that the first argument for the parser constructor - is no longer a Token vector (since v4.0).`); - if (typeof e[0].startOffset == "number") - throw Error(`The Parser constructor no longer accepts a token vector as the first argument. + is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 - For Further details.`); - } - if (ot(e)) - this.tokensMap = Ne(e, function(c, h) { - return c[h.name] = h, c; - }, {}); - else if ($(e, "modes") && We(Ge(xe(e.modes)), gl)) { - var r = Ge(xe(e.modes)), i = Vr(r); - this.tokensMap = Ne(i, function(c, h) { - return c[h.name] = h, c; - }, {}); - } else if (Gr(e)) - this.tokensMap = on(e); - else - throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition"); - this.tokensMap.EOF = wt; - var a = We(xe(e), function(c) { - return ee(c.categoryMatches); - }); - this.tokenMatcher = a ? Sn : Wn, cn(xe(this.tokensMap)); - }, t.prototype.defineRule = function(e, n, r) { - if (this.selfAnalysisDone) - throw Error("Grammar rule <" + e + `> may not be defined after the 'performSelfAnalysis' method has been called' -Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`); - var i = $(r, "resyncEnabled") ? r.resyncEnabled : Vn.resyncEnabled, a = $(r, "recoveryValueFunc") ? r.recoveryValueFunc : Vn.recoveryValueFunc, c = this.ruleShortNameIdx << fu + It; - this.ruleShortNameIdx++, this.shortRuleNameToFull[c] = e, this.fullRuleNameToShort[e] = c; - function h(o) { - try { - if (this.outputCst === !0) { - n.apply(this, o); - var s = this.CST_STACK[this.CST_STACK.length - 1]; - return this.cstPostRule(s), s; - } else - return n.apply(this, o); - } catch (l) { - return this.invokeRuleCatch(l, i, a); - } finally { - this.ruleFinallyStateUpdate(); - } - } - var p; - p = function(o, s) { - return o === void 0 && (o = 0), this.ruleInvocationStateUpdate(c, e, o), h.call(this, s); - }; - var u = "ruleName"; - return p[u] = e, p.originalGrammarAction = n, p; - }, t.prototype.invokeRuleCatch = function(e, n, r) { - var i = this.RULE_STACK.length === 1, a = n && !this.isBackTracking() && this.recoveryEnabled; - if (rn(e)) { - var c = e; - if (a) { - var h = this.findReSyncTokenType(); - if (this.isInCurrentRuleReSyncSet(h)) - if (c.resyncedTokens = this.reSyncTo(h), this.outputCst) { - var p = this.CST_STACK[this.CST_STACK.length - 1]; - return p.recoveredNode = !0, p; - } else - return r(); - else { - if (this.outputCst) { - var p = this.CST_STACK[this.CST_STACK.length - 1]; - p.recoveredNode = !0, c.partialCstResult = p; - } - throw c; - } - } else { - if (i) - return this.moveToTerminatedState(), r(); - throw c; - } - } else - throw e; - }, t.prototype.optionInternal = function(e, n) { - var r = this.getKeyForAutomaticLookahead(_s, n); - return this.optionInternalLogic(e, n, r); - }, t.prototype.optionInternalLogic = function(e, n, r) { - var i = this, a = this.getLaFuncFromCache(r), c, h; - if (e.DEF !== void 0) { - if (c = e.DEF, h = e.GATE, h !== void 0) { - var p = a; - a = function() { - return h.call(i) && p.call(i); - }; - } - } else - c = e; - if (a.call(this) === !0) - return c.call(this); - }, t.prototype.atLeastOneInternal = function(e, n) { - var r = this.getKeyForAutomaticLookahead(Sr, e); - return this.atLeastOneInternalLogic(e, n, r); - }, t.prototype.atLeastOneInternalLogic = function(e, n, r) { - var i = this, a = this.getLaFuncFromCache(r), c, h; - if (n.DEF !== void 0) { - if (c = n.DEF, h = n.GATE, h !== void 0) { - var p = a; - a = function() { - return h.call(i) && p.call(i); - }; - } - } else - c = n; - if (a.call(this) === !0) - for (var u = this.doSingleRepetition(c); a.call(this) === !0 && u === !0; ) - u = this.doSingleRepetition(c); - else - throw this.raiseEarlyExitException(e, j.REPETITION_MANDATORY, n.ERR_MSG); - this.attemptInRepetitionRecovery(this.atLeastOneInternal, [e, n], a, Sr, e, bl); - }, t.prototype.atLeastOneSepFirstInternal = function(e, n) { - var r = this.getKeyForAutomaticLookahead(Un, e); - this.atLeastOneSepFirstInternalLogic(e, n, r); - }, t.prototype.atLeastOneSepFirstInternalLogic = function(e, n, r) { - var i = this, a = n.DEF, c = n.SEP, h = this.getLaFuncFromCache(r); - if (h.call(this) === !0) { - a.call(this); - for (var p = function() { - return i.tokenMatcher(i.LA(1), c); - }; this.tokenMatcher(this.LA(1), c) === !0; ) - this.CONSUME(c), a.call(this); - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - e, - c, - p, - a, - Fi - ], p, Un, e, Fi); - } else - throw this.raiseEarlyExitException(e, j.REPETITION_MANDATORY_WITH_SEPARATOR, n.ERR_MSG); - }, t.prototype.manyInternal = function(e, n) { - var r = this.getKeyForAutomaticLookahead(xr, e); - return this.manyInternalLogic(e, n, r); - }, t.prototype.manyInternalLogic = function(e, n, r) { - var i = this, a = this.getLaFuncFromCache(r), c, h; - if (n.DEF !== void 0) { - if (c = n.DEF, h = n.GATE, h !== void 0) { - var p = a; - a = function() { - return h.call(i) && p.call(i); - }; - } - } else - c = n; - for (var u = !0; a.call(this) === !0 && u === !0; ) - u = this.doSingleRepetition(c); - this.attemptInRepetitionRecovery( - this.manyInternal, - [e, n], - a, - xr, - e, - Fl, - // The notStuck parameter is only relevant when "attemptInRepetitionRecovery" - // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP] - // An infinite loop cannot occur as: - // - Either the lookahead is guaranteed to consume something (Single Token Separator) - // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out). - u - ); - }, t.prototype.manySepFirstInternal = function(e, n) { - var r = this.getKeyForAutomaticLookahead(Br, e); - this.manySepFirstInternalLogic(e, n, r); - }, t.prototype.manySepFirstInternalLogic = function(e, n, r) { - var i = this, a = n.DEF, c = n.SEP, h = this.getLaFuncFromCache(r); - if (h.call(this) === !0) { - a.call(this); - for (var p = function() { - return i.tokenMatcher(i.LA(1), c); - }; this.tokenMatcher(this.LA(1), c) === !0; ) - this.CONSUME(c), a.call(this); - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - e, - c, - p, - a, - Bi - ], p, Br, e, Bi); - } - }, t.prototype.repetitionSepSecondInternal = function(e, n, r, i, a) { - for (; r(); ) - this.CONSUME(n), i.call(this); - this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [ - e, - n, - r, - i, - a - ], r, Un, e, a); - }, t.prototype.doSingleRepetition = function(e) { - var n = this.getLexerPosition(); - e.call(this); - var r = this.getLexerPosition(); - return r > n; - }, t.prototype.orInternal = function(e, n) { - var r = this.getKeyForAutomaticLookahead(Ls, n), i = ot(e) ? e : e.DEF, a = this.getLaFuncFromCache(r), c = a.call(this, i); - if (c !== void 0) { - var h = i[c]; - return h.ALT.call(this); - } - this.raiseNoAltException(n, e.ERR_MSG); - }, t.prototype.ruleFinallyStateUpdate = function() { - if (this.RULE_STACK.pop(), this.RULE_OCCURRENCE_STACK.pop(), this.cstFinallyStateUpdate(), this.RULE_STACK.length === 0 && this.isAtEndOfInput() === !1) { - var e = this.LA(1), n = this.errorMessageProvider.buildNotAllInputParsedMessage({ - firstRedundant: e, - ruleName: this.getCurrRuleFullName() - }); - this.SAVE_ERROR(new Is(n, e)); - } - }, t.prototype.subruleInternal = function(e, n, r) { - var i; - try { - var a = r !== void 0 ? r.ARGS : void 0; - return i = e.call(this, n, a), this.cstPostNonTerminal(i, r !== void 0 && r.LABEL !== void 0 ? r.LABEL : e.ruleName), i; - } catch (c) { - this.subruleInternalError(c, r, e.ruleName); - } - }, t.prototype.subruleInternalError = function(e, n, r) { - throw rn(e) && e.partialCstResult !== void 0 && (this.cstPostNonTerminal(e.partialCstResult, n !== void 0 && n.LABEL !== void 0 ? n.LABEL : r), delete e.partialCstResult), e; - }, t.prototype.consumeInternal = function(e, n, r) { - var i; - try { - var a = this.LA(1); - this.tokenMatcher(a, e) === !0 ? (this.consumeToken(), i = a) : this.consumeInternalError(e, a, r); - } catch (c) { - i = this.consumeInternalRecovery(e, n, c); - } - return this.cstPostTerminal(r !== void 0 && r.LABEL !== void 0 ? r.LABEL : e.name, i), i; - }, t.prototype.consumeInternalError = function(e, n, r) { - var i, a = this.LA(0); - throw r !== void 0 && r.ERR_MSG ? i = r.ERR_MSG : i = this.errorMessageProvider.buildMismatchTokenMessage({ - expected: e, - actual: n, - previous: a, - ruleName: this.getCurrRuleFullName() - }), this.SAVE_ERROR(new Qr(i, n, a)); - }, t.prototype.consumeInternalRecovery = function(e, n, r) { - if (this.recoveryEnabled && // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions? - r.name === "MismatchedTokenException" && !this.isBackTracking()) { - var i = this.getFollowsForInRuleRecovery(e, n); - try { - return this.tryInRuleRecovery(e, i); - } catch (a) { - throw a.name === Ms ? r : a; - } - } else - throw r; - }, t.prototype.saveRecogState = function() { - var e = this.errors, n = Se(this.RULE_STACK); - return { - errors: e, - lexerState: this.exportLexerState(), - RULE_STACK: n, - CST_STACK: this.CST_STACK - }; - }, t.prototype.reloadRecogState = function(e) { - this.errors = e.errors, this.importLexerState(e.lexerState), this.RULE_STACK = e.RULE_STACK; - }, t.prototype.ruleInvocationStateUpdate = function(e, n, r) { - this.RULE_OCCURRENCE_STACK.push(r), this.RULE_STACK.push(e), this.cstInvocationStateUpdate(n, e); - }, t.prototype.isBackTracking = function() { - return this.isBackTrackingStack.length !== 0; - }, t.prototype.getCurrRuleFullName = function() { - var e = this.getLastExplicitRuleShortName(); - return this.shortRuleNameToFull[e]; - }, t.prototype.shortRuleNameToFullName = function(e) { - return this.shortRuleNameToFull[e]; - }, t.prototype.isAtEndOfInput = function() { - return this.tokenMatcher(this.LA(1), wt); - }, t.prototype.reset = function() { - this.resetLexerState(), this.isBackTrackingStack = [], this.errors = [], this.RULE_STACK = [], this.CST_STACK = [], this.RULE_OCCURRENCE_STACK = []; - }, t; - }() -), Ou = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initErrorHandler = function(e) { - this._errors = [], this.errorMessageProvider = $(e, "errorMessageProvider") ? e.errorMessageProvider : vt.errorMessageProvider; - }, t.prototype.SAVE_ERROR = function(e) { - if (rn(e)) - return e.context = { - ruleStack: this.getHumanReadableRuleStack(), - ruleOccurrenceStack: Se(this.RULE_OCCURRENCE_STACK) - }, this._errors.push(e), e; - throw Error("Trying to save an Error which is not a RecognitionException"); - }, Object.defineProperty(t.prototype, "errors", { - get: function() { - return Se(this._errors); - }, - set: function(e) { - this._errors = e; - }, - enumerable: !1, - configurable: !0 - }), t.prototype.raiseEarlyExitException = function(e, n, r) { - for (var i = this.getCurrRuleFullName(), a = this.getGAstProductions()[i], c = Kr(e, a, n, this.maxLookahead), h = c[0], p = [], u = 1; u <= this.maxLookahead; u++) - p.push(this.LA(u)); - var o = this.errorMessageProvider.buildEarlyExitMessage({ - expectedIterationPaths: h, - actual: p, - previous: this.LA(0), - customUserDescription: r, - ruleName: i - }); - throw this.SAVE_ERROR(new Os(o, this.LA(1), this.LA(0))); - }, t.prototype.raiseNoAltException = function(e, n) { - for (var r = this.getCurrRuleFullName(), i = this.getGAstProductions()[r], a = Yr(e, i, this.maxLookahead), c = [], h = 1; h <= this.maxLookahead; h++) - c.push(this.LA(h)); - var p = this.LA(0), u = this.errorMessageProvider.buildNoViableAltMessage({ - expectedPathsPerAlt: a, - actual: c, - previous: p, - customUserDescription: n, - ruleName: this.getCurrRuleFullName() - }); - throw this.SAVE_ERROR(new Cs(u, this.LA(1), p)); - }, t; - }() -), Mu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initContentAssist = function() { - }, t.prototype.computeContentAssist = function(e, n) { - var r = this.gastProductionsCache[e]; - if (pt(r)) - throw Error("Rule ->" + e + "<- does not exist in this grammar."); - return fs([r], n, this.tokenMatcher, this.maxLookahead); - }, t.prototype.getNextPossibleTokenTypes = function(e) { - var n = Je(e.ruleStack), r = this.getGAstProductions(), i = r[n], a = new Bl(i, e).startWalking(); - return a; - }, t; - }() -), Zn = { - description: "This Object indicates the Parser is during Recording Phase" -}; -Object.freeze(Zn); -var $i = !0, Hi = Math.pow(2, It) - 1, ks = Wr({ name: "RECORDING_PHASE_TOKEN", pattern: Qe.NA }); -cn([ks]); -var xs = qn( - ks, - `This IToken indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`, - // Using "-1" instead of NaN (as in EOF) because an actual number is less likely to - // cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase. - -1, - -1, - -1, - -1, - -1, - -1 -); -Object.freeze(xs); -var Uu = { - name: `This CSTNode indicates the Parser is in Recording Phase - See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`, - children: {} -}, Lu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initGastRecorder = function(e) { - this.recordingProdStack = [], this.RECORDING_PHASE = !1; - }, t.prototype.enableRecording = function() { - var e = this; - this.RECORDING_PHASE = !0, this.TRACE_INIT("Enable Recording", function() { - for (var n = function(i) { - var a = i > 0 ? i : ""; - e["CONSUME" + a] = function(c, h) { - return this.consumeInternalRecord(c, i, h); - }, e["SUBRULE" + a] = function(c, h) { - return this.subruleInternalRecord(c, i, h); - }, e["OPTION" + a] = function(c) { - return this.optionInternalRecord(c, i); - }, e["OR" + a] = function(c) { - return this.orInternalRecord(c, i); - }, e["MANY" + a] = function(c) { - this.manyInternalRecord(i, c); - }, e["MANY_SEP" + a] = function(c) { - this.manySepFirstInternalRecord(i, c); - }, e["AT_LEAST_ONE" + a] = function(c) { - this.atLeastOneInternalRecord(i, c); - }, e["AT_LEAST_ONE_SEP" + a] = function(c) { - this.atLeastOneSepFirstInternalRecord(i, c); - }; - }, r = 0; r < 10; r++) - n(r); - e.consume = function(i, a, c) { - return this.consumeInternalRecord(a, i, c); - }, e.subrule = function(i, a, c) { - return this.subruleInternalRecord(a, i, c); - }, e.option = function(i, a) { - return this.optionInternalRecord(a, i); - }, e.or = function(i, a) { - return this.orInternalRecord(a, i); - }, e.many = function(i, a) { - this.manyInternalRecord(i, a); - }, e.atLeastOne = function(i, a) { - this.atLeastOneInternalRecord(i, a); - }, e.ACTION = e.ACTION_RECORD, e.BACKTRACK = e.BACKTRACK_RECORD, e.LA = e.LA_RECORD; - }); - }, t.prototype.disableRecording = function() { - var e = this; - this.RECORDING_PHASE = !1, this.TRACE_INIT("Deleting Recording methods", function() { - for (var n = 0; n < 10; n++) { - var r = n > 0 ? n : ""; - delete e["CONSUME" + r], delete e["SUBRULE" + r], delete e["OPTION" + r], delete e["OR" + r], delete e["MANY" + r], delete e["MANY_SEP" + r], delete e["AT_LEAST_ONE" + r], delete e["AT_LEAST_ONE_SEP" + r]; - } - delete e.consume, delete e.subrule, delete e.option, delete e.or, delete e.many, delete e.atLeastOne, delete e.ACTION, delete e.BACKTRACK, delete e.LA; - }); - }, t.prototype.ACTION_RECORD = function(e) { - }, t.prototype.BACKTRACK_RECORD = function(e, n) { - return function() { - return !0; - }; - }, t.prototype.LA_RECORD = function(e) { - return Dn; - }, t.prototype.topLevelRuleRecord = function(e, n) { - try { - var r = new kt({ definition: [], name: e }); - return r.name = e, this.recordingProdStack.push(r), n.call(this), this.recordingProdStack.pop(), r; - } catch (i) { - if (i.KNOWN_RECORDER_ERROR !== !0) - try { - i.message = i.message + ` + For Further details.`)}if(ot(e))this.tokensMap=Ne(e,function(c,h){return c[h.name]=h,c},{});else if($(e,"modes")&&We(Ge(xe(e.modes)),El)){var r=Ge(xe(e.modes)),i=qr(r);this.tokensMap=Ne(i,function(c,h){return c[h.name]=h,c},{})}else if(Yr(e))this.tokensMap=on(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=wt;var a=We(xe(e),function(c){return ee(c.categoryMatches)});this.tokenMatcher=a?Bn:Kn,cn(xe(this.tokensMap))},t.prototype.defineRule=function(e,n,r){if(this.selfAnalysisDone)throw Error("Grammar rule <"+e+`> may not be defined after the 'performSelfAnalysis' method has been called' +Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);var i=$(r,"resyncEnabled")?r.resyncEnabled:Gn.resyncEnabled,a=$(r,"recoveryValueFunc")?r.recoveryValueFunc:Gn.recoveryValueFunc,c=this.ruleShortNameIdx<n},t.prototype.orInternal=function(e,n){var r=this.getKeyForAutomaticLookahead(Fs,n),i=ot(e)?e:e.DEF,a=this.getLaFuncFromCache(r),c=a.call(this,i);if(c!==void 0){var h=i[c];return h.ALT.call(this)}this.raiseNoAltException(n,e.ERR_MSG)},t.prototype.ruleFinallyStateUpdate=function(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){var e=this.LA(1),n=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new ks(n,e))}},t.prototype.subruleInternal=function(e,n,r){var i;try{var a=r!==void 0?r.ARGS:void 0;return i=e.call(this,n,a),this.cstPostNonTerminal(i,r!==void 0&&r.LABEL!==void 0?r.LABEL:e.ruleName),i}catch(c){this.subruleInternalError(c,r,e.ruleName)}},t.prototype.subruleInternalError=function(e,n,r){throw rn(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,n!==void 0&&n.LABEL!==void 0?n.LABEL:r),delete e.partialCstResult),e},t.prototype.consumeInternal=function(e,n,r){var i;try{var a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,r)}catch(c){i=this.consumeInternalRecovery(e,n,c)}return this.cstPostTerminal(r!==void 0&&r.LABEL!==void 0?r.LABEL:e.name,i),i},t.prototype.consumeInternalError=function(e,n,r){var i,a=this.LA(0);throw r!==void 0&&r.ERR_MSG?i=r.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:n,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new ti(i,n,a))},t.prototype.consumeInternalRecovery=function(e,n,r){if(this.recoveryEnabled&&r.name==="MismatchedTokenException"&&!this.isBackTracking()){var i=this.getFollowsForInRuleRecovery(e,n);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===Ss?r:a}}else throw r},t.prototype.saveRecogState=function(){var e=this.errors,n=Se(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:n,CST_STACK:this.CST_STACK}},t.prototype.reloadRecogState=function(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK},t.prototype.ruleInvocationStateUpdate=function(e,n,r){this.RULE_OCCURRENCE_STACK.push(r),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(n,e)},t.prototype.isBackTracking=function(){return this.isBackTrackingStack.length!==0},t.prototype.getCurrRuleFullName=function(){var e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]},t.prototype.shortRuleNameToFullName=function(e){return this.shortRuleNameToFull[e]},t.prototype.isAtEndOfInput=function(){return this.tokenMatcher(this.LA(1),wt)},t.prototype.reset=function(){this.resetLexerState(),this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]},t}(),Mu=function(){function t(){}return t.prototype.initErrorHandler=function(e){this._errors=[],this.errorMessageProvider=$(e,"errorMessageProvider")?e.errorMessageProvider:vt.errorMessageProvider},t.prototype.SAVE_ERROR=function(e){if(rn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:Se(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")},Object.defineProperty(t.prototype,"errors",{get:function(){return Se(this._errors)},set:function(e){this._errors=e},enumerable:!1,configurable:!0}),t.prototype.raiseEarlyExitException=function(e,n,r){for(var i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],c=Jr(e,a,n,this.maxLookahead),h=c[0],p=[],u=1;u<=this.maxLookahead;u++)p.push(this.LA(u));var o=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:h,actual:p,previous:this.LA(0),customUserDescription:r,ruleName:i});throw this.SAVE_ERROR(new xs(o,this.LA(1),this.LA(0)))},t.prototype.raiseNoAltException=function(e,n){for(var r=this.getCurrRuleFullName(),i=this.getGAstProductions()[r],a=Zr(e,i,this.maxLookahead),c=[],h=1;h<=this.maxLookahead;h++)c.push(this.LA(h));var p=this.LA(0),u=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:c,previous:p,customUserDescription:n,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new Ps(u,this.LA(1),p))},t}(),Uu=function(){function t(){}return t.prototype.initContentAssist=function(){},t.prototype.computeContentAssist=function(e,n){var r=this.gastProductionsCache[e];if(pt(r))throw Error("Rule ->"+e+"<- does not exist in this grammar.");return ms([r],n,this.tokenMatcher,this.maxLookahead)},t.prototype.getNextPossibleTokenTypes=function(e){var n=Je(e.ruleStack),r=this.getGAstProductions(),i=r[n],a=new Fl(i,e).startWalking();return a},t}(),er={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(er);var Yi=!0,Ki=Math.pow(2,It)-1,Vs=Xr({name:"RECORDING_PHASE_TOKEN",pattern:Qe.NA});cn([Vs]);var Gs=zn(Vs,`This IToken indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Gs);var Lu={name:`This CSTNode indicates the Parser is in Recording Phase + See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},_u=function(){function t(){}return t.prototype.initGastRecorder=function(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1},t.prototype.enableRecording=function(){var e=this;this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",function(){for(var n=function(i){var a=i>0?i:"";e["CONSUME"+a]=function(c,h){return this.consumeInternalRecord(c,i,h)},e["SUBRULE"+a]=function(c,h){return this.subruleInternalRecord(c,i,h)},e["OPTION"+a]=function(c){return this.optionInternalRecord(c,i)},e["OR"+a]=function(c){return this.orInternalRecord(c,i)},e["MANY"+a]=function(c){this.manyInternalRecord(i,c)},e["MANY_SEP"+a]=function(c){this.manySepFirstInternalRecord(i,c)},e["AT_LEAST_ONE"+a]=function(c){this.atLeastOneInternalRecord(i,c)},e["AT_LEAST_ONE_SEP"+a]=function(c){this.atLeastOneSepFirstInternalRecord(i,c)}},r=0;r<10;r++)n(r);e.consume=function(i,a,c){return this.consumeInternalRecord(a,i,c)},e.subrule=function(i,a,c){return this.subruleInternalRecord(a,i,c)},e.option=function(i,a){return this.optionInternalRecord(a,i)},e.or=function(i,a){return this.orInternalRecord(a,i)},e.many=function(i,a){this.manyInternalRecord(i,a)},e.atLeastOne=function(i,a){this.atLeastOneInternalRecord(i,a)},e.ACTION=e.ACTION_RECORD,e.BACKTRACK=e.BACKTRACK_RECORD,e.LA=e.LA_RECORD})},t.prototype.disableRecording=function(){var e=this;this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",function(){for(var n=0;n<10;n++){var r=n>0?n:"";delete e["CONSUME"+r],delete e["SUBRULE"+r],delete e["OPTION"+r],delete e["OR"+r],delete e["MANY"+r],delete e["MANY_SEP"+r],delete e["AT_LEAST_ONE"+r],delete e["AT_LEAST_ONE_SEP"+r]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})},t.prototype.ACTION_RECORD=function(e){},t.prototype.BACKTRACK_RECORD=function(e,n){return function(){return!0}},t.prototype.LA_RECORD=function(e){return Vn},t.prototype.topLevelRuleRecord=function(e,n){try{var r=new xt({definition:[],name:e});return r.name=e,this.recordingProdStack.push(r),n.call(this),this.recordingProdStack.pop(),r}catch(i){if(i.KNOWN_RECORDER_ERROR!==!0)try{i.message=i.message+` This error was thrown during the "grammar recording phase" For more info see: - https://chevrotain.io/docs/guide/internals.html#grammar-recording`; - } catch { - throw i; - } - throw i; - } - }, t.prototype.optionInternalRecord = function(e, n) { - return zt.call(this, ye, e, n); - }, t.prototype.atLeastOneInternalRecord = function(e, n) { - zt.call(this, qe, n, e); - }, t.prototype.atLeastOneSepFirstInternalRecord = function(e, n) { - zt.call(this, Ye, n, e, $i); - }, t.prototype.manyInternalRecord = function(e, n) { - zt.call(this, ce, n, e); - }, t.prototype.manySepFirstInternalRecord = function(e, n) { - zt.call(this, $e, n, e, $i); - }, t.prototype.orInternalRecord = function(e, n) { - return _u.call(this, e, n); - }, t.prototype.subruleInternalRecord = function(e, n, r) { - if (bn(n), !e || $(e, "ruleName") === !1) { - var i = new Error(" argument is invalid" + (" expecting a Parser method reference but got: <" + JSON.stringify(e) + ">") + (` - inside top level rule: <` + this.recordingProdStack[0].name + ">")); - throw i.KNOWN_RECORDER_ERROR = !0, i; - } - var a = kn(this.recordingProdStack), c = e.ruleName, h = new Ue({ - idx: n, - nonTerminalName: c, - // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created - referencedRule: void 0 - }); - return a.definition.push(h), this.outputCst ? Uu : Zn; - }, t.prototype.consumeInternalRecord = function(e, n, r) { - if (bn(n), !is(e)) { - var i = new Error(" argument is invalid" + (" expecting a TokenType reference but got: <" + JSON.stringify(e) + ">") + (` - inside top level rule: <` + this.recordingProdStack[0].name + ">")); - throw i.KNOWN_RECORDER_ERROR = !0, i; - } - var a = kn(this.recordingProdStack), c = new ne({ - idx: n, - terminalType: e - }); - return a.definition.push(c), xs; - }, t; - }() -); -function zt(t, e, n, r) { - r === void 0 && (r = !1), bn(n); - var i = kn(this.recordingProdStack), a = Ct(e) ? e : e.DEF, c = new t({ definition: [], idx: n }); - return r && (c.separator = e.SEP), $(e, "MAX_LOOKAHEAD") && (c.maxLookahead = e.MAX_LOOKAHEAD), this.recordingProdStack.push(c), a.call(this), i.definition.push(c), this.recordingProdStack.pop(), Zn; -} -function _u(t, e) { - var n = this; - bn(e); - var r = kn(this.recordingProdStack), i = ot(t) === !1, a = i === !1 ? t : t.DEF, c = new He({ - definition: [], - idx: e, - ignoreAmbiguities: i && t.IGNORE_AMBIGUITIES === !0 - }); - $(t, "MAX_LOOKAHEAD") && (c.maxLookahead = t.MAX_LOOKAHEAD); - var h = qo(a, function(p) { - return Ct(p.GATE); - }); - return c.hasPredicates = h, r.definition.push(c), V(a, function(p) { - var u = new Te({ definition: [] }); - c.definition.push(u), $(p, "IGNORE_AMBIGUITIES") ? u.ignoreAmbiguities = p.IGNORE_AMBIGUITIES : $(p, "GATE") && (u.ignoreAmbiguities = !0), n.recordingProdStack.push(u), p.ALT.call(n), n.recordingProdStack.pop(); - }), Zn; -} -function Wi(t) { - return t === 0 ? "" : "" + t; -} -function bn(t) { - if (t < 0 || t > Hi) { - var e = new Error( - // The stack trace will contain all the needed details - "Invalid DSL Method idx value: <" + t + `> - ` + ("Idx value must be a none negative value smaller than " + (Hi + 1)) - ); - throw e.KNOWN_RECORDER_ERROR = !0, e; - } -} -var Pu = ( - /** @class */ - function() { - function t() { - } - return t.prototype.initPerformanceTracer = function(e) { - if ($(e, "traceInitPerf")) { - var n = e.traceInitPerf, r = typeof n == "number"; - this.traceInitMaxIdent = r ? n : 1 / 0, this.traceInitPerf = r ? n > 0 : n; - } else - this.traceInitMaxIdent = 0, this.traceInitPerf = vt.traceInitPerf; - this.traceInitIndent = -1; - }, t.prototype.TRACE_INIT = function(e, n) { - if (this.traceInitPerf === !0) { - this.traceInitIndent++; - var r = new Array(this.traceInitIndent + 1).join(" "); - this.traceInitIndent < this.traceInitMaxIdent && console.log(r + "--> <" + e + ">"); - var i = zo(n), a = i.time, c = i.value, h = a > 10 ? console.warn : console.log; - return this.traceInitIndent < this.traceInitMaxIdent && h(r + "<-- <" + e + "> time: " + a + "ms"), this.traceInitIndent--, c; - } else - return n(); - }, t; - }() -), Ss = globalThis && globalThis.__extends || function() { - var t = function(e, n) { - return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(r, i) { - r.__proto__ = i; - } || function(r, i) { - for (var a in i) - Object.prototype.hasOwnProperty.call(i, a) && (r[a] = i[a]); - }, t(e, n); - }; - return function(e, n) { - t(e, n); - function r() { - this.constructor = e; - } - e.prototype = n === null ? Object.create(n) : (r.prototype = n.prototype, new r()); - }; -}(), Dn = qn(wt, "", NaN, NaN, NaN, NaN, NaN, NaN); -Object.freeze(Dn); -var vt = Object.freeze({ - recoveryEnabled: !1, - maxLookahead: 3, - dynamicTokensEnabled: !1, - outputCst: !0, - errorMessageProvider: qr, - nodeLocationTracking: "none", - traceInitPerf: !1, - skipValidations: !1 -}), Vn = Object.freeze({ - recoveryValueFunc: function() { - }, - resyncEnabled: !0 -}), Le; -(function(t) { - t[t.INVALID_RULE_NAME = 0] = "INVALID_RULE_NAME", t[t.DUPLICATE_RULE_NAME = 1] = "DUPLICATE_RULE_NAME", t[t.INVALID_RULE_OVERRIDE = 2] = "INVALID_RULE_OVERRIDE", t[t.DUPLICATE_PRODUCTIONS = 3] = "DUPLICATE_PRODUCTIONS", t[t.UNRESOLVED_SUBRULE_REF = 4] = "UNRESOLVED_SUBRULE_REF", t[t.LEFT_RECURSION = 5] = "LEFT_RECURSION", t[t.NONE_LAST_EMPTY_ALT = 6] = "NONE_LAST_EMPTY_ALT", t[t.AMBIGUOUS_ALTS = 7] = "AMBIGUOUS_ALTS", t[t.CONFLICT_TOKENS_RULES_NAMESPACE = 8] = "CONFLICT_TOKENS_RULES_NAMESPACE", t[t.INVALID_TOKEN_NAME = 9] = "INVALID_TOKEN_NAME", t[t.NO_NON_EMPTY_LOOKAHEAD = 10] = "NO_NON_EMPTY_LOOKAHEAD", t[t.AMBIGUOUS_PREFIX_ALTS = 11] = "AMBIGUOUS_PREFIX_ALTS", t[t.TOO_MANY_ALTS = 12] = "TOO_MANY_ALTS"; -})(Le || (Le = {})); -function ku(t) { - return t === void 0 && (t = void 0), function() { - return t; - }; -} -var Zr = ( - /** @class */ - function() { - function t(e, n) { - this.definitionErrors = [], this.selfAnalysisDone = !1; - var r = this; - if (r.initErrorHandler(n), r.initLexerAdapter(), r.initLooksAhead(n), r.initRecognizerEngine(e, n), r.initRecoverable(n), r.initTreeBuilder(n), r.initContentAssist(), r.initGastRecorder(n), r.initPerformanceTracer(n), $(n, "ignoredIssues")) - throw new Error(`The IParserConfig property has been deprecated. + https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw i}throw i}},t.prototype.optionInternalRecord=function(e,n){return zt.call(this,ye,e,n)},t.prototype.atLeastOneInternalRecord=function(e,n){zt.call(this,qe,n,e)},t.prototype.atLeastOneSepFirstInternalRecord=function(e,n){zt.call(this,Ye,n,e,Yi)},t.prototype.manyInternalRecord=function(e,n){zt.call(this,ce,n,e)},t.prototype.manySepFirstInternalRecord=function(e,n){zt.call(this,$e,n,e,Yi)},t.prototype.orInternalRecord=function(e,n){return Pu.call(this,e,n)},t.prototype.subruleInternalRecord=function(e,n,r){if(Dn(n),!e||$(e,"ruleName")===!1){var i=new Error(" argument is invalid"+(" expecting a Parser method reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=xn(this.recordingProdStack),c=e.ruleName,h=new Ue({idx:n,nonTerminalName:c,referencedRule:void 0});return a.definition.push(h),this.outputCst?Lu:er},t.prototype.consumeInternalRecord=function(e,n,r){if(Dn(n),!fs(e)){var i=new Error(" argument is invalid"+(" expecting a TokenType reference but got: <"+JSON.stringify(e)+">")+(` + inside top level rule: <`+this.recordingProdStack[0].name+">"));throw i.KNOWN_RECORDER_ERROR=!0,i}var a=xn(this.recordingProdStack),c=new ne({idx:n,terminalType:e});return a.definition.push(c),Gs},t}();function zt(t,e,n,r){r===void 0&&(r=!1),Dn(n);var i=xn(this.recordingProdStack),a=Ct(e)?e:e.DEF,c=new t({definition:[],idx:n});return r&&(c.separator=e.SEP),$(e,"MAX_LOOKAHEAD")&&(c.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(c),a.call(this),i.definition.push(c),this.recordingProdStack.pop(),er}function Pu(t,e){var n=this;Dn(e);var r=xn(this.recordingProdStack),i=ot(t)===!1,a=i===!1?t:t.DEF,c=new He({definition:[],idx:e,ignoreAmbiguities:i&&t.IGNORE_AMBIGUITIES===!0});$(t,"MAX_LOOKAHEAD")&&(c.maxLookahead=t.MAX_LOOKAHEAD);var h=Jo(a,function(p){return Ct(p.GATE)});return c.hasPredicates=h,r.definition.push(c),V(a,function(p){var u=new Te({definition:[]});c.definition.push(u),$(p,"IGNORE_AMBIGUITIES")?u.ignoreAmbiguities=p.IGNORE_AMBIGUITIES:$(p,"GATE")&&(u.ignoreAmbiguities=!0),n.recordingProdStack.push(u),p.ALT.call(n),n.recordingProdStack.pop()}),er}function zi(t){return t===0?"":""+t}function Dn(t){if(t<0||t>Ki){var e=new Error("Invalid DSL Method idx value: <"+t+`> + `+("Idx value must be a none negative value smaller than "+(Ki+1)));throw e.KNOWN_RECORDER_ERROR=!0,e}}var ku=function(){function t(){}return t.prototype.initPerformanceTracer=function(e){if($(e,"traceInitPerf")){var n=e.traceInitPerf,r=typeof n=="number";this.traceInitMaxIdent=r?n:1/0,this.traceInitPerf=r?n>0:n}else this.traceInitMaxIdent=0,this.traceInitPerf=vt.traceInitPerf;this.traceInitIndent=-1},t.prototype.TRACE_INIT=function(e,n){if(this.traceInitPerf===!0){this.traceInitIndent++;var r=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <"+e+">");var i=ts(n),a=i.time,c=i.value,h=a>10?console.warn:console.log;return this.traceInitIndent time: "+a+"ms"),this.traceInitIndent--,c}else return n()},t}(),$s=globalThis&&globalThis.__extends||function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(r[a]=i[a])},t(e,n)};return function(e,n){t(e,n);function r(){this.constructor=e}e.prototype=n===null?Object.create(n):(r.prototype=n.prototype,new r)}}(),Vn=zn(wt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Vn);var vt=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Qr,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),Gn=Object.freeze({recoveryValueFunc:function(){},resyncEnabled:!0}),Le;(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS"})(Le||(Le={}));function xu(t){return t===void 0&&(t=void 0),function(){return t}}var ni=function(){function t(e,n){this.definitionErrors=[],this.selfAnalysisDone=!1;var r=this;if(r.initErrorHandler(n),r.initLexerAdapter(),r.initLooksAhead(n),r.initRecognizerEngine(e,n),r.initRecoverable(n),r.initTreeBuilder(n),r.initContentAssist(),r.initGastRecorder(n),r.initPerformanceTracer(n),$(n,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. Please use the flag on the relevant DSL method instead. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES - For further details.`); - this.skipValidations = $(n, "skipValidations") ? n.skipValidations : vt.skipValidations; - } - return t.performSelfAnalysis = function(e) { - throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead."); - }, t.prototype.performSelfAnalysis = function() { - var e = this; - this.TRACE_INIT("performSelfAnalysis", function() { - var n; - e.selfAnalysisDone = !0; - var r = e.className; - e.TRACE_INIT("toFastProps", function() { - Ko(e); - }), e.TRACE_INIT("Grammar Recording", function() { - try { - e.enableRecording(), V(e.definedRulesNames, function(a) { - var c = e[a], h = c.originalGrammarAction, p = void 0; - e.TRACE_INIT(a + " Rule", function() { - p = e.topLevelRuleRecord(a, h); - }), e.gastProductionsCache[a] = p; - }); - } finally { - e.disableRecording(); - } - }); - var i = []; - if (e.TRACE_INIT("Grammar Resolving", function() { - i = ms({ - rules: xe(e.gastProductionsCache) - }), e.definitionErrors.push.apply(e.definitionErrors, i); - }), e.TRACE_INIT("Grammar Validations", function() { - if (ee(i) && e.skipValidations === !1) { - var a = Rs({ - rules: xe(e.gastProductionsCache), - maxLookahead: e.maxLookahead, - tokenTypes: xe(e.tokensMap), - errMsgProvider: Kn, - grammarName: r - }); - e.definitionErrors.push.apply(e.definitionErrors, a); - } - }), ee(e.definitionErrors) && (e.recoveryEnabled && e.TRACE_INIT("computeAllProdsFollows", function() { - var a = Ll(xe(e.gastProductionsCache)); - e.resyncFollows = a; - }), e.TRACE_INIT("ComputeLookaheadFunctions", function() { - e.preComputeLookaheadFunctions(xe(e.gastProductionsCache)); - })), !t.DEFER_DEFINITION_ERRORS_HANDLING && !ee(e.definitionErrors)) - throw n = x(e.definitionErrors, function(a) { - return a.message; - }), new Error(`Parser Definition Errors detected: - ` + n.join(` + For further details.`);this.skipValidations=$(n,"skipValidations")?n.skipValidations:vt.skipValidations}return t.performSelfAnalysis=function(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")},t.prototype.performSelfAnalysis=function(){var e=this;this.TRACE_INIT("performSelfAnalysis",function(){var n;e.selfAnalysisDone=!0;var r=e.className;e.TRACE_INIT("toFastProps",function(){es(e)}),e.TRACE_INIT("Grammar Recording",function(){try{e.enableRecording(),V(e.definedRulesNames,function(a){var c=e[a],h=c.originalGrammarAction,p=void 0;e.TRACE_INIT(a+" Rule",function(){p=e.topLevelRuleRecord(a,h)}),e.gastProductionsCache[a]=p})}finally{e.disableRecording()}});var i=[];if(e.TRACE_INIT("Grammar Resolving",function(){i=Cs({rules:xe(e.gastProductionsCache)}),e.definitionErrors.push.apply(e.definitionErrors,i)}),e.TRACE_INIT("Grammar Validations",function(){if(ee(i)&&e.skipValidations===!1){var a=Is({rules:xe(e.gastProductionsCache),maxLookahead:e.maxLookahead,tokenTypes:xe(e.tokensMap),errMsgProvider:Qn,grammarName:r});e.definitionErrors.push.apply(e.definitionErrors,a)}}),ee(e.definitionErrors)&&(e.recoveryEnabled&&e.TRACE_INIT("computeAllProdsFollows",function(){var a=_l(xe(e.gastProductionsCache));e.resyncFollows=a}),e.TRACE_INIT("ComputeLookaheadFunctions",function(){e.preComputeLookaheadFunctions(xe(e.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ee(e.definitionErrors))throw n=x(e.definitionErrors,function(a){return a.message}),new Error(`Parser Definition Errors detected: + `+n.join(` ------------------------------- -`)); - }); - }, t.DEFER_DEFINITION_ERRORS_HANDLING = !1, t; - }() -); -kc(Zr, [ - lu, - hu, - Tu, - wu, - Iu, - Cu, - Ou, - Mu, - Lu, - Pu -]); -var xu = ( - /** @class */ - function(t) { - Ss(e, t); - function e(n, r) { - r === void 0 && (r = vt); - var i = this, a = on(r); - return a.outputCst = !0, i = t.call(this, n, a) || this, i; - } - return e; - }(Zr) -), Su = ( - /** @class */ - function(t) { - Ss(e, t); - function e(n, r) { - r === void 0 && (r = vt); - var i = this, a = on(r); - return a.outputCst = !1, i = t.call(this, n, a) || this, i; - } - return e; - }(Zr) -); -function Bu(t, e) { - var n = e === void 0 ? {} : e, r = n.resourceBase, i = r === void 0 ? "https://unpkg.com/chevrotain@" + Mr + "/diagrams/" : r, a = n.css, c = a === void 0 ? "https://unpkg.com/chevrotain@" + Mr + "/diagrams/diagrams.css" : a, h = ` +`))})},t.DEFER_DEFINITION_ERRORS_HANDLING=!1,t}();xc(ni,[uu,pu,wu,Cu,Ou,Iu,Mu,Uu,_u,ku]);var Su=function(t){$s(e,t);function e(n,r){r===void 0&&(r=vt);var i=this,a=on(r);return a.outputCst=!0,i=t.call(this,n,a)||this,i}return e}(ni),Bu=function(t){$s(e,t);function e(n,r){r===void 0&&(r=vt);var i=this,a=on(r);return a.outputCst=!1,i=t.call(this,n,a)||this,i}return e}(ni);function Fu(t,e){var n=e===void 0?{}:e,r=n.resourceBase,i=r===void 0?"https://unpkg.com/chevrotain@"+_r+"/diagrams/":r,a=n.css,c=a===void 0?"https://unpkg.com/chevrotain@"+_r+"/diagrams/diagrams.css":a,h=` @@ -12202,31 +121,26 @@ function Bu(t, e) { } -`, p = ` - -`, u = ` -\\n\\n\\n\\n\";\n var diagramsDiv = \"\\n
\\n\";\n var serializedGrammar = \"\\n\\n\";\n var initLogic = \"\\n\\n\";\n return (header + cssHtml + scripts + diagramsDiv + serializedGrammar + initLogic);\n}\n//# sourceMappingURL=render_public.js.map","import { forEach, map } from \"../utils/utils\";\nimport { RepetitionMandatory, Option, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal, NonTerminal, Alternation, Alternative, Repetition } from \"../parse/grammar/gast/gast_public\";\n/**\n * Missing features\n * 1. Rule arguments\n * 2. Gates\n * 3. embedded actions\n */\nvar NL = \"\\n\";\nexport function genUmdModule(options) {\n return \"\\n(function (root, factory) {\\n if (typeof define === 'function' && define.amd) {\\n // AMD. Register as an anonymous module.\\n define(['chevrotain'], factory);\\n } else if (typeof module === 'object' && module.exports) {\\n // Node. Does not work with strict CommonJS, but\\n // only CommonJS-like environments that support module.exports,\\n // like Node.\\n module.exports = factory(require('chevrotain'));\\n } else {\\n // Browser globals (root is window)\\n root.returnExports = factory(root.b);\\n }\\n}(typeof self !== 'undefined' ? self : this, function (chevrotain) {\\n\\n\" + genClass(options) + \"\\n \\nreturn {\\n \" + options.name + \": \" + options.name + \" \\n}\\n}));\\n\";\n}\nexport function genWrapperFunction(options) {\n return \" \\n\" + genClass(options) + \"\\nreturn new \" + options.name + \"(tokenVocabulary, config) \\n\";\n}\nexport function genClass(options) {\n // TODO: how to pass the token vocabulary? Constructor? other?\n var result = \"\\nfunction \" + options.name + \"(tokenVocabulary, config) {\\n // invoke super constructor\\n // No support for embedded actions currently, so we can 'hardcode'\\n // The use of CstParser.\\n chevrotain.CstParser.call(this, tokenVocabulary, config)\\n\\n const $ = this\\n\\n \" + genAllRules(options.rules) + \"\\n\\n // very important to call this after all the rules have been defined.\\n // otherwise the parser may not work correctly as it will lack information\\n // derived during the self analysis phase.\\n this.performSelfAnalysis(this)\\n}\\n\\n// inheritance as implemented in javascript in the previous decade... :(\\n\" + options.name + \".prototype = Object.create(chevrotain.CstParser.prototype)\\n\" + options.name + \".prototype.constructor = \" + options.name + \" \\n \";\n return result;\n}\nexport function genAllRules(rules) {\n var rulesText = map(rules, function (currRule) {\n return genRule(currRule, 1);\n });\n return rulesText.join(\"\\n\");\n}\nexport function genRule(prod, n) {\n var result = indent(n, \"$.RULE(\\\"\" + prod.name + \"\\\", function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"})\") + NL;\n return result;\n}\nexport function genTerminal(prod, n) {\n var name = prod.terminalType.name;\n // TODO: potential performance optimization, avoid tokenMap Dictionary access\n return indent(n, \"$.CONSUME\" + prod.idx + \"(this.tokensMap.\" + name + \")\" + NL);\n}\nexport function genNonTerminal(prod, n) {\n return indent(n, \"$.SUBRULE\" + prod.idx + \"($.\" + prod.nonTerminalName + \")\" + NL);\n}\nexport function genAlternation(prod, n) {\n var result = indent(n, \"$.OR\" + prod.idx + \"([\") + NL;\n var alts = map(prod.definition, function (altDef) { return genSingleAlt(altDef, n + 1); });\n result += alts.join(\",\" + NL);\n result += NL + indent(n, \"])\" + NL);\n return result;\n}\nexport function genSingleAlt(prod, n) {\n var result = indent(n, \"{\") + NL;\n result += indent(n + 1, \"ALT: function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"}\") + NL;\n result += indent(n, \"}\");\n return result;\n}\nfunction genProd(prod, n) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return genNonTerminal(prod, n);\n }\n else if (prod instanceof Option) {\n return genDSLRule(\"OPTION\", prod, n);\n }\n else if (prod instanceof RepetitionMandatory) {\n return genDSLRule(\"AT_LEAST_ONE\", prod, n);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return genDSLRule(\"AT_LEAST_ONE_SEP\", prod, n);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return genDSLRule(\"MANY_SEP\", prod, n);\n }\n else if (prod instanceof Repetition) {\n return genDSLRule(\"MANY\", prod, n);\n }\n else if (prod instanceof Alternation) {\n return genAlternation(prod, n);\n }\n else if (prod instanceof Terminal) {\n return genTerminal(prod, n);\n }\n else if (prod instanceof Alternative) {\n return genDefinition(prod.definition, n);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction genDSLRule(dslName, prod, n) {\n var result = indent(n, \"$.\" + (dslName + prod.idx) + \"(\");\n if (prod.separator) {\n result += \"{\" + NL;\n result +=\n indent(n + 1, \"SEP: this.tokensMap.\" + prod.separator.name) + \",\" + NL;\n result += \"DEF: \" + genDefFunction(prod.definition, n + 2) + NL;\n result += indent(n, \"}\") + NL;\n }\n else {\n result += genDefFunction(prod.definition, n + 1);\n }\n result += indent(n, \")\") + NL;\n return result;\n}\nfunction genDefFunction(definition, n) {\n var def = \"function() {\" + NL;\n def += genDefinition(definition, n);\n def += indent(n, \"}\") + NL;\n return def;\n}\nfunction genDefinition(def, n) {\n var result = \"\";\n forEach(def, function (prod) {\n result += genProd(prod, n + 1);\n });\n return result;\n}\nfunction indent(howMuch, text) {\n var spaces = Array(howMuch * 4 + 1).join(\" \");\n return spaces + text;\n}\n//# sourceMappingURL=generate.js.map","import { genUmdModule, genWrapperFunction } from \"./generate\";\nexport function generateParserFactory(options) {\n var wrapperText = genWrapperFunction({\n name: options.name,\n rules: options.rules\n });\n var constructorWrapper = new Function(\"tokenVocabulary\", \"config\", \"chevrotain\", wrapperText);\n return function (config) {\n return constructorWrapper(options.tokenVocabulary, config, \n // TODO: check how the require is transpiled/webpacked\n require(\"../api\"));\n };\n}\nexport function generateParserModule(options) {\n return genUmdModule({ name: options.name, rules: options.rules });\n}\n//# sourceMappingURL=generate_public.js.map","/* istanbul ignore file - tricky to import some things from this module during testing */\n// semantic version\nexport { VERSION } from \"./version\";\nexport { CstParser, EmbeddedActionsParser, ParserDefinitionErrorType, EMPTY_ALT } from \"./parse/parser/parser\";\nexport { Lexer, LexerDefinitionErrorType } from \"./scan/lexer_public\";\n// Tokens utilities\nexport { createToken, createTokenInstance, EOF, tokenLabel, tokenMatcher, tokenName } from \"./scan/tokens_public\";\n// Other Utilities\nexport { defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider, defaultParserErrorProvider } from \"./parse/errors_public\";\nexport { EarlyExitException, isRecognitionException, MismatchedTokenException, NotAllInputParsedException, NoViableAltException } from \"./parse/exceptions_public\";\nexport { defaultLexerErrorProvider } from \"./scan/lexer_errors_public\";\n// grammar reflection API\nexport { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./parse/grammar/gast/gast_public\";\n// GAST Utilities\nexport { serializeGrammar, serializeProduction } from \"./parse/grammar/gast/gast_public\";\nexport { GAstVisitor } from \"./parse/grammar/gast/gast_visitor_public\";\nexport { assignOccurrenceIndices, resolveGrammar, validateGrammar } from \"./parse/grammar/gast/gast_resolver_public\";\n/* istanbul ignore next */\nexport function clearCache() {\n console.warn(\"The clearCache function was 'soft' removed from the Chevrotain API.\" +\n \"\\n\\t It performs no action other than printing this message.\" +\n \"\\n\\t Please avoid using it as it will be completely removed in the future\");\n}\nexport { createSyntaxDiagramsCode } from \"./diagrams/render_public\";\nexport { generateParserFactory, generateParserModule } from \"./generate/generate_public\";\nvar Parser = /** @class */ (function () {\n function Parser() {\n throw new Error(\"The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\\t\\n\" +\n \"See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0\");\n }\n return Parser;\n}());\nexport { Parser };\n//# sourceMappingURL=api.js.map","const {createToken, Lexer} = require('chevrotain');\r\nconst FormulaError = require('../formulas/error')\r\n\r\n// the vocabulary will be exported and used in the Parser definition.\r\nconst tokenVocabulary = {};\r\n\r\nconst WhiteSpace = createToken({\r\n name: 'WhiteSpace',\r\n pattern: /\\s+/,\r\n group: Lexer.SKIPPED,\r\n});\r\n\r\nconst String = createToken({\r\n name: 'String',\r\n pattern: /\"(\"\"|[^\"])*\"/\r\n});\r\n\r\nconst SingleQuotedString = createToken({\r\n name: 'SingleQuotedString',\r\n pattern: /'(''|[^'])*'/\r\n});\r\n\r\nconst SheetQuoted = createToken({\r\n name: 'SheetQuoted',\r\n pattern: /'((?![\\\\\\/\\[\\]*?:]).)+?'!/\r\n});\r\n\r\nconst Function = createToken({\r\n name: 'Function',\r\n pattern: /[A-Za-z_]+[A-Za-z_0-9.]*\\(/\r\n});\r\n\r\nconst FormulaErrorT = createToken({\r\n name: 'FormulaErrorT',\r\n pattern: /#NULL!|#DIV\\/0!|#VALUE!|#NAME\\?|#NUM!|#N\\/A/\r\n});\r\n\r\nconst RefError = createToken({\r\n name: 'RefError',\r\n pattern: /#REF!/\r\n});\r\n\r\nconst Name = createToken({\r\n name: 'Name',\r\n pattern: /[a-zA-Z_][a-zA-Z0-9_.?]*/,\r\n // longer_alt: RangeColumn // e.g. A:AA\r\n});\r\n\r\nconst Sheet = createToken({\r\n name: 'Sheet',\r\n pattern: /[A-Za-z_.\\d\\u007F-\\uFFFF]+!/\r\n});\r\n\r\nconst Cell = createToken({\r\n name: 'Cell',\r\n pattern: /[$]?[A-Za-z]{1,3}[$]?[1-9][0-9]*/,\r\n longer_alt: Name\r\n});\r\n\r\nconst Number = createToken({\r\n name: 'Number',\r\n pattern: /[0-9]+[.]?[0-9]*([eE][+\\-][0-9]+)?/\r\n});\r\n\r\nconst Boolean = createToken({\r\n name: 'Boolean',\r\n pattern: /TRUE|FALSE/i\r\n});\r\n\r\nconst Column = createToken({\r\n name: 'Column',\r\n pattern: /[$]?[A-Za-z]{1,3}/,\r\n longer_alt: Name\r\n});\r\n\r\n\r\n/**\r\n * Symbols and operators\r\n */\r\nconst At = createToken({\r\n name: 'At',\r\n pattern: /@/\r\n});\r\n\r\nconst Comma = createToken({\r\n name: 'Comma',\r\n pattern: /,/\r\n});\r\n\r\nconst Colon = createToken({\r\n name: 'Colon',\r\n pattern: /:/\r\n});\r\n\r\nconst Semicolon = createToken({\r\n name: 'Semicolon',\r\n pattern: /;/\r\n});\r\n\r\nconst OpenParen = createToken({\r\n name: 'OpenParen',\r\n pattern: /\\(/\r\n});\r\n\r\nconst CloseParen = createToken({\r\n name: 'CloseParen',\r\n pattern: /\\)/\r\n});\r\n\r\nconst OpenSquareParen = createToken({\r\n name: 'OpenSquareParen',\r\n pattern: /\\[/\r\n});\r\n\r\nconst CloseSquareParen = createToken({\r\n name: 'CloseSquareParen',\r\n pattern: /]/\r\n});\r\n\r\nconst ExclamationMark = createToken({\r\n name: 'exclamationMark',\r\n pattern: /!/\r\n});\r\n\r\nconst OpenCurlyParen = createToken({\r\n name: 'OpenCurlyParen',\r\n pattern: /{/\r\n});\r\n\r\nconst CloseCurlyParen = createToken({\r\n name: 'CloseCurlyParen',\r\n pattern: /}/\r\n});\r\n\r\nconst QuoteS = createToken({\r\n name: 'QuoteS',\r\n pattern: /'/\r\n});\r\n\r\n\r\nconst MulOp = createToken({\r\n name: 'MulOp',\r\n pattern: /\\*/\r\n});\r\n\r\nconst PlusOp = createToken({\r\n name: 'PlusOp',\r\n pattern: /\\+/\r\n});\r\n\r\nconst DivOp = createToken({\r\n name: 'DivOp',\r\n pattern: /\\//\r\n});\r\n\r\nconst MinOp = createToken({\r\n name: 'MinOp',\r\n pattern: /-/\r\n});\r\n\r\nconst ConcatOp = createToken({\r\n name: 'ConcatOp',\r\n pattern: /&/\r\n});\r\n\r\nconst ExOp = createToken({\r\n name: 'ExOp',\r\n pattern: /\\^/\r\n});\r\n\r\nconst PercentOp = createToken({\r\n name: 'PercentOp',\r\n pattern: /%/\r\n});\r\n\r\nconst GtOp = createToken({\r\n name: 'GtOp',\r\n pattern: />/\r\n});\r\n\r\nconst EqOp = createToken({\r\n name: 'EqOp',\r\n pattern: /=/\r\n});\r\n\r\nconst LtOp = createToken({\r\n name: 'LtOp',\r\n pattern: //\r\n});\r\n\r\nconst GteOp = createToken({\r\n name: 'GteOp',\r\n pattern: />=/\r\n});\r\n\r\nconst LteOp = createToken({\r\n name: 'LteOp',\r\n pattern: /<=/\r\n});\r\n\r\n// The order of tokens is important\r\nconst allTokens = [\r\n\r\n WhiteSpace,\r\n String,\r\n SheetQuoted,\r\n SingleQuotedString,\r\n Function,\r\n FormulaErrorT,\r\n RefError,\r\n Sheet,\r\n Cell,\r\n Boolean,\r\n Column,\r\n Name,\r\n Number,\r\n\r\n At,\r\n Comma,\r\n Colon,\r\n Semicolon,\r\n OpenParen,\r\n CloseParen,\r\n OpenSquareParen,\r\n CloseSquareParen,\r\n // ExclamationMark,\r\n OpenCurlyParen,\r\n CloseCurlyParen,\r\n QuoteS,\r\n MulOp,\r\n PlusOp,\r\n DivOp,\r\n MinOp,\r\n ConcatOp,\r\n ExOp,\r\n MulOp,\r\n PercentOp,\r\n NeqOp,\r\n GteOp,\r\n LteOp,\r\n GtOp,\r\n EqOp,\r\n LtOp,\r\n];\r\n\r\nconst SelectLexer = new Lexer(allTokens, {ensureOptimizations: true});\r\n\r\nallTokens.forEach(tokenType => {\r\n tokenVocabulary[tokenType.name] = tokenType\r\n});\r\n\r\nmodule.exports = {\r\n tokenVocabulary: tokenVocabulary,\r\n\r\n lex: function (inputText) {\r\n const lexingResult = SelectLexer.tokenize(inputText)\r\n\r\n if (lexingResult.errors.length > 0) {\r\n const error = lexingResult.errors[0];\r\n const line = error.line, column = error.column;\r\n let msg = '\\n' + inputText.split('\\n')[line - 1] + '\\n';\r\n msg += Array(column - 1).fill(' ').join('') + '^\\n';\r\n error.message = msg + `Error at position ${line}:${column}\\n` + error.message;\r\n error.errorLocation = {line, column};\r\n throw FormulaError.ERROR(error.message, error);\r\n }\r\n\r\n return lexingResult\r\n }\r\n};\r\n","const lexer = require('./lexing');\r\nconst {EmbeddedActionsParser} = require(\"chevrotain\");\r\nconst tokenVocabulary = lexer.tokenVocabulary;\r\nconst {\r\n String,\r\n SheetQuoted,\r\n ExcelRefFunction,\r\n ExcelConditionalRefFunction,\r\n Function,\r\n FormulaErrorT,\r\n RefError,\r\n Cell,\r\n Sheet,\r\n Name,\r\n Number,\r\n Boolean,\r\n Column,\r\n\r\n // At,\r\n Comma,\r\n Colon,\r\n Semicolon,\r\n OpenParen,\r\n CloseParen,\r\n // OpenSquareParen,\r\n // CloseSquareParen,\r\n // ExclamationMark,\r\n OpenCurlyParen,\r\n CloseCurlyParen,\r\n MulOp,\r\n PlusOp,\r\n DivOp,\r\n MinOp,\r\n ConcatOp,\r\n ExOp,\r\n PercentOp,\r\n NeqOp,\r\n GteOp,\r\n LteOp,\r\n GtOp,\r\n EqOp,\r\n LtOp\r\n} = lexer.tokenVocabulary;\r\n\r\nclass Parsing extends EmbeddedActionsParser {\r\n /**\r\n *\r\n * @param {FormulaParser|DepParser} context\r\n * @param {Utils} utils\r\n */\r\n constructor(context, utils) {\r\n super(tokenVocabulary, {\r\n outputCst: false,\r\n maxLookahead: 1,\r\n skipValidations: true,\r\n // traceInitPerf: true,\r\n });\r\n this.utils = utils;\r\n this.binaryOperatorsPrecedence = [\r\n ['^'],\r\n ['*', '/'],\r\n ['+', '-'],\r\n ['&'],\r\n ['<', '>', '=', '<>', '<=', '>='],\r\n ];\r\n const $ = this;\r\n\r\n // Adopted from https://github.com/spreadsheetlab/XLParser/blob/master/src/XLParser/ExcelFormulaGrammar.cs\r\n\r\n $.RULE('formulaWithBinaryOp', () => {\r\n const infixes = [];\r\n const values = [$.SUBRULE($.formulaWithPercentOp)];\r\n $.MANY(() => {\r\n // Caching Arrays of Alternatives\r\n // https://sap.github.io/chevrotain/docs/guide/performance.html#caching-arrays-of-alternatives\r\n infixes.push($.OR($.c1 ||\r\n (\r\n $.c1 = [\r\n {ALT: () => $.CONSUME(GtOp).image},\r\n {ALT: () => $.CONSUME(EqOp).image},\r\n {ALT: () => $.CONSUME(LtOp).image},\r\n {ALT: () => $.CONSUME(NeqOp).image},\r\n {ALT: () => $.CONSUME(GteOp).image},\r\n {ALT: () => $.CONSUME(LteOp).image},\r\n {ALT: () => $.CONSUME(ConcatOp).image},\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image},\r\n {ALT: () => $.CONSUME(MulOp).image},\r\n {ALT: () => $.CONSUME(DivOp).image},\r\n {ALT: () => $.CONSUME(ExOp).image}\r\n ]\r\n )));\r\n values.push($.SUBRULE2($.formulaWithPercentOp));\r\n });\r\n $.ACTION(() => {\r\n // evaluate\r\n for (const ops of this.binaryOperatorsPrecedence) {\r\n for (let index = 0, length = infixes.length; index < length; index++) {\r\n const infix = infixes[index];\r\n if (!ops.includes(infix)) continue;\r\n infixes.splice(index, 1);\r\n values.splice(index, 2, this.utils.applyInfix(values[index], infix, values[index + 1]));\r\n index--;\r\n length--;\r\n }\r\n }\r\n });\r\n\r\n return values[0];\r\n });\r\n\r\n $.RULE('plusMinusOp', () => $.OR([\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image}\r\n ]));\r\n\r\n $.RULE('formulaWithPercentOp', () => {\r\n let value = $.SUBRULE($.formulaWithUnaryOp);\r\n $.OPTION(() => {\r\n const postfix = $.CONSUME(PercentOp).image;\r\n value = $.ACTION(() => this.utils.applyPostfix(value, postfix));\r\n });\r\n return value;\r\n });\r\n\r\n $.RULE('formulaWithUnaryOp', () => {\r\n // support ++---3 => -3\r\n const prefixes = [];\r\n $.MANY(() => {\r\n const op = $.OR([\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image}\r\n ]);\r\n prefixes.push(op);\r\n });\r\n const formula = $.SUBRULE($.formulaWithIntersect);\r\n if (prefixes.length > 0) return $.ACTION(() => this.utils.applyPrefix(prefixes, formula));\r\n return formula;\r\n });\r\n\r\n\r\n $.RULE('formulaWithIntersect', () => {\r\n // e.g. 'A1 A2 A3'\r\n let ref1 = $.SUBRULE($.formulaWithRange);\r\n const refs = [ref1];\r\n // console.log('check intersect')\r\n $.MANY({\r\n GATE: () => {\r\n // see https://github.com/SAP/chevrotain/blob/master/examples/grammars/css/css.js#L436-L441\r\n const prevToken = $.LA(0);\r\n const nextToken = $.LA(1);\r\n // This is the only place where the grammar is whitespace sensitive.\r\n return nextToken.startOffset > prevToken.endOffset + 1;\r\n },\r\n DEF: () => {\r\n refs.push($.SUBRULE3($.formulaWithRange));\r\n }\r\n });\r\n if (refs.length > 1) {\r\n return $.ACTION(() => $.ACTION(() => this.utils.applyIntersect(refs)))\r\n }\r\n return ref1;\r\n });\r\n\r\n $.RULE('formulaWithRange', () => {\r\n // e.g. 'A1:C3' or 'A1:A3:C4', can be any number of references, at lease 2\r\n const ref1 = $.SUBRULE($.formula);\r\n const refs = [ref1];\r\n $.MANY(() => {\r\n $.CONSUME(Colon);\r\n refs.push($.SUBRULE2($.formula));\r\n });\r\n if (refs.length > 1)\r\n return $.ACTION(() => $.ACTION(() => this.utils.applyRange(refs)));\r\n return ref1;\r\n });\r\n\r\n $.RULE('formula', () => $.OR9([\r\n {ALT: () => $.SUBRULE($.referenceWithoutInfix)},\r\n {ALT: () => $.SUBRULE($.paren)},\r\n {ALT: () => $.SUBRULE($.constant)},\r\n {ALT: () => $.SUBRULE($.functionCall)},\r\n {ALT: () => $.SUBRULE($.constantArray)},\r\n ]));\r\n\r\n $.RULE('paren', () => {\r\n // formula paren or union paren\r\n $.CONSUME(OpenParen);\r\n let result;\r\n const refs = [];\r\n refs.push($.SUBRULE($.formulaWithBinaryOp));\r\n $.MANY(() => {\r\n $.CONSUME(Comma);\r\n refs.push($.SUBRULE2($.formulaWithBinaryOp));\r\n });\r\n if (refs.length > 1)\r\n result = $.ACTION(() => this.utils.applyUnion(refs));\r\n else\r\n result = refs[0];\r\n\r\n $.CONSUME(CloseParen);\r\n return result;\r\n });\r\n\r\n $.RULE('constantArray', () => {\r\n // console.log('constantArray');\r\n const arr = [[]];\r\n let currentRow = 0;\r\n $.CONSUME(OpenCurlyParen);\r\n\r\n // array must contain at least one item\r\n arr[currentRow].push($.SUBRULE($.constantForArray));\r\n $.MANY(() => {\r\n const sep = $.OR([\r\n {ALT: () => $.CONSUME(Comma).image},\r\n {ALT: () => $.CONSUME(Semicolon).image}\r\n ]);\r\n const constant = $.SUBRULE2($.constantForArray);\r\n if (sep === ',') {\r\n arr[currentRow].push(constant)\r\n } else {\r\n currentRow++;\r\n arr[currentRow] = [];\r\n arr[currentRow].push(constant)\r\n }\r\n });\r\n\r\n $.CONSUME(CloseCurlyParen);\r\n\r\n return $.ACTION(() => this.utils.toArray(arr));\r\n });\r\n\r\n /**\r\n * Used in array\r\n */\r\n $.RULE('constantForArray', () => $.OR([\r\n {\r\n ALT: () => {\r\n const prefix = $.OPTION(() => $.SUBRULE($.plusMinusOp));\r\n const image = $.CONSUME(Number).image;\r\n const number = $.ACTION(() => this.utils.toNumber(image));\r\n if (prefix)\r\n return $.ACTION(() => this.utils.applyPrefix([prefix], number));\r\n return number;\r\n }\r\n }, {\r\n ALT: () => {\r\n const str = $.CONSUME(String).image;\r\n return $.ACTION(() => this.utils.toString(str));\r\n }\r\n }, {\r\n ALT: () => {\r\n const bool = $.CONSUME(Boolean).image;\r\n return $.ACTION(() => this.utils.toBoolean(bool));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(FormulaErrorT).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(RefError).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n },\r\n ]));\r\n\r\n $.RULE('constant', () => $.OR([\r\n {\r\n ALT: () => {\r\n const number = $.CONSUME(Number).image;\r\n return $.ACTION(() => this.utils.toNumber(number));\r\n }\r\n }, {\r\n ALT: () => {\r\n const str = $.CONSUME(String).image;\r\n return $.ACTION(() => this.utils.toString(str));\r\n }\r\n }, {\r\n ALT: () => {\r\n const bool = $.CONSUME(Boolean).image;\r\n return $.ACTION(() => this.utils.toBoolean(bool));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(FormulaErrorT).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n },\r\n ]));\r\n\r\n $.RULE('functionCall', () => {\r\n const functionName = $.CONSUME(Function).image.slice(0, -1);\r\n // console.log('functionName', functionName);\r\n const args = $.SUBRULE($.arguments);\r\n $.CONSUME(CloseParen);\r\n // dependency parser won't call function.\r\n return $.ACTION(() => context.callFunction(functionName, args));\r\n\r\n });\r\n\r\n $.RULE('arguments', () => {\r\n // console.log('try arguments')\r\n\r\n // allows ',' in the front\r\n $.MANY2(() => {\r\n $.CONSUME2(Comma);\r\n });\r\n const args = [];\r\n // allows empty arguments\r\n $.OPTION(() => {\r\n args.push($.SUBRULE($.formulaWithBinaryOp));\r\n $.MANY(() => {\r\n $.CONSUME1(Comma);\r\n args.push(null); // e.g. ROUND(1.5,)\r\n $.OPTION3(() => {\r\n args.pop();\r\n args.push($.SUBRULE2($.formulaWithBinaryOp))\r\n });\r\n });\r\n });\r\n return args;\r\n });\r\n\r\n $.RULE('referenceWithoutInfix', () => $.OR([\r\n\r\n {ALT: () => $.SUBRULE($.referenceItem)},\r\n\r\n {\r\n // sheet name prefix\r\n ALT: () => {\r\n // console.log('try sheetName');\r\n const sheetName = $.SUBRULE($.prefixName);\r\n // console.log('sheetName', sheetName);\r\n const referenceItem = $.SUBRULE2($.formulaWithRange);\r\n\r\n $.ACTION(() => {\r\n if (this.utils.isFormulaError(referenceItem))\r\n return referenceItem;\r\n referenceItem.ref.sheet = sheetName\r\n });\r\n return referenceItem;\r\n }\r\n },\r\n\r\n // {ALT: () => $.SUBRULE('dynamicDataExchange')},\r\n ]));\r\n\r\n $.RULE('referenceItem', () => $.OR([\r\n {\r\n ALT: () => {\r\n const address = $.CONSUME(Cell).image;\r\n return $.ACTION(() => this.utils.parseCellAddress(address));\r\n }\r\n },\r\n {\r\n ALT: () => {\r\n const name = $.CONSUME(Name).image;\r\n return $.ACTION(() => context.getVariable(name))\r\n }\r\n },\r\n {\r\n ALT: () => {\r\n const column = $.CONSUME(Column).image;\r\n return $.ACTION(() => this.utils.parseCol(column))\r\n }\r\n },\r\n // A row check should be here, but the token is same with Number,\r\n // In other to resolve ambiguities, I leave this empty, and\r\n // parse the number to row number when needed.\r\n {\r\n ALT: () => {\r\n const err = $.CONSUME(RefError).image;\r\n return $.ACTION(() => this.utils.toError(err))\r\n }\r\n },\r\n // {ALT: () => $.SUBRULE($.udfFunctionCall)},\r\n // {ALT: () => $.SUBRULE($.structuredReference)},\r\n ]));\r\n\r\n $.RULE('prefixName', () => $.OR([\r\n {ALT: () => $.CONSUME(Sheet).image.slice(0, -1)},\r\n {ALT: () => $.CONSUME(SheetQuoted).image.slice(1, -2).replace(/''/g, \"'\")},\r\n ]));\r\n\r\n this.performSelfAnalysis();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n Parser: Parsing,\r\n};\r\n","const FormulaError = require('../formulas/error');\r\nconst {Address} = require('../formulas/helpers');\r\nconst {Prefix, Postfix, Infix, Operators} = require('../formulas/operators');\r\nconst Collection = require('./type/collection');\r\nconst MAX_ROW = 1048576, MAX_COLUMN = 16384;\r\nconst {NotAllInputParsedException} = require('chevrotain');\r\n\r\nclass Utils {\r\n\r\n constructor(context) {\r\n this.context = context;\r\n }\r\n\r\n columnNameToNumber(columnName) {\r\n return Address.columnNameToNumber(columnName);\r\n }\r\n\r\n /**\r\n * Parse the cell address only.\r\n * @param {string} cellAddress\r\n * @return {{ref: {col: number, address: string, row: number}}}\r\n */\r\n parseCellAddress(cellAddress) {\r\n const res = cellAddress.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);\r\n // console.log('parseCellAddress', cellAddress);\r\n return {\r\n ref: {\r\n address: res[0],\r\n col: this.columnNameToNumber(res[2]),\r\n row: +res[4]\r\n },\r\n };\r\n }\r\n\r\n parseRow(row) {\r\n const rowNum = +row;\r\n if (!Number.isInteger(rowNum))\r\n throw Error('Row number must be integer.');\r\n return {\r\n ref: {\r\n col: undefined,\r\n row: +row\r\n },\r\n };\r\n }\r\n\r\n parseCol(col) {\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(col),\r\n row: undefined,\r\n },\r\n };\r\n }\r\n\r\n parseColRange(col1, col2) {\r\n // const res = colRange.match(/([$]?)([A-Za-z]{1,3}):([$]?)([A-Za-z]{1,4})/);\r\n col1 = this.columnNameToNumber(col1);\r\n col2 = this.columnNameToNumber(col2);\r\n return {\r\n ref: {\r\n from: {\r\n col: Math.min(col1, col2),\r\n row: null\r\n },\r\n to: {\r\n col: Math.max(col1, col2),\r\n row: null\r\n }\r\n }\r\n }\r\n }\r\n\r\n parseRowRange(row1, row2) {\r\n // const res = rowRange.match(/([$]?)([1-9][0-9]*):([$]?)([1-9][0-9]*)/);\r\n return {\r\n ref: {\r\n from: {\r\n col: null,\r\n row: Math.min(row1, row2),\r\n },\r\n to: {\r\n col: null,\r\n row: Math.max(row1, row2),\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n _applyPrefix(prefixes, val, isArray) {\r\n if (this.isFormulaError(val))\r\n return val;\r\n return Prefix.unaryOp(prefixes, val, isArray);\r\n }\r\n\r\n async applyPrefixAsync(prefixes, value) {\r\n const {val, isArray} = this.extractRefValue(await value);\r\n return this._applyPrefix(prefixes, val, isArray);\r\n }\r\n\r\n /**\r\n * Apply + or - unary prefix.\r\n * @param {Array.} prefixes\r\n * @param {*} value\r\n * @return {*}\r\n */\r\n applyPrefix(prefixes, value) {\r\n // console.log('applyPrefix', prefixes, value);\r\n if (this.context.async) {\r\n return this.applyPrefixAsync(prefixes, value);\r\n } else {\r\n const {val, isArray} = this.extractRefValue(value);\r\n return this._applyPrefix(prefixes, val, isArray);\r\n }\r\n }\r\n\r\n _applyPostfix(val, isArray, postfix) {\r\n if (this.isFormulaError(val))\r\n return val;\r\n return Postfix.percentOp(val, postfix, isArray);\r\n }\r\n\r\n async applyPostfixAsync(value, postfix) {\r\n const {val, isArray} = this.extractRefValue(await value);\r\n return this._applyPostfix(val, isArray, postfix);\r\n }\r\n\r\n applyPostfix(value, postfix) {\r\n // console.log('applyPostfix', value, postfix);\r\n if (this.context.async) {\r\n return this.applyPostfixAsync(value, postfix);\r\n } else {\r\n const {val, isArray} = this.extractRefValue(value);\r\n return this._applyPostfix(val, isArray, postfix)\r\n }\r\n }\r\n\r\n _applyInfix(res1, infix, res2) {\r\n const val1 = res1.val, isArray1 = res1.isArray;\r\n const val2 = res2.val, isArray2 = res2.isArray;\r\n if (this.isFormulaError(val1))\r\n return val1;\r\n if (this.isFormulaError(val2))\r\n return val2;\r\n if (Operators.compareOp.includes(infix))\r\n return Infix.compareOp(val1, infix, val2, isArray1, isArray2);\r\n else if (Operators.concatOp.includes(infix))\r\n return Infix.concatOp(val1, infix, val2, isArray1, isArray2);\r\n else if (Operators.mathOp.includes(infix))\r\n return Infix.mathOp(val1, infix, val2, isArray1, isArray2);\r\n else\r\n throw new Error(`Unrecognized infix: ${infix}`);\r\n }\r\n\r\n async applyInfixAsync(value1, infix, value2) {\r\n const res1 = this.extractRefValue(await value1);\r\n const res2 = this.extractRefValue(await value2);\r\n return this._applyInfix(res1, infix, res2)\r\n }\r\n\r\n applyInfix(value1, infix, value2) {\r\n if (this.context.async) {\r\n return this.applyInfixAsync(value1, infix, value2)\r\n } else {\r\n const res1 = this.extractRefValue(value1);\r\n const res2 = this.extractRefValue(value2);\r\n return this._applyInfix(res1, infix, res2)\r\n }\r\n }\r\n\r\n applyIntersect(refs) {\r\n // console.log('applyIntersect', refs);\r\n if (this.isFormulaError(refs[0]))\r\n return refs[0];\r\n if (!refs[0].ref)\r\n throw Error(`Expecting a reference, but got ${refs[0]}.`);\r\n // a intersection will keep track of references, value won't be retrieved here.\r\n let maxRow, maxCol, minRow, minCol, sheet, res; // index start from 1\r\n // first time setup\r\n const ref = refs.shift().ref;\r\n sheet = ref.sheet;\r\n if (!ref.from) {\r\n // check whole row/col reference\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n\r\n // cell ref\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n // update\r\n maxRow = Math.max(ref.from.row, ref.to.row);\r\n minRow = Math.min(ref.from.row, ref.to.row);\r\n maxCol = Math.max(ref.from.col, ref.to.col);\r\n minCol = Math.min(ref.from.col, ref.to.col);\r\n }\r\n\r\n let err;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n ref = ref.ref;\r\n if (!ref) throw Error(`Expecting a reference, but got ${ref}.`);\r\n if (!ref.from) {\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n // cell ref\r\n if (ref.row > maxRow || ref.row < minRow || ref.col > maxCol || ref.col < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n const refMaxRow = Math.max(ref.from.row, ref.to.row);\r\n const refMinRow = Math.min(ref.from.row, ref.to.row);\r\n const refMaxCol = Math.max(ref.from.col, ref.to.col);\r\n const refMinCol = Math.min(ref.from.col, ref.to.col);\r\n if (refMinRow > maxRow || refMaxRow < minRow || refMinCol > maxCol || refMaxCol < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n // update\r\n maxRow = Math.min(maxRow, refMaxRow);\r\n minRow = Math.max(minRow, refMinRow);\r\n maxCol = Math.min(maxCol, refMaxCol);\r\n minCol = Math.max(minCol, refMinCol);\r\n }\r\n });\r\n if (err) return err;\r\n // check if the ref can be reduced to cell reference\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n sheet,\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n sheet,\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n\r\n if (!res.ref.sheet)\r\n delete res.ref.sheet;\r\n return res;\r\n }\r\n\r\n applyUnion(refs) {\r\n const collection = new Collection();\r\n for (let i = 0; i < refs.length; i++) {\r\n if (this.isFormulaError(refs[i]))\r\n return refs[i];\r\n collection.add(this.extractRefValue(refs[i]).val, refs[i]);\r\n }\r\n\r\n // console.log('applyUnion', unions);\r\n return collection;\r\n }\r\n\r\n /**\r\n * Apply multiple references, e.g. A1:B3:C8:A:1:.....\r\n * @param refs\r\n // * @return {{ref: {from: {col: number, row: number}, to: {col: number, row: number}}}}\r\n */\r\n applyRange(refs) {\r\n let res, maxRow = -1, maxCol = -1, minRow = MAX_ROW + 1, minCol = MAX_COLUMN + 1;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n // row ref is saved as number, parse the number to row ref here\r\n if (typeof ref === 'number') {\r\n ref = this.parseRow(ref);\r\n }\r\n ref = ref.ref;\r\n // check whole row/col reference\r\n if (ref.row === undefined) {\r\n minRow = 1;\r\n maxRow = MAX_ROW\r\n }\r\n if (ref.col === undefined) {\r\n minCol = 1;\r\n maxCol = MAX_COLUMN;\r\n }\r\n\r\n if (ref.row > maxRow)\r\n maxRow = ref.row;\r\n if (ref.row < minRow)\r\n minRow = ref.row;\r\n if (ref.col > maxCol)\r\n maxCol = ref.col;\r\n if (ref.col < minCol)\r\n minCol = ref.col;\r\n });\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Throw away the refs, and retrieve the value.\r\n * @return {{val: *, isArray: boolean}}\r\n */\r\n extractRefValue(obj) {\r\n let res = obj, isArray = false;\r\n if (Array.isArray(res))\r\n isArray = true;\r\n if (obj.ref) {\r\n // can be number or array\r\n return {val: this.context.retrieveRef(obj), isArray};\r\n\r\n }\r\n return {val: res, isArray};\r\n }\r\n\r\n /**\r\n *\r\n * @param array\r\n * @return {Array}\r\n */\r\n toArray(array) {\r\n // TODO: check if array is valid\r\n // console.log('toArray', array);\r\n return array;\r\n }\r\n\r\n /**\r\n * @param {string} number\r\n * @return {number}\r\n */\r\n toNumber(number) {\r\n return Number(number);\r\n }\r\n\r\n /**\r\n * @param {string} string\r\n * @return {string}\r\n */\r\n toString(string) {\r\n return string.substring(1, string.length - 1) .replace(/\"\"/g, '\"');\r\n }\r\n\r\n /**\r\n * @param {string} bool\r\n * @return {boolean}\r\n */\r\n toBoolean(bool) {\r\n return bool === 'TRUE';\r\n }\r\n\r\n /**\r\n * Parse an error.\r\n * @param {string} error\r\n * @return {string}\r\n */\r\n toError(error) {\r\n return new FormulaError(error.toUpperCase());\r\n }\r\n\r\n isFormulaError(obj) {\r\n return obj instanceof FormulaError;\r\n }\r\n\r\n static formatChevrotainError(error, inputText) {\r\n let line, column, msg = '';\r\n // e.g. SUM(1))\r\n if (error instanceof NotAllInputParsedException) {\r\n line = error.token.startLine;\r\n column = error.token.startColumn;\r\n } else {\r\n line = error.previousToken.startLine;\r\n column = error.previousToken.startColumn + 1;\r\n }\r\n\r\n msg += '\\n' + inputText.split('\\n')[line - 1] + '\\n';\r\n msg += Array(column - 1).fill(' ').join('') + '^\\n';\r\n msg += `Error at position ${line}:${column}\\n` + error.message;\r\n error.errorLocation = {line, column};\r\n return FormulaError.ERROR(msg, error);\r\n }\r\n\r\n}\r\n\r\nmodule.exports = Utils;\r\n","const TextFunctions = require('../formulas/functions/text');\r\nconst MathFunctions = require('../formulas/functions/math');\r\nconst TrigFunctions = require('../formulas/functions/trigonometry');\r\nconst LogicalFunctions = require('../formulas/functions/logical');\r\nconst EngFunctions = require('../formulas/functions/engineering');\r\nconst ReferenceFunctions = require('../formulas/functions/reference');\r\nconst InformationFunctions = require('../formulas/functions/information');\r\nconst StatisticalFunctions = require('../formulas/functions/statistical');\r\nconst DateFunctions = require('../formulas/functions/date');\r\nconst WebFunctions = require('../formulas/functions/web');\r\nconst FormulaError = require('../formulas/error');\r\nconst {FormulaHelpers} = require('../formulas/helpers');\r\nconst {Parser, allTokens} = require('./parsing');\r\nconst lexer = require('./lexing');\r\nconst Utils = require('./utils');\r\n\r\n/**\r\n * A Excel Formula Parser & Evaluator\r\n */\r\nclass FormulaParser {\r\n\r\n /**\r\n * @param {{functions: {}, functionsNeedContext: {}, onVariable: function, onCell: function, onRange: function}} [config]\r\n * @param isTest - is in testing environment\r\n */\r\n constructor(config, isTest = false) {\r\n this.logs = [];\r\n this.isTest = isTest;\r\n this.utils = new Utils(this);\r\n config = Object.assign({\r\n functions: {},\r\n functionsNeedContext: {},\r\n onVariable: () => null,\r\n onCell: () => 0,\r\n onRange: () => [[0]],\r\n }, config);\r\n\r\n this.onVariable = config.onVariable;\r\n this.functions = Object.assign({}, DateFunctions, StatisticalFunctions, InformationFunctions, ReferenceFunctions,\r\n EngFunctions, LogicalFunctions, TextFunctions, MathFunctions, TrigFunctions, WebFunctions,\r\n config.functions, config.functionsNeedContext);\r\n this.onRange = config.onRange;\r\n this.onCell = config.onCell;\r\n\r\n // functions treat null as 0, other functions treats null as \"\"\r\n this.funsNullAs0 = Object.keys(MathFunctions)\r\n .concat(Object.keys(TrigFunctions))\r\n .concat(Object.keys(LogicalFunctions))\r\n .concat(Object.keys(EngFunctions))\r\n .concat(Object.keys(ReferenceFunctions))\r\n .concat(Object.keys(StatisticalFunctions))\r\n .concat(Object.keys(DateFunctions));\r\n\r\n // functions need context and don't need to retrieve references\r\n this.funsNeedContextAndNoDataRetrieve = ['ROW', 'ROWS', 'COLUMN', 'COLUMNS', 'SUMIF', 'INDEX', 'AVERAGEIF', 'IF'];\r\n\r\n // functions need parser context\r\n this.funsNeedContext = [...Object.keys(config.functionsNeedContext), ...this.funsNeedContextAndNoDataRetrieve,\r\n 'INDEX', 'OFFSET', 'INDIRECT', 'IF', 'CHOOSE', 'WEBSERVICE'];\r\n\r\n // functions preserve reference in arguments\r\n this.funsPreserveRef = Object.keys(InformationFunctions);\r\n\r\n this.parser = new Parser(this, this.utils);\r\n }\r\n\r\n /**\r\n * Get all lexing token names. Webpack needs this.\r\n * @return {Array.} - All token names that should not be minimized.\r\n */\r\n static get allTokens() {\r\n return allTokens;\r\n }\r\n\r\n /**\r\n * Get value from the cell reference\r\n * @param ref\r\n * @return {*}\r\n */\r\n getCell(ref) {\r\n // console.log('get cell', JSON.stringify(ref));\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n return this.onCell(ref);\r\n }\r\n\r\n /**\r\n * Get values from the range reference.\r\n * @param ref\r\n * @return {*}\r\n */\r\n getRange(ref) {\r\n // console.log('get range', JSON.stringify(ref));\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n return this.onRange(ref)\r\n }\r\n\r\n /**\r\n * TODO:\r\n * Get references or values from a user defined variable.\r\n * @param name\r\n * @return {*}\r\n */\r\n getVariable(name) {\r\n // console.log('get variable', name);\r\n const res = {ref: this.onVariable(name, this.position.sheet, this.position)};\r\n if (res.ref == null)\r\n return FormulaError.NAME;\r\n return res;\r\n }\r\n\r\n /**\r\n * Retrieve values from the given reference.\r\n * @param valueOrRef\r\n * @return {*}\r\n */\r\n retrieveRef(valueOrRef) {\r\n if (FormulaHelpers.isRangeRef(valueOrRef)) {\r\n return this.getRange(valueOrRef.ref);\r\n }\r\n if (FormulaHelpers.isCellRef(valueOrRef)) {\r\n return this.getCell(valueOrRef.ref)\r\n }\r\n return valueOrRef;\r\n }\r\n\r\n /**\r\n * Call an excel function.\r\n * @param name - Function name.\r\n * @param args - Arguments that pass to the function.\r\n * @return {*}\r\n */\r\n _callFunction(name, args) {\r\n if (name.indexOf('_xlfn.') === 0)\r\n name = name.slice(6);\r\n name = name.toUpperCase();\r\n // if one arg is null, it means 0 or \"\" depends on the function it calls\r\n const nullValue = this.funsNullAs0.includes(name) ? 0 : '';\r\n\r\n if (!this.funsNeedContextAndNoDataRetrieve.includes(name)) {\r\n // retrieve reference\r\n args = args.map(arg => {\r\n if (arg === null)\r\n return {value: nullValue, isArray: false, omitted: true};\r\n const res = this.utils.extractRefValue(arg);\r\n\r\n if (this.funsPreserveRef.includes(name)) {\r\n return {value: res.val, isArray: res.isArray, ref: arg.ref};\r\n }\r\n return {\r\n value: res.val,\r\n isArray: res.isArray,\r\n isRangeRef: !!FormulaHelpers.isRangeRef(arg),\r\n isCellRef: !!FormulaHelpers.isCellRef(arg)\r\n };\r\n });\r\n }\r\n // console.log('callFunction', name, args)\r\n\r\n if (this.functions[name]) {\r\n let res;\r\n try {\r\n if (!this.funsNeedContextAndNoDataRetrieve.includes(name) && !this.funsNeedContext.includes(name))\r\n res = (this.functions[name](...args));\r\n else\r\n res = (this.functions[name](this, ...args));\r\n } catch (e) {\r\n // allow functions throw FormulaError, this make functions easier to implement!\r\n if (e instanceof FormulaError) {\r\n return e;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n if (res === undefined) {\r\n // console.log(`Function ${name} may be not implemented.`);\r\n if (this.isTest) {\r\n if (!this.logs.includes(name)) this.logs.push(name);\r\n return {value: 0, ref: {}};\r\n }\r\n throw FormulaError.NOT_IMPLEMENTED(name);\r\n }\r\n return res;\r\n } else {\r\n // console.log(`Function ${name} is not implemented`);\r\n if (this.isTest) {\r\n if (!this.logs.includes(name)) this.logs.push(name);\r\n return {value: 0, ref: {}};\r\n }\r\n throw FormulaError.NOT_IMPLEMENTED(name);\r\n }\r\n }\r\n\r\n async callFunctionAsync(name, args) {\r\n const awaitedArgs = [];\r\n for (const arg of args) {\r\n awaitedArgs.push(await arg);\r\n }\r\n const res = await this._callFunction(name, awaitedArgs);\r\n return FormulaHelpers.checkFunctionResult(res)\r\n }\r\n\r\n callFunction(name, args) {\r\n if (this.async) {\r\n return this.callFunctionAsync(name, args);\r\n } else {\r\n const res = this._callFunction(name, args);\r\n return FormulaHelpers.checkFunctionResult(res);\r\n }\r\n }\r\n\r\n /**\r\n * Return currently supported functions.\r\n * @return {this}\r\n */\r\n supportedFunctions() {\r\n const supported = [];\r\n const functions = Object.keys(this.functions);\r\n functions.forEach(fun => {\r\n try {\r\n const res = this.functions[fun](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r\n if (res === undefined) return;\r\n supported.push(fun);\r\n } catch (e) {\r\n if (e instanceof Error)\r\n supported.push(fun);\r\n }\r\n });\r\n return supported.sort();\r\n }\r\n\r\n /**\r\n * Check and return the appropriate formula result.\r\n * @param result\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array\r\n * @return {*}\r\n */\r\n checkFormulaResult(result, allowReturnArray = false) {\r\n const type = typeof result;\r\n // number\r\n if (type === 'number') {\r\n if (isNaN(result)) {\r\n return FormulaError.VALUE;\r\n } else if (!isFinite(result)) {\r\n return FormulaError.NUM;\r\n }\r\n result += 0; // make -0 to 0\r\n } else if (type === 'object') {\r\n if (result instanceof FormulaError)\r\n return result;\r\n if (allowReturnArray) {\r\n if (result.ref) {\r\n result = this.retrieveRef(result);\r\n }\r\n // Disallow union, and other unknown data types.\r\n // e.g. `=(A1:C1, A2:E9)` -> #VALUE!\r\n if (typeof result === 'object' && !Array.isArray(result) && result != null) {\r\n return FormulaError.VALUE;\r\n }\r\n\r\n } else {\r\n if (result.ref && result.ref.row && !result.ref.from) {\r\n // single cell reference\r\n result = this.retrieveRef(result);\r\n } else if (result.ref && result.ref.from && result.ref.from.col === result.ref.to.col) {\r\n // single Column reference\r\n result = this.retrieveRef({\r\n ref: {\r\n row: result.ref.from.row, col: result.ref.from.col\r\n }\r\n });\r\n } else if (Array.isArray(result)) {\r\n result = result[0][0]\r\n } else {\r\n // array, range reference, union collections\r\n return FormulaError.VALUE;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse an excel formula.\r\n * @param {string} inputText\r\n * @param {{row: number, col: number}} [position] - The position of the parsed formula\r\n * e.g. {row: 1, col: 1}\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,\r\n * or data validation formulas.\r\n * @returns {*}\r\n */\r\n parse(inputText, position, allowReturnArray = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.position = position;\r\n this.async = false;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n let res;\r\n try {\r\n res = this.parser.formulaWithBinaryOp();\r\n res = this.checkFormulaResult(res, allowReturnArray);\r\n if (res instanceof FormulaError) {\r\n return res;\r\n }\r\n } catch (e) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n if (this.parser.errors.length > 0) {\r\n const error = this.parser.errors[0];\r\n throw Utils.formatChevrotainError(error, inputText);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Parse an excel formula asynchronously.\r\n * Use when providing custom async functions.\r\n * @param {string} inputText\r\n * @param {{row: number, col: number}} [position] - The position of the parsed formula\r\n * e.g. {row: 1, col: 1}\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,\r\n * or data validation formulas.\r\n * @returns {*}\r\n */\r\n async parseAsync(inputText, position, allowReturnArray = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.position = position;\r\n this.async = true;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n let res;\r\n try {\r\n res = await this.parser.formulaWithBinaryOp();\r\n res = this.checkFormulaResult(res, allowReturnArray);\r\n if (res instanceof FormulaError) {\r\n return res;\r\n }\r\n } catch (e) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n if (this.parser.errors.length > 0) {\r\n const error = this.parser.errors[0];\r\n throw Utils.formatChevrotainError(error, inputText);\r\n }\r\n return res;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n FormulaParser,\r\n FormulaHelpers,\r\n};\r\n","const FormulaError = require('../../formulas/error');\r\nconst {FormulaHelpers, Types, Address} = require('../../formulas/helpers');\r\nconst {Prefix, Postfix, Infix, Operators} = require('../../formulas/operators');\r\nconst Collection = require('../type/collection');\r\nconst MAX_ROW = 1048576, MAX_COLUMN = 16384;\r\n\r\nclass Utils {\r\n\r\n constructor(context) {\r\n this.context = context;\r\n }\r\n\r\n columnNameToNumber(columnName) {\r\n return Address.columnNameToNumber(columnName);\r\n }\r\n\r\n /**\r\n * Parse the cell address only.\r\n * @param {string} cellAddress\r\n * @return {{ref: {col: number, address: string, row: number}}}\r\n */\r\n parseCellAddress(cellAddress) {\r\n const res = cellAddress.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);\r\n // console.log('parseCellAddress', cellAddress);\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(res[2]),\r\n row: +res[4]\r\n },\r\n };\r\n }\r\n\r\n parseRow(row) {\r\n const rowNum = +row;\r\n if (!Number.isInteger(rowNum))\r\n throw Error('Row number must be integer.');\r\n return {\r\n ref: {\r\n col: undefined,\r\n row: +row\r\n },\r\n };\r\n }\r\n\r\n parseCol(col) {\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(col),\r\n row: undefined,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Apply + or - unary prefix.\r\n * @param {Array.} prefixes\r\n * @param {*} value\r\n * @return {*}\r\n */\r\n applyPrefix(prefixes, value) {\r\n this.extractRefValue(value);\r\n return 0;\r\n }\r\n\r\n applyPostfix(value, postfix) {\r\n this.extractRefValue(value);\r\n return 0\r\n }\r\n\r\n applyInfix(value1, infix, value2) {\r\n this.extractRefValue(value1);\r\n this.extractRefValue(value2);\r\n return 0;\r\n }\r\n\r\n applyIntersect(refs) {\r\n // console.log('applyIntersect', refs);\r\n if (this.isFormulaError(refs[0]))\r\n return refs[0];\r\n if (!refs[0].ref)\r\n throw Error(`Expecting a reference, but got ${refs[0]}.`);\r\n // a intersection will keep track of references, value won't be retrieved here.\r\n let maxRow, maxCol, minRow, minCol, sheet, res; // index start from 1\r\n // first time setup\r\n const ref = refs.shift().ref;\r\n sheet = ref.sheet;\r\n if (!ref.from) {\r\n // check whole row/col reference\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n\r\n // cell ref\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n // update\r\n maxRow = Math.max(ref.from.row, ref.to.row);\r\n minRow = Math.min(ref.from.row, ref.to.row);\r\n maxCol = Math.max(ref.from.col, ref.to.col);\r\n minCol = Math.min(ref.from.col, ref.to.col);\r\n }\r\n\r\n let err;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n ref = ref.ref;\r\n if (!ref) throw Error(`Expecting a reference, but got ${ref}.`);\r\n if (!ref.from) {\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n // cell ref\r\n if (ref.row > maxRow || ref.row < minRow || ref.col > maxCol || ref.col < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n const refMaxRow = Math.max(ref.from.row, ref.to.row);\r\n const refMinRow = Math.min(ref.from.row, ref.to.row);\r\n const refMaxCol = Math.max(ref.from.col, ref.to.col);\r\n const refMinCol = Math.min(ref.from.col, ref.to.col);\r\n if (refMinRow > maxRow || refMaxRow < minRow || refMinCol > maxCol || refMaxCol < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n // update\r\n maxRow = Math.min(maxRow, refMaxRow);\r\n minRow = Math.max(minRow, refMinRow);\r\n maxCol = Math.min(maxCol, refMaxCol);\r\n minCol = Math.max(minCol, refMinCol);\r\n }\r\n });\r\n if (err) return err;\r\n // check if the ref can be reduced to cell reference\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n sheet,\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n sheet,\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n\r\n if (!res.ref.sheet)\r\n delete res.ref.sheet;\r\n return res;\r\n }\r\n\r\n applyUnion(refs) {\r\n const collection = new Collection();\r\n for (let i = 0; i < refs.length; i++) {\r\n if (this.isFormulaError(refs[i]))\r\n return refs[i];\r\n collection.add(this.extractRefValue(refs[i]).val, refs[i]);\r\n }\r\n\r\n // console.log('applyUnion', unions);\r\n return collection;\r\n }\r\n\r\n /**\r\n * Apply multiple references, e.g. A1:B3:C8:A:1:.....\r\n * @param refs\r\n // * @return {{ref: {from: {col: number, row: number}, to: {col: number, row: number}}}}\r\n */\r\n applyRange(refs) {\r\n let res, maxRow = -1, maxCol = -1, minRow = MAX_ROW + 1, minCol = MAX_COLUMN + 1;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n // row ref is saved as number, parse the number to row ref here\r\n if (typeof ref === 'number') {\r\n ref = this.parseRow(ref);\r\n }\r\n ref = ref.ref;\r\n // check whole row/col reference\r\n if (ref.row === undefined) {\r\n minRow = 1;\r\n maxRow = MAX_ROW\r\n }\r\n if (ref.col === undefined) {\r\n minCol = 1;\r\n maxCol = MAX_COLUMN;\r\n }\r\n\r\n if (ref.row > maxRow)\r\n maxRow = ref.row;\r\n if (ref.row < minRow)\r\n minRow = ref.row;\r\n if (ref.col > maxCol)\r\n maxCol = ref.col;\r\n if (ref.col < minCol)\r\n minCol = ref.col;\r\n });\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Throw away the refs, and retrieve the value.\r\n * @return {{val: *, isArray: boolean}}\r\n */\r\n extractRefValue(obj) {\r\n const isArray = Array.isArray(obj);\r\n if (obj.ref) {\r\n // can be number or array\r\n return {val: this.context.retrieveRef(obj), isArray};\r\n\r\n }\r\n return {val: obj, isArray};\r\n }\r\n\r\n /**\r\n *\r\n * @param array\r\n * @return {Array}\r\n */\r\n toArray(array) {\r\n // TODO: check if array is valid\r\n // console.log('toArray', array);\r\n return array;\r\n }\r\n\r\n /**\r\n * @param {string} number\r\n * @return {number}\r\n */\r\n toNumber(number) {\r\n return Number(number);\r\n }\r\n\r\n /**\r\n * @param {string} string\r\n * @return {string}\r\n */\r\n toString(string) {\r\n return string.substring(1, string.length - 1) .replace(/\"\"/g, '\"');\r\n }\r\n\r\n /**\r\n * @param {string} bool\r\n * @return {boolean}\r\n */\r\n toBoolean(bool) {\r\n return bool === 'TRUE';\r\n }\r\n\r\n /**\r\n * Parse an error.\r\n * @param {string} error\r\n * @return {FormulaError}\r\n */\r\n toError(error) {\r\n return new FormulaError(error.toUpperCase());\r\n }\r\n\r\n isFormulaError(obj) {\r\n return obj instanceof FormulaError;\r\n }\r\n}\r\n\r\nmodule.exports = Utils;\r\n","const FormulaError = require('../../formulas/error');\r\nconst {FormulaHelpers} = require('../../formulas/helpers');\r\nconst {Parser} = require('../parsing');\r\nconst lexer = require('../lexing');\r\nconst Utils = require('./utils');\r\nconst {formatChevrotainError} = require('../utils');\r\n\r\nclass DepParser {\r\n\r\n /**\r\n *\r\n * @param {{onVariable: Function}} [config]\r\n */\r\n constructor(config) {\r\n this.data = [];\r\n this.utils = new Utils(this);\r\n config = Object.assign({\r\n onVariable: () => null,\r\n }, config);\r\n this.utils = new Utils(this);\r\n\r\n this.onVariable = config.onVariable;\r\n this.functions = {}\r\n\r\n this.parser = new Parser(this, this.utils);\r\n }\r\n\r\n /**\r\n * Get value from the cell reference\r\n * @param ref\r\n * @return {*}\r\n */\r\n getCell(ref) {\r\n // console.log('get cell', JSON.stringify(ref));\r\n if (ref.row != null) {\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n const idx = this.data.findIndex(element => {\r\n return (element.from && element.from.row <= ref.row && element.to.row >= ref.row\r\n && element.from.col <= ref.col && element.to.col >= ref.col)\r\n || (element.row === ref.row && element.col === ref.col && element.sheet === ref.sheet)\r\n });\r\n if (idx === -1)\r\n this.data.push(ref);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Get values from the range reference.\r\n * @param ref\r\n * @return {*}\r\n */\r\n getRange(ref) {\r\n // console.log('get range', JSON.stringify(ref));\r\n if (ref.from.row != null) {\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n\r\n const idx = this.data.findIndex(element => {\r\n return element.from && element.from.row === ref.from.row && element.from.col === ref.from.col\r\n && element.to.row === ref.to.row && element.to.col === ref.to.col;\r\n });\r\n if (idx === -1)\r\n this.data.push(ref);\r\n }\r\n return [[0]]\r\n }\r\n\r\n /**\r\n * TODO:\r\n * Get references or values from a user defined variable.\r\n * @param name\r\n * @return {*}\r\n */\r\n getVariable(name) {\r\n // console.log('get variable', name);\r\n const res = {ref: this.onVariable(name, this.position.sheet)};\r\n if (res.ref == null)\r\n return FormulaError.NAME;\r\n if (FormulaHelpers.isCellRef(res))\r\n this.getCell(res.ref);\r\n else {\r\n this.getRange(res.ref);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Retrieve values from the given reference.\r\n * @param valueOrRef\r\n * @return {*}\r\n */\r\n retrieveRef(valueOrRef) {\r\n if (FormulaHelpers.isRangeRef(valueOrRef)) {\r\n return this.getRange(valueOrRef.ref);\r\n }\r\n if (FormulaHelpers.isCellRef(valueOrRef)) {\r\n return this.getCell(valueOrRef.ref)\r\n }\r\n return valueOrRef;\r\n }\r\n\r\n /**\r\n * Call an excel function.\r\n * @param name - Function name.\r\n * @param args - Arguments that pass to the function.\r\n * @return {*}\r\n */\r\n callFunction(name, args) {\r\n args.forEach(arg => {\r\n if (arg == null)\r\n return;\r\n this.retrieveRef(arg);\r\n });\r\n return {value: 0, ref: {}};\r\n }\r\n\r\n /**\r\n * Check and return the appropriate formula result.\r\n * @param result\r\n * @return {*}\r\n */\r\n checkFormulaResult(result) {\r\n this.retrieveRef(result);\r\n }\r\n\r\n /**\r\n * Parse an excel formula and return the dependencies\r\n * @param {string} inputText\r\n * @param {{row: number, col: number, sheet: string}} position\r\n * @param {boolean} [ignoreError=false] if true, throw FormulaError when error occurred.\r\n * if false, the parser will return partial dependencies.\r\n * @returns {Array.<{}>}\r\n */\r\n parse(inputText, position, ignoreError = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.data = [];\r\n this.position = position;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n try {\r\n const res = this.parser.formulaWithBinaryOp();\r\n this.checkFormulaResult(res);\r\n } catch (e) {\r\n if (!ignoreError) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n }\r\n if (this.parser.errors.length > 0 && !ignoreError) {\r\n const error = this.parser.errors[0];\r\n throw formatChevrotainError(error, inputText);\r\n }\r\n\r\n return this.data;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n DepParser,\r\n};\r\n","const {FormulaParser} = require('./grammar/hooks');\r\nconst {DepParser} = require('./grammar/dependency/hooks');\r\nconst SSF = require('./ssf/ssf');\r\nconst FormulaError = require('./formulas/error');\r\n\r\n// const funs = new FormulaParser().supportedFunctions();\r\n// console.log('Supported:', funs.join(', '),\r\n// `\\nTotal: ${funs.length}/477, ${funs.length/477*100}% implemented.`);\r\n\r\n\r\nObject.assign(FormulaParser, {\r\n MAX_ROW: 1048576,\r\n MAX_COLUMN: 16384,\r\n SSF,\r\n DepParser,\r\n FormulaError, ...require('./formulas/helpers')\r\n});\r\nmodule.exports = FormulaParser;\r\n","import Parser, { DepParser } from 'fast-formula-parser';\nexport class FormulaParser {\n parser;\n depParser;\n root;\n constructor(root) {\n this.root = root;\n this.parser = new Parser({\n onCell: ({ col, row }) => {\n const cell = this.root.data[row - 1][col - 1];\n const cellValue = cell.resultValue.length > 0 ? cell.resultValue : cell.value;\n if (cellValue && isNaN(Number(cellValue)) === false)\n return Number(cellValue);\n return this.root.data[row - 1][col - 1].resultValue ?? '';\n },\n });\n this.depParser = new DepParser({});\n this.depParser;\n }\n}\n","import { Editor } from \"./components/editor\";\nimport { Scroller } from \"./components/scroller\";\nimport { Sheet } from \"./components/sheet\";\nimport { Table } from \"./components/table\";\nimport { Toolbar } from \"./components/toolbar\";\nimport { Cell, } from \"./modules/cell\";\nimport { Config, } from \"./modules/config\";\nimport { Selection } from \"./modules/selection\";\nimport { Styles } from \"./modules/styles\";\nimport { Viewport } from \"./modules/viewport\";\nimport \"./scss/main.scss\";\nimport { createSampleData } from \"./utils/createData\";\nimport { Cache, CachedColumn, CachedRow } from \"./modules/cache\";\nimport { Row } from \"./modules/row\";\nimport { Column } from \"./modules/column\";\nimport { ColumnsBar } from \"./components/columnsBar\";\nimport { RowsBar } from \"./components/rowsBar\";\nimport { EventTypes, Events } from \"./modules/events\";\nimport { Clipboard } from \"./modules/clipboard\";\nimport { FormulaParser } from \"./modules/formulaParser\";\nexport const CSS_PREFIX = \"modern_sc_\";\nexport default class Spreadsheet {\n table;\n scroller;\n toolbar;\n rowsBar;\n columnsBar;\n sheet;\n editor;\n styles;\n config;\n data;\n viewport;\n selection;\n cache;\n events;\n clipboard;\n formulaParser;\n constructor(target, props) {\n const data = createSampleData(40, 40);\n const config = this.makeConfigFromData(data, props?.view ?? { height: 600, width: 800 });\n if (props?.view) {\n config.view = props.view;\n }\n this.config = new Config(config);\n this.config.onCellClick = props?.onCellClick ?? null;\n this.config.onSelectonChange = props?.onSelectionChange ?? null;\n this.config.onCellChange = props?.onCellChange ?? null;\n this.config.onCopy = props?.onCopy ?? null;\n this.rowsBar = new RowsBar(this);\n this.columnsBar = new ColumnsBar(this);\n this.sheet = new Sheet(this);\n this.table = new Table(this);\n this.scroller = new Scroller(this);\n this.toolbar = new Toolbar(this);\n this.editor = new Editor(this);\n this.cache = this.getInitialCache();\n this.viewport = new Viewport(this, this.scroller.getViewportBoundlingRect());\n this.selection = new Selection();\n this.events = new Events(this);\n this.clipboard = new Clipboard(this);\n this.formulaParser = new FormulaParser(this);\n this.data = data;\n this.styles = new Styles();\n this.buildComponent();\n this.setElementsPositions();\n this.appendTableToTarget(target);\n this.renderSheet();\n this.renderColumnsBar();\n this.renderRowsBar();\n }\n setRowsBarPosition() {\n const top = this.columnsBar.height + this.toolbar.height;\n const left = 0;\n this.rowsBar.setElementPosition(top, left);\n }\n setColumnsBarPosition() {\n const top = this.toolbar.height;\n const left = this.rowsBar.width;\n this.columnsBar.setElementPosition(top, left);\n }\n setElementsPositions() {\n this.setRowsBarPosition();\n this.setColumnsBarPosition();\n }\n getInitialCache() {\n const cachedCols = [];\n let currentWidth = 0;\n for (let i = 0; i <= this.config.columns.length - 1; i++) {\n const col = this.config.columns[i];\n currentWidth += col.width;\n const cacheCol = new CachedColumn({\n xPos: currentWidth,\n colIdx: i,\n });\n cachedCols.push(cacheCol);\n }\n const cachedRows = [];\n let currentHeight = 0;\n for (let i = 0; i <= this.config.rows.length - 1; i++) {\n const row = this.config.rows[i];\n currentHeight += row.height;\n const cacheRow = new CachedRow({\n yPos: currentHeight,\n rowIdx: i,\n });\n cachedRows.push(cacheRow);\n }\n const cache = new Cache({\n columns: cachedCols,\n rows: cachedRows,\n });\n return cache;\n }\n buildComponent() {\n const content = document.createElement(\"div\"); //* Abstract\n content.style.top = this.columnsBarHeight + \"px\";\n content.style.left = this.rowsBarWidth + \"px\";\n content.appendChild(this.sheet.element);\n content.classList.add(CSS_PREFIX + \"content\");\n this.table.element.appendChild(this.toolbar.element);\n this.table.element.appendChild(this.rowsBar.element);\n this.table.element.appendChild(this.columnsBar.element);\n this.table.element.appendChild(content);\n this.table.element.appendChild(this.scroller.element);\n this.table.element.append(this.editor.element);\n }\n /**Destroy spreadsheet DOM element.\n *\n * May be usefull when need to rerender component.\n */\n destroy() {\n this.table.element.remove();\n }\n appendTableToTarget(target) {\n if (typeof target === \"string\") {\n const element = document.querySelector(target);\n if (!element)\n throw new Error(`Element with selector ${target} is not finded in DOM.\\n Make sure it exists.`);\n element?.appendChild(this.table.element);\n }\n if (target instanceof HTMLElement) {\n target.append(this.table.element);\n }\n }\n /** Canvas rendering context 2D.\n *\n * Abble to draw on canvas with default CanvasAPI methods\n */\n get ctx() {\n return this.sheet.ctx;\n }\n get viewProps() {\n return this.config.view;\n }\n get columnsBarHeight() {\n return this.columnsBar.height;\n }\n get rowsBarWidth() {\n return this.rowsBar.width;\n }\n get toolbarHeight() {\n return this.toolbar.height;\n }\n /** Focusing on interactive part of spreadsheet */\n focusTable() {\n this.scroller.element.focus();\n }\n getCellByCoords(x, y) {\n return this.sheet.getCellByCoords(x, y);\n }\n getCell(position) {\n const { column, row } = position;\n return this.data[row][column];\n }\n changeCellValues(position, values, enableCallback = true) {\n const { column, row } = position;\n this.data[row][column].changeValues(values);\n this.events.dispatch({\n type: EventTypes.CELL_CHANGE,\n cell: this.data[row][column],\n enableCallback: enableCallback\n });\n this.renderCell(row, column);\n }\n changeCellStyles(position, styles) {\n const { column, row } = position;\n this.data[row][column].changeStyles(styles);\n this.renderCell(row, column);\n }\n applyActionToRange(range, callback) {\n const fromRow = Math.min(range.from.row, range.to.row);\n const toRow = Math.max(range.from.row, range.to.row);\n const fromCol = Math.min(range.from.column, range.to.column);\n const toCol = Math.max(range.from.column, range.to.column);\n for (let row = fromRow; row <= toRow; row++) {\n for (let col = fromCol; col <= toCol; col++) {\n const cell = this.data[row][col];\n callback(cell);\n }\n }\n }\n deleteSelectedCellsValues() {\n if (this.selection.selectedRange !== null) {\n this.applyActionToRange(this.selection.selectedRange, (cell) => {\n this.changeCellValues(cell.position, {\n displayValue: \"\",\n resultValue: \"\",\n value: \"\",\n });\n });\n }\n else {\n if (!this.selection.selectedCell)\n return;\n this.changeCellValues(this.selection.selectedCell, {\n displayValue: \"\",\n resultValue: \"\",\n value: \"\",\n });\n }\n }\n showEditor(position, initialString) {\n this.editor.show(position, initialString);\n }\n renderSheet() {\n this.sheet.renderSheet();\n }\n renderSelection() {\n this.sheet.renderSelection();\n }\n renderColumnsBar() {\n this.columnsBar.renderBar();\n }\n renderRowsBar() {\n this.rowsBar.renderBar();\n }\n renderCell(row, col) {\n this.data[row][col].render(this);\n }\n loadData(data) {\n const rowsLength = data.length;\n const colsLength = data[0] ? data[0].length : 0;\n this.data = [];\n const formattedData = [];\n // Transform serialized objects to Cells\n for (let row = 0; row < rowsLength; row++) {\n const innerRow = [];\n for (let col = 0; col < colsLength; col++) {\n const cell = data[row][col];\n innerRow.push(new Cell({\n displayValue: cell.displayValue,\n position: cell.position,\n resultValue: cell.resultValue,\n value: cell.value,\n style: cell.style,\n }));\n }\n formattedData.push(innerRow);\n }\n const config = this.makeConfigFromData(formattedData, this.config.view);\n config.onCellChange = this.config.onCellChange;\n config.onCellClick = this.config.onCellClick;\n config.onCopy = this.config.onCopy;\n config.onSelectonChange = this.config.onSelectonChange;\n this.data = formattedData;\n this.selection.selectedCell = null;\n this.selection.selectedRange = null;\n this.config = config;\n this.cache = this.getInitialCache();\n this.scroller.updateScrollerSize();\n this.viewport = new Viewport(this, this.scroller.getViewportBoundlingRect());\n this.renderSheet();\n return this;\n }\n makeConfigFromData(data, view) {\n const lastRowIdx = data.length - 1;\n const lastColIdx = data[0] ? data[0].length : 0;\n const rows = [];\n for (let row = 0; row < lastRowIdx; row++) {\n rows.push(new Row({\n height: 40,\n title: String(row),\n }));\n }\n const columns = [];\n for (let col = 0; col < lastColIdx; col++) {\n columns.push(new Column({\n width: 150,\n title: String(col),\n }));\n }\n const config = new Config({\n view,\n rows,\n columns,\n onCellClick: null,\n });\n return config;\n }\n serializeData() {\n const rowsLength = this.data.length;\n const colsLength = this.data[0] ? this.data[0].length : 0;\n const cellsArray = [];\n for (let row = 0; row < rowsLength; row++) {\n const innerRow = [];\n for (let col = 0; col < colsLength; col++) {\n innerRow.push(this.data[row][col].getSerializableCell());\n }\n cellsArray.push(innerRow);\n }\n return cellsArray;\n }\n}\nexport * from \"./modules/cache\";\nexport * from \"./modules/cell\";\nexport * from \"./modules/column\";\nexport * from \"./modules/config\";\nexport * from \"./modules/renderBox\";\nexport * from \"./modules/row\";\nexport * from \"./modules/selection\";\nexport * from \"./modules/styles\";\nexport * from \"./modules/viewport\";\nexport * from \"./utils/createData\";\n"],"names":["EventTypes","Events","root","__publicField","event","scroller","_a","_b","offsetX","offsetY","clickedCell","cell","selection","Selection","enableCallback","range","data","dataAsString","action","err","RenderBox","config","cellPosition","column","x","row","y","Editor","key","target","element","CSS_PREFIX","position","initialString","height","width","checkEqualCellSelections","selection1","selection2","Scroller","lastSelectedCell","isRangeChanged","newSelection","keysRegex","isPressedLetterKey","cells","from","to","rect","horizontalScroller","verticalScroller","mode","scrollTop","scrollLeft","bottom","right","groupScrollers","stack","acc","curr","totalHeight","totalWidth","CellStyles","props","Position","SerializableCell","Cell$2","styles","values","parser","renderBox","ctx","Sheet$2","canvas","col","selectedCell","selectedRange","startRow","startCol","lastRow","lastCol","startCellBox","box","firstRowIdx","lastColIdx","lastRowIdx","firstColIdx","Table","container","sizes","Toolbar","toolbarElement","Config","Styles","Viewport","Column$2","Row","createSampleData","rows","columns","fillCellsByCoords","innerRow","value","Cell","createSampleConfig","rowsArr","i","rowItem","colsArr","colItem","Column","makeSpreadsheetConfigAndData","CachedColumn","CachedRow","Cache","initial","rowIdx","colIdx","ColumnsBar","top","left","isColSelected","specialX","RowsBar","isRowSeleted","specialY","Clipboard","mapedData","item","arrayOfCells","cellProps","rowsLength","colsLength","j","savedCell","Collection$3","refs","obj","ref","collection","Collection","FormulaError","require$$0","require$$1","Types","Factorials","ReversedTypes","FormulaHelpers","result","arr1","val","isArray","allowBoolean","number","params","valueType","allowUnion","hook","defValue","minSize","param","isCellRef","isRangeRef","isUnion","isLiteral","info","type","flat","allowSingleValue","paramType","variable","context","range1","range2","Address","H","arg","res","WildCard","lookupText","flags","Criteria","criteria","upper","op","dividend","name","modulo","columnName","len","code","rowOffset","colOffset","helpers","error","msg","details","functionName","args","SSF$1","SSF","_strrev","o","fill","c","l","pad0","v","d","t","pad_","rpad_","pad0r1","pad0r2","p2_32","pad0r","isgeneral","s","days","months","init_table","table_fmt","frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","q","parse_date_code","opts","b2","date","time","dow","dout","out","fix_hijri","basedate","dnthresh","base1904","datenum_local","date1904","epoch","general_fmt_int","general_fmt_num","gnr1","gnr2","gnr4","gnr5","gnr6","gfn2","w","gfn5","gfn3","gfn4","V","general_fmt","format","write_date","fmt","ss0","ss","tt","outl","commaify","write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","r","aval","sign","den","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","split_fmt","in_str","abstime","fmt_is_date","eval_fmt","flen","lst","dt","hr","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","cfregex","cfregex2","chkcond","thresh","choose_fmt","f","lat","m1","m2","load_entry","tbl","ssf","defaultResult","singleUnitStrs","placeNameStrs","num2Word","nums","maxLen","overflowIndex","overflowNums","remainingNumbs","digit","grammarFix","neungLen","combine","baht","satang","bahttext","num","bahtStr","satangStr","bahtArr","satangArr","module","require$$2","require$$3","charsets","toFull","set","toHalf","re","way","sets","toFullWidth","str0","toHalfWidth","TextFunctions","text","decimals","decimalString","text1","text2","findText","withinText","startNum","noCommas","comma","numChars","decimalSeparator","groupSeparator","leftParenOrMinus","rightParen","percent","letter","old_text","start_num","num_chars","new_text","arr","number_times","findTextRegex","formatText","e","Prefix","prefixes","prefix","Postfix","postfix","type2Number","Infix","value1","infix","value2","isArray1","isArray2","type1","type2","operators","fd","factorial","n","factorialDouble","MathFunctions","functionNum","options","ref1","radix","minLength","significance","absSignificance","times","offset","numberChosen","nFactorial","kFactorial","radians","a","b","array","numRow","numCol","det","diagLeft","diagRight","array1","array2","aNumRows","aNumCols","bNumRows","bNumCols","m","v1","v2","divisor","multiple","numbers","numerator","denominator","dimension","matrix","rowArr","temp","power","product","parsedNumber","degrees","form","digits","roman","multiplier","coefficients","coefficient","sumRange","ranges","isCriteriaArray","sum","rowNum","colNum","valueToAdd","arrays","arrayX","arrayY","math","MAX_NUMBER","TrigFunctions","trigonometry","getNumLogicalValue","numTrue","numFalse","LogicalFunctions","logicalTest","valueIfTrue","valueIfFalse","valueIfError","valueIfNa","logical","factory","exports","BESSEL","M","_horner","z","_bessel_iter","f0","f1","tdx","f2","_bessel_wrap","bessel0","bessel1","nonzero","b0","b1","besselj","W","b0_a1a","b0_a2a","b0_a1b","b0_a2b","a1","a2","xx","b1_a1a","b1_a2a","b1_a1b","b1_a2b","ret","jsum","bjp","bj","bjm","tox","bessely","besseli","b0_a","b0_b","b1_a","b1_b","bip","bi","bim","besselk","window","this","jStat","Math","undefined","concat","slice","toString","calcRdx","isFunction","isNumber","toVector","fn","index","submat","ind","nrow","objArr","cols","func","toAlter","ncol","retZero","retOne","retIdent","size","min","max","length","hival","step","current","cnt","start","end","rl","_slice","list","rcSlice","colSlice","rowSlice","nl","ml","diagArray","mat","jProto","funcs","passfunc","self","results","ascNum","clip","mean","tmp","prod","low","high","hash","_arr","logs","meanOfLogs","arrlen","diffs","arrLen","distinctNumbers","numberCounts","sortedDistinctNumbers","numberRanks","currentRank","count","first","last","rank","maxCount","numMaxCount","mode_arr","flag","sumsqerr","samples","dev","median","quantilesArray","alphap","betap","sortedArray","quantileVals","p","aleph","k","gamma","exclusive","realIndex","score","kind","counter","strict","binCnt","binWidth","bins","arr2","u","arr1Len","sq_dev","mu","sigma","skewSum","fullbool","tmpthis","callbackFunction","argsToPass","curriedFunction","vector","cof","ser","x0","x2","xp","gl","gl0","fact","xden","xnum","yi","aln","ap","del","h","ITMAX","an","fpmin","qab","qap","qam","aa","EPS","gln","pp","lna1","afac","isneg","ty","lna","lnb","al","shape","oalph","newthis","vals","fnfunc","alpha","beta","df1","df2","x1","local","scale","dof","rate","ncp","tol","min_iterations","flip","prob","lastvalue","std","dof2","betinc","eps","a0","m9","c9","betacdf","N","scaledPDF","samplesDone","scaledCDF","factor","sumarr","L","lam","U","slam","loglam","invalpha","vr","us","laplaceSign","tukeyWprob","nleg","ihalf","C1","C2","C3","bb","wlar","wincr1","wincr2","xleg","aleg","qsqz","pr_w","wincr","blb","binc","bub","einsum","cc1","wi","elsum","ac","qexpo","pplus","pminus","rinsum","tukeyQinv","p0","q0","p1","q1","p2","q2","p3","q3","p4","q4","c1","c2","c3","c4","c5","vmax","ps","nmeans","df","nlegq","ihalfq","eps1","eps2","dhaf","dquar","deigh","dlarg","ulen1","ulen2","ulen3","ulen4","xlegq","alegq","f2lf","f21","ff4","ulen","ans","otsum","twa1","t1","wprb","rotsum","maxiter","valx0","valx1","iter","xabs","push","isUsable","nrescols","rescols","nnorm","newarr","determinant","submatrix","maug","pivot","y2","maxrow","parts","matrix_mode","R","T","xv","xk","qr2","R_I","I","Aj","cAi","Ij","cIi","qr_solve","array_mode","QR","attrs","Q1","R1","RI","Q2","condition","ev","maxim","theta","t_j","u_j","order","k1","k2","u_j1","k3","k4","h1","g","X","pos","h_min","y1","F","dF","dl","temp1","temp2","Y","Bt","C","Vt","sides","zscore","tscore","expVar","sample","sampMean","sampSampMean","tmpargs","unexpVar","anovafscore","fscore","mean1","mean2","n1","n2","sd","qscore","means","change","pvalue","differenceOfProportions","pooled","se","sub_regress","exog","var_count","modelList","endog_index","exog_index","ols","endog","nobs","df_model","df_resid","coef","predict","resid","ybar","SSE","SSR","SST","R2","t_test","model","subModelList","sigmaHat","seBetaHat","mod","tStatistic","pValue","leftppf","interval95","F_test","F_statistic","fcdf","ols_wrap","ttest","ftest","adjust_R2","matrixRows","jMat","pass","jMatX","jMatY","innerinv","xtransp","next","compile","jMatYBar","yAverage","covar","sds","ts","inner","yBar","ssr","sse","sst","bessel","require$$4","MAX_OCT","MIN_OCT","MAX_BIN","MIN_BIN","numberRegex","IMWithoutRealRegex","IMRegex","parseIM","textOrNumber","real","im","unit","match","EngineeringFunctions","numberStr","places","number1","number2","shiftAmount","realNum","iNum","suffix","lowerLimit","upperLimit","ifNegative","toDecimal","toBinary","iNumber","realInput","imaginaryInput","imaginary","iNumber1","iNumber2","res1","unit1","res2","unit2","argument","realSum","imSum","prevUnit","isNegative","toHex","engineering","ReferenceFunctions","rowNumber","columnNumber","absNum","sheetText","indexNum","lookupValue","tableArray","rowIndexNum","rangeLookup","lookupType","prevValue","currValue","areaNum","colIndexNum","currRow","reference","error2Number","InfoFunctions","infoType","information","SQRT2PI","DistributionFunctions","cumulative","probability","numberS","trials","probabilityS","numberS2","degFreedom","actualRange","expectedRange","actual","expected","xsqr","filterArr1","filterArr2","lambda","d1","d2","x1Mean","x2Mean","s1","s2","e2y","knownYs","knownXs","filteredY","filteredX","xAllEqual","yMean","xMean","dataArray","binsArray","binsArrayFiltered","filterArr","knownY","knownX","newX","useConst","isKnownXOmitted","avg_x","avg_y","avg_xy","avg_xx","new_y","sample_s","number_sample","population_s","number_pop","pdf","cdf","standard_dev","number_f","number_s","probability_s","deg_freedom","distribution","StatisticalFunctions","avg","averageRange","statistical","MS_PER_DAY","d1900","WEEK_STARTS","WEEK_TYPES","WEEKEND_TYPES","timeRegex","dateRegex1","dateRegex2","dateRegex3","parseSimplifiedDate","fmt1","fmt2","fmt3","parseTime","minutes","seconds","ampm","now","toSerial","addOn","toDate","serial","parseDateWithExtra","serialOrString","isDateGiven","parseDate","compareDateIgnoreTime","date1","date2","isLeapYear","year","DateFunctions","month","day","startDate","endDate","yearDiff","monthDiff","dayDiff","dateText","method","dayNum","yearStart","holidays","holidaysArr","numWorkDays","found","weekend","weekendArr","skip","hour","minute","second","timeText","returnType","weekTypes","weekStart","basis","sm","sy","ed","em","ey","yLength","years","average","WebFunctions","url","web","VERSION","isEmpty","keys","mapValues","callback","objKeys","currKey","map","flatten","currItem","forEach","iteratorCallback","isObject","colKeys","isString","isUndefined","drop","howMuch","dropRight","filter","predicate","reject","pick","has","prop","contains","find","cloneArr","newArr","cloneObj","clonedObj","findAll","reduce","arrOrObj","iterator","isArr","accumulator","compact","uniq","identity","identities","currIdentity","isRegExp","every","difference","some","indexOf","assign","sources","_i","curSource","currSourceKeys","assignNoOverwrite","defaults","groupBy","groupKeyFunc","currGroupKey","currGroupArr","merge","obj1","obj2","keys2","NOOP","IDENTITY","packArray","holeyArr","orgValue","PRINT_ERROR","PRINT_WARNING","isES2015MapSupported","applyMixins","derivedCtor","baseCtors","baseCtor","baseProto","propName","basePropDescriptor","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","peek","timer","total","RegExpParser","newState","input","addFlag","alts","begin","terms","ASSERT_EXISTS","disjunction","ASSERT_NEVER_REACH_HERE","isBacktracking","atLeast","atMost","atom","complement","digitsCharCodes","whitespaceCodes","wordCharCodes","escapeCode","letterCode","escapedChar","nextChar","isFromSingleChar","isToSingleChar","insertToSet","capturing","groupAst","decimalPatternNoZero","decimalPattern","prevState","howMany","hexString","hexChar","hexDigitPattern","charCode","char","subItem","flagObj","flagKey","BaseRegExpVisitor","node","child","subChild","regExpAstCache","regExpParser","getRegExpAst","regExp","regExpStr","regExpAst","clearRegExpParserCache","__extends","extendStatics","__","complementErrorMessage","failedOptimizationPrefixMsg","getOptimizedStartCodesIndices","ensureOptimizations","ast","firstChars","firstCharOptimizedIndices","msgSuffix","ignoreCase","term","addOptimizedIdxToResult","rangeCode","minOptimizationVal","minUnOptVal","maxUnOptVal","minOptIdx","charCodeToOptimizedIndex","maxOptIdx","currOptIdx","isOptionalQuantifier","isWholeOptional","optimizedCharIdx","handleIgnoreCase","upperChar","lowerChar","findCode","setNode","targetCharCodes","codeOrRange","range_1","targetCode","CharCodeFinder","_super","_this","canMatchCharCode","charCodes","pattern","charCodeFinder","PATTERN","DEFAULT_MODE","MODES","SUPPORT_STICKY","analyzeTokenTypes","tokenTypes","tracer","initCharCodeToOptimizedIndexMap","onlyRelevantTypes","currType","Lexer","hasCustom","allTransformedPatterns","currPattern","regExpSource","addStickyFlag","addStartOfInput","escapedRegExpString","wrappedRegExp","patternIdxToType","patternIdxToGroup","patternIdxToLongerAltIdx","patternIdxToPushMode","patternIdxToPopMode","clazz","groupName","longerAltType","longerAltIdx","patternIdxToCanLineTerminator","lineTerminatorCharCodes","getCharCodes","tokType","checkLineBreaksIssues","patternIdxToIsCustom","patternIdxToShort","emptyGroups","patternIdxToConfig","isCustomPattern","isShortPattern","canBeOptimized","charCodeToPatternIdxToConfig","currTokType","optimizedIdx","addToMapOfArrays","lastOptimizedIdx_1","charOrInt","currOptimizedIdx","optimizedCodes","validatePatterns","validModesNames","errors","missingResult","findMissingPatterns","invalidResult","findInvalidPatterns","validTokenTypes","validateRegExpPattern","findInvalidGroupType","findModesThatDoNotExist","findUnreachablePatterns","withRegExpPatterns","findEndOfInputAnchor","findStartOfInputAnchor","findUnsupportedFlags","findDuplicatePatterns","findEmptyMatchRegExps","tokenTypesWithMissingPattern","LexerDefinitionErrorType","valid","tokenTypesWithInvalidPattern","end_of_input","EndAnchorFinder","invalidRegex","regexpAst","endAnchorVisitor","matchesEmptyString","start_of_input","StartAnchorFinder","startAnchorVisitor","invalidFlags","identicalPatterns","outerType","innerType","duplicatePatterns","currIdenticalSet","setOfIdentical","tokenTypeNames","dupPatternSrc","invalidTypes","group","validModes","invalidModes","canBeTested","noMetaChar","testIdx","tokenType","testTokenType","regExpArray","metaChars","performRuntimeChecks","lexerDefinition","trackLines","lineTerminatorCharacters","currModeValue","currModeName","currIdx","performWarningRuntimeChecks","warnings","hasAnyLineBreak","allTokenTypes","tokTypes","concreteTokenTypes","terminatorCharCodes","currIssue","message","buildLineBreakIssueMessage","warningDescriptor","cloneEmptyGroups","clonedResult","groupKeys","currGroupValue","LineTerminatorOptimizedTester","charsOrCodes","numOrString","charCodeToOptimizedIdxMap","tokenStructuredMatcher","tokInstance","tokConstructor","instanceType","tokenStructuredMatcherNoCategories","token","tokenShortNameIdx","tokenIdxToClass","augmentTokenTypes","tokenTypesAndParents","expandCategories","assignTokenDefaultProps","assignCategoriesMapProp","assignCategoriesTokensProp","categories","searching","newCategories","hasShortKeyProperty","hasCategoriesProperty","hasExtendingTokensTypesProperty","hasExtendingTokensTypesMapProperty","singleAssignCategoriesToksMap","path","nextNode","pathNode","nextCategory","newPath","isTokenType","defaultLexerErrorProvider","fullText","startOffset","line","DEFAULT_LEXER_CONFIG","traceInitVal","actualDefinition","hasOnlySingleMode","allModeNames","currModDef","currModName","currAnalyzeResult_1","allErrMessages","allErrMessagesString","unOptimizedModes","cannotBeOptimized","modeName","initialMode","lexResult","matchAltImage","matchedImage","payload","altPayload","imageLength","newToken","errLength","orgText","orgLength","matchedTokensIndex","guessedNumberOfTokens","matchedTokens","groups","lineTerminatorPattern","currModePatternsLength","currCharCodeToPatternIdxToConfig","modeStack","emptyArray","getPossiblePatterns","getPossiblePatternsSlow","getPossiblePatternsOptimized","possiblePatterns","pop_mode","popToken","msg_1","newMode","modeCanBeOptimized","push_mode","currConfig","nextCharCode","chosenPatternIdxToConfig","chosenPatternsLength","singleCharCode","longerAltConfig","longerAltPattern","numOfLTsInMatch","foundTerminator","lastLTEndOffset","errorStartOffset","errorLine","errorColumn","foundResyncPoint","currConfig_1","pushMode","newLastIndex","lastLTIdx","lastCharIsLT","fixForEndingInLT","oldColumn","image","tokenTypeIdx","startLine","startColumn","tokenVector","tokenToAdd","phaseDesc","phaseImpl","indent","traceMethod","tokenLabel","hasTokenLabel","tokenName","PARENT","CATEGORIES","LABEL","GROUP","PUSH_MODE","POP_MODE","LONGER_ALT","LINE_BREAKS","START_CHARS_HINT","createToken","createTokenInternal","EOF","createTokenInstance","endOffset","endLine","endColumn","tokenMatcher","AbstractProduction","_definition","visitor","NonTerminal","definition","Rule","Alternative","Option","RepetitionMandatory","RepetitionMandatoryWithSeparator","Repetition","RepetitionWithSeparator","Alternation","Terminal","serializeGrammar","topRules","serializeProduction","convertDefinition","serializedTerminal","RestWalker","prevRest","subProd","currRest","terminal","refProd","flatProd","fullOrRest","optionProd","atLeastOneProd","fullAtLeastOneRest","atLeastOneSepProd","fullAtLeastOneSepRest","restForRepetitionWithSeparator","manyProd","fullManyRest","manySepProd","fullManySepRest","orProd","alt","prodWrapper","repSepProd","repSepRest","fullRepSepRest","GAstVisitor","nodeAny","isSequenceProd","isOptionalProd","alreadyVisited","isDirectlyOptional","isBranchingProd","getProductionDslName","DslMethodsCollectorVisitor","subrule","option","manySep","atLeastOne","atLeastOneSep","many","or","collectorVisitor","collectMethods","rule","dslMethods","firstForTerminal","firstForSequence","firstForBranching","firstSet","seq","nextSubProdIdx","hasInnerProdsRemaining","currSubProd","isLastInnerProdOptional","allAlternativesFirsts","innerProd","IN","ResyncFollowsWalker","topProd","followName","buildBetweenProdsFollowPrefix","fullRest","restProd","t_in_topProd_follows","computeAllProdsFollows","topProductions","reSyncFollows","currRefsFollow","occurenceInParent","defaultParserErrorProvider","hasLabel","expectedMsg","firstRedundant","expectedPathsPerAlt","customUserDescription","errPrefix","actualText","errSuffix","allLookAheadPaths","currAltPaths","nextValidTokenSequences","currPath","currTokenType","nextValidSequenceItems","itemMsg","calculatedDescription","expectedIterationPaths","defaultGrammarResolverErrorProvider","topLevelRule","undefinedRule","defaultGrammarValidatorErrorProvider","duplicateProds","getExtraProductionArgument","topLevelName","duplicateProd","dslName","extraArgument","hasExplicitIndex","errMsg","pathMsg","currTok","occurrence","currtok","currMessage","ruleName","pathNames","utils.map","currRule","leftRecursivePath","resolveGrammar","topLevels","errMsgProvider","refResolver","GastRefResolverVisitor","nameToTopRule","ParserDefinitionErrorType","AbstractNextPossibleTokensWalker","NextAfterTokenWalker","AbstractNextTerminalAfterProductionWalker","topRule","NextTerminalAfterManyWalker","firstAfterMany","_first","NextTerminalAfterManySepWalker","firstAfterManySep","NextTerminalAfterAtLeastOneWalker","firstAfterAtLeastOne","NextTerminalAfterAtLeastOneSepWalker","atleastOneSepProd","firstAfterfirstAfterAtLeastOneSep","possiblePathsFrom","targetDef","maxLength","remainingPathWith","nextDef","getAlternativesForProd","alternatives","newDef","currAlt","nextPossibleTokensAfter","initialDef","tokMatcher","maxLookAhead","EXIT_NON_TERMINAL","EXIT_NON_TERMINAL_ARR","EXIT_ALTERNATIVE","foundCompletePath","tokenVectorLength","minimalAlternativesIndex","possiblePaths","currDef","currRuleStack","currOccurrenceStack","nextPath","nextIdx","actualToken","newRuleStack","newOccurrenceStack","nextPathWithout","nextPathWith","secondIteration","separatorGast","nthRepetition","currAltPath","expandTopLevelRule","newCurrOccurrenceStack","PROD_TYPE","getProdType","buildLookaheadFuncForOr","ruleGrammar","maxLookahead","hasPredicates","dynamicTokensEnabled","laFuncBuilder","lookAheadPaths","getLookaheadPathsForOr","areTokenCategoriesNotUsed","buildLookaheadFuncForOptionalProd","prodType","lookaheadBuilder","getLookaheadPathsForOptionalProd","buildAlternativesLookAheadFunc","numOfAlts","areAllOneTokenLookahead","orAlts","predicates","currNumOfPaths","currPredicate","currPathLength","nextToken","singleTokenAlts","choiceToAlt_1","currExtendingType","buildSingleAlternativeLookaheadFunction","numOfPaths","singleTokensTypes","expectedTokenType","expectedTokenUniqueKey_1","choiceToAlt_2","RestDefinitionFinderWalker","targetOccurrence","targetProdType","expectedProdType","InsideDefinitionFinderVisitor","targetRef","expectedProdName","initializeArrayOfArrays","pathToHashKeys","longerKeys","currShorterKey","categoriesKeySuffix","isUniquePrefixHash","altKnownPathsKeys","searchPathKeys","currAltIdx","otherAltKnownPathsKeys","searchIdx","searchKey","lookAheadSequenceFromAlternatives","altsDefs","partialAlts","finalResult","altsHashes","dict","newData","pathLength","currDataset","_loop_1","altIdx","currAltPathsAndSuffixes","currPathIdx","currPathPrefix","suffixDef","prefixKeys","isUnique","currAltResult","containsPath","newPartialPathsAndSuffixes","insideDefVisitor","insideDef","afterDefWalker","afterDef","insideFlat","AlternativeGAST","afterFlat","alternative","searchPath","compareOtherPath","otherPath","searchTok","otherTok","matchingTokens","isStrictPrefixOfPath","other","otherTokType","singleAltPaths","singlePath","validateGrammar","globalMaxLookahead","grammarName","duplicateErrors","currTopLevel","validateDuplicateProductions","leftRecursionErrors","currTopRule","validateNoLeftRecursion","emptyAltErrors","ambiguousAltsErrors","emptyRepetitionErrors","validateEmptyOrAlternative","validateAmbiguousAlternationAlternatives","validateSomeNonEmptyLookaheadPath","termsNamespaceConflictErrors","checkTerminalAndNoneTerminalsNameSpace","tooManyAltsErrors","curRule","validateTooManyAlts","duplicateRulesError","validateRuleDoesNotAlreadyExist","utils.flatten","OccurrenceValidationCollector","allRuleProductions","productionGroups","utils.groupBy","identifyProductionForDuplicates","duplicates","utils.pick","currGroup","utils.values","currDuplicates","firstProd","utils.first","defError","allRules","className","occurrences","validateRuleIsOverridden","definedRulesNames","utils.contains","nextNonTerminals","getFirstNoneTerminal","utils.isEmpty","foundLeftRecursion","validNextSteps","utils.difference","errorsFromNextSteps","currRefRule","utils.cloneArr","currSubDef","isFirstOptional","hasMore","rest","utils.drop","OrCollector","orCollector","ors","utils.reduce","currOr","exceptLast","utils.dropRight","currErrors","currAlternative","possibleFirstInAlt","utils.compact","currOccurrence","actualMaxLookahead","altsAmbiguityErrors","checkAlternativesAmbiguities","altsPrefixAmbiguityErrors","checkPrefixAlternativesAmbiguities","RepetionCollector","topLevelRules","currProd","paths","pathsInsideProduction","alternation","foundAmbiguousPaths","identicalAmbiguities","altsCurrPathAppearsIn","currOtherAlt","currOtherAltIdx","currAmbDescriptor","ambgIndices","pathsAndIndices","currPathsAndIdx","currPathAndIdx","alternativeGast","targetIdx","targetPath","prefixAmbiguitiesPathsAndIndices","searchPathAndIdx","currPathPrefixErrors","currAmbPathAndIdx","tokenNames","currToken","currRuleName","topRulesTable","orgResolveGrammar","orgValidateGrammar","assignOccurrenceIndices","methodsCollector","methods","currMethod","arrIdx","MISMATCHED_TOKEN_EXCEPTION","NO_VIABLE_ALT_EXCEPTION","EARLY_EXIT_EXCEPTION","NOT_ALL_INPUT_PARSED_EXCEPTION","RECOGNITION_EXCEPTION_NAMES","isRecognitionException","RecognitionException","_newTarget","MismatchedTokenException","previousToken","NoViableAltException","NotAllInputParsedException","EarlyExitException","EOF_FOLLOW_KEY","IN_RULE_RECOVERY_EXCEPTION","InRuleRecoveryException","Recoverable","DEFAULT_PARSER_CONFIG","attemptInRepetitionRecovery","tokToInsert","grammarRule","grammarRuleArgs","lookAheadFunc","expectedTokType","reSyncTokType","savedLexerState","resyncedTokens","passedResyncPoint","nextTokenWithoutResync","generateErrorMessage","expectTokAfterLastMatch","nextTokIdx","notStuck","tokIdxInRule","grammarPath","follows","nextTok","expectedToken","mismatchedTok","isMisMatchedTokInFollows","possibleFollowsTokType","isNextTokenWhatIsExpected","followKey","currentRuleReSyncSet","allPossibleReSyncTokTypes","nextTokenType","currRuleShortName","currRuleIdx","prevRuleShortName","explicitRuleStack","explicitOccurrenceStack","followStack","resyncTokens","prodFunc","lookaheadFunc","dslMethodIdx","prodOccurrence","nextToksWalker","pathRuleStack","pathOccurrenceStack","currShortName","firstAfterRepInfo","walker","isEndOfRule","BITS_FOR_METHOD_TYPE","BITS_FOR_OCCURRENCE_IDX","OR_IDX","OPTION_IDX","MANY_IDX","AT_LEAST_ONE_IDX","MANY_SEP_IDX","AT_LEAST_ONE_SEP_IDX","getKeyForAutomaticLookahead","ruleIdx","LooksAhead","rules","repetition","repetitionMandatory","repetitionMandatoryWithSeparator","repetitionWithSeparator","prodIdx","laFunc","prodKey","prodMaxLookahead","dslMethodName","setNodeLocationOnlyOffset","currNodeLocation","newLocationInfo","setNodeLocationFull","addTerminalToCst","tokenTypeName","addNoneTerminalToCst","ruleResult","classNameFromInstance","instance","NAME","existingNameProp","defineNameProp","nameValue","namePropDescriptor","defaultVisit","childrenNames","childrenNamesLength","currChildName","currChildArray","currChildArrayLength","currChild","createBaseSemanticVisitorConstructor","ruleNames","derivedConstructor","semanticProto","cstNode","semanticDefinitionErrors","validateVisitor","errorMessages","currDefError","createBaseVisitorConstructorWithDefaults","baseConstructor","withDefaultsProto","CstVisitorDefinitionError","visitorInstance","missingErrors","validateMissingCstMethods","redundantErrors","validateRedundantMethods","VALID_PROP_NAMES","TreeBuilder","fullRuleName","shortName","ruleCstNode","prevToken","loc","consumedToken","rootCst","ruleCstResult","preCstNode","newBaseCstVisitorConstructor","newConstructor","ruleStack","occurrenceStack","LexerAdapter","newInput","END_OF_FILE","soughtIdx","RecognizerApi","impl","ruleToCall","actionORMethodDef","altsOrOpts","implementation","DEFAULT_RULE_CONFIG","ruleImplementation","ruleErrors","orgState","RecognizerEngine","tokenVocabulary","uniqueTokens","noTokenCategoriesUsed","tokenConstructor","resyncEnabled","recoveryValueFunc","invokeRuleWithTry","cst","wrappedGrammarRule","idxInCallingRule","ruleNamePropName","resyncEnabledConfig","isFirstInvokedRule","reSyncEnabled","recogError","partialCstResult","orgLookaheadFunction_1","laKey","orgLookaheadFunction_2","separator","firstIterationLookaheadFunc","separatorLookAheadFunc","lookaheadFunction","orgLookaheadFunction_3","firstIterationLaFunc","nextTerminalAfterWalker","beforeIteration","afterIteration","altIdxToTake","chosenAlternative","firstRedundantTok","eFromConsumption","eFromInRuleRecovery","savedErrors","savedRuleStack","fullName","ErrorHandler","newErrors","userDefinedErrMsg","lookAheadPathsPerAlternative","insideProdPaths","actualTokens","errMsgTypes","ContentAssist","startRuleName","precedingInput","startRuleGast","topRuleName","gastProductions","topProduction","nextPossibleTokenTypes","RECORDING_NULL_OBJECT","HANDLE_SEPARATOR","MAX_METHOD_IDX","RFT","RECORDING_PHASE_TOKEN","RECORDING_PHASE_CSTNODE","GastRecorder","arg1","arg2","def","newTopLevelRule","originalError","recordProd","recordOrProd","assertMethodIdxIsValid","getIdxSuffix","prevProd","newNoneTerminal","prodConstructor","mainProdArg","handleSep","grammarAction","newProd","hasOptions","newOrProd","currAltFlat","PerformanceTracer","userTraceInitPerf","traceIsNumber","EMPTY_ALT","Parser","that","parserInstance","defErrorsMsgs","wrappedRule","originalGrammarAction","recordedRuleGast","resolverErrors","validationErrors","allFollows","CstParser","configClone","EmbeddedActionsParser","createSyntaxDiagramsCode","grammar","_c","resourceBase","_d","css","header","cssHtml","scripts","diagramsDiv","serializedGrammar","initLogic","NL","genUmdModule","genClass","genWrapperFunction","genAllRules","rulesText","genRule","genDefinition","genTerminal","genNonTerminal","genAlternation","altDef","genSingleAlt","genProd","genDSLRule","genDefFunction","spaces","generateParserFactory","wrapperText","constructorWrapper","generateParserModule","clearCache","WhiteSpace","String","SingleQuotedString","SheetQuoted","Function","FormulaErrorT","RefError","Name","Sheet","Number","Boolean","At","Comma","Colon","Semicolon","OpenParen","CloseParen","OpenSquareParen","CloseSquareParen","OpenCurlyParen","CloseCurlyParen","QuoteS","MulOp","PlusOp","DivOp","MinOp","ConcatOp","ExOp","PercentOp","GtOp","EqOp","LtOp","NeqOp","GteOp","LteOp","allTokens","SelectLexer","lexing","inputText","lexingResult","lexer","ExcelRefFunction","ExcelConditionalRefFunction","Parsing","utils","$","infixes","ops","formula","currentRow","sep","constant","bool","sheetName","referenceItem","address","parsing","Operators","MAX_ROW","MAX_COLUMN","Utils$3","cellAddress","col1","col2","row1","row2","val1","val2","maxRow","maxCol","minRow","minCol","sheet","refMaxRow","refMinRow","refMaxCol","refMinCol","string","Utils","EngFunctions","require$$5","InformationFunctions","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","FormulaParser$2","isTest","valueOrRef","nullValue","awaitedArgs","supported","fun","allowReturnArray","hooks","FormulaParser","Utils$1","formatChevrotainError","DepParser$1","ignoreError","DepParser","fastFormulaParser","cellValue","Spreadsheet","cachedCols","currentWidth","cacheCol","cachedRows","currentHeight","cacheRow","content","fromRow","toRow","fromCol","toCol","formattedData","view","cellsArray"],"mappings":"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","x_google_ignoreList":[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88]} \ No newline at end of file +{"version":3,"file":"main.js","sources":["../src/modules/events.ts","../src/modules/renderBox.ts","../src/components/editor.ts","../src/utils/position.ts","../src/components/scroller.ts","../src/modules/cell.ts","../src/components/sheet.ts","../src/components/table.ts","../src/components/toolbar.ts","../src/modules/config.ts","../src/modules/selection.ts","../src/modules/styles.ts","../src/modules/viewport.ts","../src/modules/column.ts","../src/modules/row.ts","../src/utils/createData.ts","../src/modules/cache.ts","../src/components/columnsBar.ts","../src/components/rowsBar.ts","../src/modules/clipboard.ts","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/type/collection.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/helpers.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/error.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/ssf/ssf.js","../node_modules/.pnpm/bahttext@1.1.0/node_modules/bahttext/src/index.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/text.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/operators.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/math.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/trigonometry.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/logical.js","../node_modules/.pnpm/bessel@1.0.2/node_modules/bessel/bessel.js","../node_modules/.pnpm/jstat@1.9.6/node_modules/jstat/dist/jstat.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/engineering.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/reference.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/information.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/distribution.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/statistical.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/date.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/formulas/functions/web.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/version.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/utils/utils.js","../node_modules/.pnpm/regexp-to-ast@0.5.0/node_modules/regexp-to-ast/lib/regexp-to-ast.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/reg_exp_parser.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/reg_exp.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/lexer.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/tokens.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/lexer_errors_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/lexer_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/scan/tokens_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/rest.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_visitor_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/first.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/constants.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/follow.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/errors_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/resolver.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/interpreter.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/lookahead.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/checks.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/gast/gast_resolver_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/exceptions_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recoverable.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/grammar/keys.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/looksahead.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/cst/cst.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/lang/lang_extensions.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/cst/cst_visitor.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/tree_builder.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/lexer_adapter.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_api.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/recognizer_engine.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/error_handler.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/context_assist.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/gast_recorder.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/traits/perf_tracer.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/parse/parser/parser.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/diagrams/render_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/generate/generate.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/generate/generate_public.js","../node_modules/.pnpm/chevrotain@7.1.2/node_modules/chevrotain/lib_esm/src/api.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/lexing.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/parsing.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/utils.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/hooks.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/dependency/utils.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/grammar/dependency/hooks.js","../node_modules/.pnpm/fast-formula-parser@1.0.19/node_modules/fast-formula-parser/index.js","../src/modules/formulaParser.ts","../src/main.ts"],"sourcesContent":["import { Selection } from \"../main\";\nexport var EventTypes;\n(function (EventTypes) {\n EventTypes[\"CELL_CLICK\"] = \"CELL_CLICK\";\n EventTypes[\"SELECTION_CHANGE\"] = \"CHANGE_SELECTION\";\n EventTypes[\"CELL_CHANGE\"] = \"CELL_CHANGE\";\n EventTypes[\"COPY_CELLS\"] = \"COPY_CELLS\";\n})(EventTypes || (EventTypes = {}));\nexport class Events {\n root;\n constructor(root) {\n this.root = root;\n }\n async dispatch(action) {\n switch (action.type) {\n case EventTypes.CELL_CLICK: {\n const { event, scroller } = action;\n //\n //* Here may be side effects\n //\n this.cellClick(event, scroller);\n break;\n }\n case EventTypes.SELECTION_CHANGE: {\n const { selection, enableCallback } = action;\n //\n //* Here may be side effects\n //\n this.changeSelection(selection, enableCallback);\n break;\n }\n case EventTypes.CELL_CHANGE: {\n const { cell, enableCallback } = action;\n if (cell.value.substring(0, 1).startsWith('=')) {\n try {\n await cell.evalFormula(this.root.formulaParser);\n cell.displayValue = cell.resultValue;\n this.root.renderCell(cell.position.row, cell.position.column);\n this.changeCellValues(cell, enableCallback);\n return;\n }\n catch (err) {\n console.error(err);\n }\n }\n this.root.renderCell(cell.position.row, cell.position.column);\n this.changeCellValues(cell, enableCallback);\n break;\n }\n case EventTypes.COPY_CELLS: {\n const { data, dataAsString, range } = action;\n this.copy(range, data, dataAsString);\n break;\n }\n default: {\n break;\n }\n }\n }\n cellClick = (event, scroller) => {\n if (event.button !== 0)\n return; // Left mouse button\n const { offsetX, offsetY } = event;\n const clickedCell = this.root.getCellByCoords(offsetX, offsetY);\n const cell = this.root.getCell(clickedCell);\n const selection = new Selection();\n selection.selectedCell = clickedCell;\n selection.selectedRange = {\n from: clickedCell,\n to: clickedCell,\n };\n scroller.setSelectingMode(true);\n this.changeSelection(selection, true);\n this.root.config.onCellClick?.(event, cell);\n };\n changeSelection = (selection, enableCallback = false) => {\n this.root.selection = selection;\n if (enableCallback)\n this.root.config.onSelectonChange?.(selection);\n this.root.renderSheet();\n this.root.renderColumnsBar();\n this.root.renderRowsBar();\n };\n changeCellValues(cell, enableCallback = true) {\n if (enableCallback)\n this.root.config.onCellChange?.(cell);\n }\n copy = (range, data, dataAsString) => {\n this.root.config.onCopy?.(range, data, dataAsString);\n };\n}\n","export class RenderBox {\n x;\n y;\n width;\n height;\n constructor(config, cellPosition) {\n this.x = this.getXCoord(cellPosition.column, config);\n this.y = this.getYCoord(cellPosition.row, config);\n this.width = config.columns[cellPosition.column].width;\n this.height = config.rows[cellPosition.row].height;\n }\n getXCoord(column, config) {\n let x = 0;\n for (let i = 0; i < column; i++) {\n x += config.columns[i].width;\n }\n return x;\n }\n getYCoord(row, config) {\n let y = 0;\n for (let i = 0; i < row; i++) {\n y += config.rows[i].height;\n }\n return y;\n }\n}\n","import { CSS_PREFIX } from \"../main\";\nimport { EventTypes } from \"../modules/events\";\nimport { RenderBox } from \"../modules/renderBox\";\nexport class Editor {\n element;\n root;\n constructor(root) {\n this.root = root;\n const element = document.createElement(\"input\");\n element.classList.add(CSS_PREFIX + \"editor\");\n this.element = element;\n this.hide();\n }\n hide() {\n this.element.style.display = \"none\";\n this.element.classList.add(\"hide\");\n this.element.blur();\n window.removeEventListener(\"click\", this.handleClickOutside);\n this.element.removeEventListener(\"keydown\", this.handleKeydown);\n this.root.focusTable();\n }\n show(position, initialString) {\n const { height, width, x, y } = new RenderBox(this.root.config, position);\n const cell = this.root.getCell(position);\n this.element.classList.remove(\"hide\");\n this.element.style.top =\n y - this.root.viewport.top + this.root.columnsBarHeight + \"px\";\n this.element.style.left =\n x - this.root.viewport.left + this.root.rowsBarWidth + \"px\";\n this.element.style.width = width + \"px\";\n this.element.style.height = height + \"px\";\n this.element.style.display = \"block\";\n window.addEventListener(\"click\", this.handleClickOutside);\n this.element.addEventListener(\"keydown\", this.handleKeydown);\n this.element.value = initialString ? initialString : cell.value;\n this.element.focus();\n if (!initialString)\n this.element.select();\n }\n handleKeydown = (event) => {\n const { key } = event;\n switch (key) {\n case \"Escape\": {\n this.hide();\n break;\n }\n case \"Enter\": {\n if (!this.root.selection.selectedCell)\n return;\n this.root.changeCellValues(this.root.selection.selectedCell, {\n value: this.element.value,\n displayValue: this.element.value,\n });\n this.root.events.dispatch({\n type: EventTypes.CELL_CHANGE,\n cell: this.root.getCell(this.root.selection.selectedCell),\n });\n this.hide();\n this.root.renderSelection();\n }\n }\n };\n handleClickOutside = (event) => {\n const target = event.target;\n if (!this.element.contains(target)) {\n this.hide();\n }\n };\n}\n","export function checkEqualRanges(range1, range2) {\n const equalRows = range1.from.row === range2.to.row;\n const equalColumns = range1.from.column === range2.to.column;\n return equalRows && equalColumns;\n}\nexport function checkEqualCellSelections(selection1, selection2) {\n return (selection1.column === selection2.column && selection1.row === selection2.row);\n}\n","import { CSS_PREFIX, Selection } from \"../main\";\nimport { EventTypes } from \"../modules/events\";\nimport { checkEqualCellSelections } from \"../utils/position\";\nexport class Scroller {\n element;\n verticalScroller;\n horizontalScroller;\n root;\n isSelecting = false;\n constructor(root) {\n this.root = root;\n const { horizontalScroller, scroller, verticalScroller } = this.buildComponent();\n this.element = scroller;\n this.verticalScroller = verticalScroller;\n this.horizontalScroller = horizontalScroller;\n this.element.style.height = this.root.config.view.height + \"px\";\n this.element.style.width = this.root.config.view.width + \"px\";\n this.element.style.top = this.root.columnsBarHeight + \"px\";\n this.element.style.left = this.root.rowsBarWidth + \"px\";\n this.element.tabIndex = -1;\n this.updateScrollerSize(); //* Init size set\n this.element.addEventListener(\"scroll\", this.handleScroll);\n this.element.addEventListener(\"mousedown\", this.handleClick);\n this.element.addEventListener(\"mousemove\", this.handleMouseMove);\n this.element.addEventListener(\"mouseup\", this.handleMouseUp);\n this.element.addEventListener(\"dblclick\", this.handleDoubleClick);\n this.element.addEventListener(\"keydown\", this.handleKeydown);\n this.element.addEventListener(\"paste\", (event) => {\n if (!this.root.selection.selectedCell)\n return;\n this.root.clipboard.paste(this.root, this.root.selection.selectedCell, event);\n });\n }\n setSelectingMode(mode) {\n this.isSelecting = mode;\n }\n handleMouseMove = (event) => {\n if (!this.isSelecting)\n return;\n const { offsetX, offsetY } = event;\n const lastSelectedCell = this.root.getCellByCoords(offsetX, offsetY);\n let isRangeChanged = false;\n if (this.root.selection.selectedRange) {\n isRangeChanged = !checkEqualCellSelections(this.root.selection.selectedRange.to, lastSelectedCell);\n if (isRangeChanged) {\n this.root.selection.selectedRange.to = lastSelectedCell;\n this.root.events.dispatch({\n type: EventTypes.SELECTION_CHANGE,\n selection: this.root.selection,\n enableCallback: true,\n });\n }\n }\n };\n handleMouseUp = () => {\n this.isSelecting = false;\n const newSelection = { ...this.root.selection };\n if (this.root.selection.selectedRange) {\n if (checkEqualCellSelections(this.root.selection.selectedRange.from, this.root.selection.selectedRange.to)) {\n newSelection.selectedRange = null;\n this.root.events.dispatch({\n type: EventTypes.SELECTION_CHANGE,\n selection: newSelection,\n enableCallback: false,\n });\n }\n }\n this.root.renderSheet();\n this.root.renderColumnsBar();\n this.root.renderRowsBar();\n };\n handleDoubleClick = (event) => {\n event.preventDefault();\n const position = this.root.getCellByCoords(event.offsetX, event.offsetY);\n this.root.showEditor(position);\n };\n handleKeydown = (event) => {\n //* Navigation\n if ([\"ArrowLeft\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n event.preventDefault();\n this.root.selection.selectedRange = null;\n switch (event.key) {\n case \"ArrowLeft\": {\n if (this.root.selection.selectedCell &&\n this.root.selection.selectedCell.column > 0) {\n this.root.selection.selectedCell.column -= 1;\n // this.root.renderSheet();\n }\n break;\n }\n case \"ArrowRight\": {\n if (this.root.selection.selectedCell &&\n this.root.selection.selectedCell.column <\n this.root.config.columns.length - 1) {\n this.root.selection.selectedCell.column += 1;\n // this.root.renderSheet();\n }\n break;\n }\n case \"ArrowUp\": {\n if (this.root.selection.selectedCell &&\n this.root.selection.selectedCell.row > 0) {\n this.root.selection.selectedCell.row -= 1;\n // this.root.renderSheet();\n }\n break;\n }\n case \"ArrowDown\": {\n if (this.root.selection.selectedCell &&\n this.root.selection.selectedCell.row <\n this.root.config.rows.length - 1) {\n this.root.selection.selectedCell.row += 1;\n // this.root.renderSheet();\n }\n break;\n }\n }\n this.root.events.dispatch({\n type: EventTypes.SELECTION_CHANGE,\n selection: this.root.selection,\n enableCallback: true,\n });\n }\n //* Start typings\n const keysRegex = /^([a-z]|[а-я]|[0-9]|=)$/;\n if (!event.metaKey && !event.ctrlKey) {\n //* Prevent handle shortcutrs\n const isPressedLetterKey = keysRegex.test(event.key.toLowerCase());\n if (event.key === \"F2\" || isPressedLetterKey) {\n //* English and Russian keyboard. Or F2 button\n event.preventDefault();\n if (!this.root.selection.selectedCell)\n return;\n this.root.showEditor(this.root.selection.selectedCell, isPressedLetterKey ? event.key : undefined);\n }\n }\n if (event.key === \"Delete\") {\n event.preventDefault();\n this.root.deleteSelectedCellsValues();\n this.root.renderSheet();\n }\n if (event.metaKey || event.ctrlKey) {\n if (event.code === \"KeyC\") {\n let cells = undefined;\n const selection = new Selection();\n if (this.root.selection.selectedRange) {\n const { from, to } = this.root.selection.selectedRange;\n selection.selectedRange = this.root.selection.selectedRange;\n const subArrByRows = this.root.data.slice(from.row, to.row + 1);\n const subArrByCols = subArrByRows.map((row) => {\n return row.slice(from.column, to.column + 1);\n });\n cells = [...subArrByCols];\n }\n else if (this.root.selection.selectedCell) {\n const { column, row } = this.root.selection.selectedCell;\n cells = [[this.root.data[row][column]]];\n selection.selectedRange = {\n from: this.root.selection.selectedCell,\n to: this.root.selection.selectedCell,\n };\n }\n else {\n return;\n }\n this.root.clipboard.copy(cells, selection.selectedRange);\n return;\n }\n if (event.code === \"KeyV\") {\n // if (!this.root.selection.selectedCell) return;\n // this.root.clipboard.paste(this.root, this.root.selection.selectedCell);\n }\n }\n };\n handleClick = (event) => {\n this.root.events.dispatch({\n type: EventTypes.CELL_CLICK,\n event,\n scroller: this,\n });\n };\n handleScroll = () => {\n const rect = this.getViewportBoundlingRect();\n this.root.viewport.updateValues(rect);\n this.root.renderSheet();\n this.root.renderColumnsBar();\n this.root.renderRowsBar();\n };\n getViewportBoundlingRect() {\n const { scrollTop, scrollLeft } = this.element;\n const { height, width } = this.element.getBoundingClientRect();\n const bottom = scrollTop + height;\n const right = scrollLeft + width;\n return {\n top: scrollTop,\n left: scrollLeft,\n bottom,\n right,\n };\n }\n buildComponent() {\n const scroller = document.createElement(\"div\");\n const verticalScroller = document.createElement(\"div\");\n const horizontalScroller = document.createElement(\"div\");\n const groupScrollers = document.createElement(\"div\");\n const stack = document.createElement(\"div\");\n verticalScroller.style.width = \"0px\";\n verticalScroller.style.pointerEvents = \"none\";\n horizontalScroller.style.pointerEvents = \"none\";\n groupScrollers.style.display = \"flex\";\n stack.appendChild(verticalScroller);\n stack.appendChild(horizontalScroller);\n groupScrollers.appendChild(stack);\n this.verticalScroller = verticalScroller;\n this.horizontalScroller = horizontalScroller;\n scroller.appendChild(groupScrollers);\n scroller.contentEditable = \"false\";\n scroller.classList.add(CSS_PREFIX + \"scroller\");\n return { scroller, verticalScroller, horizontalScroller };\n }\n getActualHeight() {\n return this.root.config.rows.reduce((acc, curr) => {\n acc += curr.height;\n return acc;\n }, 0);\n }\n getActualWidth() {\n return this.root.config.columns.reduce((acc, curr) => {\n acc += curr.width;\n return acc;\n }, 0);\n }\n updateScrollerSize() {\n const totalHeight = this.getActualHeight();\n const totalWidth = this.getActualWidth();\n this.setScrollerHeight(totalHeight);\n this.setScrollerWidth(totalWidth);\n }\n setScrollerHeight(height) {\n this.verticalScroller.style.height = height + \"px\";\n }\n setScrollerWidth(width) {\n this.horizontalScroller.style.width = width + \"px\";\n }\n}\n","import { RenderBox } from \"./renderBox\";\nexport class CellStyles {\n fontSize = 16;\n fontColor = \"black\";\n background = \"white\";\n borderColor = \"black\";\n selectedBackground = \"#4287f5\";\n selectedFontColor = \"#ffffff\";\n constructor(props) {\n if (props) {\n Object.assign(this, props); // Override default styles\n }\n }\n}\nexport class Position {\n row;\n column;\n constructor(row, column) {\n this.row = row;\n this.column = column;\n }\n}\nexport class SerializableCell {\n value;\n displayValue;\n resultValue;\n position;\n style;\n constructor(props) {\n this.value = props.value;\n this.displayValue = props.displayValue;\n this.resultValue = props.resultValue;\n this.position = props.position;\n this.style = props.style;\n }\n}\nexport class Cell {\n /** True value (data) */\n value;\n /** Value to render */\n displayValue;\n /** This refers to the values that were obtained by calculations, for example, after calculating the formula */\n resultValue;\n position;\n style = null;\n cellsDependsOnThisCell = [];\n dependedFromCells = [];\n constructor(props) {\n this.value = props.value;\n this.displayValue = props.displayValue;\n this.resultValue = props.resultValue;\n this.position = props.position;\n this.style = props.style;\n }\n getSerializableCell() {\n const cell = new SerializableCell({\n displayValue: this.displayValue,\n position: this.position,\n resultValue: this.resultValue,\n style: this.style,\n value: this.value,\n });\n return cell;\n }\n changeStyles(styles) {\n this.style = styles;\n }\n changeValues(values) {\n Object.assign(this, values);\n }\n evalFormula(parser) {\n if (this.value.substring(0, 1) !== '=')\n return;\n this.resultValue = parser.parser.parse(this.value.slice(1), {\n col: this.position.column,\n row: this.position.row\n });\n }\n // private isCellInRange(root: Spreadsheet): boolean {\n // const { column, row } = this.position;\n // const { selectedRange } = root.selection;\n // if (!selectedRange) return false;\n // const isCellInRow =\n // row >= Math.min(selectedRange.from.row, selectedRange.to.row) &&\n // row <= Math.max(selectedRange.to.row, selectedRange.from.row);\n // const isCellInCol =\n // column >= Math.min(selectedRange.from.column, selectedRange.to.column) &&\n // column <= Math.max(selectedRange.to.column, selectedRange.from.column);\n // return isCellInCol && isCellInRow;\n // }\n render(root) {\n const renderBox = new RenderBox(root.config, this.position);\n let { x, y } = renderBox;\n const { height, width } = renderBox;\n const { ctx } = root;\n // const isCellSelected =\n // root.selection.selectedCell?.row === this.position.row &&\n // root.selection.selectedCell.column === this.position.column;\n // const isCellInRange = this.isCellInRange(root);\n y -= root.viewport.top;\n x -= root.viewport.left;\n const styles = this.style ?? root.styles.cells;\n ctx.clearRect(x, y, width, height);\n ctx.fillStyle = styles.background;\n ctx.strokeStyle = \"black\";\n ctx.fillRect(x, y, width - 1, height - 1);\n ctx.strokeRect(x, y, width, height);\n ctx.fillStyle = styles.fontColor;\n ctx.textAlign = \"left\";\n ctx.font = `${styles.fontSize}px Arial`;\n ctx.textBaseline = \"middle\";\n ctx.fillText(this.displayValue, x + 2, y + height / 2);\n }\n}\n","import { CSS_PREFIX, RenderBox } from \"../main\";\nimport { Position } from \"../modules/cell\";\n/**\n * Display (CANVAS) element where cells render\n */\nexport class Sheet {\n element;\n ctx;\n root;\n constructor(root) {\n this.root = root;\n const canvas = document.createElement(\"canvas\");\n canvas.classList.add(CSS_PREFIX + \"sheet\");\n //* Set up canvas sizes based on provided root config\n canvas.height = this.root.config.view.height;\n canvas.width = this.root.config.view.width;\n canvas.style.width = this.root.config.view.width + \"px\";\n canvas.style.height = this.root.config.view.height + \"px\";\n canvas.style.left = \"0px\";\n this.element = canvas;\n const ctx = this.element.getContext(\"2d\");\n if (!ctx)\n throw new Error(\"Enable hardware acceleration\");\n this.ctx = ctx;\n }\n getCellByCoords(x, y) {\n let row = 0;\n let height = 0;\n while (height <= y) {\n height += this.root.config.rows[row].height;\n if (height >= y)\n break;\n row++;\n }\n let col = 0;\n let width = 0;\n while (width <= x) {\n width += this.root.config.columns[col].width;\n if (width >= x)\n break;\n col++;\n }\n return new Position(row, col);\n }\n renderCell(position) {\n const { column, row } = position;\n this.root.data[row][column].render(this.root);\n }\n getSelectionRange() {\n const { selectedCell, selectedRange } = this.root.selection;\n if (!selectedCell && !selectedRange)\n return;\n if (selectedRange) {\n const startRow = Math.min(selectedRange.from.row, selectedRange.to.row);\n const startCol = Math.min(selectedRange.from.column, selectedRange.to.column);\n const lastRow = Math.max(selectedRange.from.row, selectedRange.to.row);\n const lastCol = Math.max(selectedRange.from.column, selectedRange.to.column);\n const startCellBox = new RenderBox(this.root.config, {\n row: startRow,\n column: startCol,\n });\n let width = 0;\n for (let col = startCol; col <= lastCol; col++) {\n width += this.root.config.columns[col].width;\n }\n let height = 0;\n for (let row = startRow; row <= lastRow; row++) {\n height += this.root.config.rows[row].height;\n }\n const x = startCellBox.x - this.root.viewport.left;\n const y = startCellBox.y - this.root.viewport.top;\n return { x, y, height, width };\n }\n if (!selectedRange && selectedCell) {\n const box = new RenderBox(this.root.config, selectedCell);\n box.x -= this.root.viewport.left;\n box.y -= this.root.viewport.top;\n return box;\n }\n }\n renderSelectionRange(x, y, width, height) {\n this.ctx.save();\n this.ctx.strokeStyle = \"#7da8ff\";\n this.ctx.lineWidth = 3;\n this.ctx.strokeRect(x, y, width, height);\n this.ctx.fillStyle = \"#7da8ff35\";\n this.ctx.fillRect(x, y, width, height);\n this.ctx.restore();\n }\n renderSelection() {\n const box = this.getSelectionRange();\n if (!box)\n return;\n const { height, width, x, y } = box;\n this.renderSelectionRange(x, y, width, height);\n }\n renderSheet() {\n const firstRowIdx = this.root.viewport.firstRow;\n const lastColIdx = this.root.viewport.lastCol + 3;\n const lastRowIdx = this.root.viewport.lastRow + 3;\n const firstColIdx = this.root.viewport.firstCol;\n for (let row = firstRowIdx; row <= lastRowIdx; row++) {\n for (let col = firstColIdx; col <= lastColIdx; col++) {\n if (!this.root.config.columns[col] || !this.root.config.rows[row])\n break; //* Prevent read undefined\n this.renderCell({ column: col, row });\n }\n }\n this.renderSelection();\n }\n}\n","import { CSS_PREFIX } from \"../main\";\n/** Base (root) component */\nexport class Table {\n element;\n root;\n constructor(root) {\n this.root = root;\n const container = document.createElement(\"div\");\n container.classList.add(CSS_PREFIX + \"spreadsheet_container\");\n this.element = container;\n this.changeElementSizes(this.root.viewProps);\n }\n changeElementSizes(sizes) {\n const { height, width } = sizes;\n this.element.style.width = width + this.root.rowsBarWidth + \"px\";\n this.element.style.height = height + this.root.columnsBarHeight + \"px\";\n }\n}\n","import { CSS_PREFIX } from \"../main\";\nexport class Toolbar {\n element;\n root;\n height = 0;\n constructor(root) {\n this.root = root;\n const toolbarElement = document.createElement(\"div\");\n toolbarElement.classList.add(CSS_PREFIX + \"toolbar\");\n this.element = toolbarElement;\n }\n}\n","export class Config {\n rows;\n columns;\n view = {\n width: 800,\n height: 600,\n };\n onCellClick = null;\n onSelectonChange = null;\n onCellChange = null;\n onCopy;\n constructor(props) {\n this.columns = props.columns;\n this.rows = props.rows;\n this.view = props.view;\n this.onCellClick = props.onCellClick ?? null;\n this.onSelectonChange = props.onSelectionChange ?? null;\n this.onCellChange = props.onCellChange ?? null;\n this.onCopy = props.onCopy ?? null;\n }\n}\n","export class Selection {\n selectedCell = null;\n selectedRange = null;\n}\n","import { CellStyles } from \"./cell\";\nexport class Styles {\n cells;\n constructor() {\n this.cells = new CellStyles();\n }\n}\n","export class Viewport {\n root;\n top;\n left;\n right;\n bottom;\n firstRow;\n lastRow;\n firstCol;\n lastCol;\n constructor(root, props) {\n this.root = root;\n this.top = props.top;\n this.left = props.left;\n this.right = props.right;\n this.bottom = props.bottom;\n this.firstRow = this.getFirstRow();\n this.lastCol = this.getFirstRow(); //!Temp\n this.firstCol = this.getFirstRow(); //!Temp\n this.lastRow = this.getLastRow();\n this.updateValues({\n top: 0,\n left: 0,\n right: this.root.viewProps.width,\n bottom: this.root.viewProps.height,\n });\n }\n updateValues(props) {\n this.top = props.top;\n this.left = props.left;\n this.right = props.right;\n this.bottom = props.bottom;\n this.firstRow = this.getFirstRow();\n this.lastRow = this.getLastRow();\n this.firstCol = this.getFirstCol();\n this.lastCol = this.getLastCol();\n }\n /** Get index of first row in viewport */\n getFirstRow() {\n const rowIdx = this.root.cache.getRowByYCoord(this.top);\n return rowIdx;\n }\n getLastRow() {\n const rowIdx = this.root.cache.getRowByYCoord(this.bottom);\n return rowIdx;\n }\n getFirstCol() {\n const colIdx = this.root.cache.getColumnByXCoord(this.left);\n return colIdx;\n }\n getLastCol() {\n const colIdx = this.root.cache.getColumnByXCoord(this.right);\n return colIdx;\n }\n}\n","export class Column {\n width;\n title;\n constructor(props) {\n this.width = props.width;\n this.title = props.title;\n }\n}\n","export class Row {\n height;\n title;\n constructor(props) {\n this.height = props.height;\n this.title = props.title;\n }\n}\n","import { Cell } from \"../modules/cell\";\nimport { Column } from \"../modules/column\";\nimport { Config } from \"../modules/config\";\nimport { Row } from \"../modules/row\";\nexport function createSampleData(rows, columns, fillCellsByCoords = false) {\n const data = [];\n for (let row = 0; row <= rows; row++) {\n const innerRow = [];\n for (let col = 0; col <= columns; col++) {\n const value = fillCellsByCoords ? `${row}:${col}` : \"\";\n const cell = new Cell({\n displayValue: value,\n resultValue: value,\n value,\n position: {\n column: col,\n row: row,\n },\n style: null,\n });\n innerRow.push(cell);\n }\n data.push(innerRow);\n }\n return data;\n}\nexport function createSampleConfig(rows, columns) {\n const rowsArr = [];\n for (let i = 0; i <= rows; i++) {\n const rowItem = new Row({\n height: 40,\n title: String(i),\n });\n rowsArr.push(rowItem);\n }\n const colsArr = [];\n for (let i = 0; i <= columns; i++) {\n const colItem = new Column({\n title: String(i),\n width: 150,\n });\n colsArr.push(colItem);\n }\n const config = new Config({\n columns: colsArr,\n rows: rowsArr,\n view: {\n height: 600,\n width: 800,\n },\n });\n return config;\n}\nexport function makeSpreadsheetConfigAndData(rows, columns) {\n const data = createSampleData(rows, columns);\n const config = createSampleConfig(rows, columns);\n return { data, config };\n}\n","export class CachedColumn {\n xPos;\n colIdx;\n constructor(props) {\n this.xPos = props.xPos;\n this.colIdx = props.colIdx;\n }\n}\nexport class CachedRow {\n yPos;\n rowIdx;\n constructor(props) {\n this.yPos = props.yPos;\n this.rowIdx = props.rowIdx;\n }\n}\nexport class Cache {\n columns;\n rows;\n constructor(initial) {\n this.columns = initial.columns;\n this.rows = initial.rows;\n }\n getRowByYCoord(y) {\n let rowIdx = 0;\n for (let i = 0; i < this.rows.length; i++) {\n rowIdx = i;\n if (y <= this.rows[i].yPos) { //* Intersection detect\n break;\n }\n }\n return rowIdx;\n }\n getColumnByXCoord(x) {\n let colIdx = 0;\n for (let i = 0; i < this.columns.length; i++) {\n colIdx = i;\n if (x <= this.columns[i].xPos) { //* Intersection detect\n break;\n }\n }\n return colIdx;\n }\n}\n","import { RenderBox } from \"../main\";\nexport class ColumnsBar {\n element;\n root;\n height = 35;\n width;\n // private resizerWidth = 1;\n ctx;\n constructor(root) {\n this.root = root;\n this.element = this.createElement();\n const ctx = this.element.getContext(\"2d\");\n if (!ctx)\n throw new Error(\"Enable hardware acceleration\");\n this.ctx = ctx;\n this.width = this.root.viewProps.width;\n }\n createElement() {\n const element = document.createElement(\"canvas\");\n element.style.position = \"absolute\";\n element.style.height = this.height + \"px\";\n element.style.width = this.root.viewProps.width + \"px\";\n element.style.display = \"block\";\n element.style.borderLeft = \"1px solid black\";\n // element.style.boxSizing = 'border-box'\n element.width = this.root.viewProps.width;\n element.height = this.height;\n return element;\n }\n setElementPosition(top, left) {\n this.element.style.top = top + \"px\";\n this.element.style.left = left + \"px\";\n }\n isColumnSelected(column) {\n const { selectedCell, selectedRange } = this.root.selection;\n if (selectedCell && selectedCell.column === column)\n return true;\n if (selectedRange) {\n const inRange = column >=\n Math.min(selectedRange.from.column, selectedRange.to.column) &&\n column <= Math.max(selectedRange.from.column, selectedRange.to.column);\n return inRange;\n }\n return false;\n }\n // private getYCoordWithOffset(renderBox: RenderBox): number {\n // const {y} = renderBox\n // return y + this.root.toolbarHeight\n // }\n // private getXCoordWithOffset(renderBox: RenderBox): number {\n // const {x} = renderBox\n // return x\n // }\n renderText(column, renderBox) {\n const { width, x } = renderBox;\n this.ctx.fillStyle = \"black\";\n this.ctx.textAlign = \"center\";\n this.ctx.textBaseline = \"middle\";\n this.ctx.font = \"12px Arial\";\n this.ctx.fillText(this.root.config.columns[column].title, x + width / 2 - this.root.viewport.left, 0 + this.height / 2);\n }\n renderRect(column, renderBox) {\n const { width, x } = renderBox;\n const isColSelected = this.isColumnSelected(column);\n this.ctx.fillStyle = isColSelected ? \"#c7ebff\" : \"white\";\n this.ctx.strokeStyle = \"black\";\n this.ctx.lineWidth = 1;\n const specialX = x - this.root.viewport.left;\n this.ctx.fillRect(specialX - 1, 0, width, this.height);\n this.ctx.strokeRect(specialX - 1, 0, width, this.height);\n }\n renderSingleColumn(column) {\n const renderBox = new RenderBox(this.root.config, {\n row: 0,\n column: column,\n });\n this.renderRect(column, renderBox);\n this.renderText(column, renderBox);\n }\n renderBar() {\n const lastColIdx = this.root.viewport.lastCol + 3;\n const firstColIdx = this.root.viewport.firstCol;\n this.ctx.beginPath();\n this.ctx.strokeStyle = \"black\";\n this.ctx.lineWidth = 1;\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(0, this.height);\n this.ctx.closePath();\n this.ctx.stroke();\n for (let col = firstColIdx; col <= lastColIdx; col++) {\n if (!this.root.config.columns[col])\n break;\n this.renderSingleColumn(col);\n }\n }\n}\n","import { RenderBox } from \"../main\";\nexport class RowsBar {\n element;\n ctx;\n root;\n width = 35;\n height;\n resizerHeight = 1;\n constructor(root) {\n this.root = root;\n this.element = this.createElement();\n const ctx = this.element.getContext(\"2d\");\n if (!ctx)\n throw new Error(\"Enable hardware acceleration\");\n this.ctx = ctx;\n this.height = this.root.viewProps.height;\n }\n createElement() {\n const element = document.createElement(\"canvas\");\n element.style.position = \"absolute\";\n element.style.height = this.root.viewProps.height + \"px\";\n element.style.width = this.width + \"px\";\n element.style.display = \"block\";\n element.style.borderTop = \"1px solid black\";\n // element.style.boxSizing = 'border-box'\n element.width = this.width;\n element.height = this.root.viewProps.height;\n return element;\n }\n setElementPosition(top, left) {\n this.element.style.top = top + \"px\";\n this.element.style.left = left + \"px\";\n }\n isRowSelected(row) {\n const { selectedCell, selectedRange } = this.root.selection;\n if (selectedCell && selectedCell.row === row)\n return true;\n if (selectedRange) {\n const inRange = row >= Math.min(selectedRange.from.row, selectedRange.to.row) &&\n row <= Math.max(selectedRange.from.row, selectedRange.to.row);\n return inRange;\n }\n return false;\n }\n renderText(row, renderBox) {\n const { y, height } = renderBox;\n this.ctx.fillStyle = \"black\";\n this.ctx.textAlign = \"center\";\n this.ctx.textBaseline = \"middle\";\n this.ctx.font = \"12px Arial\";\n this.ctx.fillText(this.root.config.rows[row].title, this.width / 2, y - this.root.viewport.top + height / 2);\n }\n renderRect(column, renderBox) {\n const { y, height } = renderBox;\n const isRowSeleted = this.isRowSelected(column);\n this.ctx.fillStyle = isRowSeleted ? \"#c7ebff\" : \"white\";\n this.ctx.strokeStyle = \"black\";\n this.ctx.lineWidth = this.resizerHeight;\n const specialY = y - this.root.viewport.top;\n this.ctx.fillRect(0, specialY - 1, this.width, height);\n this.ctx.strokeRect(0, specialY - 1, this.width, height);\n }\n renderSingleRow(row) {\n const renderBox = new RenderBox(this.root.config, {\n column: 0,\n row: row,\n });\n this.renderRect(row, renderBox);\n this.renderText(row, renderBox);\n }\n renderBar() {\n const lastRowIdx = this.root.viewport.lastRow + 3;\n const firstRowIdx = this.root.viewport.firstRow;\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.strokeStyle = \"black\";\n this.ctx.lineWidth = 16;\n this.ctx.lineTo(35, 0);\n this.ctx.closePath();\n this.ctx.stroke();\n for (let row = firstRowIdx; row <= lastRowIdx; row++) {\n if (!this.root.config.rows[row])\n break;\n this.renderSingleRow(row);\n }\n }\n}\n","import { Cell, CellStyles } from \"./cell\";\nimport { EventTypes } from \"./events\";\nexport class Clipboard {\n saved = null;\n root;\n constructor(root) {\n this.root = root;\n }\n copy(data, range) {\n const mapedData = data\n .map((row) => {\n return row\n .map((item) => {\n return item.displayValue;\n })\n .join(\"\\t\");\n })\n .join(\"\\n\");\n this.saved = data;\n navigator.clipboard.writeText(mapedData);\n this.root.events.dispatch({\n type: EventTypes.COPY_CELLS,\n data,\n dataAsString: mapedData,\n range,\n });\n }\n paste(root, { column, row }, event) {\n if (!this.saved) {\n if (!event.clipboardData)\n return;\n const data = event.clipboardData.getData(\"text\");\n try {\n const arr = data.split(\"\\n\").map((item) => item.split(\"\\t\"));\n const arrayOfCells = arr.map((innerRow) => {\n return innerRow.map((item) => {\n const cellProps = {\n displayValue: item,\n position: {\n column,\n row,\n },\n resultValue: item,\n style: new CellStyles(),\n value: item,\n };\n return new Cell(cellProps);\n });\n });\n const rowsLength = arrayOfCells.length;\n const colsLength = arrayOfCells[0] ? arrayOfCells[0].length : 0;\n for (let i = 0; i < rowsLength; i++) {\n for (let j = 0; j < colsLength; j++) {\n const savedCell = arrayOfCells[i][j];\n const position = {\n column: column + j,\n row: row + i,\n };\n const values = {\n displayValue: savedCell.displayValue,\n value: savedCell.value,\n style: savedCell.style,\n };\n root.changeCellValues(position, values, false);\n }\n }\n }\n catch (err) {\n console.error(\"Cannot read clipboard. \", err);\n }\n root.renderSheet();\n return;\n }\n const rowsLength = this.saved.length;\n const colsLength = this.saved[0] ? this.saved[0].length : 0;\n for (let i = 0; i < rowsLength; i++) {\n for (let j = 0; j < colsLength; j++) {\n const savedCell = this.saved[i][j];\n const position = {\n column: column + j,\n row: row + i,\n };\n const values = {\n displayValue: savedCell.displayValue,\n value: savedCell.value,\n style: savedCell.style,\n };\n root.changeCellValues(position, values, false);\n }\n }\n }\n}\n","/**\r\n * Represents unions.\r\n * (A1, A1:C5, ...)\r\n */\r\nclass Collection {\r\n\r\n constructor(data, refs) {\r\n if (data == null && refs == null) {\r\n this._data = [];\r\n this._refs = [];\r\n } else {\r\n if (data.length !== refs.length)\r\n throw Error('Collection: data length should match references length.');\r\n this._data = data;\r\n this._refs = refs;\r\n }\r\n }\r\n\r\n get data() {\r\n return this._data;\r\n }\r\n\r\n get refs() {\r\n return this._refs;\r\n }\r\n\r\n get length() {\r\n return this._data.length;\r\n }\r\n\r\n /**\r\n * Add data and references to this collection.\r\n * @param {{}} obj - data\r\n * @param {{}} ref - reference\r\n */\r\n add(obj, ref) {\r\n this._data.push(obj);\r\n this._refs.push(ref);\r\n }\r\n}\r\n\r\nmodule.exports = Collection;\r\n","const FormulaError = require('./error');\r\nconst Collection = require('../grammar/type/collection');\r\n\r\nconst Types = {\r\n NUMBER: 0,\r\n ARRAY: 1,\r\n BOOLEAN: 2,\r\n STRING: 3,\r\n RANGE_REF: 4, // can be 'A:C' or '1:4', not only 'A1:C3'\r\n CELL_REF: 5,\r\n COLLECTIONS: 6, // Unions of references\r\n NUMBER_NO_BOOLEAN: 10,\r\n};\r\n\r\nconst Factorials = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600, 6227020800, 87178291200, 1307674368000, 20922789888000, 355687428096000, 6402373705728000, 121645100408832000, 2432902008176640000, 51090942171709440000, 1124000727777607680000, 25852016738884976640000, 620448401733239439360000, 15511210043330985984000000, 403291461126605635584000000, 10888869450418352160768000000, 304888344611713860501504000000, 8841761993739701954543616000000, 265252859812191058636308480000000, 8222838654177922817725562880000000, 263130836933693530167218012160000000, 8683317618811886495518194401280000000, 295232799039604140847618609643520000000, 10333147966386144929666651337523200000000, 371993326789901217467999448150835200000000, 13763753091226345046315979581580902400000000, 523022617466601111760007224100074291200000000, 20397882081197443358640281739902897356800000000, 815915283247897734345611269596115894272000000000, 33452526613163807108170062053440751665152000000000, 1405006117752879898543142606244511569936384000000000, 60415263063373835637355132068513997507264512000000000, 2658271574788448768043625811014615890319638528000000000, 119622220865480194561963161495657715064383733760000000000, 5502622159812088949850305428800254892961651752960000000000, 258623241511168180642964355153611979969197632389120000000000, 12413915592536072670862289047373375038521486354677760000000000, 608281864034267560872252163321295376887552831379210240000000000, 30414093201713378043612608166064768844377641568960512000000000000, 1551118753287382280224243016469303211063259720016986112000000000000, 80658175170943878571660636856403766975289505440883277824000000000000, 4274883284060025564298013753389399649690343788366813724672000000000000, 230843697339241380472092742683027581083278564571807941132288000000000000, 12696403353658275925965100847566516959580321051449436762275840000000000000, 710998587804863451854045647463724949736497978881168458687447040000000000000, 40526919504877216755680601905432322134980384796226602145184481280000000000000, 2350561331282878571829474910515074683828862318181142924420699914240000000000000, 138683118545689835737939019720389406345902876772687432540821294940160000000000000, 8320987112741390144276341183223364380754172606361245952449277696409600000000000000, 507580213877224798800856812176625227226004528988036003099405939480985600000000000000, 31469973260387937525653122354950764088012280797258232192163168247821107200000000000000, 1982608315404440064116146708361898137544773690227268628106279599612729753600000000000000, 126886932185884164103433389335161480802865516174545192198801894375214704230400000000000000, 8247650592082470666723170306785496252186258551345437492922123134388955774976000000000000000, 544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000, 36471110918188685288249859096605464427167635314049524593701628500267962436943872000000000000000, 2480035542436830599600990418569171581047399201355367672371710738018221445712183296000000000000000, 171122452428141311372468338881272839092270544893520369393648040923257279754140647424000000000000000, 11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000, 850478588567862317521167644239926010288584608120796235886430763388588680378079017697280000000000000000, 61234458376886086861524070385274672740778091784697328983823014963978384987221689274204160000000000000000, 4470115461512684340891257138125051110076800700282905015819080092370422104067183317016903680000000000000000, 330788544151938641225953028221253782145683251820934971170611926835411235700971565459250872320000000000000000, 24809140811395398091946477116594033660926243886570122837795894512655842677572867409443815424000000000000000000, 1885494701666050254987932260861146558230394535379329335672487982961844043495537923117729972224000000000000000000, 145183092028285869634070784086308284983740379224208358846781574688061991349156420080065207861248000000000000000000, 11324281178206297831457521158732046228731749579488251990048962825668835325234200766245086213177344000000000000000000, 894618213078297528685144171539831652069808216779571907213868063227837990693501860533361810841010176000000000000000000, 71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000, 5797126020747367985879734231578109105412357244731625958745865049716390179693892056256184534249745940480000000000000000000, 475364333701284174842138206989404946643813294067993328617160934076743994734899148613007131808479167119360000000000000000000, 39455239697206586511897471180120610571436503407643446275224357528369751562996629334879591940103770870906880000000000000000000, 3314240134565353266999387579130131288000666286242049487118846032383059131291716864129885722968716753156177920000000000000000000, 281710411438055027694947944226061159480056634330574206405101912752560026159795933451040286452340924018275123200000000000000000000, 24227095383672732381765523203441259715284870552429381750838764496720162249742450276789464634901319465571660595200000000000000000000, 2107757298379527717213600518699389595229783738061356212322972511214654115727593174080683423236414793504734471782400000000000000000000, 185482642257398439114796845645546284380220968949399346684421580986889562184028199319100141244804501828416633516851200000000000000000000, 16507955160908461081216919262453619309839666236496541854913520707833171034378509739399912570787600662729080382999756800000000000000000000, 1485715964481761497309522733620825737885569961284688766942216863704985393094065876545992131370884059645617234469978112000000000000000000000, 135200152767840296255166568759495142147586866476906677791741734597153670771559994765685283954750449427751168336768008192000000000000000000000, 12438414054641307255475324325873553077577991715875414356840239582938137710983519518443046123837041347353107486982656753664000000000000000000000, 1156772507081641574759205162306240436214753229576413535186142281213246807121467315215203289516844845303838996289387078090752000000000000000000000, 108736615665674308027365285256786601004186803580182872307497374434045199869417927630229109214583415458560865651202385340530688000000000000000000000, 10329978488239059262599702099394727095397746340117372869212250571234293987594703124871765375385424468563282236864226607350415360000000000000000000000, 991677934870949689209571401541893801158183648651267795444376054838492222809091499987689476037000748982075094738965754305639874560000000000000000000000, 96192759682482119853328425949563698712343813919172976158104477319333745612481875498805879175589072651261284189679678167647067832320000000000000000000000, 9426890448883247745626185743057242473809693764078951663494238777294707070023223798882976159207729119823605850588608460429412647567360000000000000000000000, 933262154439441526816992388562667004907159682643816214685929638952175999932299156089414639761565182862536979208272237582511852109168640000000000000000000000, 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000];\r\n\r\nconst ReversedTypes = {};\r\nObject.keys(Types).forEach((key) => {\r\n ReversedTypes[Types[key]] = key;\r\n});\r\n\r\n/**\r\n * Formula helpers.\r\n */\r\nclass FormulaHelpers {\r\n constructor() {\r\n this.Types = Types;\r\n this.type2Number = {\r\n number: Types.NUMBER,\r\n boolean: Types.BOOLEAN,\r\n string: Types.STRING,\r\n object: -1\r\n };\r\n }\r\n\r\n checkFunctionResult(result) {\r\n const type = typeof result;\r\n // number\r\n if (type === 'number') {\r\n if (isNaN(result)) {\r\n return FormulaError.VALUE;\r\n } else if (!isFinite(result)) {\r\n return FormulaError.NUM;\r\n }\r\n }\r\n if (result === undefined || result === null)\r\n return FormulaError.NULL;\r\n return result;\r\n }\r\n\r\n /**\r\n * Flatten an array\r\n * @param {Array} arr1\r\n * @returns {*}\r\n */\r\n flattenDeep(arr1) {\r\n return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(this.flattenDeep(val)) : acc.concat(val), []);\r\n }\r\n\r\n /**\r\n *\r\n * @param obj\r\n * @param isArray - if it is an array: [1,2,3], will extract the first element\r\n * @param allowBoolean - Allow parse boolean into number\r\n * @returns {number|FormulaError}\r\n */\r\n acceptNumber(obj, isArray = true, allowBoolean = true) {\r\n // check error\r\n if (obj instanceof FormulaError)\r\n return obj;\r\n let number;\r\n\r\n if (typeof obj === 'number')\r\n number = obj;\r\n // TRUE -> 1, FALSE -> 0\r\n else if (typeof obj === 'boolean') {\r\n if (allowBoolean) {\r\n number = Number(obj);\r\n } else {\r\n throw FormulaError.VALUE;\r\n }\r\n }\r\n // \"123\" -> 123\r\n else if (typeof obj === 'string') {\r\n if (obj.length === 0) {\r\n throw FormulaError.VALUE;\r\n }\r\n number = Number(obj);\r\n // Note: the unique never-equal-to-itself characteristic of NaN\r\n if (number !== number) {\r\n throw FormulaError.VALUE;\r\n }\r\n } else if (Array.isArray(obj)) {\r\n if (!isArray) {\r\n // for range ref, only allow single column range ref\r\n if (obj[0].length === 1) {\r\n number = this.acceptNumber(obj[0][0]);\r\n } else {\r\n throw FormulaError.VALUE;\r\n }\r\n } else {\r\n number = this.acceptNumber(obj[0][0]);\r\n }\r\n\r\n } else {\r\n throw Error('Unknown type in FormulaHelpers.acceptNumber')\r\n }\r\n return number;\r\n }\r\n\r\n /**\r\n * Flatten parameters to 1D array.\r\n * @see {@link FormulaHelpers.accept}\r\n * @param {Array} params - Parameter that needs to flatten.\r\n * @param {Types|null} valueType - The type each item should be,\r\n * null if allows any type. This only applies to literals.\r\n * @param {boolean} allowUnion - Allow union, e.g. (A1:C1, E4:F3)\r\n * @param {function} hook - Invoked after parsing each item.\r\n * of the array.\r\n * @param {*} [defValue=null] - The value if an param is omitted. i.e. SUM(1,2,,,,,)\r\n * @param {number} [minSize=1] - The minimum size of the parameters\r\n */\r\n flattenParams(params, valueType, allowUnion, hook, defValue = null, minSize = 1) {\r\n if (params.length < minSize)\r\n throw FormulaError.ARG_MISSING([valueType]);\r\n if (defValue == null) {\r\n defValue = valueType === Types.NUMBER ? 0 : valueType == null ? null : '';\r\n }\r\n params.forEach(param => {\r\n const {isCellRef, isRangeRef, isArray} = param;\r\n const isUnion = param.value instanceof Collection;\r\n const isLiteral = !isCellRef && !isRangeRef && !isArray && !isUnion;\r\n const info = {isLiteral, isCellRef, isRangeRef, isArray, isUnion};\r\n\r\n // single element\r\n if (isLiteral) {\r\n if (param.omitted)\r\n param = defValue;\r\n else\r\n param = this.accept(param, valueType, defValue);\r\n hook(param, info);\r\n }\r\n // cell reference of single range reference (A1:A1)\r\n else if (isCellRef) {\r\n hook(param.value, info);\r\n }\r\n // union\r\n else if (isUnion) {\r\n if (!allowUnion) throw FormulaError.VALUE;\r\n param = param.value.data;\r\n param = this.flattenDeep(param);\r\n param.forEach(item => {\r\n hook(item, info);\r\n })\r\n } else if (isRangeRef || isArray) {\r\n param = this.flattenDeep(param.value);\r\n param.forEach(item => {\r\n hook(item, info);\r\n })\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Check if the param valid, return the parsed param.\r\n * If type is not given, return the un-parsed param.\r\n * @param {*} param\r\n * @param {number|null} [type] - The expected type\r\n * NUMBER: Expect a single number,\r\n * ARRAY: Expect an flatten array,\r\n * BOOLEAN: Expect a single boolean,\r\n * STRING: Expect a single string,\r\n * COLLECTIONS: Expect an Array of the above types\r\n * null: Do not parse the value, return it directly.\r\n * The collection is not a flatted array.\r\n * @param {*} [defValue] - Default value if the param is not given.\r\n * if undefined, this param is required, a Error will throw if not given.\r\n * if null, and param is undefined, null will be returned.\r\n * @param {boolean} [flat=true] - If the array should be flattened,\r\n * only applicable when type is ARRAY.\r\n * If false, collection is disallowed.\r\n * @param {boolean} allowSingleValue - If pack single value into 2d array,\r\n * only applicable when type is ARRAY.\r\n * @return {string|number|boolean|{}|Array}\r\n */\r\n accept(param, type = null, defValue, flat = true, allowSingleValue = false) {\r\n // TODO: remove this array check\r\n if (Array.isArray(type))\r\n type = type[0];\r\n if (param == null && defValue === undefined) {\r\n throw FormulaError.ARG_MISSING([type]);\r\n } else if (param == null)\r\n return defValue;\r\n\r\n if (typeof param !== \"object\" || Array.isArray(param))\r\n return param;\r\n\r\n const isArray = param.isArray;\r\n if (param.value != null) param = param.value;\r\n\r\n // return an un-parsed type.\r\n if (type == null)\r\n return param;\r\n\r\n if (param instanceof FormulaError)\r\n throw param;\r\n\r\n if (type === Types.ARRAY) {\r\n if (Array.isArray(param)) {\r\n return flat ? this.flattenDeep(param) : param;\r\n } else if (param instanceof Collection) {\r\n throw FormulaError.VALUE;\r\n } else if (allowSingleValue) {\r\n return flat ? [param] : [[param]];\r\n }\r\n throw FormulaError.VALUE;\r\n } else if (type === Types.COLLECTIONS) {\r\n return param;\r\n }\r\n\r\n // the only possible type for expectSingle=true are: string, boolean, number;\r\n // If array encountered, extract the first element.\r\n // extract first element from array\r\n if (isArray) {\r\n param = param[0][0];\r\n }\r\n const paramType = this.type(param);\r\n if (type === Types.STRING) {\r\n if (paramType === Types.BOOLEAN)\r\n param = param ? 'TRUE' : 'FALSE';\r\n else\r\n param = `${param}`\r\n } else if (type === Types.BOOLEAN) {\r\n if (paramType === Types.STRING)\r\n throw FormulaError.VALUE;\r\n if (paramType === Types.NUMBER)\r\n param = Boolean(param);\r\n } else if (type === Types.NUMBER) {\r\n param = this.acceptNumber(param, false);\r\n } else if (type === Types.NUMBER_NO_BOOLEAN) {\r\n param = this.acceptNumber(param, false, false);\r\n } else {\r\n throw FormulaError.VALUE;\r\n }\r\n return param;\r\n }\r\n\r\n type(variable) {\r\n let type = this.type2Number[typeof variable];\r\n if (type === -1) {\r\n if (Array.isArray(variable))\r\n type = Types.ARRAY;\r\n else if (variable.ref) {\r\n if (variable.ref.from) {\r\n type = Types.RANGE_REF;\r\n } else {\r\n type = Types.CELL_REF;\r\n }\r\n } else if (variable instanceof Collection)\r\n type = Types.COLLECTIONS;\r\n }\r\n return type;\r\n }\r\n\r\n isRangeRef(param) {\r\n return param.ref && param.ref.from;\r\n }\r\n\r\n isCellRef(param) {\r\n return param.ref && !param.ref.from;\r\n }\r\n\r\n /**\r\n * Helper function for SUMIF, AVERAGEIF,...\r\n * @param context\r\n * @param range1\r\n * @param range2\r\n */\r\n retrieveRanges(context, range1, range2) {\r\n // process args\r\n range2 = Address.extend(range1, range2);\r\n\r\n // retrieve values\r\n range1 = this.retrieveArg(context, range1);\r\n range1 = H.accept(range1, Types.ARRAY, undefined, false, true);\r\n\r\n if (range2 !== range1) {\r\n range2 = this.retrieveArg(context, range2);\r\n range2 = H.accept(range2, Types.ARRAY, undefined, false, true);\r\n } else\r\n range2 = range1;\r\n\r\n return [range1, range2];\r\n }\r\n\r\n retrieveArg(context, arg) {\r\n if (arg === null)\r\n return {value: 0, isArray: false, omitted: true};\r\n const res = context.utils.extractRefValue(arg);\r\n return {value: res.val, isArray: res.isArray, ref: arg.ref};\r\n }\r\n}\r\n\r\nconst H = new FormulaHelpers();\r\n\r\nconst WildCard = {\r\n /**\r\n * @param {string|*} obj\r\n * @returns {*}\r\n */\r\n isWildCard: obj => {\r\n if (typeof obj === \"string\")\r\n return /[*?]/.test(obj);\r\n return false;\r\n },\r\n\r\n toRegex: (lookupText, flags) => {\r\n return RegExp(lookupText.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&') // escape the special char for js regex\r\n .replace(/([^~]??)[?]/g, '$1.') // ? => .\r\n .replace(/([^~]??)[*]/g, '$1.*') // * => .*\r\n .replace(/~([?*])/g, '$1'), flags); // ~* => * and ~? => ?\r\n }\r\n};\r\n\r\nconst Criteria = {\r\n /**\r\n * Parse criteria, support comparison and wild card match.\r\n * @param {string|number} criteria\r\n * @return {{op: string, value: string|number|boolean|RegExp, match: boolean|undefined}} - The parsed criteria.\r\n */\r\n parse: (criteria) => {\r\n const type = typeof criteria;\r\n if (type === \"string\") {\r\n // criteria = 'TRUE' or 'FALSE'\r\n const upper = criteria.toUpperCase();\r\n if (upper === 'TRUE' || upper === 'FALSE') {\r\n // excel boolean\r\n return {op: '=', value: upper === 'TRUE'};\r\n }\r\n\r\n const res = criteria.match(/(<>|>=|<=|>|<|=)(.*)/);\r\n // is comparison\r\n if (res) {\r\n // [\">10\", \">\", \"10\", index: 0, input: \">10\", groups: undefined]\r\n let op = res[1], value;\r\n\r\n // string or boolean or error\r\n if (isNaN(res[2])) {\r\n const upper = res[2].toUpperCase();\r\n if (upper === 'TRUE' || upper === 'FALSE') {\r\n // excel boolean\r\n value = upper === 'TRUE';\r\n } else if (/#NULL!|#DIV\\/0!|#VALUE!|#NAME\\?|#NUM!|#N\\/A|#REF!/.test(res[2])) {\r\n // formula error\r\n value = new FormulaError(res[2]);\r\n } else {\r\n // string, can be wildcard\r\n value = res[2];\r\n if (WildCard.isWildCard(value)) {\r\n return {op: 'wc', value: WildCard.toRegex(value), match: op === '='}\r\n }\r\n }\r\n } else {\r\n // number\r\n value = Number(res[2])\r\n }\r\n return {op, value};\r\n\r\n } else if (WildCard.isWildCard(criteria)) {\r\n return {op: 'wc', value: WildCard.toRegex(criteria), match: true}\r\n } else {\r\n return {op: '=', value: criteria}\r\n }\r\n } else if (type === \"boolean\" || type === 'number' || (Array.isArray(criteria)\r\n || criteria instanceof FormulaError)) {\r\n return {op: '=', value: criteria}\r\n } else {\r\n throw Error(`Criteria.parse: type ${typeof criteria} not support`)\r\n }\r\n }\r\n};\r\n\r\nconst Address = {\r\n\r\n columnNumberToName: (number) => {\r\n let dividend = number;\r\n let name = '';\r\n let modulo = 0;\r\n\r\n while (dividend > 0) {\r\n modulo = (dividend - 1) % 26;\r\n name = String.fromCharCode('A'.charCodeAt(0) + modulo) + name;\r\n dividend = Math.floor((dividend - modulo) / 26);\r\n }\r\n\r\n return name;\r\n },\r\n\r\n columnNameToNumber: (columnName) => {\r\n columnName = columnName.toUpperCase();\r\n const len = columnName.length;\r\n let number = 0;\r\n for (let i = 0; i < len; i++) {\r\n const code = columnName.charCodeAt(i);\r\n if (!isNaN(code)) {\r\n number += (code - 64) * 26 ** (len - i - 1)\r\n }\r\n }\r\n return number;\r\n },\r\n\r\n /**\r\n * Extend range2 to match with the dimension in range1.\r\n * @param {{ref: {}}} range1\r\n * @param {{ref: {}}} [range2]\r\n */\r\n extend: (range1, range2) => {\r\n if (range2 == null) {\r\n return range1;\r\n }\r\n let rowOffset, colOffset;\r\n if (H.isCellRef(range1)) {\r\n rowOffset = 0;\r\n colOffset = 0;\r\n } else if (H.isRangeRef(range1)) {\r\n rowOffset = range1.ref.to.row - range1.ref.from.row;\r\n colOffset = range1.ref.to.col - range1.ref.from.col;\r\n } else throw Error('Address.extend should not reach here.');\r\n // if range2 is a cell reference\r\n if (H.isCellRef(range2)) {\r\n if (rowOffset > 0 || colOffset > 0)\r\n range2 = {\r\n ref: {\r\n from: {col: range2.ref.col, row: range2.ref.row},\r\n to: {row: range2.ref.row + rowOffset, col: range2.ref.col + colOffset}\r\n }\r\n };\r\n } else {\r\n // range2 is a range reference\r\n range2.ref.to.row = range2.ref.from.row + rowOffset;\r\n range2.ref.to.col = range2.ref.from.col + colOffset;\r\n }\r\n return range2;\r\n },\r\n};\r\n\r\nmodule.exports = {\r\n FormulaHelpers: H,\r\n Types,\r\n ReversedTypes,\r\n Factorials,\r\n WildCard,\r\n Criteria,\r\n Address,\r\n};\r\n","/**\r\n * Formula Error.\r\n */\r\nclass FormulaError extends Error {\r\n\r\n /**\r\n * @param {string} error - error code, i.e. #NUM!\r\n * @param {string} [msg] - detailed error message\r\n * @param {object|Error} [details]\r\n * @returns {FormulaError}\r\n */\r\n constructor(error, msg, details) {\r\n super(msg);\r\n if (msg == null && details == null && FormulaError.errorMap.has(error))\r\n return FormulaError.errorMap.get(error);\r\n else if (msg == null && details == null) {\r\n this._error = error;\r\n FormulaError.errorMap.set(error, this);\r\n } else {\r\n this._error = error;\r\n }\r\n this.details = details;\r\n }\r\n\r\n /**\r\n * Get the error name.\r\n * @returns {string} formula error\r\n */\r\n get error() {\r\n return this._error;\r\n }\r\n get name() {\r\n return this._error;\r\n }\r\n\r\n /**\r\n * Return true if two errors are same.\r\n * @param {FormulaError} err\r\n * @returns {boolean} if two errors are same.\r\n */\r\n equals(err) {\r\n return err instanceof FormulaError && err._error === this._error;\r\n }\r\n\r\n /**\r\n * Return the formula error in string representation.\r\n * @returns {string} the formula error in string representation.\r\n */\r\n toString() {\r\n return this._error;\r\n }\r\n}\r\n\r\nFormulaError.errorMap = new Map();\r\n\r\n/**\r\n * DIV0 error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.DIV0 = new FormulaError(\"#DIV/0!\");\r\n\r\n/**\r\n * NA error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.NA = new FormulaError(\"#N/A\");\r\n\r\n/**\r\n * NAME error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.NAME = new FormulaError(\"#NAME?\");\r\n\r\n/**\r\n * NULL error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.NULL = new FormulaError(\"#NULL!\");\r\n\r\n/**\r\n * NUM error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.NUM = new FormulaError(\"#NUM!\");\r\n\r\n/**\r\n * REF error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.REF = new FormulaError(\"#REF!\");\r\n\r\n/**\r\n * VALUE error\r\n * @type {FormulaError}\r\n */\r\nFormulaError.VALUE = new FormulaError(\"#VALUE!\");\r\n\r\n/**\r\n * NOT_IMPLEMENTED error\r\n * @param {string} functionName - the name of the not implemented function\r\n * @returns {FormulaError}\r\n * @constructor\r\n */\r\nFormulaError.NOT_IMPLEMENTED = (functionName) => {\r\n return new FormulaError(\"#NAME?\", `Function ${functionName} is not implemented.`)\r\n};\r\n\r\n/**\r\n * TOO_MANY_ARGS error\r\n * @param functionName - the name of the errored function\r\n * @returns {FormulaError}\r\n * @constructor\r\n */\r\nFormulaError.TOO_MANY_ARGS = (functionName) => {\r\n return new FormulaError(\"#N/A\", `Function ${functionName} has too many arguments.`)\r\n};\r\n\r\n/**\r\n * ARG_MISSING error\r\n * @param args - the name of the errored function\r\n * @returns {FormulaError}\r\n * @constructor\r\n */\r\nFormulaError.ARG_MISSING = (args) => {\r\n const {Types} = require('./helpers');\r\n return new FormulaError(\"#N/A\", `Argument type ${args.map(arg => Types[arg]).join(', ')} is missing.`)\r\n};\r\n\r\n/**\r\n * #ERROR!\r\n * Parse/Lex error or other unexpected errors\r\n * @param {string} msg\r\n * @param {object|Error} [details]\r\n * @return {FormulaError}\r\n * @constructor\r\n */\r\nFormulaError.ERROR = (msg, details) => {\r\n return new FormulaError('#ERROR!', msg, details);\r\n}\r\n\r\nmodule.exports = FormulaError;\r\n","// https://github.com/looker/ssf/blob/master/ssf.js\n/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */\n\n/**\n * Spreadsheet formatter.\n * @type {{}}\n */\nclass SSF {\n}\n\n/**\n * The version of SSF.\n * @type {string}\n */\nSSF.version = '0.10.3';\n\nfunction _strrev(x) {\n let o = \"\", i = x.length - 1;\n while (i >= 0) o += x.charAt(i--);\n return o;\n}\n\nfunction fill(c, l) {\n let o = \"\";\n while (o.length < l) o += c;\n return o;\n}\n\nfunction pad0(v, d) {\n let t = \"\" + v;\n return t.length >= d ? t : fill('0', d - t.length) + t;\n}\n\nfunction pad_(v, d) {\n let t = \"\" + v;\n return t.length >= d ? t : fill(' ', d - t.length) + t;\n}\n\nfunction rpad_(v, d) {\n let t = \"\" + v;\n return t.length >= d ? t : t + fill(' ', d - t.length);\n}\n\nfunction pad0r1(v, d) {\n let t = \"\" + Math.round(v);\n return t.length >= d ? t : fill('0', d - t.length) + t;\n}\n\nfunction pad0r2(v, d) {\n let t = \"\" + v;\n return t.length >= d ? t : fill('0', d - t.length) + t;\n}\n\nconst p2_32 = Math.pow(2, 32);\n\nfunction pad0r(v, d) {\n if (v > p2_32 || v < -p2_32) return pad0r1(v, d);\n const i = Math.round(v);\n return pad0r2(i, d);\n}\n\nfunction isgeneral(s, i) {\n i = i || 0;\n return s.length >= 7 + i && (s.charCodeAt(i) | 32) === 103 && (s.charCodeAt(i + 1) | 32) === 101 && (s.charCodeAt(i + 2) | 32) === 110 && (s.charCodeAt(i + 3) | 32) === 101 && (s.charCodeAt(i + 4) | 32) === 114 && (s.charCodeAt(i + 5) | 32) === 97 && (s.charCodeAt(i + 6) | 32) === 108;\n}\n\nconst days = [\n ['Sun', 'Sunday'],\n ['Mon', 'Monday'],\n ['Tue', 'Tuesday'],\n ['Wed', 'Wednesday'],\n ['Thu', 'Thursday'],\n ['Fri', 'Friday'],\n ['Sat', 'Saturday']\n];\nconst months = [\n ['J', 'Jan', 'January'],\n ['F', 'Feb', 'February'],\n ['M', 'Mar', 'March'],\n ['A', 'Apr', 'April'],\n ['M', 'May', 'May'],\n ['J', 'Jun', 'June'],\n ['J', 'Jul', 'July'],\n ['A', 'Aug', 'August'],\n ['S', 'Sep', 'September'],\n ['O', 'Oct', 'October'],\n ['N', 'Nov', 'November'],\n ['D', 'Dec', 'December']\n];\n\nfunction init_table(t) {\n t[0] = 'General';\n t[1] = '0';\n t[2] = '0.00';\n t[3] = '#,##0';\n t[4] = '#,##0.00';\n t[9] = '0%';\n t[10] = '0.00%';\n t[11] = '0.00E+00';\n t[12] = '# ?/?';\n t[13] = '# ??/??';\n t[14] = 'm/d/yy';\n t[15] = 'd-mmm-yy';\n t[16] = 'd-mmm';\n t[17] = 'mmm-yy';\n t[18] = 'h:mm AM/PM';\n t[19] = 'h:mm:ss AM/PM';\n t[20] = 'h:mm';\n t[21] = 'h:mm:ss';\n t[22] = 'm/d/yy h:mm';\n t[37] = '#,##0 ;(#,##0)';\n t[38] = '#,##0 ;[Red](#,##0)';\n t[39] = '#,##0.00;(#,##0.00)';\n t[40] = '#,##0.00;[Red](#,##0.00)';\n t[45] = 'mm:ss';\n t[46] = '[h]:mm:ss';\n t[47] = 'mmss.0';\n t[48] = '##0.0E+0';\n t[49] = '@';\n t[56] = '\"上午/下午 \"hh\"時\"mm\"分\"ss\"秒 \"';\n t[65535] = 'General';\n}\n\nconst table_fmt = {};\ninit_table(table_fmt);\n\nfunction frac(x, D, mixed) {\n const sgn = x < 0 ? -1 : 1;\n let B = x * sgn;\n let P_2 = 0, P_1 = 1, P = 0;\n let Q_2 = 1, Q_1 = 0, Q = 0;\n let A = Math.floor(B);\n while (Q_1 < D) {\n A = Math.floor(B);\n P = A * P_1 + P_2;\n Q = A * Q_1 + Q_2;\n if ((B - A) < 0.00000005) break;\n B = 1 / (B - A);\n P_2 = P_1;\n P_1 = P;\n Q_2 = Q_1;\n Q_1 = Q;\n }\n if (Q > D) {\n if (Q_1 > D) {\n Q = Q_2;\n P = P_2;\n } else {\n Q = Q_1;\n P = P_1;\n }\n }\n if (!mixed) return [0, sgn * P, Q];\n const q = Math.floor(sgn * P / Q);\n return [q, sgn * P - q * Q, Q];\n}\n\nfunction parse_date_code(v, opts, b2) {\n if (v > 2958465 || v < 0) return null;\n let date = (v | 0), time = Math.floor(86400 * (v - date)), dow = 0;\n let dout = [];\n const out = {D: date, T: time, u: 86400 * (v - date) - time, y: 0, m: 0, d: 0, H: 0, M: 0, S: 0, q: 0};\n if (Math.abs(out.u) < 1e-6) out.u = 0;\n if (opts && opts.date1904) date += 1462;\n if (out.u > 0.9999) {\n out.u = 0;\n if (++time === 86400) {\n out.T = time = 0;\n ++date;\n ++out.D;\n }\n }\n if (date === 60) {\n dout = b2 ? [1317, 10, 29] : [1900, 2, 29];\n dow = 3;\n } else if (date === 0) {\n dout = b2 ? [1317, 8, 29] : [1900, 1, 0];\n dow = 6;\n } else {\n if (date > 60) --date;\n /* 1 = Jan 1 1900 in Gregorian */\n const d = new Date(1900, 0, 1);\n d.setDate(d.getDate() + date - 1);\n dout = [d.getFullYear(), d.getMonth() + 1, d.getDate()];\n dow = d.getDay();\n if (date < 60) dow = (dow + 6) % 7;\n if (b2) dow = fix_hijri(d, dout);\n }\n out.y = dout[0];\n out.m = dout[1];\n out.d = dout[2];\n out.S = time % 60;\n time = Math.floor(time / 60);\n out.M = time % 60;\n time = Math.floor(time / 60);\n out.H = time;\n out.q = dow;\n return out;\n}\n\nSSF.parse_date_code = parse_date_code;\nconst basedate = new Date(1899, 11, 31, 0, 0, 0);\nconst dnthresh = basedate.getTime();\nconst base1904 = new Date(1900, 2, 1, 0, 0, 0);\n\nfunction datenum_local(v, date1904) {\n let epoch = v.getTime();\n if (date1904) epoch -= 1461 * 24 * 60 * 60 * 1000;\n else if (v >= base1904) epoch += 24 * 60 * 60 * 1000;\n return (epoch - (dnthresh + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000);\n}\n\nfunction general_fmt_int(v) {\n return v.toString(10);\n}\n\nSSF._general_int = general_fmt_int;\nconst general_fmt_num = (function make_general_fmt_num() {\n const gnr1 = /\\.(\\d*[1-9])0+$/, gnr2 = /\\.0*$/, gnr4 = /\\.(\\d*[1-9])0+/, gnr5 = /\\.0*[Ee]/,\n gnr6 = /(E[+-])(\\d)$/;\n\n function gfn2(v) {\n const w = (v < 0 ? 12 : 11);\n let o = gfn5(v.toFixed(12));\n if (o.length <= w) return o;\n o = v.toPrecision(10);\n if (o.length <= w) return o;\n return v.toExponential(5);\n }\n\n function gfn3(v) {\n let o = v.toFixed(11).replace(gnr1, \".$1\");\n if (o.length > (v < 0 ? 12 : 11)) o = v.toPrecision(6);\n return o;\n }\n\n function gfn4(o) {\n for (let i = 0; i !== o.length; ++i) if ((o.charCodeAt(i) | 0x20) === 101) return o.replace(gnr4, \".$1\").replace(gnr5, \"E\").replace(\"e\", \"E\").replace(gnr6, \"$10$2\");\n return o;\n }\n\n function gfn5(o) {\n return o.indexOf(\".\") > -1 ? o.replace(gnr2, \"\").replace(gnr1, \".$1\") : o;\n }\n\n return function general_fmt_num(v) {\n let V = Math.floor(Math.log(Math.abs(v)) * Math.LOG10E), o;\n if (V >= -4 && V <= -1) o = v.toPrecision(10 + V);\n else if (Math.abs(V) <= 9) o = gfn2(v);\n else if (V === 10) o = v.toFixed(10).substr(0, 12);\n else o = gfn3(v);\n return gfn5(gfn4(o));\n };\n})();\nSSF._general_num = general_fmt_num;\n\nfunction general_fmt(v, opts) {\n switch (typeof v) {\n case 'string':\n return v;\n case 'boolean':\n return v ? \"TRUE\" : \"FALSE\";\n case 'number':\n return (v | 0) === v ? general_fmt_int(v) : general_fmt_num(v);\n case 'undefined':\n return \"\";\n case 'object':\n if (v == null) return \"\";\n if (v instanceof Date) return format(14, datenum_local(v, opts && opts.date1904), opts);\n }\n throw new Error(\"unsupported value in General format: \" + v);\n}\n\nSSF._general = general_fmt;\n\nfunction fix_hijri() {\n return 0;\n}\n\n/*jshint -W086 */\nfunction write_date(type, fmt, val, ss0) {\n let o = \"\", ss = 0, tt = 0, y = val.y, out, outl = 0;\n switch (type) {\n case 98: /* 'b' buddhist year */\n y = val.y + 543;\n /* falls through */\n case 121: /* 'y' year */\n switch (fmt.length) {\n case 1:\n case 2:\n out = y % 100;\n outl = 2;\n break;\n default:\n out = y % 10000;\n outl = 4;\n break;\n }\n break;\n case 109: /* 'm' month */\n switch (fmt.length) {\n case 1:\n case 2:\n out = val.m;\n outl = fmt.length;\n break;\n case 3:\n return months[val.m - 1][1];\n case 5:\n return months[val.m - 1][0];\n default:\n return months[val.m - 1][2];\n }\n break;\n case 100: /* 'd' day */\n switch (fmt.length) {\n case 1:\n case 2:\n out = val.d;\n outl = fmt.length;\n break;\n case 3:\n return days[val.q][0];\n default:\n return days[val.q][1];\n }\n break;\n case 104: /* 'h' 12-hour */\n switch (fmt.length) {\n case 1:\n case 2:\n out = 1 + (val.H + 11) % 12;\n outl = fmt.length;\n break;\n default:\n throw 'bad hour format: ' + fmt;\n }\n break;\n case 72: /* 'H' 24-hour */\n switch (fmt.length) {\n case 1:\n case 2:\n out = val.H;\n outl = fmt.length;\n break;\n default:\n throw 'bad hour format: ' + fmt;\n }\n break;\n case 77: /* 'M' minutes */\n switch (fmt.length) {\n case 1:\n case 2:\n out = val.M;\n outl = fmt.length;\n break;\n default:\n throw 'bad minute format: ' + fmt;\n }\n break;\n case 115: /* 's' seconds */\n if (fmt !== 's' && fmt !== 'ss' && fmt !== '.0' && fmt !== '.00' && fmt !== '.000') throw 'bad second format: ' + fmt;\n if (val.u === 0 && (fmt === \"s\" || fmt === \"ss\")) return pad0(val.S, fmt.length);\n if (ss0 >= 2) tt = ss0 === 3 ? 1000 : 100;\n else tt = ss0 === 1 ? 10 : 1;\n ss = Math.round((tt) * (val.S + val.u));\n if (ss >= 60 * tt) ss = 0;\n if (fmt === 's') return ss === 0 ? \"0\" : \"\" + ss / tt;\n o = pad0(ss, 2 + ss0);\n if (fmt === 'ss') return o.substr(0, 2);\n return \".\" + o.substr(2, fmt.length - 1);\n case 90: /* 'Z' absolute time */\n switch (fmt) {\n case '[h]':\n case '[hh]':\n out = val.D * 24 + val.H;\n break;\n case '[m]':\n case '[mm]':\n out = (val.D * 24 + val.H) * 60 + val.M;\n break;\n case '[s]':\n case '[ss]':\n out = ((val.D * 24 + val.H) * 60 + val.M) * 60 + Math.round(val.S + val.u);\n break;\n default:\n throw 'bad abstime format: ' + fmt;\n }\n outl = fmt.length === 3 ? 1 : 2;\n break;\n case 101: /* 'e' era */\n out = y;\n outl = 1;\n }\n if (outl > 0) return pad0(out, outl); else return \"\";\n}\n\n/*jshint +W086 */\nfunction commaify(s) {\n const w = 3;\n if (s.length <= w) return s;\n let j = (s.length % w), o = s.substr(0, j);\n for (; j !== s.length; j += w) o += (o.length > 0 ? \",\" : \"\") + s.substr(j, w);\n return o;\n}\n\nconst write_num = (function make_write_num() {\n const pct1 = /%/g;\n\n function write_num_pct(type, fmt, val) {\n const sfmt = fmt.replace(pct1, \"\"), mul = fmt.length - sfmt.length;\n return write_num(type, sfmt, val * Math.pow(10, 2 * mul)) + fill(\"%\", mul);\n }\n\n function write_num_cm(type, fmt, val) {\n let idx = fmt.length - 1;\n while (fmt.charCodeAt(idx - 1) === 44) --idx;\n return write_num(type, fmt.substr(0, idx), val / Math.pow(10, 3 * (fmt.length - idx)));\n }\n\n function write_num_exp(fmt, val) {\n let o;\n let idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n if (fmt.match(/^#+0.0E\\+0$/)) {\n if (val === 0) return \"0.0E+0\";\n else if (val < 0) return \"-\" + write_num_exp(fmt, -val);\n let period = fmt.indexOf(\".\");\n if (period === -1) period = fmt.indexOf('E');\n let ee = Math.floor(Math.log(val) * Math.LOG10E) % period;\n if (ee < 0) ee += period;\n o = (val / Math.pow(10, ee)).toPrecision(idx + 1 + (period + ee) % period);\n if (o.indexOf(\"e\") === -1) {\n const fakee = Math.floor(Math.log(val) * Math.LOG10E);\n if (o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length + ee);\n else o += \"E+\" + (fakee - ee);\n while (o.substr(0, 2) === \"0.\") {\n o = o.charAt(0) + o.substr(2, period) + \".\" + o.substr(2 + period);\n o = o.replace(/^0+([1-9])/, \"$1\").replace(/^0+\\./, \"0.\");\n }\n o = o.replace(/\\+-/, \"-\");\n }\n o = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/, function ($$, $1, $2, $3) {\n return $1 + $2 + $3.substr(0, (period + ee) % period) + \".\" + $3.substr(ee) + \"E\";\n });\n } else o = val.toExponential(idx);\n if (fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0, o.length - 1) + \"0\" + o.charAt(o.length - 1);\n if (fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/, \"e\");\n return o.replace(\"e\", \"E\");\n }\n\n const frac1 = /# (\\?+)( ?)\\/( ?)(\\d+)/;\n\n function write_num_f1(r, aval, sign) {\n const den = parseInt(r[4], 10), rr = Math.round(aval * den), base = Math.floor(rr / den);\n let myn = (rr - base * den), myd = den;\n return sign + (base === 0 ? \"\" : \"\" + base) + \" \" + (myn === 0 ? fill(\" \", r[1].length + 1 + r[4].length) : pad_(myn, r[1].length) + r[2] + \"/\" + r[3] + pad0(myd, r[4].length));\n }\n\n function write_num_f2(r, aval, sign) {\n return sign + (aval === 0 ? \"\" : \"\" + aval) + fill(\" \", r[1].length + 2 + r[4].length);\n }\n\n const dec1 = /^#*0*\\.([0#]+)/;\n const closeparen = /\\).*[0#]/;\n const phone = /\\(###\\) ###\\\\?-####/;\n\n function hashq(str) {\n let o = \"\", cc;\n for (let i = 0; i !== str.length; ++i) switch ((cc = str.charCodeAt(i))) {\n case 35:\n break;\n case 63:\n o += \" \";\n break;\n case 48:\n o += \"0\";\n break;\n default:\n o += String.fromCharCode(cc);\n }\n return o;\n }\n\n function rnd(val, d) {\n const dd = Math.pow(10, d);\n return \"\" + (Math.round(val * dd) / dd);\n }\n\n function dec(val, d) {\n if (d < ('' + Math.round((val - Math.floor(val)) * Math.pow(10, d))).length) {\n return 0;\n }\n return Math.round((val - Math.floor(val)) * Math.pow(10, d));\n }\n\n function carry(val, d) {\n if (d < ('' + Math.round((val - Math.floor(val)) * Math.pow(10, d))).length) {\n return 1;\n }\n return 0;\n }\n\n function flr(val) {\n if (val < 2147483647 && val > -2147483648) return \"\" + (val >= 0 ? (val | 0) : (val - 1 | 0));\n return \"\" + Math.floor(val);\n }\n\n function write_num_flt(type, fmt, val) {\n if (type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n const ffmt = fmt.replace(/\\( */, \"\").replace(/ \\)/, \"\").replace(/\\)/, \"\");\n if (val >= 0) return write_num_flt('n', ffmt, val);\n return '(' + write_num_flt('n', ffmt, -val) + ')';\n }\n if (fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val);\n if (fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val);\n if (fmt.indexOf('E') !== -1) return write_num_exp(fmt, val);\n if (fmt.charCodeAt(0) === 36) return \"$\" + write_num_flt(type, fmt.substr(fmt.charAt(1) == ' ' ? 2 : 1), val);\n let o;\n let r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n if (fmt.match(/^00+$/)) return sign + pad0r(aval, fmt.length);\n if (fmt.match(/^[#?]+$/)) {\n o = pad0r(val, 0);\n if (o === \"0\") o = \"\";\n return o.length > fmt.length ? o : hashq(fmt.substr(0, fmt.length - o.length)) + o;\n }\n if ((r = fmt.match(frac1))) return write_num_f1(r, aval, sign);\n if (fmt.match(/^#+0+$/)) return sign + pad0r(aval, fmt.length - fmt.indexOf(\"0\"));\n if ((r = fmt.match(dec1))) {\n o = rnd(val, r[1].length).replace(/^([^\\.]+)$/, \"$1.\" + hashq(r[1])).replace(/\\.$/, \".\" + hashq(r[1])).replace(/\\.(\\d*)$/, function ($$, $1) {\n return \".\" + $1 + fill(\"0\", hashq(r[1]).length - $1.length);\n });\n return fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./, \".\");\n }\n fmt = fmt.replace(/^#+([0.])/, \"$1\");\n if ((r = fmt.match(/^(0*)\\.(#*)$/))) {\n return sign + rnd(aval, r[2].length).replace(/\\.(\\d*[1-9])0*$/, \".$1\").replace(/^(-?\\d*)$/, \"$1.\").replace(/^0\\./, r[1].length ? \"0.\" : \".\");\n }\n if ((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify(pad0r(aval, 0));\n if ((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n return val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(\"\" + (Math.floor(val) + carry(val, r[1].length))) + \".\" + pad0(dec(val, r[1].length), r[1].length);\n }\n if ((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type, fmt.replace(/^#,#*,/, \"\"), val);\n if ((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n o = _strrev(write_num_flt(type, fmt.replace(/[\\\\-]/g, \"\"), val));\n ri = 0;\n return _strrev(_strrev(fmt.replace(/\\\\/g, \"\")).replace(/[0#]/g, function (x) {\n return ri < o.length ? o.charAt(ri++) : x === '0' ? '0' : \"\";\n }));\n }\n if (fmt.match(phone)) {\n o = write_num_flt(type, \"##########\", val);\n return \"(\" + o.substr(0, 3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n }\n let oa = \"\";\n if ((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n ri = Math.min(r[4].length, 7);\n ff = frac(aval, Math.pow(10, ri) - 1, false);\n o = \"\" + sign;\n oa = write_num(\"n\", r[1], ff[1]);\n if (oa.charAt(oa.length - 1) === \" \") oa = oa.substr(0, oa.length - 1) + \"0\";\n o += oa + r[2] + \"/\" + r[3];\n oa = rpad_(ff[2], ri);\n if (oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length - oa.length)) + oa;\n o += oa;\n return o;\n }\n if ((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n ri = Math.min(Math.max(r[1].length, r[4].length), 7);\n ff = frac(aval, Math.pow(10, ri) - 1, true);\n return sign + (ff[0] || (ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1], ri) + r[2] + \"/\" + r[3] + rpad_(ff[2], ri) : fill(\" \", 2 * ri + 1 + r[2].length + r[3].length));\n }\n if ((r = fmt.match(/^[#0?]+$/))) {\n o = pad0r(val, 0);\n if (fmt.length <= o.length) return o;\n return hashq(fmt.substr(0, fmt.length - o.length)) + o;\n }\n if ((r = fmt.match(/^([#0?]+)\\.([#0]+)$/))) {\n o = \"\" + val.toFixed(Math.min(r[2].length, 10)).replace(/([^0])0+$/, \"$1\");\n ri = o.indexOf(\".\");\n const lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n return hashq(fmt.substr(0, lres) + o + fmt.substr(fmt.length - rres));\n }\n if ((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n ri = dec(val, r[1].length);\n return val < 0 ? \"-\" + write_num_flt(type, fmt, -val) : commaify(flr(val)).replace(/^\\d,\\d{3}$/, \"0$&\").replace(/^\\d*$/, function ($$) {\n return \"00,\" + ($$.length < 3 ? pad0(0, 3 - $$.length) : \"\") + $$;\n }) + \".\" + pad0(ri, r[1].length);\n }\n switch (fmt) {\n case \"###,##0.00\":\n return write_num_flt(type, \"#,##0.00\", val);\n case \"###,###\":\n case \"##,###\":\n case \"#,###\":\n const x = commaify(pad0r(aval, 0));\n return x !== \"0\" ? sign + x : \"\";\n case \"###,###.00\":\n return write_num_flt(type, \"###,##0.00\", val).replace(/^0\\./, \".\");\n case \"#,###.00\":\n return write_num_flt(type, \"#,##0.00\", val).replace(/^0\\./, \".\");\n default:\n }\n throw new Error(\"unsupported format |\" + fmt + \"|\");\n }\n\n function write_num_cm2(type, fmt, val) {\n let idx = fmt.length - 1;\n while (fmt.charCodeAt(idx - 1) === 44) --idx;\n return write_num(type, fmt.substr(0, idx), val / Math.pow(10, 3 * (fmt.length - idx)));\n }\n\n function write_num_pct2(type, fmt, val) {\n const sfmt = fmt.replace(pct1, \"\"), mul = fmt.length - sfmt.length;\n return write_num(type, sfmt, val * Math.pow(10, 2 * mul)) + fill(\"%\", mul);\n }\n\n function write_num_exp2(fmt, val) {\n let o;\n let idx = fmt.indexOf(\"E\") - fmt.indexOf(\".\") - 1;\n if (fmt.match(/^#+0.0E\\+0$/)) {\n if (val === 0) return \"0.0E+0\";\n else if (val < 0) return \"-\" + write_num_exp2(fmt, -val);\n let period = fmt.indexOf(\".\");\n if (period === -1) period = fmt.indexOf('E');\n let ee = Math.floor(Math.log(val) * Math.LOG10E) % period;\n if (ee < 0) ee += period;\n o = (val / Math.pow(10, ee)).toPrecision(idx + 1 + (period + ee) % period);\n if (!o.match(/[Ee]/)) {\n const fakee = Math.floor(Math.log(val) * Math.LOG10E);\n if (o.indexOf(\".\") === -1) o = o.charAt(0) + \".\" + o.substr(1) + \"E+\" + (fakee - o.length + ee);\n else o += \"E+\" + (fakee - ee);\n o = o.replace(/\\+-/, \"-\");\n }\n o = o.replace(/^([+-]?)(\\d*)\\.(\\d*)[Ee]/, function ($$, $1, $2, $3) {\n return $1 + $2 + $3.substr(0, (period + ee) % period) + \".\" + $3.substr(ee) + \"E\";\n });\n } else o = val.toExponential(idx);\n if (fmt.match(/E\\+00$/) && o.match(/e[+-]\\d$/)) o = o.substr(0, o.length - 1) + \"0\" + o.charAt(o.length - 1);\n if (fmt.match(/E\\-/) && o.match(/e\\+/)) o = o.replace(/e\\+/, \"e\");\n return o.replace(\"e\", \"E\");\n }\n\n function write_num_int(type, fmt, val) {\n if (type.charCodeAt(0) === 40 && !fmt.match(closeparen)) {\n const ffmt = fmt.replace(/\\( */, \"\").replace(/ \\)/, \"\").replace(/\\)/, \"\");\n if (val >= 0) return write_num_int('n', ffmt, val);\n return '(' + write_num_int('n', ffmt, -val) + ')';\n }\n if (fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val);\n if (fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val);\n if (fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val);\n if (fmt.charCodeAt(0) === 36) return \"$\" + write_num_int(type, fmt.substr(fmt.charAt(1) == ' ' ? 2 : 1), val);\n let o;\n let r, ri, ff, aval = Math.abs(val), sign = val < 0 ? \"-\" : \"\";\n if (fmt.match(/^00+$/)) return sign + pad0(aval, fmt.length);\n if (fmt.match(/^[#?]+$/)) {\n o = (\"\" + val);\n if (val === 0) o = \"\";\n return o.length > fmt.length ? o : hashq(fmt.substr(0, fmt.length - o.length)) + o;\n }\n if ((r = fmt.match(frac1))) return write_num_f2(r, aval, sign);\n if (fmt.match(/^#+0+$/)) return sign + pad0(aval, fmt.length - fmt.indexOf(\"0\"));\n if ((r = fmt.match(dec1))) {\n o = (\"\" + val).replace(/^([^\\.]+)$/, \"$1.\" + hashq(r[1])).replace(/\\.$/, \".\" + hashq(r[1]));\n o = o.replace(/\\.(\\d*)$/, function ($$, $1) {\n return \".\" + $1 + fill(\"0\", hashq(r[1]).length - $1.length);\n });\n return fmt.indexOf(\"0.\") !== -1 ? o : o.replace(/^0\\./, \".\");\n }\n fmt = fmt.replace(/^#+([0.])/, \"$1\");\n if ((r = fmt.match(/^(0*)\\.(#*)$/))) {\n return sign + (\"\" + aval).replace(/\\.(\\d*[1-9])0*$/, \".$1\").replace(/^(-?\\d*)$/, \"$1.\").replace(/^0\\./, r[1].length ? \"0.\" : \".\");\n }\n if ((r = fmt.match(/^#{1,3},##0(\\.?)$/))) return sign + commaify((\"\" + aval));\n if ((r = fmt.match(/^#,##0\\.([#0]*0)$/))) {\n return val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify((\"\" + val)) + \".\" + fill('0', r[1].length);\n }\n if ((r = fmt.match(/^#,#*,#0/))) return write_num_int(type, fmt.replace(/^#,#*,/, \"\"), val);\n if ((r = fmt.match(/^([0#]+)(\\\\?-([0#]+))+$/))) {\n o = _strrev(write_num_int(type, fmt.replace(/[\\\\-]/g, \"\"), val));\n ri = 0;\n return _strrev(_strrev(fmt.replace(/\\\\/g, \"\")).replace(/[0#]/g, function (x) {\n return ri < o.length ? o.charAt(ri++) : x === '0' ? '0' : \"\";\n }));\n }\n if (fmt.match(phone)) {\n o = write_num_int(type, \"##########\", val);\n return \"(\" + o.substr(0, 3) + \") \" + o.substr(3, 3) + \"-\" + o.substr(6);\n }\n let oa = \"\";\n if ((r = fmt.match(/^([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n ri = Math.min(r[4].length, 7);\n ff = frac(aval, Math.pow(10, ri) - 1, false);\n o = \"\" + sign;\n oa = write_num(\"n\", r[1], ff[1]);\n if (oa.charAt(oa.length - 1) == \" \") oa = oa.substr(0, oa.length - 1) + \"0\";\n o += oa + r[2] + \"/\" + r[3];\n oa = rpad_(ff[2], ri);\n if (oa.length < r[4].length) oa = hashq(r[4].substr(r[4].length - oa.length)) + oa;\n o += oa;\n return o;\n }\n if ((r = fmt.match(/^# ([#0?]+)( ?)\\/( ?)([#0?]+)/))) {\n ri = Math.min(Math.max(r[1].length, r[4].length), 7);\n ff = frac(aval, Math.pow(10, ri) - 1, true);\n return sign + (ff[0] || (ff[1] ? \"\" : \"0\")) + \" \" + (ff[1] ? pad_(ff[1], ri) + r[2] + \"/\" + r[3] + rpad_(ff[2], ri) : fill(\" \", 2 * ri + 1 + r[2].length + r[3].length));\n }\n if ((r = fmt.match(/^[#0?]+$/))) {\n o = \"\" + val;\n if (fmt.length <= o.length) return o;\n return hashq(fmt.substr(0, fmt.length - o.length)) + o;\n }\n if ((r = fmt.match(/^([#0]+)\\.([#0]+)$/))) {\n o = \"\" + val.toFixed(Math.min(r[2].length, 10)).replace(/([^0])0+$/, \"$1\");\n ri = o.indexOf(\".\");\n let lres = fmt.indexOf(\".\") - ri, rres = fmt.length - o.length - lres;\n return hashq(fmt.substr(0, lres) + o + fmt.substr(fmt.length - rres));\n }\n if ((r = fmt.match(/^00,000\\.([#0]*0)$/))) {\n return val < 0 ? \"-\" + write_num_int(type, fmt, -val) : commaify(\"\" + val).replace(/^\\d,\\d{3}$/, \"0$&\").replace(/^\\d*$/, function ($$) {\n return \"00,\" + ($$.length < 3 ? pad0(0, 3 - $$.length) : \"\") + $$;\n }) + \".\" + pad0(0, r[1].length);\n }\n switch (fmt) {\n case \"###,###\":\n case \"##,###\":\n case \"#,###\":\n const x = commaify(\"\" + aval);\n return x !== \"0\" ? sign + x : \"\";\n default:\n if (fmt.match(/\\.[0#?]*$/)) return write_num_int(type, fmt.slice(0, fmt.lastIndexOf(\".\")), val) + hashq(fmt.slice(fmt.lastIndexOf(\".\")));\n }\n throw new Error(\"unsupported format |\" + fmt + \"|\");\n }\n\n return function write_num(type, fmt, val) {\n return (val | 0) === val ? write_num_int(type, fmt, val) : write_num_flt(type, fmt, val);\n };\n})();\n\nfunction split_fmt(fmt) {\n const out = [];\n let in_str = false, j = 0;\n for (let i = 0; i < fmt.length; ++i) switch ((/*cc=*/fmt.charCodeAt(i))) {\n case 34: /* '\"' */\n in_str = !in_str;\n break;\n case 95:\n case 42:\n case 92: /* '_' '*' '\\\\' */\n ++i;\n break;\n case 59: /* ';' */\n out[out.length] = fmt.substr(j, i - j);\n j = i + 1;\n }\n out[out.length] = fmt.substr(j);\n if (in_str === true) throw new Error(\"Format |\" + fmt + \"| unterminated string \");\n return out;\n}\n\nSSF._split = split_fmt;\nconst abstime = /\\[[HhMmSs]*\\]/;\n\nfunction fmt_is_date(fmt) {\n let i = 0, /*cc = 0,*/ c = \"\", o = \"\";\n while (i < fmt.length) {\n switch ((c = fmt.charAt(i))) {\n case 'G':\n if (isgeneral(fmt, i)) i += 6;\n i++;\n break;\n case '\"':\n for (; (/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) ++i;\n ++i;\n break;\n case '\\\\':\n i += 2;\n break;\n case '_':\n i += 2;\n break;\n case '@':\n ++i;\n break;\n case 'B':\n case 'b':\n if (fmt.charAt(i + 1) === \"1\" || fmt.charAt(i + 1) === \"2\") return true;\n /* falls through */\n case 'M':\n case 'D':\n case 'Y':\n case 'H':\n case 'S':\n case 'E':\n /* falls through */\n case 'm':\n case 'd':\n case 'y':\n case 'h':\n case 's':\n case 'e':\n case 'g':\n return true;\n case 'A':\n case 'a':\n if (fmt.substr(i, 3).toUpperCase() === \"A/P\") return true;\n if (fmt.substr(i, 5).toUpperCase() === \"AM/PM\") return true;\n ++i;\n break;\n case '[':\n o = c;\n while (fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n if (o.match(abstime)) return true;\n break;\n case '.':\n /* falls through */\n case '0':\n case '#':\n while (i < fmt.length && (\"0#?.,E+-%\".indexOf(c = fmt.charAt(++i)) > -1 || (c == '\\\\' && fmt.charAt(i + 1) == \"-\" && \"0#\".indexOf(fmt.charAt(i + 2)) > -1))) {/* empty */\n }\n break;\n case '?':\n while (fmt.charAt(++i) === c) {/* empty */\n }\n break;\n case '*':\n ++i;\n if (fmt.charAt(i) === ' ' || fmt.charAt(i) === '*') ++i;\n break;\n case '(':\n case ')':\n ++i;\n break;\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n while (i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) {/* empty */\n }\n break;\n case ' ':\n ++i;\n break;\n default:\n ++i;\n break;\n }\n }\n return false;\n}\n\nSSF.is_date = fmt_is_date;\n\nfunction eval_fmt(fmt, v, opts, flen) {\n let out = [], o = \"\", i = 0, c = \"\", lst = 't', dt, j, cc;\n let hr = 'H';\n /* Tokenize */\n while (i < fmt.length) {\n switch ((c = fmt.charAt(i))) {\n case 'G': /* General */\n if (!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n out[out.length] = {t: 'G', v: 'General'};\n i += 7;\n break;\n case '\"': /* Literal text */\n for (o = \"\"; (cc = fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc);\n out[out.length] = {t: 't', v: o};\n ++i;\n break;\n case '\\\\':\n const w = fmt.charAt(++i), t = (w === \"(\" || w === \")\") ? w : 't';\n out[out.length] = {t: t, v: w};\n ++i;\n break;\n case '_':\n out[out.length] = {t: 't', v: \" \"};\n i += 2;\n break;\n case '@': /* Text Placeholder */\n out[out.length] = {t: 'T', v: v};\n ++i;\n break;\n case 'B':\n case 'b':\n if (fmt.charAt(i + 1) === \"1\" || fmt.charAt(i + 1) === \"2\") {\n if (dt == null) {\n dt = parse_date_code(v, opts, fmt.charAt(i + 1) === \"2\");\n if (dt == null) return \"\";\n }\n out[out.length] = {t: 'X', v: fmt.substr(i, 2)};\n lst = c;\n i += 2;\n break;\n }\n /* falls through */\n case 'M':\n case 'D':\n case 'Y':\n case 'H':\n case 'S':\n case 'E':\n c = c.toLowerCase();\n /* falls through */\n case 'm':\n case 'd':\n case 'y':\n case 'h':\n case 's':\n case 'e':\n case 'g':\n if (v < 0) return \"\";\n if (dt == null) {\n dt = parse_date_code(v, opts);\n if (dt == null) return \"\";\n }\n o = c;\n while (++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o += c;\n if (c === 'm' && lst.toLowerCase() === 'h') c = 'M';\n if (c === 'h') c = hr;\n out[out.length] = {t: c, v: o};\n lst = c;\n break;\n case 'A':\n case 'a':\n const q = {t: c, v: c};\n if (dt == null) dt = parse_date_code(v, opts);\n if (fmt.substr(i, 3).toUpperCase() === \"A/P\") {\n if (dt != null) q.v = dt.H >= 12 ? \"P\" : \"A\";\n q.t = 'T';\n hr = 'h';\n i += 3;\n } else if (fmt.substr(i, 5).toUpperCase() === \"AM/PM\") {\n if (dt != null) q.v = dt.H >= 12 ? \"PM\" : \"AM\";\n q.t = 'T';\n i += 5;\n hr = 'h';\n } else {\n q.t = \"t\";\n ++i;\n }\n if (dt == null && q.t === 'T') return \"\";\n out[out.length] = q;\n lst = c;\n break;\n case '[':\n o = c;\n while (fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i);\n if (o.slice(-1) !== ']') throw 'unterminated \"[\" block: |' + o + '|';\n if (o.match(abstime)) {\n if (dt == null) {\n dt = parse_date_code(v, opts);\n if (dt == null) return \"\";\n }\n out[out.length] = {t: 'Z', v: o.toLowerCase()};\n lst = o.charAt(1);\n } else if (o.indexOf(\"$\") > -1) {\n o = (o.match(/\\$([^-\\[\\]]*)/) || [])[1] || \"$\";\n if (!fmt_is_date(fmt)) out[out.length] = {t: 't', v: o};\n }\n break;\n /* Numbers */\n case '.':\n if (dt != null) {\n o = c;\n while (++i < fmt.length && (c = fmt.charAt(i)) === \"0\") o += c;\n out[out.length] = {t: 's', v: o};\n break;\n }\n /* falls through */\n case '0':\n case '#':\n o = c;\n while ((++i < fmt.length && \"0#?.,E+-%\".indexOf(c = fmt.charAt(i)) > -1) || (c == '\\\\' && fmt.charAt(i + 1) == \"-\" && i < fmt.length - 2 && \"0#\".indexOf(fmt.charAt(i + 2)) > -1)) o += c;\n out[out.length] = {t: 'n', v: o};\n break;\n case '?':\n o = c;\n while (fmt.charAt(++i) === c) o += c;\n out[out.length] = {t: c, v: o};\n lst = c;\n break;\n case '*':\n ++i;\n if (fmt.charAt(i) === ' ' || fmt.charAt(i) === '*') ++i;\n break; // **\n case '(':\n case ')':\n out[out.length] = {t: (flen === 1 || (typeof v === 'number' && v < 0) ? 't' : c), v: c};\n ++i;\n break;\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n o = c;\n while (i < fmt.length && \"0123456789\".indexOf(fmt.charAt(++i)) > -1) o += fmt.charAt(i);\n out[out.length] = {t: 'D', v: o};\n break;\n case ' ':\n out[out.length] = {t: c, v: c};\n ++i;\n break;\n default:\n if (\",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP\".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);\n out[out.length] = {t: 't', v: c};\n ++i;\n break;\n }\n }\n let bt = 0, ss0 = 0, ssm;\n for (i = out.length - 1, lst = 't'; i >= 0; --i) {\n switch (out[i].t) {\n case 'h':\n case 'H':\n out[i].t = hr;\n lst = 'h';\n if (bt < 1) bt = 1;\n break;\n case 's':\n if ((ssm = out[i].v.match(/\\.0+$/))) ss0 = Math.max(ss0, ssm[0].length - 1);\n if (bt < 3) bt = 3;\n /* falls through */\n case 'd':\n case 'y':\n case 'M':\n case 'e':\n lst = out[i].t;\n break;\n case 'm':\n if (lst === 's') {\n out[i].t = 'M';\n if (bt < 2) bt = 2;\n }\n break;\n case 'X': /*if(out[i].v === \"B2\");*/\n break;\n case 'Z':\n if (bt < 1 && out[i].v.match(/[Hh]/)) bt = 1;\n if (bt < 2 && out[i].v.match(/[Mm]/)) bt = 2;\n if (bt < 3 && out[i].v.match(/[Ss]/)) bt = 3;\n }\n }\n switch (bt) {\n case 0:\n break;\n case 1:\n if (dt.u >= 0.5) {\n dt.u = 0;\n ++dt.S;\n }\n if (dt.S >= 60) {\n dt.S = 0;\n ++dt.M;\n }\n if (dt.M >= 60) {\n dt.M = 0;\n ++dt.H;\n }\n break;\n case 2:\n if (dt.u >= 0.5) {\n dt.u = 0;\n ++dt.S;\n }\n if (dt.S >= 60) {\n dt.S = 0;\n ++dt.M;\n }\n break;\n }\n /* replace fields */\n let nstr = \"\", jj;\n for (i = 0; i < out.length; ++i) {\n switch (out[i].t) {\n case 't':\n case 'T':\n case ' ':\n case 'D':\n break;\n case 'X':\n out[i].v = \"\";\n out[i].t = \";\";\n break;\n case 'd':\n case 'm':\n case 'y':\n case 'h':\n case 'H':\n case 'M':\n case 's':\n case 'e':\n case 'b':\n case 'Z':\n out[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0);\n out[i].t = 't';\n break;\n case 'n':\n case '(':\n case '?':\n jj = i + 1;\n while (out[jj] != null && (\n (c = out[jj].t) === \"?\" || c === \"D\" ||\n ((c === \" \" || c === \"t\") && out[jj + 1] != null && (out[jj + 1].t === '?' || out[jj + 1].t === \"t\" && out[jj + 1].v === '/')) ||\n (out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) ||\n (c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj + 1] != null && out[jj + 1].t === '?'))\n )) {\n out[i].v += out[jj].v;\n out[jj] = {v: \"\", t: \";\"};\n ++jj;\n }\n nstr += out[i].v;\n i = jj - 1;\n break;\n case 'G':\n out[i].t = 't';\n out[i].v = general_fmt(v, opts);\n break;\n }\n }\n let vv = \"\", myv, ostr;\n if (nstr.length > 0) {\n if (nstr.charCodeAt(0) === 40) /* '(' */ {\n myv = (v < 0 && nstr.charCodeAt(0) === 45 ? -v : v);\n ostr = write_num('(', nstr, myv);\n } else {\n myv = (v < 0 && flen > 1 ? -v : v);\n ostr = write_num('n', nstr, myv);\n if (myv < 0 && out[0] && out[0].t === 't') {\n ostr = ostr.substr(1);\n out[0].v = \"-\" + out[0].v;\n }\n }\n jj = ostr.length - 1;\n let decpt = out.length;\n for (i = 0; i < out.length; ++i) if (out[i] != null && out[i].t !== 't' && out[i].v.indexOf(\".\") > -1) {\n decpt = i;\n break;\n }\n let lasti = out.length;\n if (decpt === out.length && ostr.indexOf(\"E\") === -1) {\n for (i = out.length - 1; i >= 0; --i) {\n if (out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue;\n if (jj >= out[i].v.length - 1) {\n jj -= out[i].v.length;\n out[i].v = ostr.substr(jj + 1, out[i].v.length);\n } else if (jj < 0) out[i].v = \"\";\n else {\n out[i].v = ostr.substr(0, jj + 1);\n jj = -1;\n }\n out[i].t = 't';\n lasti = i;\n }\n if (jj >= 0 && lasti < out.length) out[lasti].v = ostr.substr(0, jj + 1) + out[lasti].v;\n } else if (decpt !== out.length && ostr.indexOf(\"E\") === -1) {\n jj = ostr.indexOf(\".\") - 1;\n for (i = decpt; i >= 0; --i) {\n if (out[i] == null || 'n?('.indexOf(out[i].t) === -1) continue;\n j = out[i].v.indexOf(\".\") > -1 && i === decpt ? out[i].v.indexOf(\".\") - 1 : out[i].v.length - 1;\n vv = out[i].v.substr(j + 1);\n for (; j >= 0; --j) {\n if (jj >= 0 && (out[i].v.charAt(j) === \"0\" || out[i].v.charAt(j) === \"#\")) vv = ostr.charAt(jj--) + vv;\n }\n out[i].v = vv;\n out[i].t = 't';\n lasti = i;\n }\n if (jj >= 0 && lasti < out.length) out[lasti].v = ostr.substr(0, jj + 1) + out[lasti].v;\n jj = ostr.indexOf(\".\") + 1;\n for (i = decpt; i < out.length; ++i) {\n if (out[i] == null || ('n?('.indexOf(out[i].t) === -1 && i !== decpt)) continue;\n j = out[i].v.indexOf(\".\") > -1 && i === decpt ? out[i].v.indexOf(\".\") + 1 : 0;\n vv = out[i].v.substr(0, j);\n for (; j < out[i].v.length; ++j) {\n if (jj < ostr.length) vv += ostr.charAt(jj++);\n }\n out[i].v = vv;\n out[i].t = 't';\n lasti = i;\n }\n }\n }\n for (i = 0; i < out.length; ++i) if (out[i] != null && 'n(?'.indexOf(out[i].t) > -1) {\n myv = (flen > 1 && v < 0 && i > 0 && out[i - 1].v === \"-\" ? -v : v);\n out[i].v = write_num(out[i].t, out[i].v, myv);\n out[i].t = 't';\n }\n let retval = \"\";\n for (i = 0; i !== out.length; ++i) if (out[i] != null) retval += out[i].v;\n return retval;\n}\n\nSSF._eval = eval_fmt;\nconst cfregex = /\\[[=<>]/;\nconst cfregex2 = /\\[([=<>]*)(-?\\d+\\.?\\d*)\\]/;\n\nfunction chkcond(v, rr) {\n if (rr == null) return false;\n const thresh = parseFloat(rr[2]);\n switch (rr[1]) {\n case \"=\":\n if (v === thresh) return true;\n break;\n case \">\":\n if (v > thresh) return true;\n break;\n case \"<\":\n if (v < thresh) return true;\n break;\n case \"<>\":\n if (v !== thresh) return true;\n break;\n case \">=\":\n if (v >= thresh) return true;\n break;\n case \"<=\":\n if (v <= thresh) return true;\n break;\n }\n return false;\n}\n\nfunction choose_fmt(f, v) {\n let fmt = split_fmt(f);\n let l = fmt.length, lat = fmt[l - 1].indexOf(\"@\");\n if (l < 4 && lat > -1) --l;\n if (fmt.length > 4) throw new Error(\"cannot find right format for |\" + fmt.join(\"|\") + \"|\");\n if (typeof v !== \"number\") return [4, fmt.length === 4 || lat > -1 ? fmt[fmt.length - 1] : \"@\"];\n switch (fmt.length) {\n case 1:\n fmt = lat > -1 ? [\"General\", \"General\", \"General\", fmt[0]] : [fmt[0], fmt[0], fmt[0], \"@\"];\n break;\n case 2:\n fmt = lat > -1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], \"@\"];\n break;\n case 3:\n fmt = lat > -1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], \"@\"];\n break;\n case 4:\n break;\n }\n const ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2];\n if (fmt[0].indexOf(\"[\") === -1 && fmt[1].indexOf(\"[\") === -1) return [l, ff];\n if (fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) {\n const m1 = fmt[0].match(cfregex2);\n const m2 = fmt[1].match(cfregex2);\n return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]];\n }\n return [l, ff];\n}\n\nfunction format(fmt, v, o) {\n if (o == null) o = {};\n let sfmt = \"\";\n switch (typeof fmt) {\n case \"string\":\n if (fmt === \"m/d/yy\" && o.dateNF) sfmt = o.dateNF;\n else sfmt = fmt;\n break;\n case \"number\":\n if (fmt === 14 && o.dateNF) sfmt = o.dateNF;\n else sfmt = (o.table != null ? (o.table) : table_fmt)[fmt];\n break;\n }\n if (isgeneral(sfmt, 0)) return general_fmt(v, o);\n if (v instanceof Date) v = datenum_local(v, o.date1904);\n const f = choose_fmt(sfmt, v);\n if (isgeneral(f[1])) return general_fmt(v, o);\n if (v === true) v = \"TRUE\"; else if (v === false) v = \"FALSE\";\n else if (v === \"\" || v == null) return \"\";\n return eval_fmt(f[1], v, o, f[0]);\n}\n\nfunction load_entry(fmt, idx) {\n if (typeof idx !== 'number') {\n idx = +idx || -1;\n for (let i = 0; i < 0x0188; ++i) {\n if (table_fmt[i] === undefined) {\n if (idx < 0) idx = i;\n continue;\n }\n if (table_fmt[i] === fmt) {\n idx = i;\n break;\n }\n }\n if (idx < 0) idx = 0x187;\n }\n table_fmt[idx] = fmt;\n return idx;\n}\n\n/**\n * Load format string\n * @param fmt - format\n * @param [idx] - index\n * @returns {number}\n */\nSSF.load = load_entry;\n\n/**\n * The underlying object, mapping numeric keys to format strings.\n * return {{}}\n */\nSSF._table = table_fmt;\n\n/**\n * Gets the internal format table (number to format mapping).\n * @return {{}}\n */\nSSF.get_table = function get_table() {\n return table_fmt;\n};\nSSF.load_table = function load_table(tbl) {\n for (let i = 0; i !== 0x0188; ++i)\n if (tbl[i] !== undefined) load_entry(tbl[i], i);\n};\nSSF.init_table = init_table;\n\n/**\n * Render value using format string or code.\n * If fmt is a string, it will be parsed and evaluated. If fmt is a number, the actual format will be the\n * corresponding entry in the internal format table. For a raw numeric format like 000, the value should be\n * passed as a string.\n *\n * Date arguments are interpreted in the local time of the JS client.\n *\n * @param {string|number} fmt - format\n * @param {any} v - values\n * @param {{date1904: boolean}|undefined} [o] - options\n * @returns {string|*|string|undefined}\n */\nSSF.format = format;\n\nmodule.exports = SSF;\n","/*\nstep:\n1. validate\n2. sanitize\n3. split\n4. proceed\n5. grammar\n6. combine\n*/\n\nconst defaultResult = 'ศูนย์บาทถ้วน'\nconst singleUnitStrs = [\n '',\n 'หนึ่ง',\n 'สอง',\n 'สาม',\n 'สี่',\n 'ห้า',\n 'หก',\n 'เจ็ด',\n 'แปด',\n 'เก้า'\n]\nconst placeNameStrs = [\n '',\n 'สิบ',\n 'ร้อย',\n 'พัน',\n 'หมื่น',\n 'แสน',\n 'ล้าน'\n]\n\n/**\n * @param {number[]} nums\n * @returns {string}\n */\nfunction num2Word (nums) {\n let result = ''\n const len = nums.length\n const maxLen = 7\n\n if (len > maxLen) {\n // more than million\n const overflowIndex = len - maxLen + 1\n const overflowNums = nums.slice(0, overflowIndex)\n const remainingNumbs = nums.slice(overflowIndex)\n return num2Word(overflowNums) + 'ล้าน' + num2Word(remainingNumbs)\n } else {\n for (let i = 0; i < len; i++) {\n const digit = nums[i]\n if (digit > 0) {\n result += singleUnitStrs[digit] + placeNameStrs[len - i - 1]\n }\n }\n }\n\n return result\n}\n\n/**\n * @param {string} str\n * @returns {string}\n */\nfunction grammarFix (str) {\n let result = str\n\n // \"สิบ\"\n result = result.replace('หนึ่งสิบ', 'สิบ')\n // \"ยี่สิบ\"\n result = result.replace('สองสิบ', 'ยี่สิบ')\n // \"เอ็ด\"\n const neungLen = 5\n if (result.length > neungLen &&\n result.length - result.lastIndexOf('หนึ่ง') === neungLen) {\n result = result.substr(0, result.length - neungLen) + 'เอ็ด'\n }\n\n return result\n}\n\n/**\n * Combine baht and satang\n * and also adding unit\n *\n * @param {string} baht\n * @param {string} satang\n * @returns {string}\n */\nfunction combine (baht, satang) {\n let result = ''\n\n if (baht === '' && satang === '') {\n result = defaultResult\n } else if (baht !== '' && satang === '') {\n result = baht + 'บาท' + 'ถ้วน'\n } else if (baht === '' && satang !== '') {\n result = satang + 'สตางค์'\n } else {\n result = baht + 'บาท' + satang + 'สตางค์'\n }\n\n return result\n}\n\n/**\n * Change number to Thai pronunciation string\n *\n * @param {number} num\n * @returns {string}\n */\nfunction bahttext (num) {\n let result = defaultResult\n\n // 1. validate: invalid number\n if (isNaN(num)) return result\n // 1. validate: more than\n if (num >= Number.MAX_SAFE_INTEGER) return result\n\n // 2. sanitize: ????\n\n // 3. split: baht and satang\n // e.g. 432.21 >> 432, 21\n // @todo optimize\n /** @type {string} */\n const bahtStr = Math.floor(num).toString()\n /** @type {string} */\n const satangStr = Math.round(num % 1 * 100).toString()\n\n // 3. split: convert number array\n // @todo optimize it\n /** @type {number[]} */\n const bahtArr = Array.from(bahtStr).map(Number)\n /** @type {number[]} */\n const satangArr = Array.from(satangStr).map(Number)\n\n // 4. proceed\n let baht = num2Word(bahtArr)\n let satang = num2Word(satangArr)\n\n // 5. grammar\n baht = grammarFix(baht)\n satang = grammarFix(satang)\n\n // 6. combine\n result = combine(baht, satang)\n\n return result\n}\n\nif (typeof module !== 'undefined' &&\n module.exports != null) {\n module.exports = bahttext\n}\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types, WildCard} = require('../helpers');\r\nconst H = FormulaHelpers;\r\n\r\n// Spreadsheet number format\r\nconst ssf = require('../../ssf/ssf');\r\n\r\n// Change number to Thai pronunciation string\r\nconst bahttext = require('bahttext');\r\n\r\n// full-width and half-width converter\r\nconst charsets = {\r\n latin: {halfRE: /[!-~]/g, fullRE: /[!-~]/g, delta: 0xFEE0},\r\n hangul1: {halfRE: /[ᄀ-ᄒ]/g, fullRE: /[ᆨ-ᇂ]/g, delta: -0xEDF9},\r\n hangul2: {halfRE: /[ᅡ-ᅵ]/g, fullRE: /[ᅡ-ᅵ]/g, delta: -0xEE61},\r\n kana: {\r\n delta: 0,\r\n half: \"。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚\",\r\n full: \"。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシ\" +\r\n \"スセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜\"\r\n },\r\n extras: {\r\n delta: 0,\r\n half: \"¢£¬¯¦¥₩\\u0020|←↑→↓■°\",\r\n full: \"¢£¬ ̄¦¥₩\\u3000│←↑→↓■○\"\r\n }\r\n};\r\nconst toFull = set => c => set.delta ?\r\n String.fromCharCode(c.charCodeAt(0) + set.delta) :\r\n [...set.full][[...set.half].indexOf(c)];\r\nconst toHalf = set => c => set.delta ?\r\n String.fromCharCode(c.charCodeAt(0) - set.delta) :\r\n [...set.half][[...set.full].indexOf(c)];\r\nconst re = (set, way) => set[way + \"RE\"] || new RegExp(\"[\" + set[way] + \"]\", \"g\");\r\nconst sets = Object.keys(charsets).map(i => charsets[i]);\r\nconst toFullWidth = str0 =>\r\n sets.reduce((str, set) => str.replace(re(set, \"half\"), toFull(set)), str0);\r\nconst toHalfWidth = str0 =>\r\n sets.reduce((str, set) => str.replace(re(set, \"full\"), toHalf(set)), str0);\r\n\r\nconst TextFunctions = {\r\n ASC: (text) => {\r\n text = H.accept(text, Types.STRING);\r\n return toHalfWidth(text);\r\n },\r\n\r\n BAHTTEXT: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n try {\r\n return bahttext(number);\r\n } catch (e) {\r\n throw Error(`Error in https://github.com/jojoee/bahttext \\n${e.toString()}`)\r\n }\r\n },\r\n\r\n CHAR: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number > 255 || number < 1)\r\n throw FormulaError.VALUE;\r\n return String.fromCharCode(number);\r\n },\r\n\r\n CLEAN: (text) => {\r\n text = H.accept(text, Types.STRING);\r\n return text.replace(/[\\x00-\\x1F]/g, '');\r\n },\r\n\r\n CODE: (text) => {\r\n text = H.accept(text, Types.STRING);\r\n if (text.length === 0)\r\n throw FormulaError.VALUE;\r\n return text.charCodeAt(0);\r\n },\r\n\r\n CONCAT: (...params) => {\r\n let text = '';\r\n // does not allow union\r\n H.flattenParams(params, Types.STRING, false, item => {\r\n item = H.accept(item, Types.STRING);\r\n text += item;\r\n });\r\n return text\r\n },\r\n\r\n CONCATENATE: (...params) => {\r\n let text = '';\r\n if (params.length === 0)\r\n throw Error('CONCATENATE need at least one argument.');\r\n params.forEach(param => {\r\n // does not allow range reference, array, union\r\n param = H.accept(param, Types.STRING);\r\n text += param;\r\n });\r\n\r\n return text;\r\n },\r\n\r\n DBCS: (text) => {\r\n text = H.accept(text, Types.STRING);\r\n return toFullWidth(text);\r\n },\r\n\r\n DOLLAR: (number, decimals) => {\r\n number = H.accept(number, Types.NUMBER);\r\n decimals = H.accept(decimals, Types.NUMBER, 2);\r\n const decimalString = Array(decimals).fill('0').join('');\r\n // Note: does not support locales\r\n // TODO: change currency based on user locale or settings from this library\r\n return ssf.format(`$#,##0.${decimalString}_);($#,##0.${decimalString})`, number).trim();\r\n },\r\n\r\n EXACT: (text1, text2) => {\r\n text1 = H.accept(text1, [Types.STRING]);\r\n text2 = H.accept(text2, [Types.STRING]);\r\n\r\n return text1 === text2;\r\n },\r\n\r\n FIND: (findText, withinText, startNum) => {\r\n findText = H.accept(findText, Types.STRING);\r\n withinText = H.accept(withinText, Types.STRING);\r\n startNum = H.accept(startNum, Types.NUMBER, 1);\r\n if (startNum < 1 || startNum > withinText.length)\r\n throw FormulaError.VALUE;\r\n const res = withinText.indexOf(findText, startNum - 1);\r\n if (res === -1)\r\n throw FormulaError.VALUE;\r\n return res + 1;\r\n },\r\n\r\n FINDB: (...params) => {\r\n return TextFunctions.FIND(...params);\r\n },\r\n\r\n FIXED: (number, decimals, noCommas) => {\r\n number = H.accept(number, Types.NUMBER);\r\n decimals = H.accept(decimals, Types.NUMBER, 2);\r\n noCommas = H.accept(noCommas, Types.BOOLEAN, false);\r\n\r\n const decimalString = Array(decimals).fill('0').join('');\r\n const comma = noCommas ? '' : '#,';\r\n return ssf.format(`${comma}##0.${decimalString}_);(${comma}##0.${decimalString})`, number).trim();\r\n },\r\n\r\n LEFT: (text, numChars) => {\r\n text = H.accept(text, Types.STRING);\r\n numChars = H.accept(numChars, Types.NUMBER, 1);\r\n\r\n if (numChars < 0)\r\n throw FormulaError.VALUE;\r\n if (numChars > text.length)\r\n return text;\r\n return text.slice(0, numChars);\r\n },\r\n\r\n LEFTB: (...params) => {\r\n return TextFunctions.LEFT(...params);\r\n },\r\n\r\n LEN: (text) => {\r\n text = H.accept(text, Types.STRING);\r\n return text.length;\r\n },\r\n\r\n LENB: (...params) => {\r\n return TextFunctions.LEN(...params);\r\n },\r\n\r\n LOWER: (text) => {\r\n text = H.accept(text, Types.STRING);\r\n return text.toLowerCase();\r\n },\r\n\r\n MID: (text, startNum, numChars) => {\r\n text = H.accept(text, Types.STRING);\r\n startNum = H.accept(startNum, Types.NUMBER);\r\n numChars = H.accept(numChars, Types.NUMBER);\r\n if (startNum > text.length)\r\n return '';\r\n if (startNum < 1 || numChars < 1)\r\n throw FormulaError.VALUE;\r\n return text.slice(startNum - 1, startNum + numChars - 1);\r\n },\r\n\r\n MIDB: (...params) => {\r\n return TextFunctions.MID(...params);\r\n },\r\n\r\n NUMBERVALUE: (text, decimalSeparator, groupSeparator) => {\r\n text = H.accept(text, Types.STRING);\r\n // TODO: support reading system locale and set separators\r\n decimalSeparator = H.accept(decimalSeparator, Types.STRING, '.');\r\n groupSeparator = H.accept(groupSeparator, Types.STRING, ',');\r\n\r\n if (text.length === 0)\r\n return 0;\r\n if (decimalSeparator.length === 0 || groupSeparator.length === 0)\r\n throw FormulaError.VALUE;\r\n decimalSeparator = decimalSeparator[0];\r\n groupSeparator = groupSeparator[0];\r\n if (decimalSeparator === groupSeparator\r\n || text.indexOf(decimalSeparator) < text.lastIndexOf(groupSeparator))\r\n throw FormulaError.VALUE;\r\n\r\n const res = text.replace(groupSeparator, '')\r\n .replace(decimalSeparator, '.')\r\n // remove chars that not related to number\r\n .replace(/[^\\-0-9.%()]/g, '')\r\n .match(/([(-]*)([0-9]*[.]*[0-9]+)([)]?)([%]*)/);\r\n if (!res)\r\n throw FormulaError.VALUE;\r\n // [\"-123456.78%%\", \"(-\", \"123456.78\", \")\", \"%%\"]\r\n const leftParenOrMinus = res[1].length, rightParen = res[3].length, percent = res[4].length;\r\n let number = Number(res[2]);\r\n if (leftParenOrMinus > 1 || leftParenOrMinus && !rightParen\r\n || !leftParenOrMinus && rightParen || isNaN(number))\r\n throw FormulaError.VALUE;\r\n number = number / 100 ** percent;\r\n return leftParenOrMinus ? -number : number;\r\n },\r\n\r\n PHONETIC: () => {\r\n },\r\n\r\n PROPER: (text) => {\r\n text = H.accept(text, [Types.STRING]);\r\n text = text.toLowerCase();\r\n text = text.charAt(0).toUpperCase() + text.slice(1);\r\n return text.replace(/(?:[^a-zA-Z])([a-zA-Z])/g,\r\n letter => letter.toUpperCase());\r\n },\r\n\r\n REPLACE: (old_text, start_num, num_chars, new_text) => {\r\n old_text = H.accept(old_text, [Types.STRING]);\r\n start_num = H.accept(start_num, [Types.NUMBER]);\r\n num_chars = H.accept(num_chars, [Types.NUMBER]);\r\n new_text = H.accept(new_text, [Types.STRING]);\r\n\r\n let arr = old_text.split(\"\");\r\n arr.splice(start_num - 1, num_chars, new_text);\r\n\r\n return arr.join(\"\");\r\n },\r\n\r\n REPLACEB: (...params) => {\r\n return TextFunctions.REPLACE(...params)\r\n },\r\n\r\n REPT: (text, number_times) => {\r\n text = H.accept(text, Types.STRING);\r\n number_times = H.accept(number_times, Types.NUMBER);\r\n let str = \"\";\r\n\r\n for (let i = 0; i < number_times; i++) {\r\n str += text;\r\n }\r\n return str;\r\n },\r\n\r\n RIGHT: (text, numChars) => {\r\n text = H.accept(text, Types.STRING);\r\n numChars = H.accept(numChars, Types.NUMBER, 1);\r\n\r\n if (numChars < 0)\r\n throw FormulaError.VALUE;\r\n const len = text.length;\r\n if (numChars > len)\r\n return text;\r\n return text.slice(len - numChars);\r\n },\r\n\r\n RIGHTB: (...params) => {\r\n return TextFunctions.RIGHT(...params);\r\n },\r\n\r\n SEARCH: (findText, withinText, startNum) => {\r\n findText = H.accept(findText, Types.STRING);\r\n withinText = H.accept(withinText, Types.STRING);\r\n startNum = H.accept(startNum, Types.NUMBER, 1);\r\n if (startNum < 1 || startNum > withinText.length)\r\n throw FormulaError.VALUE;\r\n\r\n // transform to js regex expression\r\n let findTextRegex = WildCard.isWildCard(findText) ? WildCard.toRegex(findText, 'i') : findText;\r\n const res = withinText.slice(startNum - 1).search(findTextRegex);\r\n if (res === -1)\r\n throw FormulaError.VALUE;\r\n return res + startNum;\r\n },\r\n\r\n SEARCHB: (...params) => {\r\n return TextFunctions.SEARCH(...params)\r\n },\r\n\r\n SUBSTITUTE: (...params) => {\r\n\r\n },\r\n\r\n T: (value) => {\r\n // extract the real parameter\r\n value = H.accept(value);\r\n if (typeof value === \"string\")\r\n return value;\r\n return '';\r\n },\r\n\r\n TEXT: (value, formatText) => {\r\n value = H.accept(value, Types.NUMBER);\r\n formatText = H.accept(formatText, Types.STRING);\r\n // I know ssf contains bugs...\r\n try {\r\n return ssf.format(formatText, value);\r\n } catch (e) {\r\n console.error(e)\r\n throw FormulaError.VALUE;\r\n }\r\n },\r\n\r\n TEXTJOIN: (...params) => {\r\n\r\n },\r\n\r\n TRIM: (text) => {\r\n text = H.accept(text, [Types.STRING]);\r\n return text.replace(/^\\s+|\\s+$/g, '')\r\n },\r\n\r\n UNICHAR: (number) => {\r\n number = H.accept(number, [Types.NUMBER]);\r\n if (number <= 0)\r\n throw FormulaError.VALUE;\r\n return String.fromCharCode(number);\r\n },\r\n\r\n UNICODE: (text) => {\r\n return TextFunctions.CODE(text);\r\n },\r\n};\r\n\r\nmodule.exports = TextFunctions;\r\n","const FormulaError = require('../formulas/error');\r\nconst {FormulaHelpers} = require('../formulas/helpers');\r\n\r\nconst Prefix = {\r\n unaryOp: (prefixes, value, isArray) => {\r\n let sign = 1;\r\n prefixes.forEach(prefix => {\r\n if (prefix === '+') {\r\n } else if (prefix === '-') {\r\n sign = -sign;\r\n } else {\r\n throw new Error(`Unrecognized prefix: ${prefix}`);\r\n }\r\n });\r\n\r\n if (value == null) {\r\n value = 0;\r\n }\r\n // positive means no changes\r\n if (sign === 1) {\r\n return value;\r\n }\r\n // negative\r\n try {\r\n value = FormulaHelpers.acceptNumber(value, isArray);\r\n } catch (e) {\r\n if (e instanceof FormulaError) {\r\n // parse number fails\r\n if (Array.isArray(value))\r\n value = value[0][0]\r\n } else\r\n throw e;\r\n }\r\n\r\n if (typeof value === \"number\" && isNaN(value)) return FormulaError.VALUE;\r\n return -value;\r\n }\r\n};\r\n\r\nconst Postfix = {\r\n percentOp: (value, postfix, isArray) => {\r\n try {\r\n value = FormulaHelpers.acceptNumber(value, isArray);\r\n } catch (e) {\r\n if (e instanceof FormulaError)\r\n return e;\r\n throw e;\r\n }\r\n if (postfix === '%') {\r\n return value / 100;\r\n }\r\n throw new Error(`Unrecognized postfix: ${postfix}`);\r\n }\r\n};\r\n\r\nconst type2Number = {'boolean': 3, 'string': 2, 'number': 1};\r\n\r\nconst Infix = {\r\n compareOp: (value1, infix, value2, isArray1, isArray2) => {\r\n if (value1 == null) value1 = 0;\r\n if (value2 == null) value2 = 0;\r\n // for array: {1,2,3}, get the first element to compare\r\n if (isArray1) {\r\n value1 = value1[0][0];\r\n }\r\n if (isArray2) {\r\n value2 = value2[0][0];\r\n }\r\n\r\n const type1 = typeof value1, type2 = typeof value2;\r\n\r\n if (type1 === type2) {\r\n // same type comparison\r\n switch (infix) {\r\n case '=':\r\n return value1 === value2;\r\n case '>':\r\n return value1 > value2;\r\n case '<':\r\n return value1 < value2;\r\n case '<>':\r\n return value1 !== value2;\r\n case '<=':\r\n return value1 <= value2;\r\n case '>=':\r\n return value1 >= value2;\r\n }\r\n } else {\r\n switch (infix) {\r\n case '=':\r\n return false;\r\n case '>':\r\n return type2Number[type1] > type2Number[type2];\r\n case '<':\r\n return type2Number[type1] < type2Number[type2];\r\n case '<>':\r\n return true;\r\n case '<=':\r\n return type2Number[type1] <= type2Number[type2];\r\n case '>=':\r\n return type2Number[type1] >= type2Number[type2];\r\n }\r\n\r\n }\r\n throw Error('Infix.compareOp: Should not reach here.');\r\n },\r\n\r\n concatOp: (value1, infix, value2, isArray1, isArray2) => {\r\n if (value1 == null) value1 = '';\r\n if (value2 == null) value2 = '';\r\n // for array: {1,2,3}, get the first element to concat\r\n if (isArray1) {\r\n value1 = value1[0][0];\r\n }\r\n if (isArray2) {\r\n value2 = value2[0][0];\r\n }\r\n\r\n const type1 = typeof value1, type2 = typeof value2;\r\n // convert boolean to string\r\n if (type1 === 'boolean')\r\n value1 = value1 ? 'TRUE' : 'FALSE';\r\n if (type2 === 'boolean')\r\n value2 = value2 ? 'TRUE' : 'FALSE';\r\n return '' + value1 + value2;\r\n },\r\n\r\n mathOp: (value1, infix, value2, isArray1, isArray2) => {\r\n if (value1 == null) value1 = 0;\r\n if (value2 == null) value2 = 0;\r\n\r\n try {\r\n value1 = FormulaHelpers.acceptNumber(value1, isArray1);\r\n value2 = FormulaHelpers.acceptNumber(value2, isArray2);\r\n } catch (e) {\r\n if (e instanceof FormulaError)\r\n return e;\r\n throw e;\r\n }\r\n\r\n switch (infix) {\r\n case '+':\r\n return value1 + value2;\r\n case '-':\r\n return value1 - value2;\r\n case '*':\r\n return value1 * value2;\r\n case '/':\r\n if (value2 === 0)\r\n return FormulaError.DIV0;\r\n return value1 / value2;\r\n case '^':\r\n return value1 ** value2;\r\n }\r\n\r\n throw Error('Infix.mathOp: Should not reach here.');\r\n },\r\n\r\n};\r\n\r\nmodule.exports = {\r\n Prefix,\r\n Postfix,\r\n Infix,\r\n Operators: {\r\n compareOp: ['<', '>', '=', '<>', '<=', '>='],\r\n concatOp: ['&'],\r\n mathOp: ['+', '-', '*', '/', '^'],\r\n }\r\n};\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types, Factorials, Criteria} = require('../helpers');\r\nconst {Infix} = require('../operators');\r\nconst H = FormulaHelpers;\r\n\r\n// Max number in excel is 2^1024-1, same as javascript, thus I will not check if number is valid in some functions.\r\n\r\n// factorials\r\nconst f = [], fd = [];\r\n\r\nfunction factorial(n) {\r\n if (n <= 100)\r\n return Factorials[n];\r\n if (f[n] > 0)\r\n return f[n];\r\n return f[n] = factorial(n - 1) * n;\r\n}\r\n\r\nfunction factorialDouble(n) {\r\n if (n === 1 || n === 0)\r\n return 1;\r\n if (n === 2)\r\n return 2;\r\n if (fd[n] > 0)\r\n return fd[n];\r\n return fd[n] = factorialDouble(n - 2) * n;\r\n}\r\n\r\n// https://support.office.com/en-us/article/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb\r\nconst MathFunctions = {\r\n ABS: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.abs(number);\r\n },\r\n\r\n AGGREGATE: (functionNum, options, ref1, ...refs) => {\r\n // functionNum = H.accept(functionNum, Types.NUMBER);\r\n // throw FormulaError.NOT_IMPLEMENTED('AGGREGATE');\r\n },\r\n\r\n ARABIC: text => {\r\n text = H.accept(text, Types.STRING).toUpperCase();\r\n // Credits: Rafa? Kukawski\r\n if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/.test(text)) {\r\n throw new FormulaError('#VALUE!', 'Invalid roman numeral in ARABIC evaluation.');\r\n }\r\n let r = 0;\r\n text.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, function (i) {\r\n r += {\r\n M: 1000,\r\n CM: 900,\r\n D: 500,\r\n CD: 400,\r\n C: 100,\r\n XC: 90,\r\n L: 50,\r\n XL: 40,\r\n X: 10,\r\n IX: 9,\r\n V: 5,\r\n IV: 4,\r\n I: 1\r\n }[i];\r\n });\r\n return r;\r\n },\r\n\r\n BASE: (number, radix, minLength) => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number < 0 || number >= 2 ** 53)\r\n throw FormulaError.NUM;\r\n radix = H.accept(radix, Types.NUMBER);\r\n if (radix < 2 || radix > 36)\r\n throw FormulaError.NUM;\r\n minLength = H.accept(minLength, Types.NUMBER, 0);\r\n if (minLength < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n const result = number.toString(radix).toUpperCase();\r\n return new Array(Math.max(minLength + 1 - result.length, 0)).join('0') + result;\r\n },\r\n\r\n CEILING: (number, significance) => {\r\n number = H.accept(number, Types.NUMBER);\r\n significance = H.accept(significance, Types.NUMBER);\r\n if (significance === 0)\r\n return 0;\r\n if (number / significance % 1 === 0)\r\n return number;\r\n const absSignificance = Math.abs(significance);\r\n const times = Math.floor(Math.abs(number) / absSignificance);\r\n if (number < 0) {\r\n // round down, away from zero\r\n const roundDown = significance < 0;\r\n return roundDown ? -absSignificance * (times + 1) : -absSignificance * (times);\r\n } else {\r\n return (times + 1) * absSignificance;\r\n }\r\n },\r\n\r\n 'CEILING.MATH': (number, significance, mode) => {\r\n number = H.accept(number, Types.NUMBER);\r\n significance = H.accept(significance, Types.NUMBER, number > 0 ? 1 : -1);\r\n // mode can be any number\r\n mode = H.accept(mode, Types.NUMBER, 0);\r\n // The Mode argument does not affect positive numbers.\r\n if (number >= 0) {\r\n return MathFunctions.CEILING(number, significance);\r\n }\r\n // if round down, away from zero, then significance\r\n const offset = mode ? significance : 0;\r\n return MathFunctions.CEILING(number, significance) - offset;\r\n },\r\n\r\n 'CEILING.PRECISE': (number, significance) => {\r\n number = H.accept(number, Types.NUMBER);\r\n significance = H.accept(significance, Types.NUMBER, 1);\r\n // always round up\r\n return MathFunctions.CEILING(number, Math.abs(significance));\r\n },\r\n\r\n COMBIN: (number, numberChosen) => {\r\n number = H.accept(number, Types.NUMBER);\r\n numberChosen = H.accept(numberChosen, Types.NUMBER);\r\n if (number < 0 || numberChosen < 0 || number < numberChosen)\r\n throw FormulaError.NUM;\r\n const nFactorial = MathFunctions.FACT(number), kFactorial = MathFunctions.FACT(numberChosen);\r\n return nFactorial / kFactorial / MathFunctions.FACT(number - numberChosen);\r\n },\r\n\r\n COMBINA: (number, numberChosen) => {\r\n number = H.accept(number, Types.NUMBER);\r\n numberChosen = H.accept(numberChosen, Types.NUMBER);\r\n // special case\r\n if ((number === 0 || number === 1) && numberChosen === 0)\r\n return 1;\r\n if (number < 0 || numberChosen < 0)\r\n throw FormulaError.NUM;\r\n return MathFunctions.COMBIN(number + numberChosen - 1, number - 1);\r\n },\r\n\r\n DECIMAL: (text, radix) => {\r\n text = H.accept(text, Types.STRING);\r\n radix = H.accept(radix, Types.NUMBER);\r\n radix = Math.trunc(radix);\r\n if (radix < 2 || radix > 36)\r\n throw FormulaError.NUM;\r\n const res = parseInt(text, radix);\r\n if (isNaN(res))\r\n throw FormulaError.NUM;\r\n return res;\r\n },\r\n\r\n DEGREES: (radians) => {\r\n radians = H.accept(radians, Types.NUMBER);\r\n return radians * (180 / Math.PI);\r\n },\r\n\r\n EVEN: (number) => {\r\n return MathFunctions.CEILING(number, -2);\r\n },\r\n\r\n EXP: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.exp(number)\r\n },\r\n\r\n FACT: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n number = Math.trunc(number);\r\n // max number = 170\r\n if (number > 170 || number < 0)\r\n throw FormulaError.NUM;\r\n if (number <= 100)\r\n return Factorials[number];\r\n return factorial(number);\r\n },\r\n\r\n FACTDOUBLE: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n number = Math.trunc(number);\r\n // max number = 170\r\n if (number < -1)\r\n throw FormulaError.NUM;\r\n if (number === -1)\r\n return 1;\r\n return factorialDouble(number);\r\n },\r\n\r\n FLOOR: (number, significance) => {\r\n number = H.accept(number, Types.NUMBER);\r\n significance = H.accept(significance, Types.NUMBER);\r\n if (significance === 0)\r\n return 0;\r\n if (number > 0 && significance < 0)\r\n throw FormulaError.NUM;\r\n if (number / significance % 1 === 0)\r\n return number;\r\n const absSignificance = Math.abs(significance);\r\n const times = Math.floor(Math.abs(number) / absSignificance);\r\n if (number < 0) {\r\n // round down, away from zero\r\n const roundDown = significance < 0;\r\n return roundDown ? -absSignificance * times : -absSignificance * (times + 1);\r\n } else {\r\n // toward zero\r\n return times * absSignificance;\r\n }\r\n },\r\n\r\n 'FLOOR.MATH': (number, significance, mode) => {\r\n number = H.accept(number, Types.NUMBER);\r\n significance = H.accept(significance, Types.NUMBER, number > 0 ? 1 : -1);\r\n\r\n // mode can be 0 or any other number, 0 means away from zero\r\n // the official documentation seems wrong\r\n mode = H.accept(mode, Types.NUMBER, 0);\r\n // The Mode argument does not affect positive numbers.\r\n if (mode === 0 || number >= 0) {\r\n // away from zero\r\n return MathFunctions.FLOOR(number, Math.abs(significance));\r\n }\r\n // towards zero, add a significance\r\n return MathFunctions.FLOOR(number, significance) + significance;\r\n },\r\n\r\n 'FLOOR.PRECISE': (number, significance) => {\r\n number = H.accept(number, Types.NUMBER);\r\n significance = H.accept(significance, Types.NUMBER, 1);\r\n // always round up\r\n return MathFunctions.FLOOR(number, Math.abs(significance));\r\n },\r\n\r\n GCD: (...params) => {\r\n const arr = [];\r\n H.flattenParams(params, null, false,\r\n (param) => {\r\n // allow array, range ref\r\n param = typeof param === 'boolean' ? NaN : Number(param);\r\n if (!isNaN(param)) {\r\n if (param < 0 || param > 9007199254740990) // 2^53\r\n throw FormulaError.NUM;\r\n arr.push(Math.trunc(param))\r\n } else\r\n throw FormulaError.VALUE;\r\n }, 0);\r\n // http://rosettacode.org/wiki/Greatest_common_divisor#JavaScript\r\n let i, y,\r\n n = params.length,\r\n x = Math.abs(arr[0]);\r\n\r\n for (i = 1; i < n; i++) {\r\n y = Math.abs(arr[i]);\r\n\r\n while (x && y) {\r\n (x > y) ? x %= y : y %= x;\r\n }\r\n x += y;\r\n }\r\n return x;\r\n },\r\n\r\n INT: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.floor(number);\r\n },\r\n\r\n 'ISO.CEILING': (...params) => {\r\n return MathFunctions['CEILING.PRECISE'](...params);\r\n },\r\n\r\n LCM: (...params) => {\r\n const arr = [];\r\n // always parse string to number if possible\r\n H.flattenParams(params, null, false,\r\n param => {\r\n param = typeof param === 'boolean' ? NaN : Number(param);\r\n if (!isNaN(param)) {\r\n if (param < 0 || param > 9007199254740990) // 2^53\r\n throw FormulaError.NUM;\r\n arr.push(Math.trunc(param))\r\n }\r\n // throw value error if can't parse to string\r\n else\r\n throw FormulaError.VALUE;\r\n }, 1);\r\n // http://rosettacode.org/wiki/Least_common_multiple#JavaScript\r\n let n = arr.length, a = Math.abs(arr[0]);\r\n for (let i = 1; i < n; i++) {\r\n let b = Math.abs(arr[i]), c = a;\r\n while (a && b) {\r\n a > b ? a %= b : b %= a;\r\n }\r\n a = Math.abs(c * arr[i]) / (a + b);\r\n }\r\n return a;\r\n },\r\n\r\n LN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.log(number);\r\n },\r\n\r\n LOG: (number, base) => {\r\n number = H.accept(number, Types.NUMBER);\r\n base = H.accept(base, Types.NUMBER, 10);\r\n\r\n return Math.log(number) / Math.log(base);\r\n },\r\n\r\n LOG10: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.log10(number);\r\n },\r\n\r\n MDETERM: (array) => {\r\n array = H.accept(array, Types.ARRAY, undefined, false, true);\r\n if (array[0].length !== array.length)\r\n throw FormulaError.VALUE;\r\n // adopted from https://github.com/numbers/numbers.js/blob/master/lib/numbers/matrix.js#L261\r\n const numRow = array.length, numCol = array[0].length;\r\n let det = 0, diagLeft, diagRight;\r\n\r\n if (numRow === 1) {\r\n return array[0][0];\r\n } else if (numRow === 2) {\r\n return array[0][0] * array[1][1] - array[0][1] * array[1][0];\r\n }\r\n\r\n for (let col = 0; col < numCol; col++) {\r\n diagLeft = array[0][col];\r\n diagRight = array[0][col];\r\n\r\n for (let row = 1; row < numRow; row++) {\r\n diagRight *= array[row][(((col + row) % numCol) + numCol) % numCol];\r\n diagLeft *= array[row][(((col - row) % numCol) + numCol) % numCol];\r\n }\r\n\r\n det += diagRight - diagLeft;\r\n }\r\n\r\n return det;\r\n },\r\n\r\n MINVERSE: (array) => {\r\n // TODO\r\n // array = H.accept(array, Types.ARRAY, null, false);\r\n // if (array[0].length !== array.length)\r\n // throw FormulaError.VALUE;\r\n // throw FormulaError.NOT_IMPLEMENTED('MINVERSE');\r\n },\r\n\r\n MMULT: (array1, array2) => {\r\n array1 = H.accept(array1, Types.ARRAY, undefined, false, true);\r\n array2 = H.accept(array2, Types.ARRAY, undefined, false, true);\r\n\r\n const aNumRows = array1.length, aNumCols = array1[0].length,\r\n bNumRows = array2.length, bNumCols = array2[0].length,\r\n m = new Array(aNumRows); // initialize array of rows\r\n\r\n if (aNumCols !== bNumRows)\r\n throw FormulaError.VALUE;\r\n\r\n for (let r = 0; r < aNumRows; r++) {\r\n m[r] = new Array(bNumCols); // initialize the current row\r\n for (let c = 0; c < bNumCols; c++) {\r\n m[r][c] = 0; // initialize the current cell\r\n for (let i = 0; i < aNumCols; i++) {\r\n const v1 = array1[r][i], v2 = array2[i][c];\r\n if (typeof v1 !== \"number\" || typeof v2 !== \"number\") throw FormulaError.VALUE;\r\n m[r][c] += array1[r][i] * array2[i][c];\r\n }\r\n }\r\n }\r\n return m;\r\n },\r\n\r\n MOD: (number, divisor) => {\r\n number = H.accept(number, Types.NUMBER);\r\n divisor = H.accept(divisor, Types.NUMBER);\r\n if (divisor === 0)\r\n throw FormulaError.DIV0;\r\n return number - divisor * MathFunctions.INT(number / divisor);\r\n\r\n },\r\n\r\n MROUND: (number, multiple) => {\r\n number = H.accept(number, Types.NUMBER);\r\n multiple = H.accept(multiple, Types.NUMBER);\r\n if (multiple === 0)\r\n return 0;\r\n if (number > 0 && multiple < 0 || number < 0 && multiple > 0)\r\n throw FormulaError.NUM;\r\n if (number / multiple % 1 === 0)\r\n return number;\r\n return Math.round(number / multiple) * multiple;\r\n },\r\n\r\n MULTINOMIAL: (...numbers) => {\r\n let numerator = 0, denominator = 1;\r\n H.flattenParams(numbers, Types.NUMBER, false, number => {\r\n if (number < 0)\r\n throw FormulaError.NUM;\r\n numerator += number;\r\n denominator *= factorial(number);\r\n });\r\n return factorial(numerator) / denominator;\r\n },\r\n\r\n MUNIT: (dimension) => {\r\n dimension = H.accept(dimension, Types.NUMBER);\r\n const matrix = [];\r\n for (let row = 0; row < dimension; row++) {\r\n const rowArr = [];\r\n for (let col = 0; col < dimension; col++) {\r\n if (row === col)\r\n rowArr.push(1);\r\n else\r\n rowArr.push(0);\r\n }\r\n matrix.push(rowArr);\r\n }\r\n return matrix;\r\n },\r\n\r\n ODD: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number === 0)\r\n return 1;\r\n let temp = Math.ceil(Math.abs(number));\r\n temp = (temp & 1) ? temp : temp + 1;\r\n return (number > 0) ? temp : -temp;\r\n },\r\n\r\n PI: () => {\r\n return Math.PI;\r\n },\r\n\r\n POWER: (number, power) => {\r\n number = H.accept(number, Types.NUMBER);\r\n power = H.accept(power, Types.NUMBER);\r\n return number ** power;\r\n },\r\n\r\n PRODUCT: (...numbers) => {\r\n let product = 1;\r\n H.flattenParams(numbers, null, true, (number, info) => {\r\n const parsedNumber = Number(number);\r\n if (info.isLiteral && !isNaN(parsedNumber)) {\r\n product *= parsedNumber;\r\n } else {\r\n if (typeof number === \"number\")\r\n product *= number;\r\n }\r\n }, 1);\r\n return product;\r\n },\r\n\r\n QUOTIENT: (numerator, denominator) => {\r\n numerator = H.accept(numerator, Types.NUMBER);\r\n denominator = H.accept(denominator, Types.NUMBER);\r\n return Math.trunc(numerator / denominator);\r\n },\r\n\r\n RADIANS: (degrees) => {\r\n degrees = H.accept(degrees, Types.NUMBER);\r\n return degrees / 180 * Math.PI;\r\n },\r\n\r\n RAND: () => {\r\n return Math.random();\r\n },\r\n\r\n RANDBETWEEN: (bottom, top) => {\r\n bottom = H.accept(bottom, Types.NUMBER);\r\n top = H.accept(top, Types.NUMBER);\r\n return Math.floor(Math.random() * (top - bottom + 1) + bottom);\r\n },\r\n\r\n ROMAN: (number, form) => {\r\n number = H.accept(number, Types.NUMBER);\r\n form = H.accept(form, Types.NUMBER, 0);\r\n if (form !== 0)\r\n throw Error('ROMAN: only allows form=0 (classic form).');\r\n // The MIT License\r\n // Copyright (c) 2008 Steven Levithan\r\n const digits = String(number).split('');\r\n const key = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'];\r\n let roman = '', i = 3;\r\n while (i--) {\r\n roman = (key[+digits.pop() + (i * 10)] || '') + roman;\r\n }\r\n return new Array(+digits.join('') + 1).join('M') + roman;\r\n },\r\n\r\n ROUND: (number, digits) => {\r\n number = H.accept(number, Types.NUMBER);\r\n digits = H.accept(digits, Types.NUMBER);\r\n\r\n const multiplier = Math.pow(10, Math.abs(digits));\r\n const sign = number > 0 ? 1 : -1;\r\n if (digits > 0) {\r\n return sign * Math.round(Math.abs(number) * multiplier) / multiplier;\r\n } else if (digits === 0) {\r\n return sign * Math.round(Math.abs(number));\r\n } else {\r\n return sign * Math.round(Math.abs(number) / multiplier) * multiplier;\r\n }\r\n },\r\n\r\n ROUNDDOWN: (number, digits) => {\r\n number = H.accept(number, Types.NUMBER);\r\n digits = H.accept(digits, Types.NUMBER);\r\n\r\n const multiplier = Math.pow(10, Math.abs(digits));\r\n const sign = number > 0 ? 1 : -1;\r\n if (digits > 0) {\r\n const offset = 1 / multiplier * 0.5;\r\n return sign * Math.round((Math.abs(number) - offset) * multiplier) / multiplier;\r\n } else if (digits === 0) {\r\n const offset = 0.5;\r\n return sign * Math.round((Math.abs(number) - offset));\r\n } else {\r\n const offset = multiplier * 0.5;\r\n return sign * Math.round((Math.abs(number) - offset) / multiplier) * multiplier;\r\n }\r\n },\r\n\r\n ROUNDUP: (number, digits) => {\r\n number = H.accept(number, Types.NUMBER);\r\n digits = H.accept(digits, Types.NUMBER);\r\n\r\n const multiplier = Math.pow(10, Math.abs(digits));\r\n const sign = number > 0 ? 1 : -1;\r\n if (digits > 0) {\r\n const offset = 1 / multiplier * 0.5;\r\n return sign * Math.round((Math.abs(number) + offset) * multiplier) / multiplier;\r\n } else if (digits === 0) {\r\n const offset = 0.5;\r\n return sign * Math.round((Math.abs(number) + offset));\r\n } else {\r\n const offset = multiplier * 0.5;\r\n return sign * Math.round((Math.abs(number) + offset) / multiplier) * multiplier;\r\n }\r\n },\r\n\r\n SERIESSUM: (x, n, m, coefficients) => {\r\n x = H.accept(x, Types.NUMBER);\r\n n = H.accept(n, Types.NUMBER);\r\n m = H.accept(m, Types.NUMBER);\r\n let i = 0, result;\r\n H.flattenParams([coefficients], Types.NUMBER, false, (coefficient) => {\r\n if (typeof coefficient !== \"number\") {\r\n throw FormulaError.VALUE;\r\n }\r\n if (i === 0) {\r\n result = coefficient * Math.pow(x, n);\r\n } else {\r\n result += coefficient * Math.pow(x, n + i * m);\r\n }\r\n i++;\r\n });\r\n return result;\r\n },\r\n\r\n SIGN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return number > 0 ? 1 : number === 0 ? 0 : -1;\r\n },\r\n\r\n SQRT: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number < 0)\r\n throw FormulaError.NUM;\r\n return Math.sqrt(number);\r\n },\r\n\r\n SQRTPI: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number < 0)\r\n throw FormulaError.NUM;\r\n return Math.sqrt(number * Math.PI);\r\n },\r\n\r\n SUBTOTAL: () => {\r\n // TODO: Finish this after statistical functions are implemented.\r\n },\r\n\r\n SUM: (...params) => {\r\n // parse string to number only when it is a literal. (not a reference)\r\n let result = 0;\r\n H.flattenParams(params, Types.NUMBER, true,\r\n (item, info) => {\r\n // literal will be parsed to given type (Type.NUMBER)\r\n if (info.isLiteral) {\r\n result += item;\r\n } else {\r\n if (typeof item === \"number\")\r\n result += item;\r\n }\r\n });\r\n return result\r\n },\r\n\r\n /**\r\n * This functions requires instance of {@link FormulaParser}.\r\n */\r\n SUMIF: (context, range, criteria, sumRange) => {\r\n const ranges = H.retrieveRanges(context, range, sumRange);\r\n range = ranges[0];\r\n sumRange = ranges[1];\r\n\r\n criteria = H.retrieveArg(context, criteria);\r\n const isCriteriaArray = criteria.isArray;\r\n // parse criteria\r\n criteria = Criteria.parse(H.accept(criteria));\r\n let sum = 0;\r\n\r\n range.forEach((row, rowNum) => {\r\n row.forEach((value, colNum) => {\r\n const valueToAdd = sumRange[rowNum][colNum];\r\n if (typeof valueToAdd !== \"number\")\r\n return;\r\n // wildcard\r\n if (criteria.op === 'wc') {\r\n if (criteria.match === criteria.value.test(value)) {\r\n sum += valueToAdd;\r\n }\r\n\r\n } else if (Infix.compareOp(value, criteria.op, criteria.value, Array.isArray(value), isCriteriaArray)) {\r\n sum += valueToAdd;\r\n }\r\n })\r\n });\r\n return sum;\r\n },\r\n\r\n SUMIFS: () => {\r\n\r\n },\r\n\r\n SUMPRODUCT: (array1, ...arrays) => {\r\n array1 = H.accept(array1, Types.ARRAY, undefined, false, true);\r\n arrays.forEach(array => {\r\n array = H.accept(array, Types.ARRAY, undefined, false, true);\r\n if (array1[0].length !== array[0].length || array1.length !== array.length)\r\n throw FormulaError.VALUE;\r\n for (let i = 0; i < array1.length; i++) {\r\n for (let j = 0; j < array1[0].length; j++) {\r\n if (typeof array1[i][j] !== \"number\")\r\n array1[i][j] = 0;\r\n if (typeof array[i][j] !== \"number\")\r\n array[i][j] = 0;\r\n array1[i][j] *= array[i][j];\r\n }\r\n }\r\n });\r\n let result = 0;\r\n\r\n array1.forEach(row => {\r\n row.forEach(value => {\r\n result += value;\r\n })\r\n });\r\n\r\n return result;\r\n },\r\n\r\n SUMSQ: (...params) => {\r\n // parse string to number only when it is a literal. (not a reference)\r\n let result = 0;\r\n H.flattenParams(params, Types.NUMBER, true,\r\n (item, info) => {\r\n // literal will be parsed to given type (Type.NUMBER)\r\n if (info.isLiteral) {\r\n result += item ** 2;\r\n } else {\r\n if (typeof item === \"number\")\r\n result += item ** 2;\r\n }\r\n });\r\n return result\r\n },\r\n\r\n SUMX2MY2: (arrayX, arrayY) => {\r\n const x = [], y = [];\r\n let sum = 0;\r\n H.flattenParams([arrayX], null, false, (item, info) => {\r\n x.push(item);\r\n });\r\n H.flattenParams([arrayY], null, false, (item, info) => {\r\n y.push(item);\r\n });\r\n if (x.length !== y.length)\r\n throw FormulaError.NA;\r\n for (let i = 0; i < x.length; i++) {\r\n if (typeof x[i] === \"number\" && typeof y[i] === \"number\")\r\n sum += x[i] ** 2 - y[i] ** 2\r\n }\r\n return sum;\r\n },\r\n\r\n SUMX2PY2: (arrayX, arrayY) => {\r\n const x = [], y = [];\r\n let sum = 0;\r\n H.flattenParams([arrayX], null, false, (item, info) => {\r\n x.push(item);\r\n });\r\n H.flattenParams([arrayY], null, false, (item, info) => {\r\n y.push(item);\r\n });\r\n if (x.length !== y.length)\r\n throw FormulaError.NA;\r\n for (let i = 0; i < x.length; i++) {\r\n if (typeof x[i] === \"number\" && typeof y[i] === \"number\")\r\n sum += x[i] ** 2 + y[i] ** 2\r\n }\r\n return sum;\r\n },\r\n\r\n SUMXMY2: (arrayX, arrayY) => {\r\n const x = [], y = [];\r\n let sum = 0;\r\n H.flattenParams([arrayX], null, false, (item, info) => {\r\n x.push(item);\r\n });\r\n H.flattenParams([arrayY], null, false, (item, info) => {\r\n y.push(item);\r\n });\r\n if (x.length !== y.length)\r\n throw FormulaError.NA;\r\n for (let i = 0; i < x.length; i++) {\r\n if (typeof x[i] === \"number\" && typeof y[i] === \"number\")\r\n sum += (x[i] - y[i]) ** 2;\r\n }\r\n return sum;\r\n },\r\n\r\n TRUNC: (number) => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.trunc(number);\r\n },\r\n};\r\n\r\n\r\nmodule.exports = MathFunctions;\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types} = require('../helpers');\r\nconst H = FormulaHelpers;\r\nconst MAX_NUMBER = 2 ** 27 - 1;\r\n\r\n// https://support.office.com/en-us/article/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb\r\nconst TrigFunctions = {\r\n ACOS: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number > 1 || number < -1)\r\n throw FormulaError.NUM;\r\n return Math.acos(number);\r\n },\r\n\r\n ACOSH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number < 1)\r\n throw FormulaError.NUM;\r\n return Math.acosh(number);\r\n },\r\n\r\n ACOT: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.PI / 2 - Math.atan(number);\r\n },\r\n\r\n ACOTH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) <= 1)\r\n throw FormulaError.NUM;\r\n return Math.atanh(1 / number);\r\n },\r\n\r\n ASIN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number > 1 || number < -1)\r\n throw FormulaError.NUM;\r\n return Math.asin(number);\r\n },\r\n\r\n ASINH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.asinh(number);\r\n },\r\n\r\n ATAN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.atan(number);\r\n },\r\n\r\n ATAN2: (x, y) => {\r\n x = H.accept(x, Types.NUMBER);\r\n y = H.accept(y, Types.NUMBER);\r\n if (y === 0 && x === 0)\r\n throw FormulaError.DIV0;\r\n return Math.atan2(y, x);\r\n },\r\n\r\n ATANH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > 1)\r\n throw FormulaError.NUM;\r\n return Math.atanh(number);\r\n },\r\n\r\n COS: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > MAX_NUMBER)\r\n throw FormulaError.NUM;\r\n return Math.cos(number);\r\n },\r\n\r\n COSH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.cosh(number);\r\n },\r\n\r\n COT: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > MAX_NUMBER)\r\n throw FormulaError.NUM;\r\n if (number === 0)\r\n throw FormulaError.DIV0;\r\n return 1 / Math.tan(number);\r\n },\r\n\r\n COTH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number === 0)\r\n throw FormulaError.DIV0;\r\n return 1 / Math.tanh(number);\r\n },\r\n\r\n CSC: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > MAX_NUMBER)\r\n throw FormulaError.NUM;\r\n return 1 / Math.sin(number);\r\n },\r\n\r\n CSCH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (number === 0)\r\n throw FormulaError.DIV0;\r\n return 1 / Math.sinh(number);\r\n },\r\n\r\n SEC: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > MAX_NUMBER)\r\n throw FormulaError.NUM;\r\n return 1 / Math.cos(number);\r\n },\r\n\r\n SECH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return 1 / Math.cosh(number);\r\n },\r\n\r\n SIN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > MAX_NUMBER)\r\n throw FormulaError.NUM;\r\n return Math.sin(number);\r\n },\r\n\r\n SINH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.sinh(number);\r\n },\r\n\r\n TAN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n if (Math.abs(number) > MAX_NUMBER)\r\n throw FormulaError.NUM;\r\n return Math.tan(number);\r\n },\r\n\r\n TANH: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n return Math.tanh(number);\r\n },\r\n};\r\n\r\nmodule.exports = TrigFunctions;\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types,} = require('../helpers');\r\nconst H = FormulaHelpers;\r\n\r\n/**\r\n * Get the number of values that evaluate to true and false.\r\n * Cast Number and \"TRUE\", \"FALSE\" to boolean.\r\n * Ignore unrelated values.\r\n * @ignore\r\n * @param {any[]} params\r\n * @return {number[]}\r\n */\r\nfunction getNumLogicalValue(params) {\r\n let numTrue = 0, numFalse = 0;\r\n H.flattenParams(params, null, true, val => {\r\n const type = typeof val;\r\n if (type === \"string\") {\r\n if (val === 'TRUE')\r\n val = true;\r\n else if (val === 'FALSE')\r\n val = false;\r\n } else if (type === \"number\")\r\n val = Boolean(val);\r\n\r\n if (typeof val === \"boolean\") {\r\n if (val === true)\r\n numTrue++;\r\n else\r\n numFalse++;\r\n }\r\n });\r\n return [numTrue, numFalse];\r\n}\r\n\r\nconst LogicalFunctions = {\r\n AND: (...params) => {\r\n const [numTrue, numFalse] = getNumLogicalValue(params);\r\n\r\n // OR returns #VALUE! if no logical values are found.\r\n if (numTrue === 0 && numFalse === 0)\r\n return FormulaError.VALUE;\r\n\r\n return numTrue > 0 && numFalse === 0;\r\n },\r\n\r\n FALSE: () => {\r\n return false;\r\n },\r\n\r\n // Special\r\n IF: (context, logicalTest, valueIfTrue, valueIfFalse) => {\r\n logicalTest = H.accept(logicalTest, Types.BOOLEAN);\r\n valueIfTrue = H.accept(valueIfTrue); // do not parse type\r\n valueIfFalse = H.accept(valueIfFalse, null, false); // do not parse type\r\n\r\n return logicalTest ? valueIfTrue : valueIfFalse;\r\n },\r\n\r\n IFERROR: (value, valueIfError) => {\r\n return value.value instanceof FormulaError ? H.accept(valueIfError) : H.accept(value);\r\n },\r\n\r\n IFNA: function (value, valueIfNa) {\r\n if (arguments.length > 2)\r\n throw FormulaError.TOO_MANY_ARGS('IFNA');\r\n return FormulaError.NA.equals(value.value) ? H.accept(valueIfNa) : H.accept(value);\r\n },\r\n\r\n IFS: (...params) => {\r\n if (params.length % 2 !== 0)\r\n return new FormulaError('#N/A', 'IFS expects all arguments after position 0 to be in pairs.');\r\n\r\n for (let i = 0; i < params.length / 2; i++) {\r\n const logicalTest = H.accept(params[i * 2], Types.BOOLEAN);\r\n const valueIfTrue = H.accept(params[i * 2 + 1]);\r\n if (logicalTest)\r\n return valueIfTrue;\r\n }\r\n\r\n return FormulaError.NA;\r\n },\r\n\r\n NOT: (logical) => {\r\n logical = H.accept(logical, Types.BOOLEAN);\r\n return !logical;\r\n },\r\n\r\n OR: (...params) => {\r\n const [numTrue, numFalse] = getNumLogicalValue(params);\r\n\r\n // OR returns #VALUE! if no logical values are found.\r\n if (numTrue === 0 && numFalse === 0)\r\n return FormulaError.VALUE;\r\n\r\n return numTrue > 0;\r\n },\r\n\r\n SWITCH: (...params) => {\r\n\r\n },\r\n\r\n TRUE: () => {\r\n return true;\r\n },\r\n\r\n XOR: (...params) => {\r\n const [numTrue, numFalse] = getNumLogicalValue(params);\r\n\r\n // XOR returns #VALUE! if no logical values are found.\r\n if (numTrue === 0 && numFalse === 0)\r\n return FormulaError.VALUE;\r\n\r\n return numTrue % 2 === 1;\r\n },\r\n};\r\n\r\nmodule.exports = LogicalFunctions;\r\n","/* bessel.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported BESSEL */\nvar BESSEL;\n(function (factory) {\n /*jshint ignore:start */\n if(typeof DO_NOT_EXPORT_BESSEL === 'undefined') {\n if('object' === typeof exports) {\n factory(exports);\n } else if ('function' === typeof define && define.amd) {\n define(function () {\n var module = {};\n factory(module);\n return module;\n });\n } else {\n factory(BESSEL = {});\n }\n } else {\n factory(BESSEL = {});\n }\n /*jshint ignore:end */\n}(function(BESSEL) {\nBESSEL.version = '1.0.2';\nvar M = Math;\n\nfunction _horner(arr, v) { for(var i = 0, z = 0; i < arr.length; ++i) z = v * z + arr[i]; return z; }\nfunction _bessel_iter(x, n, f0, f1, sign) {\n if(n === 0) return f0;\n if(n === 1) return f1;\n var tdx = 2 / x, f2 = f1;\n for(var o = 1; o < n; ++o) {\n f2 = f1 * o * tdx + sign * f0;\n f0 = f1; f1 = f2;\n }\n return f2;\n}\nfunction _bessel_wrap(bessel0, bessel1, name, nonzero, sign) {\n return function bessel(x,n) {\n if(nonzero) {\n if(x === 0) return (nonzero == 1 ? -Infinity : Infinity);\n else if(x < 0) return NaN;\n }\n if(n === 0) return bessel0(x);\n if(n === 1) return bessel1(x);\n if(n < 0) return NaN;\n n|=0;\n var b0 = bessel0(x), b1 = bessel1(x);\n return _bessel_iter(x, n, b0, b1, sign);\n };\n}\nvar besselj = (function() {\n var W = 0.636619772; // 2 / Math.PI\n\n var b0_a1a = [57568490574.0, -13362590354.0, 651619640.7, -11214424.18, 77392.33017, -184.9052456].reverse();\n var b0_a2a = [57568490411.0, 1029532985.0, 9494680.718, 59272.64853, 267.8532712, 1.0].reverse();\n var b0_a1b = [1.0, -0.1098628627e-2, 0.2734510407e-4, -0.2073370639e-5, 0.2093887211e-6].reverse();\n var b0_a2b = [-0.1562499995e-1, 0.1430488765e-3, -0.6911147651e-5, 0.7621095161e-6, -0.934935152e-7].reverse();\n\n function bessel0(x) {\n var a=0, a1=0, a2=0, y = x * x;\n if(x < 8) {\n a1 = _horner(b0_a1a, y);\n a2 = _horner(b0_a2a, y);\n a = a1 / a2;\n } else {\n var xx = x - 0.785398164;\n y = 64 / y;\n a1 = _horner(b0_a1b, y);\n a2 = _horner(b0_a2b, y);\n a = M.sqrt(W/x)*(M.cos(xx)*a1-M.sin(xx)*a2*8/x);\n }\n return a;\n }\n\n var b1_a1a = [72362614232.0, -7895059235.0, 242396853.1, -2972611.439, 15704.48260, -30.16036606].reverse();\n var b1_a2a = [144725228442.0, 2300535178.0, 18583304.74, 99447.43394, 376.9991397, 1.0].reverse();\n var b1_a1b = [1.0, 0.183105e-2, -0.3516396496e-4, 0.2457520174e-5, -0.240337019e-6].reverse();\n var b1_a2b = [0.04687499995, -0.2002690873e-3, 0.8449199096e-5, -0.88228987e-6, 0.105787412e-6].reverse();\n\n function bessel1(x) {\n var a=0, a1=0, a2=0, y = x*x, xx = M.abs(x) - 2.356194491;\n if(Math.abs(x)< 8) {\n a1 = x*_horner(b1_a1a, y);\n a2 = _horner(b1_a2a, y);\n a = a1 / a2;\n } else {\n y = 64 / y;\n a1=_horner(b1_a1b, y);\n a2=_horner(b1_a2b, y);\n a=M.sqrt(W/M.abs(x))*(M.cos(xx)*a1-M.sin(xx)*a2*8/M.abs(x));\n if(x < 0) a = -a;\n }\n return a;\n }\n\n return function besselj(x, n) {\n n = Math.round(n);\n if(!isFinite(x)) return isNaN(x) ? x : 0;\n if(n < 0) return ((n%2)?-1:1)*besselj(x, -n);\n if(x < 0) return ((n%2)?-1:1)*besselj(-x, n);\n if(n === 0) return bessel0(x);\n if(n === 1) return bessel1(x);\n if(x === 0) return 0;\n\n var ret=0.0;\n if(x > n) {\n ret = _bessel_iter(x, n, bessel0(x), bessel1(x),-1);\n } else {\n var m=2*M.floor((n+M.floor(M.sqrt(40*n)))/2);\n var jsum=false;\n var bjp=0.0, sum=0.0;\n var bj=1.0, bjm = 0.0;\n var tox = 2 / x;\n for (var j=m;j>0;j--) {\n bjm=j*tox*bj-bjp;\n bjp=bj;\n bj=bjm;\n if (M.abs(bj) > 1E10) {\n bj *= 1E-10;\n bjp *= 1E-10;\n ret *= 1E-10;\n sum *= 1E-10;\n }\n if (jsum) sum += bj;\n jsum=!jsum;\n if (j == n) ret=bjp;\n }\n sum=2.0*sum-bj;\n ret /= sum;\n }\n return ret;\n };\n})();\nvar bessely = (function() {\n var W = 0.636619772;\n\n var b0_a1a = [-2957821389.0, 7062834065.0, -512359803.6, 10879881.29, -86327.92757, 228.4622733].reverse();\n var b0_a2a = [40076544269.0, 745249964.8, 7189466.438, 47447.26470, 226.1030244, 1.0].reverse();\n var b0_a1b = [1.0, -0.1098628627e-2, 0.2734510407e-4, -0.2073370639e-5, 0.2093887211e-6].reverse();\n var b0_a2b = [-0.1562499995e-1, 0.1430488765e-3, -0.6911147651e-5, 0.7621095161e-6, -0.934945152e-7].reverse();\n\n function bessel0(x) {\n var a=0, a1=0, a2=0, y = x * x, xx = x - 0.785398164;\n if(x < 8) {\n a1 = _horner(b0_a1a, y);\n a2 = _horner(b0_a2a, y);\n a = a1/a2 + W * besselj(x,0) * M.log(x);\n } else {\n y = 64 / y;\n a1 = _horner(b0_a1b, y);\n a2 = _horner(b0_a2b, y);\n a = M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n }\n return a;\n }\n\n var b1_a1a = [-0.4900604943e13, 0.1275274390e13, -0.5153438139e11, 0.7349264551e9, -0.4237922726e7, 0.8511937935e4].reverse();\n var b1_a2a = [0.2499580570e14, 0.4244419664e12, 0.3733650367e10, 0.2245904002e8, 0.1020426050e6, 0.3549632885e3, 1].reverse();\n var b1_a1b = [1.0, 0.183105e-2, -0.3516396496e-4, 0.2457520174e-5, -0.240337019e-6].reverse();\n var b1_a2b = [0.04687499995, -0.2002690873e-3, 0.8449199096e-5, -0.88228987e-6, 0.105787412e-6].reverse();\n\n function bessel1(x) {\n var a=0, a1=0, a2=0, y = x*x, xx = x - 2.356194491;\n if(x < 8) {\n a1 = x*_horner(b1_a1a, y);\n a2 = _horner(b1_a2a, y);\n a = a1/a2 + W * (besselj(x,1) * M.log(x) - 1 / x);\n } else {\n y = 64 / y;\n a1=_horner(b1_a1b, y);\n a2=_horner(b1_a2b, y);\n a=M.sqrt(W/x)*(M.sin(xx)*a1+M.cos(xx)*a2*8/x);\n }\n return a;\n }\n\n return _bessel_wrap(bessel0, bessel1, 'BESSELY', 1, -1);\n})();\nvar besseli = (function() {\n var b0_a = [1.0, 3.5156229, 3.0899424, 1.2067492, 0.2659732, 0.360768e-1, 0.45813e-2].reverse();\n var b0_b = [0.39894228, 0.1328592e-1, 0.225319e-2, -0.157565e-2, 0.916281e-2, -0.2057706e-1, 0.2635537e-1, -0.1647633e-1, 0.392377e-2].reverse();\n\n function bessel0(x) {\n if(x <= 3.75) return _horner(b0_a, x*x/(3.75*3.75));\n return M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b0_b, 3.75/M.abs(x));\n }\n\n var b1_a = [0.5, 0.87890594, 0.51498869, 0.15084934, 0.2658733e-1, 0.301532e-2, 0.32411e-3].reverse();\n var b1_b = [0.39894228, -0.3988024e-1, -0.362018e-2, 0.163801e-2, -0.1031555e-1, 0.2282967e-1, -0.2895312e-1, 0.1787654e-1, -0.420059e-2].reverse();\n\n function bessel1(x) {\n if(x < 3.75) return x * _horner(b1_a, x*x/(3.75*3.75));\n return (x < 0 ? -1 : 1) * M.exp(M.abs(x))/M.sqrt(M.abs(x))*_horner(b1_b, 3.75/M.abs(x));\n }\n\n return function besseli(x, n) {\n n = Math.round(n);\n if(n === 0) return bessel0(x);\n if(n === 1) return bessel1(x);\n if(n < 0) return NaN;\n if(M.abs(x) === 0) return 0;\n if(x == Infinity) return Infinity;\n\n var ret = 0.0, j, tox = 2 / M.abs(x), bip = 0.0, bi=1.0, bim=0.0;\n var m=2*M.round((n+M.round(M.sqrt(40*n)))/2);\n for (j=m;j>0;j--) {\n bim=j*tox*bi + bip;\n bip=bi; bi=bim;\n if (M.abs(bi) > 1E10) {\n bi *= 1E-10;\n bip *= 1E-10;\n ret *= 1E-10;\n }\n if(j == n) ret = bip;\n }\n ret *= besseli(x, 0) / bi;\n return x < 0 && (n%2) ? -ret : ret;\n };\n\n})();\n\nvar besselk = (function() {\n var b0_a = [-0.57721566, 0.42278420, 0.23069756, 0.3488590e-1, 0.262698e-2, 0.10750e-3, 0.74e-5].reverse();\n var b0_b = [1.25331414, -0.7832358e-1, 0.2189568e-1, -0.1062446e-1, 0.587872e-2, -0.251540e-2, 0.53208e-3].reverse();\n\n function bessel0(x) {\n if(x <= 2) return -M.log(x/2) * besseli(x,0) + _horner(b0_a, x*x/4);\n return M.exp(-x) / M.sqrt(x) * _horner(b0_b, 2/x);\n }\n\n var b1_a = [1.0, 0.15443144, -0.67278579, -0.18156897, -0.1919402e-1, -0.110404e-2, -0.4686e-4].reverse();\n var b1_b = [1.25331414, 0.23498619, -0.3655620e-1, 0.1504268e-1, -0.780353e-2, 0.325614e-2, -0.68245e-3].reverse();\n\n function bessel1(x) {\n if(x <= 2) return M.log(x/2) * besseli(x,1) + (1/x) * _horner(b1_a, x*x/4);\n return M.exp(-x)/M.sqrt(x)*_horner(b1_b, 2/x);\n }\n\n return _bessel_wrap(bessel0, bessel1, 'BESSELK', 2, 1);\n})();\nBESSEL.besselj = besselj;\nBESSEL.bessely = bessely;\nBESSEL.besseli = besseli;\nBESSEL.besselk = besselk;\n}));\n","(function (window, factory) {\n if (typeof exports === 'object') {\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n define(factory);\n } else {\n window.jStat = factory();\n }\n})(this, function () {\nvar jStat = (function(Math, undefined) {\n\n// For quick reference.\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\nvar toString = Object.prototype.toString;\n\n// Calculate correction for IEEE error\n// TODO: This calculation can be improved.\nfunction calcRdx(n, m) {\n var val = n > m ? n : m;\n return Math.pow(10,\n 17 - ~~(Math.log(((val > 0) ? val : -val)) * Math.LOG10E));\n}\n\n\nvar isArray = Array.isArray || function isArray(arg) {\n return toString.call(arg) === '[object Array]';\n};\n\n\nfunction isFunction(arg) {\n return toString.call(arg) === '[object Function]';\n}\n\n\nfunction isNumber(num) {\n return (typeof num === 'number') ? num - num === 0 : false;\n}\n\n\n// Converts the jStat matrix to vector.\nfunction toVector(arr) {\n return concat.apply([], arr);\n}\n\n\n// The one and only jStat constructor.\nfunction jStat() {\n return new jStat._init(arguments);\n}\n\n\n// TODO: Remove after all references in src files have been removed.\njStat.fn = jStat.prototype;\n\n\n// By separating the initializer from the constructor it's easier to handle\n// always returning a new instance whether \"new\" was used or not.\njStat._init = function _init(args) {\n // If first argument is an array, must be vector or matrix.\n if (isArray(args[0])) {\n // Check if matrix.\n if (isArray(args[0][0])) {\n // See if a mapping function was also passed.\n if (isFunction(args[1]))\n args[0] = jStat.map(args[0], args[1]);\n // Iterate over each is faster than this.push.apply(this, args[0].\n for (var i = 0; i < args[0].length; i++)\n this[i] = args[0][i];\n this.length = args[0].length;\n\n // Otherwise must be a vector.\n } else {\n this[0] = isFunction(args[1]) ? jStat.map(args[0], args[1]) : args[0];\n this.length = 1;\n }\n\n // If first argument is number, assume creation of sequence.\n } else if (isNumber(args[0])) {\n this[0] = jStat.seq.apply(null, args);\n this.length = 1;\n\n // Handle case when jStat object is passed to jStat.\n } else if (args[0] instanceof jStat) {\n // Duplicate the object and pass it back.\n return jStat(args[0].toArray());\n\n // Unexpected argument value, return empty jStat object.\n // TODO: This is strange behavior. Shouldn't this throw or some such to let\n // the user know they had bad arguments?\n } else {\n this[0] = [];\n this.length = 1;\n }\n\n return this;\n};\njStat._init.prototype = jStat.prototype;\njStat._init.constructor = jStat;\n\n\n// Utility functions.\n// TODO: for internal use only?\njStat.utils = {\n calcRdx: calcRdx,\n isArray: isArray,\n isFunction: isFunction,\n isNumber: isNumber,\n toVector: toVector\n};\n\n\njStat._random_fn = Math.random;\njStat.setRandom = function setRandom(fn) {\n if (typeof fn !== 'function')\n throw new TypeError('fn is not a function');\n jStat._random_fn = fn;\n};\n\n\n// Easily extend the jStat object.\n// TODO: is this seriously necessary?\njStat.extend = function extend(obj) {\n var i, j;\n\n if (arguments.length === 1) {\n for (j in obj)\n jStat[j] = obj[j];\n return this;\n }\n\n for (i = 1; i < arguments.length; i++) {\n for (j in arguments[i])\n obj[j] = arguments[i][j];\n }\n\n return obj;\n};\n\n\n// Returns the number of rows in the matrix.\njStat.rows = function rows(arr) {\n return arr.length || 1;\n};\n\n\n// Returns the number of columns in the matrix.\njStat.cols = function cols(arr) {\n return arr[0].length || 1;\n};\n\n\n// Returns the dimensions of the object { rows: i, cols: j }\njStat.dimensions = function dimensions(arr) {\n return {\n rows: jStat.rows(arr),\n cols: jStat.cols(arr)\n };\n};\n\n\n// Returns a specified row as a vector or return a sub matrix by pick some rows\njStat.row = function row(arr, index) {\n if (isArray(index)) {\n return index.map(function(i) {\n return jStat.row(arr, i);\n })\n }\n return arr[index];\n};\n\n\n// return row as array\n// rowa([[1,2],[3,4]],0) -> [1,2]\njStat.rowa = function rowa(arr, i) {\n return jStat.row(arr, i);\n};\n\n\n// Returns the specified column as a vector or return a sub matrix by pick some\n// columns\njStat.col = function col(arr, index) {\n if (isArray(index)) {\n var submat = jStat.arange(arr.length).map(function() {\n return new Array(index.length);\n });\n index.forEach(function(ind, i){\n jStat.arange(arr.length).forEach(function(j) {\n submat[j][i] = arr[j][ind];\n });\n });\n return submat;\n }\n var column = new Array(arr.length);\n for (var i = 0; i < arr.length; i++)\n column[i] = [arr[i][index]];\n return column;\n};\n\n\n// return column as array\n// cola([[1,2],[3,4]],0) -> [1,3]\njStat.cola = function cola(arr, i) {\n return jStat.col(arr, i).map(function(a){ return a[0] });\n};\n\n\n// Returns the diagonal of the matrix\njStat.diag = function diag(arr) {\n var nrow = jStat.rows(arr);\n var res = new Array(nrow);\n for (var row = 0; row < nrow; row++)\n res[row] = [arr[row][row]];\n return res;\n};\n\n\n// Returns the anti-diagonal of the matrix\njStat.antidiag = function antidiag(arr) {\n var nrow = jStat.rows(arr) - 1;\n var res = new Array(nrow);\n for (var i = 0; nrow >= 0; nrow--, i++)\n res[i] = [arr[i][nrow]];\n return res;\n};\n\n// Transpose a matrix or array.\njStat.transpose = function transpose(arr) {\n var obj = [];\n var objArr, rows, cols, j, i;\n\n // Make sure arr is in matrix format.\n if (!isArray(arr[0]))\n arr = [arr];\n\n rows = arr.length;\n cols = arr[0].length;\n\n for (i = 0; i < cols; i++) {\n objArr = new Array(rows);\n for (j = 0; j < rows; j++)\n objArr[j] = arr[j][i];\n obj.push(objArr);\n }\n\n // If obj is vector, return only single array.\n return obj.length === 1 ? obj[0] : obj;\n};\n\n\n// Map a function to an array or array of arrays.\n// \"toAlter\" is an internal variable.\njStat.map = function map(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n for (col = 0; col < ncol; col++)\n res[row][col] = func(arr[row][col], row, col);\n }\n\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Cumulatively combine the elements of an array or array of arrays using a function.\njStat.cumreduce = function cumreduce(arr, func, toAlter) {\n var row, nrow, ncol, res, col;\n\n if (!isArray(arr[0]))\n arr = [arr];\n\n nrow = arr.length;\n ncol = arr[0].length;\n res = toAlter ? arr : new Array(nrow);\n\n for (row = 0; row < nrow; row++) {\n // if the row doesn't exist, create it\n if (!res[row])\n res[row] = new Array(ncol);\n if (ncol > 0)\n res[row][0] = arr[row][0];\n for (col = 1; col < ncol; col++)\n res[row][col] = func(res[row][col-1], arr[row][col]);\n }\n return res.length === 1 ? res[0] : res;\n};\n\n\n// Destructively alter an array.\njStat.alter = function alter(arr, func) {\n return jStat.map(arr, func, true);\n};\n\n\n// Generate a rows x cols matrix according to the supplied function.\njStat.create = function create(rows, cols, func) {\n var res = new Array(rows);\n var i, j;\n\n if (isFunction(cols)) {\n func = cols;\n cols = rows;\n }\n\n for (i = 0; i < rows; i++) {\n res[i] = new Array(cols);\n for (j = 0; j < cols; j++)\n res[i][j] = func(i, j);\n }\n\n return res;\n};\n\n\nfunction retZero() { return 0; }\n\n\n// Generate a rows x cols matrix of zeros.\njStat.zeros = function zeros(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retZero);\n};\n\n\nfunction retOne() { return 1; }\n\n\n// Generate a rows x cols matrix of ones.\njStat.ones = function ones(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retOne);\n};\n\n\n// Generate a rows x cols matrix of uniformly random numbers.\njStat.rand = function rand(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, jStat._random_fn);\n};\n\n\nfunction retIdent(i, j) { return i === j ? 1 : 0; }\n\n\n// Generate an identity matrix of size row x cols.\njStat.identity = function identity(rows, cols) {\n if (!isNumber(cols))\n cols = rows;\n return jStat.create(rows, cols, retIdent);\n};\n\n\n// Tests whether a matrix is symmetric\njStat.symmetric = function symmetric(arr) {\n var size = arr.length;\n var row, col;\n\n if (arr.length !== arr[0].length)\n return false;\n\n for (row = 0; row < size; row++) {\n for (col = 0; col < size; col++)\n if (arr[col][row] !== arr[row][col])\n return false;\n }\n\n return true;\n};\n\n\n// Set all values to zero.\njStat.clear = function clear(arr) {\n return jStat.alter(arr, retZero);\n};\n\n\n// Generate sequence.\njStat.seq = function seq(min, max, length, func) {\n if (!isFunction(func))\n func = false;\n\n var arr = [];\n var hival = calcRdx(min, max);\n var step = (max * hival - min * hival) / ((length - 1) * hival);\n var current = min;\n var cnt;\n\n // Current is assigned using a technique to compensate for IEEE error.\n // TODO: Needs better implementation.\n for (cnt = 0;\n current <= max && cnt < length;\n cnt++, current = (min * hival + step * hival * cnt) / hival) {\n arr.push((func ? func(current, cnt) : current));\n }\n\n return arr;\n};\n\n\n// arange(5) -> [0,1,2,3,4]\n// arange(1,5) -> [1,2,3,4]\n// arange(5,1,-1) -> [5,4,3,2]\njStat.arange = function arange(start, end, step) {\n var rl = [];\n var i;\n step = step || 1;\n if (end === undefined) {\n end = start;\n start = 0;\n }\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(i);\n }\n } else {\n for (i = start; i > end; i += step) {\n rl.push(i);\n }\n }\n return rl;\n};\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// slice(A,{row:{end:2},col:{start:1}}) -> [[2,3],[5,6]]\n// slice(A,1,{start:1}) -> [5,6]\n// as numpy code A[:2,1:]\njStat.slice = (function(){\n function _slice(list, start, end, step) {\n // note it's not equal to range.map mode it's a bug\n var i;\n var rl = [];\n var length = list.length;\n if (start === undefined && end === undefined && step === undefined) {\n return jStat.copy(list);\n }\n\n start = start || 0;\n end = end || list.length;\n start = start >= 0 ? start : length + start;\n end = end >= 0 ? end : length + end;\n step = step || 1;\n if (start === end || step === 0) {\n return [];\n }\n if (start < end && step < 0) {\n return [];\n }\n if (start > end && step > 0) {\n return [];\n }\n if (step > 0) {\n for (i = start; i < end; i += step) {\n rl.push(list[i]);\n }\n } else {\n for (i = start; i > end;i += step) {\n rl.push(list[i]);\n }\n }\n return rl;\n }\n\n function slice(list, rcSlice) {\n var colSlice, rowSlice;\n rcSlice = rcSlice || {};\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return list[rcSlice.row][rcSlice.col];\n var row = jStat.rowa(list, rcSlice.row);\n colSlice = rcSlice.col || {};\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n }\n\n if (isNumber(rcSlice.col)) {\n var col = jStat.cola(list, rcSlice.col);\n rowSlice = rcSlice.row || {};\n return _slice(col, rowSlice.start, rowSlice.end, rowSlice.step);\n }\n\n rowSlice = rcSlice.row || {};\n colSlice = rcSlice.col || {};\n var rows = _slice(list, rowSlice.start, rowSlice.end, rowSlice.step);\n return rows.map(function(row) {\n return _slice(row, colSlice.start, colSlice.end, colSlice.step);\n });\n }\n\n return slice;\n}());\n\n\n// A=[[1,2,3],[4,5,6],[7,8,9]]\n// sliceAssign(A,{row:{start:1},col:{start:1}},[[0,0],[0,0]])\n// A=[[1,2,3],[4,0,0],[7,0,0]]\njStat.sliceAssign = function sliceAssign(A, rcSlice, B) {\n var nl, ml;\n if (isNumber(rcSlice.row)) {\n if (isNumber(rcSlice.col))\n return A[rcSlice.row][rcSlice.col] = B;\n rcSlice.col = rcSlice.col || {};\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A.length, rcSlice.col.end),\n rcSlice.col.step);\n var m = rcSlice.row;\n nl.forEach(function(n, i) {\n A[m][n] = B[i];\n });\n return A;\n }\n\n if (isNumber(rcSlice.col)) {\n rcSlice.row = rcSlice.row || {};\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A[0].length, rcSlice.row.end),\n rcSlice.row.step);\n var n = rcSlice.col;\n ml.forEach(function(m, j) {\n A[m][n] = B[j];\n });\n return A;\n }\n\n if (B[0].length === undefined) {\n B = [B];\n }\n rcSlice.row.start = rcSlice.row.start || 0;\n rcSlice.row.end = rcSlice.row.end || A.length;\n rcSlice.row.step = rcSlice.row.step || 1;\n rcSlice.col.start = rcSlice.col.start || 0;\n rcSlice.col.end = rcSlice.col.end || A[0].length;\n rcSlice.col.step = rcSlice.col.step || 1;\n ml = jStat.arange(rcSlice.row.start,\n Math.min(A.length, rcSlice.row.end),\n rcSlice.row.step);\n nl = jStat.arange(rcSlice.col.start,\n Math.min(A[0].length, rcSlice.col.end),\n rcSlice.col.step);\n ml.forEach(function(m, i) {\n nl.forEach(function(n, j) {\n A[m][n] = B[i][j];\n });\n });\n return A;\n};\n\n\n// [1,2,3] ->\n// [[1,0,0],[0,2,0],[0,0,3]]\njStat.diagonal = function diagonal(diagArray) {\n var mat = jStat.zeros(diagArray.length, diagArray.length);\n diagArray.forEach(function(t, i) {\n mat[i][i] = t;\n });\n return mat;\n};\n\n\n// return copy of A\njStat.copy = function copy(A) {\n return A.map(function(row) {\n if (isNumber(row))\n return row;\n return row.map(function(t) {\n return t;\n });\n });\n};\n\n\n// TODO: Go over this entire implementation. Seems a tragic waste of resources\n// doing all this work. Instead, and while ugly, use new Function() to generate\n// a custom function for each static method.\n\n// Quick reference.\nvar jProto = jStat.prototype;\n\n// Default length.\njProto.length = 0;\n\n// For internal use only.\n// TODO: Check if they're actually used, and if they are then rename them\n// to _*\njProto.push = Array.prototype.push;\njProto.sort = Array.prototype.sort;\njProto.splice = Array.prototype.splice;\njProto.slice = Array.prototype.slice;\n\n\n// Return a clean array.\njProto.toArray = function toArray() {\n return this.length > 1 ? slice.call(this) : slice.call(this)[0];\n};\n\n\n// Map a function to a matrix or vector.\njProto.map = function map(func, toAlter) {\n return jStat(jStat.map(this, func, toAlter));\n};\n\n\n// Cumulatively combine the elements of a matrix or vector using a function.\njProto.cumreduce = function cumreduce(func, toAlter) {\n return jStat(jStat.cumreduce(this, func, toAlter));\n};\n\n\n// Destructively alter an array.\njProto.alter = function alter(func) {\n jStat.alter(this, func);\n return this;\n};\n\n\n// Extend prototype with methods that have no argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(func) {\n var self = this,\n results;\n // Check for callback.\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self));\n });\n return this;\n }\n results = jStat[passfunc](this);\n return isArray(results) ? jStat(results) : results;\n };\n })(funcs[i]);\n})('transpose clear symmetric rows cols dimensions diag antidiag'.split(' '));\n\n\n// Extend prototype with methods that have one argument.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function(index, func) {\n var self = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(self, jProto[passfunc].call(self, index));\n });\n return this;\n }\n return jStat(jStat[passfunc](this, index));\n };\n })(funcs[i]);\n})('row col'.split(' '));\n\n\n// Extend prototype with simple shortcut methods.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('create zeros ones rand identity'.split(' '));\n\n\n// Exposing jStat.\nreturn jStat;\n\n}(Math));\n(function(jStat, Math) {\n\nvar isFunction = jStat.utils.isFunction;\n\n// Ascending functions for sort\nfunction ascNum(a, b) { return a - b; }\n\nfunction clip(arg, min, max) {\n return Math.max(min, Math.min(arg, max));\n}\n\n\n// sum of an array\njStat.sum = function sum(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n\n// sum squared\njStat.sumsqrd = function sumsqrd(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i] * arr[i];\n return sum;\n};\n\n\n// sum of squared errors of prediction (SSE)\njStat.sumsqerr = function sumsqerr(arr) {\n var mean = jStat.mean(arr);\n var sum = 0;\n var i = arr.length;\n var tmp;\n while (--i >= 0) {\n tmp = arr[i] - mean;\n sum += tmp * tmp;\n }\n return sum;\n};\n\n// sum of an array in each row\njStat.sumrow = function sumrow(arr) {\n var sum = 0;\n var i = arr.length;\n while (--i >= 0)\n sum += arr[i];\n return sum;\n};\n\n// product of an array\njStat.product = function product(arr) {\n var prod = 1;\n var i = arr.length;\n while (--i >= 0)\n prod *= arr[i];\n return prod;\n};\n\n\n// minimum value of an array\njStat.min = function min(arr) {\n var low = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] < low)\n low = arr[i];\n return low;\n};\n\n\n// maximum value of an array\njStat.max = function max(arr) {\n var high = arr[0];\n var i = 0;\n while (++i < arr.length)\n if (arr[i] > high)\n high = arr[i];\n return high;\n};\n\n\n// unique values of an array\njStat.unique = function unique(arr) {\n var hash = {}, _arr = [];\n for(var i = 0; i < arr.length; i++) {\n if (!hash[arr[i]]) {\n hash[arr[i]] = true;\n _arr.push(arr[i]);\n }\n }\n return _arr;\n};\n\n\n// mean value of an array\njStat.mean = function mean(arr) {\n return jStat.sum(arr) / arr.length;\n};\n\n\n// mean squared error (MSE)\njStat.meansqerr = function meansqerr(arr) {\n return jStat.sumsqerr(arr) / arr.length;\n};\n\n\n// geometric mean of an array\njStat.geomean = function geomean(arr) {\n var logs = arr.map(Math.log)\n var meanOfLogs = jStat.mean(logs)\n return Math.exp(meanOfLogs)\n};\n\n\n// median of an array\njStat.median = function median(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n // check if array is even or odd, then return the appropriate\n return !(arrlen & 1)\n ? (_arr[(arrlen / 2) - 1 ] + _arr[(arrlen / 2)]) / 2\n : _arr[(arrlen / 2) | 0 ];\n};\n\n\n// cumulative sum of an array\njStat.cumsum = function cumsum(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a + b; });\n};\n\n\n// cumulative product of an array\njStat.cumprod = function cumprod(arr) {\n return jStat.cumreduce(arr, function (a, b) { return a * b; });\n};\n\n\n// successive differences of a sequence\njStat.diff = function diff(arr) {\n var diffs = [];\n var arrLen = arr.length;\n var i;\n for (i = 1; i < arrLen; i++)\n diffs.push(arr[i] - arr[i - 1]);\n return diffs;\n};\n\n\n// ranks of an array\njStat.rank = function (arr) {\n var i;\n var distinctNumbers = [];\n var numberCounts = {};\n for (i = 0; i < arr.length; i++) {\n var number = arr[i];\n if (numberCounts[number]) {\n numberCounts[number]++;\n } else {\n numberCounts[number] = 1;\n distinctNumbers.push(number);\n }\n }\n\n var sortedDistinctNumbers = distinctNumbers.sort(ascNum);\n var numberRanks = {};\n var currentRank = 1;\n for (i = 0; i < sortedDistinctNumbers.length; i++) {\n var number = sortedDistinctNumbers[i];\n var count = numberCounts[number];\n var first = currentRank;\n var last = currentRank + count - 1;\n var rank = (first + last) / 2;\n numberRanks[number] = rank;\n currentRank += count;\n }\n\n return arr.map(function (number) {\n return numberRanks[number];\n });\n};\n\n\n// mode of an array\n// if there are multiple modes of an array, return all of them\n// is this the appropriate way of handling it?\njStat.mode = function mode(arr) {\n var arrLen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n var count = 1;\n var maxCount = 0;\n var numMaxCount = 0;\n var mode_arr = [];\n var i;\n\n for (i = 0; i < arrLen; i++) {\n if (_arr[i] === _arr[i + 1]) {\n count++;\n } else {\n if (count > maxCount) {\n mode_arr = [_arr[i]];\n maxCount = count;\n numMaxCount = 0;\n }\n // are there multiple max counts\n else if (count === maxCount) {\n mode_arr.push(_arr[i]);\n numMaxCount++;\n }\n // resetting count for new value in array\n count = 1;\n }\n }\n\n return numMaxCount === 0 ? mode_arr[0] : mode_arr;\n};\n\n\n// range of an array\njStat.range = function range(arr) {\n return jStat.max(arr) - jStat.min(arr);\n};\n\n// variance of an array\n// flag = true indicates sample instead of population\njStat.variance = function variance(arr, flag) {\n return jStat.sumsqerr(arr) / (arr.length - (flag ? 1 : 0));\n};\n\n// pooled variance of an array of arrays\njStat.pooledvariance = function pooledvariance(arr) {\n var sumsqerr = arr.reduce(function (a, samples) {return a + jStat.sumsqerr(samples);}, 0);\n var count = arr.reduce(function (a, samples) {return a + samples.length;}, 0);\n return sumsqerr / (count - arr.length);\n};\n\n// deviation of an array\njStat.deviation = function (arr) {\n var mean = jStat.mean(arr);\n var arrlen = arr.length;\n var dev = new Array(arrlen);\n for (var i = 0; i < arrlen; i++) {\n dev[i] = arr[i] - mean;\n }\n return dev;\n};\n\n// standard deviation of an array\n// flag = true indicates sample instead of population\njStat.stdev = function stdev(arr, flag) {\n return Math.sqrt(jStat.variance(arr, flag));\n};\n\n// pooled standard deviation of an array of arrays\njStat.pooledstdev = function pooledstdev(arr) {\n return Math.sqrt(jStat.pooledvariance(arr));\n};\n\n// mean deviation (mean absolute deviation) of an array\njStat.meandev = function meandev(arr) {\n var mean = jStat.mean(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - mean));\n }\n return jStat.mean(a);\n};\n\n\n// median deviation (median absolute deviation) of an array\njStat.meddev = function meddev(arr) {\n var median = jStat.median(arr);\n var a = [];\n for (var i = arr.length - 1; i >= 0; i--) {\n a.push(Math.abs(arr[i] - median));\n }\n return jStat.median(a);\n};\n\n\n// coefficient of variation\njStat.coeffvar = function coeffvar(arr) {\n return jStat.stdev(arr) / jStat.mean(arr);\n};\n\n\n// quartiles of an array\njStat.quartiles = function quartiles(arr) {\n var arrlen = arr.length;\n var _arr = arr.slice().sort(ascNum);\n return [\n _arr[ Math.round((arrlen) / 4) - 1 ],\n _arr[ Math.round((arrlen) / 2) - 1 ],\n _arr[ Math.round((arrlen) * 3 / 4) - 1 ]\n ];\n};\n\n\n// Arbitary quantiles of an array. Direct port of the scipy.stats\n// implementation by Pierre GF Gerard-Marchant.\njStat.quantiles = function quantiles(arr, quantilesArray, alphap, betap) {\n var sortedArray = arr.slice().sort(ascNum);\n var quantileVals = [quantilesArray.length];\n var n = arr.length;\n var i, p, m, aleph, k, gamma;\n\n if (typeof alphap === 'undefined')\n alphap = 3 / 8;\n if (typeof betap === 'undefined')\n betap = 3 / 8;\n\n for (i = 0; i < quantilesArray.length; i++) {\n p = quantilesArray[i];\n m = alphap + p * (1 - alphap - betap);\n aleph = n * p + m;\n k = Math.floor(clip(aleph, 1, n - 1));\n gamma = clip(aleph - k, 0, 1);\n quantileVals[i] = (1 - gamma) * sortedArray[k - 1] + gamma * sortedArray[k];\n }\n\n return quantileVals;\n};\n\n// Return the k-th percentile of values in a range, where k is in the range 0..1, inclusive.\n// Passing true for the exclusive parameter excludes both endpoints of the range.\njStat.percentile = function percentile(arr, k, exclusive) {\n var _arr = arr.slice().sort(ascNum);\n var realIndex = k * (_arr.length + (exclusive ? 1 : -1)) + (exclusive ? 0 : 1);\n var index = parseInt(realIndex);\n var frac = realIndex - index;\n if (index + 1 < _arr.length) {\n return _arr[index - 1] + frac * (_arr[index] - _arr[index - 1]);\n } else {\n return _arr[index - 1];\n }\n}\n\n// The percentile rank of score in a given array. Returns the percentage\n// of all values in the input array that are less than (kind='strict') or\n// less or equal than (kind='weak') score. Default is weak.\njStat.percentileOfScore = function percentileOfScore(arr, score, kind) {\n var counter = 0;\n var len = arr.length;\n var strict = false;\n var value, i;\n\n if (kind === 'strict')\n strict = true;\n\n for (i = 0; i < len; i++) {\n value = arr[i];\n if ((strict && value < score) ||\n (!strict && value <= score)) {\n counter++;\n }\n }\n\n return counter / len;\n};\n\n\n// Histogram (bin count) data\njStat.histogram = function histogram(arr, binCnt) {\n binCnt = binCnt || 4;\n var first = jStat.min(arr);\n var binWidth = (jStat.max(arr) - first) / binCnt;\n var len = arr.length;\n var bins = [];\n var i;\n\n for (i = 0; i < binCnt; i++)\n bins[i] = 0;\n for (i = 0; i < len; i++)\n bins[Math.min(Math.floor(((arr[i] - first) / binWidth)), binCnt - 1)] += 1;\n\n return bins;\n};\n\n\n// covariance of two arrays\njStat.covariance = function covariance(arr1, arr2) {\n var u = jStat.mean(arr1);\n var v = jStat.mean(arr2);\n var arr1Len = arr1.length;\n var sq_dev = new Array(arr1Len);\n var i;\n\n for (i = 0; i < arr1Len; i++)\n sq_dev[i] = (arr1[i] - u) * (arr2[i] - v);\n\n return jStat.sum(sq_dev) / (arr1Len - 1);\n};\n\n\n// (pearson's) population correlation coefficient, rho\njStat.corrcoeff = function corrcoeff(arr1, arr2) {\n return jStat.covariance(arr1, arr2) /\n jStat.stdev(arr1, 1) /\n jStat.stdev(arr2, 1);\n};\n\n // (spearman's) rank correlation coefficient, sp\njStat.spearmancoeff = function (arr1, arr2) {\n arr1 = jStat.rank(arr1);\n arr2 = jStat.rank(arr2);\n //return pearson's correlation of the ranks:\n return jStat.corrcoeff(arr1, arr2);\n}\n\n\n// statistical standardized moments (general form of skew/kurt)\njStat.stanMoment = function stanMoment(arr, n) {\n var mu = jStat.mean(arr);\n var sigma = jStat.stdev(arr);\n var len = arr.length;\n var skewSum = 0;\n\n for (var i = 0; i < len; i++)\n skewSum += Math.pow((arr[i] - mu) / sigma, n);\n\n return skewSum / arr.length;\n};\n\n// (pearson's) moment coefficient of skewness\njStat.skewness = function skewness(arr) {\n return jStat.stanMoment(arr, 3);\n};\n\n// (pearson's) (excess) kurtosis\njStat.kurtosis = function kurtosis(arr) {\n return jStat.stanMoment(arr, 4) - 3;\n};\n\n\nvar jProto = jStat.prototype;\n\n\n// Extend jProto with method for calculating cumulative sums and products.\n// This differs from the similar extension below as cumsum and cumprod should\n// not be run again in the case fullbool === true.\n// If a matrix is passed, automatically assume operation should be done on the\n// columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('cumsum cumprod').split(' '));\n\n\n// Extend jProto with methods which don't require arguments and work on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n // If a matrix is passed, automatically assume operation should be done on\n // the columns.\n jProto[passfunc] = function(fullbool, func) {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n // Assignment reassignation depending on how parameters were passed in.\n if (isFunction(fullbool)) {\n func = fullbool;\n fullbool = false;\n }\n // Check if a callback was passed with the function.\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jProto[passfunc].call(tmpthis, fullbool));\n });\n return this;\n }\n // Check if matrix and run calculations.\n if (this.length > 1) {\n if (passfunc !== 'sumrow')\n tmpthis = fullbool === true ? this : this.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = jStat[passfunc](tmpthis[i]);\n return fullbool === true\n ? jStat[passfunc](jStat.utils.toVector(arr))\n : arr;\n }\n // Pass fullbool if only vector, not a matrix. for variance and stdev.\n return jStat[passfunc](this[0], fullbool);\n };\n })(funcs[i]);\n})(('sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr ' +\n 'geomean median diff rank mode range variance deviation stdev meandev ' +\n 'meddev coeffvar quartiles histogram skewness kurtosis').split(' '));\n\n\n// Extend jProto with functions that take arguments. Operations on matrices are\n// done on columns.\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jProto[passfunc] = function() {\n var arr = [];\n var i = 0;\n var tmpthis = this;\n var args = Array.prototype.slice.call(arguments);\n var callbackFunction;\n\n // If the last argument is a function, we assume it's a callback; we\n // strip the callback out and call the function again.\n if (isFunction(args[args.length - 1])) {\n callbackFunction = args[args.length - 1];\n var argsToPass = args.slice(0, args.length - 1);\n\n setTimeout(function() {\n callbackFunction.call(tmpthis,\n jProto[passfunc].apply(tmpthis, argsToPass));\n });\n return this;\n\n // Otherwise we curry the function args and call normally.\n } else {\n callbackFunction = undefined;\n var curriedFunction = function curriedFunction(vector) {\n return jStat[passfunc].apply(tmpthis, [vector].concat(args));\n }\n }\n\n // If this is a matrix, run column-by-column.\n if (this.length > 1) {\n tmpthis = tmpthis.transpose();\n for (; i < tmpthis.length; i++)\n arr[i] = curriedFunction(tmpthis[i]);\n return arr;\n }\n\n // Otherwise run on the vector.\n return curriedFunction(this[0]);\n };\n })(funcs[i]);\n})('quantiles percentileOfScore'.split(' '));\n\n}(jStat, Math));\n// Special functions //\n(function(jStat, Math) {\n\n// Log-gamma function\njStat.gammaln = function gammaln(x) {\n var j = 0;\n var cof = [\n 76.18009172947146, -86.50532032941677, 24.01409824083091,\n -1.231739572450155, 0.1208650973866179e-2, -0.5395239384953e-5\n ];\n var ser = 1.000000000190015;\n var xx, y, tmp;\n tmp = (y = xx = x) + 5.5;\n tmp -= (xx + 0.5) * Math.log(tmp);\n for (; j < 6; j++)\n ser += cof[j] / ++y;\n return Math.log(2.5066282746310005 * ser / xx) - tmp;\n};\n\n/*\n * log-gamma function to support poisson distribution sampling. The\n * algorithm comes from SPECFUN by Shanjie Zhang and Jianming Jin and their\n * book \"Computation of Special Functions\", 1996, John Wiley & Sons, Inc.\n */\njStat.loggam = function loggam(x) {\n var x0, x2, xp, gl, gl0;\n var k, n;\n\n var a = [8.333333333333333e-02, -2.777777777777778e-03,\n 7.936507936507937e-04, -5.952380952380952e-04,\n 8.417508417508418e-04, -1.917526917526918e-03,\n 6.410256410256410e-03, -2.955065359477124e-02,\n 1.796443723688307e-01, -1.39243221690590e+00];\n x0 = x;\n n = 0;\n if ((x == 1.0) || (x == 2.0)) {\n return 0.0;\n }\n if (x <= 7.0) {\n n = Math.floor(7 - x);\n x0 = x + n;\n }\n x2 = 1.0 / (x0 * x0);\n xp = 2 * Math.PI;\n gl0 = a[9];\n for (k = 8; k >= 0; k--) {\n gl0 *= x2;\n gl0 += a[k];\n }\n gl = gl0 / x0 + 0.5 * Math.log(xp) + (x0 - 0.5) * Math.log(x0) - x0;\n if (x <= 7.0) {\n for (k = 1; k <= n; k++) {\n gl -= Math.log(x0 - 1.0);\n x0 -= 1.0;\n }\n }\n return gl;\n}\n\n// gamma of x\njStat.gammafn = function gammafn(x) {\n var p = [-1.716185138865495, 24.76565080557592, -379.80425647094563,\n 629.3311553128184, 866.9662027904133, -31451.272968848367,\n -36144.413418691176, 66456.14382024054\n ];\n var q = [-30.8402300119739, 315.35062697960416, -1015.1563674902192,\n -3107.771671572311, 22538.118420980151, 4755.8462775278811,\n -134659.9598649693, -115132.2596755535];\n var fact = false;\n var n = 0;\n var xden = 0;\n var xnum = 0;\n var y = x;\n var i, z, yi, res;\n if (x > 171.6243769536076) {\n return Infinity;\n }\n if (y <= 0) {\n res = y % 1 + 3.6e-16;\n if (res) {\n fact = (!(y & 1) ? 1 : -1) * Math.PI / Math.sin(Math.PI * res);\n y = 1 - y;\n } else {\n return Infinity;\n }\n }\n yi = y;\n if (y < 1) {\n z = y++;\n } else {\n z = (y -= n = (y | 0) - 1) - 1;\n }\n for (i = 0; i < 8; ++i) {\n xnum = (xnum + p[i]) * z;\n xden = xden * z + q[i];\n }\n res = xnum / xden + 1;\n if (yi < y) {\n res /= yi;\n } else if (yi > y) {\n for (i = 0; i < n; ++i) {\n res *= y;\n y++;\n }\n }\n if (fact) {\n res = fact / res;\n }\n return res;\n};\n\n\n// lower incomplete gamma function, which is usually typeset with a\n// lower-case greek gamma as the function symbol\njStat.gammap = function gammap(a, x) {\n return jStat.lowRegGamma(a, x) * jStat.gammafn(a);\n};\n\n\n// The lower regularized incomplete gamma function, usually written P(a,x)\njStat.lowRegGamma = function lowRegGamma(a, x) {\n var aln = jStat.gammaln(a);\n var ap = a;\n var sum = 1 / a;\n var del = sum;\n var b = x + 1 - a;\n var c = 1 / 1.0e-30;\n var d = 1 / b;\n var h = d;\n var i = 1;\n // calculate maximum number of itterations required for a\n var ITMAX = -~(Math.log((a >= 1) ? a : 1 / a) * 8.5 + a * 0.4 + 17);\n var an;\n\n if (x < 0 || a <= 0) {\n return NaN;\n } else if (x < a + 1) {\n for (; i <= ITMAX; i++) {\n sum += del *= x / ++ap;\n }\n return (sum * Math.exp(-x + a * Math.log(x) - (aln)));\n }\n\n for (; i <= ITMAX; i++) {\n an = -i * (i - a);\n b += 2;\n d = an * d + b;\n c = b + an / c;\n d = 1 / d;\n h *= d * c;\n }\n\n return (1 - h * Math.exp(-x + a * Math.log(x) - (aln)));\n};\n\n// natural log factorial of n\njStat.factorialln = function factorialln(n) {\n return n < 0 ? NaN : jStat.gammaln(n + 1);\n};\n\n// factorial of n\njStat.factorial = function factorial(n) {\n return n < 0 ? NaN : jStat.gammafn(n + 1);\n};\n\n// combinations of n, m\njStat.combination = function combination(n, m) {\n // make sure n or m don't exceed the upper limit of usable values\n return (n > 170 || m > 170)\n ? Math.exp(jStat.combinationln(n, m))\n : (jStat.factorial(n) / jStat.factorial(m)) / jStat.factorial(n - m);\n};\n\n\njStat.combinationln = function combinationln(n, m){\n return jStat.factorialln(n) - jStat.factorialln(m) - jStat.factorialln(n - m);\n};\n\n\n// permutations of n, m\njStat.permutation = function permutation(n, m) {\n return jStat.factorial(n) / jStat.factorial(n - m);\n};\n\n\n// beta function\njStat.betafn = function betafn(x, y) {\n // ensure arguments are positive\n if (x <= 0 || y <= 0)\n return undefined;\n // make sure x + y doesn't exceed the upper limit of usable values\n return (x + y > 170)\n ? Math.exp(jStat.betaln(x, y))\n : jStat.gammafn(x) * jStat.gammafn(y) / jStat.gammafn(x + y);\n};\n\n\n// natural logarithm of beta function\njStat.betaln = function betaln(x, y) {\n return jStat.gammaln(x) + jStat.gammaln(y) - jStat.gammaln(x + y);\n};\n\n\n// Evaluates the continued fraction for incomplete beta function by modified\n// Lentz's method.\njStat.betacf = function betacf(x, a, b) {\n var fpmin = 1e-30;\n var m = 1;\n var qab = a + b;\n var qap = a + 1;\n var qam = a - 1;\n var c = 1;\n var d = 1 - qab * x / qap;\n var m2, aa, del, h;\n\n // These q's will be used in factors that occur in the coefficients\n if (Math.abs(d) < fpmin)\n d = fpmin;\n d = 1 / d;\n h = d;\n\n for (; m <= 100; m++) {\n m2 = 2 * m;\n aa = m * (b - m) * x / ((qam + m2) * (a + m2));\n // One step (the even one) of the recurrence\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n h *= d * c;\n aa = -(a + m) * (qab + m) * x / ((a + m2) * (qap + m2));\n // Next step of the recurrence (the odd one)\n d = 1 + aa * d;\n if (Math.abs(d) < fpmin)\n d = fpmin;\n c = 1 + aa / c;\n if (Math.abs(c) < fpmin)\n c = fpmin;\n d = 1 / d;\n del = d * c;\n h *= del;\n if (Math.abs(del - 1.0) < 3e-7)\n break;\n }\n\n return h;\n};\n\n\n// Returns the inverse of the lower regularized inomplete gamma function\njStat.gammapinv = function gammapinv(p, a) {\n var j = 0;\n var a1 = a - 1;\n var EPS = 1e-8;\n var gln = jStat.gammaln(a);\n var x, err, t, u, pp, lna1, afac;\n\n if (p >= 1)\n return Math.max(100, a + 100 * Math.sqrt(a));\n if (p <= 0)\n return 0;\n if (a > 1) {\n lna1 = Math.log(a1);\n afac = Math.exp(a1 * (lna1 - 1) - gln);\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t * (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n x = Math.max(1e-3,\n a * Math.pow(1 - 1 / (9 * a) - x / (3 * Math.sqrt(a)), 3));\n } else {\n t = 1 - a * (0.253 + a * 0.12);\n if (p < t)\n x = Math.pow(p / t, 1 / a);\n else\n x = 1 - Math.log(1 - (p - t) / (1 - t));\n }\n\n for(; j < 12; j++) {\n if (x <= 0)\n return 0;\n err = jStat.lowRegGamma(a, x) - p;\n if (a > 1)\n t = afac * Math.exp(-(x - a1) + a1 * (Math.log(x) - lna1));\n else\n t = Math.exp(-x + a1 * Math.log(x) - gln);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * ((a - 1) / x - 1))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (Math.abs(t) < EPS * x)\n break;\n }\n\n return x;\n};\n\n\n// Returns the error function erf(x)\njStat.erf = function erf(x) {\n var cof = [-1.3026537197817094, 6.4196979235649026e-1, 1.9476473204185836e-2,\n -9.561514786808631e-3, -9.46595344482036e-4, 3.66839497852761e-4,\n 4.2523324806907e-5, -2.0278578112534e-5, -1.624290004647e-6,\n 1.303655835580e-6, 1.5626441722e-8, -8.5238095915e-8,\n 6.529054439e-9, 5.059343495e-9, -9.91364156e-10,\n -2.27365122e-10, 9.6467911e-11, 2.394038e-12,\n -6.886027e-12, 8.94487e-13, 3.13092e-13,\n -1.12708e-13, 3.81e-16, 7.106e-15,\n -1.523e-15, -9.4e-17, 1.21e-16,\n -2.8e-17];\n var j = cof.length - 1;\n var isneg = false;\n var d = 0;\n var dd = 0;\n var t, ty, tmp, res;\n\n if (x < 0) {\n x = -x;\n isneg = true;\n }\n\n t = 2 / (2 + x);\n ty = 4 * t - 2;\n\n for(; j > 0; j--) {\n tmp = d;\n d = ty * d - dd + cof[j];\n dd = tmp;\n }\n\n res = t * Math.exp(-x * x + 0.5 * (cof[0] + ty * d) - dd);\n return isneg ? res - 1 : 1 - res;\n};\n\n\n// Returns the complmentary error function erfc(x)\njStat.erfc = function erfc(x) {\n return 1 - jStat.erf(x);\n};\n\n\n// Returns the inverse of the complementary error function\njStat.erfcinv = function erfcinv(p) {\n var j = 0;\n var x, err, t, pp;\n if (p >= 2)\n return -100;\n if (p <= 0)\n return 100;\n pp = (p < 1) ? p : 2 - p;\n t = Math.sqrt(-2 * Math.log(pp / 2));\n x = -0.70711 * ((2.30753 + t * 0.27061) /\n (1 + t * (0.99229 + t * 0.04481)) - t);\n for (; j < 2; j++) {\n err = jStat.erfc(x) - pp;\n x += err / (1.12837916709551257 * Math.exp(-x * x) - x * err);\n }\n return (p < 1) ? x : -x;\n};\n\n\n// Returns the inverse of the incomplete beta function\njStat.ibetainv = function ibetainv(p, a, b) {\n var EPS = 1e-8;\n var a1 = a - 1;\n var b1 = b - 1;\n var j = 0;\n var lna, lnb, pp, t, u, err, x, al, h, w, afac;\n if (p <= 0)\n return 0;\n if (p >= 1)\n return 1;\n if (a >= 1 && b >= 1) {\n pp = (p < 0.5) ? p : 1 - p;\n t = Math.sqrt(-2 * Math.log(pp));\n x = (2.30753 + t * 0.27061) / (1 + t* (0.99229 + t * 0.04481)) - t;\n if (p < 0.5)\n x = -x;\n al = (x * x - 3) / 6;\n h = 2 / (1 / (2 * a - 1) + 1 / (2 * b - 1));\n w = (x * Math.sqrt(al + h) / h) - (1 / (2 * b - 1) - 1 / (2 * a - 1)) *\n (al + 5 / 6 - 2 / (3 * h));\n x = a / (a + b * Math.exp(2 * w));\n } else {\n lna = Math.log(a / (a + b));\n lnb = Math.log(b / (a + b));\n t = Math.exp(a * lna) / a;\n u = Math.exp(b * lnb) / b;\n w = t + u;\n if (p < t / w)\n x = Math.pow(a * w * p, 1 / a);\n else\n x = 1 - Math.pow(b * w * (1 - p), 1 / b);\n }\n afac = -jStat.gammaln(a) - jStat.gammaln(b) + jStat.gammaln(a + b);\n for(; j < 10; j++) {\n if (x === 0 || x === 1)\n return x;\n err = jStat.ibeta(x, a, b) - p;\n t = Math.exp(a1 * Math.log(x) + b1 * Math.log(1 - x) + afac);\n u = err / t;\n x -= (t = u / (1 - 0.5 * Math.min(1, u * (a1 / x - b1 / (1 - x)))));\n if (x <= 0)\n x = 0.5 * (x + t);\n if (x >= 1)\n x = 0.5 * (x + t + 1);\n if (Math.abs(t) < EPS * x && j > 0)\n break;\n }\n return x;\n};\n\n\n// Returns the incomplete beta function I_x(a,b)\njStat.ibeta = function ibeta(x, a, b) {\n // Factors in front of the continued fraction.\n var bt = (x === 0 || x === 1) ? 0 :\n Math.exp(jStat.gammaln(a + b) - jStat.gammaln(a) -\n jStat.gammaln(b) + a * Math.log(x) + b *\n Math.log(1 - x));\n if (x < 0 || x > 1)\n return false;\n if (x < (a + 1) / (a + b + 2))\n // Use continued fraction directly.\n return bt * jStat.betacf(x, a, b) / a;\n // else use continued fraction after making the symmetry transformation.\n return 1 - bt * jStat.betacf(1 - x, b, a) / b;\n};\n\n\n// Returns a normal deviate (mu=0, sigma=1).\n// If n and m are specified it returns a object of normal deviates.\njStat.randn = function randn(n, m) {\n var u, v, x, y, q;\n if (!m)\n m = n;\n if (n)\n return jStat.create(n, m, function() { return jStat.randn(); });\n do {\n u = jStat._random_fn();\n v = 1.7156 * (jStat._random_fn() - 0.5);\n x = u - 0.449871;\n y = Math.abs(v) + 0.386595;\n q = x * x + y * (0.19600 * y - 0.25472 * x);\n } while (q > 0.27597 && (q > 0.27846 || v * v > -4 * Math.log(u) * u * u));\n return v / u;\n};\n\n\n// Returns a gamma deviate by the method of Marsaglia and Tsang.\njStat.randg = function randg(shape, n, m) {\n var oalph = shape;\n var a1, a2, u, v, x, mat;\n if (!m)\n m = n;\n if (!shape)\n shape = 1;\n if (n) {\n mat = jStat.zeros(n,m);\n mat.alter(function() { return jStat.randg(shape); });\n return mat;\n }\n if (shape < 1)\n shape += 1;\n a1 = shape - 1 / 3;\n a2 = 1 / Math.sqrt(9 * a1);\n do {\n do {\n x = jStat.randn();\n v = 1 + a2 * x;\n } while(v <= 0);\n v = v * v * v;\n u = jStat._random_fn();\n } while(u > 1 - 0.331 * Math.pow(x, 4) &&\n Math.log(u) > 0.5 * x*x + a1 * (1 - v + Math.log(v)));\n // alpha > 1\n if (shape == oalph)\n return a1 * v;\n // alpha < 1\n do {\n u = jStat._random_fn();\n } while(u === 0);\n return Math.pow(u, 1 / oalph) * a1 * v;\n};\n\n\n// making use of static methods on the instance\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(\n jStat.map(this, function(value) { return jStat[passfunc](value); }));\n }\n })(funcs[i]);\n})('gammaln gammafn factorial factorialln'.split(' '));\n\n\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function() {\n return jStat(jStat[passfunc].apply(null, arguments));\n };\n })(funcs[i]);\n})('randn'.split(' '));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\n// generate all distribution instance methods\n(function(list) {\n for (var i = 0; i < list.length; i++) (function(func) {\n // distribution instance method\n jStat[func] = function f(a, b, c) {\n if (!(this instanceof f))\n return new f(a, b, c);\n this._a = a;\n this._b = b;\n this._c = c;\n return this;\n };\n // distribution method to be used on a jStat instance\n jStat.fn[func] = function(a, b, c) {\n var newthis = jStat[func](a, b, c);\n newthis.data = this;\n return newthis;\n };\n // sample instance method\n jStat[func].prototype.sample = function(arr) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (arr)\n return jStat.alter(arr, function() {\n return jStat[func].sample(a, b, c);\n });\n else\n return jStat[func].sample(a, b, c);\n };\n // generate the pdf, cdf and inv instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function(x) {\n var a = this._a;\n var b = this._b;\n var c = this._c;\n if (!x && x !== 0)\n x = this.data;\n if (typeof x !== 'number') {\n return jStat.fn.map.call(x, function(x) {\n return jStat[func][fnfunc](x, a, b, c);\n });\n }\n return jStat[func][fnfunc](x, a, b, c);\n };\n })(vals[i]);\n })('pdf cdf inv'.split(' '));\n // generate the mean, median, mode and variance instance methods\n (function(vals) {\n for (var i = 0; i < vals.length; i++) (function(fnfunc) {\n jStat[func].prototype[fnfunc] = function() {\n return jStat[func][fnfunc](this._a, this._b, this._c);\n };\n })(vals[i]);\n })('mean median mode variance'.split(' '));\n })(list[i]);\n})((\n 'beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy ' +\n 'laplace lognormal noncentralt normal pareto studentt weibull uniform ' +\n 'binomial negbin hypgeom poisson triangular tukey arcsine'\n).split(' '));\n\n\n\n// extend beta function with static methods\njStat.extend(jStat.beta, {\n pdf: function pdf(x, alpha, beta) {\n // PDF is zero outside the support\n if (x > 1 || x < 0)\n return 0;\n // PDF is one for the uniform case\n if (alpha == 1 && beta == 1)\n return 1;\n\n if (alpha < 512 && beta < 512) {\n return (Math.pow(x, alpha - 1) * Math.pow(1 - x, beta - 1)) /\n jStat.betafn(alpha, beta);\n } else {\n return Math.exp((alpha - 1) * Math.log(x) +\n (beta - 1) * Math.log(1 - x) -\n jStat.betaln(alpha, beta));\n }\n },\n\n cdf: function cdf(x, alpha, beta) {\n return (x > 1 || x < 0) ? (x > 1) * 1 : jStat.ibeta(x, alpha, beta);\n },\n\n inv: function inv(x, alpha, beta) {\n return jStat.ibetainv(x, alpha, beta);\n },\n\n mean: function mean(alpha, beta) {\n return alpha / (alpha + beta);\n },\n\n median: function median(alpha, beta) {\n return jStat.ibetainv(0.5, alpha, beta);\n },\n\n mode: function mode(alpha, beta) {\n return (alpha - 1 ) / ( alpha + beta - 2);\n },\n\n // return a random sample\n sample: function sample(alpha, beta) {\n var u = jStat.randg(alpha);\n return u / (u + jStat.randg(beta));\n },\n\n variance: function variance(alpha, beta) {\n return (alpha * beta) / (Math.pow(alpha + beta, 2) * (alpha + beta + 1));\n }\n});\n\n// extend F function with static methods\njStat.extend(jStat.centralF, {\n // This implementation of the pdf function avoids float overflow\n // See the way that R calculates this value:\n // https://svn.r-project.org/R/trunk/src/nmath/df.c\n pdf: function pdf(x, df1, df2) {\n var p, q, f;\n\n if (x < 0)\n return 0;\n\n if (df1 <= 2) {\n if (x === 0 && df1 < 2) {\n return Infinity;\n }\n if (x === 0 && df1 === 2) {\n return 1;\n }\n return (1 / jStat.betafn(df1 / 2, df2 / 2)) *\n Math.pow(df1 / df2, df1 / 2) *\n Math.pow(x, (df1/2) - 1) *\n Math.pow((1 + (df1 / df2) * x), -(df1 + df2) / 2);\n }\n\n p = (df1 * x) / (df2 + x * df1);\n q = df2 / (df2 + x * df1);\n f = df1 * q / 2.0;\n return f * jStat.binomial.pdf((df1 - 2) / 2, (df1 + df2 - 2) / 2, p);\n },\n\n cdf: function cdf(x, df1, df2) {\n if (x < 0)\n return 0;\n return jStat.ibeta((df1 * x) / (df1 * x + df2), df1 / 2, df2 / 2);\n },\n\n inv: function inv(x, df1, df2) {\n return df2 / (df1 * (1 / jStat.ibetainv(x, df1 / 2, df2 / 2) - 1));\n },\n\n mean: function mean(df1, df2) {\n return (df2 > 2) ? df2 / (df2 - 2) : undefined;\n },\n\n mode: function mode(df1, df2) {\n return (df1 > 2) ? (df2 * (df1 - 2)) / (df1 * (df2 + 2)) : undefined;\n },\n\n // return a random sample\n sample: function sample(df1, df2) {\n var x1 = jStat.randg(df1 / 2) * 2;\n var x2 = jStat.randg(df2 / 2) * 2;\n return (x1 / df1) / (x2 / df2);\n },\n\n variance: function variance(df1, df2) {\n if (df2 <= 4)\n return undefined;\n return 2 * df2 * df2 * (df1 + df2 - 2) /\n (df1 * (df2 - 2) * (df2 - 2) * (df2 - 4));\n }\n});\n\n\n// extend cauchy function with static methods\njStat.extend(jStat.cauchy, {\n pdf: function pdf(x, local, scale) {\n if (scale < 0) { return 0; }\n\n return (scale / (Math.pow(x - local, 2) + Math.pow(scale, 2))) / Math.PI;\n },\n\n cdf: function cdf(x, local, scale) {\n return Math.atan((x - local) / scale) / Math.PI + 0.5;\n },\n\n inv: function(p, local, scale) {\n return local + scale * Math.tan(Math.PI * (p - 0.5));\n },\n\n median: function median(local/*, scale*/) {\n return local;\n },\n\n mode: function mode(local/*, scale*/) {\n return local;\n },\n\n sample: function sample(local, scale) {\n return jStat.randn() *\n Math.sqrt(1 / (2 * jStat.randg(0.5))) * scale + local;\n }\n});\n\n\n\n// extend chisquare function with static methods\njStat.extend(jStat.chisquare, {\n pdf: function pdf(x, dof) {\n if (x < 0)\n return 0;\n return (x === 0 && dof === 2) ? 0.5 :\n Math.exp((dof / 2 - 1) * Math.log(x) - x / 2 - (dof / 2) *\n Math.log(2) - jStat.gammaln(dof / 2));\n },\n\n cdf: function cdf(x, dof) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(dof / 2, x / 2);\n },\n\n inv: function(p, dof) {\n return 2 * jStat.gammapinv(p, 0.5 * dof);\n },\n\n mean : function(dof) {\n return dof;\n },\n\n // TODO: this is an approximation (is there a better way?)\n median: function median(dof) {\n return dof * Math.pow(1 - (2 / (9 * dof)), 3);\n },\n\n mode: function mode(dof) {\n return (dof - 2 > 0) ? dof - 2 : 0;\n },\n\n sample: function sample(dof) {\n return jStat.randg(dof / 2) * 2;\n },\n\n variance: function variance(dof) {\n return 2 * dof;\n }\n});\n\n\n\n// extend exponential function with static methods\njStat.extend(jStat.exponential, {\n pdf: function pdf(x, rate) {\n return x < 0 ? 0 : rate * Math.exp(-rate * x);\n },\n\n cdf: function cdf(x, rate) {\n return x < 0 ? 0 : 1 - Math.exp(-rate * x);\n },\n\n inv: function(p, rate) {\n return -Math.log(1 - p) / rate;\n },\n\n mean : function(rate) {\n return 1 / rate;\n },\n\n median: function (rate) {\n return (1 / rate) * Math.log(2);\n },\n\n mode: function mode(/*rate*/) {\n return 0;\n },\n\n sample: function sample(rate) {\n return -1 / rate * Math.log(jStat._random_fn());\n },\n\n variance : function(rate) {\n return Math.pow(rate, -2);\n }\n});\n\n\n\n// extend gamma function with static methods\njStat.extend(jStat.gamma, {\n pdf: function pdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return (x === 0 && shape === 1) ? 1 / scale :\n Math.exp((shape - 1) * Math.log(x) - x / scale -\n jStat.gammaln(shape) - shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x < 0)\n return 0;\n return jStat.lowRegGamma(shape, x / scale);\n },\n\n inv: function(p, shape, scale) {\n return jStat.gammapinv(p, shape) * scale;\n },\n\n mean : function(shape, scale) {\n return shape * scale;\n },\n\n mode: function mode(shape, scale) {\n if(shape > 1) return (shape - 1) * scale;\n return undefined;\n },\n\n sample: function sample(shape, scale) {\n return jStat.randg(shape) * scale;\n },\n\n variance: function variance(shape, scale) {\n return shape * scale * scale;\n }\n});\n\n// extend inverse gamma function with static methods\njStat.extend(jStat.invgamma, {\n pdf: function pdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return Math.exp(-(shape + 1) * Math.log(x) - scale / x -\n jStat.gammaln(shape) + shape * Math.log(scale));\n },\n\n cdf: function cdf(x, shape, scale) {\n if (x <= 0)\n return 0;\n return 1 - jStat.lowRegGamma(shape, scale / x);\n },\n\n inv: function(p, shape, scale) {\n return scale / jStat.gammapinv(1 - p, shape);\n },\n\n mean : function(shape, scale) {\n return (shape > 1) ? scale / (shape - 1) : undefined;\n },\n\n mode: function mode(shape, scale) {\n return scale / (shape + 1);\n },\n\n sample: function sample(shape, scale) {\n return scale / jStat.randg(shape);\n },\n\n variance: function variance(shape, scale) {\n if (shape <= 2)\n return undefined;\n return scale * scale / ((shape - 1) * (shape - 1) * (shape - 2));\n }\n});\n\n\n// extend kumaraswamy function with static methods\njStat.extend(jStat.kumaraswamy, {\n pdf: function pdf(x, alpha, beta) {\n if (x === 0 && alpha === 1)\n return beta;\n else if (x === 1 && beta === 1)\n return alpha;\n return Math.exp(Math.log(alpha) + Math.log(beta) + (alpha - 1) *\n Math.log(x) + (beta - 1) *\n Math.log(1 - Math.pow(x, alpha)));\n },\n\n cdf: function cdf(x, alpha, beta) {\n if (x < 0)\n return 0;\n else if (x > 1)\n return 1;\n return (1 - Math.pow(1 - Math.pow(x, alpha), beta));\n },\n\n inv: function inv(p, alpha, beta) {\n return Math.pow(1 - Math.pow(1 - p, 1 / beta), 1 / alpha);\n },\n\n mean : function(alpha, beta) {\n return (beta * jStat.gammafn(1 + 1 / alpha) *\n jStat.gammafn(beta)) / (jStat.gammafn(1 + 1 / alpha + beta));\n },\n\n median: function median(alpha, beta) {\n return Math.pow(1 - Math.pow(2, -1 / beta), 1 / alpha);\n },\n\n mode: function mode(alpha, beta) {\n if (!(alpha >= 1 && beta >= 1 && (alpha !== 1 && beta !== 1)))\n return undefined;\n return Math.pow((alpha - 1) / (alpha * beta - 1), 1 / alpha);\n },\n\n variance: function variance(/*alpha, beta*/) {\n throw new Error('variance not yet implemented');\n // TODO: complete this\n }\n});\n\n\n\n// extend lognormal function with static methods\njStat.extend(jStat.lognormal, {\n pdf: function pdf(x, mu, sigma) {\n if (x <= 0)\n return 0;\n return Math.exp(-Math.log(x) - 0.5 * Math.log(2 * Math.PI) -\n Math.log(sigma) - Math.pow(Math.log(x) - mu, 2) /\n (2 * sigma * sigma));\n },\n\n cdf: function cdf(x, mu, sigma) {\n if (x < 0)\n return 0;\n return 0.5 +\n (0.5 * jStat.erf((Math.log(x) - mu) / Math.sqrt(2 * sigma * sigma)));\n },\n\n inv: function(p, mu, sigma) {\n return Math.exp(-1.41421356237309505 * sigma * jStat.erfcinv(2 * p) + mu);\n },\n\n mean: function mean(mu, sigma) {\n return Math.exp(mu + sigma * sigma / 2);\n },\n\n median: function median(mu/*, sigma*/) {\n return Math.exp(mu);\n },\n\n mode: function mode(mu, sigma) {\n return Math.exp(mu - sigma * sigma);\n },\n\n sample: function sample(mu, sigma) {\n return Math.exp(jStat.randn() * sigma + mu);\n },\n\n variance: function variance(mu, sigma) {\n return (Math.exp(sigma * sigma) - 1) * Math.exp(2 * mu + sigma * sigma);\n }\n});\n\n\n\n// extend noncentralt function with static methods\njStat.extend(jStat.noncentralt, {\n pdf: function pdf(x, dof, ncp) {\n var tol = 1e-14;\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.pdf(x, dof)\n\n if (Math.abs(x) < tol) { // different formula for x == 0\n return Math.exp(jStat.gammaln((dof + 1) / 2) - ncp * ncp / 2 -\n 0.5 * Math.log(Math.PI * dof) - jStat.gammaln(dof / 2));\n }\n\n // formula for x != 0\n return dof / x *\n (jStat.noncentralt.cdf(x * Math.sqrt(1 + 2 / dof), dof+2, ncp) -\n jStat.noncentralt.cdf(x, dof, ncp));\n },\n\n cdf: function cdf(x, dof, ncp) {\n var tol = 1e-14;\n var min_iterations = 200;\n\n if (Math.abs(ncp) < tol) // ncp approx 0; use student-t\n return jStat.studentt.cdf(x, dof);\n\n // turn negative x into positive and flip result afterwards\n var flip = false;\n if (x < 0) {\n flip = true;\n ncp = -ncp;\n }\n\n var prob = jStat.normal.cdf(-ncp, 0, 1);\n var value = tol + 1;\n // use value at last two steps to determine convergence\n var lastvalue = value;\n var y = x * x / (x * x + dof);\n var j = 0;\n var p = Math.exp(-ncp * ncp / 2);\n var q = Math.exp(-ncp * ncp / 2 - 0.5 * Math.log(2) -\n jStat.gammaln(3 / 2)) * ncp;\n while (j < min_iterations || lastvalue > tol || value > tol) {\n lastvalue = value;\n if (j > 0) {\n p *= (ncp * ncp) / (2 * j);\n q *= (ncp * ncp) / (2 * (j + 1 / 2));\n }\n value = p * jStat.beta.cdf(y, j + 0.5, dof / 2) +\n q * jStat.beta.cdf(y, j+1, dof/2);\n prob += 0.5 * value;\n j++;\n }\n\n return flip ? (1 - prob) : prob;\n }\n});\n\n\n// extend normal function with static methods\njStat.extend(jStat.normal, {\n pdf: function pdf(x, mean, std) {\n return Math.exp(-0.5 * Math.log(2 * Math.PI) -\n Math.log(std) - Math.pow(x - mean, 2) / (2 * std * std));\n },\n\n cdf: function cdf(x, mean, std) {\n return 0.5 * (1 + jStat.erf((x - mean) / Math.sqrt(2 * std * std)));\n },\n\n inv: function(p, mean, std) {\n return -1.41421356237309505 * std * jStat.erfcinv(2 * p) + mean;\n },\n\n mean : function(mean/*, std*/) {\n return mean;\n },\n\n median: function median(mean/*, std*/) {\n return mean;\n },\n\n mode: function (mean/*, std*/) {\n return mean;\n },\n\n sample: function sample(mean, std) {\n return jStat.randn() * std + mean;\n },\n\n variance : function(mean, std) {\n return std * std;\n }\n});\n\n\n\n// extend pareto function with static methods\njStat.extend(jStat.pareto, {\n pdf: function pdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return (shape * Math.pow(scale, shape)) / Math.pow(x, shape + 1);\n },\n\n cdf: function cdf(x, scale, shape) {\n if (x < scale)\n return 0;\n return 1 - Math.pow(scale / x, shape);\n },\n\n inv: function inv(p, scale, shape) {\n return scale / Math.pow(1 - p, 1 / shape);\n },\n\n mean: function mean(scale, shape) {\n if (shape <= 1)\n return undefined;\n return (shape * Math.pow(scale, shape)) / (shape - 1);\n },\n\n median: function median(scale, shape) {\n return scale * (shape * Math.SQRT2);\n },\n\n mode: function mode(scale/*, shape*/) {\n return scale;\n },\n\n variance : function(scale, shape) {\n if (shape <= 2)\n return undefined;\n return (scale*scale * shape) / (Math.pow(shape - 1, 2) * (shape - 2));\n }\n});\n\n\n\n// extend studentt function with static methods\njStat.extend(jStat.studentt, {\n pdf: function pdf(x, dof) {\n dof = dof > 1e100 ? 1e100 : dof;\n return (1/(Math.sqrt(dof) * jStat.betafn(0.5, dof/2))) *\n Math.pow(1 + ((x * x) / dof), -((dof + 1) / 2));\n },\n\n cdf: function cdf(x, dof) {\n var dof2 = dof / 2;\n return jStat.ibeta((x + Math.sqrt(x * x + dof)) /\n (2 * Math.sqrt(x * x + dof)), dof2, dof2);\n },\n\n inv: function(p, dof) {\n var x = jStat.ibetainv(2 * Math.min(p, 1 - p), 0.5 * dof, 0.5);\n x = Math.sqrt(dof * (1 - x) / x);\n return (p > 0.5) ? x : -x;\n },\n\n mean: function mean(dof) {\n return (dof > 1) ? 0 : undefined;\n },\n\n median: function median(/*dof*/) {\n return 0;\n },\n\n mode: function mode(/*dof*/) {\n return 0;\n },\n\n sample: function sample(dof) {\n return jStat.randn() * Math.sqrt(dof / (2 * jStat.randg(dof / 2)));\n },\n\n variance: function variance(dof) {\n return (dof > 2) ? dof / (dof - 2) : (dof > 1) ? Infinity : undefined;\n }\n});\n\n\n\n// extend weibull function with static methods\njStat.extend(jStat.weibull, {\n pdf: function pdf(x, scale, shape) {\n if (x < 0 || scale < 0 || shape < 0)\n return 0;\n return (shape / scale) * Math.pow((x / scale), (shape - 1)) *\n Math.exp(-(Math.pow((x / scale), shape)));\n },\n\n cdf: function cdf(x, scale, shape) {\n return x < 0 ? 0 : 1 - Math.exp(-Math.pow((x / scale), shape));\n },\n\n inv: function(p, scale, shape) {\n return scale * Math.pow(-Math.log(1 - p), 1 / shape);\n },\n\n mean : function(scale, shape) {\n return scale * jStat.gammafn(1 + 1 / shape);\n },\n\n median: function median(scale, shape) {\n return scale * Math.pow(Math.log(2), 1 / shape);\n },\n\n mode: function mode(scale, shape) {\n if (shape <= 1)\n return 0;\n return scale * Math.pow((shape - 1) / shape, 1 / shape);\n },\n\n sample: function sample(scale, shape) {\n return scale * Math.pow(-Math.log(jStat._random_fn()), 1 / shape);\n },\n\n variance: function variance(scale, shape) {\n return scale * scale * jStat.gammafn(1 + 2 / shape) -\n Math.pow(jStat.weibull.mean(scale, shape), 2);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.uniform, {\n pdf: function pdf(x, a, b) {\n return (x < a || x > b) ? 0 : 1 / (b - a);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (x - a) / (b - a);\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (p * (b - a));\n },\n\n mean: function mean(a, b) {\n return 0.5 * (a + b);\n },\n\n median: function median(a, b) {\n return jStat.mean(a, b);\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return (a / 2 + b / 2) + (b / 2 - a / 2) * (2 * jStat._random_fn() - 1);\n },\n\n variance: function variance(a, b) {\n return Math.pow(b - a, 2) / 12;\n }\n});\n\n\n// Got this from http://www.math.ucla.edu/~tom/distributions/binomial.html\nfunction betinc(x, a, b, eps) {\n var a0 = 0;\n var b0 = 1;\n var a1 = 1;\n var b1 = 1;\n var m9 = 0;\n var a2 = 0;\n var c9;\n\n while (Math.abs((a1 - a2) / a1) > eps) {\n a2 = a1;\n c9 = -(a + m9) * (a + b + m9) * x / (a + 2 * m9) / (a + 2 * m9 + 1);\n a0 = a1 + c9 * a0;\n b0 = b1 + c9 * b0;\n m9 = m9 + 1;\n c9 = m9 * (b - m9) * x / (a + 2 * m9 - 1) / (a + 2 * m9);\n a1 = a0 + c9 * a1;\n b1 = b0 + c9 * b1;\n a0 = a0 / b1;\n b0 = b0 / b1;\n a1 = a1 / b1;\n b1 = 1;\n }\n\n return a1 / a;\n}\n\n\n// extend uniform function with static methods\njStat.extend(jStat.binomial, {\n pdf: function pdf(k, n, p) {\n return (p === 0 || p === 1) ?\n ((n * p) === k ? 1 : 0) :\n jStat.combination(n, k) * Math.pow(p, k) * Math.pow(1 - p, n - k);\n },\n\n cdf: function cdf(x, n, p) {\n var betacdf;\n var eps = 1e-10;\n\n if (x < 0)\n return 0;\n if (x >= n)\n return 1;\n if (p < 0 || p > 1 || n <= 0)\n return NaN;\n\n x = Math.floor(x);\n var z = p;\n var a = x + 1;\n var b = n - x;\n var s = a + b;\n var bt = Math.exp(jStat.gammaln(s) - jStat.gammaln(b) -\n jStat.gammaln(a) + a * Math.log(z) + b * Math.log(1 - z));\n\n if (z < (a + 1) / (s + 2))\n betacdf = bt * betinc(z, a, b, eps);\n else\n betacdf = 1 - bt * betinc(1 - z, b, a, eps);\n\n return Math.round((1 - betacdf) * (1 / eps)) / (1 / eps);\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.negbin, {\n pdf: function pdf(k, r, p) {\n if (k !== k >>> 0)\n return false;\n if (k < 0)\n return 0;\n return jStat.combination(k + r - 1, r - 1) *\n Math.pow(1 - p, k) * Math.pow(p, r);\n },\n\n cdf: function cdf(x, r, p) {\n var sum = 0,\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sum += jStat.negbin.pdf(k, r, p);\n }\n return sum;\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.hypgeom, {\n pdf: function pdf(k, N, m, n) {\n // Hypergeometric PDF.\n\n // A simplification of the CDF algorithm below.\n\n // k = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(k !== k | 0) {\n return false;\n } else if(k < 0 || k < m - (N - n)) {\n // It's impossible to have this few successes drawn.\n return 0;\n } else if(k > n || k > m) {\n // It's impossible to have this many successes drawn.\n return 0;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.pdf(N - m - n + k, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return jStat.hypgeom.pdf(n - k, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return jStat.hypgeom.pdf(m - k, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.pdf(k, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate product to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < k; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledPDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n scaledPDF *= 1 - (m / (N - samplesDone));\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledPDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledPDF));\n }\n },\n\n cdf: function cdf(x, N, m, n) {\n // Hypergeometric CDF.\n\n // This algorithm is due to Prof. Thomas S. Ferguson, ,\n // and comes from his hypergeometric test calculator at\n // .\n\n // x = number of successes drawn\n // N = population size\n // m = number of successes in population\n // n = number of items drawn from population\n\n if(x < 0 || x < m - (N - n)) {\n // It's impossible to have this few successes drawn or fewer.\n return 0;\n } else if(x >= n || x >= m) {\n // We will always have this many successes or fewer.\n return 1;\n } else if (m * 2 > N) {\n // More than half the population is successes.\n\n if(n * 2 > N) {\n // More than half the population is sampled.\n\n return jStat.hypgeom.cdf(N - m - n + x, N, N - m, N - n)\n } else {\n // Half or less of the population is sampled.\n\n return 1 - jStat.hypgeom.cdf(n - x - 1, N, N - m, n);\n }\n\n } else if(n * 2 > N) {\n // Half or less is successes.\n\n return 1 - jStat.hypgeom.cdf(m - x - 1, N, m, N - n);\n\n } else if(m < n) {\n // We want to have the number of things sampled to be less than the\n // successes available. So swap the definitions of successful and sampled.\n return jStat.hypgeom.cdf(x, N, n, m);\n } else {\n // If we get here, half or less of the population was sampled, half or\n // less of it was successes, and we had fewer sampled things than\n // successes. Now we can do this complicated iterative algorithm in an\n // efficient way.\n\n // The basic premise of the algorithm is that we partially normalize our\n // intermediate sum to keep it in a numerically good region, and then\n // finish the normalization at the end.\n\n // Holds the intermediate, scaled total CDF.\n var scaledCDF = 1;\n\n // This variable holds the scaled probability of the current number of\n // successes.\n var scaledPDF = 1;\n\n // This keeps track of how much we have normalized.\n var samplesDone = 0;\n\n for(var i = 0; i < x; i++) {\n // For every possible number of successes up to that observed...\n\n while(scaledCDF > 1 && samplesDone < n) {\n // Intermediate result is growing too big. Apply some of the\n // normalization to shrink everything.\n\n var factor = 1 - (m / (N - samplesDone));\n\n scaledPDF *= factor;\n scaledCDF *= factor;\n\n // Say we've normalized by this sample already.\n samplesDone++;\n }\n\n // Work out the partially-normalized hypergeometric PDF for the next\n // number of successes\n scaledPDF *= (n - i) * (m - i) / ((i + 1) * (N - m - n + i + 1));\n\n // Add to the CDF answer.\n scaledCDF += scaledPDF;\n }\n\n for(; samplesDone < n; samplesDone++) {\n // Apply all the rest of the normalization\n scaledCDF *= 1 - (m / (N - samplesDone));\n }\n\n // Bound answer sanely before returning.\n return Math.min(1, Math.max(0, scaledCDF));\n }\n }\n});\n\n\n\n// extend uniform function with static methods\njStat.extend(jStat.poisson, {\n pdf: function pdf(k, l) {\n if (l < 0 || (k % 1) !== 0 || k < 0) {\n return 0;\n }\n\n return Math.pow(l, k) * Math.exp(-l) / jStat.factorial(k);\n },\n\n cdf: function cdf(x, l) {\n var sumarr = [],\n k = 0;\n if (x < 0) return 0;\n for (; k <= x; k++) {\n sumarr.push(jStat.poisson.pdf(k, l));\n }\n return jStat.sum(sumarr);\n },\n\n mean : function(l) {\n return l;\n },\n\n variance : function(l) {\n return l;\n },\n\n sampleSmall: function sampleSmall(l) {\n var p = 1, k = 0, L = Math.exp(-l);\n do {\n k++;\n p *= jStat._random_fn();\n } while (p > L);\n return k - 1;\n },\n\n sampleLarge: function sampleLarge(l) {\n var lam = l;\n var k;\n var U, V, slam, loglam, a, b, invalpha, vr, us;\n\n slam = Math.sqrt(lam);\n loglam = Math.log(lam);\n b = 0.931 + 2.53 * slam;\n a = -0.059 + 0.02483 * b;\n invalpha = 1.1239 + 1.1328 / (b - 3.4);\n vr = 0.9277 - 3.6224 / (b - 2);\n\n while (1) {\n U = Math.random() - 0.5;\n V = Math.random();\n us = 0.5 - Math.abs(U);\n k = Math.floor((2 * a / us + b) * U + lam + 0.43);\n if ((us >= 0.07) && (V <= vr)) {\n return k;\n }\n if ((k < 0) || ((us < 0.013) && (V > us))) {\n continue;\n }\n /* log(V) == log(0.0) ok here */\n /* if U==0.0 so that us==0.0, log is ok since always returns */\n if ((Math.log(V) + Math.log(invalpha) - Math.log(a / (us * us) + b)) <= (-lam + k * loglam - jStat.loggam(k + 1))) {\n return k;\n }\n }\n },\n\n sample: function sample(l) {\n if (l < 10)\n return this.sampleSmall(l);\n else\n return this.sampleLarge(l);\n }\n});\n\n// extend triangular function with static methods\njStat.extend(jStat.triangular, {\n pdf: function pdf(x, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (x < a || x > b) {\n return 0;\n } else if (x < c) {\n return (2 * (x - a)) / ((b - a) * (c - a));\n } else if (x === c) {\n return (2 / (b - a));\n } else { // x > c\n return (2 * (b - x)) / ((b - a) * (b - c));\n }\n }\n },\n\n cdf: function cdf(x, a, b, c) {\n if (b <= a || c < a || c > b)\n return NaN;\n if (x <= a)\n return 0;\n else if (x >= b)\n return 1;\n if (x <= c)\n return Math.pow(x - a, 2) / ((b - a) * (c - a));\n else // x > c\n return 1 - Math.pow(b - x, 2) / ((b - a) * (b - c));\n },\n\n inv: function inv(p, a, b, c) {\n if (b <= a || c < a || c > b) {\n return NaN;\n } else {\n if (p <= ((c - a) / (b - a))) {\n return a + (b - a) * Math.sqrt(p * ((c - a) / (b - a)));\n } else { // p > ((c - a) / (b - a))\n return a + (b - a) * (1 - Math.sqrt((1 - p) * (1 - ((c - a) / (b - a)))));\n }\n }\n },\n\n mean: function mean(a, b, c) {\n return (a + b + c) / 3;\n },\n\n median: function median(a, b, c) {\n if (c <= (a + b) / 2) {\n return b - Math.sqrt((b - a) * (b - c)) / Math.sqrt(2);\n } else if (c > (a + b) / 2) {\n return a + Math.sqrt((b - a) * (c - a)) / Math.sqrt(2);\n }\n },\n\n mode: function mode(a, b, c) {\n return c;\n },\n\n sample: function sample(a, b, c) {\n var u = jStat._random_fn();\n if (u < ((c - a) / (b - a)))\n return a + Math.sqrt(u * (b - a) * (c - a))\n return b - Math.sqrt((1 - u) * (b - a) * (b - c));\n },\n\n variance: function variance(a, b, c) {\n return (a * a + b * b + c * c - a * b - a * c - b * c) / 18;\n }\n});\n\n\n// extend arcsine function with static methods\njStat.extend(jStat.arcsine, {\n pdf: function pdf(x, a, b) {\n if (b <= a) return NaN;\n\n return (x <= a || x >= b) ? 0 :\n (2 / Math.PI) *\n Math.pow(Math.pow(b - a, 2) -\n Math.pow(2 * x - a - b, 2), -0.5);\n },\n\n cdf: function cdf(x, a, b) {\n if (x < a)\n return 0;\n else if (x < b)\n return (2 / Math.PI) * Math.asin(Math.sqrt((x - a)/(b - a)));\n return 1;\n },\n\n inv: function(p, a, b) {\n return a + (0.5 - 0.5 * Math.cos(Math.PI * p)) * (b - a);\n },\n\n mean: function mean(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n median: function median(a, b) {\n if (b <= a) return NaN;\n return (a + b) / 2;\n },\n\n mode: function mode(/*a, b*/) {\n throw new Error('mode is not yet implemented');\n },\n\n sample: function sample(a, b) {\n return ((a + b) / 2) + ((b - a) / 2) *\n Math.sin(2 * Math.PI * jStat.uniform.sample(0, 1));\n },\n\n variance: function variance(a, b) {\n if (b <= a) return NaN;\n return Math.pow(b - a, 2) / 8;\n }\n});\n\n\nfunction laplaceSign(x) { return x / Math.abs(x); }\n\njStat.extend(jStat.laplace, {\n pdf: function pdf(x, mu, b) {\n return (b <= 0) ? 0 : (Math.exp(-Math.abs(x - mu) / b)) / (2 * b);\n },\n\n cdf: function cdf(x, mu, b) {\n if (b <= 0) { return 0; }\n\n if(x < mu) {\n return 0.5 * Math.exp((x - mu) / b);\n } else {\n return 1 - 0.5 * Math.exp(- (x - mu) / b);\n }\n },\n\n mean: function(mu/*, b*/) {\n return mu;\n },\n\n median: function(mu/*, b*/) {\n return mu;\n },\n\n mode: function(mu/*, b*/) {\n return mu;\n },\n\n variance: function(mu, b) {\n return 2 * b * b;\n },\n\n sample: function sample(mu, b) {\n var u = jStat._random_fn() - 0.5;\n\n return mu - (b * laplaceSign(u) * Math.log(1 - (2 * Math.abs(u))));\n }\n});\n\nfunction tukeyWprob(w, rr, cc) {\n var nleg = 12;\n var ihalf = 6;\n\n var C1 = -30;\n var C2 = -50;\n var C3 = 60;\n var bb = 8;\n var wlar = 3;\n var wincr1 = 2;\n var wincr2 = 3;\n var xleg = [\n 0.981560634246719250690549090149,\n 0.904117256370474856678465866119,\n 0.769902674194304687036893833213,\n 0.587317954286617447296702418941,\n 0.367831498998180193752691536644,\n 0.125233408511468915472441369464\n ];\n var aleg = [\n 0.047175336386511827194615961485,\n 0.106939325995318430960254718194,\n 0.160078328543346226334652529543,\n 0.203167426723065921749064455810,\n 0.233492536538354808760849898925,\n 0.249147045813402785000562436043\n ];\n\n var qsqz = w * 0.5;\n\n // if w >= 16 then the integral lower bound (occurs for c=20)\n // is 0.99999999999995 so return a value of 1.\n\n if (qsqz >= bb)\n return 1.0;\n\n // find (f(w/2) - 1) ^ cc\n // (first term in integral of hartley's form).\n\n var pr_w = 2 * jStat.normal.cdf(qsqz, 0, 1, 1, 0) - 1; // erf(qsqz / M_SQRT2)\n // if pr_w ^ cc < 2e-22 then set pr_w = 0\n if (pr_w >= Math.exp(C2 / cc))\n pr_w = Math.pow(pr_w, cc);\n else\n pr_w = 0.0;\n\n // if w is large then the second component of the\n // integral is small, so fewer intervals are needed.\n\n var wincr;\n if (w > wlar)\n wincr = wincr1;\n else\n wincr = wincr2;\n\n // find the integral of second term of hartley's form\n // for the integral of the range for equal-length\n // intervals using legendre quadrature. limits of\n // integration are from (w/2, 8). two or three\n // equal-length intervals are used.\n\n // blb and bub are lower and upper limits of integration.\n\n var blb = qsqz;\n var binc = (bb - qsqz) / wincr;\n var bub = blb + binc;\n var einsum = 0.0;\n\n // integrate over each interval\n\n var cc1 = cc - 1.0;\n for (var wi = 1; wi <= wincr; wi++) {\n var elsum = 0.0;\n var a = 0.5 * (bub + blb);\n\n // legendre quadrature with order = nleg\n\n var b = 0.5 * (bub - blb);\n\n for (var jj = 1; jj <= nleg; jj++) {\n var j, xx;\n if (ihalf < jj) {\n j = (nleg - jj) + 1;\n xx = xleg[j-1];\n } else {\n j = jj;\n xx = -xleg[j-1];\n }\n var c = b * xx;\n var ac = a + c;\n\n // if exp(-qexpo/2) < 9e-14,\n // then doesn't contribute to integral\n\n var qexpo = ac * ac;\n if (qexpo > C3)\n break;\n\n var pplus = 2 * jStat.normal.cdf(ac, 0, 1, 1, 0);\n var pminus= 2 * jStat.normal.cdf(ac, w, 1, 1, 0);\n\n // if rinsum ^ (cc-1) < 9e-14,\n // then doesn't contribute to integral\n\n var rinsum = (pplus * 0.5) - (pminus * 0.5);\n if (rinsum >= Math.exp(C1 / cc1)) {\n rinsum = (aleg[j-1] * Math.exp(-(0.5 * qexpo))) * Math.pow(rinsum, cc1);\n elsum += rinsum;\n }\n }\n elsum *= (((2.0 * b) * cc) / Math.sqrt(2 * Math.PI));\n einsum += elsum;\n blb = bub;\n bub += binc;\n }\n\n // if pr_w ^ rr < 9e-14, then return 0\n pr_w += einsum;\n if (pr_w <= Math.exp(C1 / rr))\n return 0;\n\n pr_w = Math.pow(pr_w, rr);\n if (pr_w >= 1) // 1 was iMax was eps\n return 1;\n return pr_w;\n}\n\nfunction tukeyQinv(p, c, v) {\n var p0 = 0.322232421088;\n var q0 = 0.993484626060e-01;\n var p1 = -1.0;\n var q1 = 0.588581570495;\n var p2 = -0.342242088547;\n var q2 = 0.531103462366;\n var p3 = -0.204231210125;\n var q3 = 0.103537752850;\n var p4 = -0.453642210148e-04;\n var q4 = 0.38560700634e-02;\n var c1 = 0.8832;\n var c2 = 0.2368;\n var c3 = 1.214;\n var c4 = 1.208;\n var c5 = 1.4142;\n var vmax = 120.0;\n\n var ps = 0.5 - 0.5 * p;\n var yi = Math.sqrt(Math.log(1.0 / (ps * ps)));\n var t = yi + (((( yi * p4 + p3) * yi + p2) * yi + p1) * yi + p0)\n / (((( yi * q4 + q3) * yi + q2) * yi + q1) * yi + q0);\n if (v < vmax) t += (t * t * t + t) / v / 4.0;\n var q = c1 - c2 * t;\n if (v < vmax) q += -c3 / v + c4 * t / v;\n return t * (q * Math.log(c - 1.0) + c5);\n}\n\njStat.extend(jStat.tukey, {\n cdf: function cdf(q, nmeans, df) {\n // Identical implementation as the R ptukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var nlegq = 16;\n var ihalfq = 8;\n\n var eps1 = -30.0;\n var eps2 = 1.0e-14;\n var dhaf = 100.0;\n var dquar = 800.0;\n var deigh = 5000.0;\n var dlarg = 25000.0;\n var ulen1 = 1.0;\n var ulen2 = 0.5;\n var ulen3 = 0.25;\n var ulen4 = 0.125;\n var xlegq = [\n 0.989400934991649932596154173450,\n 0.944575023073232576077988415535,\n 0.865631202387831743880467897712,\n 0.755404408355003033895101194847,\n 0.617876244402643748446671764049,\n 0.458016777657227386342419442984,\n 0.281603550779258913230460501460,\n 0.950125098376374401853193354250e-1\n ];\n var alegq = [\n 0.271524594117540948517805724560e-1,\n 0.622535239386478928628438369944e-1,\n 0.951585116824927848099251076022e-1,\n 0.124628971255533872052476282192,\n 0.149595988816576732081501730547,\n 0.169156519395002538189312079030,\n 0.182603415044923588866763667969,\n 0.189450610455068496285396723208\n ];\n\n if (q <= 0)\n return 0;\n\n // df must be > 1\n // there must be at least two values\n\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (!Number.isFinite(q))\n return 1;\n\n if (df > dlarg)\n return tukeyWprob(q, rr, cc);\n\n // calculate leading constant\n\n var f2 = df * 0.5;\n var f2lf = ((f2 * Math.log(df)) - (df * Math.log(2))) - jStat.gammaln(f2);\n var f21 = f2 - 1.0;\n\n // integral is divided into unit, half-unit, quarter-unit, or\n // eighth-unit length intervals depending on the value of the\n // degrees of freedom.\n\n var ff4 = df * 0.25;\n var ulen;\n if (df <= dhaf) ulen = ulen1;\n else if (df <= dquar) ulen = ulen2;\n else if (df <= deigh) ulen = ulen3;\n else ulen = ulen4;\n\n f2lf += Math.log(ulen);\n\n // integrate over each subinterval\n\n var ans = 0.0;\n\n for (var i = 1; i <= 50; i++) {\n var otsum = 0.0;\n\n // legendre quadrature with order = nlegq\n // nodes (stored in xlegq) are symmetric around zero.\n\n var twa1 = (2 * i - 1) * ulen;\n\n for (var jj = 1; jj <= nlegq; jj++) {\n var j, t1;\n if (ihalfq < jj) {\n j = jj - ihalfq - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 + (xlegq[j] * ulen))))\n - (((xlegq[j] * ulen) + twa1) * ff4);\n } else {\n j = jj - 1;\n t1 = (f2lf + (f21 * Math.log(twa1 - (xlegq[j] * ulen))))\n + (((xlegq[j] * ulen) - twa1) * ff4);\n }\n\n // if exp(t1) < 9e-14, then doesn't contribute to integral\n var qsqz;\n if (t1 >= eps1) {\n if (ihalfq < jj) {\n qsqz = q * Math.sqrt(((xlegq[j] * ulen) + twa1) * 0.5);\n } else {\n qsqz = q * Math.sqrt(((-(xlegq[j] * ulen)) + twa1) * 0.5);\n }\n\n // call wprob to find integral of range portion\n\n var wprb = tukeyWprob(qsqz, rr, cc);\n var rotsum = (wprb * alegq[j]) * Math.exp(t1);\n otsum += rotsum;\n }\n // end legendre integral for interval i\n // L200:\n }\n\n // if integral for interval i < 1e-14, then stop.\n // However, in order to avoid small area under left tail,\n // at least 1 / ulen intervals are calculated.\n if (i * ulen >= 1.0 && otsum <= eps2)\n break;\n\n // end of interval i\n // L330:\n\n ans += otsum;\n }\n\n if (otsum > eps2) { // not converged\n throw new Error('tukey.cdf failed to converge');\n }\n if (ans > 1)\n ans = 1;\n return ans;\n },\n\n inv: function(p, nmeans, df) {\n // Identical implementation as the R qtukey() function as of commit 68947\n var rr = 1;\n var cc = nmeans;\n\n var eps = 0.0001;\n var maxiter = 50;\n\n // df must be > 1 ; there must be at least two values\n if (df < 2 || rr < 1 || cc < 2) return NaN;\n\n if (p < 0 || p > 1) return NaN;\n if (p === 0) return 0;\n if (p === 1) return Infinity;\n\n // Initial value\n\n var x0 = tukeyQinv(p, cc, df);\n\n // Find prob(value < x0)\n\n var valx0 = jStat.tukey.cdf(x0, nmeans, df) - p;\n\n // Find the second iterate and prob(value < x1).\n // If the first iterate has probability value\n // exceeding p then second iterate is 1 less than\n // first iterate; otherwise it is 1 greater.\n\n var x1;\n if (valx0 > 0.0)\n x1 = Math.max(0.0, x0 - 1.0);\n else\n x1 = x0 + 1.0;\n var valx1 = jStat.tukey.cdf(x1, nmeans, df) - p;\n\n // Find new iterate\n\n var ans;\n for(var iter = 1; iter < maxiter; iter++) {\n ans = x1 - ((valx1 * (x1 - x0)) / (valx1 - valx0));\n valx0 = valx1;\n\n // New iterate must be >= 0\n\n x0 = x1;\n if (ans < 0.0) {\n ans = 0.0;\n valx1 = -p;\n }\n // Find prob(value < new iterate)\n\n valx1 = jStat.tukey.cdf(ans, nmeans, df) - p;\n x1 = ans;\n\n // If the difference between two successive\n // iterates is less than eps, stop\n\n var xabs = Math.abs(x1 - x0);\n if (xabs < eps)\n return ans;\n }\n\n throw new Error('tukey.inv failed to converge');\n }\n});\n\n}(jStat, Math));\n/* Provides functions for the solution of linear system of equations, integration, extrapolation,\n * interpolation, eigenvalue problems, differential equations and PCA analysis. */\n\n(function(jStat, Math) {\n\nvar push = Array.prototype.push;\nvar isArray = jStat.utils.isArray;\n\nfunction isUsable(arg) {\n return isArray(arg) || arg instanceof jStat;\n}\n\njStat.extend({\n\n // add a vector/matrix to a vector/matrix or scalar\n add: function add(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value + arg[row][col];\n });\n }\n return jStat.map(arr, function(value) { return value + arg; });\n },\n\n // subtract a vector or scalar from the vector\n subtract: function subtract(arr, arg) {\n // check if arg is a vector or scalar\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.map(arr, function(value, row, col) {\n return value - arg[row][col] || 0;\n });\n }\n return jStat.map(arr, function(value) { return value - arg; });\n },\n\n // matrix division\n divide: function divide(arr, arg) {\n if (isUsable(arg)) {\n if (!isUsable(arg[0])) arg = [ arg ];\n return jStat.multiply(arr, jStat.inv(arg));\n }\n return jStat.map(arr, function(value) { return value / arg; });\n },\n\n // matrix multiplication\n multiply: function multiply(arr, arg) {\n var row, col, nrescols, sum, nrow, ncol, res, rescols;\n // eg: arr = 2 arg = 3 -> 6 for res[0][0] statement closure\n if (arr.length === undefined && arg.length === undefined) {\n return arr * arg;\n }\n nrow = arr.length,\n ncol = arr[0].length,\n res = jStat.zeros(nrow, nrescols = (isUsable(arg)) ? arg[0].length : ncol),\n rescols = 0;\n if (isUsable(arg)) {\n for (; rescols < nrescols; rescols++) {\n for (row = 0; row < nrow; row++) {\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += arr[row][col] * arg[col][rescols];\n res[row][rescols] = sum;\n }\n }\n return (nrow === 1 && rescols === 1) ? res[0][0] : res;\n }\n return jStat.map(arr, function(value) { return value * arg; });\n },\n\n // outer([1,2,3],[4,5,6])\n // ===\n // [[1],[2],[3]] times [[4,5,6]]\n // ->\n // [[4,5,6],[8,10,12],[12,15,18]]\n outer:function outer(A, B) {\n return jStat.multiply(A.map(function(t){ return [t] }), [B]);\n },\n\n\n // Returns the dot product of two matricies\n dot: function dot(arr, arg) {\n if (!isUsable(arr[0])) arr = [ arr ];\n if (!isUsable(arg[0])) arg = [ arg ];\n // convert column to row vector\n var left = (arr[0].length === 1 && arr.length !== 1) ? jStat.transpose(arr) : arr,\n right = (arg[0].length === 1 && arg.length !== 1) ? jStat.transpose(arg) : arg,\n res = [],\n row = 0,\n nrow = left.length,\n ncol = left[0].length,\n sum, col;\n for (; row < nrow; row++) {\n res[row] = [];\n sum = 0;\n for (col = 0; col < ncol; col++)\n sum += left[row][col] * right[row][col];\n res[row] = sum;\n }\n return (res.length === 1) ? res[0] : res;\n },\n\n // raise every element by a scalar\n pow: function pow(arr, arg) {\n return jStat.map(arr, function(value) { return Math.pow(value, arg); });\n },\n\n // exponentiate every element\n exp: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.exp(value); });\n },\n\n // generate the natural log of every element\n log: function exp(arr) {\n return jStat.map(arr, function(value) { return Math.log(value); });\n },\n\n // generate the absolute values of the vector\n abs: function abs(arr) {\n return jStat.map(arr, function(value) { return Math.abs(value); });\n },\n\n // computes the p-norm of the vector\n // In the case that a matrix is passed, uses the first row as the vector\n norm: function norm(arr, p) {\n var nnorm = 0,\n i = 0;\n // check the p-value of the norm, and set for most common case\n if (isNaN(p)) p = 2;\n // check if multi-dimensional array, and make vector correction\n if (isUsable(arr[0])) arr = arr[0];\n // vector norm\n for (; i < arr.length; i++) {\n nnorm += Math.pow(Math.abs(arr[i]), p);\n }\n return Math.pow(nnorm, 1 / p);\n },\n\n // computes the angle between two vectors in rads\n // In case a matrix is passed, this uses the first row as the vector\n angle: function angle(arr, arg) {\n return Math.acos(jStat.dot(arr, arg) / (jStat.norm(arr) * jStat.norm(arg)));\n },\n\n // augment one matrix by another\n // Note: this function returns a matrix, not a jStat object\n aug: function aug(a, b) {\n var newarr = [];\n var i;\n for (i = 0; i < a.length; i++) {\n newarr.push(a[i].slice());\n }\n for (i = 0; i < newarr.length; i++) {\n push.apply(newarr[i], b[i]);\n }\n return newarr;\n },\n\n // The inv() function calculates the inverse of a matrix\n // Create the inverse by augmenting the matrix by the identity matrix of the\n // appropriate size, and then use G-J elimination on the augmented matrix.\n inv: function inv(a) {\n var rows = a.length;\n var cols = a[0].length;\n var b = jStat.identity(rows, cols);\n var c = jStat.gauss_jordan(a, b);\n var result = [];\n var i = 0;\n var j;\n\n //We need to copy the inverse portion to a new matrix to rid G-J artifacts\n for (; i < rows; i++) {\n result[i] = [];\n for (j = cols; j < c[0].length; j++)\n result[i][j - cols] = c[i][j];\n }\n return result;\n },\n\n // calculate the determinant of a matrix\n det: function det(a) {\n if (a.length === 2) {\n return a[0][0] * a[1][1] - a[0][1] * a[1][0];\n }\n\n var determinant = 0;\n for (var i = 0; i < a.length; i++) {\n // build a sub matrix without column `i`\n var submatrix = [];\n for (var row = 1; row < a.length; row++) {\n submatrix[row - 1] = [];\n for (var col = 0; col < a.length; col++) {\n if (col < i) {\n submatrix[row - 1][col] = a[row][col];\n } else if (col > i) {\n submatrix[row - 1][col - 1] = a[row][col];\n }\n }\n }\n\n // alternate between + and - between determinants\n var sign = i % 2 ? -1 : 1;\n determinant += det(submatrix) * a[0][i] * sign;\n }\n\n return determinant\n },\n\n gauss_elimination: function gauss_elimination(a, b) {\n var i = 0,\n j = 0,\n n = a.length,\n m = a[0].length,\n factor = 1,\n sum = 0,\n x = [],\n maug, pivot, temp, k;\n a = jStat.aug(a, b);\n maug = a[0].length;\n for(i = 0; i < n; i++) {\n pivot = a[i][i];\n j = i;\n for (k = i + 1; k < m; k++) {\n if (pivot < Math.abs(a[k][i])) {\n pivot = a[k][i];\n j = k;\n }\n }\n if (j != i) {\n for(k = 0; k < maug; k++) {\n temp = a[i][k];\n a[i][k] = a[j][k];\n a[j][k] = temp;\n }\n }\n for (j = i + 1; j < n; j++) {\n factor = a[j][i] / a[i][i];\n for(k = i; k < maug; k++) {\n a[j][k] = a[j][k] - factor * a[i][k];\n }\n }\n }\n for (i = n - 1; i >= 0; i--) {\n sum = 0;\n for (j = i + 1; j<= n - 1; j++) {\n sum = sum + x[j] * a[i][j];\n }\n x[i] =(a[i][maug - 1] - sum) / a[i][i];\n }\n return x;\n },\n\n gauss_jordan: function gauss_jordan(a, b) {\n var m = jStat.aug(a, b);\n var h = m.length;\n var w = m[0].length;\n var c = 0;\n var x, y, y2;\n // find max pivot\n for (y = 0; y < h; y++) {\n var maxrow = y;\n for (y2 = y+1; y2 < h; y2++) {\n if (Math.abs(m[y2][y]) > Math.abs(m[maxrow][y]))\n maxrow = y2;\n }\n var tmp = m[y];\n m[y] = m[maxrow];\n m[maxrow] = tmp\n for (y2 = y+1; y2 < h; y2++) {\n c = m[y2][y] / m[y][y];\n for (x = y; x < w; x++) {\n m[y2][x] -= m[y][x] * c;\n }\n }\n }\n // backsubstitute\n for (y = h-1; y >= 0; y--) {\n c = m[y][y];\n for (y2 = 0; y2 < y; y2++) {\n for (x = w-1; x > y-1; x--) {\n m[y2][x] -= m[y][x] * m[y2][y] / c;\n }\n }\n m[y][y] /= c;\n for (x = h; x < w; x++) {\n m[y][x] /= c;\n }\n }\n return m;\n },\n\n // solve equation\n // Ax=b\n // A is upper triangular matrix\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[1,2,3]\n // triaUpSolve(A,b) // -> [2.666,0.1666,1.666]\n // if you use matrix style\n // A=[[1,2,3],[0,4,5],[0,6,7]]\n // b=[[1],[2],[3]]\n // will return [[2.666],[0.1666],[1.666]]\n triaUpSolve: function triaUpSolve(A, b) {\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n var matrix_mode = false;\n\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n parts = jStat.arange(i + 1, size).map(function(j) {\n return x[j] * A[i][j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n });\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n triaLowSolve: function triaLowSolve(A, b) {\n // like to triaUpSolve but A is lower triangular matrix\n var size = A[0].length;\n var x = jStat.zeros(1, size)[0];\n var parts;\n\n var matrix_mode=false;\n if (b[0].length != undefined) {\n b = b.map(function(i){ return i[0] });\n matrix_mode = true;\n }\n\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(j) {\n return A[i][j] * x[j];\n });\n x[i] = (b[i] - jStat.sum(parts)) / A[i][i];\n })\n\n if (matrix_mode)\n return x.map(function(i){ return [i] });\n return x;\n },\n\n\n // A -> [L,U]\n // A=LU\n // L is lower triangular matrix\n // U is upper triangular matrix\n lu: function lu(A) {\n var size = A.length;\n //var L=jStat.diagonal(jStat.ones(1,size)[0]);\n var L = jStat.identity(size);\n var R = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(t) {\n R[0][t] = A[0][t];\n });\n jStat.arange(1, size).forEach(function(l) {\n jStat.arange(l).forEach(function(i) {\n parts = jStat.arange(i).map(function(jj) {\n return L[l][jj] * R[jj][i];\n });\n L[l][i] = (A[l][i] - jStat.sum(parts)) / R[i][i];\n });\n jStat.arange(l, size).forEach(function(j) {\n parts = jStat.arange(l).map(function(jj) {\n return L[l][jj] * R[jj][j];\n });\n R[l][j] = A[parts.length][j] - jStat.sum(parts);\n });\n });\n return [L, R];\n },\n\n // A -> T\n // A=TT'\n // T is lower triangular matrix\n cholesky: function cholesky(A) {\n var size = A.length;\n var T = jStat.zeros(A.length, A[0].length);\n var parts;\n jStat.arange(size).forEach(function(i) {\n parts = jStat.arange(i).map(function(t) {\n return Math.pow(T[i][t],2);\n });\n T[i][i] = Math.sqrt(A[i][i] - jStat.sum(parts));\n jStat.arange(i + 1, size).forEach(function(j) {\n parts = jStat.arange(i).map(function(t) {\n return T[i][t] * T[j][t];\n });\n T[j][i] = (A[i][j] - jStat.sum(parts)) / T[i][i];\n });\n });\n return T;\n },\n\n\n gauss_jacobi: function gauss_jacobi(a, b, x, r) {\n var i = 0;\n var j = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(d), jStat.add(l, u)), -1);\n c = jStat.multiply(jStat.inv(d), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk,xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n gauss_seidel: function gauss_seidel(a, b, x, r) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d, l)), u), -1);\n c = jStat.multiply(jStat.inv(jStat.add(d, l)), b);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i = i + 1;\n }\n return xk;\n },\n\n SOR: function SOR(a, b, x, r, w) {\n var i = 0;\n var n = a.length;\n var l = [];\n var u = [];\n var d = [];\n var j, xv, c, h, xk;\n for (; i < n; i++) {\n l[i] = [];\n u[i] = [];\n d[i] = [];\n for (j = 0; j < n; j++) {\n if (i > j) {\n l[i][j] = a[i][j];\n u[i][j] = d[i][j] = 0;\n } else if (i < j) {\n u[i][j] = a[i][j];\n l[i][j] = d[i][j] = 0;\n } else {\n d[i][j] = a[i][j];\n l[i][j] = u[i][j] = 0;\n }\n }\n }\n h = jStat.multiply(jStat.inv(jStat.add(d, jStat.multiply(l, w))),\n jStat.subtract(jStat.multiply(d, 1 - w),\n jStat.multiply(u, w)));\n c = jStat.multiply(jStat.multiply(jStat.inv(jStat.add(d,\n jStat.multiply(l, w))), b), w);\n xv = x;\n xk = jStat.add(jStat.multiply(h, x), c);\n i = 2;\n while (Math.abs(jStat.norm(jStat.subtract(xk, xv))) > r) {\n xv = xk;\n xk = jStat.add(jStat.multiply(h, xv), c);\n i++;\n }\n return xk;\n },\n\n householder: function householder(a) {\n var m = a.length;\n var n = a[0].length;\n var i = 0;\n var w = [];\n var p = [];\n var alpha, r, k, j, factor;\n for (; i < m - 1; i++) {\n alpha = 0;\n for (j = i + 1; j < n; j++)\n alpha += (a[j][i] * a[j][i]);\n factor = (a[i + 1][i] > 0) ? -1 : 1;\n alpha = factor * Math.sqrt(alpha);\n r = Math.sqrt((((alpha * alpha) - a[i + 1][i] * alpha) / 2));\n w = jStat.zeros(m, 1);\n w[i + 1][0] = (a[i + 1][i] - alpha) / (2 * r);\n for (k = i + 2; k < m; k++) w[k][0] = a[k][i] / (2 * r);\n p = jStat.subtract(jStat.identity(m, n),\n jStat.multiply(jStat.multiply(w, jStat.transpose(w)), 2));\n a = jStat.multiply(p, jStat.multiply(a, p));\n }\n return a;\n },\n\n // A -> [Q,R]\n // Q is orthogonal matrix\n // R is upper triangular\n QR: (function() {\n // x -> Q\n // find a orthogonal matrix Q st.\n // Qx=y\n // y is [||x||,0,0,...]\n\n // quick ref\n var sum = jStat.sum;\n var range = jStat.arange;\n\n function qr2(x) {\n // quick impletation\n // https://www.stat.wisc.edu/~larget/math496/qr.html\n\n var n = x.length;\n var p = x[0].length;\n\n var r = jStat.zeros(p, p);\n x = jStat.copy(x);\n\n var i,j,k;\n for(j = 0; j < p; j++){\n r[j][j] = Math.sqrt(sum(range(n).map(function(i){\n return x[i][j] * x[i][j];\n })));\n for(i = 0; i < n; i++){\n x[i][j] = x[i][j] / r[j][j];\n }\n for(k = j+1; k < p; k++){\n r[j][k] = sum(range(n).map(function(i){\n return x[i][j] * x[i][k];\n }));\n for(i = 0; i < n; i++){\n x[i][k] = x[i][k] - x[i][j]*r[j][k];\n }\n }\n }\n return [x, r];\n }\n\n return qr2;\n }()),\n\n lstsq: (function() {\n // solve least squard problem for Ax=b as QR decomposition way if b is\n // [[b1],[b2],[b3]] form will return [[x1],[x2],[x3]] array form solution\n // else b is [b1,b2,b3] form will return [x1,x2,x3] array form solution\n function R_I(A) {\n A = jStat.copy(A);\n var size = A.length;\n var I = jStat.identity(size);\n jStat.arange(size - 1, -1, -1).forEach(function(i) {\n jStat.sliceAssign(\n I, { row: i }, jStat.divide(jStat.slice(I, { row: i }), A[i][i]));\n jStat.sliceAssign(\n A, { row: i }, jStat.divide(jStat.slice(A, { row: i }), A[i][i]));\n jStat.arange(i).forEach(function(j) {\n var c = jStat.multiply(A[j][i], -1);\n var Aj = jStat.slice(A, { row: j });\n var cAi = jStat.multiply(jStat.slice(A, { row: i }), c);\n jStat.sliceAssign(A, { row: j }, jStat.add(Aj, cAi));\n var Ij = jStat.slice(I, { row: j });\n var cIi = jStat.multiply(jStat.slice(I, { row: i }), c);\n jStat.sliceAssign(I, { row: j }, jStat.add(Ij, cIi));\n })\n });\n return I;\n }\n\n function qr_solve(A, b){\n var array_mode = false;\n if (b[0].length === undefined) {\n // [c1,c2,c3] mode\n b = b.map(function(x){ return [x] });\n array_mode = true;\n }\n var QR = jStat.QR(A);\n var Q = QR[0];\n var R = QR[1];\n var attrs = A[0].length;\n var Q1 = jStat.slice(Q,{col:{end:attrs}});\n var R1 = jStat.slice(R,{row:{end:attrs}});\n var RI = R_I(R1);\n var Q2 = jStat.transpose(Q1);\n\n if(Q2[0].length === undefined){\n Q2 = [Q2]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n var x = jStat.multiply(jStat.multiply(RI, Q2), b);\n\n if(x.length === undefined){\n x = [[x]]; // The confusing jStat.multifly implementation threat nature process again.\n }\n\n\n if (array_mode)\n return x.map(function(i){ return i[0] });\n return x;\n }\n\n return qr_solve;\n }()),\n\n jacobi: function jacobi(a) {\n var condition = 1;\n var n = a.length;\n var e = jStat.identity(n, n);\n var ev = [];\n var b, i, j, p, q, maxim, theta, s;\n // condition === 1 only if tolerance is not reached\n while (condition === 1) {\n maxim = a[0][1];\n p = 0;\n q = 1;\n for (i = 0; i < n; i++) {\n for (j = 0; j < n; j++) {\n if (i != j) {\n if (maxim < Math.abs(a[i][j])) {\n maxim = Math.abs(a[i][j]);\n p = i;\n q = j;\n }\n }\n }\n }\n if (a[p][p] === a[q][q])\n theta = (a[p][q] > 0) ? Math.PI / 4 : -Math.PI / 4;\n else\n theta = Math.atan(2 * a[p][q] / (a[p][p] - a[q][q])) / 2;\n s = jStat.identity(n, n);\n s[p][p] = Math.cos(theta);\n s[p][q] = -Math.sin(theta);\n s[q][p] = Math.sin(theta);\n s[q][q] = Math.cos(theta);\n // eigen vector matrix\n e = jStat.multiply(e, s);\n b = jStat.multiply(jStat.multiply(jStat.inv(s), a), s);\n a = b;\n condition = 0;\n for (i = 1; i < n; i++) {\n for (j = 1; j < n; j++) {\n if (i != j && Math.abs(a[i][j]) > 0.001) {\n condition = 1;\n }\n }\n }\n }\n for (i = 0; i < n; i++) ev.push(a[i][i]);\n //returns both the eigenvalue and eigenmatrix\n return [e, ev];\n },\n\n rungekutta: function rungekutta(f, h, p, t_j, u_j, order) {\n var k1, k2, u_j1, k3, k4;\n if (order === 2) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h, u_j + k1);\n u_j1 = u_j + (k1 + k2) / 2;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n if (order === 4) {\n while (t_j <= p) {\n k1 = h * f(t_j, u_j);\n k2 = h * f(t_j + h / 2, u_j + k1 / 2);\n k3 = h * f(t_j + h / 2, u_j + k2 / 2);\n k4 = h * f(t_j +h, u_j + k3);\n u_j1 = u_j + (k1 + 2 * k2 + 2 * k3 + k4) / 6;\n u_j = u_j1;\n t_j = t_j + h;\n }\n }\n return u_j;\n },\n\n romberg: function romberg(f, a, b, order) {\n var i = 0;\n var h = (b - a) / 2;\n var x = [];\n var h1 = [];\n var g = [];\n var m, a1, j, k, I;\n while (i < order / 2) {\n I = f(a);\n for (j = a, k = 0; j <= b; j = j + h, k++) x[k] = j;\n m = x.length;\n for (j = 1; j < m - 1; j++) {\n I += (((j % 2) !== 0) ? 4 : 2) * f(x[j]);\n }\n I = (h / 3) * (I + f(b));\n g[i] = I;\n h /= 2;\n i++;\n }\n a1 = g.length;\n m = 1;\n while (a1 !== 1) {\n for (j = 0; j < a1 - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a1 = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n richardson: function richardson(X, f, x, h) {\n function pos(X, x) {\n var i = 0;\n var n = X.length;\n var p;\n for (; i < n; i++)\n if (X[i] === x) p = i;\n return p;\n }\n var h_min = Math.abs(x - X[pos(X, x) + 1]);\n var i = 0;\n var g = [];\n var h1 = [];\n var y1, y2, m, a, j;\n while (h >= h_min) {\n y1 = pos(X, x + h);\n y2 = pos(X, x);\n g[i] = (f[y1] - 2 * f[y2] + f[2 * y2 - y1]) / (h * h);\n h /= 2;\n i++;\n }\n a = g.length;\n m = 1;\n while (a != 1) {\n for (j = 0; j < a - 1; j++)\n h1[j] = ((Math.pow(4, m)) * g[j + 1] - g[j]) / (Math.pow(4, m) - 1);\n a = h1.length;\n g = h1;\n h1 = [];\n m++;\n }\n return g;\n },\n\n simpson: function simpson(f, a, b, n) {\n var h = (b - a) / n;\n var I = f(a);\n var x = [];\n var j = a;\n var k = 0;\n var i = 1;\n var m;\n for (; j <= b; j = j + h, k++)\n x[k] = j;\n m = x.length;\n for (; i < m - 1; i++) {\n I += ((i % 2 !== 0) ? 4 : 2) * f(x[i]);\n }\n return (h / 3) * (I + f(b));\n },\n\n hermite: function hermite(X, F, dF, value) {\n var n = X.length;\n var p = 0;\n var i = 0;\n var l = [];\n var dl = [];\n var A = [];\n var B = [];\n var j;\n for (; i < n; i++) {\n l[i] = 1;\n for (j = 0; j < n; j++) {\n if (i != j) l[i] *= (value - X[j]) / (X[i] - X[j]);\n }\n dl[i] = 0;\n for (j = 0; j < n; j++) {\n if (i != j) dl[i] += 1 / (X [i] - X[j]);\n }\n A[i] = (1 - 2 * (value - X[i]) * dl[i]) * (l[i] * l[i]);\n B[i] = (value - X[i]) * (l[i] * l[i]);\n p += (A[i] * F[i] + B[i] * dF[i]);\n }\n return p;\n },\n\n lagrange: function lagrange(X, F, value) {\n var p = 0;\n var i = 0;\n var j, l;\n var n = X.length;\n for (; i < n; i++) {\n l = F[i];\n for (j = 0; j < n; j++) {\n // calculating the lagrange polynomial L_i\n if (i != j) l *= (value - X[j]) / (X[i] - X[j]);\n }\n // adding the lagrange polynomials found above\n p += l;\n }\n return p;\n },\n\n cubic_spline: function cubic_spline(X, F, value) {\n var n = X.length;\n var i = 0, j;\n var A = [];\n var B = [];\n var alpha = [];\n var c = [];\n var h = [];\n var b = [];\n var d = [];\n for (; i < n - 1; i++)\n h[i] = X[i + 1] - X[i];\n alpha[0] = 0;\n for (i = 1; i < n - 1; i++) {\n alpha[i] = (3 / h[i]) * (F[i + 1] - F[i]) -\n (3 / h[i-1]) * (F[i] - F[i-1]);\n }\n for (i = 1; i < n - 1; i++) {\n A[i] = [];\n B[i] = [];\n A[i][i-1] = h[i-1];\n A[i][i] = 2 * (h[i - 1] + h[i]);\n A[i][i+1] = h[i];\n B[i][0] = alpha[i];\n }\n c = jStat.multiply(jStat.inv(A), B);\n for (j = 0; j < n - 1; j++) {\n b[j] = (F[j + 1] - F[j]) / h[j] - h[j] * (c[j + 1][0] + 2 * c[j][0]) / 3;\n d[j] = (c[j + 1][0] - c[j][0]) / (3 * h[j]);\n }\n for (j = 0; j < n; j++) {\n if (X[j] > value) break;\n }\n j -= 1;\n return F[j] + (value - X[j]) * b[j] + jStat.sq(value-X[j]) *\n c[j] + (value - X[j]) * jStat.sq(value - X[j]) * d[j];\n },\n\n gauss_quadrature: function gauss_quadrature() {\n throw new Error('gauss_quadrature not yet implemented');\n },\n\n PCA: function PCA(X) {\n var m = X.length;\n var n = X[0].length;\n var i = 0;\n var j, temp1;\n var u = [];\n var D = [];\n var result = [];\n var temp2 = [];\n var Y = [];\n var Bt = [];\n var B = [];\n var C = [];\n var V = [];\n var Vt = [];\n for (i = 0; i < m; i++) {\n u[i] = jStat.sum(X[i]) / n;\n }\n for (i = 0; i < n; i++) {\n B[i] = [];\n for(j = 0; j < m; j++) {\n B[i][j] = X[j][i] - u[j];\n }\n }\n B = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n C[i] = [];\n for (j = 0; j < m; j++) {\n C[i][j] = (jStat.dot([B[i]], [B[j]])) / (n - 1);\n }\n }\n result = jStat.jacobi(C);\n V = result[0];\n D = result[1];\n Vt = jStat.transpose(V);\n for (i = 0; i < D.length; i++) {\n for (j = i; j < D.length; j++) {\n if(D[i] < D[j]) {\n temp1 = D[i];\n D[i] = D[j];\n D[j] = temp1;\n temp2 = Vt[i];\n Vt[i] = Vt[j];\n Vt[j] = temp2;\n }\n }\n }\n Bt = jStat.transpose(B);\n for (i = 0; i < m; i++) {\n Y[i] = [];\n for (j = 0; j < Bt.length; j++) {\n Y[i][j] = jStat.dot([Vt[i]], [Bt[j]]);\n }\n }\n return [X, D, Vt, Y];\n }\n});\n\n// extend jStat.fn with methods that require one argument\n(function(funcs) {\n for (var i = 0; i < funcs.length; i++) (function(passfunc) {\n jStat.fn[passfunc] = function(arg, func) {\n var tmpthis = this;\n // check for callback\n if (func) {\n setTimeout(function() {\n func.call(tmpthis, jStat.fn[passfunc].call(tmpthis, arg));\n }, 15);\n return this;\n }\n if (typeof jStat[passfunc](this, arg) === 'number')\n return jStat[passfunc](this, arg);\n else\n return jStat(jStat[passfunc](this, arg));\n };\n }(funcs[i]));\n}('add divide multiply subtract dot pow exp log abs norm angle'.split(' ')));\n\n}(jStat, Math));\n(function(jStat, Math) {\n\nvar slice = [].slice;\nvar isNumber = jStat.utils.isNumber;\nvar isArray = jStat.utils.isArray;\n\n// flag==true denotes use of sample standard deviation\n// Z Statistics\njStat.extend({\n // 2 different parameter lists:\n // (value, mean, sd)\n // (value, array, flag)\n zscore: function zscore() {\n var args = slice.call(arguments);\n if (isNumber(args[1])) {\n return (args[0] - args[1]) / args[2];\n }\n return (args[0] - jStat.mean(args[1])) / jStat.stdev(args[1], args[2]);\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, sides)\n // (zscore, sides)\n // (value, array, sides, flag)\n ztest: function ztest() {\n var args = slice.call(arguments);\n var z;\n if (isArray(args[1])) {\n // (value, array, sides, flag)\n z = jStat.zscore(args[0],args[1],args[3]);\n return (args[2] === 1) ?\n (jStat.normal.cdf(-Math.abs(z), 0, 1)) :\n (jStat.normal.cdf(-Math.abs(z), 0, 1)*2);\n } else {\n if (args.length > 2) {\n // (value, mean, sd, sides)\n z = jStat.zscore(args[0],args[1],args[2]);\n return (args[3] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)* 2);\n } else {\n // (zscore, sides)\n z = args[0];\n return (args[1] === 1) ?\n (jStat.normal.cdf(-Math.abs(z),0,1)) :\n (jStat.normal.cdf(-Math.abs(z),0,1)*2);\n }\n }\n }\n});\n\njStat.extend(jStat.fn, {\n zscore: function zscore(value, flag) {\n return (value - this.mean()) / this.stdev(flag);\n },\n\n ztest: function ztest(value, sides, flag) {\n var zscore = Math.abs(this.zscore(value, flag));\n return (sides === 1) ?\n (jStat.normal.cdf(-zscore, 0, 1)) :\n (jStat.normal.cdf(-zscore, 0, 1) * 2);\n }\n});\n\n// T Statistics\njStat.extend({\n // 2 parameter lists\n // (value, mean, sd, n)\n // (value, array)\n tscore: function tscore() {\n var args = slice.call(arguments);\n return (args.length === 4) ?\n ((args[0] - args[1]) / (args[2] / Math.sqrt(args[3]))) :\n ((args[0] - jStat.mean(args[1])) /\n (jStat.stdev(args[1], true) / Math.sqrt(args[1].length)));\n },\n\n // 3 different paramter lists:\n // (value, mean, sd, n, sides)\n // (tscore, n, sides)\n // (value, array, sides)\n ttest: function ttest() {\n var args = slice.call(arguments);\n var tscore;\n if (args.length === 5) {\n tscore = Math.abs(jStat.tscore(args[0], args[1], args[2], args[3]));\n return (args[4] === 1) ?\n (jStat.studentt.cdf(-tscore, args[3]-1)) :\n (jStat.studentt.cdf(-tscore, args[3]-1)*2);\n }\n if (isNumber(args[1])) {\n tscore = Math.abs(args[0])\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1]-1)) :\n (jStat.studentt.cdf(-tscore, args[1]-1) * 2);\n }\n tscore = Math.abs(jStat.tscore(args[0], args[1]))\n return (args[2] == 1) ?\n (jStat.studentt.cdf(-tscore, args[1].length-1)) :\n (jStat.studentt.cdf(-tscore, args[1].length-1) * 2);\n }\n});\n\njStat.extend(jStat.fn, {\n tscore: function tscore(value) {\n return (value - this.mean()) / (this.stdev(true) / Math.sqrt(this.cols()));\n },\n\n ttest: function ttest(value, sides) {\n return (sides === 1) ?\n (1 - jStat.studentt.cdf(Math.abs(this.tscore(value)), this.cols()-1)) :\n (jStat.studentt.cdf(-Math.abs(this.tscore(value)), this.cols()-1)*2);\n }\n});\n\n// F Statistics\njStat.extend({\n // Paramter list is as follows:\n // (array1, array2, array3, ...)\n // or it is an array of arrays\n // array of arrays conversion\n anovafscore: function anovafscore() {\n var args = slice.call(arguments),\n expVar, sample, sampMean, sampSampMean, tmpargs, unexpVar, i, j;\n if (args.length === 1) {\n tmpargs = new Array(args[0].length);\n for (i = 0; i < args[0].length; i++) {\n tmpargs[i] = args[0][i];\n }\n args = tmpargs;\n }\n // Builds sample array\n sample = new Array();\n for (i = 0; i < args.length; i++) {\n sample = sample.concat(args[i]);\n }\n sampMean = jStat.mean(sample);\n // Computes the explained variance\n expVar = 0;\n for (i = 0; i < args.length; i++) {\n expVar = expVar + args[i].length * Math.pow(jStat.mean(args[i]) - sampMean, 2);\n }\n expVar /= (args.length - 1);\n // Computes unexplained variance\n unexpVar = 0;\n for (i = 0; i < args.length; i++) {\n sampSampMean = jStat.mean(args[i]);\n for (j = 0; j < args[i].length; j++) {\n unexpVar += Math.pow(args[i][j] - sampSampMean, 2);\n }\n }\n unexpVar /= (sample.length - args.length);\n return expVar / unexpVar;\n },\n\n // 2 different paramter setups\n // (array1, array2, array3, ...)\n // (anovafscore, df1, df2)\n anovaftest: function anovaftest() {\n var args = slice.call(arguments),\n df1, df2, n, i;\n if (isNumber(args[0])) {\n return 1 - jStat.centralF.cdf(args[0], args[1], args[2]);\n }\n var anovafscore = jStat.anovafscore(args);\n df1 = args.length - 1;\n n = 0;\n for (i = 0; i < args.length; i++) {\n n = n + args[i].length;\n }\n df2 = n - df1 - 1;\n return 1 - jStat.centralF.cdf(anovafscore, df1, df2);\n },\n\n ftest: function ftest(fscore, df1, df2) {\n return 1 - jStat.centralF.cdf(fscore, df1, df2);\n }\n});\n\njStat.extend(jStat.fn, {\n anovafscore: function anovafscore() {\n return jStat.anovafscore(this.toArray());\n },\n\n anovaftes: function anovaftes() {\n var n = 0;\n var i;\n for (i = 0; i < this.length; i++) {\n n = n + this[i].length;\n }\n return jStat.ftest(this.anovafscore(), this.length - 1, n - this.length);\n }\n});\n\n// Tukey's range test\njStat.extend({\n // 2 parameter lists\n // (mean1, mean2, n1, n2, sd)\n // (array1, array2, sd)\n qscore: function qscore() {\n var args = slice.call(arguments);\n var mean1, mean2, n1, n2, sd;\n if (isNumber(args[0])) {\n mean1 = args[0];\n mean2 = args[1];\n n1 = args[2];\n n2 = args[3];\n sd = args[4];\n } else {\n mean1 = jStat.mean(args[0]);\n mean2 = jStat.mean(args[1]);\n n1 = args[0].length;\n n2 = args[1].length;\n sd = args[2];\n }\n return Math.abs(mean1 - mean2) / (sd * Math.sqrt((1 / n1 + 1 / n2) / 2));\n },\n\n // 3 different parameter lists:\n // (qscore, n, k)\n // (mean1, mean2, n1, n2, sd, n, k)\n // (array1, array2, sd, n, k)\n qtest: function qtest() {\n var args = slice.call(arguments);\n\n var qscore;\n if (args.length === 3) {\n qscore = args[0];\n args = args.slice(1);\n } else if (args.length === 7) {\n qscore = jStat.qscore(args[0], args[1], args[2], args[3], args[4]);\n args = args.slice(5);\n } else {\n qscore = jStat.qscore(args[0], args[1], args[2]);\n args = args.slice(3);\n }\n\n var n = args[0];\n var k = args[1];\n\n return 1 - jStat.tukey.cdf(qscore, k, n - k);\n },\n\n tukeyhsd: function tukeyhsd(arrays) {\n var sd = jStat.pooledstdev(arrays);\n var means = arrays.map(function (arr) {return jStat.mean(arr);});\n var n = arrays.reduce(function (n, arr) {return n + arr.length;}, 0);\n\n var results = [];\n for (var i = 0; i < arrays.length; ++i) {\n for (var j = i + 1; j < arrays.length; ++j) {\n var p = jStat.qtest(means[i], means[j], arrays[i].length, arrays[j].length, sd, n, arrays.length);\n results.push([[i, j], p]);\n }\n }\n\n return results;\n }\n});\n\n// Error Bounds\njStat.extend({\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n normalci: function normalci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.normal.inv(args[1] / 2, 0, 1) *\n jStat.stdev(args[2]) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n // 2 different parameter setups\n // (value, alpha, sd, n)\n // (value, alpha, array)\n tci: function tci() {\n var args = slice.call(arguments),\n ans = new Array(2),\n change;\n if (args.length === 4) {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[3] - 1) *\n args[2] / Math.sqrt(args[3]));\n } else {\n change = Math.abs(jStat.studentt.inv(args[1] / 2, args[2].length - 1) *\n jStat.stdev(args[2], true) / Math.sqrt(args[2].length));\n }\n ans[0] = args[0] - change;\n ans[1] = args[0] + change;\n return ans;\n },\n\n significant: function significant(pvalue, alpha) {\n return pvalue < alpha;\n }\n});\n\njStat.extend(jStat.fn, {\n normalci: function normalci(value, alpha) {\n return jStat.normalci(value, alpha, this.toArray());\n },\n\n tci: function tci(value, alpha) {\n return jStat.tci(value, alpha, this.toArray());\n }\n});\n\n// internal method for calculating the z-score for a difference of proportions test\nfunction differenceOfProportions(p1, n1, p2, n2) {\n if (p1 > 1 || p2 > 1 || p1 <= 0 || p2 <= 0) {\n throw new Error(\"Proportions should be greater than 0 and less than 1\")\n }\n var pooled = (p1 * n1 + p2 * n2) / (n1 + n2);\n var se = Math.sqrt(pooled * (1 - pooled) * ((1/n1) + (1/n2)));\n return (p1 - p2) / se;\n}\n\n// Difference of Proportions\njStat.extend(jStat.fn, {\n oneSidedDifferenceOfProportions: function oneSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 1);\n },\n\n twoSidedDifferenceOfProportions: function twoSidedDifferenceOfProportions(p1, n1, p2, n2) {\n var z = differenceOfProportions(p1, n1, p2, n2);\n return jStat.ztest(z, 2);\n }\n});\n\n}(jStat, Math));\njStat.models = (function(){\n function sub_regress(exog) {\n var var_count = exog[0].length;\n var modelList = jStat.arange(var_count).map(function(endog_index) {\n var exog_index =\n jStat.arange(var_count).filter(function(i){return i!==endog_index});\n return ols(jStat.col(exog, endog_index).map(function(x){ return x[0] }),\n jStat.col(exog, exog_index))\n });\n return modelList;\n }\n\n // do OLS model regress\n // exog have include const columns ,it will not generate it .In fact, exog is\n // \"design matrix\" look at\n //https://en.wikipedia.org/wiki/Design_matrix\n function ols(endog, exog) {\n var nobs = endog.length;\n var df_model = exog[0].length - 1;\n var df_resid = nobs-df_model - 1;\n var coef = jStat.lstsq(exog, endog);\n var predict =\n jStat.multiply(exog, coef.map(function(x) { return [x] }))\n .map(function(p) { return p[0] });\n var resid = jStat.subtract(endog, predict);\n var ybar = jStat.mean(endog);\n // constant cause problem\n // var SST = jStat.sum(endog.map(function(y) {\n // return Math.pow(y-ybar,2);\n // }));\n var SSE = jStat.sum(predict.map(function(f) {\n return Math.pow(f - ybar, 2);\n }));\n var SSR = jStat.sum(endog.map(function(y, i) {\n return Math.pow(y - predict[i], 2);\n }));\n var SST = SSE + SSR;\n var R2 = (SSE / SST);\n return {\n exog:exog,\n endog:endog,\n nobs:nobs,\n df_model:df_model,\n df_resid:df_resid,\n coef:coef,\n predict:predict,\n resid:resid,\n ybar:ybar,\n SST:SST,\n SSE:SSE,\n SSR:SSR,\n R2:R2\n };\n }\n\n // H0: b_I=0\n // H1: b_I!=0\n function t_test(model) {\n var subModelList = sub_regress(model.exog);\n //var sigmaHat=jStat.stdev(model.resid);\n var sigmaHat = Math.sqrt(model.SSR / (model.df_resid));\n var seBetaHat = subModelList.map(function(mod) {\n var SST = mod.SST;\n var R2 = mod.R2;\n return sigmaHat / Math.sqrt(SST * (1 - R2));\n });\n var tStatistic = model.coef.map(function(coef, i) {\n return (coef - 0) / seBetaHat[i];\n });\n var pValue = tStatistic.map(function(t) {\n var leftppf = jStat.studentt.cdf(t, model.df_resid);\n return (leftppf > 0.5 ? 1 - leftppf : leftppf) * 2;\n });\n var c = jStat.studentt.inv(0.975, model.df_resid);\n var interval95 = model.coef.map(function(coef, i) {\n var d = c * seBetaHat[i];\n return [coef - d, coef + d];\n })\n return {\n se: seBetaHat,\n t: tStatistic,\n p: pValue,\n sigmaHat: sigmaHat,\n interval95: interval95\n };\n }\n\n function F_test(model) {\n var F_statistic =\n (model.R2 / model.df_model) / ((1 - model.R2) / model.df_resid);\n var fcdf = function(x, n1, n2) {\n return jStat.beta.cdf(x / (n2 / n1 + x), n1 / 2, n2 / 2)\n }\n var pvalue = 1 - fcdf(F_statistic, model.df_model, model.df_resid);\n return { F_statistic: F_statistic, pvalue: pvalue };\n }\n\n function ols_wrap(endog, exog) {\n var model = ols(endog,exog);\n var ttest = t_test(model);\n var ftest = F_test(model);\n // Provide the Wherry / Ezekiel / McNemar / Cohen Adjusted R^2\n // Which matches the 'adjusted R^2' provided by R's lm package\n var adjust_R2 =\n 1 - (1 - model.R2) * ((model.nobs - 1) / (model.df_resid));\n model.t = ttest;\n model.f = ftest;\n model.adjust_R2 = adjust_R2;\n return model;\n }\n\n return { ols: ols_wrap };\n})();\n//To regress, simply build X matrix\n//(append column of 1's) using\n//buildxmatrix and build the Y\n//matrix using buildymatrix\n//(simply the transpose)\n//and run regress.\n\n\n\n//Regressions\n\njStat.extend({\n buildxmatrix: function buildxmatrix(){\n //Parameters will be passed in as such\n //(array1,array2,array3,...)\n //as (x1,x2,x3,...)\n //needs to be (1,x1,x2,x3,...)\n var matrixRows = new Array(arguments.length);\n for(var i=0;i1){\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[k][j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n result = [];\n for (i = 0; i < A.rows(); i++) {\n result[i] = [];\n for (j = 0; j < B.cols(); j++) {\n sum = 0;\n for (k = 0; k < A.cols(); k++) {\n sum += A.toArray()[i][k] * B.toArray()[j];\n }\n result[i][j] = sum;\n }\n }\n return jStat(result);\n }\n },\n\n //regress and regresst to be fixed\n\n regress: function regress(jMatX,jMatY){\n //print(\"regressin!\");\n //print(jMatX.toArray());\n var innerinv = jStat.xtranspxinv(jMatX);\n //print(innerinv);\n var xtransp = jMatX.transpose();\n var next = jStat.matrixmult(jStat(innerinv),xtransp);\n return jStat.matrixmult(next,jMatY);\n\n },\n\n regresst: function regresst(jMatX,jMatY,sides){\n var beta = jStat.regress(jMatX,jMatY);\n\n var compile = {};\n compile.anova = {};\n var jMatYBar = jStat.jMatYBar(jMatX, beta);\n compile.yBar = jMatYBar;\n var yAverage = jMatY.mean();\n compile.anova.residuals = jStat.residuals(jMatY, jMatYBar);\n\n compile.anova.ssr = jStat.ssr(jMatYBar, yAverage);\n compile.anova.msr = compile.anova.ssr / (jMatX[0].length - 1);\n\n compile.anova.sse = jStat.sse(jMatY, jMatYBar);\n compile.anova.mse =\n compile.anova.sse / (jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.sst = jStat.sst(jMatY, yAverage);\n compile.anova.mst = compile.anova.sst / (jMatY.length - 1);\n\n compile.anova.r2 = 1 - (compile.anova.sse / compile.anova.sst);\n if (compile.anova.r2 < 0) compile.anova.r2 = 0;\n\n compile.anova.fratio = compile.anova.msr / compile.anova.mse;\n compile.anova.pvalue =\n jStat.anovaftest(compile.anova.fratio,\n jMatX[0].length - 1,\n jMatY.length - (jMatX[0].length - 1) - 1);\n\n compile.anova.rmse = Math.sqrt(compile.anova.mse);\n\n compile.anova.r2adj = 1 - (compile.anova.mse / compile.anova.mst);\n if (compile.anova.r2adj < 0) compile.anova.r2adj = 0;\n\n compile.stats = new Array(jMatX[0].length);\n var covar = jStat.xtranspxinv(jMatX);\n var sds, ts, ps;\n\n for(var i=0; i {\r\n x = H.accept(x, Types.NUMBER_NO_BOOLEAN);\r\n n = H.accept(n, Types.NUMBER_NO_BOOLEAN);\r\n // if n is not an integer, it is truncated.\r\n n = Math.trunc(n);\r\n if (n < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n return bessel.besseli(x, n);\r\n },\r\n\r\n BESSELJ: (x, n) => {\r\n x = H.accept(x, Types.NUMBER_NO_BOOLEAN);\r\n n = H.accept(n, Types.NUMBER_NO_BOOLEAN);\r\n // if n is not an integer, it is truncated.\r\n n = Math.trunc(n);\r\n if (n < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n return bessel.besselj(x, n);\r\n },\r\n\r\n BESSELK: (x, n) => {\r\n x = H.accept(x, Types.NUMBER_NO_BOOLEAN);\r\n n = H.accept(n, Types.NUMBER_NO_BOOLEAN);\r\n // if n is not an integer, it is truncated.\r\n n = Math.trunc(n);\r\n if (n < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return bessel.besselk(x, n);\r\n },\r\n\r\n BESSELY: (x, n) => {\r\n x = H.accept(x, Types.NUMBER_NO_BOOLEAN);\r\n n = H.accept(n, Types.NUMBER_NO_BOOLEAN);\r\n // if n is not an integer, it is truncated.\r\n n = Math.trunc(n);\r\n if (n < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return bessel.bessely(x, n);\r\n },\r\n\r\n BIN2DEC: (number) => {\r\n number = H.accept(number, Types.NUMBER_NO_BOOLEAN);\r\n let numberStr = number.toString();\r\n\r\n if (numberStr.length > 10) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n if (numberStr.length === 10 && numberStr.substring(0, 1) === '1') {\r\n return parseInt(numberStr.substring(1), 2) + MIN_BIN;\r\n } else {\r\n return parseInt(numberStr, 2);\r\n }\r\n },\r\n\r\n BIN2HEX: (number, places) => {\r\n number = H.accept(number, Types.NUMBER_NO_BOOLEAN);\r\n places = H.accept(places, Types.NUMBER_NO_BOOLEAN, null);\r\n\r\n const numberStr = number.toString();\r\n if (numberStr.length > 10) {\r\n throw FormulaError.NUM;\r\n }\r\n if (numberStr.length === 10 && numberStr.substring(0, 1) === '1') {\r\n return (parseInt(numberStr.substring(1), 2) + 1099511627264).toString(16).toUpperCase();\r\n }\r\n // convert BIN to HEX\r\n const result = parseInt(number, 2).toString(16);\r\n\r\n if (places == null) {\r\n return result.toUpperCase();\r\n } else {\r\n if (places < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // truncate places in case it is not an integer\r\n places = Math.trunc(places);\r\n if (places >= result.length) {\r\n return (TextFunctions.REPT('0', places - result.length) + result).toUpperCase();\r\n } else {\r\n throw FormulaError.NUM;\r\n }\r\n }\r\n },\r\n\r\n BIN2OCT: (number, places) => {\r\n number = H.accept(number, Types.NUMBER_NO_BOOLEAN);\r\n places = H.accept(places, Types.NUMBER, null);\r\n\r\n let numberStr = number.toString();\r\n if (numberStr.length > 10) {\r\n throw FormulaError.NUM;\r\n }\r\n if (numberStr.length === 10 && numberStr.substr(0, 1) === \"1\") {\r\n return (parseInt(numberStr.substr(1), 2) + 1073741312).toString(8);\r\n }\r\n\r\n let result = parseInt(number, 2).toString(8);\r\n if (places == null) {\r\n return result.toUpperCase();\r\n } else {\r\n if (places < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // truncate places in case it is not an integer\r\n places = Math.trunc(places);\r\n if (places >= result.length) {\r\n return (TextFunctions.REPT('0', places - result.length) + result);\r\n } else {\r\n throw FormulaError.NUM;\r\n }\r\n }\r\n },\r\n\r\n BITAND: (number1, number2) => {\r\n number1 = H.accept(number1, Types.NUMBER);\r\n number2 = H.accept(number2, Types.NUMBER);\r\n if (number1 < 0 || number2 < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // check if they are non-integer, if yes, return error\r\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\r\n throw FormulaError.NUM;\r\n }\r\n if (number1 > 281474976710655 || number2 > 281474976710655) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return number1 & number2;\r\n },\r\n\r\n BITLSHIFT: (number, shiftAmount) => {\r\n number = H.accept(number, Types.NUMBER);\r\n shiftAmount = H.accept(shiftAmount, Types.NUMBER);\r\n shiftAmount = Math.trunc(shiftAmount);\r\n if (Math.abs(shiftAmount) > 53) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n if (number < 0 || Math.floor(number) !== number || number > 281474976710655) {\r\n throw FormulaError.NUM;\r\n }\r\n const result = (shiftAmount >= 0) ? number * 2 ** shiftAmount : Math.trunc(number / 2 ** -shiftAmount);\r\n if (result > 281474976710655)\r\n throw FormulaError.NUM;\r\n else\r\n return result;\r\n },\r\n\r\n BITOR: (number1, number2) => {\r\n number1 = H.accept(number1, Types.NUMBER);\r\n number2 = H.accept(number2, Types.NUMBER);\r\n if (number1 < 0 || number2 < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // check if they are non-integer, if yes, return error\r\n if (Math.floor(number1) !== number1 || Math.floor(number2) !== number2) {\r\n throw FormulaError.NUM;\r\n }\r\n if (number1 > 281474976710655 || number2 > 281474976710655) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return number1 | number2;\r\n },\r\n\r\n BITRSHIFT: (number, shiftAmount) => {\r\n number = H.accept(number, Types.NUMBER);\r\n shiftAmount = H.accept(shiftAmount, Types.NUMBER);\r\n return EngineeringFunctions.BITLSHIFT(number, -shiftAmount);\r\n },\r\n\r\n BITXOR: (number1, number2) => {\r\n number1 = H.accept(number1, Types.NUMBER);\r\n number2 = H.accept(number2, Types.NUMBER);\r\n if (number1 < 0 || number1 > 281474976710655 || Math.floor(number1) !== number1) {\r\n throw FormulaError.NUM;\r\n }\r\n if (number2 < 0 || number2 > 281474976710655 || Math.floor(number2) !== number2) {\r\n throw FormulaError.NUM;\r\n }\r\n // // to check if the number is a non-integer\r\n // if (Math.abs(number1) !== number1 || Math.abs(number2) !== number2) {\r\n // throw FormulaError.NUM;\r\n // }\r\n\r\n return number1 ^ number2;\r\n },\r\n\r\n COMPLEX: (realNum, iNum, suffix) => {\r\n realNum = H.accept(realNum, Types.NUMBER_NO_BOOLEAN);\r\n iNum = H.accept(iNum, Types.NUMBER_NO_BOOLEAN);\r\n suffix = H.accept(suffix, Types.STRING, \"i\");\r\n if (suffix !== \"i\" && suffix !== \"j\") {\r\n throw FormulaError.VALUE;\r\n }\r\n if (realNum === 0 && iNum === 0) {\r\n return 0;\r\n } else if (realNum === 0) {\r\n if (iNum === 1) {\r\n return suffix;\r\n } else if (iNum === -1) {\r\n return \"-\" + suffix;\r\n } else {\r\n return iNum.toString() + suffix;\r\n }\r\n } else if (iNum === 0) {\r\n return realNum.toString()\r\n } else {\r\n let sign = (iNum > 0) ? \"+\" : \"\";\r\n if (iNum === 1) {\r\n return realNum.toString() + sign + suffix;\r\n } else if (iNum === -1) {\r\n return realNum.toString() + sign + \"-\" + suffix;\r\n } else {\r\n return realNum.toString() + sign + iNum.toString() + suffix;\r\n }\r\n }\r\n },\r\n\r\n DEC2BIN: (number, places) => {\r\n number = H.accept(number, Types.NUMBER);\r\n places = H.accept(places, Types.NUMBER, null);\r\n if (number < MIN_BIN || number > MAX_BIN) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // if the number is negative, valid place values are ignored and it returns a 10-character binary number.\r\n if (number < 0) {\r\n return \"1\" + TextFunctions.REPT(\"0\", 9 - (512 + number).toString(2).length) + (512 + number).toString(2);\r\n }\r\n\r\n let result = parseInt(number, 10).toString(2);\r\n if (places == null) {\r\n return result;\r\n } else {\r\n // if places is not an integer, it is truncated\r\n places = Math.trunc(places);\r\n if (places <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n if (places < result.length)\r\n throw FormulaError.NUM;\r\n return TextFunctions.REPT(\"0\", places - result.length) + result;\r\n }\r\n },\r\n\r\n DEC2HEX: (number, places) => {\r\n number = H.accept(number, Types.NUMBER);\r\n places = H.accept(places, Types.NUMBER, null);\r\n if (number < -549755813888 || number > 549755813888) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // if the number is negative, valid place values are ignored and it returns a 10-character binary number.\r\n if (number < 0) {\r\n return (1099511627776 + number).toString(16).toUpperCase();\r\n }\r\n\r\n let result = parseInt(number, 10).toString(16);\r\n\r\n if (places == null) {\r\n return result.toUpperCase();\r\n } else {\r\n // if places is not an integer, it is truncated\r\n places = Math.trunc(places);\r\n if (places <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n if (places < result.length)\r\n throw FormulaError.NUM;\r\n return TextFunctions.REPT(\"0\", places - result.length) + result.toUpperCase();\r\n }\r\n },\r\n\r\n DEC2OCT: (number, places) => {\r\n number = H.accept(number, Types.NUMBER);\r\n places = H.accept(places, Types.NUMBER, null);\r\n if (number < -536870912 || number > 536870912) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // if the number is negative, valid place values are ignored and it returns a 10-character binary number.\r\n if (number < 0) {\r\n return (number + 1073741824).toString(8);\r\n }\r\n\r\n let result = parseInt(number, 10).toString(8);\r\n\r\n if (places == null) {\r\n return result.toUpperCase();\r\n } else {\r\n // if places is not an integer, it is truncated\r\n places = Math.trunc(places);\r\n if (places <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n if (places < result.length)\r\n throw FormulaError.NUM;\r\n return TextFunctions.REPT(\"0\", places - result.length) + result;\r\n }\r\n },\r\n\r\n DELTA: (number1, number2) => {\r\n number1 = H.accept(number1, Types.NUMBER_NO_BOOLEAN);\r\n number2 = H.accept(number2, Types.NUMBER_NO_BOOLEAN, 0);\r\n\r\n return number1 === number2 ? 1 : 0;\r\n },\r\n\r\n ERF: (lowerLimit, upperLimit) => {\r\n lowerLimit = H.accept(lowerLimit, Types.NUMBER_NO_BOOLEAN);\r\n upperLimit = H.accept(upperLimit, Types.NUMBER_NO_BOOLEAN, 0);\r\n return jStat.erf(lowerLimit);\r\n },\r\n\r\n ERFC: (x) => {\r\n x = H.accept(x, Types.NUMBER_NO_BOOLEAN);\r\n return jStat.erfc(x);\r\n },\r\n\r\n GESTEP: (number, step) => {\r\n number = H.accept(number, Types.NUMBER_NO_BOOLEAN);\r\n step = H.accept(step, Types.NUMBER_NO_BOOLEAN, 0);\r\n return number >= step ? 1 : 0;\r\n },\r\n\r\n HEX2BIN: (number, places) => {\r\n number = H.accept(number, Types.STRING);\r\n places = H.accept(places, Types.NUMBER, null);\r\n\r\n if (number.length > 10 || !/^[0-9a-fA-F]*$/.test(number)) {\r\n throw FormulaError.NUM;\r\n }\r\n // to check if the number is negative\r\n let ifNegative = (number.length === 10 && number.substr(0, 1).toLowerCase() === \"f\");\r\n // convert HEX to DEC\r\n let toDecimal = ifNegative ? parseInt(number, 16) - 1099511627776 : parseInt(number, 16);\r\n // if number is lower than -512 or grater than 511, return error\r\n if (toDecimal < MIN_BIN || toDecimal > MAX_BIN) {\r\n throw FormulaError.NUM;\r\n }\r\n // if the number is negative, valid place values are ignored and it returns a 10-character binary number.\r\n if (ifNegative) {\r\n return \"1\" + TextFunctions.REPT('0', 9 - (toDecimal + 512).toString(2).length) + (toDecimal + 512).toString(2)\r\n }\r\n // convert decimal to binary\r\n let toBinary = toDecimal.toString(2);\r\n\r\n if (places == null) {\r\n return toBinary;\r\n } else {\r\n // if places is not an integer, it is truncated\r\n places = Math.trunc(places);\r\n if (places <= 0 || places < toBinary.length) {\r\n throw FormulaError.NUM;\r\n }\r\n return TextFunctions.REPT(\"0\", places - toBinary.length) + toBinary;\r\n }\r\n },\r\n\r\n HEX2DEC: (number) => {\r\n number = H.accept(number, Types.STRING);\r\n if (number.length > 10 || !/^[0-9a-fA-F]*$/.test(number)) {\r\n throw FormulaError.NUM;\r\n }\r\n let result = parseInt(number, 16);\r\n //david: validate\r\n // If the places is larger than 10, or number is larger than, return #NUM!\r\n // If number is not a valid Hex number, returns the #NUM! error value.\r\n\r\n return (result >= 549755813888) ? result - 1099511627776 : result;\r\n },\r\n\r\n HEX2OCT: (number, places) => {\r\n number = H.accept(number, Types.STRING);\r\n if (number.length > 10 || !/^[0-9a-fA-F]*$/.test(number)) {\r\n throw FormulaError.NUM;\r\n }\r\n // convert HEX to DEC\r\n let toDecimal = EngineeringFunctions.HEX2DEC(number);\r\n if (toDecimal > MAX_OCT || toDecimal < MIN_OCT) {\r\n throw FormulaError.NUM;\r\n }\r\n return EngineeringFunctions.DEC2OCT(toDecimal, places);\r\n },\r\n\r\n IMABS: (iNumber) => {\r\n const {real, im} = parseIM(iNumber);\r\n return Math.sqrt(Math.pow(real, 2) + Math.pow(im, 2));\r\n },\r\n\r\n IMAGINARY: (iNumber) => {\r\n return parseIM(iNumber).im;\r\n },\r\n\r\n IMARGUMENT: (iNumber) => {\r\n const {real, im} = parseIM(iNumber);\r\n // x + yi => x cannot be 0, since theta = tan-1(y / x)\r\n if (real === 0 && im === 0) {\r\n throw FormulaError.DIV0;\r\n }\r\n // return PI/2 if x is equal to 0 and y is positive\r\n if (real === 0 && im > 0) {\r\n return Math.PI / 2;\r\n }\r\n // while return -PI/2 if x is equal to 0 and y is negative\r\n if (real === 0 && im < 0) {\r\n return -Math.PI / 2;\r\n }\r\n // return -PI if x is negative and y is equal to 0\r\n if (real < 0 && im === 0) {\r\n return Math.PI\r\n }\r\n // return 0 if x is positive and y is equal to 0\r\n if (real > 0 && im === 0) {\r\n return 0;\r\n }\r\n // return argument of iNumber\r\n if (real > 0) {\r\n return Math.atan(im / real);\r\n } else if (real < 0 && im > 0) {\r\n return Math.atan(im / real) + Math.PI;\r\n } else {\r\n return Math.atan(im / real) - Math.PI;\r\n }\r\n\r\n },\r\n\r\n IMCONJUGATE: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n return (im !== 0) ? EngineeringFunctions.COMPLEX(real, -im, unit) : '' + real;\r\n },\r\n\r\n IMCOS: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n let realInput = Math.cos(real) * (Math.exp(im) + Math.exp(-im)) / 2;\r\n let imaginaryInput = -Math.sin(real) * (Math.exp(im) - Math.exp(-im)) / 2;\r\n\r\n return EngineeringFunctions.COMPLEX(realInput, imaginaryInput, unit);\r\n },\r\n\r\n IMCOSH: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n let realInput = Math.cos(im) * (Math.exp(real) + Math.exp(-real)) / 2;\r\n let imaginaryInput = -Math.sin(im) * (Math.exp(real) - Math.exp(-real)) / 2;\r\n return EngineeringFunctions.COMPLEX(realInput, -imaginaryInput, unit);\r\n },\r\n\r\n IMCOT: (iNumber) => {\r\n iNumber = H.accept(iNumber);\r\n let real = EngineeringFunctions.IMCOS(iNumber);\r\n let imaginary = EngineeringFunctions.IMSIN(iNumber);\r\n return EngineeringFunctions.IMDIV(real, imaginary);\r\n },\r\n\r\n IMCSC: (iNumber) => {\r\n iNumber = H.accept(iNumber);\r\n return EngineeringFunctions.IMDIV('1', EngineeringFunctions.IMSIN(iNumber));\r\n },\r\n\r\n IMCSCH: (iNumber) => {\r\n iNumber = H.accept(iNumber);\r\n return EngineeringFunctions.IMDIV('1', EngineeringFunctions.IMSINH(iNumber));\r\n },\r\n\r\n IMDIV: (iNumber1, iNumber2) => {\r\n const res1 = parseIM(iNumber1);\r\n const a = res1.real, b = res1.im, unit1 = res1.unit;\r\n\r\n const res2 = parseIM(iNumber2);\r\n const c = res2.real, d = res2.im, unit2 = res2.unit;\r\n\r\n if (c === 0 && d === 0 || unit1 !== unit2) {\r\n throw FormulaError.NUM;\r\n }\r\n let unit = unit1;\r\n\r\n let denominator = Math.pow(c, 2) + Math.pow(d, 2);\r\n return EngineeringFunctions.COMPLEX((a * c + b * d) / denominator, (b * c - a * d) / denominator, unit);\r\n },\r\n\r\n IMEXP: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n // return exponential of complex number\r\n let e = Math.exp(real);\r\n return EngineeringFunctions.COMPLEX(e * Math.cos(im), e * Math.sin(im), unit)\r\n },\r\n\r\n IMLN: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n return EngineeringFunctions.COMPLEX(Math.log(Math.sqrt(Math.pow(real, 2) + Math.pow(im, 2))),\r\n Math.atan(im / real), unit);\r\n },\r\n\r\n IMLOG10: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n let realInput = Math.log(Math.sqrt(Math.pow(real, 2) + Math.pow(im, 2))) / Math.log(10);\r\n let imaginaryInput = Math.atan(im / real) / Math.log(10);\r\n return EngineeringFunctions.COMPLEX(realInput, imaginaryInput, unit);\r\n },\r\n\r\n IMLOG2: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n let realInput = Math.log(Math.sqrt(Math.pow(real, 2) + Math.pow(im, 2))) / Math.log(2);\r\n let imaginaryInput = Math.atan(im / real) / Math.log(2);\r\n return EngineeringFunctions.COMPLEX(realInput, imaginaryInput, unit);\r\n },\r\n\r\n IMPOWER: (iNumber, number) => {\r\n let {unit} = parseIM(iNumber);\r\n number = H.accept(number, Types.NUMBER_NO_BOOLEAN);\r\n\r\n // calculate power of modules\r\n let p = Math.pow(EngineeringFunctions.IMABS(iNumber), number);\r\n // calculate argument\r\n let t = EngineeringFunctions.IMARGUMENT(iNumber);\r\n\r\n let real = p * Math.cos(number * t);\r\n let imaginary = p * Math.sin(number * t);\r\n return EngineeringFunctions.COMPLEX(real, imaginary, unit);\r\n },\r\n\r\n IMPRODUCT: (...params) => {\r\n let result;\r\n let i = 0;\r\n H.flattenParams(params, null, false, (item) => {\r\n if (i === 0) {\r\n result = H.accept(item);\r\n parseIM(result);\r\n } else {\r\n const res1 = parseIM(result);\r\n const a = res1.real, b = res1.im, unit1 = res1.unit;\r\n const res2 = parseIM(item);\r\n const c = res2.real, d = res2.im, unit2 = res2.unit;\r\n if (unit1 !== unit2)\r\n throw FormulaError.VALUE;\r\n result = EngineeringFunctions.COMPLEX(a * c - b * d, a * d + b * c);\r\n }\r\n i++;\r\n }, 1);\r\n return result;\r\n },\r\n\r\n IMREAL: (iNumber) => {\r\n return parseIM(iNumber).real;\r\n },\r\n\r\n IMSEC: (iNumber) => {\r\n return EngineeringFunctions.IMDIV('1', EngineeringFunctions.IMCOS(iNumber));\r\n },\r\n\r\n IMSECH: (iNumber) => {\r\n return EngineeringFunctions.IMDIV('1', EngineeringFunctions.IMCOSH(iNumber));\r\n },\r\n\r\n IMSIN: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n\r\n let realInput = Math.sin(real) * (Math.exp(im) + Math.exp(-im)) / 2;\r\n let imaginaryInput = Math.cos(real) * (Math.exp(im) - Math.exp(-im)) / 2;\r\n return EngineeringFunctions.COMPLEX(realInput, imaginaryInput, unit);\r\n },\r\n\r\n IMSINH: (iNumber) => {\r\n const {real, im, unit} = parseIM(iNumber);\r\n let realInput = Math.cos(im) * (Math.exp(real) - Math.exp(-real)) / 2;\r\n let imaginaryInput = Math.sin(im) * (Math.exp(real) + Math.exp(-real)) / 2;\r\n return EngineeringFunctions.COMPLEX(realInput, imaginaryInput, unit);\r\n },\r\n\r\n IMSQRT: (iNumber) => {\r\n const {unit} = parseIM(iNumber);\r\n // calculate the power of modulus\r\n let power = Math.sqrt(EngineeringFunctions.IMABS(iNumber));\r\n // calculate argument\r\n let argument = EngineeringFunctions.IMARGUMENT(iNumber);\r\n return EngineeringFunctions.COMPLEX(power * Math.cos(argument / 2), power * Math.sin(argument / 2), unit);\r\n },\r\n\r\n IMSUB: (iNumber1, iNumber2) => {\r\n const res1 = parseIM(iNumber1);\r\n const a = res1.real, b = res1.im, unit1 = res1.unit;\r\n const res2 = parseIM(iNumber2);\r\n const c = res2.real, d = res2.im, unit2 = res2.unit;\r\n\r\n if (unit1 !== unit2) {\r\n throw FormulaError.VALUE;\r\n }\r\n return EngineeringFunctions.COMPLEX(a - c, b - d, unit1);\r\n },\r\n\r\n IMSUM: (...params) => {\r\n let realSum = 0, imSum = 0, prevUnit;\r\n H.flattenParams(params, null, false, (item) => {\r\n const {real, im, unit} = parseIM(item);\r\n if (!prevUnit) prevUnit = unit;\r\n if (prevUnit !== unit)\r\n throw FormulaError.VALUE;\r\n realSum += real;\r\n imSum += im;\r\n });\r\n return EngineeringFunctions.COMPLEX(realSum, imSum, prevUnit);\r\n },\r\n\r\n IMTAN: (iNumber) => {\r\n const {unit} = parseIM(iNumber);\r\n return EngineeringFunctions.IMDIV(EngineeringFunctions.IMSIN(iNumber), EngineeringFunctions.IMCOS(iNumber), unit);\r\n },\r\n\r\n // FIXME: need to check the test cases\r\n OCT2BIN: (number, places) => {\r\n // office: If number is not a valid octal number, OCT2BIN returns the #NUM! error value.\r\n // office: If places is nonnumeric, OCT2BIN returns the #VALUE! error value.\r\n number = H.accept(number, Types.STRING);\r\n places = H.accept(places, Types.NUMBER, null);\r\n\r\n // 1. If number's length larger than 10, returns #NUM!\r\n if (number.length > 10) {\r\n throw FormulaError.NUM\r\n }\r\n // In microsoft Excel, if places is larger than 10, it will return #NUM!\r\n if (places > 10) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // 2. office: If places is negative, OCT2BIN returns the #NUM! error value.\r\n if (places !== null && places < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // if places is not an integer, it is truncated\r\n // office: If places is not an integer, it is truncated.\r\n places = Math.trunc(places);\r\n\r\n // to check if the Oct number is negative\r\n let isNegative = (number.length === 10 && number.substring(0, 1) === '7');\r\n // convert OCT to DEC\r\n let toDecimal = EngineeringFunctions.OCT2DEC(number);\r\n // 2.\r\n // office: If number is negative, it cannot be less than 7777777000, and if number is positive, it cannot be greater than 777.\r\n // MiN_BIN = -512, MAX_BIN = 511\r\n if (toDecimal < MIN_BIN || toDecimal > MAX_BIN) {\r\n return FormulaError.NUM;\r\n }\r\n // if number is negative, ignores places and return a 10-character binary number\r\n // office: If number is negative, OCT2BIN ignores places and returns a 10-character binary number.\r\n if (isNegative) {\r\n return '1' + TextFunctions.REPT('0', 9 - (512 + toDecimal).toString(2).length) + (512 + toDecimal).toString(2);\r\n }\r\n\r\n // convert DEC to BIN\r\n let result = toDecimal.toString(2);\r\n\r\n\r\n //if (places === null) {\r\n if (places === 0) {\r\n return result;\r\n }\r\n\r\n // office: If OCT2BIN requires more than places characters, it returns the #NUM! error value.\r\n if (places < result.length) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return TextFunctions.REPT('0', places - result.length) + result;\r\n },\r\n\r\n OCT2DEC: (number) => {\r\n number = H.accept(number, Types.STRING);\r\n // In microsoft Excel, if number contains more than ten characters (10 digits), it will return #NUM!\r\n if (number.length > 10) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If number is not a valid octal number, OCT2DEC returns the #NUM! error value.\r\n for (const n of number) {\r\n if (n < '0' || n > '7') {\r\n throw FormulaError.NUM;\r\n }\r\n }\r\n // convert to DEC\r\n let result = parseInt(number, 8);\r\n return (result >= 536870912) ? result - 1073741824 : result;\r\n // 536870912(4000000000) : -536870912; 1073741823(7777777777) : -1\r\n },\r\n\r\n OCT2HEX: (number, places) => {\r\n number = H.accept(number, Types.STRING);\r\n places = H.accept(places, Types.NUMBER_NO_BOOLEAN, null);\r\n if (number.length > 10) {\r\n throw FormulaError.NUM\r\n }\r\n // office: If number is not a valid octal number, OCT2DEC returns the #NUM! error value.\r\n for (const n of number) {\r\n if (n < '0' || n > '7') {\r\n throw FormulaError.NUM;\r\n }\r\n }\r\n // if places is not an integer, it is truncated\r\n places = Math.trunc(places);\r\n // office: If places is negative, OCT2HEX returns the #NUM! error value.\r\n if (places < 0 || places > 10) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // convert OCT to DEC\r\n let toDecimal = EngineeringFunctions.OCT2DEC(number);\r\n\r\n // convert DEC to HEX\r\n // let toHex = EngineeringFunctions.DEC2HEX(toDecimal, places);\r\n let toHex = EngineeringFunctions.DEC2HEX(toDecimal);\r\n //if (places === null) {\r\n if (places === 0) {\r\n return toHex;\r\n }\r\n if (places < toHex.length) {\r\n throw FormulaError.NUM;\r\n } else {\r\n return TextFunctions.REPT('0', places - toHex.length) + toHex;\r\n }\r\n },\r\n};\r\n\r\nmodule.exports = EngineeringFunctions;\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types, WildCard, Address} = require('../helpers');\r\nconst Collection = require('../../grammar/type/collection');\r\nconst H = FormulaHelpers;\r\n\r\nconst ReferenceFunctions = {\r\n\r\n ADDRESS: (rowNumber, columnNumber, absNum, a1, sheetText) => {\r\n rowNumber = H.accept(rowNumber, Types.NUMBER);\r\n columnNumber = H.accept(columnNumber, Types.NUMBER);\r\n absNum = H.accept(absNum, Types.NUMBER, 1);\r\n a1 = H.accept(a1, Types.BOOLEAN, true);\r\n sheetText = H.accept(sheetText, Types.STRING, '');\r\n\r\n if (rowNumber < 1 || columnNumber < 1 || absNum < 1 || absNum > 4)\r\n throw FormulaError.VALUE;\r\n\r\n let result = '';\r\n if (sheetText.length > 0) {\r\n if (/[^A-Za-z_.\\d\\u007F-\\uFFFF]/.test(sheetText)) {\r\n result += `'${sheetText}'!`;\r\n } else {\r\n result += sheetText + '!';\r\n }\r\n }\r\n if (a1) {\r\n // A1 style\r\n result += (absNum === 1 || absNum === 3) ? '$' : '';\r\n result += Address.columnNumberToName(columnNumber);\r\n result += (absNum === 1 || absNum === 2) ? '$' : '';\r\n result += rowNumber;\r\n } else {\r\n // R1C1 style\r\n result += 'R';\r\n result += (absNum === 4 || absNum === 3) ? `[${rowNumber}]` : rowNumber;\r\n result += 'C';\r\n result += (absNum === 4 || absNum === 2) ? `[${columnNumber}]` : columnNumber;\r\n }\r\n return result;\r\n },\r\n\r\n AREAS: refs => {\r\n refs = H.accept(refs);\r\n if (refs instanceof Collection) {\r\n return refs.length;\r\n }\r\n return 1;\r\n },\r\n\r\n CHOOSE: (indexNum, ...values) => {\r\n\r\n },\r\n\r\n // Special\r\n COLUMN: (context, obj) => {\r\n if (obj == null) {\r\n if (context.position.col != null)\r\n return context.position.col;\r\n else\r\n throw Error('FormulaParser.parse is called without position parameter.')\r\n } else {\r\n if (typeof obj !== 'object' || Array.isArray(obj))\r\n throw FormulaError.VALUE;\r\n if (H.isCellRef(obj)) {\r\n return obj.ref.col;\r\n } else if (H.isRangeRef(obj)) {\r\n return obj.ref.from.col;\r\n } else {\r\n throw Error('ReferenceFunctions.COLUMN should not reach here.')\r\n }\r\n }\r\n },\r\n\r\n // Special\r\n COLUMNS: (context, obj) => {\r\n if (obj == null) {\r\n throw Error('COLUMNS requires one argument');\r\n }\r\n if (typeof obj != 'object' || Array.isArray(obj))\r\n throw FormulaError.VALUE;\r\n if (H.isCellRef(obj)) {\r\n return 1;\r\n } else if (H.isRangeRef(obj)) {\r\n return Math.abs(obj.ref.from.col - obj.ref.to.col) + 1;\r\n } else {\r\n throw Error('ReferenceFunctions.COLUMNS should not reach here.')\r\n }\r\n },\r\n\r\n HLOOKUP: (lookupValue, tableArray, rowIndexNum, rangeLookup) => {\r\n // preserve type of lookupValue\r\n lookupValue = H.accept(lookupValue);\r\n try {\r\n tableArray = H.accept(tableArray, Types.ARRAY, undefined, false);\r\n } catch (e) {\r\n // catch #VALUE! and throw #N/A\r\n if (e instanceof FormulaError)\r\n throw FormulaError.NA;\r\n throw e;\r\n }\r\n rowIndexNum = H.accept(rowIndexNum, Types.NUMBER);\r\n rangeLookup = H.accept(rangeLookup, Types.BOOLEAN, true);\r\n\r\n // check if rowIndexNum out of bound\r\n if (rowIndexNum < 1)\r\n throw FormulaError.VALUE;\r\n if (tableArray[rowIndexNum - 1] === undefined)\r\n throw FormulaError.REF;\r\n\r\n const lookupType = typeof lookupValue; // 'number', 'string', 'boolean'\r\n\r\n // approximate lookup (assume the array is sorted)\r\n if (rangeLookup) {\r\n let prevValue = lookupType === typeof tableArray[0][0] ? tableArray[0][0] : null;\r\n for (let i = 1; i < tableArray[0].length; i++) {\r\n const currValue = tableArray[0][i];\r\n const type = typeof currValue;\r\n // skip the value if type does not match\r\n if (type !== lookupType)\r\n continue;\r\n // if the previous two values are greater than lookup value, throw #N/A\r\n if (prevValue > lookupValue && currValue > lookupValue) {\r\n throw FormulaError.NA;\r\n }\r\n if (currValue === lookupValue)\r\n return tableArray[rowIndexNum - 1][i];\r\n // if previous value <= lookup value and current value > lookup value\r\n if (prevValue != null && currValue > lookupValue && prevValue <= lookupValue) {\r\n return tableArray[rowIndexNum - 1][i - 1];\r\n }\r\n prevValue = currValue;\r\n }\r\n if (prevValue == null)\r\n throw FormulaError.NA;\r\n return prevValue;\r\n }\r\n // exact lookup with wildcard support\r\n else {\r\n let index = -1;\r\n if (WildCard.isWildCard(lookupValue)) {\r\n index = tableArray[0].findIndex(item => {\r\n return WildCard.toRegex(lookupValue, 'i').test(item);\r\n });\r\n } else {\r\n index = tableArray[0].findIndex(item => {\r\n return item === lookupValue;\r\n });\r\n }\r\n // the exact match is not found\r\n if (index === -1) throw FormulaError.NA;\r\n return tableArray[rowIndexNum - 1][index];\r\n }\r\n },\r\n\r\n // Special\r\n INDEX: (context, ranges, rowNum, colNum, areaNum) => {\r\n // retrieve values\r\n rowNum = context.utils.extractRefValue(rowNum);\r\n rowNum = {value: rowNum.val, isArray: rowNum.isArray};\r\n rowNum = H.accept(rowNum, Types.NUMBER);\r\n rowNum = Math.trunc(rowNum);\r\n\r\n if (colNum == null) {\r\n colNum = 1;\r\n } else {\r\n colNum = context.utils.extractRefValue(colNum);\r\n colNum = {value: colNum.val, isArray: colNum.isArray};\r\n colNum = H.accept(colNum, Types.NUMBER, 1);\r\n colNum = Math.trunc(colNum);\r\n }\r\n\r\n if (areaNum == null) {\r\n areaNum = 1;\r\n } else {\r\n areaNum = context.utils.extractRefValue(areaNum);\r\n areaNum = {value: areaNum.val, isArray: areaNum.isArray};\r\n areaNum = H.accept(areaNum, Types.NUMBER, 1);\r\n areaNum = Math.trunc(areaNum);\r\n }\r\n\r\n // get the range area that we want to index\r\n // ranges can be cell ref, range ref or array constant\r\n let range = ranges;\r\n // many ranges (Reference form)\r\n if (ranges instanceof Collection) {\r\n range = ranges.refs[areaNum - 1];\r\n } else if (areaNum > 1) {\r\n throw FormulaError.REF;\r\n }\r\n\r\n if (rowNum === 0 && colNum === 0) {\r\n return range;\r\n }\r\n\r\n // query the whole column\r\n if (rowNum === 0) {\r\n if (H.isRangeRef(range)) {\r\n if (range.ref.to.col - range.ref.from.col < colNum - 1)\r\n throw FormulaError.REF;\r\n range.ref.from.col += colNum - 1;\r\n range.ref.to.col = range.ref.from.col;\r\n return range;\r\n } else if (Array.isArray(range)) {\r\n const res = [];\r\n range.forEach(row => res.push([row[colNum - 1]]));\r\n return res;\r\n }\r\n }\r\n // query the whole row\r\n if (colNum === 0) {\r\n if (H.isRangeRef(range)) {\r\n if (range.ref.to.row - range.ref.from.row < rowNum - 1)\r\n throw FormulaError.REF;\r\n range.ref.from.row += rowNum - 1;\r\n range.ref.to.row = range.ref.from.row;\r\n return range;\r\n } else if (Array.isArray(range)) {\r\n return range[colNum - 1];\r\n }\r\n }\r\n // query single cell\r\n if (rowNum !== 0 && colNum !== 0) {\r\n // range reference\r\n if (H.isRangeRef(range)) {\r\n range = range.ref;\r\n if (range.to.row - range.from.row < rowNum - 1 || range.to.col - range.from.col < colNum - 1)\r\n throw FormulaError.REF;\r\n return {ref: {row: range.from.row + rowNum - 1, col: range.from.col + colNum - 1}};\r\n }\r\n // cell reference\r\n else if (H.isCellRef(range)) {\r\n range = range.ref;\r\n if (rowNum > 1 || colNum > 1)\r\n throw FormulaError.REF;\r\n return {ref: {row: range.row + rowNum - 1, col: range.col + colNum - 1}};\r\n }\r\n // array constant\r\n else if (Array.isArray(range)) {\r\n if (range.length < rowNum || range[0].length < colNum)\r\n throw FormulaError.REF;\r\n return range[rowNum - 1][colNum - 1];\r\n }\r\n }\r\n },\r\n\r\n MATCH: () => {\r\n\r\n },\r\n\r\n // Special\r\n ROW: (context, obj) => {\r\n if (obj == null) {\r\n if (context.position.row != null)\r\n return context.position.row;\r\n else\r\n throw Error('FormulaParser.parse is called without position parameter.')\r\n } else {\r\n if (typeof obj !== 'object' || Array.isArray(obj))\r\n throw FormulaError.VALUE;\r\n if (H.isCellRef(obj)) {\r\n return obj.ref.row;\r\n } else if (H.isRangeRef(obj)) {\r\n return obj.ref.from.row;\r\n } else {\r\n throw Error('ReferenceFunctions.ROW should not reach here.')\r\n }\r\n }\r\n },\r\n\r\n // Special\r\n ROWS: (context, obj) => {\r\n if (obj == null) {\r\n throw Error('ROWS requires one argument');\r\n }\r\n if (typeof obj != 'object' || Array.isArray(obj))\r\n throw FormulaError.VALUE;\r\n if (H.isCellRef(obj)) {\r\n return 1;\r\n } else if (H.isRangeRef(obj)) {\r\n return Math.abs(obj.ref.from.row - obj.ref.to.row) + 1;\r\n } else {\r\n throw Error('ReferenceFunctions.ROWS should not reach here.')\r\n }\r\n },\r\n\r\n TRANSPOSE: (array) => {\r\n array = H.accept(array, Types.ARRAY, undefined, false);\r\n // https://github.com/numbers/numbers.js/blob/master/lib/numbers/matrix.js#L171\r\n const result = [];\r\n\r\n for (let i = 0; i < array[0].length; i++) {\r\n result[i] = [];\r\n\r\n for (let j = 0; j < array.length; j++) {\r\n result[i][j] = array[j][i];\r\n }\r\n }\r\n\r\n return result;\r\n },\r\n\r\n VLOOKUP: (lookupValue, tableArray, colIndexNum, rangeLookup) => {\r\n // preserve type of lookupValue\r\n lookupValue = H.accept(lookupValue);\r\n try {\r\n tableArray = H.accept(tableArray, Types.ARRAY, undefined, false);\r\n } catch (e) {\r\n // catch #VALUE! and throw #N/A\r\n if (e instanceof FormulaError)\r\n throw FormulaError.NA;\r\n throw e;\r\n }\r\n colIndexNum = H.accept(colIndexNum, Types.NUMBER);\r\n rangeLookup = H.accept(rangeLookup, Types.BOOLEAN, true);\r\n\r\n // check if colIndexNum out of bound\r\n if (colIndexNum < 1)\r\n throw FormulaError.VALUE;\r\n if (tableArray[0][colIndexNum - 1] === undefined)\r\n throw FormulaError.REF;\r\n\r\n const lookupType = typeof lookupValue; // 'number', 'string', 'boolean'\r\n\r\n // approximate lookup (assume the array is sorted)\r\n if (rangeLookup) {\r\n let prevValue = lookupType === typeof tableArray[0][0] ? tableArray[0][0] : null;\r\n for (let i = 1; i < tableArray.length; i++) {\r\n const currRow = tableArray[i];\r\n const currValue = tableArray[i][0];\r\n const type = typeof currValue;\r\n // skip the value if type does not match\r\n if (type !== lookupType)\r\n continue;\r\n // if the previous two values are greater than lookup value, throw #N/A\r\n if (prevValue > lookupValue && currValue > lookupValue) {\r\n throw FormulaError.NA;\r\n }\r\n if (currValue === lookupValue)\r\n return currRow[colIndexNum - 1];\r\n // if previous value <= lookup value and current value > lookup value\r\n if (prevValue != null && currValue > lookupValue && prevValue <= lookupValue) {\r\n return tableArray[i - 1][colIndexNum - 1];\r\n }\r\n prevValue = currValue;\r\n }\r\n if (prevValue == null)\r\n throw FormulaError.NA;\r\n return prevValue;\r\n }\r\n // exact lookup with wildcard support\r\n else {\r\n let index = -1;\r\n if (WildCard.isWildCard(lookupValue)) {\r\n index = tableArray.findIndex(currRow => {\r\n return WildCard.toRegex(lookupValue, 'i').test(currRow[0]);\r\n });\r\n } else {\r\n index = tableArray.findIndex(currRow => {\r\n return currRow[0] === lookupValue;\r\n });\r\n }\r\n // the exact match is not found\r\n if (index === -1) throw FormulaError.NA;\r\n return tableArray[index][colIndexNum - 1];\r\n }\r\n },\r\n};\r\n\r\nmodule.exports = ReferenceFunctions;\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types} = require('../helpers');\r\nconst H = FormulaHelpers;\r\n\r\nconst error2Number = {\r\n '#NULL!': 1, '#DIV/0!': 2, '#VALUE!': 3, '#REF!': 4, '#NAME?': 5,\r\n '#NUM!': 6, '#N/A': 7\r\n};\r\n\r\nconst InfoFunctions = {\r\n\r\n CELL: (infoType, reference) => {\r\n // throw FormulaError.NOT_IMPLEMENTED('CELL');\r\n },\r\n\r\n 'ERROR.TYPE': (value) => {\r\n value = H.accept(value);\r\n if ( value instanceof FormulaError)\r\n return error2Number[value.toString()];\r\n throw FormulaError.NA;\r\n },\r\n\r\n INFO: () => {\r\n },\r\n\r\n ISBLANK: (value) => {\r\n if (!value.ref)\r\n return false;\r\n // null and undefined are also blank\r\n return value.value == null || value.value === '';\r\n },\r\n\r\n ISERR: (value) => {\r\n value = H.accept(value);\r\n return value instanceof FormulaError && value.toString() !== '#N/A';\r\n },\r\n\r\n ISERROR: (value) => {\r\n value = H.accept(value);\r\n return value instanceof FormulaError;\r\n },\r\n\r\n ISEVEN: number => {\r\n number = H.accept(number, Types.NUMBER);\r\n number = Math.trunc(number);\r\n return number % 2 === 0;\r\n },\r\n\r\n ISLOGICAL: (value) => {\r\n value = H.accept(value);\r\n return typeof value === 'boolean';\r\n },\r\n\r\n ISNA: (value) => {\r\n value = H.accept(value);\r\n return value instanceof FormulaError && value.toString() === '#N/A';\r\n },\r\n\r\n ISNONTEXT: (value) => {\r\n value = H.accept(value);\r\n return typeof value !== 'string';\r\n },\r\n\r\n ISNUMBER: (value) => {\r\n value = H.accept(value);\r\n return typeof value === \"number\";\r\n },\r\n\r\n ISREF: (value) => {\r\n if (!value.ref)\r\n return false;\r\n if (H.isCellRef(value) && (value.ref.row > 1048576 || value.ref.col > 16384)) {\r\n return false;\r\n }\r\n if (H.isRangeRef(value) && (value.ref.from.row > 1048576 || value.ref.from.col > 16384\r\n || value.ref.to.row > 1048576 || value.ref.to.col > 16384)) {\r\n return false;\r\n }\r\n value = H.accept(value);\r\n return !(value instanceof FormulaError && value.toString() === '#REF!');\r\n },\r\n\r\n ISTEXT: (value) => {\r\n value = H.accept(value);\r\n return typeof value === 'string';\r\n },\r\n\r\n N: value => {\r\n value = H.accept(value);\r\n const type = typeof value;\r\n if (type === 'number')\r\n return value;\r\n else if (type === \"boolean\")\r\n return Number(value);\r\n else if (value instanceof FormulaError)\r\n throw value;\r\n return 0;\r\n },\r\n\r\n NA: () => {\r\n throw FormulaError.NA;\r\n },\r\n\r\n TYPE: value => {\r\n // a reference\r\n if (value.ref) {\r\n if (H.isRangeRef(value)) {\r\n return 16;\r\n } else if (H.isCellRef(value)) {\r\n value = H.accept(value);\r\n // empty cell is number type\r\n if (typeof value === \"string\" && value.length === 0)\r\n return 1;\r\n }\r\n }\r\n value = H.accept(value);\r\n const type = typeof value;\r\n if (type === 'number')\r\n return 1;\r\n else if (type === \"string\")\r\n return 2;\r\n else if (type === \"boolean\")\r\n return 4;\r\n else if (value instanceof FormulaError)\r\n return 16;\r\n else if (Array.isArray(value))\r\n return 64;\r\n },\r\n};\r\n\r\n\r\nmodule.exports = InfoFunctions;\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types} = require('../helpers');\r\nconst H = FormulaHelpers;\r\nconst jStat = require(\"jstat\");\r\nconst MathFunctions = require('./math');\r\nconst SQRT2PI = 2.5066282746310002;\r\n\r\nconst DistributionFunctions = {\r\n 'BETA.DIST': (x, alpha, beta, cumulative, a, b) => {\r\n x = H.accept(x, Types.NUMBER);\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n beta = H.accept(beta, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n a = H.accept(a, Types.NUMBER, 0);\r\n b = H.accept(b, Types.NUMBER, 1);\r\n if (alpha <= 0 || beta <= 0 || x < a || x > b || a === b)\r\n throw FormulaError.NUM;\r\n\r\n x = (x - a) / (b - a);\r\n return cumulative ? jStat.beta.cdf(x, alpha, beta) : jStat.beta.pdf(x, alpha, beta) / (b - a);\r\n },\r\n\r\n 'BETA.INV': (probability, alpha, beta, a, b) => {\r\n probability = H.accept(probability, Types.NUMBER);\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n beta = H.accept(beta, Types.NUMBER);\r\n a = H.accept(a, Types.NUMBER, 0);\r\n b = H.accept(b, Types.NUMBER, 1);\r\n if (alpha <= 0 || beta <= 0 || probability <= 0 || probability > 1)\r\n throw FormulaError.NUM;\r\n return jStat.beta.inv(probability, alpha, beta) * (b - a) + a;\r\n },\r\n\r\n 'BINOM.DIST': (numberS, trials, probabilityS, cumulative) => {\r\n numberS = H.accept(numberS, Types.NUMBER);\r\n trials = H.accept(trials, Types.NUMBER);\r\n probabilityS = H.accept(probabilityS, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n if (trials < 0 || probabilityS < 0 || probabilityS > 1 || numberS < 0 || numberS > trials)\r\n throw FormulaError.NUM;\r\n\r\n return cumulative ? jStat.binomial.cdf(numberS, trials, probabilityS)\r\n : jStat.binomial.pdf(numberS, trials, probabilityS);\r\n },\r\n\r\n 'BINOM.DIST.RANGE': (trials, probabilityS, numberS, numberS2) => {\r\n trials = H.accept(trials, Types.NUMBER);\r\n probabilityS = H.accept(probabilityS, Types.NUMBER);\r\n numberS = H.accept(numberS, Types.NUMBER);\r\n numberS2 = H.accept(numberS2, Types.NUMBER, numberS);\r\n if (trials < 0 || probabilityS < 0 || probabilityS > 1 || numberS < 0 || numberS > trials || numberS2 < numberS || numberS2 > trials)\r\n throw FormulaError.NUM;\r\n\r\n let result = 0;\r\n for (let i = numberS; i <= numberS2; i++) {\r\n result += MathFunctions.COMBIN(trials, i) * Math.pow(probabilityS, i) * Math.pow(1 - probabilityS, trials - i);\r\n }\r\n return result;\r\n },\r\n\r\n 'BINOM.INV': (trials, probabilityS, alpha) => {\r\n trials = H.accept(trials, Types.NUMBER);\r\n probabilityS = H.accept(probabilityS, Types.NUMBER);\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n if (trials < 0 || probabilityS < 0 || probabilityS > 1 || alpha < 0 || alpha > 1)\r\n throw FormulaError.NUM;\r\n\r\n let x = 0;\r\n while (x <= trials) {\r\n if (jStat.binomial.cdf(x, trials, probabilityS) >= alpha) {\r\n return x;\r\n }\r\n x++;\r\n }\r\n },\r\n\r\n 'CHISQ.DIST': (x, degFreedom, cumulative) => {\r\n x = H.accept(x, Types.NUMBER);\r\n degFreedom = H.accept(degFreedom, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.NUMBER);\r\n degFreedom = Math.trunc(degFreedom);\r\n if (x < 0 || degFreedom < 1 || degFreedom > 10 ** 10)\r\n throw FormulaError.NUM;\r\n\r\n return cumulative ? jStat.chisquare.cdf(x, degFreedom) : jStat.chisquare.pdf(x, degFreedom);\r\n },\r\n\r\n 'CHISQ.DIST.RT': (x, degFreedom) => {\r\n x = H.accept(x, Types.NUMBER);\r\n degFreedom = H.accept(degFreedom, Types.NUMBER);\r\n degFreedom = Math.trunc(degFreedom);\r\n if (x < 0 || degFreedom < 1 || degFreedom > 10 ** 10)\r\n throw FormulaError.NUM;\r\n\r\n return 1 - jStat.chisquare.cdf(x, degFreedom);\r\n },\r\n\r\n 'CHISQ.INV': (probability, degFreedom) => {\r\n probability = H.accept(probability, Types.NUMBER);\r\n degFreedom = H.accept(degFreedom, Types.NUMBER);\r\n degFreedom = Math.trunc(degFreedom);\r\n if (probability < 0 || probability > 1 || degFreedom < 1 || degFreedom > 10 ** 10)\r\n throw FormulaError.NUM;\r\n\r\n return jStat.chisquare.inv(probability, degFreedom);\r\n },\r\n\r\n 'CHISQ.INV.RT': (probability, degFreedom) => {\r\n probability = H.accept(probability, Types.NUMBER);\r\n degFreedom = H.accept(degFreedom, Types.NUMBER);\r\n degFreedom = Math.trunc(degFreedom);\r\n if (probability < 0 || probability > 1 || degFreedom < 1 || degFreedom > 10 ** 10)\r\n throw FormulaError.NUM;\r\n\r\n return jStat.chisquare.inv(1 - probability, degFreedom);\r\n },\r\n\r\n 'CHISQ.TEST': (actualRange, expectedRange) => {\r\n const actual = H.accept(actualRange, Types.ARRAY, undefined, false, false);\r\n const expected = H.accept(expectedRange, Types.ARRAY, undefined, false, false);\r\n\r\n if (actual.length !== expected.length || actual[0].length !== expected[0].length\r\n || actual.length === 1 && actual[0].length === 1)\r\n throw FormulaError.NA;\r\n\r\n const row = actual.length;\r\n const col = actual[0].length;\r\n let dof = (row - 1) * (col - 1);\r\n if (row === 1)\r\n dof = col - 1;\r\n else\r\n dof = row - 1;\r\n let xsqr = 0;\r\n\r\n for (let i = 0; i < row; i++) {\r\n for (let j = 0; j < col; j++) {\r\n if (typeof actual[i][j] !== \"number\" || typeof expected[i][j] !== \"number\")\r\n continue;\r\n if (expected[i][j] === 0) throw FormulaError.DIV0;\r\n xsqr += Math.pow((actual[i][j] - expected[i][j]), 2) / expected[i][j];\r\n }\r\n }\r\n\r\n // Get independent by X square and its degree of freedom\r\n let p = Math.exp(-0.5 * xsqr);\r\n if ((dof % 2) === 1) {\r\n p = p * Math.sqrt(2 * xsqr / Math.PI);\r\n }\r\n let k = dof;\r\n while (k >= 2) {\r\n p = p * xsqr / k;\r\n k = k - 2;\r\n }\r\n let t = p, a = dof;\r\n while (t > 0.000000000000001 * p) {\r\n a = a + 2;\r\n t = t * xsqr / a;\r\n p = p + t;\r\n }\r\n return 1 - p;\r\n },\r\n\r\n 'CONFIDENCE.NORM': (alpha, std, size) => {\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n std = H.accept(std, Types.NUMBER);\r\n size = H.accept(size, Types.NUMBER);\r\n size = Math.trunc(size);\r\n if (alpha <= 0 || alpha >= 1 || std <= 0 || size < 1)\r\n throw FormulaError.NUM;\r\n return jStat.normalci(1, alpha, std, size)[1] - 1;\r\n },\r\n\r\n 'CONFIDENCE.T': (alpha, std, size) => {\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n std = H.accept(std, Types.NUMBER);\r\n size = H.accept(size, Types.NUMBER);\r\n size = Math.trunc(size);\r\n if (alpha <= 0 || alpha >= 1 || std <= 0 || size < 1)\r\n throw FormulaError.NUM;\r\n if (size === 1)\r\n throw FormulaError.DIV0;\r\n return jStat.tci(1, alpha, std, size)[1] - 1;\r\n },\r\n\r\n CORREL: (array1, array2) => {\r\n array1 = H.accept(array1, Types.ARRAY, undefined, true, true);\r\n array2 = H.accept(array2, Types.ARRAY, undefined, true, true);\r\n if (array1.length !== array2.length)\r\n throw FormulaError.NA;\r\n\r\n // filter out values that are not number\r\n const filterArr1 = [], filterArr2 = [];\r\n for (let i = 0; i < array1.length; i++) {\r\n if (typeof array1[i] !== \"number\" || typeof array2[i] !== \"number\")\r\n continue;\r\n filterArr1.push(array1[i]);\r\n filterArr2.push(array2[i]);\r\n }\r\n if (filterArr1.length <= 1)\r\n throw FormulaError.DIV0;\r\n\r\n return jStat.corrcoeff(filterArr1, filterArr2);\r\n },\r\n\r\n 'COVARIANCE.P': (array1, array2) => {\r\n array1 = H.accept(array1, Types.ARRAY, undefined, true, true);\r\n array2 = H.accept(array2, Types.ARRAY, undefined, true, true);\r\n if (array1.length !== array2.length)\r\n throw FormulaError.NA;\r\n\r\n // filter out values that are not number\r\n const filterArr1 = [], filterArr2 = [];\r\n for (let i = 0; i < array1.length; i++) {\r\n if (typeof array1[i] !== \"number\" || typeof array2[i] !== \"number\")\r\n continue;\r\n filterArr1.push(array1[i]);\r\n filterArr2.push(array2[i]);\r\n }\r\n const mean1 = jStat.mean(filterArr1), mean2 = jStat.mean(filterArr2);\r\n let result = 0;\r\n for (let i = 0; i < filterArr1.length; i++) {\r\n result += (filterArr1[i] - mean1) * (filterArr2[i] - mean2);\r\n }\r\n return result / filterArr1.length;\r\n },\r\n\r\n 'COVARIANCE.S': (array1, array2) => {\r\n array1 = H.accept(array1, Types.ARRAY, undefined, true, true);\r\n array2 = H.accept(array2, Types.ARRAY, undefined, true, true);\r\n if (array1.length !== array2.length)\r\n throw FormulaError.NA;\r\n\r\n // filter out values that are not number\r\n const filterArr1 = [], filterArr2 = [];\r\n for (let i = 0; i < array1.length; i++) {\r\n if (typeof array1[i] !== \"number\" || typeof array2[i] !== \"number\")\r\n continue;\r\n filterArr1.push(array1[i]);\r\n filterArr2.push(array2[i]);\r\n }\r\n\r\n if (filterArr1.length <= 1)\r\n throw FormulaError.DIV0;\r\n\r\n return jStat.covariance(filterArr1, filterArr2);\r\n },\r\n\r\n DEVSQ: (...numbers) => {\r\n let sum = 0, x = [];\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n if (typeof item === \"number\") {\r\n sum += item;\r\n x.push(item);\r\n }\r\n });\r\n const mean = sum / x.length;\r\n sum = 0;\r\n for (let i = 0; i < x.length; i++) {\r\n sum += (x[i] - mean) ** 2;\r\n }\r\n return sum;\r\n },\r\n\r\n 'EXPON.DIST': (x, lambda, cumulative) => {\r\n x = H.accept(x, Types.NUMBER);\r\n lambda = H.accept(lambda, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n if (x < 0 || lambda <= 0)\r\n throw FormulaError.NUM;\r\n return cumulative ? jStat.exponential.cdf(x, lambda) : jStat.exponential.pdf(x, lambda);\r\n },\r\n\r\n 'F.DIST': (x, d1, d2, cumulative) => {\r\n x = H.accept(x, Types.NUMBER);\r\n d1 = H.accept(d1, Types.NUMBER);\r\n d2 = H.accept(d2, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n\r\n // If x is negative, F.DIST returns the #NUM! error value.\r\n // If deg_freedom1 < 1, F.DIST returns the #NUM! error value.\r\n // If deg_freedom2 < 1, F.DIST returns the #NUM! error value.\r\n if (x < 0 || d1 < 1 || d2 < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If deg_freedom1 or deg_freedom2 is not an integer, it is truncated.\r\n d1 = Math.trunc(d1);\r\n d2 = Math.trunc(d2);\r\n\r\n return cumulative ? jStat.centralF.cdf(x, d1, d2) : jStat.centralF.pdf(x, d1, d2);\r\n },\r\n\r\n 'F.DIST.RT': (x, d1, d2) => {\r\n // David\r\n x = H.accept(x, Types.NUMBER);\r\n d1 = H.accept(d1, Types.NUMBER);\r\n d2 = H.accept(d2, Types.NUMBER);\r\n // If deg_freedom1 < 1 F.DIST.RT returns the #NUM! error value.\r\n // If deg_freedom2 < 1 F.DIST.RT returns the #NUM! error value.\r\n // If x is negative, F.DIST.RT returns the #NUM! error value.\r\n if (x < 0 || d1 < 1 || d2 < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If deg_freedom1 or deg_freedom2 is not an integer, it is truncated.\r\n d1 = Math.trunc(d1);\r\n d2 = Math.trunc(d2);\r\n\r\n return 1 - jStat.centralF.cdf(x, d1, d2);\r\n },\r\n\r\n 'F.INV': (probability, d1, d2) => {\r\n // David\r\n probability = H.accept(probability, Types.NUMBER);\r\n d1 = H.accept(d1, Types.NUMBER);\r\n d2 = H.accept(d2, Types.NUMBER);\r\n // If probability < 0 or probability > 1, F.INV returns the #NUM! error value.\r\n if (probability < 0.0 || probability > 1.0) {\r\n throw FormulaError.NUM;\r\n }\r\n // If deg_freedom1 < 1, or deg_freedom2 < 1, F.INV returns the #NUM! error value.\r\n if (d1 < 1.0 || d2 < 1.0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If deg_freedom1 or deg_freedom2 is not an integer, it is truncated.\r\n d1 = Math.trunc(d1);\r\n d2 = Math.trunc(d2);\r\n\r\n return jStat.centralF.inv(probability, d1, d2);\r\n },\r\n\r\n 'F.INV.RT': (probability, d1, d2) => {\r\n // David\r\n probability = H.accept(probability, Types.NUMBER);\r\n d1 = H.accept(d1, Types.NUMBER);\r\n d2 = H.accept(d2, Types.NUMBER);\r\n // If Probability is < 0 or probability is > 1, F.INV.RT returns the #NUM! error value.\r\n if (probability < 0.0 || probability > 1.0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If Deg_freedom1 is < 1, or Deg_freedom2 is < 1, F.INV.RT returns the #NUM! error value.\r\n if (d1 < 1.0 || d1 >= Math.pow(10, 10)) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If Deg_freedom2 is < 1 or Deg_freedom2 is ≥ 10^10, F.INV.RT returns the #NUM! error value.\r\n if (d2 < 1.0 || d2 >= Math.pow(10, 10)) {\r\n throw FormulaError.NUM;\r\n }\r\n // If Deg_freedom1 or Deg_freedom2 is not an integer, it is truncated.\r\n d1 = Math.trunc(d1);\r\n d2 = Math.trunc(d2);\r\n\r\n return jStat.centralF.inv(1.0 - probability, d1, d2);\r\n },\r\n\r\n /**\r\n * https://en.wikipedia.org/wiki/F-test_of_equality_of_variances\r\n */\r\n 'F.TEST': (array1, array2) => {\r\n array1 = H.accept(array1, Types.ARRAY, undefined, true, true);\r\n array2 = H.accept(array2, Types.ARRAY, undefined, true, true);\r\n\r\n // filter out values that are not number\r\n const x1 = [], x2 = [];\r\n let x1Mean = 0, x2Mean = 0;\r\n for (let i = 0; i < Math.max(array1.length, array2.length); i++) {\r\n if (typeof array1[i] === \"number\") {\r\n x1.push(array1[i]);\r\n x1Mean += array1[i];\r\n }\r\n if (typeof array2[i] === \"number\") {\r\n x2.push(array2[i]);\r\n x2Mean += array2[i];\r\n }\r\n }\r\n if (x1.length <= 1 || x2.length <= 1)\r\n throw FormulaError.DIV0;\r\n\r\n x1Mean /= x1.length;\r\n x2Mean /= x2.length;\r\n let s1 = 0, s2 = 0; // sample variance S^2\r\n for (let i = 0; i < x1.length; i++) {\r\n s1 += (x1Mean - x1[i]) ** 2\r\n }\r\n s1 /= x1.length - 1;\r\n for (let i = 0; i < x2.length; i++) {\r\n s2 += (x2Mean - x2[i]) ** 2\r\n }\r\n s2 /= x2.length - 1;\r\n // P(F<=f) one-tail * 2\r\n return jStat.centralF.cdf(s1 / s2, x1.length - 1, x2.length - 1) * 2;\r\n },\r\n\r\n FISHER: (x) => {\r\n // David\r\n x = H.accept(x, Types.NUMBER);\r\n // If x ≤ -1 or if x ≥ 1, FISHER returns the #NUM! error value.\r\n if (x <= -1 || x >= 1) {\r\n throw FormulaError.NUM;\r\n }\r\n return Math.log((1 + x) / (1 - x)) / 2;\r\n },\r\n\r\n FISHERINV: (x) => {\r\n // David\r\n x = H.accept(x, Types.NUMBER);\r\n let e2y = Math.exp(2 * x);\r\n return (e2y - 1) / (e2y + 1);\r\n },\r\n\r\n // FIXME\r\n FORECAST: (x, knownYs, knownXs) => {\r\n x = H.accept(x, Types.NUMBER);\r\n knownYs = H.accept(knownYs, Types.ARRAY, undefined, true, true);\r\n knownXs = H.accept(knownXs, Types.ARRAY, undefined, true, true);\r\n\r\n if (knownXs.length !== knownYs.length)\r\n throw FormulaError.NA;\r\n\r\n // filter out values that are not number\r\n const filteredY = [], filteredX = [];\r\n let xAllEqual = true;\r\n for (let i = 0; i < knownYs.length; i++) {\r\n if (typeof knownYs[i] !== \"number\" || typeof knownXs[i] !== \"number\")\r\n continue;\r\n filteredY.push(knownYs[i]);\r\n filteredX.push(knownXs[i]);\r\n if (knownXs[i] !== knownXs[0])\r\n xAllEqual = false;\r\n }\r\n if (xAllEqual)\r\n throw FormulaError.DIV0;\r\n const yMean = jStat.mean(filteredY);\r\n const xMean = jStat.mean(filteredX);\r\n let numerator = 0, denominator = 0;\r\n for (let i = 0; i < filteredY.length; i++) {\r\n numerator += (filteredX[i] - xMean) * (filteredY[i] - yMean);\r\n denominator += (filteredX[i] - xMean) ** 2;\r\n }\r\n const b = numerator / denominator;\r\n const a = yMean - b * xMean;\r\n return a + b * x;\r\n },\r\n\r\n 'FORECAST.ETS': () => {\r\n // skip, not yet possible to implement, may need tensorflow.js ?\r\n },\r\n\r\n 'FORECAST.ETS.CONFINT': () => {\r\n // skip\r\n },\r\n\r\n 'FORECAST.ETS.SEASONALITY': () => {\r\n // skip\r\n },\r\n\r\n 'FORECAST.ETS.STAT': () => {\r\n // skip\r\n },\r\n\r\n 'FORECAST.LINEAR': (...params) => {\r\n return DistributionFunctions.FORECAST(...params);\r\n },\r\n\r\n FREQUENCY: (dataArray, binsArray) => {\r\n dataArray = H.accept(dataArray, Types.ARRAY, undefined, true, true);\r\n binsArray = H.accept(binsArray, Types.ARRAY, undefined, true, true);\r\n\r\n const binsArrayFiltered = [];\r\n for (let i = 0; i < binsArray.length; i++) {\r\n if (typeof binsArray[i] !== \"number\")\r\n continue;\r\n binsArrayFiltered.push(binsArray[i]);\r\n }\r\n binsArrayFiltered.sort();\r\n binsArrayFiltered.push(Infinity);\r\n\r\n const result = [];\r\n for (let j = 0; j < binsArrayFiltered.length; j++) {\r\n result[j] = [];\r\n result[j][0] = 0;\r\n for (let i = 0; i < dataArray.length; i++) {\r\n if (typeof dataArray[i] !== \"number\") {\r\n continue;\r\n }\r\n const curr = dataArray[i];\r\n if (curr <= binsArrayFiltered[j]) {\r\n result[j][0]++;\r\n dataArray[i] = null;\r\n }\r\n }\r\n }\r\n // return a 2d array\r\n return result;\r\n },\r\n\r\n GAMMA: (x) => {\r\n // David\r\n\r\n // If Number contains characters that are not valid, GAMMA returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n\r\n // If Number is a negative integer or 0, GAMMA returns the #NUM! error value.\r\n if (x === 0 || (x < 0 && x === Math.trunc(x))) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return jStat.gammafn(x);\r\n },\r\n\r\n 'GAMMA.DIST': (x, alpha, beta, cumulative) => {\r\n // David\r\n // If x, alpha, or beta is nonnumeric, GAMMA.DIST returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n beta = H.accept(beta, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n\r\n // If x < 0, GAMMA.DIST returns the #NUM! error value.\r\n // If alpha ≤ 0 or if beta ≤ 0, GAMMA.DIST returns the #NUM! error value.\r\n if (x < 0 || alpha <= 0 || beta <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return cumulative ? jStat.gamma.cdf(x, alpha, beta, true) : jStat.gamma.pdf(x, alpha, beta, false);\r\n },\r\n\r\n 'GAMMA.INV': (probability, alpha, beta) => {\r\n // David\r\n // If any argument is text, GAMMA.INV returns the #VALUE! error value.\r\n probability = H.accept(probability, Types.NUMBER);\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n beta = H.accept(beta, Types.NUMBER);\r\n\r\n // If probability < 0 or probability > 1, GAMMA.INV returns the #NUM! error value.\r\n // If alpha ≤ 0 or if beta ≤ 0, GAMMA.INV returns the #NUM! error value.\r\n if (probability < 0 || probability > 1 || alpha <= 0 || beta <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return jStat.gamma.inv(probability, alpha, beta);\r\n },\r\n\r\n GAMMALN: (x) => {\r\n // David\r\n\r\n x = H.accept(x, Types.NUMBER);\r\n // If x is nonnumeric, GAMMALN returns the #VALUE! error value.\r\n // If x ≤ 0, GAMMALN returns the #NUM! error value.\r\n if (x <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return jStat.gammaln(x);\r\n },\r\n\r\n 'GAMMALN.PRECISE': (x) => {\r\n // David\r\n // return distribution.GAMMALN(x);\r\n x = H.accept(x, Types.NUMBER);\r\n // If x is nonnumeric, GAMMALN returns the #VALUE! error value.\r\n // If x ≤ 0, GAMMALN returns the #NUM! error value.\r\n if (x <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return jStat.gammaln(x);\r\n },\r\n\r\n GAUSS: (z) => {\r\n // David\r\n // If z is not a valid number, GAUSS returns the #NUM! error value.\r\n // If z is not a valid data type, GAUSS returns the #VALUE! error value.\r\n z = H.accept(z, Types.NUMBER);\r\n\r\n return jStat.normal.cdf(z, 0, 1) - 0.5;\r\n },\r\n\r\n GEOMEAN: (...numbers) => {\r\n // David\r\n const filterArr = [];\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n if (typeof item === \"number\") {\r\n filterArr.push(item);\r\n }\r\n });\r\n return jStat.geomean(filterArr);\r\n },\r\n\r\n GROWTH: (knownY, knownX, newX, useConst) => {\r\n // Credits: Ilmari Karonen (http://stackoverflow.com/questions/14161990/how-to-implement-growth-function-in-javascript)\r\n knownY = H.accept(knownY, Types.ARRAY, undefined, true, true);\r\n for (let i = 0; i < knownY.length; i++) {\r\n if (typeof knownY[i] !== \"number\")\r\n throw FormulaError.VALUE;\r\n }\r\n\r\n knownX = H.accept(knownX, Types.ARRAY, null, true, true);\r\n const isKnownXOmitted = knownX == null;\r\n if (knownX == null) {\r\n knownX = [];\r\n for (let i = 1; i <= knownY.length; i++) {\r\n knownX.push(i);\r\n }\r\n } else {\r\n if (knownX.length !== knownY.length)\r\n throw FormulaError.REF;\r\n for (let i = 0; i < knownX.length; i++) {\r\n if (typeof knownX[i] !== \"number\")\r\n throw FormulaError.VALUE;\r\n }\r\n }\r\n\r\n newX = H.accept(newX, Types.ARRAY, null, false, true);\r\n if (newX == null && isKnownXOmitted) {\r\n newX = [];\r\n for (let i = 1; i <= knownY.length; i++) {\r\n newX.push(i);\r\n }\r\n newX = [newX];\r\n } else if (newX == null) {\r\n newX = Array.isArray(knownX[0]) ? knownX : [knownX];\r\n }\r\n useConst = H.accept(useConst, Types.BOOLEAN, true);\r\n\r\n // Calculate sums over the data:\r\n const n = knownY.length;\r\n let avg_x = 0, avg_y = 0, avg_xy = 0, avg_xx = 0;\r\n for (let i = 0; i < n; i++) {\r\n const x = knownX[i];\r\n const y = Math.log(knownY[i]);\r\n avg_x += x;\r\n avg_y += y;\r\n avg_xy += x * y;\r\n avg_xx += x * x;\r\n }\r\n avg_x /= n;\r\n avg_y /= n;\r\n avg_xy /= n;\r\n avg_xx /= n;\r\n\r\n // Compute linear regression coefficients:\r\n let beta;\r\n let alpha;\r\n if (useConst) {\r\n beta = (avg_xy - avg_x * avg_y) / (avg_xx - avg_x * avg_x);\r\n alpha = avg_y - beta * avg_x;\r\n } else {\r\n beta = avg_xy / avg_xx;\r\n alpha = 0;\r\n }\r\n\r\n // Compute and return result array:\r\n const new_y = [];\r\n for (let i = 0; i < newX.length; i++) {\r\n new_y[i] = [];\r\n for (let j = 0; j < newX[0].length; j++) {\r\n if (typeof newX[i][j] !== \"number\")\r\n throw FormulaError.VALUE;\r\n new_y[i][j] = Math.exp(alpha + beta * newX[i][j]);\r\n }\r\n }\r\n return new_y;\r\n },\r\n\r\n HARMEAN: (...numbers) => {\r\n let cnt = 0, denominator = 0;\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n if (typeof item === \"number\") {\r\n denominator += 1 / item;\r\n cnt++;\r\n }\r\n });\r\n return cnt / denominator;\r\n },\r\n\r\n 'HYPGEOM.DIST': (sample_s, number_sample, population_s, number_pop, cumulative) => {\r\n // num_successes, num_draws, successes_in_pop, pop_size\r\n // If any argument is nonnumeric, HYPGEOM.DIST returns the #VALUE! error value.\r\n sample_s = H.accept(sample_s, Types.NUMBER);\r\n number_sample = H.accept(number_sample, Types.NUMBER);\r\n population_s = H.accept(population_s, Types.NUMBER);\r\n number_pop = H.accept(number_pop, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n\r\n // All arguments are truncated to integers.\r\n sample_s = Math.trunc(sample_s);\r\n number_sample = Math.trunc(number_sample);\r\n population_s = Math.trunc(population_s);\r\n number_pop = Math.trunc(number_pop);\r\n\r\n // // If number_pop ≤ 0, HYPGEOM.DIST returns the #NUM! error value.\r\n if (number_pop <= 0 || sample_s < 0 || number_sample <= 0 || population_s <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // // If number_sample ≤ 0 or number_sample > number_population, HYPGEOM.DIST returns the #NUM! error value.\r\n if (number_sample > number_pop) {\r\n throw FormulaError.NUM;\r\n }\r\n // // If population_s ≤ 0 or population_s > number_population, HYPGEOM.DIST returns the #NUM! error value.\r\n if (population_s > number_pop) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If sample_s < 0 or sample_s is greater than the lesser of number_sample or population_s, HYPGEOM.DIST returns the #NUM! error value.\r\n // Google and Mircrosoft has different version on this funtion\r\n if (number_sample < sample_s || population_s < sample_s) {\r\n throw FormulaError.NUM;\r\n }\r\n // If sample_s is less than the larger of 0 or (number_sample - number_population + population_s), HYPGEOM.DIST returns the #NUM! error value.\r\n if (sample_s < (number_sample - number_pop + population_s)) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n function pdf(x, n, M, N) {\r\n return MathFunctions.COMBIN(M, x) * MathFunctions.COMBIN(N - M, n - x) / MathFunctions.COMBIN(N, n);\r\n }\r\n\r\n function cdf(x, n, M, N) {\r\n let result = 0;\r\n for (let i = 0; i <= x; i++) {\r\n result += pdf(i, n, M, N);\r\n }\r\n return result;\r\n }\r\n\r\n return cumulative ? cdf(sample_s, number_sample, population_s, number_pop) : pdf(sample_s, number_sample, population_s, number_pop);\r\n },\r\n\r\n INTERCEPT: (knownYs, knownXs) => {\r\n // similar to FORECAST\r\n knownYs = H.accept(knownYs, Types.ARRAY, undefined, true, true);\r\n knownXs = H.accept(knownXs, Types.ARRAY, undefined, true, true);\r\n\r\n if (knownXs.length !== knownYs.length)\r\n throw FormulaError.NA;\r\n\r\n // filter out values that are not number\r\n const filteredY = [], filteredX = [];\r\n for (let i = 0; i < knownYs.length; i++) {\r\n if (typeof knownYs[i] !== \"number\" || typeof knownXs[i] !== \"number\")\r\n continue;\r\n filteredY.push(knownYs[i]);\r\n filteredX.push(knownXs[i]);\r\n }\r\n if (filteredY.length <= 1)\r\n throw FormulaError.DIV0;\r\n const yMean = jStat.mean(filteredY);\r\n const xMean = jStat.mean(filteredX);\r\n let numerator = 0, denominator = 0;\r\n for (let i = 0; i < filteredY.length; i++) {\r\n numerator += (filteredX[i] - xMean) * (filteredY[i] - yMean);\r\n denominator += (filteredX[i] - xMean) ** 2;\r\n }\r\n const b = numerator / denominator;\r\n return yMean - b * xMean;\r\n },\r\n\r\n KURT: (...numbers) => {\r\n let mean = 0, range = [];\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n if (typeof item === \"number\") {\r\n mean += item;\r\n range.push(item);\r\n }\r\n });\r\n const n = range.length;\r\n mean /= n;\r\n let sigma = 0;\r\n for (let i = 0; i < n; i++) {\r\n sigma += Math.pow(range[i] - mean, 4);\r\n }\r\n sigma = sigma / Math.pow(jStat.stdev(range, true), 4);\r\n return ((n * (n + 1)) / ((n - 1) * (n - 2) * (n - 3))) * sigma - 3 * (n - 1) * (n - 1) / ((n - 2) * (n - 3));\r\n },\r\n\r\n LINEST: () => {\r\n\r\n },\r\n\r\n LOGEST: () => {\r\n\r\n },\r\n\r\n 'LOGNORM.DIST': (x, mean, standard_dev, cumulative) => {\r\n // if any argument is nonnumeric, LOGNORM.DIST returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n mean = H.accept(mean, Types.NUMBER);\r\n standard_dev = H.accept(standard_dev, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n // If x ≤ 0 or if standard_dev ≤ 0, LOGNORM.DIST returns the #NUM! error value.\r\n if (x <= 0 || standard_dev <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return cumulative ? jStat.lognormal.cdf(x, mean, standard_dev) : jStat.lognormal.pdf(x, mean, standard_dev);\r\n },\r\n\r\n 'LOGNORM.INV': (probability, mean, standard_dev) => {\r\n // If any argument is nonnumeric, LOGNORM.INV returns the #VALUE! error value.\r\n probability = H.accept(probability, Types.NUMBER);\r\n mean = H.accept(mean, Types.NUMBER);\r\n standard_dev = H.accept(standard_dev, Types.NUMBER);\r\n // If probability <= 0 or probability >= 1, LOGNORM.INV returns the #NUM! error value.\r\n if (probability <= 0 || probability >= 1) {\r\n throw FormulaError.NUM;\r\n }\r\n // If standard_dev <= 0, LOGNORM.INV returns the #NUM! error value.\r\n if (standard_dev <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return jStat.lognormal.inv(probability, mean, standard_dev);\r\n },\r\n\r\n 'MODE.MULT': () => {\r\n\r\n },\r\n\r\n 'MODE.SNGL': () => {\r\n\r\n },\r\n\r\n 'NEGBINOM.DIST': (number_f, number_s, probability_s, cumulative) => {\r\n // If any argument is nonnumeric, NEGBINOM.DIST returns the #VALUE! error value.\r\n number_f = H.accept(number_f, Types.NUMBER);\r\n number_s = H.accept(number_s, Types.NUMBER);\r\n probability_s = H.accept(probability_s, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n // Number_f and number_s are truncated to integers.\r\n number_f = Math.trunc(number_f);\r\n number_s = Math.trunc(number_s);\r\n\r\n // If probability_s < 0 or if probability > 1, NEGBINOM.DIST returns the #NUM! error value.\r\n if (probability_s < 0 || probability_s > 1) {\r\n throw FormulaError.NUM;\r\n }\r\n // If number_f < 0 or number_s < 1, NEGBINOM.DIST returns the #NUM! error value.\r\n if (number_f < 0 || number_s < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return cumulative ? jStat.negbin.cdf(number_f, number_s, probability_s) : jStat.negbin.pdf(number_f, number_s, probability_s);\r\n },\r\n\r\n 'NORM.DIST': (x, mean, standard_dev, cumulative) => {\r\n // If mean or standard_dev is nonnumeric, NORM.DIST returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n mean = H.accept(mean, Types.NUMBER);\r\n standard_dev = H.accept(standard_dev, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n\r\n // If standard_dev ≤ 0, NORM.DIST returns the #NUM! error value.\r\n if (standard_dev <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // If mean = 0, standard_dev = 1, and cumulative = TRUE, NORM.DIST returns the standard normal distribution, NORM.S.DIST.\r\n return cumulative ? jStat.normal.cdf(x, mean, standard_dev) : jStat.normal.pdf(x, mean, standard_dev);\r\n\r\n },\r\n\r\n 'NORM.INV': (probability, mean, standard_dev) => {\r\n // If any argument is nonnumeric, NORM.INV returns the #VALUE! error value.\r\n probability = H.accept(probability, Types.NUMBER);\r\n mean = H.accept(mean, Types.NUMBER);\r\n standard_dev = H.accept(standard_dev, Types.NUMBER);\r\n\r\n // If probability <= 0 or if probability >= 1, NORM.INV returns the #NUM! error value.\r\n if (probability <= 0 || probability >= 1) {\r\n throw FormulaError.NUM;\r\n }\r\n // If standard_dev ≤ 0, NORM.INV returns the #NUM! error value.\r\n if (standard_dev <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // If mean = 0 and standard_dev = 1, NORM.INV uses the standard normal distribution (see NORMS.INV).\r\n // if(mean === 0 && standard_dev === 1){\r\n // }\r\n\r\n return jStat.normal.inv(probability, mean, standard_dev);\r\n\r\n },\r\n\r\n 'NORM.S.DIST': (z, cumulative) => {\r\n // If z is nonnumeric, NORM.S.DIST returns the #VALUE! error value.\r\n z = H.accept(z, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n\r\n return (cumulative) ? jStat.normal.cdf(z, 0, 1) : jStat.normal.pdf(z, 0, 1);\r\n },\r\n\r\n 'NORM.S.INV': (probability) => {\r\n // If probability is nonnumeric, NORMS.INV returns the #VALUE! error value.\r\n probability = H.accept(probability, Types.NUMBER);\r\n // If probability <= 0 or if probability >= 1, NORMS.INV returns the #NUM! error value.\r\n if (probability <= 0 || probability >= 1) {\r\n throw FormulaError.NUM;\r\n }\r\n return jStat.normal.inv(probability, 0, 1);\r\n },\r\n\r\n PEARSON: () => {\r\n\r\n },\r\n\r\n 'PERCENTILE.EXC': () => {\r\n\r\n },\r\n\r\n 'PERCENTILE.INC': () => {\r\n\r\n },\r\n\r\n 'PERCENTRANK.EXC': () => {\r\n\r\n },\r\n\r\n 'PERCENTRANK.INC': () => {\r\n\r\n },\r\n\r\n PERMUTATIONA: () => {\r\n\r\n },\r\n\r\n PHI: (x) => {\r\n // If x is a numeric value that is not valid, PHI returns the #NUM! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n\r\n return Math.exp(-0.5 * x * x) / SQRT2PI;\r\n },\r\n\r\n 'POISSON.DIST': (x, mean, cumulative) => {\r\n // If x or mean is nonnumeric, POISSON.DIST returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n mean = H.accept(mean, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n // If x < 0, POISSON.DIST returns the #NUM! error value.\r\n // If mean < 0, POISSON.DIST returns the #NUM! error value.\r\n if (x < 0 || mean < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n // If x is not an integer, it is truncated.\r\n x = Math.trunc(x);\r\n\r\n return cumulative ? jStat.poisson.cdf(x, mean) : jStat.poisson.pdf(x, mean);\r\n },\r\n\r\n 'PROB': () => {\r\n\r\n },\r\n\r\n 'QUARTILE.EXC': () => {\r\n\r\n },\r\n\r\n 'QUARTILE.INC': () => {\r\n\r\n },\r\n\r\n 'RANK.AVG': () => {\r\n\r\n },\r\n\r\n 'RANK.EQ': () => {\r\n\r\n },\r\n\r\n RSQ: () => {\r\n\r\n },\r\n\r\n SKEW: () => {\r\n\r\n },\r\n\r\n 'SKEW.P': () => {\r\n\r\n },\r\n\r\n SLOPE: () => {\r\n\r\n },\r\n\r\n STANDARDIZE: (x, mean, standard_dev) => {\r\n x = H.accept(x, Types.NUMBER);\r\n mean = H.accept(mean, Types.NUMBER);\r\n standard_dev = H.accept(standard_dev, Types.NUMBER);\r\n // If standard_dev ≤ 0, STANDARDIZE returns the #NUM! error value.\r\n if (standard_dev <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return (x - mean) / standard_dev;\r\n },\r\n\r\n 'STDEV.P': () => {\r\n\r\n },\r\n\r\n 'STDEV.S': () => {\r\n\r\n },\r\n\r\n STDEVA: () => {\r\n\r\n },\r\n\r\n STDEVPA: () => {\r\n\r\n },\r\n\r\n STEYX: () => {\r\n\r\n },\r\n\r\n 'T.DIST': (x, deg_freedom, cumulative) => {\r\n // If any argument is nonnumeric, T.DIST returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n deg_freedom = H.accept(deg_freedom, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n // If deg_freedom < 1, T.DIST returns an error value. Deg_freedom needs to be at least 1.\r\n if (deg_freedom < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return cumulative ? jStat.studentt.cdf(x, deg_freedom) : jStat.studentt.pdf(x, deg_freedom);\r\n },\r\n\r\n 'T.DIST.2T': (x, deg_freedom) => {\r\n // If any argument is nonnumeric, T.DIST.2T returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n deg_freedom = H.accept(deg_freedom, Types.NUMBER);\r\n // If deg_freedom < 1, T.DIST.2T returns the #NUM! error value.\r\n // If x < 0, then T.DIST.2T returns the #NUM! error value.\r\n if (deg_freedom < 1 || x < 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return (1 - jStat.studentt.cdf(x, deg_freedom)) * 2;\r\n },\r\n\r\n 'T.DIST.RT': (x, deg_freedom) => {\r\n // If any argument is nonnumeric, T.DIST.RT returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n deg_freedom = H.accept(deg_freedom, Types.NUMBER);\r\n // If deg_freedom < 1, T.DIST.RT returns the #NUM! error value.\r\n if (deg_freedom < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return 1 - jStat.studentt.cdf(x, deg_freedom);\r\n },\r\n\r\n 'T.INV': (probability, deg_freedom) => {\r\n // If either argument is nonnumeric, T.INV returns the #VALUE! error value.\r\n probability = H.accept(probability, Types.NUMBER);\r\n deg_freedom = H.accept(deg_freedom, Types.NUMBER);\r\n // If probability <= 0 or if probability > 1, T.INV returns the #NUM! error value.\r\n // If deg_freedom < 1, T.INV returns the #NUM! error value.\r\n if (probability <= 0 || probability > 1 || deg_freedom < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n // If deg_freedom is not an integer, it is truncated.\r\n deg_freedom = deg_freedom % 1 === 0 ? deg_freedom : Math.trunc(deg_freedom);\r\n\r\n return jStat.studentt.inv(probability, deg_freedom);\r\n },\r\n\r\n 'T.INV.2T': (probability, deg_freedom) => {\r\n // If either argument is nonnumeric, T.INV.2T returns the #VALUE! error value.\r\n probability = H.accept(probability, Types.NUMBER);\r\n deg_freedom = H.accept(deg_freedom, Types.NUMBER);\r\n // If probability <= 0 or if probability > 1, T.INV.2T returns the #NUM! error value.\r\n // If deg_freedom < 1, T.INV.2T returns the #NUM! error value.\r\n if (probability <= 0 || probability > 1 || deg_freedom < 1) {\r\n throw FormulaError.NUM;\r\n }\r\n // If deg_freedom is not an integer, it is truncated.\r\n deg_freedom = deg_freedom % 1 === 0 ? deg_freedom : Math.trunc(deg_freedom);\r\n\r\n return Math.abs(jStat.studentt.inv(probability / 2, deg_freedom));\r\n\r\n },\r\n\r\n 'T.TEST': () => {\r\n\r\n },\r\n\r\n TREND: () => {\r\n\r\n },\r\n\r\n TRIMMEAN: () => {\r\n\r\n },\r\n\r\n 'VAR.P': () => {\r\n\r\n },\r\n\r\n 'VAR.S': () => {\r\n\r\n },\r\n\r\n 'VARA': () => {\r\n\r\n },\r\n\r\n 'VARPA': () => {\r\n\r\n },\r\n\r\n 'WEIBULL.DIST': (x, alpha, beta, cumulative) => {\r\n // If x, alpha, or beta is nonnumeric, WEIBULL.DIST returns the #VALUE! error value.\r\n x = H.accept(x, Types.NUMBER);\r\n alpha = H.accept(alpha, Types.NUMBER);\r\n beta = H.accept(beta, Types.NUMBER);\r\n cumulative = H.accept(cumulative, Types.BOOLEAN);\r\n // If x < 0, WEIBULL.DIST returns the #NUM! error value.\r\n // If alpha ≤ 0 or if beta ≤ 0, WEIBULL.DIST returns the #NUM! error value.\r\n if (x < 0 || alpha <= 0 || beta <= 0) {\r\n throw FormulaError.NUM;\r\n }\r\n\r\n return cumulative\r\n ? 1 - Math.exp(-Math.pow(x / beta, alpha))\r\n : Math.pow(x, alpha - 1) * Math.exp(-Math.pow(x / beta, alpha)) * alpha / Math.pow(beta, alpha);\r\n },\r\n\r\n 'Z.TEST': () => {\r\n\r\n }\r\n};\r\n\r\n\r\nmodule.exports = {\r\n DistributionFunctions,\r\n};\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types, Criteria, Address} = require('../helpers');\r\nconst {Infix} = require('../operators');\r\nconst H = FormulaHelpers;\r\nconst {DistributionFunctions} = require('./distribution');\r\n\r\nconst StatisticalFunctions = {\r\n AVEDEV: (...numbers) => {\r\n let sum = 0;\r\n const arr = [];\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n if (typeof item === \"number\") {\r\n sum += item;\r\n arr.push(item);\r\n }\r\n });\r\n const avg = sum / arr.length;\r\n sum = 0;\r\n for (let i = 0; i < arr.length; i++) {\r\n sum += Math.abs(arr[i] - avg);\r\n }\r\n return sum / arr.length;\r\n },\r\n\r\n AVERAGE: (...numbers) => {\r\n let sum = 0, cnt = 0;\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n if (typeof item === \"number\") {\r\n sum += item;\r\n cnt++;\r\n }\r\n });\r\n return sum / cnt;\r\n },\r\n\r\n AVERAGEA: (...numbers) => {\r\n let sum = 0, cnt = 0;\r\n // parse number only if the input is literal\r\n H.flattenParams(numbers, Types.NUMBER, true, (item, info) => {\r\n const type = typeof item;\r\n if (type === \"number\") {\r\n sum += item;\r\n cnt++;\r\n } else if (type === \"string\") {\r\n cnt++;\r\n }\r\n });\r\n return sum / cnt;\r\n },\r\n\r\n // special\r\n AVERAGEIF: (context, range, criteria, averageRange) => {\r\n const ranges = H.retrieveRanges(context, range, averageRange);\r\n range = ranges[0];\r\n averageRange = ranges[1];\r\n\r\n criteria = H.retrieveArg(context, criteria);\r\n const isCriteriaArray = criteria.isArray;\r\n criteria = Criteria.parse(H.accept(criteria));\r\n\r\n let sum = 0, cnt = 0;\r\n range.forEach((row, rowNum) => {\r\n row.forEach((value, colNum) => {\r\n const valueToAdd = averageRange[rowNum][colNum];\r\n if (typeof valueToAdd !== \"number\")\r\n return;\r\n // wildcard\r\n if (criteria.op === 'wc') {\r\n if (criteria.match === criteria.value.test(value)) {\r\n sum += valueToAdd;\r\n cnt++;\r\n }\r\n } else if (Infix.compareOp(value, criteria.op, criteria.value, Array.isArray(value), isCriteriaArray)) {\r\n sum += valueToAdd;\r\n cnt++;\r\n }\r\n })\r\n });\r\n if (cnt === 0) throw FormulaError.DIV0;\r\n return sum / cnt;\r\n },\r\n\r\n AVERAGEIFS: () => {\r\n\r\n },\r\n\r\n COUNT: (...ranges) => {\r\n let cnt = 0;\r\n H.flattenParams(ranges, null, true,\r\n (item, info) => {\r\n // literal will be parsed to Type.NUMBER\r\n if (info.isLiteral && !isNaN(item)) {\r\n cnt++;\r\n } else {\r\n if (typeof item === \"number\")\r\n cnt++;\r\n }\r\n });\r\n return cnt;\r\n },\r\n\r\n COUNTIF: (range, criteria) => {\r\n // do not flatten the array\r\n range = H.accept(range, Types.ARRAY, undefined, false, true);\r\n const isCriteriaArray = criteria.isArray;\r\n criteria = H.accept(criteria);\r\n\r\n let cnt = 0;\r\n // parse criteria\r\n criteria = Criteria.parse(criteria);\r\n\r\n range.forEach(row => {\r\n row.forEach(value => {\r\n // wildcard\r\n if (criteria.op === 'wc') {\r\n if (criteria.match === criteria.value.test(value))\r\n cnt++;\r\n } else if (Infix.compareOp(value, criteria.op, criteria.value, Array.isArray(value), isCriteriaArray)) {\r\n cnt++;\r\n }\r\n })\r\n });\r\n return cnt;\r\n },\r\n\r\n LARGE: () => {\r\n\r\n },\r\n\r\n MAX: () => {\r\n\r\n },\r\n\r\n MAXA: () => {\r\n\r\n },\r\n\r\n MAXIFS: () => {\r\n\r\n },\r\n\r\n MEDIAN: () => {\r\n\r\n },\r\n\r\n MIN: () => {\r\n\r\n },\r\n\r\n MINA: () => {\r\n\r\n },\r\n\r\n MINIFS: () => {\r\n\r\n },\r\n\r\n PERMUT: () => {\r\n\r\n },\r\n\r\n PERMUTATIONA: () => {\r\n\r\n },\r\n\r\n SMALL: () => {\r\n\r\n },\r\n\r\n};\r\n\r\n\r\nmodule.exports = Object.assign(StatisticalFunctions, DistributionFunctions);\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types} = require('../helpers');\r\nconst H = FormulaHelpers;\r\n\r\nconst MS_PER_DAY = 1000 * 60 * 60 * 24;\r\nconst d1900 = new Date(Date.UTC(1900, 0, 1));\r\nconst WEEK_STARTS = [\r\n undefined, 0, 1, undefined, undefined, undefined, undefined, undefined, undefined,\r\n undefined, undefined, undefined, 1, 2, 3, 4, 5, 6, 0];\r\nconst WEEK_TYPES = [\r\n undefined,\r\n [1, 2, 3, 4, 5, 6, 7],\r\n [7, 1, 2, 3, 4, 5, 6],\r\n [6, 0, 1, 2, 3, 4, 5],\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n [7, 1, 2, 3, 4, 5, 6],\r\n [6, 7, 1, 2, 3, 4, 5],\r\n [5, 6, 7, 1, 2, 3, 4],\r\n [4, 5, 6, 7, 1, 2, 3],\r\n [3, 4, 5, 6, 7, 1, 2],\r\n [2, 3, 4, 5, 6, 7, 1],\r\n [1, 2, 3, 4, 5, 6, 7]\r\n];\r\nconst WEEKEND_TYPES = [\r\n undefined,\r\n [6, 0],\r\n [0, 1],\r\n [1, 2],\r\n [2, 3],\r\n [3, 4],\r\n [4, 5],\r\n [5, 6],\r\n undefined,\r\n undefined,\r\n undefined,\r\n [0],\r\n [1],\r\n [2],\r\n [3],\r\n [4],\r\n [5],\r\n [6]\r\n];\r\n\r\n// Formats: h:mm:ss A, h:mm A, H:mm, H:mm:ss, H A\r\nconst timeRegex = /^\\s*(\\d\\d?)\\s*(:\\s*\\d\\d?)?\\s*(:\\s*\\d\\d?)?\\s*(pm|am)?\\s*$/i;\r\n// 12-3, 12/3\r\nconst dateRegex1 = /^\\s*((\\d\\d?)\\s*([-\\/])\\s*(\\d\\d?))([\\d:.apm\\s]*)$/i;\r\n// 3-Dec, 3/Dec\r\nconst dateRegex2 = /^\\s*((\\d\\d?)\\s*([-/])\\s*(jan\\w*|feb\\w*|mar\\w*|apr\\w*|may\\w*|jun\\w*|jul\\w*|aug\\w*|sep\\w*|oct\\w*|nov\\w*|dec\\w*))([\\d:.apm\\s]*)$/i;\r\n// Dec-3, Dec/3\r\nconst dateRegex3 = /^\\s*((jan\\w*|feb\\w*|mar\\w*|apr\\w*|may\\w*|jun\\w*|jul\\w*|aug\\w*|sep\\w*|oct\\w*|nov\\w*|dec\\w*)\\s*([-/])\\s*(\\d\\d?))([\\d:.apm\\s]*)$/i;\r\n\r\nfunction parseSimplifiedDate(text) {\r\n const fmt1 = text.match(dateRegex1);\r\n const fmt2 = text.match(dateRegex2);\r\n const fmt3 = text.match(dateRegex3);\r\n if (fmt1) {\r\n text = fmt1[1] + fmt1[3] + new Date().getFullYear() + fmt1[5];\r\n } else if (fmt2) {\r\n text = fmt2[1] + fmt2[3] + new Date().getFullYear() + fmt2[5];\r\n } else if (fmt3) {\r\n text = fmt3[1] + fmt3[3] + new Date().getFullYear() + fmt3[5];\r\n }\r\n return new Date(Date.parse(`${text} UTC`));\r\n}\r\n\r\n/**\r\n * Parse time string to date in UTC.\r\n * @param {string} text\r\n */\r\nfunction parseTime(text) {\r\n const res = text.match(timeRegex);\r\n if (!res) return;\r\n\r\n //  [\"4:50:55 pm\", \"4\", \":50\", \":55\", \"pm\", ...]\r\n const minutes = res[2] ? res[2] : ':00';\r\n const seconds = res[3] ? res[3] : ':00';\r\n const ampm = res[4] ? ' ' + res[4] : '';\r\n\r\n const date = new Date(Date.parse(`1/1/1900 ${res[1] + minutes + seconds + ampm} UTC`));\r\n let now = new Date();\r\n now = new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(),\r\n now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds()));\r\n\r\n return new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(),\r\n date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds()));\r\n}\r\n\r\n/**\r\n * Parse a UTC date to excel serial number.\r\n * @param {Date|number} date - A UTC date.\r\n * @returns {number}\r\n */\r\nfunction toSerial(date) {\r\n const addOn = (date > -2203891200000) ? 2 : 1;\r\n return Math.floor((date - d1900) / 86400000) + addOn;\r\n}\r\n\r\n/**\r\n * Parse an excel serial number to UTC date.\r\n * @param serial\r\n * @returns {Date}\r\n */\r\nfunction toDate(serial) {\r\n if (serial < 0) {\r\n throw FormulaError.VALUE;\r\n }\r\n if (serial <= 60) {\r\n return new Date(d1900.getTime() + (serial - 1) * 86400000);\r\n }\r\n return new Date(d1900.getTime() + (serial - 2) * 86400000);\r\n}\r\n\r\nfunction parseDateWithExtra(serialOrString) {\r\n if (serialOrString instanceof Date) return {date: serialOrString};\r\n serialOrString = H.accept(serialOrString);\r\n let isDateGiven = true, date;\r\n if (!isNaN(serialOrString)) {\r\n serialOrString = Number(serialOrString);\r\n date = toDate(serialOrString);\r\n } else {\r\n // support time without date\r\n date = parseTime(serialOrString);\r\n\r\n if (!date) {\r\n date = parseSimplifiedDate(serialOrString);\r\n } else {\r\n isDateGiven = false;\r\n }\r\n }\r\n return {date, isDateGiven};\r\n}\r\n\r\nfunction parseDate(serialOrString) {\r\n return parseDateWithExtra(serialOrString).date;\r\n}\r\n\r\nfunction compareDateIgnoreTime(date1, date2) {\r\n return date1.getUTCFullYear() === date2.getUTCFullYear() &&\r\n date1.getUTCMonth() === date2.getUTCMonth() &&\r\n date1.getUTCDate() === date2.getUTCDate();\r\n}\r\n\r\nfunction isLeapYear(year) {\r\n if (year === 1900) {\r\n return true;\r\n }\r\n return new Date(year, 1, 29).getMonth() === 1;\r\n}\r\n\r\nconst DateFunctions = {\r\n DATE: (year, month, day) => {\r\n year = H.accept(year, Types.NUMBER);\r\n month = H.accept(month, Types.NUMBER);\r\n day = H.accept(day, Types.NUMBER);\r\n if (year < 0 || year >= 10000)\r\n throw FormulaError.NUM;\r\n\r\n // If year is between 0 (zero) and 1899 (inclusive), Excel adds that value to 1900 to calculate the year.\r\n if (year < 1900) {\r\n year += 1900;\r\n }\r\n\r\n return toSerial(Date.UTC(year, month - 1, day));\r\n },\r\n\r\n DATEDIF: (startDate, endDate, unit) => {\r\n startDate = parseDate(startDate);\r\n endDate = parseDate(endDate);\r\n unit = H.accept(unit, Types.STRING).toLowerCase();\r\n\r\n if (startDate > endDate)\r\n throw FormulaError.NUM;\r\n const yearDiff = endDate.getUTCFullYear() - startDate.getUTCFullYear();\r\n const monthDiff = endDate.getUTCMonth() - startDate.getUTCMonth();\r\n const dayDiff = endDate.getUTCDate() - startDate.getUTCDate();\r\n let offset;\r\n switch (unit) {\r\n case 'y':\r\n offset = monthDiff < 0 || monthDiff === 0 && dayDiff < 0 ? -1 : 0;\r\n return offset + yearDiff;\r\n case 'm':\r\n offset = dayDiff < 0 ? -1 : 0;\r\n return yearDiff * 12 + monthDiff + offset;\r\n case 'd':\r\n return Math.floor(endDate - startDate) / MS_PER_DAY;\r\n case 'md':\r\n // The months and years of the dates are ignored.\r\n startDate.setUTCFullYear(endDate.getUTCFullYear());\r\n if (dayDiff < 0) {\r\n startDate.setUTCMonth(endDate.getUTCMonth() - 1)\r\n } else {\r\n startDate.setUTCMonth(endDate.getUTCMonth())\r\n }\r\n return Math.floor(endDate - startDate) / MS_PER_DAY;\r\n case 'ym':\r\n // The days and years of the dates are ignored\r\n offset = dayDiff < 0 ? -1 : 0;\r\n return (offset + yearDiff * 12 + monthDiff) % 12;\r\n case 'yd':\r\n // The years of the dates are ignored.\r\n if (monthDiff < 0 || monthDiff === 0 && dayDiff < 0) {\r\n startDate.setUTCFullYear(endDate.getUTCFullYear() - 1);\r\n } else {\r\n startDate.setUTCFullYear(endDate.getUTCFullYear());\r\n }\r\n return Math.floor(endDate - startDate) / MS_PER_DAY;\r\n\r\n }\r\n },\r\n\r\n /**\r\n * Limitation: Year must be four digit, only support ISO 8016 date format.\r\n * Does not support date without year, i.e. \"5-JUL\".\r\n * @param {string} dateText\r\n */\r\n DATEVALUE: (dateText) => {\r\n dateText = H.accept(dateText, Types.STRING);\r\n const {date, isDateGiven} = parseDateWithExtra(dateText);\r\n if (!isDateGiven) return 0;\r\n const serial = toSerial(date);\r\n if (serial < 0 || serial > 2958465)\r\n throw FormulaError.VALUE;\r\n return serial;\r\n },\r\n\r\n DAY: serialOrString => {\r\n const date = parseDate(serialOrString);\r\n return date.getUTCDate();\r\n },\r\n\r\n DAYS: (endDate, startDate) => {\r\n endDate = parseDate(endDate);\r\n startDate = parseDate(startDate);\r\n let offset = 0;\r\n if (startDate < -2203891200000 && -2203891200000 < endDate) {\r\n offset = 1;\r\n }\r\n return Math.floor(endDate - startDate) / MS_PER_DAY + offset;\r\n },\r\n\r\n DAYS360: (startDate, endDate, method) => {\r\n startDate = parseDate(startDate);\r\n endDate = parseDate(endDate);\r\n // default is US method\r\n method = H.accept(method, Types.BOOLEAN, false);\r\n\r\n if (startDate.getUTCDate() === 31) {\r\n startDate.setUTCDate(30);\r\n }\r\n if (!method && startDate.getUTCDate() < 30 && endDate.getUTCDate() > 30) {\r\n endDate.setUTCMonth(endDate.getUTCMonth() + 1, 1);\r\n } else {\r\n // European method\r\n if (endDate.getUTCDate() === 31) {\r\n endDate.setUTCDate(30);\r\n }\r\n }\r\n\r\n const yearDiff = endDate.getUTCFullYear() - startDate.getUTCFullYear();\r\n const monthDiff = endDate.getUTCMonth() - startDate.getUTCMonth();\r\n const dayDiff = endDate.getUTCDate() - startDate.getUTCDate();\r\n\r\n return (monthDiff) * 30 + dayDiff + yearDiff * 12 * 30;\r\n },\r\n\r\n EDATE: (startDate, months) => {\r\n startDate = parseDate(startDate);\r\n months = H.accept(months, Types.NUMBER);\r\n startDate.setUTCMonth(startDate.getUTCMonth() + months);\r\n return toSerial(startDate);\r\n },\r\n\r\n EOMONTH: (startDate, months) => {\r\n startDate = parseDate(startDate);\r\n months = H.accept(months, Types.NUMBER);\r\n startDate.setUTCMonth(startDate.getUTCMonth() + months + 1, 0);\r\n return toSerial(startDate);\r\n },\r\n\r\n HOUR: serialOrString => {\r\n const date = parseDate(serialOrString);\r\n return date.getUTCHours();\r\n },\r\n\r\n ISOWEEKNUM: (serialOrString) => {\r\n const date = parseDate(serialOrString);\r\n\r\n // https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php\r\n const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\r\n const dayNum = d.getUTCDay();\r\n d.setUTCDate(d.getUTCDate() + 4 - dayNum);\r\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n return Math.ceil((((d - yearStart) / 86400000) + 1) / 7)\r\n },\r\n\r\n MINUTE: serialOrString => {\r\n const date = parseDate(serialOrString);\r\n return date.getUTCMinutes();\r\n },\r\n\r\n MONTH: serialOrString => {\r\n const date = parseDate(serialOrString);\r\n return date.getUTCMonth() + 1;\r\n },\r\n\r\n NETWORKDAYS: (startDate, endDate, holidays) => {\r\n startDate = parseDate(startDate);\r\n endDate = parseDate(endDate);\r\n let sign = 1;\r\n if (startDate > endDate) {\r\n sign = -1;\r\n const temp = startDate;\r\n startDate = endDate;\r\n endDate = temp;\r\n }\r\n const holidaysArr = [];\r\n if (holidays != null) {\r\n H.flattenParams([holidays], Types.NUMBER, false, item => {\r\n holidaysArr.push(parseDate(item));\r\n });\r\n }\r\n let numWorkDays = 0;\r\n while (startDate <= endDate) {\r\n // Skips Sunday and Saturday\r\n if (startDate.getUTCDay() !== 0 && startDate.getUTCDay() !== 6) {\r\n let found = false;\r\n for (let i = 0; i < holidaysArr.length; i++) {\r\n if (compareDateIgnoreTime(startDate, holidaysArr[i])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) numWorkDays++;\r\n }\r\n startDate.setUTCDate(startDate.getUTCDate() + 1);\r\n }\r\n return sign * numWorkDays;\r\n\r\n },\r\n\r\n 'NETWORKDAYS.INTL': (startDate, endDate, weekend, holidays) => {\r\n startDate = parseDate(startDate);\r\n endDate = parseDate(endDate);\r\n let sign = 1;\r\n if (startDate > endDate) {\r\n sign = -1;\r\n const temp = startDate;\r\n startDate = endDate;\r\n endDate = temp;\r\n }\r\n weekend = H.accept(weekend, null, 1);\r\n // Using 1111111 will always return 0.\r\n if (weekend === '1111111')\r\n return 0;\r\n\r\n // using weekend string, i.e, 0000011\r\n if (typeof weekend === \"string\" && Number(weekend).toString() !== weekend) {\r\n if (weekend.length !== 7) throw FormulaError.VALUE;\r\n weekend = weekend.charAt(6) + weekend.slice(0, 6);\r\n const weekendArr = [];\r\n for (let i = 0; i < weekend.length; i++) {\r\n if (weekend.charAt(i) === '1')\r\n weekendArr.push(i);\r\n }\r\n weekend = weekendArr;\r\n } else {\r\n // using weekend number\r\n if (typeof weekend !== \"number\")\r\n throw FormulaError.VALUE;\r\n weekend = WEEKEND_TYPES[weekend];\r\n }\r\n\r\n const holidaysArr = [];\r\n if (holidays != null) {\r\n H.flattenParams([holidays], Types.NUMBER, false, item => {\r\n holidaysArr.push(parseDate(item));\r\n });\r\n }\r\n let numWorkDays = 0;\r\n while (startDate <= endDate) {\r\n let skip = false;\r\n for (let i = 0; i < weekend.length; i++) {\r\n if (weekend[i] === startDate.getUTCDay()) {\r\n skip = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!skip) {\r\n let found = false;\r\n for (let i = 0; i < holidaysArr.length; i++) {\r\n if (compareDateIgnoreTime(startDate, holidaysArr[i])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) numWorkDays++;\r\n }\r\n startDate.setUTCDate(startDate.getUTCDate() + 1);\r\n }\r\n return sign * numWorkDays;\r\n\r\n },\r\n\r\n NOW: () => {\r\n const now = new Date();\r\n return toSerial(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate(),\r\n now.getHours(), now.getMinutes(), now.getSeconds(), now.getMilliseconds()))\r\n + (3600 * now.getHours() + 60 * now.getMinutes() + now.getSeconds()) / 86400;\r\n },\r\n\r\n SECOND: (serialOrString) => {\r\n const date = parseDate(serialOrString);\r\n return date.getUTCSeconds();\r\n },\r\n\r\n TIME: (hour, minute, second) => {\r\n hour = H.accept(hour, Types.NUMBER);\r\n minute = H.accept(minute, Types.NUMBER);\r\n second = H.accept(second, Types.NUMBER);\r\n\r\n if (hour < 0 || hour > 32767 || minute < 0 || minute > 32767 || second < 0 || second > 32767)\r\n throw FormulaError.NUM;\r\n return (3600 * hour + 60 * minute + second) / 86400;\r\n },\r\n\r\n TIMEVALUE: (timeText) => {\r\n timeText = parseDate(timeText);\r\n return (3600 * timeText.getUTCHours() + 60 * timeText.getUTCMinutes() + timeText.getUTCSeconds()) / 86400;\r\n },\r\n\r\n TODAY: () => {\r\n const now = new Date();\r\n return toSerial(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));\r\n },\r\n\r\n WEEKDAY: (serialOrString, returnType) => {\r\n const date = parseDate(serialOrString);\r\n returnType = H.accept(returnType, Types.NUMBER, 1);\r\n\r\n const day = date.getUTCDay();\r\n const weekTypes = WEEK_TYPES[returnType];\r\n if (!weekTypes)\r\n throw FormulaError.NUM;\r\n return weekTypes[day];\r\n\r\n },\r\n\r\n WEEKNUM: (serialOrString, returnType) => {\r\n const date = parseDate(serialOrString);\r\n returnType = H.accept(returnType, Types.NUMBER, 1);\r\n if (returnType === 21) {\r\n return DateFunctions.ISOWEEKNUM(serialOrString);\r\n }\r\n const weekStart = WEEK_STARTS[returnType];\r\n const yearStart = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));\r\n const offset = yearStart.getUTCDay() < weekStart ? 1 : 0;\r\n return Math.ceil((((date - yearStart) / 86400000) + 1) / 7) + offset;\r\n },\r\n\r\n WORKDAY: (startDate, days, holidays) => {\r\n return DateFunctions[\"WORKDAY.INTL\"](startDate, days, 1, holidays);\r\n },\r\n\r\n 'WORKDAY.INTL': (startDate, days, weekend, holidays) => {\r\n startDate = parseDate(startDate);\r\n days = H.accept(days, Types.NUMBER);\r\n\r\n weekend = H.accept(weekend, null, 1);\r\n // Using 1111111 will always return value error.\r\n if (weekend === '1111111')\r\n throw FormulaError.VALUE;\r\n\r\n // using weekend string, i.e, 0000011\r\n if (typeof weekend === \"string\" && Number(weekend).toString() !== weekend) {\r\n if (weekend.length !== 7)\r\n throw FormulaError.VALUE;\r\n weekend = weekend.charAt(6) + weekend.slice(0, 6);\r\n const weekendArr = [];\r\n for (let i = 0; i < weekend.length; i++) {\r\n if (weekend.charAt(i) === '1')\r\n weekendArr.push(i);\r\n }\r\n weekend = weekendArr;\r\n } else {\r\n // using weekend number\r\n if (typeof weekend !== \"number\")\r\n throw FormulaError.VALUE;\r\n weekend = WEEKEND_TYPES[weekend];\r\n if (weekend == null)\r\n throw FormulaError.NUM;\r\n }\r\n\r\n const holidaysArr = [];\r\n if (holidays != null) {\r\n H.flattenParams([holidays], Types.NUMBER, false, item => {\r\n holidaysArr.push(parseDate(item));\r\n });\r\n }\r\n startDate.setUTCDate(startDate.getUTCDate() + 1);\r\n let cnt = 0;\r\n while (cnt < days) {\r\n let skip = false;\r\n for (let i = 0; i < weekend.length; i++) {\r\n if (weekend[i] === startDate.getUTCDay()) {\r\n skip = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!skip) {\r\n let found = false;\r\n for (let i = 0; i < holidaysArr.length; i++) {\r\n if (compareDateIgnoreTime(startDate, holidaysArr[i])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) cnt++;\r\n }\r\n startDate.setUTCDate(startDate.getUTCDate() + 1);\r\n }\r\n return toSerial(startDate) - 1;\r\n },\r\n\r\n YEAR: (serialOrString) => {\r\n const date = parseDate(serialOrString);\r\n return date.getUTCFullYear();\r\n },\r\n\r\n // Warning: may have bugs\r\n YEARFRAC: (startDate, endDate, basis) => {\r\n startDate = parseDate(startDate);\r\n endDate = parseDate(endDate);\r\n if (startDate > endDate) {\r\n const temp = startDate;\r\n startDate = endDate;\r\n endDate = temp;\r\n }\r\n basis = H.accept(basis, Types.NUMBER, 0);\r\n basis = Math.trunc(basis);\r\n\r\n if (basis < 0 || basis > 4)\r\n throw FormulaError.VALUE;\r\n\r\n // https://github.com/LesterLyu/formula.js/blob/develop/lib/date-time.js#L508\r\n let sd = startDate.getUTCDate();\r\n const sm = startDate.getUTCMonth() + 1;\r\n const sy = startDate.getUTCFullYear();\r\n let ed = endDate.getUTCDate();\r\n const em = endDate.getUTCMonth() + 1;\r\n const ey = endDate.getUTCFullYear();\r\n\r\n switch (basis) {\r\n case 0:\r\n // US (NASD) 30/360\r\n if (sd === 31 && ed === 31) {\r\n sd = 30;\r\n ed = 30;\r\n } else if (sd === 31) {\r\n sd = 30;\r\n } else if (sd === 30 && ed === 31) {\r\n ed = 30;\r\n }\r\n return Math.abs((ed + em * 30 + ey * 360) - (sd + sm * 30 + sy * 360)) / 360;\r\n case 1:\r\n // Actual/actual\r\n if (ey - sy < 2) {\r\n const yLength = isLeapYear(sy) && sy !== 1900 ? 366 : 365;\r\n const days = DateFunctions.DAYS(endDate, startDate);\r\n return days / yLength;\r\n } else {\r\n const years = (ey - sy) + 1;\r\n const days = (new Date(ey + 1, 0, 1) - new Date(sy, 0, 1)) / 1000 / 60 / 60 / 24;\r\n const average = days / years;\r\n return DateFunctions.DAYS(endDate, startDate) / average;\r\n }\r\n case 2:\r\n // Actual/360\r\n return Math.abs(DateFunctions.DAYS(endDate, startDate) / 360);\r\n case 3:\r\n // Actual/365\r\n return Math.abs(DateFunctions.DAYS(endDate, startDate) / 365);\r\n case 4:\r\n // European 30/360\r\n return Math.abs((ed + em * 30 + ey * 360) - (sd + sm * 30 + sy * 360)) / 360;\r\n }\r\n },\r\n};\r\n\r\nmodule.exports = DateFunctions;\r\n","const FormulaError = require('../error');\r\nconst {FormulaHelpers, Types} = require('../helpers');\r\nconst H = FormulaHelpers;\r\n\r\nconst WebFunctions = {\r\n ENCODEURL: text => {\r\n return encodeURIComponent(H.accept(text, Types.STRING));\r\n },\r\n\r\n FILTERXML: () => {\r\n // Not implemented due to extra dependency\r\n },\r\n\r\n WEBSERVICE: (context, url) => {\r\n throw FormulaError.ERROR('WEBSERVICE is not supported in sync mode.');\r\n if (typeof fetch === \"function\") {\r\n url = H.accept(url, Types.STRING);\r\n return fetch(url).then(res => res.text());\r\n } else {\r\n // Not implemented for Node.js due to extra dependency\r\n // Sample code for Node.js\r\n // const fetch = require('node-fetch');\r\n // url = H.accept(url, Types.STRING);\r\n // return fetch(url).then(res => res.text());\r\n throw FormulaError.ERROR('WEBSERVICE only available to browser with fetch.' +\r\n 'If you want to use WEBSERVICE in Node.js, please override this function: \\n' +\r\n 'new FormulaParser({\\n' +\r\n ' functionsNeedContext: {\\n' +\r\n ' WEBSERVICE: (context, url) => {...}}\\n' +\r\n '})');\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = WebFunctions;\r\n","// needs a separate module as this is required inside chevrotain productive code\n// and also in the entry point for webpack(api.ts).\n// A separate file avoids cyclic dependencies and webpack errors.\nexport var VERSION = \"7.1.2\";\n//# sourceMappingURL=version.js.map","/*\n Utils using lodash style API. (not necessarily 100% compliant) for functional and other utils.\n These utils should replace usage of lodash in the production code base. not because they are any better...\n but for the purpose of being a dependency free library.\n\n The hotspots in the code are already written in imperative style for performance reasons.\n so writing several dozen utils which may be slower than the original lodash, does not matter as much\n considering they will not be invoked in hotspots...\n */\nexport function isEmpty(arr) {\n return arr && arr.length === 0;\n}\nexport function keys(obj) {\n if (obj === undefined || obj === null) {\n return [];\n }\n return Object.keys(obj);\n}\nexport function values(obj) {\n var vals = [];\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n vals.push(obj[keys[i]]);\n }\n return vals;\n}\nexport function mapValues(obj, callback) {\n var result = [];\n var objKeys = keys(obj);\n for (var idx = 0; idx < objKeys.length; idx++) {\n var currKey = objKeys[idx];\n result.push(callback.call(null, obj[currKey], currKey));\n }\n return result;\n}\nexport function map(arr, callback) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(callback.call(null, arr[idx], idx));\n }\n return result;\n}\nexport function flatten(arr) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n var currItem = arr[idx];\n if (Array.isArray(currItem)) {\n result = result.concat(flatten(currItem));\n }\n else {\n result.push(currItem);\n }\n }\n return result;\n}\nexport function first(arr) {\n return isEmpty(arr) ? undefined : arr[0];\n}\nexport function last(arr) {\n var len = arr && arr.length;\n return len ? arr[len - 1] : undefined;\n}\nexport function forEach(collection, iteratorCallback) {\n /* istanbul ignore else */\n if (Array.isArray(collection)) {\n for (var i = 0; i < collection.length; i++) {\n iteratorCallback.call(null, collection[i], i);\n }\n }\n else if (isObject(collection)) {\n var colKeys = keys(collection);\n for (var i = 0; i < colKeys.length; i++) {\n var key = colKeys[i];\n var value = collection[key];\n iteratorCallback.call(null, value, key);\n }\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function isString(item) {\n return typeof item === \"string\";\n}\nexport function isUndefined(item) {\n return item === undefined;\n}\nexport function isFunction(item) {\n return item instanceof Function;\n}\nexport function drop(arr, howMuch) {\n if (howMuch === void 0) { howMuch = 1; }\n return arr.slice(howMuch, arr.length);\n}\nexport function dropRight(arr, howMuch) {\n if (howMuch === void 0) { howMuch = 1; }\n return arr.slice(0, arr.length - howMuch);\n}\nexport function filter(arr, predicate) {\n var result = [];\n if (Array.isArray(arr)) {\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (predicate.call(null, item)) {\n result.push(item);\n }\n }\n }\n return result;\n}\nexport function reject(arr, predicate) {\n return filter(arr, function (item) { return !predicate(item); });\n}\nexport function pick(obj, predicate) {\n var keys = Object.keys(obj);\n var result = {};\n for (var i = 0; i < keys.length; i++) {\n var currKey = keys[i];\n var currItem = obj[currKey];\n if (predicate(currItem)) {\n result[currKey] = currItem;\n }\n }\n return result;\n}\nexport function has(obj, prop) {\n if (isObject(obj)) {\n return obj.hasOwnProperty(prop);\n }\n return false;\n}\nexport function contains(arr, item) {\n return find(arr, function (currItem) { return currItem === item; }) !== undefined ? true : false;\n}\n/**\n * shallow clone\n */\nexport function cloneArr(arr) {\n var newArr = [];\n for (var i = 0; i < arr.length; i++) {\n newArr.push(arr[i]);\n }\n return newArr;\n}\n/**\n * shallow clone\n */\nexport function cloneObj(obj) {\n var clonedObj = {};\n for (var key in obj) {\n /* istanbul ignore else */\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clonedObj[key] = obj[key];\n }\n }\n return clonedObj;\n}\nexport function find(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (predicate.call(null, item)) {\n return item;\n }\n }\n return undefined;\n}\nexport function findAll(arr, predicate) {\n var found = [];\n for (var i = 0; i < arr.length; i++) {\n var item = arr[i];\n if (predicate.call(null, item)) {\n found.push(item);\n }\n }\n return found;\n}\nexport function reduce(arrOrObj, iterator, initial) {\n var isArr = Array.isArray(arrOrObj);\n var vals = isArr ? arrOrObj : values(arrOrObj);\n var objKeys = isArr ? [] : keys(arrOrObj);\n var accumulator = initial;\n for (var i = 0; i < vals.length; i++) {\n accumulator = iterator.call(null, accumulator, vals[i], isArr ? i : objKeys[i]);\n }\n return accumulator;\n}\nexport function compact(arr) {\n return reject(arr, function (item) { return item === null || item === undefined; });\n}\nexport function uniq(arr, identity) {\n if (identity === void 0) { identity = function (item) { return item; }; }\n var identities = [];\n return reduce(arr, function (result, currItem) {\n var currIdentity = identity(currItem);\n if (contains(identities, currIdentity)) {\n return result;\n }\n else {\n identities.push(currIdentity);\n return result.concat(currItem);\n }\n }, []);\n}\nexport function partial(func) {\n var restArgs = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n restArgs[_i - 1] = arguments[_i];\n }\n var firstArg = [null];\n var allArgs = firstArg.concat(restArgs);\n return Function.bind.apply(func, allArgs);\n}\nexport function isArray(obj) {\n return Array.isArray(obj);\n}\nexport function isRegExp(obj) {\n return obj instanceof RegExp;\n}\nexport function isObject(obj) {\n return obj instanceof Object;\n}\nexport function every(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n if (!predicate(arr[i], i)) {\n return false;\n }\n }\n return true;\n}\nexport function difference(arr, values) {\n return reject(arr, function (item) { return contains(values, item); });\n}\nexport function some(arr, predicate) {\n for (var i = 0; i < arr.length; i++) {\n if (predicate(arr[i])) {\n return true;\n }\n }\n return false;\n}\nexport function indexOf(arr, value) {\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === value) {\n return i;\n }\n }\n return -1;\n}\nexport function sortBy(arr, orderFunc) {\n var result = cloneArr(arr);\n result.sort(function (a, b) { return orderFunc(a) - orderFunc(b); });\n return result;\n}\nexport function zipObject(keys, values) {\n if (keys.length !== values.length) {\n throw Error(\"can't zipObject with different number of keys and values!\");\n }\n var result = {};\n for (var i = 0; i < keys.length; i++) {\n result[keys[i]] = values[i];\n }\n return result;\n}\n/**\n * mutates! (and returns) target\n */\nexport function assign(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < sources.length; i++) {\n var curSource = sources[i];\n var currSourceKeys = keys(curSource);\n for (var j = 0; j < currSourceKeys.length; j++) {\n var currKey = currSourceKeys[j];\n target[currKey] = curSource[currKey];\n }\n }\n return target;\n}\n/**\n * mutates! (and returns) target\n */\nexport function assignNoOverwrite(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n for (var i = 0; i < sources.length; i++) {\n var curSource = sources[i];\n var currSourceKeys = keys(curSource);\n for (var j = 0; j < currSourceKeys.length; j++) {\n var currKey = currSourceKeys[j];\n if (!has(target, currKey)) {\n target[currKey] = curSource[currKey];\n }\n }\n }\n return target;\n}\nexport function defaults() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return assignNoOverwrite.apply(null, [{}].concat(sources));\n}\nexport function groupBy(arr, groupKeyFunc) {\n var result = {};\n forEach(arr, function (item) {\n var currGroupKey = groupKeyFunc(item);\n var currGroupArr = result[currGroupKey];\n if (currGroupArr) {\n currGroupArr.push(item);\n }\n else {\n result[currGroupKey] = [item];\n }\n });\n return result;\n}\n/**\n * Merge obj2 into obj1.\n * Will overwrite existing properties with the same name\n */\nexport function merge(obj1, obj2) {\n var result = cloneObj(obj1);\n var keys2 = keys(obj2);\n for (var i = 0; i < keys2.length; i++) {\n var key = keys2[i];\n var value = obj2[key];\n result[key] = value;\n }\n return result;\n}\nexport function NOOP() { }\nexport function IDENTITY(item) {\n return item;\n}\n/**\n * Will return a new packed array with same values.\n */\nexport function packArray(holeyArr) {\n var result = [];\n for (var i = 0; i < holeyArr.length; i++) {\n var orgValue = holeyArr[i];\n result.push(orgValue !== undefined ? orgValue : undefined);\n }\n return result;\n}\nexport function PRINT_ERROR(msg) {\n /* istanbul ignore else - can't override global.console in node.js */\n if (console && console.error) {\n console.error(\"Error: \" + msg);\n }\n}\nexport function PRINT_WARNING(msg) {\n /* istanbul ignore else - can't override global.console in node.js*/\n if (console && console.warn) {\n // TODO: modify docs accordingly\n console.warn(\"Warning: \" + msg);\n }\n}\nexport function isES2015MapSupported() {\n return typeof Map === \"function\";\n}\nexport function applyMixins(derivedCtor, baseCtors) {\n baseCtors.forEach(function (baseCtor) {\n var baseProto = baseCtor.prototype;\n Object.getOwnPropertyNames(baseProto).forEach(function (propName) {\n if (propName === \"constructor\") {\n return;\n }\n var basePropDescriptor = Object.getOwnPropertyDescriptor(baseProto, propName);\n // Handle Accessors\n if (basePropDescriptor &&\n (basePropDescriptor.get || basePropDescriptor.set)) {\n Object.defineProperty(derivedCtor.prototype, propName, basePropDescriptor);\n }\n else {\n derivedCtor.prototype[propName] = baseCtor.prototype[propName];\n }\n });\n });\n}\n// base on: https://github.com/petkaantonov/bluebird/blob/b97c0d2d487e8c5076e8bd897e0dcd4622d31846/src/util.js#L201-L216\nexport function toFastProperties(toBecomeFast) {\n function FakeConstructor() { }\n // If our object is used as a constructor it would receive\n FakeConstructor.prototype = toBecomeFast;\n var fakeInstance = new FakeConstructor();\n function fakeAccess() {\n return typeof fakeInstance.bar;\n }\n // help V8 understand this is a \"real\" prototype by actually using\n // the fake instance.\n fakeAccess();\n fakeAccess();\n return toBecomeFast;\n // Eval prevents optimization of this method (even though this is dead code)\n /* istanbul ignore next */\n // tslint:disable-next-line\n eval(toBecomeFast);\n}\nexport function peek(arr) {\n return arr[arr.length - 1];\n}\n/* istanbul ignore next - for performance tracing*/\nexport function timer(func) {\n var start = new Date().getTime();\n var val = func();\n var end = new Date().getTime();\n var total = end - start;\n return { time: total, value: val };\n}\n//# sourceMappingURL=utils.js.map",";(function(root, factory) {\n // istanbul ignore next\n if (typeof define === \"function\" && define.amd) {\n // istanbul ignore next\n define([], factory)\n } else if (typeof module === \"object\" && module.exports) {\n module.exports = factory()\n } else {\n // istanbul ignore next\n root.regexpToAst = factory()\n }\n})(\n typeof self !== \"undefined\"\n ? // istanbul ignore next\n self\n : this,\n function() {\n // references\n // https://hackernoon.com/the-madness-of-parsing-real-world-javascript-regexps-d9ee336df983\n // https://www.ecma-international.org/ecma-262/8.0/index.html#prod-Pattern\n function RegExpParser() {}\n\n RegExpParser.prototype.saveState = function() {\n return {\n idx: this.idx,\n input: this.input,\n groupIdx: this.groupIdx\n }\n }\n\n RegExpParser.prototype.restoreState = function(newState) {\n this.idx = newState.idx\n this.input = newState.input\n this.groupIdx = newState.groupIdx\n }\n\n RegExpParser.prototype.pattern = function(input) {\n // parser state\n this.idx = 0\n this.input = input\n this.groupIdx = 0\n\n this.consumeChar(\"/\")\n var value = this.disjunction()\n this.consumeChar(\"/\")\n\n var flags = {\n type: \"Flags\",\n loc: { begin: this.idx, end: input.length },\n global: false,\n ignoreCase: false,\n multiLine: false,\n unicode: false,\n sticky: false\n }\n\n while (this.isRegExpFlag()) {\n switch (this.popChar()) {\n case \"g\":\n addFlag(flags, \"global\")\n break\n case \"i\":\n addFlag(flags, \"ignoreCase\")\n break\n case \"m\":\n addFlag(flags, \"multiLine\")\n break\n case \"u\":\n addFlag(flags, \"unicode\")\n break\n case \"y\":\n addFlag(flags, \"sticky\")\n break\n }\n }\n\n if (this.idx !== this.input.length) {\n throw Error(\n \"Redundant input: \" + this.input.substring(this.idx)\n )\n }\n return {\n type: \"Pattern\",\n flags: flags,\n value: value,\n loc: this.loc(0)\n }\n }\n\n RegExpParser.prototype.disjunction = function() {\n var alts = []\n var begin = this.idx\n\n alts.push(this.alternative())\n\n while (this.peekChar() === \"|\") {\n this.consumeChar(\"|\")\n alts.push(this.alternative())\n }\n\n return { type: \"Disjunction\", value: alts, loc: this.loc(begin) }\n }\n\n RegExpParser.prototype.alternative = function() {\n var terms = []\n var begin = this.idx\n\n while (this.isTerm()) {\n terms.push(this.term())\n }\n\n return { type: \"Alternative\", value: terms, loc: this.loc(begin) }\n }\n\n RegExpParser.prototype.term = function() {\n if (this.isAssertion()) {\n return this.assertion()\n } else {\n return this.atom()\n }\n }\n\n RegExpParser.prototype.assertion = function() {\n var begin = this.idx\n switch (this.popChar()) {\n case \"^\":\n return {\n type: \"StartAnchor\",\n loc: this.loc(begin)\n }\n case \"$\":\n return { type: \"EndAnchor\", loc: this.loc(begin) }\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.popChar()) {\n case \"b\":\n return {\n type: \"WordBoundary\",\n loc: this.loc(begin)\n }\n case \"B\":\n return {\n type: \"NonWordBoundary\",\n loc: this.loc(begin)\n }\n }\n // istanbul ignore next\n throw Error(\"Invalid Assertion Escape\")\n // '(?=' or '(?!'\n case \"(\":\n this.consumeChar(\"?\")\n\n var type\n switch (this.popChar()) {\n case \"=\":\n type = \"Lookahead\"\n break\n case \"!\":\n type = \"NegativeLookahead\"\n break\n }\n ASSERT_EXISTS(type)\n\n var disjunction = this.disjunction()\n\n this.consumeChar(\")\")\n\n return {\n type: type,\n value: disjunction,\n loc: this.loc(begin)\n }\n }\n // istanbul ignore next\n ASSERT_NEVER_REACH_HERE()\n }\n\n RegExpParser.prototype.quantifier = function(isBacktracking) {\n var range\n var begin = this.idx\n switch (this.popChar()) {\n case \"*\":\n range = {\n atLeast: 0,\n atMost: Infinity\n }\n break\n case \"+\":\n range = {\n atLeast: 1,\n atMost: Infinity\n }\n break\n case \"?\":\n range = {\n atLeast: 0,\n atMost: 1\n }\n break\n case \"{\":\n var atLeast = this.integerIncludingZero()\n switch (this.popChar()) {\n case \"}\":\n range = {\n atLeast: atLeast,\n atMost: atLeast\n }\n break\n case \",\":\n var atMost\n if (this.isDigit()) {\n atMost = this.integerIncludingZero()\n range = {\n atLeast: atLeast,\n atMost: atMost\n }\n } else {\n range = {\n atLeast: atLeast,\n atMost: Infinity\n }\n }\n this.consumeChar(\"}\")\n break\n }\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined\n }\n ASSERT_EXISTS(range)\n break\n }\n\n // throwing exceptions from \"ASSERT_EXISTS\" during backtracking\n // causes severe performance degradations\n if (isBacktracking === true && range === undefined) {\n return undefined\n }\n\n ASSERT_EXISTS(range)\n\n if (this.peekChar(0) === \"?\") {\n this.consumeChar(\"?\")\n range.greedy = false\n } else {\n range.greedy = true\n }\n\n range.type = \"Quantifier\"\n range.loc = this.loc(begin)\n return range\n }\n\n RegExpParser.prototype.atom = function() {\n var atom\n var begin = this.idx\n switch (this.peekChar()) {\n case \".\":\n atom = this.dotAll()\n break\n case \"\\\\\":\n atom = this.atomEscape()\n break\n case \"[\":\n atom = this.characterClass()\n break\n case \"(\":\n atom = this.group()\n break\n }\n\n if (atom === undefined && this.isPatternCharacter()) {\n atom = this.patternCharacter()\n }\n\n ASSERT_EXISTS(atom)\n\n atom.loc = this.loc(begin)\n\n if (this.isQuantifier()) {\n atom.quantifier = this.quantifier()\n }\n\n return atom\n }\n\n RegExpParser.prototype.dotAll = function() {\n this.consumeChar(\".\")\n return {\n type: \"Set\",\n complement: true,\n value: [cc(\"\\n\"), cc(\"\\r\"), cc(\"\\u2028\"), cc(\"\\u2029\")]\n }\n }\n\n RegExpParser.prototype.atomEscape = function() {\n this.consumeChar(\"\\\\\")\n\n switch (this.peekChar()) {\n case \"1\":\n case \"2\":\n case \"3\":\n case \"4\":\n case \"5\":\n case \"6\":\n case \"7\":\n case \"8\":\n case \"9\":\n return this.decimalEscapeAtom()\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape()\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom()\n case \"c\":\n return this.controlLetterEscapeAtom()\n case \"0\":\n return this.nulCharacterAtom()\n case \"x\":\n return this.hexEscapeSequenceAtom()\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom()\n default:\n return this.identityEscapeAtom()\n }\n }\n\n RegExpParser.prototype.decimalEscapeAtom = function() {\n var value = this.positiveInteger()\n\n return { type: \"GroupBackReference\", value: value }\n }\n\n RegExpParser.prototype.characterClassEscape = function() {\n var set\n var complement = false\n switch (this.popChar()) {\n case \"d\":\n set = digitsCharCodes\n break\n case \"D\":\n set = digitsCharCodes\n complement = true\n break\n case \"s\":\n set = whitespaceCodes\n break\n case \"S\":\n set = whitespaceCodes\n complement = true\n break\n case \"w\":\n set = wordCharCodes\n break\n case \"W\":\n set = wordCharCodes\n complement = true\n break\n }\n\n ASSERT_EXISTS(set)\n\n return { type: \"Set\", value: set, complement: complement }\n }\n\n RegExpParser.prototype.controlEscapeAtom = function() {\n var escapeCode\n switch (this.popChar()) {\n case \"f\":\n escapeCode = cc(\"\\f\")\n break\n case \"n\":\n escapeCode = cc(\"\\n\")\n break\n case \"r\":\n escapeCode = cc(\"\\r\")\n break\n case \"t\":\n escapeCode = cc(\"\\t\")\n break\n case \"v\":\n escapeCode = cc(\"\\v\")\n break\n }\n ASSERT_EXISTS(escapeCode)\n\n return { type: \"Character\", value: escapeCode }\n }\n\n RegExpParser.prototype.controlLetterEscapeAtom = function() {\n this.consumeChar(\"c\")\n var letter = this.popChar()\n if (/[a-zA-Z]/.test(letter) === false) {\n throw Error(\"Invalid \")\n }\n\n var letterCode = letter.toUpperCase().charCodeAt(0) - 64\n return { type: \"Character\", value: letterCode }\n }\n\n RegExpParser.prototype.nulCharacterAtom = function() {\n // TODO implement '[lookahead ∉ DecimalDigit]'\n // TODO: for the deprecated octal escape sequence\n this.consumeChar(\"0\")\n return { type: \"Character\", value: cc(\"\\0\") }\n }\n\n RegExpParser.prototype.hexEscapeSequenceAtom = function() {\n this.consumeChar(\"x\")\n return this.parseHexDigits(2)\n }\n\n RegExpParser.prototype.regExpUnicodeEscapeSequenceAtom = function() {\n this.consumeChar(\"u\")\n return this.parseHexDigits(4)\n }\n\n RegExpParser.prototype.identityEscapeAtom = function() {\n // TODO: implement \"SourceCharacter but not UnicodeIDContinue\"\n // // http://unicode.org/reports/tr31/#Specific_Character_Adjustments\n var escapedChar = this.popChar()\n return { type: \"Character\", value: cc(escapedChar) }\n }\n\n RegExpParser.prototype.classPatternCharacterAtom = function() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \"]\":\n throw Error(\"TBD\")\n default:\n var nextChar = this.popChar()\n return { type: \"Character\", value: cc(nextChar) }\n }\n }\n\n RegExpParser.prototype.characterClass = function() {\n var set = []\n var complement = false\n this.consumeChar(\"[\")\n if (this.peekChar(0) === \"^\") {\n this.consumeChar(\"^\")\n complement = true\n }\n\n while (this.isClassAtom()) {\n var from = this.classAtom()\n var isFromSingleChar = from.type === \"Character\"\n if (isFromSingleChar && this.isRangeDash()) {\n this.consumeChar(\"-\")\n var to = this.classAtom()\n var isToSingleChar = to.type === \"Character\"\n\n // a range can only be used when both sides are single characters\n if (isToSingleChar) {\n if (to.value < from.value) {\n throw Error(\"Range out of order in character class\")\n }\n set.push({ from: from.value, to: to.value })\n } else {\n // literal dash\n insertToSet(from.value, set)\n set.push(cc(\"-\"))\n insertToSet(to.value, set)\n }\n } else {\n insertToSet(from.value, set)\n }\n }\n\n this.consumeChar(\"]\")\n\n return { type: \"Set\", complement: complement, value: set }\n }\n\n RegExpParser.prototype.classAtom = function() {\n switch (this.peekChar()) {\n // istanbul ignore next\n case \"]\":\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n throw Error(\"TBD\")\n case \"\\\\\":\n return this.classEscape()\n default:\n return this.classPatternCharacterAtom()\n }\n }\n\n RegExpParser.prototype.classEscape = function() {\n this.consumeChar(\"\\\\\")\n switch (this.peekChar()) {\n // Matches a backspace.\n // (Not to be confused with \\b word boundary outside characterClass)\n case \"b\":\n this.consumeChar(\"b\")\n return { type: \"Character\", value: cc(\"\\u0008\") }\n case \"d\":\n case \"D\":\n case \"s\":\n case \"S\":\n case \"w\":\n case \"W\":\n return this.characterClassEscape()\n case \"f\":\n case \"n\":\n case \"r\":\n case \"t\":\n case \"v\":\n return this.controlEscapeAtom()\n case \"c\":\n return this.controlLetterEscapeAtom()\n case \"0\":\n return this.nulCharacterAtom()\n case \"x\":\n return this.hexEscapeSequenceAtom()\n case \"u\":\n return this.regExpUnicodeEscapeSequenceAtom()\n default:\n return this.identityEscapeAtom()\n }\n }\n\n RegExpParser.prototype.group = function() {\n var capturing = true\n this.consumeChar(\"(\")\n switch (this.peekChar(0)) {\n case \"?\":\n this.consumeChar(\"?\")\n this.consumeChar(\":\")\n capturing = false\n break\n default:\n this.groupIdx++\n break\n }\n var value = this.disjunction()\n this.consumeChar(\")\")\n\n var groupAst = {\n type: \"Group\",\n capturing: capturing,\n value: value\n }\n\n if (capturing) {\n groupAst.idx = this.groupIdx\n }\n\n return groupAst\n }\n\n RegExpParser.prototype.positiveInteger = function() {\n var number = this.popChar()\n\n // istanbul ignore next - can't ever get here due to previous lookahead checks\n // still implementing this error checking in case this ever changes.\n if (decimalPatternNoZero.test(number) === false) {\n throw Error(\"Expecting a positive integer\")\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar()\n }\n\n return parseInt(number, 10)\n }\n\n RegExpParser.prototype.integerIncludingZero = function() {\n var number = this.popChar()\n if (decimalPattern.test(number) === false) {\n throw Error(\"Expecting an integer\")\n }\n\n while (decimalPattern.test(this.peekChar(0))) {\n number += this.popChar()\n }\n\n return parseInt(number, 10)\n }\n\n RegExpParser.prototype.patternCharacter = function() {\n var nextChar = this.popChar()\n switch (nextChar) {\n // istanbul ignore next\n case \"\\n\":\n // istanbul ignore next\n case \"\\r\":\n // istanbul ignore next\n case \"\\u2028\":\n // istanbul ignore next\n case \"\\u2029\":\n // istanbul ignore next\n case \"^\":\n // istanbul ignore next\n case \"$\":\n // istanbul ignore next\n case \"\\\\\":\n // istanbul ignore next\n case \".\":\n // istanbul ignore next\n case \"*\":\n // istanbul ignore next\n case \"+\":\n // istanbul ignore next\n case \"?\":\n // istanbul ignore next\n case \"(\":\n // istanbul ignore next\n case \")\":\n // istanbul ignore next\n case \"[\":\n // istanbul ignore next\n case \"|\":\n // istanbul ignore next\n throw Error(\"TBD\")\n default:\n return { type: \"Character\", value: cc(nextChar) }\n }\n }\n RegExpParser.prototype.isRegExpFlag = function() {\n switch (this.peekChar(0)) {\n case \"g\":\n case \"i\":\n case \"m\":\n case \"u\":\n case \"y\":\n return true\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isRangeDash = function() {\n return this.peekChar() === \"-\" && this.isClassAtom(1)\n }\n\n RegExpParser.prototype.isDigit = function() {\n return decimalPattern.test(this.peekChar(0))\n }\n\n RegExpParser.prototype.isClassAtom = function(howMuch) {\n if (howMuch === undefined) {\n howMuch = 0\n }\n\n switch (this.peekChar(howMuch)) {\n case \"]\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false\n default:\n return true\n }\n }\n\n RegExpParser.prototype.isTerm = function() {\n return this.isAtom() || this.isAssertion()\n }\n\n RegExpParser.prototype.isAtom = function() {\n if (this.isPatternCharacter()) {\n return true\n }\n\n switch (this.peekChar(0)) {\n case \".\":\n case \"\\\\\": // atomEscape\n case \"[\": // characterClass\n // TODO: isAtom must be called before isAssertion - disambiguate\n case \"(\": // group\n return true\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isAssertion = function() {\n switch (this.peekChar(0)) {\n case \"^\":\n case \"$\":\n return true\n // '\\b' or '\\B'\n case \"\\\\\":\n switch (this.peekChar(1)) {\n case \"b\":\n case \"B\":\n return true\n default:\n return false\n }\n // '(?=' or '(?!'\n case \"(\":\n return (\n this.peekChar(1) === \"?\" &&\n (this.peekChar(2) === \"=\" || this.peekChar(2) === \"!\")\n )\n default:\n return false\n }\n }\n\n RegExpParser.prototype.isQuantifier = function() {\n var prevState = this.saveState()\n try {\n return this.quantifier(true) !== undefined\n } catch (e) {\n return false\n } finally {\n this.restoreState(prevState)\n }\n }\n\n RegExpParser.prototype.isPatternCharacter = function() {\n switch (this.peekChar()) {\n case \"^\":\n case \"$\":\n case \"\\\\\":\n case \".\":\n case \"*\":\n case \"+\":\n case \"?\":\n case \"(\":\n case \")\":\n case \"[\":\n case \"|\":\n case \"/\":\n case \"\\n\":\n case \"\\r\":\n case \"\\u2028\":\n case \"\\u2029\":\n return false\n default:\n return true\n }\n }\n\n RegExpParser.prototype.parseHexDigits = function(howMany) {\n var hexString = \"\"\n for (var i = 0; i < howMany; i++) {\n var hexChar = this.popChar()\n if (hexDigitPattern.test(hexChar) === false) {\n throw Error(\"Expecting a HexDecimal digits\")\n }\n hexString += hexChar\n }\n var charCode = parseInt(hexString, 16)\n return { type: \"Character\", value: charCode }\n }\n\n RegExpParser.prototype.peekChar = function(howMuch) {\n if (howMuch === undefined) {\n howMuch = 0\n }\n return this.input[this.idx + howMuch]\n }\n\n RegExpParser.prototype.popChar = function() {\n var nextChar = this.peekChar(0)\n this.consumeChar()\n return nextChar\n }\n\n RegExpParser.prototype.consumeChar = function(char) {\n if (char !== undefined && this.input[this.idx] !== char) {\n throw Error(\n \"Expected: '\" +\n char +\n \"' but found: '\" +\n this.input[this.idx] +\n \"' at offset: \" +\n this.idx\n )\n }\n\n if (this.idx >= this.input.length) {\n throw Error(\"Unexpected end of input\")\n }\n this.idx++\n }\n\n RegExpParser.prototype.loc = function(begin) {\n return { begin: begin, end: this.idx }\n }\n\n // consts and utilities\n var hexDigitPattern = /[0-9a-fA-F]/\n var decimalPattern = /[0-9]/\n var decimalPatternNoZero = /[1-9]/\n\n function cc(char) {\n return char.charCodeAt(0)\n }\n\n function insertToSet(item, set) {\n if (item.length !== undefined) {\n item.forEach(function(subItem) {\n set.push(subItem)\n })\n } else {\n set.push(item)\n }\n }\n\n function addFlag(flagObj, flagKey) {\n if (flagObj[flagKey] === true) {\n throw \"duplicate flag \" + flagKey\n }\n\n flagObj[flagKey] = true\n }\n\n function ASSERT_EXISTS(obj) {\n // istanbul ignore next\n if (obj === undefined) {\n throw Error(\"Internal Error - Should never get here!\")\n }\n }\n\n // istanbul ignore next\n function ASSERT_NEVER_REACH_HERE() {\n throw Error(\"Internal Error - Should never get here!\")\n }\n\n var i\n var digitsCharCodes = []\n for (i = cc(\"0\"); i <= cc(\"9\"); i++) {\n digitsCharCodes.push(i)\n }\n\n var wordCharCodes = [cc(\"_\")].concat(digitsCharCodes)\n for (i = cc(\"a\"); i <= cc(\"z\"); i++) {\n wordCharCodes.push(i)\n }\n\n for (i = cc(\"A\"); i <= cc(\"Z\"); i++) {\n wordCharCodes.push(i)\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#character-classes\n var whitespaceCodes = [\n cc(\" \"),\n cc(\"\\f\"),\n cc(\"\\n\"),\n cc(\"\\r\"),\n cc(\"\\t\"),\n cc(\"\\v\"),\n cc(\"\\t\"),\n cc(\"\\u00a0\"),\n cc(\"\\u1680\"),\n cc(\"\\u2000\"),\n cc(\"\\u2001\"),\n cc(\"\\u2002\"),\n cc(\"\\u2003\"),\n cc(\"\\u2004\"),\n cc(\"\\u2005\"),\n cc(\"\\u2006\"),\n cc(\"\\u2007\"),\n cc(\"\\u2008\"),\n cc(\"\\u2009\"),\n cc(\"\\u200a\"),\n cc(\"\\u2028\"),\n cc(\"\\u2029\"),\n cc(\"\\u202f\"),\n cc(\"\\u205f\"),\n cc(\"\\u3000\"),\n cc(\"\\ufeff\")\n ]\n\n function BaseRegExpVisitor() {}\n\n BaseRegExpVisitor.prototype.visitChildren = function(node) {\n for (var key in node) {\n var child = node[key]\n /* istanbul ignore else */\n if (node.hasOwnProperty(key)) {\n if (child.type !== undefined) {\n this.visit(child)\n } else if (Array.isArray(child)) {\n child.forEach(function(subChild) {\n this.visit(subChild)\n }, this)\n }\n }\n }\n }\n\n BaseRegExpVisitor.prototype.visit = function(node) {\n switch (node.type) {\n case \"Pattern\":\n this.visitPattern(node)\n break\n case \"Flags\":\n this.visitFlags(node)\n break\n case \"Disjunction\":\n this.visitDisjunction(node)\n break\n case \"Alternative\":\n this.visitAlternative(node)\n break\n case \"StartAnchor\":\n this.visitStartAnchor(node)\n break\n case \"EndAnchor\":\n this.visitEndAnchor(node)\n break\n case \"WordBoundary\":\n this.visitWordBoundary(node)\n break\n case \"NonWordBoundary\":\n this.visitNonWordBoundary(node)\n break\n case \"Lookahead\":\n this.visitLookahead(node)\n break\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node)\n break\n case \"Character\":\n this.visitCharacter(node)\n break\n case \"Set\":\n this.visitSet(node)\n break\n case \"Group\":\n this.visitGroup(node)\n break\n case \"GroupBackReference\":\n this.visitGroupBackReference(node)\n break\n case \"Quantifier\":\n this.visitQuantifier(node)\n break\n }\n\n this.visitChildren(node)\n }\n\n BaseRegExpVisitor.prototype.visitPattern = function(node) {}\n\n BaseRegExpVisitor.prototype.visitFlags = function(node) {}\n\n BaseRegExpVisitor.prototype.visitDisjunction = function(node) {}\n\n BaseRegExpVisitor.prototype.visitAlternative = function(node) {}\n\n // Assertion\n BaseRegExpVisitor.prototype.visitStartAnchor = function(node) {}\n\n BaseRegExpVisitor.prototype.visitEndAnchor = function(node) {}\n\n BaseRegExpVisitor.prototype.visitWordBoundary = function(node) {}\n\n BaseRegExpVisitor.prototype.visitNonWordBoundary = function(node) {}\n\n BaseRegExpVisitor.prototype.visitLookahead = function(node) {}\n\n BaseRegExpVisitor.prototype.visitNegativeLookahead = function(node) {}\n\n // atoms\n BaseRegExpVisitor.prototype.visitCharacter = function(node) {}\n\n BaseRegExpVisitor.prototype.visitSet = function(node) {}\n\n BaseRegExpVisitor.prototype.visitGroup = function(node) {}\n\n BaseRegExpVisitor.prototype.visitGroupBackReference = function(node) {}\n\n BaseRegExpVisitor.prototype.visitQuantifier = function(node) {}\n\n return {\n RegExpParser: RegExpParser,\n BaseRegExpVisitor: BaseRegExpVisitor,\n VERSION: \"0.5.0\"\n }\n }\n)\n","import { RegExpParser } from \"regexp-to-ast\";\nvar regExpAstCache = {};\nvar regExpParser = new RegExpParser();\nexport function getRegExpAst(regExp) {\n var regExpStr = regExp.toString();\n if (regExpAstCache.hasOwnProperty(regExpStr)) {\n return regExpAstCache[regExpStr];\n }\n else {\n var regExpAst = regExpParser.pattern(regExpStr);\n regExpAstCache[regExpStr] = regExpAst;\n return regExpAst;\n }\n}\nexport function clearRegExpParserCache() {\n regExpAstCache = {};\n}\n//# sourceMappingURL=reg_exp_parser.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { VERSION, BaseRegExpVisitor } from \"regexp-to-ast\";\nimport { forEach, contains, PRINT_ERROR, PRINT_WARNING, find, isArray, every, values } from \"../utils/utils\";\nimport { getRegExpAst } from \"./reg_exp_parser\";\nimport { charCodeToOptimizedIndex, minOptimizationVal } from \"./lexer\";\nvar complementErrorMessage = \"Complement Sets are not supported for first char optimization\";\nexport var failedOptimizationPrefixMsg = 'Unable to use \"first char\" lexer optimizations:\\n';\nexport function getOptimizedStartCodesIndices(regExp, ensureOptimizations) {\n if (ensureOptimizations === void 0) { ensureOptimizations = false; }\n try {\n var ast = getRegExpAst(regExp);\n var firstChars = firstCharOptimizedIndices(ast.value, {}, ast.flags.ignoreCase);\n return firstChars;\n }\n catch (e) {\n /* istanbul ignore next */\n // Testing this relies on the regexp-to-ast library having a bug... */\n // TODO: only the else branch needs to be ignored, try to fix with newer prettier / tsc\n if (e.message === complementErrorMessage) {\n if (ensureOptimizations) {\n PRINT_WARNING(\"\" + failedOptimizationPrefixMsg +\n (\"\\tUnable to optimize: < \" + regExp.toString() + \" >\\n\") +\n \"\\tComplement Sets cannot be automatically optimized.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.\");\n }\n }\n else {\n var msgSuffix = \"\";\n if (ensureOptimizations) {\n msgSuffix =\n \"\\n\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.\";\n }\n PRINT_ERROR(failedOptimizationPrefixMsg + \"\\n\" +\n (\"\\tFailed parsing: < \" + regExp.toString() + \" >\\n\") +\n (\"\\tUsing the regexp-to-ast library version: \" + VERSION + \"\\n\") +\n \"\\tPlease open an issue at: https://github.com/bd82/regexp-to-ast/issues\" +\n msgSuffix);\n }\n }\n return [];\n}\nexport function firstCharOptimizedIndices(ast, result, ignoreCase) {\n switch (ast.type) {\n case \"Disjunction\":\n for (var i = 0; i < ast.value.length; i++) {\n firstCharOptimizedIndices(ast.value[i], result, ignoreCase);\n }\n break;\n case \"Alternative\":\n var terms = ast.value;\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i];\n // skip terms that cannot effect the first char results\n switch (term.type) {\n case \"EndAnchor\":\n // A group back reference cannot affect potential starting char.\n // because if a back reference is the first production than automatically\n // the group being referenced has had to come BEFORE so its codes have already been added\n case \"GroupBackReference\":\n // assertions do not affect potential starting codes\n case \"Lookahead\":\n case \"NegativeLookahead\":\n case \"StartAnchor\":\n case \"WordBoundary\":\n case \"NonWordBoundary\":\n continue;\n }\n var atom = term;\n switch (atom.type) {\n case \"Character\":\n addOptimizedIdxToResult(atom.value, result, ignoreCase);\n break;\n case \"Set\":\n if (atom.complement === true) {\n throw Error(complementErrorMessage);\n }\n forEach(atom.value, function (code) {\n if (typeof code === \"number\") {\n addOptimizedIdxToResult(code, result, ignoreCase);\n }\n else {\n // range\n var range = code;\n // cannot optimize when ignoreCase is\n if (ignoreCase === true) {\n for (var rangeCode = range.from; rangeCode <= range.to; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n }\n // Optimization (2 orders of magnitude less work for very large ranges)\n else {\n // handle unoptimized values\n for (var rangeCode = range.from; rangeCode <= range.to && rangeCode < minOptimizationVal; rangeCode++) {\n addOptimizedIdxToResult(rangeCode, result, ignoreCase);\n }\n // Less common charCode where we optimize for faster init time, by using larger \"buckets\"\n if (range.to >= minOptimizationVal) {\n var minUnOptVal = range.from >= minOptimizationVal\n ? range.from\n : minOptimizationVal;\n var maxUnOptVal = range.to;\n var minOptIdx = charCodeToOptimizedIndex(minUnOptVal);\n var maxOptIdx = charCodeToOptimizedIndex(maxUnOptVal);\n for (var currOptIdx = minOptIdx; currOptIdx <= maxOptIdx; currOptIdx++) {\n result[currOptIdx] = currOptIdx;\n }\n }\n }\n }\n });\n break;\n case \"Group\":\n firstCharOptimizedIndices(atom.value, result, ignoreCase);\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"Non Exhaustive Match\");\n }\n // reached a mandatory production, no more **start** codes can be found on this alternative\n var isOptionalQuantifier = atom.quantifier !== undefined && atom.quantifier.atLeast === 0;\n if (\n // A group may be optional due to empty contents /(?:)/\n // or if everything inside it is optional /((a)?)/\n (atom.type === \"Group\" && isWholeOptional(atom) === false) ||\n // If this term is not a group it may only be optional if it has an optional quantifier\n (atom.type !== \"Group\" && isOptionalQuantifier === false)) {\n break;\n }\n }\n break;\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match!\");\n }\n // console.log(Object.keys(result).length)\n return values(result);\n}\nfunction addOptimizedIdxToResult(code, result, ignoreCase) {\n var optimizedCharIdx = charCodeToOptimizedIndex(code);\n result[optimizedCharIdx] = optimizedCharIdx;\n if (ignoreCase === true) {\n handleIgnoreCase(code, result);\n }\n}\nfunction handleIgnoreCase(code, result) {\n var char = String.fromCharCode(code);\n var upperChar = char.toUpperCase();\n /* istanbul ignore else */\n if (upperChar !== char) {\n var optimizedCharIdx = charCodeToOptimizedIndex(upperChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n else {\n var lowerChar = char.toLowerCase();\n if (lowerChar !== char) {\n var optimizedCharIdx = charCodeToOptimizedIndex(lowerChar.charCodeAt(0));\n result[optimizedCharIdx] = optimizedCharIdx;\n }\n }\n}\nfunction findCode(setNode, targetCharCodes) {\n return find(setNode.value, function (codeOrRange) {\n if (typeof codeOrRange === \"number\") {\n return contains(targetCharCodes, codeOrRange);\n }\n else {\n // range\n var range_1 = codeOrRange;\n return (find(targetCharCodes, function (targetCode) { return range_1.from <= targetCode && targetCode <= range_1.to; }) !== undefined);\n }\n });\n}\nfunction isWholeOptional(ast) {\n if (ast.quantifier && ast.quantifier.atLeast === 0) {\n return true;\n }\n if (!ast.value) {\n return false;\n }\n return isArray(ast.value)\n ? every(ast.value, isWholeOptional)\n : isWholeOptional(ast.value);\n}\nvar CharCodeFinder = /** @class */ (function (_super) {\n __extends(CharCodeFinder, _super);\n function CharCodeFinder(targetCharCodes) {\n var _this = _super.call(this) || this;\n _this.targetCharCodes = targetCharCodes;\n _this.found = false;\n return _this;\n }\n CharCodeFinder.prototype.visitChildren = function (node) {\n // No need to keep looking...\n if (this.found === true) {\n return;\n }\n // switch lookaheads as they do not actually consume any characters thus\n // finding a charCode at lookahead context does not mean that regexp can actually contain it in a match.\n switch (node.type) {\n case \"Lookahead\":\n this.visitLookahead(node);\n return;\n case \"NegativeLookahead\":\n this.visitNegativeLookahead(node);\n return;\n }\n _super.prototype.visitChildren.call(this, node);\n };\n CharCodeFinder.prototype.visitCharacter = function (node) {\n if (contains(this.targetCharCodes, node.value)) {\n this.found = true;\n }\n };\n CharCodeFinder.prototype.visitSet = function (node) {\n if (node.complement) {\n if (findCode(node, this.targetCharCodes) === undefined) {\n this.found = true;\n }\n }\n else {\n if (findCode(node, this.targetCharCodes) !== undefined) {\n this.found = true;\n }\n }\n };\n return CharCodeFinder;\n}(BaseRegExpVisitor));\nexport function canMatchCharCode(charCodes, pattern) {\n if (pattern instanceof RegExp) {\n var ast = getRegExpAst(pattern);\n var charCodeFinder = new CharCodeFinder(charCodes);\n charCodeFinder.visit(ast);\n return charCodeFinder.found;\n }\n else {\n return (find(pattern, function (char) {\n return contains(charCodes, char.charCodeAt(0));\n }) !== undefined);\n }\n}\n//# sourceMappingURL=reg_exp.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseRegExpVisitor } from \"regexp-to-ast\";\nimport { Lexer, LexerDefinitionErrorType } from \"./lexer_public\";\nimport { compact, contains, defaults, difference, filter, find, first, flatten, forEach, has, indexOf, isArray, isEmpty, isFunction, isRegExp, isString, isUndefined, keys, map, mapValues, packArray, PRINT_ERROR, reduce, reject } from \"../utils/utils\";\nimport { canMatchCharCode, failedOptimizationPrefixMsg, getOptimizedStartCodesIndices } from \"./reg_exp\";\nimport { getRegExpAst } from \"./reg_exp_parser\";\nvar PATTERN = \"PATTERN\";\nexport var DEFAULT_MODE = \"defaultMode\";\nexport var MODES = \"modes\";\nexport var SUPPORT_STICKY = typeof new RegExp(\"(?:)\").sticky === \"boolean\";\nexport function disableSticky() {\n SUPPORT_STICKY = false;\n}\nexport function enableSticky() {\n SUPPORT_STICKY = true;\n}\nexport function analyzeTokenTypes(tokenTypes, options) {\n options = defaults(options, {\n useSticky: SUPPORT_STICKY,\n debug: false,\n safeMode: false,\n positionTracking: \"full\",\n lineTerminatorCharacters: [\"\\r\", \"\\n\"],\n tracer: function (msg, action) { return action(); }\n });\n var tracer = options.tracer;\n tracer(\"initCharCodeToOptimizedIndexMap\", function () {\n initCharCodeToOptimizedIndexMap();\n });\n var onlyRelevantTypes;\n tracer(\"Reject Lexer.NA\", function () {\n onlyRelevantTypes = reject(tokenTypes, function (currType) {\n return currType[PATTERN] === Lexer.NA;\n });\n });\n var hasCustom = false;\n var allTransformedPatterns;\n tracer(\"Transform Patterns\", function () {\n hasCustom = false;\n allTransformedPatterns = map(onlyRelevantTypes, function (currType) {\n var currPattern = currType[PATTERN];\n /* istanbul ignore else */\n if (isRegExp(currPattern)) {\n var regExpSource = currPattern.source;\n if (regExpSource.length === 1 &&\n // only these regExp meta characters which can appear in a length one regExp\n regExpSource !== \"^\" &&\n regExpSource !== \"$\" &&\n regExpSource !== \".\" &&\n !currPattern.ignoreCase) {\n return regExpSource;\n }\n else if (regExpSource.length === 2 &&\n regExpSource[0] === \"\\\\\" &&\n // not a meta character\n !contains([\n \"d\",\n \"D\",\n \"s\",\n \"S\",\n \"t\",\n \"r\",\n \"n\",\n \"t\",\n \"0\",\n \"c\",\n \"b\",\n \"B\",\n \"f\",\n \"v\",\n \"w\",\n \"W\"\n ], regExpSource[1])) {\n // escaped meta Characters: /\\+/ /\\[/\n // or redundant escaping: /\\a/\n // without the escaping \"\\\"\n return regExpSource[1];\n }\n else {\n return options.useSticky\n ? addStickyFlag(currPattern)\n : addStartOfInput(currPattern);\n }\n }\n else if (isFunction(currPattern)) {\n hasCustom = true;\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return { exec: currPattern };\n }\n else if (has(currPattern, \"exec\")) {\n hasCustom = true;\n // ICustomPattern\n return currPattern;\n }\n else if (typeof currPattern === \"string\") {\n if (currPattern.length === 1) {\n return currPattern;\n }\n else {\n var escapedRegExpString = currPattern.replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n var wrappedRegExp = new RegExp(escapedRegExpString);\n return options.useSticky\n ? addStickyFlag(wrappedRegExp)\n : addStartOfInput(wrappedRegExp);\n }\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n });\n var patternIdxToType;\n var patternIdxToGroup;\n var patternIdxToLongerAltIdx;\n var patternIdxToPushMode;\n var patternIdxToPopMode;\n tracer(\"misc mapping\", function () {\n patternIdxToType = map(onlyRelevantTypes, function (currType) { return currType.tokenTypeIdx; });\n patternIdxToGroup = map(onlyRelevantTypes, function (clazz) {\n var groupName = clazz.GROUP;\n /* istanbul ignore next */\n if (groupName === Lexer.SKIPPED) {\n return undefined;\n }\n else if (isString(groupName)) {\n return groupName;\n }\n else if (isUndefined(groupName)) {\n return false;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n patternIdxToLongerAltIdx = map(onlyRelevantTypes, function (clazz) {\n var longerAltType = clazz.LONGER_ALT;\n if (longerAltType) {\n var longerAltIdx = indexOf(onlyRelevantTypes, longerAltType);\n return longerAltIdx;\n }\n });\n patternIdxToPushMode = map(onlyRelevantTypes, function (clazz) { return clazz.PUSH_MODE; });\n patternIdxToPopMode = map(onlyRelevantTypes, function (clazz) {\n return has(clazz, \"POP_MODE\");\n });\n });\n var patternIdxToCanLineTerminator;\n tracer(\"Line Terminator Handling\", function () {\n var lineTerminatorCharCodes = getCharCodes(options.lineTerminatorCharacters);\n patternIdxToCanLineTerminator = map(onlyRelevantTypes, function (tokType) { return false; });\n if (options.positionTracking !== \"onlyOffset\") {\n patternIdxToCanLineTerminator = map(onlyRelevantTypes, function (tokType) {\n if (has(tokType, \"LINE_BREAKS\")) {\n return tokType.LINE_BREAKS;\n }\n else {\n if (checkLineBreaksIssues(tokType, lineTerminatorCharCodes) === false) {\n return canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN);\n }\n }\n });\n }\n });\n var patternIdxToIsCustom;\n var patternIdxToShort;\n var emptyGroups;\n var patternIdxToConfig;\n tracer(\"Misc Mapping #2\", function () {\n patternIdxToIsCustom = map(onlyRelevantTypes, isCustomPattern);\n patternIdxToShort = map(allTransformedPatterns, isShortPattern);\n emptyGroups = reduce(onlyRelevantTypes, function (acc, clazz) {\n var groupName = clazz.GROUP;\n if (isString(groupName) && !(groupName === Lexer.SKIPPED)) {\n acc[groupName] = [];\n }\n return acc;\n }, {});\n patternIdxToConfig = map(allTransformedPatterns, function (x, idx) {\n return {\n pattern: allTransformedPatterns[idx],\n longerAlt: patternIdxToLongerAltIdx[idx],\n canLineTerminator: patternIdxToCanLineTerminator[idx],\n isCustom: patternIdxToIsCustom[idx],\n short: patternIdxToShort[idx],\n group: patternIdxToGroup[idx],\n push: patternIdxToPushMode[idx],\n pop: patternIdxToPopMode[idx],\n tokenTypeIdx: patternIdxToType[idx],\n tokenType: onlyRelevantTypes[idx]\n };\n });\n });\n var canBeOptimized = true;\n var charCodeToPatternIdxToConfig = [];\n if (!options.safeMode) {\n tracer(\"First Char Optimization\", function () {\n charCodeToPatternIdxToConfig = reduce(onlyRelevantTypes, function (result, currTokType, idx) {\n if (typeof currTokType.PATTERN === \"string\") {\n var charCode = currTokType.PATTERN.charCodeAt(0);\n var optimizedIdx = charCodeToOptimizedIndex(charCode);\n addToMapOfArrays(result, optimizedIdx, patternIdxToConfig[idx]);\n }\n else if (isArray(currTokType.START_CHARS_HINT)) {\n var lastOptimizedIdx_1;\n forEach(currTokType.START_CHARS_HINT, function (charOrInt) {\n var charCode = typeof charOrInt === \"string\"\n ? charOrInt.charCodeAt(0)\n : charOrInt;\n var currOptimizedIdx = charCodeToOptimizedIndex(charCode);\n // Avoid adding the config multiple times\n /* istanbul ignore else */\n // - Difficult to check this scenario effects as it is only a performance\n // optimization that does not change correctness\n if (lastOptimizedIdx_1 !== currOptimizedIdx) {\n lastOptimizedIdx_1 = currOptimizedIdx;\n addToMapOfArrays(result, currOptimizedIdx, patternIdxToConfig[idx]);\n }\n });\n }\n else if (isRegExp(currTokType.PATTERN)) {\n if (currTokType.PATTERN.unicode) {\n canBeOptimized = false;\n if (options.ensureOptimizations) {\n PRINT_ERROR(\"\" + failedOptimizationPrefixMsg +\n (\"\\tUnable to analyze < \" + currTokType.PATTERN.toString() + \" > pattern.\\n\") +\n \"\\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\\n\" +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE\");\n }\n }\n else {\n var optimizedCodes = getOptimizedStartCodesIndices(currTokType.PATTERN, options.ensureOptimizations);\n /* istanbul ignore if */\n // start code will only be empty given an empty regExp or failure of regexp-to-ast library\n // the first should be a different validation and the second cannot be tested.\n if (isEmpty(optimizedCodes)) {\n // we cannot understand what codes may start possible matches\n // The optimization correctness requires knowing start codes for ALL patterns.\n // Not actually sure this is an error, no debug message\n canBeOptimized = false;\n }\n forEach(optimizedCodes, function (code) {\n addToMapOfArrays(result, code, patternIdxToConfig[idx]);\n });\n }\n }\n else {\n if (options.ensureOptimizations) {\n PRINT_ERROR(\"\" + failedOptimizationPrefixMsg +\n (\"\\tTokenType: <\" + currTokType.name + \"> is using a custom token pattern without providing parameter.\\n\") +\n \"\\tThis will disable the lexer's first char optimizations.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE\");\n }\n canBeOptimized = false;\n }\n return result;\n }, []);\n });\n }\n tracer(\"ArrayPacking\", function () {\n charCodeToPatternIdxToConfig = packArray(charCodeToPatternIdxToConfig);\n });\n return {\n emptyGroups: emptyGroups,\n patternIdxToConfig: patternIdxToConfig,\n charCodeToPatternIdxToConfig: charCodeToPatternIdxToConfig,\n hasCustom: hasCustom,\n canBeOptimized: canBeOptimized\n };\n}\nexport function validatePatterns(tokenTypes, validModesNames) {\n var errors = [];\n var missingResult = findMissingPatterns(tokenTypes);\n errors = errors.concat(missingResult.errors);\n var invalidResult = findInvalidPatterns(missingResult.valid);\n var validTokenTypes = invalidResult.valid;\n errors = errors.concat(invalidResult.errors);\n errors = errors.concat(validateRegExpPattern(validTokenTypes));\n errors = errors.concat(findInvalidGroupType(validTokenTypes));\n errors = errors.concat(findModesThatDoNotExist(validTokenTypes, validModesNames));\n errors = errors.concat(findUnreachablePatterns(validTokenTypes));\n return errors;\n}\nfunction validateRegExpPattern(tokenTypes) {\n var errors = [];\n var withRegExpPatterns = filter(tokenTypes, function (currTokType) {\n return isRegExp(currTokType[PATTERN]);\n });\n errors = errors.concat(findEndOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findStartOfInputAnchor(withRegExpPatterns));\n errors = errors.concat(findUnsupportedFlags(withRegExpPatterns));\n errors = errors.concat(findDuplicatePatterns(withRegExpPatterns));\n errors = errors.concat(findEmptyMatchRegExps(withRegExpPatterns));\n return errors;\n}\nexport function findMissingPatterns(tokenTypes) {\n var tokenTypesWithMissingPattern = filter(tokenTypes, function (currType) {\n return !has(currType, PATTERN);\n });\n var errors = map(tokenTypesWithMissingPattern, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- missing static 'PATTERN' property\",\n type: LexerDefinitionErrorType.MISSING_PATTERN,\n tokenTypes: [currType]\n };\n });\n var valid = difference(tokenTypes, tokenTypesWithMissingPattern);\n return { errors: errors, valid: valid };\n}\nexport function findInvalidPatterns(tokenTypes) {\n var tokenTypesWithInvalidPattern = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return (!isRegExp(pattern) &&\n !isFunction(pattern) &&\n !has(pattern, \"exec\") &&\n !isString(pattern));\n });\n var errors = map(tokenTypesWithInvalidPattern, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' can only be a RegExp, a\" +\n \" Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.\",\n type: LexerDefinitionErrorType.INVALID_PATTERN,\n tokenTypes: [currType]\n };\n });\n var valid = difference(tokenTypes, tokenTypesWithInvalidPattern);\n return { errors: errors, valid: valid };\n}\nvar end_of_input = /[^\\\\][\\$]/;\nexport function findEndOfInputAnchor(tokenTypes) {\n var EndAnchorFinder = /** @class */ (function (_super) {\n __extends(EndAnchorFinder, _super);\n function EndAnchorFinder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.found = false;\n return _this;\n }\n EndAnchorFinder.prototype.visitEndAnchor = function (node) {\n this.found = true;\n };\n return EndAnchorFinder;\n }(BaseRegExpVisitor));\n var invalidRegex = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n try {\n var regexpAst = getRegExpAst(pattern);\n var endAnchorVisitor = new EndAnchorFinder();\n endAnchorVisitor.visit(regexpAst);\n return endAnchorVisitor.found;\n }\n catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return end_of_input.test(pattern.source);\n }\n });\n var errors = map(invalidRegex, function (currType) {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain end of input anchor '$'\\n\" +\n \"\\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.EOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexport function findEmptyMatchRegExps(tokenTypes) {\n var matchesEmptyString = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return pattern.test(\"\");\n });\n var errors = map(matchesEmptyString, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' must not match an empty string\",\n type: LexerDefinitionErrorType.EMPTY_MATCH_PATTERN,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nvar start_of_input = /[^\\\\[][\\^]|^\\^/;\nexport function findStartOfInputAnchor(tokenTypes) {\n var StartAnchorFinder = /** @class */ (function (_super) {\n __extends(StartAnchorFinder, _super);\n function StartAnchorFinder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.found = false;\n return _this;\n }\n StartAnchorFinder.prototype.visitStartAnchor = function (node) {\n this.found = true;\n };\n return StartAnchorFinder;\n }(BaseRegExpVisitor));\n var invalidRegex = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n try {\n var regexpAst = getRegExpAst(pattern);\n var startAnchorVisitor = new StartAnchorFinder();\n startAnchorVisitor.visit(regexpAst);\n return startAnchorVisitor.found;\n }\n catch (e) {\n // old behavior in case of runtime exceptions with regexp-to-ast.\n /* istanbul ignore next - cannot ensure an error in regexp-to-ast*/\n return start_of_input.test(pattern.source);\n }\n });\n var errors = map(invalidRegex, function (currType) {\n return {\n message: \"Unexpected RegExp Anchor Error:\\n\" +\n \"\\tToken Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' cannot contain start of input anchor '^'\\n\" +\n \"\\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.SOI_ANCHOR_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexport function findUnsupportedFlags(tokenTypes) {\n var invalidFlags = filter(tokenTypes, function (currType) {\n var pattern = currType[PATTERN];\n return pattern instanceof RegExp && (pattern.multiline || pattern.global);\n });\n var errors = map(invalidFlags, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'PATTERN' may NOT contain global('g') or multiline('m')\",\n type: LexerDefinitionErrorType.UNSUPPORTED_FLAGS_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\n// This can only test for identical duplicate RegExps, not semantically equivalent ones.\nexport function findDuplicatePatterns(tokenTypes) {\n var found = [];\n var identicalPatterns = map(tokenTypes, function (outerType) {\n return reduce(tokenTypes, function (result, innerType) {\n if (outerType.PATTERN.source === innerType.PATTERN.source &&\n !contains(found, innerType) &&\n innerType.PATTERN !== Lexer.NA) {\n // this avoids duplicates in the result, each Token Type may only appear in one \"set\"\n // in essence we are creating Equivalence classes on equality relation.\n found.push(innerType);\n result.push(innerType);\n return result;\n }\n return result;\n }, []);\n });\n identicalPatterns = compact(identicalPatterns);\n var duplicatePatterns = filter(identicalPatterns, function (currIdenticalSet) {\n return currIdenticalSet.length > 1;\n });\n var errors = map(duplicatePatterns, function (setOfIdentical) {\n var tokenTypeNames = map(setOfIdentical, function (currType) {\n return currType.name;\n });\n var dupPatternSrc = first(setOfIdentical).PATTERN;\n return {\n message: \"The same RegExp pattern ->\" + dupPatternSrc + \"<-\" +\n (\"has been used in all of the following Token Types: \" + tokenTypeNames.join(\", \") + \" <-\"),\n type: LexerDefinitionErrorType.DUPLICATE_PATTERNS_FOUND,\n tokenTypes: setOfIdentical\n };\n });\n return errors;\n}\nexport function findInvalidGroupType(tokenTypes) {\n var invalidTypes = filter(tokenTypes, function (clazz) {\n if (!has(clazz, \"GROUP\")) {\n return false;\n }\n var group = clazz.GROUP;\n return group !== Lexer.SKIPPED && group !== Lexer.NA && !isString(group);\n });\n var errors = map(invalidTypes, function (currType) {\n return {\n message: \"Token Type: ->\" +\n currType.name +\n \"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String\",\n type: LexerDefinitionErrorType.INVALID_GROUP_TYPE_FOUND,\n tokenTypes: [currType]\n };\n });\n return errors;\n}\nexport function findModesThatDoNotExist(tokenTypes, validModes) {\n var invalidModes = filter(tokenTypes, function (clazz) {\n return (clazz.PUSH_MODE !== undefined && !contains(validModes, clazz.PUSH_MODE));\n });\n var errors = map(invalidModes, function (tokType) {\n var msg = \"Token Type: ->\" + tokType.name + \"<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->\" + tokType.PUSH_MODE + \"<-\" +\n \"which does not exist\";\n return {\n message: msg,\n type: LexerDefinitionErrorType.PUSH_MODE_DOES_NOT_EXIST,\n tokenTypes: [tokType]\n };\n });\n return errors;\n}\nexport function findUnreachablePatterns(tokenTypes) {\n var errors = [];\n var canBeTested = reduce(tokenTypes, function (result, tokType, idx) {\n var pattern = tokType.PATTERN;\n if (pattern === Lexer.NA) {\n return result;\n }\n // a more comprehensive validation for all forms of regExps would require\n // deeper regExp analysis capabilities\n if (isString(pattern)) {\n result.push({ str: pattern, idx: idx, tokenType: tokType });\n }\n else if (isRegExp(pattern) && noMetaChar(pattern)) {\n result.push({ str: pattern.source, idx: idx, tokenType: tokType });\n }\n return result;\n }, []);\n forEach(tokenTypes, function (tokType, testIdx) {\n forEach(canBeTested, function (_a) {\n var str = _a.str, idx = _a.idx, tokenType = _a.tokenType;\n if (testIdx < idx && testTokenType(str, tokType.PATTERN)) {\n var msg = \"Token: ->\" + tokenType.name + \"<- can never be matched.\\n\" +\n (\"Because it appears AFTER the Token Type ->\" + tokType.name + \"<-\") +\n \"in the lexer's definition.\\n\" +\n \"See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE\";\n errors.push({\n message: msg,\n type: LexerDefinitionErrorType.UNREACHABLE_PATTERN,\n tokenTypes: [tokType, tokenType]\n });\n }\n });\n });\n return errors;\n}\nfunction testTokenType(str, pattern) {\n /* istanbul ignore else */\n if (isRegExp(pattern)) {\n var regExpArray = pattern.exec(str);\n return regExpArray !== null && regExpArray.index === 0;\n }\n else if (isFunction(pattern)) {\n // maintain the API of custom patterns\n return pattern(str, 0, [], {});\n }\n else if (has(pattern, \"exec\")) {\n // maintain the API of custom patterns\n return pattern.exec(str, 0, [], {});\n }\n else if (typeof pattern === \"string\") {\n return pattern === str;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction noMetaChar(regExp) {\n //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp\n var metaChars = [\n \".\",\n \"\\\\\",\n \"[\",\n \"]\",\n \"|\",\n \"^\",\n \"$\",\n \"(\",\n \")\",\n \"?\",\n \"*\",\n \"+\",\n \"{\"\n ];\n return (find(metaChars, function (char) { return regExp.source.indexOf(char) !== -1; }) === undefined);\n}\nexport function addStartOfInput(pattern) {\n var flags = pattern.ignoreCase ? \"i\" : \"\";\n // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input.\n // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/)\n return new RegExp(\"^(?:\" + pattern.source + \")\", flags);\n}\nexport function addStickyFlag(pattern) {\n var flags = pattern.ignoreCase ? \"iy\" : \"y\";\n // always wrapping in a none capturing group preceded by '^' to make sure matching can only work on start of input.\n // duplicate/redundant start of input markers have no meaning (/^^^^A/ === /^A/)\n return new RegExp(\"\" + pattern.source, flags);\n}\nexport function performRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n var errors = [];\n // some run time checks to help the end users.\n if (!has(lexerDefinition, DEFAULT_MODE)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" +\n DEFAULT_MODE +\n \"> property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\n });\n }\n if (!has(lexerDefinition, MODES)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized without a <\" +\n MODES +\n \"> property in its definition\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\n });\n }\n if (has(lexerDefinition, MODES) &&\n has(lexerDefinition, DEFAULT_MODE) &&\n !has(lexerDefinition.modes, lexerDefinition.defaultMode)) {\n errors.push({\n message: \"A MultiMode Lexer cannot be initialized with a \" + DEFAULT_MODE + \": <\" + lexerDefinition.defaultMode + \">\" +\n \"which does not exist\\n\",\n type: LexerDefinitionErrorType.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\n });\n }\n if (has(lexerDefinition, MODES)) {\n forEach(lexerDefinition.modes, function (currModeValue, currModeName) {\n forEach(currModeValue, function (currTokType, currIdx) {\n if (isUndefined(currTokType)) {\n errors.push({\n message: \"A Lexer cannot be initialized using an undefined Token Type. Mode:\" +\n (\"<\" + currModeName + \"> at index: <\" + currIdx + \">\\n\"),\n type: LexerDefinitionErrorType.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\n });\n }\n });\n });\n }\n return errors;\n}\nexport function performWarningRuntimeChecks(lexerDefinition, trackLines, lineTerminatorCharacters) {\n var warnings = [];\n var hasAnyLineBreak = false;\n var allTokenTypes = compact(flatten(mapValues(lexerDefinition.modes, function (tokTypes) { return tokTypes; })));\n var concreteTokenTypes = reject(allTokenTypes, function (currType) { return currType[PATTERN] === Lexer.NA; });\n var terminatorCharCodes = getCharCodes(lineTerminatorCharacters);\n if (trackLines) {\n forEach(concreteTokenTypes, function (tokType) {\n var currIssue = checkLineBreaksIssues(tokType, terminatorCharCodes);\n if (currIssue !== false) {\n var message = buildLineBreakIssueMessage(tokType, currIssue);\n var warningDescriptor = {\n message: message,\n type: currIssue.issue,\n tokenType: tokType\n };\n warnings.push(warningDescriptor);\n }\n else {\n // we don't want to attempt to scan if the user explicitly specified the line_breaks option.\n if (has(tokType, \"LINE_BREAKS\")) {\n if (tokType.LINE_BREAKS === true) {\n hasAnyLineBreak = true;\n }\n }\n else {\n if (canMatchCharCode(terminatorCharCodes, tokType.PATTERN)) {\n hasAnyLineBreak = true;\n }\n }\n }\n });\n }\n if (trackLines && !hasAnyLineBreak) {\n warnings.push({\n message: \"Warning: No LINE_BREAKS Found.\\n\" +\n \"\\tThis Lexer has been defined to track line and column information,\\n\" +\n \"\\tBut none of the Token Types can be identified as matching a line terminator.\\n\" +\n \"\\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \\n\" +\n \"\\tfor details.\",\n type: LexerDefinitionErrorType.NO_LINE_BREAKS_FLAGS\n });\n }\n return warnings;\n}\nexport function cloneEmptyGroups(emptyGroups) {\n var clonedResult = {};\n var groupKeys = keys(emptyGroups);\n forEach(groupKeys, function (currKey) {\n var currGroupValue = emptyGroups[currKey];\n /* istanbul ignore else */\n if (isArray(currGroupValue)) {\n clonedResult[currKey] = [];\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n return clonedResult;\n}\n// TODO: refactor to avoid duplication\nexport function isCustomPattern(tokenType) {\n var pattern = tokenType.PATTERN;\n /* istanbul ignore else */\n if (isRegExp(pattern)) {\n return false;\n }\n else if (isFunction(pattern)) {\n // CustomPatternMatcherFunc - custom patterns do not require any transformations, only wrapping in a RegExp Like object\n return true;\n }\n else if (has(pattern, \"exec\")) {\n // ICustomPattern\n return true;\n }\n else if (isString(pattern)) {\n return false;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function isShortPattern(pattern) {\n if (isString(pattern) && pattern.length === 1) {\n return pattern.charCodeAt(0);\n }\n else {\n return false;\n }\n}\n/**\n * Faster than using a RegExp for default newline detection during lexing.\n */\nexport var LineTerminatorOptimizedTester = {\n // implements /\\n|\\r\\n?/g.test\n test: function (text) {\n var len = text.length;\n for (var i = this.lastIndex; i < len; i++) {\n var c = text.charCodeAt(i);\n if (c === 10) {\n this.lastIndex = i + 1;\n return true;\n }\n else if (c === 13) {\n if (text.charCodeAt(i + 1) === 10) {\n this.lastIndex = i + 2;\n }\n else {\n this.lastIndex = i + 1;\n }\n return true;\n }\n }\n return false;\n },\n lastIndex: 0\n};\nfunction checkLineBreaksIssues(tokType, lineTerminatorCharCodes) {\n if (has(tokType, \"LINE_BREAKS\")) {\n // if the user explicitly declared the line_breaks option we will respect their choice\n // and assume it is correct.\n return false;\n }\n else {\n /* istanbul ignore else */\n if (isRegExp(tokType.PATTERN)) {\n try {\n canMatchCharCode(lineTerminatorCharCodes, tokType.PATTERN);\n }\n catch (e) {\n /* istanbul ignore next - to test this we would have to mock to throw an error */\n return {\n issue: LexerDefinitionErrorType.IDENTIFY_TERMINATOR,\n errMsg: e.message\n };\n }\n return false;\n }\n else if (isString(tokType.PATTERN)) {\n // string literal patterns can always be analyzed to detect line terminator usage\n return false;\n }\n else if (isCustomPattern(tokType)) {\n // custom token types\n return { issue: LexerDefinitionErrorType.CUSTOM_LINE_BREAK };\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n}\nexport function buildLineBreakIssueMessage(tokType, details) {\n /* istanbul ignore else */\n if (details.issue === LexerDefinitionErrorType.IDENTIFY_TERMINATOR) {\n return (\"Warning: unable to identify line terminator usage in pattern.\\n\" +\n (\"\\tThe problem is in the <\" + tokType.name + \"> Token Type\\n\") +\n (\"\\t Root cause: \" + details.errMsg + \".\\n\") +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR\");\n }\n else if (details.issue === LexerDefinitionErrorType.CUSTOM_LINE_BREAK) {\n return (\"Warning: A Custom Token Pattern should specify the option.\\n\" +\n (\"\\tThe problem is in the <\" + tokType.name + \"> Token Type\\n\") +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK\");\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction getCharCodes(charsOrCodes) {\n var charCodes = map(charsOrCodes, function (numOrString) {\n if (isString(numOrString) && numOrString.length > 0) {\n return numOrString.charCodeAt(0);\n }\n else {\n return numOrString;\n }\n });\n return charCodes;\n}\nfunction addToMapOfArrays(map, key, value) {\n if (map[key] === undefined) {\n map[key] = [value];\n }\n else {\n map[key].push(value);\n }\n}\nexport var minOptimizationVal = 256;\n/**\n * We ae mapping charCode above ASCI (256) into buckets each in the size of 256.\n * This is because ASCI are the most common start chars so each one of those will get its own\n * possible token configs vector.\n *\n * Tokens starting with charCodes \"above\" ASCI are uncommon, so we can \"afford\"\n * to place these into buckets of possible token configs, What we gain from\n * this is avoiding the case of creating an optimization 'charCodeToPatternIdxToConfig'\n * which would contain 10,000+ arrays of small size (e.g unicode Identifiers scenario).\n * Our 'charCodeToPatternIdxToConfig' max size will now be:\n * 256 + (2^16 / 2^8) - 1 === 511\n *\n * note the hack for fast division integer part extraction\n * See: https://stackoverflow.com/a/4228528\n */\nexport function charCodeToOptimizedIndex(charCode) {\n return charCode < minOptimizationVal\n ? charCode\n : charCodeToOptimizedIdxMap[charCode];\n}\n/**\n * This is a compromise between cold start / hot running performance\n * Creating this array takes ~3ms on a modern machine,\n * But if we perform the computation at runtime as needed the CSS Lexer benchmark\n * performance degrades by ~10%\n *\n * TODO: Perhaps it should be lazy initialized only if a charCode > 255 is used.\n */\nvar charCodeToOptimizedIdxMap = [];\nfunction initCharCodeToOptimizedIndexMap() {\n if (isEmpty(charCodeToOptimizedIdxMap)) {\n charCodeToOptimizedIdxMap = new Array(65536);\n for (var i = 0; i < 65536; i++) {\n /* tslint:disable */\n charCodeToOptimizedIdxMap[i] = i > 255 ? 255 + ~~(i / 255) : i;\n /* tslint:enable */\n }\n }\n}\n//# sourceMappingURL=lexer.js.map","import { cloneArr, compact, contains, difference, flatten, forEach, has, isArray, isEmpty, map } from \"../utils/utils\";\nexport function tokenStructuredMatcher(tokInstance, tokConstructor) {\n var instanceType = tokInstance.tokenTypeIdx;\n if (instanceType === tokConstructor.tokenTypeIdx) {\n return true;\n }\n else {\n return (tokConstructor.isParent === true &&\n tokConstructor.categoryMatchesMap[instanceType] === true);\n }\n}\n// Optimized tokenMatcher in case our grammar does not use token categories\n// Being so tiny it is much more likely to be in-lined and this avoid the function call overhead\nexport function tokenStructuredMatcherNoCategories(token, tokType) {\n return token.tokenTypeIdx === tokType.tokenTypeIdx;\n}\nexport var tokenShortNameIdx = 1;\nexport var tokenIdxToClass = {};\nexport function augmentTokenTypes(tokenTypes) {\n // collect the parent Token Types as well.\n var tokenTypesAndParents = expandCategories(tokenTypes);\n // add required tokenType and categoryMatches properties\n assignTokenDefaultProps(tokenTypesAndParents);\n // fill up the categoryMatches\n assignCategoriesMapProp(tokenTypesAndParents);\n assignCategoriesTokensProp(tokenTypesAndParents);\n forEach(tokenTypesAndParents, function (tokType) {\n tokType.isParent = tokType.categoryMatches.length > 0;\n });\n}\nexport function expandCategories(tokenTypes) {\n var result = cloneArr(tokenTypes);\n var categories = tokenTypes;\n var searching = true;\n while (searching) {\n categories = compact(flatten(map(categories, function (currTokType) { return currTokType.CATEGORIES; })));\n var newCategories = difference(categories, result);\n result = result.concat(newCategories);\n if (isEmpty(newCategories)) {\n searching = false;\n }\n else {\n categories = newCategories;\n }\n }\n return result;\n}\nexport function assignTokenDefaultProps(tokenTypes) {\n forEach(tokenTypes, function (currTokType) {\n if (!hasShortKeyProperty(currTokType)) {\n tokenIdxToClass[tokenShortNameIdx] = currTokType;\n currTokType.tokenTypeIdx = tokenShortNameIdx++;\n }\n // CATEGORIES? : TokenType | TokenType[]\n if (hasCategoriesProperty(currTokType) &&\n !isArray(currTokType.CATEGORIES)\n // &&\n // !isUndefined(currTokType.CATEGORIES.PATTERN)\n ) {\n currTokType.CATEGORIES = [currTokType.CATEGORIES];\n }\n if (!hasCategoriesProperty(currTokType)) {\n currTokType.CATEGORIES = [];\n }\n if (!hasExtendingTokensTypesProperty(currTokType)) {\n currTokType.categoryMatches = [];\n }\n if (!hasExtendingTokensTypesMapProperty(currTokType)) {\n currTokType.categoryMatchesMap = {};\n }\n });\n}\nexport function assignCategoriesTokensProp(tokenTypes) {\n forEach(tokenTypes, function (currTokType) {\n // avoid duplications\n currTokType.categoryMatches = [];\n forEach(currTokType.categoryMatchesMap, function (val, key) {\n currTokType.categoryMatches.push(tokenIdxToClass[key].tokenTypeIdx);\n });\n });\n}\nexport function assignCategoriesMapProp(tokenTypes) {\n forEach(tokenTypes, function (currTokType) {\n singleAssignCategoriesToksMap([], currTokType);\n });\n}\nexport function singleAssignCategoriesToksMap(path, nextNode) {\n forEach(path, function (pathNode) {\n nextNode.categoryMatchesMap[pathNode.tokenTypeIdx] = true;\n });\n forEach(nextNode.CATEGORIES, function (nextCategory) {\n var newPath = path.concat(nextNode);\n // avoids infinite loops due to cyclic categories.\n if (!contains(newPath, nextCategory)) {\n singleAssignCategoriesToksMap(newPath, nextCategory);\n }\n });\n}\nexport function hasShortKeyProperty(tokType) {\n return has(tokType, \"tokenTypeIdx\");\n}\nexport function hasCategoriesProperty(tokType) {\n return has(tokType, \"CATEGORIES\");\n}\nexport function hasExtendingTokensTypesProperty(tokType) {\n return has(tokType, \"categoryMatches\");\n}\nexport function hasExtendingTokensTypesMapProperty(tokType) {\n return has(tokType, \"categoryMatchesMap\");\n}\nexport function isTokenType(tokType) {\n return has(tokType, \"tokenTypeIdx\");\n}\n//# sourceMappingURL=tokens.js.map","export var defaultLexerErrorProvider = {\n buildUnableToPopLexerModeMessage: function (token) {\n return \"Unable to pop Lexer Mode after encountering Token ->\" + token.image + \"<- The Mode Stack is empty\";\n },\n buildUnexpectedCharactersMessage: function (fullText, startOffset, length, line, column) {\n return (\"unexpected character: ->\" + fullText.charAt(startOffset) + \"<- at offset: \" + startOffset + \",\" + (\" skipped \" + length + \" characters.\"));\n }\n};\n//# sourceMappingURL=lexer_errors_public.js.map","import { analyzeTokenTypes, charCodeToOptimizedIndex, cloneEmptyGroups, DEFAULT_MODE, LineTerminatorOptimizedTester, performRuntimeChecks, performWarningRuntimeChecks, SUPPORT_STICKY, validatePatterns } from \"./lexer\";\nimport { cloneArr, cloneObj, forEach, IDENTITY, isArray, isEmpty, isUndefined, keys, last, map, merge, NOOP, PRINT_WARNING, reduce, reject, timer, toFastProperties } from \"../utils/utils\";\nimport { augmentTokenTypes } from \"./tokens\";\nimport { defaultLexerErrorProvider } from \"../scan/lexer_errors_public\";\nimport { clearRegExpParserCache } from \"./reg_exp_parser\";\nexport var LexerDefinitionErrorType;\n(function (LexerDefinitionErrorType) {\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MISSING_PATTERN\"] = 0] = \"MISSING_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"INVALID_PATTERN\"] = 1] = \"INVALID_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"EOI_ANCHOR_FOUND\"] = 2] = \"EOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"UNSUPPORTED_FLAGS_FOUND\"] = 3] = \"UNSUPPORTED_FLAGS_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"DUPLICATE_PATTERNS_FOUND\"] = 4] = \"DUPLICATE_PATTERNS_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"INVALID_GROUP_TYPE_FOUND\"] = 5] = \"INVALID_GROUP_TYPE_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"PUSH_MODE_DOES_NOT_EXIST\"] = 6] = \"PUSH_MODE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\"] = 7] = \"MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\"] = 8] = \"MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\"] = 9] = \"MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\"] = 10] = \"LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"SOI_ANCHOR_FOUND\"] = 11] = \"SOI_ANCHOR_FOUND\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"EMPTY_MATCH_PATTERN\"] = 12] = \"EMPTY_MATCH_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"NO_LINE_BREAKS_FLAGS\"] = 13] = \"NO_LINE_BREAKS_FLAGS\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"UNREACHABLE_PATTERN\"] = 14] = \"UNREACHABLE_PATTERN\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"IDENTIFY_TERMINATOR\"] = 15] = \"IDENTIFY_TERMINATOR\";\n LexerDefinitionErrorType[LexerDefinitionErrorType[\"CUSTOM_LINE_BREAK\"] = 16] = \"CUSTOM_LINE_BREAK\";\n})(LexerDefinitionErrorType || (LexerDefinitionErrorType = {}));\nvar DEFAULT_LEXER_CONFIG = {\n deferDefinitionErrorsHandling: false,\n positionTracking: \"full\",\n lineTerminatorsPattern: /\\n|\\r\\n?/g,\n lineTerminatorCharacters: [\"\\n\", \"\\r\"],\n ensureOptimizations: false,\n safeMode: false,\n errorMessageProvider: defaultLexerErrorProvider,\n traceInitPerf: false,\n skipValidations: false\n};\nObject.freeze(DEFAULT_LEXER_CONFIG);\nvar Lexer = /** @class */ (function () {\n function Lexer(lexerDefinition, config) {\n var _this = this;\n if (config === void 0) { config = DEFAULT_LEXER_CONFIG; }\n this.lexerDefinition = lexerDefinition;\n this.lexerDefinitionErrors = [];\n this.lexerDefinitionWarning = [];\n this.patternIdxToConfig = {};\n this.charCodeToPatternIdxToConfig = {};\n this.modes = [];\n this.emptyGroups = {};\n this.config = undefined;\n this.trackStartLines = true;\n this.trackEndLines = true;\n this.hasCustom = false;\n this.canModeBeOptimized = {};\n if (typeof config === \"boolean\") {\n throw Error(\"The second argument to the Lexer constructor is now an ILexerConfig Object.\\n\" +\n \"a boolean 2nd argument is no longer supported\");\n }\n // todo: defaults func?\n this.config = merge(DEFAULT_LEXER_CONFIG, config);\n var traceInitVal = this.config.traceInitPerf;\n if (traceInitVal === true) {\n this.traceInitMaxIdent = Infinity;\n this.traceInitPerf = true;\n }\n else if (typeof traceInitVal === \"number\") {\n this.traceInitMaxIdent = traceInitVal;\n this.traceInitPerf = true;\n }\n this.traceInitIndent = -1;\n this.TRACE_INIT(\"Lexer Constructor\", function () {\n var actualDefinition;\n var hasOnlySingleMode = true;\n _this.TRACE_INIT(\"Lexer Config handling\", function () {\n if (_this.config.lineTerminatorsPattern ===\n DEFAULT_LEXER_CONFIG.lineTerminatorsPattern) {\n // optimized built-in implementation for the defaults definition of lineTerminators\n _this.config.lineTerminatorsPattern = LineTerminatorOptimizedTester;\n }\n else {\n if (_this.config.lineTerminatorCharacters ===\n DEFAULT_LEXER_CONFIG.lineTerminatorCharacters) {\n throw Error(\"Error: Missing property on the Lexer config.\\n\" +\n \"\\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS\");\n }\n }\n if (config.safeMode && config.ensureOptimizations) {\n throw Error('\"safeMode\" and \"ensureOptimizations\" flags are mutually exclusive.');\n }\n _this.trackStartLines = /full|onlyStart/i.test(_this.config.positionTracking);\n _this.trackEndLines = /full/i.test(_this.config.positionTracking);\n // Convert SingleModeLexerDefinition into a IMultiModeLexerDefinition.\n if (isArray(lexerDefinition)) {\n actualDefinition = { modes: {} };\n actualDefinition.modes[DEFAULT_MODE] = cloneArr(lexerDefinition);\n actualDefinition[DEFAULT_MODE] = DEFAULT_MODE;\n }\n else {\n // no conversion needed, input should already be a IMultiModeLexerDefinition\n hasOnlySingleMode = false;\n actualDefinition = cloneObj(lexerDefinition);\n }\n });\n if (_this.config.skipValidations === false) {\n _this.TRACE_INIT(\"performRuntimeChecks\", function () {\n _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat(performRuntimeChecks(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters));\n });\n _this.TRACE_INIT(\"performWarningRuntimeChecks\", function () {\n _this.lexerDefinitionWarning = _this.lexerDefinitionWarning.concat(performWarningRuntimeChecks(actualDefinition, _this.trackStartLines, _this.config.lineTerminatorCharacters));\n });\n }\n // for extra robustness to avoid throwing an none informative error message\n actualDefinition.modes = actualDefinition.modes\n ? actualDefinition.modes\n : {};\n // an error of undefined TokenTypes will be detected in \"performRuntimeChecks\" above.\n // this transformation is to increase robustness in the case of partially invalid lexer definition.\n forEach(actualDefinition.modes, function (currModeValue, currModeName) {\n actualDefinition.modes[currModeName] = reject(currModeValue, function (currTokType) { return isUndefined(currTokType); });\n });\n var allModeNames = keys(actualDefinition.modes);\n forEach(actualDefinition.modes, function (currModDef, currModName) {\n _this.TRACE_INIT(\"Mode: <\" + currModName + \"> processing\", function () {\n _this.modes.push(currModName);\n if (_this.config.skipValidations === false) {\n _this.TRACE_INIT(\"validatePatterns\", function () {\n _this.lexerDefinitionErrors = _this.lexerDefinitionErrors.concat(validatePatterns(currModDef, allModeNames));\n });\n }\n // If definition errors were encountered, the analysis phase may fail unexpectedly/\n // Considering a lexer with definition errors may never be used, there is no point\n // to performing the analysis anyhow...\n if (isEmpty(_this.lexerDefinitionErrors)) {\n augmentTokenTypes(currModDef);\n var currAnalyzeResult_1;\n _this.TRACE_INIT(\"analyzeTokenTypes\", function () {\n currAnalyzeResult_1 = analyzeTokenTypes(currModDef, {\n lineTerminatorCharacters: _this.config\n .lineTerminatorCharacters,\n positionTracking: config.positionTracking,\n ensureOptimizations: config.ensureOptimizations,\n safeMode: config.safeMode,\n tracer: _this.TRACE_INIT.bind(_this)\n });\n });\n _this.patternIdxToConfig[currModName] =\n currAnalyzeResult_1.patternIdxToConfig;\n _this.charCodeToPatternIdxToConfig[currModName] =\n currAnalyzeResult_1.charCodeToPatternIdxToConfig;\n _this.emptyGroups = merge(_this.emptyGroups, currAnalyzeResult_1.emptyGroups);\n _this.hasCustom = currAnalyzeResult_1.hasCustom || _this.hasCustom;\n _this.canModeBeOptimized[currModName] =\n currAnalyzeResult_1.canBeOptimized;\n }\n });\n });\n _this.defaultMode = actualDefinition.defaultMode;\n if (!isEmpty(_this.lexerDefinitionErrors) &&\n !_this.config.deferDefinitionErrorsHandling) {\n var allErrMessages = map(_this.lexerDefinitionErrors, function (error) {\n return error.message;\n });\n var allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Errors detected in definition of Lexer:\\n\" + allErrMessagesString);\n }\n // Only print warning if there are no errors, This will avoid pl\n forEach(_this.lexerDefinitionWarning, function (warningDescriptor) {\n PRINT_WARNING(warningDescriptor.message);\n });\n _this.TRACE_INIT(\"Choosing sub-methods implementations\", function () {\n // Choose the relevant internal implementations for this specific parser.\n // These implementations should be in-lined by the JavaScript engine\n // to provide optimal performance in each scenario.\n if (SUPPORT_STICKY) {\n _this.chopInput = IDENTITY;\n _this.match = _this.matchWithTest;\n }\n else {\n _this.updateLastIndex = NOOP;\n _this.match = _this.matchWithExec;\n }\n if (hasOnlySingleMode) {\n _this.handleModes = NOOP;\n }\n if (_this.trackStartLines === false) {\n _this.computeNewColumn = IDENTITY;\n }\n if (_this.trackEndLines === false) {\n _this.updateTokenEndLineColumnLocation = NOOP;\n }\n if (/full/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createFullToken;\n }\n else if (/onlyStart/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createStartOnlyToken;\n }\n else if (/onlyOffset/i.test(_this.config.positionTracking)) {\n _this.createTokenInstance = _this.createOffsetOnlyToken;\n }\n else {\n throw Error(\"Invalid config option: \\\"\" + _this.config.positionTracking + \"\\\"\");\n }\n if (_this.hasCustom) {\n _this.addToken = _this.addTokenUsingPush;\n _this.handlePayload = _this.handlePayloadWithCustom;\n }\n else {\n _this.addToken = _this.addTokenUsingMemberAccess;\n _this.handlePayload = _this.handlePayloadNoCustom;\n }\n });\n _this.TRACE_INIT(\"Failed Optimization Warnings\", function () {\n var unOptimizedModes = reduce(_this.canModeBeOptimized, function (cannotBeOptimized, canBeOptimized, modeName) {\n if (canBeOptimized === false) {\n cannotBeOptimized.push(modeName);\n }\n return cannotBeOptimized;\n }, []);\n if (config.ensureOptimizations && !isEmpty(unOptimizedModes)) {\n throw Error(\"Lexer Modes: < \" + unOptimizedModes.join(\", \") + \" > cannot be optimized.\\n\" +\n '\\t Disable the \"ensureOptimizations\" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\\n' +\n \"\\t Or inspect the console log for details on how to resolve these issues.\");\n }\n });\n _this.TRACE_INIT(\"clearRegExpParserCache\", function () {\n clearRegExpParserCache();\n });\n _this.TRACE_INIT(\"toFastProperties\", function () {\n toFastProperties(_this);\n });\n });\n }\n Lexer.prototype.tokenize = function (text, initialMode) {\n if (initialMode === void 0) { initialMode = this.defaultMode; }\n if (!isEmpty(this.lexerDefinitionErrors)) {\n var allErrMessages = map(this.lexerDefinitionErrors, function (error) {\n return error.message;\n });\n var allErrMessagesString = allErrMessages.join(\"-----------------------\\n\");\n throw new Error(\"Unable to Tokenize because Errors detected in definition of Lexer:\\n\" +\n allErrMessagesString);\n }\n var lexResult = this.tokenizeInternal(text, initialMode);\n return lexResult;\n };\n // There is quite a bit of duplication between this and \"tokenizeInternalLazy\"\n // This is intentional due to performance considerations.\n Lexer.prototype.tokenizeInternal = function (text, initialMode) {\n var _this = this;\n var i, j, matchAltImage, longerAltIdx, matchedImage, payload, altPayload, imageLength, group, tokType, newToken, errLength, droppedChar, msg, match;\n var orgText = text;\n var orgLength = orgText.length;\n var offset = 0;\n var matchedTokensIndex = 0;\n // initializing the tokensArray to the \"guessed\" size.\n // guessing too little will still reduce the number of array re-sizes on pushes.\n // guessing too large (Tested by guessing x4 too large) may cost a bit more of memory\n // but would still have a faster runtime by avoiding (All but one) array resizing.\n var guessedNumberOfTokens = this.hasCustom\n ? 0 // will break custom token pattern APIs the matchedTokens array will contain undefined elements.\n : Math.floor(text.length / 10);\n var matchedTokens = new Array(guessedNumberOfTokens);\n var errors = [];\n var line = this.trackStartLines ? 1 : undefined;\n var column = this.trackStartLines ? 1 : undefined;\n var groups = cloneEmptyGroups(this.emptyGroups);\n var trackLines = this.trackStartLines;\n var lineTerminatorPattern = this.config.lineTerminatorsPattern;\n var currModePatternsLength = 0;\n var patternIdxToConfig = [];\n var currCharCodeToPatternIdxToConfig = [];\n var modeStack = [];\n var emptyArray = [];\n Object.freeze(emptyArray);\n var getPossiblePatterns = undefined;\n function getPossiblePatternsSlow() {\n return patternIdxToConfig;\n }\n function getPossiblePatternsOptimized(charCode) {\n var optimizedCharIdx = charCodeToOptimizedIndex(charCode);\n var possiblePatterns = currCharCodeToPatternIdxToConfig[optimizedCharIdx];\n if (possiblePatterns === undefined) {\n return emptyArray;\n }\n else {\n return possiblePatterns;\n }\n }\n var pop_mode = function (popToken) {\n // TODO: perhaps avoid this error in the edge case there is no more input?\n if (modeStack.length === 1 &&\n // if we have both a POP_MODE and a PUSH_MODE this is in-fact a \"transition\"\n // So no error should occur.\n popToken.tokenType.PUSH_MODE === undefined) {\n // if we try to pop the last mode there lexer will no longer have ANY mode.\n // thus the pop is ignored, an error will be created and the lexer will continue parsing in the previous mode.\n var msg_1 = _this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(popToken);\n errors.push({\n offset: popToken.startOffset,\n line: popToken.startLine !== undefined ? popToken.startLine : undefined,\n column: popToken.startColumn !== undefined\n ? popToken.startColumn\n : undefined,\n length: popToken.image.length,\n message: msg_1\n });\n }\n else {\n modeStack.pop();\n var newMode = last(modeStack);\n patternIdxToConfig = _this.patternIdxToConfig[newMode];\n currCharCodeToPatternIdxToConfig = _this.charCodeToPatternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n var modeCanBeOptimized = _this.canModeBeOptimized[newMode] && _this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n }\n else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n };\n function push_mode(newMode) {\n modeStack.push(newMode);\n currCharCodeToPatternIdxToConfig = this.charCodeToPatternIdxToConfig[newMode];\n patternIdxToConfig = this.patternIdxToConfig[newMode];\n currModePatternsLength = patternIdxToConfig.length;\n currModePatternsLength = patternIdxToConfig.length;\n var modeCanBeOptimized = this.canModeBeOptimized[newMode] && this.config.safeMode === false;\n if (currCharCodeToPatternIdxToConfig && modeCanBeOptimized) {\n getPossiblePatterns = getPossiblePatternsOptimized;\n }\n else {\n getPossiblePatterns = getPossiblePatternsSlow;\n }\n }\n // this pattern seems to avoid a V8 de-optimization, although that de-optimization does not\n // seem to matter performance wise.\n push_mode.call(this, initialMode);\n var currConfig;\n while (offset < orgLength) {\n matchedImage = null;\n var nextCharCode = orgText.charCodeAt(offset);\n var chosenPatternIdxToConfig = getPossiblePatterns(nextCharCode);\n var chosenPatternsLength = chosenPatternIdxToConfig.length;\n for (i = 0; i < chosenPatternsLength; i++) {\n currConfig = chosenPatternIdxToConfig[i];\n var currPattern = currConfig.pattern;\n payload = null;\n // manually in-lined because > 600 chars won't be in-lined in V8\n var singleCharCode = currConfig.short;\n if (singleCharCode !== false) {\n if (nextCharCode === singleCharCode) {\n // single character string\n matchedImage = currPattern;\n }\n }\n else if (currConfig.isCustom === true) {\n match = currPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchedImage = match[0];\n if (match.payload !== undefined) {\n payload = match.payload;\n }\n }\n else {\n matchedImage = null;\n }\n }\n else {\n this.updateLastIndex(currPattern, offset);\n matchedImage = this.match(currPattern, text, offset);\n }\n if (matchedImage !== null) {\n // even though this pattern matched we must try a another longer alternative.\n // this can be used to prioritize keywords over identifiers\n longerAltIdx = currConfig.longerAlt;\n if (longerAltIdx !== undefined) {\n // TODO: micro optimize, avoid extra prop access\n // by saving/linking longerAlt on the original config?\n var longerAltConfig = patternIdxToConfig[longerAltIdx];\n var longerAltPattern = longerAltConfig.pattern;\n altPayload = null;\n // single Char can never be a longer alt so no need to test it.\n // manually in-lined because > 600 chars won't be in-lined in V8\n if (longerAltConfig.isCustom === true) {\n match = longerAltPattern.exec(orgText, offset, matchedTokens, groups);\n if (match !== null) {\n matchAltImage = match[0];\n if (match.payload !== undefined) {\n altPayload = match.payload;\n }\n }\n else {\n matchAltImage = null;\n }\n }\n else {\n this.updateLastIndex(longerAltPattern, offset);\n matchAltImage = this.match(longerAltPattern, text, offset);\n }\n if (matchAltImage && matchAltImage.length > matchedImage.length) {\n matchedImage = matchAltImage;\n payload = altPayload;\n currConfig = longerAltConfig;\n }\n }\n break;\n }\n }\n // successful match\n if (matchedImage !== null) {\n imageLength = matchedImage.length;\n group = currConfig.group;\n if (group !== undefined) {\n tokType = currConfig.tokenTypeIdx;\n // TODO: \"offset + imageLength\" and the new column may be computed twice in case of \"full\" location information inside\n // createFullToken method\n newToken = this.createTokenInstance(matchedImage, offset, tokType, currConfig.tokenType, line, column, imageLength);\n this.handlePayload(newToken, payload);\n // TODO: optimize NOOP in case there are no special groups?\n if (group === false) {\n matchedTokensIndex = this.addToken(matchedTokens, matchedTokensIndex, newToken);\n }\n else {\n groups[group].push(newToken);\n }\n }\n text = this.chopInput(text, imageLength);\n offset = offset + imageLength;\n // TODO: with newlines the column may be assigned twice\n column = this.computeNewColumn(column, imageLength);\n if (trackLines === true && currConfig.canLineTerminator === true) {\n var numOfLTsInMatch = 0;\n var foundTerminator = void 0;\n var lastLTEndOffset = void 0;\n lineTerminatorPattern.lastIndex = 0;\n do {\n foundTerminator = lineTerminatorPattern.test(matchedImage);\n if (foundTerminator === true) {\n lastLTEndOffset = lineTerminatorPattern.lastIndex - 1;\n numOfLTsInMatch++;\n }\n } while (foundTerminator === true);\n if (numOfLTsInMatch !== 0) {\n line = line + numOfLTsInMatch;\n column = imageLength - lastLTEndOffset;\n this.updateTokenEndLineColumnLocation(newToken, group, lastLTEndOffset, numOfLTsInMatch, line, column, imageLength);\n }\n }\n // will be NOOP if no modes present\n this.handleModes(currConfig, pop_mode, push_mode, newToken);\n }\n else {\n // error recovery, drop characters until we identify a valid token's start point\n var errorStartOffset = offset;\n var errorLine = line;\n var errorColumn = column;\n var foundResyncPoint = false;\n while (!foundResyncPoint && offset < orgLength) {\n // drop chars until we succeed in matching something\n droppedChar = orgText.charCodeAt(offset);\n // Identity Func (when sticky flag is enabled)\n text = this.chopInput(text, 1);\n offset++;\n for (j = 0; j < currModePatternsLength; j++) {\n var currConfig_1 = patternIdxToConfig[j];\n var currPattern = currConfig_1.pattern;\n // manually in-lined because > 600 chars won't be in-lined in V8\n var singleCharCode = currConfig_1.short;\n if (singleCharCode !== false) {\n if (orgText.charCodeAt(offset) === singleCharCode) {\n // single character string\n foundResyncPoint = true;\n }\n }\n else if (currConfig_1.isCustom === true) {\n foundResyncPoint =\n currPattern.exec(orgText, offset, matchedTokens, groups) !==\n null;\n }\n else {\n this.updateLastIndex(currPattern, offset);\n foundResyncPoint = currPattern.exec(text) !== null;\n }\n if (foundResyncPoint === true) {\n break;\n }\n }\n }\n errLength = offset - errorStartOffset;\n // at this point we either re-synced or reached the end of the input text\n msg = this.config.errorMessageProvider.buildUnexpectedCharactersMessage(orgText, errorStartOffset, errLength, errorLine, errorColumn);\n errors.push({\n offset: errorStartOffset,\n line: errorLine,\n column: errorColumn,\n length: errLength,\n message: msg\n });\n }\n }\n // if we do have custom patterns which push directly into the\n // TODO: custom tokens should not push directly??\n if (!this.hasCustom) {\n // if we guessed a too large size for the tokens array this will shrink it to the right size.\n matchedTokens.length = matchedTokensIndex;\n }\n return {\n tokens: matchedTokens,\n groups: groups,\n errors: errors\n };\n };\n Lexer.prototype.handleModes = function (config, pop_mode, push_mode, newToken) {\n if (config.pop === true) {\n // need to save the PUSH_MODE property as if the mode is popped\n // patternIdxToPopMode is updated to reflect the new mode after popping the stack\n var pushMode = config.push;\n pop_mode(newToken);\n if (pushMode !== undefined) {\n push_mode.call(this, pushMode);\n }\n }\n else if (config.push !== undefined) {\n push_mode.call(this, config.push);\n }\n };\n Lexer.prototype.chopInput = function (text, length) {\n return text.substring(length);\n };\n Lexer.prototype.updateLastIndex = function (regExp, newLastIndex) {\n regExp.lastIndex = newLastIndex;\n };\n // TODO: decrease this under 600 characters? inspect stripping comments option in TSC compiler\n Lexer.prototype.updateTokenEndLineColumnLocation = function (newToken, group, lastLTIdx, numOfLTsInMatch, line, column, imageLength) {\n var lastCharIsLT, fixForEndingInLT;\n if (group !== undefined) {\n // a none skipped multi line Token, need to update endLine/endColumn\n lastCharIsLT = lastLTIdx === imageLength - 1;\n fixForEndingInLT = lastCharIsLT ? -1 : 0;\n if (!(numOfLTsInMatch === 1 && lastCharIsLT === true)) {\n // if a token ends in a LT that last LT only affects the line numbering of following Tokens\n newToken.endLine = line + fixForEndingInLT;\n // the last LT in a token does not affect the endColumn either as the [columnStart ... columnEnd)\n // inclusive to exclusive range.\n newToken.endColumn = column - 1 + -fixForEndingInLT;\n }\n // else single LT in the last character of a token, no need to modify the endLine/EndColumn\n }\n };\n Lexer.prototype.computeNewColumn = function (oldColumn, imageLength) {\n return oldColumn + imageLength;\n };\n // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime.\n /* istanbul ignore next - place holder */\n Lexer.prototype.createTokenInstance = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return null;\n };\n Lexer.prototype.createOffsetOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType) {\n return {\n image: image,\n startOffset: startOffset,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.createStartOnlyToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn) {\n return {\n image: image,\n startOffset: startOffset,\n startLine: startLine,\n startColumn: startColumn,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n Lexer.prototype.createFullToken = function (image, startOffset, tokenTypeIdx, tokenType, startLine, startColumn, imageLength) {\n return {\n image: image,\n startOffset: startOffset,\n endOffset: startOffset + imageLength - 1,\n startLine: startLine,\n endLine: startLine,\n startColumn: startColumn,\n endColumn: startColumn + imageLength - 1,\n tokenTypeIdx: tokenTypeIdx,\n tokenType: tokenType\n };\n };\n // Place holder, will be replaced by the correct variant according to the locationTracking option at runtime.\n /* istanbul ignore next - place holder */\n Lexer.prototype.addToken = function (tokenVector, index, tokenToAdd) {\n return 666;\n };\n Lexer.prototype.addTokenUsingPush = function (tokenVector, index, tokenToAdd) {\n tokenVector.push(tokenToAdd);\n return index;\n };\n Lexer.prototype.addTokenUsingMemberAccess = function (tokenVector, index, tokenToAdd) {\n tokenVector[index] = tokenToAdd;\n index++;\n return index;\n };\n // Place holder, will be replaced by the correct variant according to the hasCustom flag option at runtime.\n /* istanbul ignore next - place holder */\n Lexer.prototype.handlePayload = function (token, payload) { };\n Lexer.prototype.handlePayloadNoCustom = function (token, payload) { };\n Lexer.prototype.handlePayloadWithCustom = function (token, payload) {\n if (payload !== null) {\n token.payload = payload;\n }\n };\n /* istanbul ignore next - place holder to be replaced with chosen alternative at runtime */\n Lexer.prototype.match = function (pattern, text, offset) {\n return null;\n };\n Lexer.prototype.matchWithTest = function (pattern, text, offset) {\n var found = pattern.test(text);\n if (found === true) {\n return text.substring(offset, pattern.lastIndex);\n }\n return null;\n };\n Lexer.prototype.matchWithExec = function (pattern, text) {\n var regExpArray = pattern.exec(text);\n return regExpArray !== null ? regExpArray[0] : regExpArray;\n };\n // Duplicated from the parser's perf trace trait to allow future extraction\n // of the lexer to a separate package.\n Lexer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n var indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(indent + \"--> <\" + phaseDesc + \">\");\n }\n var _a = timer(phaseImpl), time = _a.time, value = _a.value;\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n var traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(indent + \"<-- <\" + phaseDesc + \"> time: \" + time + \"ms\");\n }\n this.traceInitIndent--;\n return value;\n }\n else {\n return phaseImpl();\n }\n };\n Lexer.SKIPPED = \"This marks a skipped Token pattern, this means each token identified by it will\" +\n \"be consumed and then thrown into oblivion, this can be used to for example to completely ignore whitespace.\";\n Lexer.NA = /NOT_APPLICABLE/;\n return Lexer;\n}());\nexport { Lexer };\n//# sourceMappingURL=lexer_public.js.map","import { has, isString, isUndefined } from \"../utils/utils\";\nimport { Lexer } from \"./lexer_public\";\nimport { augmentTokenTypes, tokenStructuredMatcher } from \"./tokens\";\nexport function tokenLabel(tokType) {\n if (hasTokenLabel(tokType)) {\n return tokType.LABEL;\n }\n else {\n return tokType.name;\n }\n}\nexport function tokenName(tokType) {\n return tokType.name;\n}\nexport function hasTokenLabel(obj) {\n return isString(obj.LABEL) && obj.LABEL !== \"\";\n}\nvar PARENT = \"parent\";\nvar CATEGORIES = \"categories\";\nvar LABEL = \"label\";\nvar GROUP = \"group\";\nvar PUSH_MODE = \"push_mode\";\nvar POP_MODE = \"pop_mode\";\nvar LONGER_ALT = \"longer_alt\";\nvar LINE_BREAKS = \"line_breaks\";\nvar START_CHARS_HINT = \"start_chars_hint\";\nexport function createToken(config) {\n return createTokenInternal(config);\n}\nfunction createTokenInternal(config) {\n var pattern = config.pattern;\n var tokenType = {};\n tokenType.name = config.name;\n if (!isUndefined(pattern)) {\n tokenType.PATTERN = pattern;\n }\n if (has(config, PARENT)) {\n throw (\"The parent property is no longer supported.\\n\" +\n \"See: https://github.com/chevrotain/chevrotain/issues/564#issuecomment-349062346 for details.\");\n }\n if (has(config, CATEGORIES)) {\n // casting to ANY as this will be fixed inside `augmentTokenTypes``\n tokenType.CATEGORIES = config[CATEGORIES];\n }\n augmentTokenTypes([tokenType]);\n if (has(config, LABEL)) {\n tokenType.LABEL = config[LABEL];\n }\n if (has(config, GROUP)) {\n tokenType.GROUP = config[GROUP];\n }\n if (has(config, POP_MODE)) {\n tokenType.POP_MODE = config[POP_MODE];\n }\n if (has(config, PUSH_MODE)) {\n tokenType.PUSH_MODE = config[PUSH_MODE];\n }\n if (has(config, LONGER_ALT)) {\n tokenType.LONGER_ALT = config[LONGER_ALT];\n }\n if (has(config, LINE_BREAKS)) {\n tokenType.LINE_BREAKS = config[LINE_BREAKS];\n }\n if (has(config, START_CHARS_HINT)) {\n tokenType.START_CHARS_HINT = config[START_CHARS_HINT];\n }\n return tokenType;\n}\nexport var EOF = createToken({ name: \"EOF\", pattern: Lexer.NA });\naugmentTokenTypes([EOF]);\nexport function createTokenInstance(tokType, image, startOffset, endOffset, startLine, endLine, startColumn, endColumn) {\n return {\n image: image,\n startOffset: startOffset,\n endOffset: endOffset,\n startLine: startLine,\n endLine: endLine,\n startColumn: startColumn,\n endColumn: endColumn,\n tokenTypeIdx: tokType.tokenTypeIdx,\n tokenType: tokType\n };\n}\nexport function tokenMatcher(token, tokType) {\n return tokenStructuredMatcher(token, tokType);\n}\n//# sourceMappingURL=tokens_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { assign, forEach, isRegExp, map, pick } from \"../../../utils/utils\";\nimport { tokenLabel } from \"../../../scan/tokens_public\";\nvar AbstractProduction = /** @class */ (function () {\n function AbstractProduction(_definition) {\n this._definition = _definition;\n }\n Object.defineProperty(AbstractProduction.prototype, \"definition\", {\n get: function () {\n return this._definition;\n },\n set: function (value) {\n this._definition = value;\n },\n enumerable: false,\n configurable: true\n });\n AbstractProduction.prototype.accept = function (visitor) {\n visitor.visit(this);\n forEach(this.definition, function (prod) {\n prod.accept(visitor);\n });\n };\n return AbstractProduction;\n}());\nexport { AbstractProduction };\nvar NonTerminal = /** @class */ (function (_super) {\n __extends(NonTerminal, _super);\n function NonTerminal(options) {\n var _this = _super.call(this, []) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n Object.defineProperty(NonTerminal.prototype, \"definition\", {\n get: function () {\n if (this.referencedRule !== undefined) {\n return this.referencedRule.definition;\n }\n return [];\n },\n set: function (definition) {\n // immutable\n },\n enumerable: false,\n configurable: true\n });\n NonTerminal.prototype.accept = function (visitor) {\n visitor.visit(this);\n // don't visit children of a reference, we will get cyclic infinite loops if we do so\n };\n return NonTerminal;\n}(AbstractProduction));\nexport { NonTerminal };\nvar Rule = /** @class */ (function (_super) {\n __extends(Rule, _super);\n function Rule(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.orgText = \"\";\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Rule;\n}(AbstractProduction));\nexport { Rule };\nvar Alternative = /** @class */ (function (_super) {\n __extends(Alternative, _super);\n function Alternative(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.ignoreAmbiguities = false;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Alternative;\n}(AbstractProduction));\nexport { Alternative };\nvar Option = /** @class */ (function (_super) {\n __extends(Option, _super);\n function Option(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Option;\n}(AbstractProduction));\nexport { Option };\nvar RepetitionMandatory = /** @class */ (function (_super) {\n __extends(RepetitionMandatory, _super);\n function RepetitionMandatory(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionMandatory;\n}(AbstractProduction));\nexport { RepetitionMandatory };\nvar RepetitionMandatoryWithSeparator = /** @class */ (function (_super) {\n __extends(RepetitionMandatoryWithSeparator, _super);\n function RepetitionMandatoryWithSeparator(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionMandatoryWithSeparator;\n}(AbstractProduction));\nexport { RepetitionMandatoryWithSeparator };\nvar Repetition = /** @class */ (function (_super) {\n __extends(Repetition, _super);\n function Repetition(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return Repetition;\n}(AbstractProduction));\nexport { Repetition };\nvar RepetitionWithSeparator = /** @class */ (function (_super) {\n __extends(RepetitionWithSeparator, _super);\n function RepetitionWithSeparator(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n return RepetitionWithSeparator;\n}(AbstractProduction));\nexport { RepetitionWithSeparator };\nvar Alternation = /** @class */ (function (_super) {\n __extends(Alternation, _super);\n function Alternation(options) {\n var _this = _super.call(this, options.definition) || this;\n _this.idx = 1;\n _this.ignoreAmbiguities = false;\n _this.hasPredicates = false;\n assign(_this, pick(options, function (v) { return v !== undefined; }));\n return _this;\n }\n Object.defineProperty(Alternation.prototype, \"definition\", {\n get: function () {\n return this._definition;\n },\n set: function (value) {\n this._definition = value;\n },\n enumerable: false,\n configurable: true\n });\n return Alternation;\n}(AbstractProduction));\nexport { Alternation };\nvar Terminal = /** @class */ (function () {\n function Terminal(options) {\n this.idx = 1;\n assign(this, pick(options, function (v) { return v !== undefined; }));\n }\n Terminal.prototype.accept = function (visitor) {\n visitor.visit(this);\n };\n return Terminal;\n}());\nexport { Terminal };\nexport function serializeGrammar(topRules) {\n return map(topRules, serializeProduction);\n}\nexport function serializeProduction(node) {\n function convertDefinition(definition) {\n return map(definition, serializeProduction);\n }\n /* istanbul ignore else */\n if (node instanceof NonTerminal) {\n return {\n type: \"NonTerminal\",\n name: node.nonTerminalName,\n idx: node.idx\n };\n }\n else if (node instanceof Alternative) {\n return {\n type: \"Alternative\",\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Option) {\n return {\n type: \"Option\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionMandatory) {\n return {\n type: \"RepetitionMandatory\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionMandatoryWithSeparator) {\n return {\n type: \"RepetitionMandatoryWithSeparator\",\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof RepetitionWithSeparator) {\n return {\n type: \"RepetitionWithSeparator\",\n idx: node.idx,\n separator: (serializeProduction(new Terminal({ terminalType: node.separator }))),\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Repetition) {\n return {\n type: \"Repetition\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Alternation) {\n return {\n type: \"Alternation\",\n idx: node.idx,\n definition: convertDefinition(node.definition)\n };\n }\n else if (node instanceof Terminal) {\n var serializedTerminal = {\n type: \"Terminal\",\n name: node.terminalType.name,\n label: tokenLabel(node.terminalType),\n idx: node.idx\n };\n var pattern = node.terminalType.PATTERN;\n if (node.terminalType.PATTERN) {\n serializedTerminal.pattern = isRegExp(pattern)\n ? pattern.source\n : pattern;\n }\n return serializedTerminal;\n }\n else if (node instanceof Rule) {\n return {\n type: \"Rule\",\n name: node.name,\n orgText: node.orgText,\n definition: convertDefinition(node.definition)\n };\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\n//# sourceMappingURL=gast_public.js.map","import { drop, forEach } from \"../../utils/utils\";\nimport { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal } from \"./gast/gast_public\";\n/**\n * A Grammar Walker that computes the \"remaining\" grammar \"after\" a productions in the grammar.\n */\nvar RestWalker = /** @class */ (function () {\n function RestWalker() {\n }\n RestWalker.prototype.walk = function (prod, prevRest) {\n var _this = this;\n if (prevRest === void 0) { prevRest = []; }\n forEach(prod.definition, function (subProd, index) {\n var currRest = drop(prod.definition, index + 1);\n /* istanbul ignore else */\n if (subProd instanceof NonTerminal) {\n _this.walkProdRef(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Terminal) {\n _this.walkTerminal(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Alternative) {\n _this.walkFlat(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Option) {\n _this.walkOption(subProd, currRest, prevRest);\n }\n else if (subProd instanceof RepetitionMandatory) {\n _this.walkAtLeastOne(subProd, currRest, prevRest);\n }\n else if (subProd instanceof RepetitionMandatoryWithSeparator) {\n _this.walkAtLeastOneSep(subProd, currRest, prevRest);\n }\n else if (subProd instanceof RepetitionWithSeparator) {\n _this.walkManySep(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Repetition) {\n _this.walkMany(subProd, currRest, prevRest);\n }\n else if (subProd instanceof Alternation) {\n _this.walkOr(subProd, currRest, prevRest);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n });\n };\n RestWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) { };\n RestWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) { };\n RestWalker.prototype.walkFlat = function (flatProd, currRest, prevRest) {\n // ABCDEF => after the D the rest is EF\n var fullOrRest = currRest.concat(prevRest);\n this.walk(flatProd, fullOrRest);\n };\n RestWalker.prototype.walkOption = function (optionProd, currRest, prevRest) {\n // ABC(DE)?F => after the (DE)? the rest is F\n var fullOrRest = currRest.concat(prevRest);\n this.walk(optionProd, fullOrRest);\n };\n RestWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n // ABC(DE)+F => after the (DE)+ the rest is (DE)?F\n var fullAtLeastOneRest = [\n new Option({ definition: atLeastOneProd.definition })\n ].concat(currRest, prevRest);\n this.walk(atLeastOneProd, fullAtLeastOneRest);\n };\n RestWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) {\n // ABC DE(,DE)* F => after the (,DE)+ the rest is (,DE)?F\n var fullAtLeastOneSepRest = restForRepetitionWithSeparator(atLeastOneSepProd, currRest, prevRest);\n this.walk(atLeastOneSepProd, fullAtLeastOneSepRest);\n };\n RestWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n // ABC(DE)*F => after the (DE)* the rest is (DE)?F\n var fullManyRest = [\n new Option({ definition: manyProd.definition })\n ].concat(currRest, prevRest);\n this.walk(manyProd, fullManyRest);\n };\n RestWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n // ABC (DE(,DE)*)? F => after the (,DE)* the rest is (,DE)?F\n var fullManySepRest = restForRepetitionWithSeparator(manySepProd, currRest, prevRest);\n this.walk(manySepProd, fullManySepRest);\n };\n RestWalker.prototype.walkOr = function (orProd, currRest, prevRest) {\n var _this = this;\n // ABC(D|E|F)G => when finding the (D|E|F) the rest is G\n var fullOrRest = currRest.concat(prevRest);\n // walk all different alternatives\n forEach(orProd.definition, function (alt) {\n // wrapping each alternative in a single definition wrapper\n // to avoid errors in computing the rest of that alternative in the invocation to computeInProdFollows\n // (otherwise for OR([alt1,alt2]) alt2 will be considered in 'rest' of alt1\n var prodWrapper = new Alternative({ definition: [alt] });\n _this.walk(prodWrapper, fullOrRest);\n });\n };\n return RestWalker;\n}());\nexport { RestWalker };\nfunction restForRepetitionWithSeparator(repSepProd, currRest, prevRest) {\n var repSepRest = [\n new Option({\n definition: [new Terminal({ terminalType: repSepProd.separator })].concat(repSepProd.definition)\n })\n ];\n var fullRepSepRest = repSepRest.concat(currRest, prevRest);\n return fullRepSepRest;\n}\n//# sourceMappingURL=rest.js.map","import { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./gast_public\";\nvar GAstVisitor = /** @class */ (function () {\n function GAstVisitor() {\n }\n GAstVisitor.prototype.visit = function (node) {\n var nodeAny = node;\n switch (nodeAny.constructor) {\n case NonTerminal:\n return this.visitNonTerminal(nodeAny);\n case Alternative:\n return this.visitAlternative(nodeAny);\n case Option:\n return this.visitOption(nodeAny);\n case RepetitionMandatory:\n return this.visitRepetitionMandatory(nodeAny);\n case RepetitionMandatoryWithSeparator:\n return this.visitRepetitionMandatoryWithSeparator(nodeAny);\n case RepetitionWithSeparator:\n return this.visitRepetitionWithSeparator(nodeAny);\n case Repetition:\n return this.visitRepetition(nodeAny);\n case Alternation:\n return this.visitAlternation(nodeAny);\n case Terminal:\n return this.visitTerminal(nodeAny);\n case Rule:\n return this.visitRule(nodeAny);\n /* istanbul ignore next */\n default:\n throw Error(\"non exhaustive match\");\n }\n };\n GAstVisitor.prototype.visitNonTerminal = function (node) { };\n GAstVisitor.prototype.visitAlternative = function (node) { };\n GAstVisitor.prototype.visitOption = function (node) { };\n GAstVisitor.prototype.visitRepetition = function (node) { };\n GAstVisitor.prototype.visitRepetitionMandatory = function (node) { };\n GAstVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) { };\n GAstVisitor.prototype.visitRepetitionWithSeparator = function (node) { };\n GAstVisitor.prototype.visitAlternation = function (node) { };\n GAstVisitor.prototype.visitTerminal = function (node) { };\n GAstVisitor.prototype.visitRule = function (node) { };\n return GAstVisitor;\n}());\nexport { GAstVisitor };\n//# sourceMappingURL=gast_visitor_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { contains, every, has, some } from \"../../../utils/utils\";\nimport { AbstractProduction, Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./gast_public\";\nimport { GAstVisitor } from \"./gast_visitor_public\";\nexport function isSequenceProd(prod) {\n return (prod instanceof Alternative ||\n prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionMandatory ||\n prod instanceof RepetitionMandatoryWithSeparator ||\n prod instanceof RepetitionWithSeparator ||\n prod instanceof Terminal ||\n prod instanceof Rule);\n}\nexport function isOptionalProd(prod, alreadyVisited) {\n if (alreadyVisited === void 0) { alreadyVisited = []; }\n var isDirectlyOptional = prod instanceof Option ||\n prod instanceof Repetition ||\n prod instanceof RepetitionWithSeparator;\n if (isDirectlyOptional) {\n return true;\n }\n // note that this can cause infinite loop if one optional empty TOP production has a cyclic dependency with another\n // empty optional top rule\n // may be indirectly optional ((A?B?C?) | (D?E?F?))\n if (prod instanceof Alternation) {\n // for OR its enough for just one of the alternatives to be optional\n return some(prod.definition, function (subProd) {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else if (prod instanceof NonTerminal && contains(alreadyVisited, prod)) {\n // avoiding stack overflow due to infinite recursion\n return false;\n }\n else if (prod instanceof AbstractProduction) {\n if (prod instanceof NonTerminal) {\n alreadyVisited.push(prod);\n }\n return every(prod.definition, function (subProd) {\n return isOptionalProd(subProd, alreadyVisited);\n });\n }\n else {\n return false;\n }\n}\nexport function isBranchingProd(prod) {\n return prod instanceof Alternation;\n}\nexport function getProductionDslName(prod) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return \"SUBRULE\";\n }\n else if (prod instanceof Option) {\n return \"OPTION\";\n }\n else if (prod instanceof Alternation) {\n return \"OR\";\n }\n else if (prod instanceof RepetitionMandatory) {\n return \"AT_LEAST_ONE\";\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return \"AT_LEAST_ONE_SEP\";\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return \"MANY_SEP\";\n }\n else if (prod instanceof Repetition) {\n return \"MANY\";\n }\n else if (prod instanceof Terminal) {\n return \"CONSUME\";\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nvar DslMethodsCollectorVisitor = /** @class */ (function (_super) {\n __extends(DslMethodsCollectorVisitor, _super);\n function DslMethodsCollectorVisitor() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // A minus is never valid in an identifier name\n _this.separator = \"-\";\n _this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n return _this;\n }\n DslMethodsCollectorVisitor.prototype.reset = function () {\n this.dslMethods = {\n option: [],\n alternation: [],\n repetition: [],\n repetitionWithSeparator: [],\n repetitionMandatory: [],\n repetitionMandatoryWithSeparator: []\n };\n };\n DslMethodsCollectorVisitor.prototype.visitTerminal = function (terminal) {\n var key = terminal.terminalType.name + this.separator + \"Terminal\";\n if (!has(this.dslMethods, key)) {\n this.dslMethods[key] = [];\n }\n this.dslMethods[key].push(terminal);\n };\n DslMethodsCollectorVisitor.prototype.visitNonTerminal = function (subrule) {\n var key = subrule.nonTerminalName + this.separator + \"Terminal\";\n if (!has(this.dslMethods, key)) {\n this.dslMethods[key] = [];\n }\n this.dslMethods[key].push(subrule);\n };\n DslMethodsCollectorVisitor.prototype.visitOption = function (option) {\n this.dslMethods.option.push(option);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.dslMethods.repetitionWithSeparator.push(manySep);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.dslMethods.repetitionMandatory.push(atLeastOne);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.dslMethods.repetitionMandatoryWithSeparator.push(atLeastOneSep);\n };\n DslMethodsCollectorVisitor.prototype.visitRepetition = function (many) {\n this.dslMethods.repetition.push(many);\n };\n DslMethodsCollectorVisitor.prototype.visitAlternation = function (or) {\n this.dslMethods.alternation.push(or);\n };\n return DslMethodsCollectorVisitor;\n}(GAstVisitor));\nexport { DslMethodsCollectorVisitor };\nvar collectorVisitor = new DslMethodsCollectorVisitor();\nexport function collectMethods(rule) {\n collectorVisitor.reset();\n rule.accept(collectorVisitor);\n var dslMethods = collectorVisitor.dslMethods;\n // avoid uncleaned references\n collectorVisitor.reset();\n return dslMethods;\n}\n//# sourceMappingURL=gast.js.map","import { uniq, map, flatten } from \"../../utils/utils\";\nimport { NonTerminal, Terminal } from \"./gast/gast_public\";\nimport { isBranchingProd, isOptionalProd, isSequenceProd } from \"./gast/gast\";\nexport function first(prod) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n // this could in theory cause infinite loops if\n // (1) prod A refs prod B.\n // (2) prod B refs prod A\n // (3) AB can match the empty set\n // in other words a cycle where everything is optional so the first will keep\n // looking ahead for the next optional part and will never exit\n // currently there is no safeguard for this unique edge case because\n // (1) not sure a grammar in which this can happen is useful for anything (productive)\n return first(prod.referencedRule);\n }\n else if (prod instanceof Terminal) {\n return firstForTerminal(prod);\n }\n else if (isSequenceProd(prod)) {\n return firstForSequence(prod);\n }\n else if (isBranchingProd(prod)) {\n return firstForBranching(prod);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function firstForSequence(prod) {\n var firstSet = [];\n var seq = prod.definition;\n var nextSubProdIdx = 0;\n var hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n var currSubProd;\n // so we enter the loop at least once (if the definition is not empty\n var isLastInnerProdOptional = true;\n // scan a sequence until it's end or until we have found a NONE optional production in it\n while (hasInnerProdsRemaining && isLastInnerProdOptional) {\n currSubProd = seq[nextSubProdIdx];\n isLastInnerProdOptional = isOptionalProd(currSubProd);\n firstSet = firstSet.concat(first(currSubProd));\n nextSubProdIdx = nextSubProdIdx + 1;\n hasInnerProdsRemaining = seq.length > nextSubProdIdx;\n }\n return uniq(firstSet);\n}\nexport function firstForBranching(prod) {\n var allAlternativesFirsts = map(prod.definition, function (innerProd) {\n return first(innerProd);\n });\n return uniq(flatten(allAlternativesFirsts));\n}\nexport function firstForTerminal(terminal) {\n return [terminal.terminalType];\n}\n//# sourceMappingURL=first.js.map","// TODO: can this be removed? where is it used?\nexport var IN = \"_~IN~_\";\n//# sourceMappingURL=constants.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { RestWalker } from \"./rest\";\nimport { first } from \"./first\";\nimport { assign, forEach } from \"../../utils/utils\";\nimport { IN } from \"../constants\";\nimport { Alternative } from \"./gast/gast_public\";\n// This ResyncFollowsWalker computes all of the follows required for RESYNC\n// (skipping reference production).\nvar ResyncFollowsWalker = /** @class */ (function (_super) {\n __extends(ResyncFollowsWalker, _super);\n function ResyncFollowsWalker(topProd) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.follows = {};\n return _this;\n }\n ResyncFollowsWalker.prototype.startWalking = function () {\n this.walk(this.topProd);\n return this.follows;\n };\n ResyncFollowsWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) {\n // do nothing! just like in the public sector after 13:00\n };\n ResyncFollowsWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) {\n var followName = buildBetweenProdsFollowPrefix(refProd.referencedRule, refProd.idx) +\n this.topProd.name;\n var fullRest = currRest.concat(prevRest);\n var restProd = new Alternative({ definition: fullRest });\n var t_in_topProd_follows = first(restProd);\n this.follows[followName] = t_in_topProd_follows;\n };\n return ResyncFollowsWalker;\n}(RestWalker));\nexport { ResyncFollowsWalker };\nexport function computeAllProdsFollows(topProductions) {\n var reSyncFollows = {};\n forEach(topProductions, function (topProd) {\n var currRefsFollow = new ResyncFollowsWalker(topProd).startWalking();\n assign(reSyncFollows, currRefsFollow);\n });\n return reSyncFollows;\n}\nexport function buildBetweenProdsFollowPrefix(inner, occurenceInParent) {\n return inner.name + occurenceInParent + IN;\n}\nexport function buildInProdFollowPrefix(terminal) {\n var terminalName = terminal.terminalType.name;\n return terminalName + terminal.idx + IN;\n}\n//# sourceMappingURL=follow.js.map","import { hasTokenLabel, tokenLabel } from \"../scan/tokens_public\";\nimport * as utils from \"../utils/utils\";\nimport { first, map, reduce } from \"../utils/utils\";\nimport { NonTerminal, Rule, Terminal } from \"./grammar/gast/gast_public\";\nimport { getProductionDslName } from \"./grammar/gast/gast\";\nexport var defaultParserErrorProvider = {\n buildMismatchTokenMessage: function (_a) {\n var expected = _a.expected, actual = _a.actual, previous = _a.previous, ruleName = _a.ruleName;\n var hasLabel = hasTokenLabel(expected);\n var expectedMsg = hasLabel\n ? \"--> \" + tokenLabel(expected) + \" <--\"\n : \"token of type --> \" + expected.name + \" <--\";\n var msg = \"Expecting \" + expectedMsg + \" but found --> '\" + actual.image + \"' <--\";\n return msg;\n },\n buildNotAllInputParsedMessage: function (_a) {\n var firstRedundant = _a.firstRedundant, ruleName = _a.ruleName;\n return \"Redundant input, expecting EOF but found: \" + firstRedundant.image;\n },\n buildNoViableAltMessage: function (_a) {\n var expectedPathsPerAlt = _a.expectedPathsPerAlt, actual = _a.actual, previous = _a.previous, customUserDescription = _a.customUserDescription, ruleName = _a.ruleName;\n var errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n var actualText = first(actual).image;\n var errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n }\n else {\n var allLookAheadPaths = reduce(expectedPathsPerAlt, function (result, currAltPaths) { return result.concat(currAltPaths); }, []);\n var nextValidTokenSequences = map(allLookAheadPaths, function (currPath) {\n return \"[\" + map(currPath, function (currTokenType) { return tokenLabel(currTokenType); }).join(\", \") + \"]\";\n });\n var nextValidSequenceItems = map(nextValidTokenSequences, function (itemMsg, idx) { return \" \" + (idx + 1) + \". \" + itemMsg; });\n var calculatedDescription = \"one of these possible Token sequences:\\n\" + nextValidSequenceItems.join(\"\\n\");\n return errPrefix + calculatedDescription + errSuffix;\n }\n },\n buildEarlyExitMessage: function (_a) {\n var expectedIterationPaths = _a.expectedIterationPaths, actual = _a.actual, customUserDescription = _a.customUserDescription, ruleName = _a.ruleName;\n var errPrefix = \"Expecting: \";\n // TODO: issue: No Viable Alternative Error may have incomplete details. #502\n var actualText = first(actual).image;\n var errSuffix = \"\\nbut found: '\" + actualText + \"'\";\n if (customUserDescription) {\n return errPrefix + customUserDescription + errSuffix;\n }\n else {\n var nextValidTokenSequences = map(expectedIterationPaths, function (currPath) {\n return \"[\" + map(currPath, function (currTokenType) { return tokenLabel(currTokenType); }).join(\",\") + \"]\";\n });\n var calculatedDescription = \"expecting at least one iteration which starts with one of these possible Token sequences::\\n \" +\n (\"<\" + nextValidTokenSequences.join(\" ,\") + \">\");\n return errPrefix + calculatedDescription + errSuffix;\n }\n }\n};\nObject.freeze(defaultParserErrorProvider);\nexport var defaultGrammarResolverErrorProvider = {\n buildRuleNotFoundError: function (topLevelRule, undefinedRule) {\n var msg = \"Invalid grammar, reference to a rule which is not defined: ->\" +\n undefinedRule.nonTerminalName +\n \"<-\\n\" +\n \"inside top level rule: ->\" +\n topLevelRule.name +\n \"<-\";\n return msg;\n }\n};\nexport var defaultGrammarValidatorErrorProvider = {\n buildDuplicateFoundError: function (topLevelRule, duplicateProds) {\n function getExtraProductionArgument(prod) {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n }\n else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n }\n else {\n return \"\";\n }\n }\n var topLevelName = topLevelRule.name;\n var duplicateProd = first(duplicateProds);\n var index = duplicateProd.idx;\n var dslName = getProductionDslName(duplicateProd);\n var extraArgument = getExtraProductionArgument(duplicateProd);\n var hasExplicitIndex = index > 0;\n var msg = \"->\" + dslName + (hasExplicitIndex ? index : \"\") + \"<- \" + (extraArgument ? \"with argument: ->\" + extraArgument + \"<-\" : \"\") + \"\\n appears more than once (\" + duplicateProds.length + \" times) in the top level rule: ->\" + topLevelName + \"<-. \\n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \\n \";\n // white space trimming time! better to trim afterwards as it allows to use WELL formatted multi line template strings...\n msg = msg.replace(/[ \\t]+/g, \" \");\n msg = msg.replace(/\\s\\s+/g, \"\\n\");\n return msg;\n },\n buildNamespaceConflictError: function (rule) {\n var errMsg = \"Namespace conflict found in grammar.\\n\" +\n (\"The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <\" + rule.name + \">.\\n\") +\n \"To resolve this make sure each Terminal and Non-Terminal names are unique\\n\" +\n \"This is easy to accomplish by using the convention that Terminal names start with an uppercase letter\\n\" +\n \"and Non-Terminal names start with a lower case letter.\";\n return errMsg;\n },\n buildAlternationPrefixAmbiguityError: function (options) {\n var pathMsg = map(options.prefixPath, function (currTok) {\n return tokenLabel(currTok);\n }).join(\", \");\n var occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n var errMsg = \"Ambiguous alternatives: <\" + options.ambiguityIndices.join(\" ,\") + \"> due to common lookahead prefix\\n\" +\n (\"in inside <\" + options.topLevelRule.name + \"> Rule,\\n\") +\n (\"<\" + pathMsg + \"> may appears as a prefix path in all these alternatives.\\n\") +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\\n\" +\n \"For Further details.\";\n return errMsg;\n },\n buildAlternationAmbiguityError: function (options) {\n var pathMsg = map(options.prefixPath, function (currtok) {\n return tokenLabel(currtok);\n }).join(\", \");\n var occurrence = options.alternation.idx === 0 ? \"\" : options.alternation.idx;\n var currMessage = \"Ambiguous Alternatives Detected: <\" + options.ambiguityIndices.join(\" ,\") + \"> in \" +\n (\" inside <\" + options.topLevelRule.name + \"> Rule,\\n\") +\n (\"<\" + pathMsg + \"> may appears as a prefix path in all these alternatives.\\n\");\n currMessage =\n currMessage +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\\n\" +\n \"For Further details.\";\n return currMessage;\n },\n buildEmptyRepetitionError: function (options) {\n var dslName = getProductionDslName(options.repetition);\n if (options.repetition.idx !== 0) {\n dslName += options.repetition.idx;\n }\n var errMsg = \"The repetition <\" + dslName + \"> within Rule <\" + options.topLevelRule.name + \"> can never consume any tokens.\\n\" +\n \"This could lead to an infinite loop.\";\n return errMsg;\n },\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildTokenNameError: function (options) {\n /* istanbul ignore next */\n return \"deprecated\";\n },\n buildEmptyAlternationError: function (options) {\n var errMsg = \"Ambiguous empty alternative: <\" + (options.emptyChoiceIdx + 1) + \">\" +\n (\" in inside <\" + options.topLevelRule.name + \"> Rule.\\n\") +\n \"Only the last alternative may be an empty alternative.\";\n return errMsg;\n },\n buildTooManyAlternativesError: function (options) {\n var errMsg = \"An Alternation cannot have more than 256 alternatives:\\n\" +\n (\" inside <\" + options.topLevelRule.name + \"> Rule.\\n has \" + (options.alternation.definition.length + 1) + \" alternatives.\");\n return errMsg;\n },\n buildLeftRecursionError: function (options) {\n var ruleName = options.topLevelRule.name;\n var pathNames = utils.map(options.leftRecursionPath, function (currRule) { return currRule.name; });\n var leftRecursivePath = ruleName + \" --> \" + pathNames\n .concat([ruleName])\n .join(\" --> \");\n var errMsg = \"Left Recursion found in grammar.\\n\" +\n (\"rule: <\" + ruleName + \"> can be invoked from itself (directly or indirectly)\\n\") +\n (\"without consuming any Tokens. The grammar path that causes this is: \\n \" + leftRecursivePath + \"\\n\") +\n \" To fix this refactor your grammar to remove the left recursion.\\n\" +\n \"see: https://en.wikipedia.org/wiki/LL_parser#Left_Factoring.\";\n return errMsg;\n },\n // TODO: remove - `errors_public` from nyc.config.js exclude\n // once this method is fully removed from this file\n buildInvalidRuleNameError: function (options) {\n /* istanbul ignore next */\n return \"deprecated\";\n },\n buildDuplicateRuleNameError: function (options) {\n var ruleName;\n if (options.topLevelRule instanceof Rule) {\n ruleName = options.topLevelRule.name;\n }\n else {\n ruleName = options.topLevelRule;\n }\n var errMsg = \"Duplicate definition, rule: ->\" + ruleName + \"<- is already defined in the grammar: ->\" + options.grammarName + \"<-\";\n return errMsg;\n }\n};\n//# sourceMappingURL=errors_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ParserDefinitionErrorType } from \"../parser/parser\";\nimport { forEach, values } from \"../../utils/utils\";\nimport { GAstVisitor } from \"./gast/gast_visitor_public\";\nexport function resolveGrammar(topLevels, errMsgProvider) {\n var refResolver = new GastRefResolverVisitor(topLevels, errMsgProvider);\n refResolver.resolveRefs();\n return refResolver.errors;\n}\nvar GastRefResolverVisitor = /** @class */ (function (_super) {\n __extends(GastRefResolverVisitor, _super);\n function GastRefResolverVisitor(nameToTopRule, errMsgProvider) {\n var _this = _super.call(this) || this;\n _this.nameToTopRule = nameToTopRule;\n _this.errMsgProvider = errMsgProvider;\n _this.errors = [];\n return _this;\n }\n GastRefResolverVisitor.prototype.resolveRefs = function () {\n var _this = this;\n forEach(values(this.nameToTopRule), function (prod) {\n _this.currTopLevel = prod;\n prod.accept(_this);\n });\n };\n GastRefResolverVisitor.prototype.visitNonTerminal = function (node) {\n var ref = this.nameToTopRule[node.nonTerminalName];\n if (!ref) {\n var msg = this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel, node);\n this.errors.push({\n message: msg,\n type: ParserDefinitionErrorType.UNRESOLVED_SUBRULE_REF,\n ruleName: this.currTopLevel.name,\n unresolvedRefName: node.nonTerminalName\n });\n }\n else {\n node.referencedRule = ref;\n }\n };\n return GastRefResolverVisitor;\n}(GAstVisitor));\nexport { GastRefResolverVisitor };\n//# sourceMappingURL=resolver.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { RestWalker } from \"./rest\";\nimport { cloneArr, drop, dropRight, first as _first, forEach, isEmpty, last } from \"../../utils/utils\";\nimport { first } from \"./first\";\nimport { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./gast/gast_public\";\nvar AbstractNextPossibleTokensWalker = /** @class */ (function (_super) {\n __extends(AbstractNextPossibleTokensWalker, _super);\n function AbstractNextPossibleTokensWalker(topProd, path) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.path = path;\n _this.possibleTokTypes = [];\n _this.nextProductionName = \"\";\n _this.nextProductionOccurrence = 0;\n _this.found = false;\n _this.isAtEndOfPath = false;\n return _this;\n }\n AbstractNextPossibleTokensWalker.prototype.startWalking = function () {\n this.found = false;\n if (this.path.ruleStack[0] !== this.topProd.name) {\n throw Error(\"The path does not start with the walker's top Rule!\");\n }\n // immutable for the win\n this.ruleStack = cloneArr(this.path.ruleStack).reverse(); // intelij bug requires assertion\n this.occurrenceStack = cloneArr(this.path.occurrenceStack).reverse(); // intelij bug requires assertion\n // already verified that the first production is valid, we now seek the 2nd production\n this.ruleStack.pop();\n this.occurrenceStack.pop();\n this.updateExpectedNext();\n this.walk(this.topProd);\n return this.possibleTokTypes;\n };\n AbstractNextPossibleTokensWalker.prototype.walk = function (prod, prevRest) {\n if (prevRest === void 0) { prevRest = []; }\n // stop scanning once we found the path\n if (!this.found) {\n _super.prototype.walk.call(this, prod, prevRest);\n }\n };\n AbstractNextPossibleTokensWalker.prototype.walkProdRef = function (refProd, currRest, prevRest) {\n // found the next production, need to keep walking in it\n if (refProd.referencedRule.name === this.nextProductionName &&\n refProd.idx === this.nextProductionOccurrence) {\n var fullRest = currRest.concat(prevRest);\n this.updateExpectedNext();\n this.walk(refProd.referencedRule, fullRest);\n }\n };\n AbstractNextPossibleTokensWalker.prototype.updateExpectedNext = function () {\n // need to consume the Terminal\n if (isEmpty(this.ruleStack)) {\n // must reset nextProductionXXX to avoid walking down another Top Level production while what we are\n // really seeking is the last Terminal...\n this.nextProductionName = \"\";\n this.nextProductionOccurrence = 0;\n this.isAtEndOfPath = true;\n }\n else {\n this.nextProductionName = this.ruleStack.pop();\n this.nextProductionOccurrence = this.occurrenceStack.pop();\n }\n };\n return AbstractNextPossibleTokensWalker;\n}(RestWalker));\nexport { AbstractNextPossibleTokensWalker };\nvar NextAfterTokenWalker = /** @class */ (function (_super) {\n __extends(NextAfterTokenWalker, _super);\n function NextAfterTokenWalker(topProd, path) {\n var _this = _super.call(this, topProd, path) || this;\n _this.path = path;\n _this.nextTerminalName = \"\";\n _this.nextTerminalOccurrence = 0;\n _this.nextTerminalName = _this.path.lastTok.name;\n _this.nextTerminalOccurrence = _this.path.lastTokOccurrence;\n return _this;\n }\n NextAfterTokenWalker.prototype.walkTerminal = function (terminal, currRest, prevRest) {\n if (this.isAtEndOfPath &&\n terminal.terminalType.name === this.nextTerminalName &&\n terminal.idx === this.nextTerminalOccurrence &&\n !this.found) {\n var fullRest = currRest.concat(prevRest);\n var restProd = new Alternative({ definition: fullRest });\n this.possibleTokTypes = first(restProd);\n this.found = true;\n }\n };\n return NextAfterTokenWalker;\n}(AbstractNextPossibleTokensWalker));\nexport { NextAfterTokenWalker };\n/**\n * This walker only \"walks\" a single \"TOP\" level in the Grammar Ast, this means\n * it never \"follows\" production refs\n */\nvar AbstractNextTerminalAfterProductionWalker = /** @class */ (function (_super) {\n __extends(AbstractNextTerminalAfterProductionWalker, _super);\n function AbstractNextTerminalAfterProductionWalker(topRule, occurrence) {\n var _this = _super.call(this) || this;\n _this.topRule = topRule;\n _this.occurrence = occurrence;\n _this.result = {\n token: undefined,\n occurrence: undefined,\n isEndOfRule: undefined\n };\n return _this;\n }\n AbstractNextTerminalAfterProductionWalker.prototype.startWalking = function () {\n this.walk(this.topRule);\n return this.result;\n };\n return AbstractNextTerminalAfterProductionWalker;\n}(RestWalker));\nexport { AbstractNextTerminalAfterProductionWalker };\nvar NextTerminalAfterManyWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterManyWalker, _super);\n function NextTerminalAfterManyWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterManyWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n if (manyProd.idx === this.occurrence) {\n var firstAfterMany = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterMany === undefined;\n if (firstAfterMany instanceof Terminal) {\n this.result.token = firstAfterMany.terminalType;\n this.result.occurrence = firstAfterMany.idx;\n }\n }\n else {\n _super.prototype.walkMany.call(this, manyProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterManyWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterManyWalker };\nvar NextTerminalAfterManySepWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterManySepWalker, _super);\n function NextTerminalAfterManySepWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterManySepWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n if (manySepProd.idx === this.occurrence) {\n var firstAfterManySep = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterManySep === undefined;\n if (firstAfterManySep instanceof Terminal) {\n this.result.token = firstAfterManySep.terminalType;\n this.result.occurrence = firstAfterManySep.idx;\n }\n }\n else {\n _super.prototype.walkManySep.call(this, manySepProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterManySepWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterManySepWalker };\nvar NextTerminalAfterAtLeastOneWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterAtLeastOneWalker, _super);\n function NextTerminalAfterAtLeastOneWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterAtLeastOneWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n if (atLeastOneProd.idx === this.occurrence) {\n var firstAfterAtLeastOne = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterAtLeastOne === undefined;\n if (firstAfterAtLeastOne instanceof Terminal) {\n this.result.token = firstAfterAtLeastOne.terminalType;\n this.result.occurrence = firstAfterAtLeastOne.idx;\n }\n }\n else {\n _super.prototype.walkAtLeastOne.call(this, atLeastOneProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterAtLeastOneWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterAtLeastOneWalker };\n// TODO: reduce code duplication in the AfterWalkers\nvar NextTerminalAfterAtLeastOneSepWalker = /** @class */ (function (_super) {\n __extends(NextTerminalAfterAtLeastOneSepWalker, _super);\n function NextTerminalAfterAtLeastOneSepWalker() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NextTerminalAfterAtLeastOneSepWalker.prototype.walkAtLeastOneSep = function (atleastOneSepProd, currRest, prevRest) {\n if (atleastOneSepProd.idx === this.occurrence) {\n var firstAfterfirstAfterAtLeastOneSep = _first(currRest.concat(prevRest));\n this.result.isEndOfRule = firstAfterfirstAfterAtLeastOneSep === undefined;\n if (firstAfterfirstAfterAtLeastOneSep instanceof Terminal) {\n this.result.token = firstAfterfirstAfterAtLeastOneSep.terminalType;\n this.result.occurrence = firstAfterfirstAfterAtLeastOneSep.idx;\n }\n }\n else {\n _super.prototype.walkAtLeastOneSep.call(this, atleastOneSepProd, currRest, prevRest);\n }\n };\n return NextTerminalAfterAtLeastOneSepWalker;\n}(AbstractNextTerminalAfterProductionWalker));\nexport { NextTerminalAfterAtLeastOneSepWalker };\nexport function possiblePathsFrom(targetDef, maxLength, currPath) {\n if (currPath === void 0) { currPath = []; }\n // avoid side effects\n currPath = cloneArr(currPath);\n var result = [];\n var i = 0;\n // TODO: avoid inner funcs\n function remainingPathWith(nextDef) {\n return nextDef.concat(drop(targetDef, i + 1));\n }\n // TODO: avoid inner funcs\n function getAlternativesForProd(definition) {\n var alternatives = possiblePathsFrom(remainingPathWith(definition), maxLength, currPath);\n return result.concat(alternatives);\n }\n /**\n * Mandatory productions will halt the loop as the paths computed from their recursive calls will already contain the\n * following (rest) of the targetDef.\n *\n * For optional productions (Option/Repetition/...) the loop will continue to represent the paths that do not include the\n * the optional production.\n */\n while (currPath.length < maxLength && i < targetDef.length) {\n var prod = targetDef[i];\n /* istanbul ignore else */\n if (prod instanceof Alternative) {\n return getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof NonTerminal) {\n return getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof Option) {\n result = getAlternativesForProd(prod.definition);\n }\n else if (prod instanceof RepetitionMandatory) {\n var newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition\n })\n ]);\n return getAlternativesForProd(newDef);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n var newDef = [\n new Alternative({ definition: prod.definition }),\n new Repetition({\n definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition)\n })\n ];\n return getAlternativesForProd(newDef);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n var newDef = prod.definition.concat([\n new Repetition({\n definition: [new Terminal({ terminalType: prod.separator })].concat(prod.definition)\n })\n ]);\n result = getAlternativesForProd(newDef);\n }\n else if (prod instanceof Repetition) {\n var newDef = prod.definition.concat([\n new Repetition({\n definition: prod.definition\n })\n ]);\n result = getAlternativesForProd(newDef);\n }\n else if (prod instanceof Alternation) {\n forEach(prod.definition, function (currAlt) {\n // TODO: this is a limited check for empty alternatives\n // It would prevent a common case of infinite loops during parser initialization.\n // However **in-directly** empty alternatives may still cause issues.\n if (isEmpty(currAlt.definition) === false) {\n result = getAlternativesForProd(currAlt.definition);\n }\n });\n return result;\n }\n else if (prod instanceof Terminal) {\n currPath.push(prod.terminalType);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n i++;\n }\n result.push({\n partialPath: currPath,\n suffixDef: drop(targetDef, i)\n });\n return result;\n}\nexport function nextPossibleTokensAfter(initialDef, tokenVector, tokMatcher, maxLookAhead) {\n var EXIT_NON_TERMINAL = \"EXIT_NONE_TERMINAL\";\n // to avoid creating a new Array each time.\n var EXIT_NON_TERMINAL_ARR = [EXIT_NON_TERMINAL];\n var EXIT_ALTERNATIVE = \"EXIT_ALTERNATIVE\";\n var foundCompletePath = false;\n var tokenVectorLength = tokenVector.length;\n var minimalAlternativesIndex = tokenVectorLength - maxLookAhead - 1;\n var result = [];\n var possiblePaths = [];\n possiblePaths.push({\n idx: -1,\n def: initialDef,\n ruleStack: [],\n occurrenceStack: []\n });\n while (!isEmpty(possiblePaths)) {\n var currPath = possiblePaths.pop();\n // skip alternatives if no more results can be found (assuming deterministic grammar with fixed lookahead)\n if (currPath === EXIT_ALTERNATIVE) {\n if (foundCompletePath &&\n last(possiblePaths).idx <= minimalAlternativesIndex) {\n // remove irrelevant alternative\n possiblePaths.pop();\n }\n continue;\n }\n var currDef = currPath.def;\n var currIdx = currPath.idx;\n var currRuleStack = currPath.ruleStack;\n var currOccurrenceStack = currPath.occurrenceStack;\n // For Example: an empty path could exist in a valid grammar in the case of an EMPTY_ALT\n if (isEmpty(currDef)) {\n continue;\n }\n var prod = currDef[0];\n /* istanbul ignore else */\n if (prod === EXIT_NON_TERMINAL) {\n var nextPath = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: dropRight(currRuleStack),\n occurrenceStack: dropRight(currOccurrenceStack)\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof Terminal) {\n /* istanbul ignore else */\n if (currIdx < tokenVectorLength - 1) {\n var nextIdx = currIdx + 1;\n var actualToken = tokenVector[nextIdx];\n if (tokMatcher(actualToken, prod.terminalType)) {\n var nextPath = {\n idx: nextIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n // end of the line\n }\n else if (currIdx === tokenVectorLength - 1) {\n // IGNORE ABOVE ELSE\n result.push({\n nextTokenType: prod.terminalType,\n nextTokenOccurrence: prod.idx,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n foundCompletePath = true;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n else if (prod instanceof NonTerminal) {\n var newRuleStack = cloneArr(currRuleStack);\n newRuleStack.push(prod.nonTerminalName);\n var newOccurrenceStack = cloneArr(currOccurrenceStack);\n newOccurrenceStack.push(prod.idx);\n var nextPath = {\n idx: currIdx,\n def: prod.definition.concat(EXIT_NON_TERMINAL_ARR, drop(currDef)),\n ruleStack: newRuleStack,\n occurrenceStack: newOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof Option) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n var nextPathWith = {\n idx: currIdx,\n def: prod.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof RepetitionMandatory) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n var secondIteration = new Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([secondIteration], drop(currDef));\n var nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n // TODO:(THE NEW operators here take a while...) (convert once?)\n var separatorGast = new Terminal({\n terminalType: prod.separator\n });\n var secondIteration = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([secondIteration], drop(currDef));\n var nextPath = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPath);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n var separatorGast = new Terminal({\n terminalType: prod.separator\n });\n var nthRepetition = new Repetition({\n definition: [separatorGast].concat(prod.definition),\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([nthRepetition], drop(currDef));\n var nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof Repetition) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n var nextPathWithout = {\n idx: currIdx,\n def: drop(currDef),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWithout);\n // required marker to avoid backtracking paths whose higher priority alternatives already matched\n possiblePaths.push(EXIT_ALTERNATIVE);\n // TODO: an empty repetition will cause infinite loops here, will the parser detect this in selfAnalysis?\n var nthRepetition = new Repetition({\n definition: prod.definition,\n idx: prod.idx\n });\n var nextDef = prod.definition.concat([nthRepetition], drop(currDef));\n var nextPathWith = {\n idx: currIdx,\n def: nextDef,\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(nextPathWith);\n }\n else if (prod instanceof Alternation) {\n // the order of alternatives is meaningful, FILO (Last path will be traversed first).\n for (var i = prod.definition.length - 1; i >= 0; i--) {\n var currAlt = prod.definition[i];\n var currAltPath = {\n idx: currIdx,\n def: currAlt.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n };\n possiblePaths.push(currAltPath);\n possiblePaths.push(EXIT_ALTERNATIVE);\n }\n }\n else if (prod instanceof Alternative) {\n possiblePaths.push({\n idx: currIdx,\n def: prod.definition.concat(drop(currDef)),\n ruleStack: currRuleStack,\n occurrenceStack: currOccurrenceStack\n });\n }\n else if (prod instanceof Rule) {\n // last because we should only encounter at most a single one of these per invocation.\n possiblePaths.push(expandTopLevelRule(prod, currIdx, currRuleStack, currOccurrenceStack));\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n }\n return result;\n}\nfunction expandTopLevelRule(topRule, currIdx, currRuleStack, currOccurrenceStack) {\n var newRuleStack = cloneArr(currRuleStack);\n newRuleStack.push(topRule.name);\n var newCurrOccurrenceStack = cloneArr(currOccurrenceStack);\n // top rule is always assumed to have been called with occurrence index 1\n newCurrOccurrenceStack.push(1);\n return {\n idx: currIdx,\n def: topRule.definition,\n ruleStack: newRuleStack,\n occurrenceStack: newCurrOccurrenceStack\n };\n}\n//# sourceMappingURL=interpreter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { map, reduce, every, isEmpty, flatten, forEach, has } from \"../../utils/utils\";\nimport { possiblePathsFrom } from \"./interpreter\";\nimport { RestWalker } from \"./rest\";\nimport { tokenStructuredMatcher, tokenStructuredMatcherNoCategories } from \"../../scan/tokens\";\nimport { Alternation, Alternative as AlternativeGAST, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator } from \"./gast/gast_public\";\nimport { GAstVisitor } from \"./gast/gast_visitor_public\";\nexport var PROD_TYPE;\n(function (PROD_TYPE) {\n PROD_TYPE[PROD_TYPE[\"OPTION\"] = 0] = \"OPTION\";\n PROD_TYPE[PROD_TYPE[\"REPETITION\"] = 1] = \"REPETITION\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_MANDATORY\"] = 2] = \"REPETITION_MANDATORY\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_MANDATORY_WITH_SEPARATOR\"] = 3] = \"REPETITION_MANDATORY_WITH_SEPARATOR\";\n PROD_TYPE[PROD_TYPE[\"REPETITION_WITH_SEPARATOR\"] = 4] = \"REPETITION_WITH_SEPARATOR\";\n PROD_TYPE[PROD_TYPE[\"ALTERNATION\"] = 5] = \"ALTERNATION\";\n})(PROD_TYPE || (PROD_TYPE = {}));\nexport function getProdType(prod) {\n /* istanbul ignore else */\n if (prod instanceof Option) {\n return PROD_TYPE.OPTION;\n }\n else if (prod instanceof Repetition) {\n return PROD_TYPE.REPETITION;\n }\n else if (prod instanceof RepetitionMandatory) {\n return PROD_TYPE.REPETITION_MANDATORY;\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR;\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return PROD_TYPE.REPETITION_WITH_SEPARATOR;\n }\n else if (prod instanceof Alternation) {\n return PROD_TYPE.ALTERNATION;\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nexport function buildLookaheadFuncForOr(occurrence, ruleGrammar, maxLookahead, hasPredicates, dynamicTokensEnabled, laFuncBuilder) {\n var lookAheadPaths = getLookaheadPathsForOr(occurrence, ruleGrammar, maxLookahead);\n var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n return laFuncBuilder(lookAheadPaths, hasPredicates, tokenMatcher, dynamicTokensEnabled);\n}\n/**\n * When dealing with an Optional production (OPTION/MANY/2nd iteration of AT_LEAST_ONE/...) we need to compare\n * the lookahead \"inside\" the production and the lookahead immediately \"after\" it in the same top level rule (context free).\n *\n * Example: given a production:\n * ABC(DE)?DF\n *\n * The optional '(DE)?' should only be entered if we see 'DE'. a single Token 'D' is not sufficient to distinguish between the two\n * alternatives.\n *\n * @returns A Lookahead function which will return true IFF the parser should parse the Optional production.\n */\nexport function buildLookaheadFuncForOptionalProd(occurrence, ruleGrammar, k, dynamicTokensEnabled, prodType, lookaheadBuilder) {\n var lookAheadPaths = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k);\n var tokenMatcher = areTokenCategoriesNotUsed(lookAheadPaths)\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n return lookaheadBuilder(lookAheadPaths[0], tokenMatcher, dynamicTokensEnabled);\n}\nexport function buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) {\n var numOfAlts = alts.length;\n var areAllOneTokenLookahead = every(alts, function (currAlt) {\n return every(currAlt, function (currPath) {\n return currPath.length === 1;\n });\n });\n // This version takes into account the predicates as well.\n if (hasPredicates) {\n /**\n * @returns {number} - The chosen alternative index\n */\n return function (orAlts) {\n // unfortunately the predicates must be extracted every single time\n // as they cannot be cached due to references to parameters(vars) which are no longer valid.\n // note that in the common case of no predicates, no cpu time will be wasted on this (see else block)\n var predicates = map(orAlts, function (currAlt) { return currAlt.GATE; });\n for (var t = 0; t < numOfAlts; t++) {\n var currAlt = alts[t];\n var currNumOfPaths = currAlt.length;\n var currPredicate = predicates[t];\n if (currPredicate !== undefined && currPredicate.call(this) === false) {\n // if the predicate does not match there is no point in checking the paths\n continue;\n }\n nextPath: for (var j = 0; j < currNumOfPaths; j++) {\n var currPath = currAlt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n else if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead. These Optimizations cannot work if dynamically defined Tokens are used.\n var singleTokenAlts = map(alts, function (currAlt) {\n return flatten(currAlt);\n });\n var choiceToAlt_1 = reduce(singleTokenAlts, function (result, currAlt, idx) {\n forEach(currAlt, function (currTokType) {\n if (!has(result, currTokType.tokenTypeIdx)) {\n result[currTokType.tokenTypeIdx] = idx;\n }\n forEach(currTokType.categoryMatches, function (currExtendingType) {\n if (!has(result, currExtendingType)) {\n result[currExtendingType] = idx;\n }\n });\n });\n return result;\n }, []);\n /**\n * @returns {number} - The chosen alternative index\n */\n return function () {\n var nextToken = this.LA(1);\n return choiceToAlt_1[nextToken.tokenTypeIdx];\n };\n }\n else {\n // optimized lookahead without needing to check the predicates at all.\n // this causes code duplication which is intentional to improve performance.\n /**\n * @returns {number} - The chosen alternative index\n */\n return function () {\n for (var t = 0; t < numOfAlts; t++) {\n var currAlt = alts[t];\n var currNumOfPaths = currAlt.length;\n nextPath: for (var j = 0; j < currNumOfPaths; j++) {\n var currPath = currAlt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n // this will also work for an empty ALT as the loop will be skipped\n return t;\n }\n // none of the paths for the current alternative matched\n // try the next alternative\n }\n // none of the alternatives could be matched\n return undefined;\n };\n }\n}\nexport function buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled) {\n var areAllOneTokenLookahead = every(alt, function (currPath) {\n return currPath.length === 1;\n });\n var numOfPaths = alt.length;\n // optimized (common) case of all the lookaheads paths requiring only\n // a single token lookahead.\n if (areAllOneTokenLookahead && !dynamicTokensEnabled) {\n var singleTokensTypes = flatten(alt);\n if (singleTokensTypes.length === 1 &&\n isEmpty(singleTokensTypes[0].categoryMatches)) {\n var expectedTokenType = singleTokensTypes[0];\n var expectedTokenUniqueKey_1 = expectedTokenType.tokenTypeIdx;\n return function () {\n return this.LA(1).tokenTypeIdx === expectedTokenUniqueKey_1;\n };\n }\n else {\n var choiceToAlt_2 = reduce(singleTokensTypes, function (result, currTokType, idx) {\n result[currTokType.tokenTypeIdx] = true;\n forEach(currTokType.categoryMatches, function (currExtendingType) {\n result[currExtendingType] = true;\n });\n return result;\n }, []);\n return function () {\n var nextToken = this.LA(1);\n return choiceToAlt_2[nextToken.tokenTypeIdx] === true;\n };\n }\n }\n else {\n return function () {\n nextPath: for (var j = 0; j < numOfPaths; j++) {\n var currPath = alt[j];\n var currPathLength = currPath.length;\n for (var i = 0; i < currPathLength; i++) {\n var nextToken = this.LA(i + 1);\n if (tokenMatcher(nextToken, currPath[i]) === false) {\n // mismatch in current path\n // try the next pth\n continue nextPath;\n }\n }\n // found a full path that matches.\n return true;\n }\n // none of the paths matched\n return false;\n };\n }\n}\nvar RestDefinitionFinderWalker = /** @class */ (function (_super) {\n __extends(RestDefinitionFinderWalker, _super);\n function RestDefinitionFinderWalker(topProd, targetOccurrence, targetProdType) {\n var _this = _super.call(this) || this;\n _this.topProd = topProd;\n _this.targetOccurrence = targetOccurrence;\n _this.targetProdType = targetProdType;\n return _this;\n }\n RestDefinitionFinderWalker.prototype.startWalking = function () {\n this.walk(this.topProd);\n return this.restDef;\n };\n RestDefinitionFinderWalker.prototype.checkIsTarget = function (node, expectedProdType, currRest, prevRest) {\n if (node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdType) {\n this.restDef = currRest.concat(prevRest);\n return true;\n }\n // performance optimization, do not iterate over the entire Grammar ast after we have found the target\n return false;\n };\n RestDefinitionFinderWalker.prototype.walkOption = function (optionProd, currRest, prevRest) {\n if (!this.checkIsTarget(optionProd, PROD_TYPE.OPTION, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, optionProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkAtLeastOne = function (atLeastOneProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneProd, PROD_TYPE.REPETITION_MANDATORY, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, atLeastOneProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkAtLeastOneSep = function (atLeastOneSepProd, currRest, prevRest) {\n if (!this.checkIsTarget(atLeastOneSepProd, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, atLeastOneSepProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkMany = function (manyProd, currRest, prevRest) {\n if (!this.checkIsTarget(manyProd, PROD_TYPE.REPETITION, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, manyProd, currRest, prevRest);\n }\n };\n RestDefinitionFinderWalker.prototype.walkManySep = function (manySepProd, currRest, prevRest) {\n if (!this.checkIsTarget(manySepProd, PROD_TYPE.REPETITION_WITH_SEPARATOR, currRest, prevRest)) {\n _super.prototype.walkOption.call(this, manySepProd, currRest, prevRest);\n }\n };\n return RestDefinitionFinderWalker;\n}(RestWalker));\n/**\n * Returns the definition of a target production in a top level level rule.\n */\nvar InsideDefinitionFinderVisitor = /** @class */ (function (_super) {\n __extends(InsideDefinitionFinderVisitor, _super);\n function InsideDefinitionFinderVisitor(targetOccurrence, targetProdType, targetRef) {\n var _this = _super.call(this) || this;\n _this.targetOccurrence = targetOccurrence;\n _this.targetProdType = targetProdType;\n _this.targetRef = targetRef;\n _this.result = [];\n return _this;\n }\n InsideDefinitionFinderVisitor.prototype.checkIsTarget = function (node, expectedProdName) {\n if (node.idx === this.targetOccurrence &&\n this.targetProdType === expectedProdName &&\n (this.targetRef === undefined || node === this.targetRef)) {\n this.result = node.definition;\n }\n };\n InsideDefinitionFinderVisitor.prototype.visitOption = function (node) {\n this.checkIsTarget(node, PROD_TYPE.OPTION);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetition = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatory = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionMandatoryWithSeparator = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR);\n };\n InsideDefinitionFinderVisitor.prototype.visitRepetitionWithSeparator = function (node) {\n this.checkIsTarget(node, PROD_TYPE.REPETITION_WITH_SEPARATOR);\n };\n InsideDefinitionFinderVisitor.prototype.visitAlternation = function (node) {\n this.checkIsTarget(node, PROD_TYPE.ALTERNATION);\n };\n return InsideDefinitionFinderVisitor;\n}(GAstVisitor));\nfunction initializeArrayOfArrays(size) {\n var result = new Array(size);\n for (var i = 0; i < size; i++) {\n result[i] = [];\n }\n return result;\n}\n/**\n * A sort of hash function between a Path in the grammar and a string.\n * Note that this returns multiple \"hashes\" to support the scenario of token categories.\n * - A single path with categories may match multiple **actual** paths.\n */\nfunction pathToHashKeys(path) {\n var keys = [\"\"];\n for (var i = 0; i < path.length; i++) {\n var tokType = path[i];\n var longerKeys = [];\n for (var j = 0; j < keys.length; j++) {\n var currShorterKey = keys[j];\n longerKeys.push(currShorterKey + \"_\" + tokType.tokenTypeIdx);\n for (var t = 0; t < tokType.categoryMatches.length; t++) {\n var categoriesKeySuffix = \"_\" + tokType.categoryMatches[t];\n longerKeys.push(currShorterKey + categoriesKeySuffix);\n }\n }\n keys = longerKeys;\n }\n return keys;\n}\n/**\n * Imperative style due to being called from a hot spot\n */\nfunction isUniquePrefixHash(altKnownPathsKeys, searchPathKeys, idx) {\n for (var currAltIdx = 0; currAltIdx < altKnownPathsKeys.length; currAltIdx++) {\n // We only want to test vs the other alternatives\n if (currAltIdx === idx) {\n continue;\n }\n var otherAltKnownPathsKeys = altKnownPathsKeys[currAltIdx];\n for (var searchIdx = 0; searchIdx < searchPathKeys.length; searchIdx++) {\n var searchKey = searchPathKeys[searchIdx];\n if (otherAltKnownPathsKeys[searchKey] === true) {\n return false;\n }\n }\n }\n // None of the SearchPathKeys were found in any of the other alternatives\n return true;\n}\nexport function lookAheadSequenceFromAlternatives(altsDefs, k) {\n var partialAlts = map(altsDefs, function (currAlt) { return possiblePathsFrom([currAlt], 1); });\n var finalResult = initializeArrayOfArrays(partialAlts.length);\n var altsHashes = map(partialAlts, function (currAltPaths) {\n var dict = {};\n forEach(currAltPaths, function (item) {\n var keys = pathToHashKeys(item.partialPath);\n forEach(keys, function (currKey) {\n dict[currKey] = true;\n });\n });\n return dict;\n });\n var newData = partialAlts;\n // maxLookahead loop\n for (var pathLength = 1; pathLength <= k; pathLength++) {\n var currDataset = newData;\n newData = initializeArrayOfArrays(currDataset.length);\n var _loop_1 = function (altIdx) {\n var currAltPathsAndSuffixes = currDataset[altIdx];\n // paths in current alternative loop\n for (var currPathIdx = 0; currPathIdx < currAltPathsAndSuffixes.length; currPathIdx++) {\n var currPathPrefix = currAltPathsAndSuffixes[currPathIdx].partialPath;\n var suffixDef = currAltPathsAndSuffixes[currPathIdx].suffixDef;\n var prefixKeys = pathToHashKeys(currPathPrefix);\n var isUnique = isUniquePrefixHash(altsHashes, prefixKeys, altIdx);\n // End of the line for this path.\n if (isUnique || isEmpty(suffixDef) || currPathPrefix.length === k) {\n var currAltResult = finalResult[altIdx];\n // TODO: Can we implement a containsPath using Maps/Dictionaries?\n if (containsPath(currAltResult, currPathPrefix) === false) {\n currAltResult.push(currPathPrefix);\n // Update all new keys for the current path.\n for (var j = 0; j < prefixKeys.length; j++) {\n var currKey = prefixKeys[j];\n altsHashes[altIdx][currKey] = true;\n }\n }\n }\n // Expand longer paths\n else {\n var newPartialPathsAndSuffixes = possiblePathsFrom(suffixDef, pathLength + 1, currPathPrefix);\n newData[altIdx] = newData[altIdx].concat(newPartialPathsAndSuffixes);\n // Update keys for new known paths\n forEach(newPartialPathsAndSuffixes, function (item) {\n var prefixKeys = pathToHashKeys(item.partialPath);\n forEach(prefixKeys, function (key) {\n altsHashes[altIdx][key] = true;\n });\n });\n }\n }\n };\n // alternatives loop\n for (var altIdx = 0; altIdx < currDataset.length; altIdx++) {\n _loop_1(altIdx);\n }\n }\n return finalResult;\n}\nexport function getLookaheadPathsForOr(occurrence, ruleGrammar, k, orProd) {\n var visitor = new InsideDefinitionFinderVisitor(occurrence, PROD_TYPE.ALTERNATION, orProd);\n ruleGrammar.accept(visitor);\n return lookAheadSequenceFromAlternatives(visitor.result, k);\n}\nexport function getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, k) {\n var insideDefVisitor = new InsideDefinitionFinderVisitor(occurrence, prodType);\n ruleGrammar.accept(insideDefVisitor);\n var insideDef = insideDefVisitor.result;\n var afterDefWalker = new RestDefinitionFinderWalker(ruleGrammar, occurrence, prodType);\n var afterDef = afterDefWalker.startWalking();\n var insideFlat = new AlternativeGAST({ definition: insideDef });\n var afterFlat = new AlternativeGAST({ definition: afterDef });\n return lookAheadSequenceFromAlternatives([insideFlat, afterFlat], k);\n}\nexport function containsPath(alternative, searchPath) {\n compareOtherPath: for (var i = 0; i < alternative.length; i++) {\n var otherPath = alternative[i];\n if (otherPath.length !== searchPath.length) {\n continue;\n }\n for (var j = 0; j < otherPath.length; j++) {\n var searchTok = searchPath[j];\n var otherTok = otherPath[j];\n var matchingTokens = searchTok === otherTok ||\n otherTok.categoryMatchesMap[searchTok.tokenTypeIdx] !== undefined;\n if (matchingTokens === false) {\n continue compareOtherPath;\n }\n }\n return true;\n }\n return false;\n}\nexport function isStrictPrefixOfPath(prefix, other) {\n return (prefix.length < other.length &&\n every(prefix, function (tokType, idx) {\n var otherTokType = other[idx];\n return (tokType === otherTokType ||\n otherTokType.categoryMatchesMap[tokType.tokenTypeIdx]);\n }));\n}\nexport function areTokenCategoriesNotUsed(lookAheadPaths) {\n return every(lookAheadPaths, function (singleAltPaths) {\n return every(singleAltPaths, function (singlePath) {\n return every(singlePath, function (token) { return isEmpty(token.categoryMatches); });\n });\n });\n}\n//# sourceMappingURL=lookahead.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as utils from \"../../utils/utils\";\nimport { contains, every, findAll, flatten, forEach, isEmpty, map, reduce, reject } from \"../../utils/utils\";\nimport { ParserDefinitionErrorType } from \"../parser/parser\";\nimport { getProductionDslName, isOptionalProd } from \"./gast/gast\";\nimport { containsPath, getLookaheadPathsForOptionalProd, getLookaheadPathsForOr, getProdType, isStrictPrefixOfPath } from \"./lookahead\";\nimport { nextPossibleTokensAfter } from \"./interpreter\";\nimport { Alternation, Alternative as AlternativeGAST, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal } from \"./gast/gast_public\";\nimport { GAstVisitor } from \"./gast/gast_visitor_public\";\nexport function validateGrammar(topLevels, globalMaxLookahead, tokenTypes, errMsgProvider, grammarName) {\n var duplicateErrors = utils.map(topLevels, function (currTopLevel) {\n return validateDuplicateProductions(currTopLevel, errMsgProvider);\n });\n var leftRecursionErrors = utils.map(topLevels, function (currTopRule) {\n return validateNoLeftRecursion(currTopRule, currTopRule, errMsgProvider);\n });\n var emptyAltErrors = [];\n var ambiguousAltsErrors = [];\n var emptyRepetitionErrors = [];\n // left recursion could cause infinite loops in the following validations.\n // It is safest to first have the user fix the left recursion errors first and only then examine Further issues.\n if (every(leftRecursionErrors, isEmpty)) {\n emptyAltErrors = map(topLevels, function (currTopRule) {\n return validateEmptyOrAlternative(currTopRule, errMsgProvider);\n });\n ambiguousAltsErrors = map(topLevels, function (currTopRule) {\n return validateAmbiguousAlternationAlternatives(currTopRule, globalMaxLookahead, errMsgProvider);\n });\n emptyRepetitionErrors = validateSomeNonEmptyLookaheadPath(topLevels, globalMaxLookahead, errMsgProvider);\n }\n var termsNamespaceConflictErrors = checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider);\n var tooManyAltsErrors = map(topLevels, function (curRule) {\n return validateTooManyAlts(curRule, errMsgProvider);\n });\n var duplicateRulesError = map(topLevels, function (curRule) {\n return validateRuleDoesNotAlreadyExist(curRule, topLevels, grammarName, errMsgProvider);\n });\n return (utils.flatten(duplicateErrors.concat(emptyRepetitionErrors, leftRecursionErrors, emptyAltErrors, ambiguousAltsErrors, termsNamespaceConflictErrors, tooManyAltsErrors, duplicateRulesError)));\n}\nfunction validateDuplicateProductions(topLevelRule, errMsgProvider) {\n var collectorVisitor = new OccurrenceValidationCollector();\n topLevelRule.accept(collectorVisitor);\n var allRuleProductions = collectorVisitor.allProductions;\n var productionGroups = utils.groupBy(allRuleProductions, identifyProductionForDuplicates);\n var duplicates = utils.pick(productionGroups, function (currGroup) {\n return currGroup.length > 1;\n });\n var errors = utils.map(utils.values(duplicates), function (currDuplicates) {\n var firstProd = utils.first(currDuplicates);\n var msg = errMsgProvider.buildDuplicateFoundError(topLevelRule, currDuplicates);\n var dslName = getProductionDslName(firstProd);\n var defError = {\n message: msg,\n type: ParserDefinitionErrorType.DUPLICATE_PRODUCTIONS,\n ruleName: topLevelRule.name,\n dslName: dslName,\n occurrence: firstProd.idx\n };\n var param = getExtraProductionArgument(firstProd);\n if (param) {\n defError.parameter = param;\n }\n return defError;\n });\n return errors;\n}\nexport function identifyProductionForDuplicates(prod) {\n return getProductionDslName(prod) + \"_#_\" + prod.idx + \"_#_\" + getExtraProductionArgument(prod);\n}\nfunction getExtraProductionArgument(prod) {\n if (prod instanceof Terminal) {\n return prod.terminalType.name;\n }\n else if (prod instanceof NonTerminal) {\n return prod.nonTerminalName;\n }\n else {\n return \"\";\n }\n}\nvar OccurrenceValidationCollector = /** @class */ (function (_super) {\n __extends(OccurrenceValidationCollector, _super);\n function OccurrenceValidationCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allProductions = [];\n return _this;\n }\n OccurrenceValidationCollector.prototype.visitNonTerminal = function (subrule) {\n this.allProductions.push(subrule);\n };\n OccurrenceValidationCollector.prototype.visitOption = function (option) {\n this.allProductions.push(option);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.allProductions.push(manySep);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.allProductions.push(atLeastOne);\n };\n OccurrenceValidationCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n };\n OccurrenceValidationCollector.prototype.visitRepetition = function (many) {\n this.allProductions.push(many);\n };\n OccurrenceValidationCollector.prototype.visitAlternation = function (or) {\n this.allProductions.push(or);\n };\n OccurrenceValidationCollector.prototype.visitTerminal = function (terminal) {\n this.allProductions.push(terminal);\n };\n return OccurrenceValidationCollector;\n}(GAstVisitor));\nexport { OccurrenceValidationCollector };\nexport function validateRuleDoesNotAlreadyExist(rule, allRules, className, errMsgProvider) {\n var errors = [];\n var occurrences = reduce(allRules, function (result, curRule) {\n if (curRule.name === rule.name) {\n return result + 1;\n }\n return result;\n }, 0);\n if (occurrences > 1) {\n var errMsg = errMsgProvider.buildDuplicateRuleNameError({\n topLevelRule: rule,\n grammarName: className\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: rule.name\n });\n }\n return errors;\n}\n// TODO: is there anyway to get only the rule names of rules inherited from the super grammars?\n// This is not part of the IGrammarErrorProvider because the validation cannot be performed on\n// The grammar structure, only at runtime.\nexport function validateRuleIsOverridden(ruleName, definedRulesNames, className) {\n var errors = [];\n var errMsg;\n if (!utils.contains(definedRulesNames, ruleName)) {\n errMsg =\n \"Invalid rule override, rule: ->\" + ruleName + \"<- cannot be overridden in the grammar: ->\" + className + \"<-\" +\n \"as it is not defined in any of the super grammars \";\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.INVALID_RULE_OVERRIDE,\n ruleName: ruleName\n });\n }\n return errors;\n}\nexport function validateNoLeftRecursion(topRule, currRule, errMsgProvider, path) {\n if (path === void 0) { path = []; }\n var errors = [];\n var nextNonTerminals = getFirstNoneTerminal(currRule.definition);\n if (utils.isEmpty(nextNonTerminals)) {\n return [];\n }\n else {\n var ruleName = topRule.name;\n var foundLeftRecursion = utils.contains(nextNonTerminals, topRule);\n if (foundLeftRecursion) {\n errors.push({\n message: errMsgProvider.buildLeftRecursionError({\n topLevelRule: topRule,\n leftRecursionPath: path\n }),\n type: ParserDefinitionErrorType.LEFT_RECURSION,\n ruleName: ruleName\n });\n }\n // we are only looking for cyclic paths leading back to the specific topRule\n // other cyclic paths are ignored, we still need this difference to avoid infinite loops...\n var validNextSteps = utils.difference(nextNonTerminals, path.concat([topRule]));\n var errorsFromNextSteps = utils.map(validNextSteps, function (currRefRule) {\n var newPath = utils.cloneArr(path);\n newPath.push(currRefRule);\n return validateNoLeftRecursion(topRule, currRefRule, errMsgProvider, newPath);\n });\n return errors.concat(utils.flatten(errorsFromNextSteps));\n }\n}\nexport function getFirstNoneTerminal(definition) {\n var result = [];\n if (utils.isEmpty(definition)) {\n return result;\n }\n var firstProd = utils.first(definition);\n /* istanbul ignore else */\n if (firstProd instanceof NonTerminal) {\n result.push(firstProd.referencedRule);\n }\n else if (firstProd instanceof AlternativeGAST ||\n firstProd instanceof Option ||\n firstProd instanceof RepetitionMandatory ||\n firstProd instanceof RepetitionMandatoryWithSeparator ||\n firstProd instanceof RepetitionWithSeparator ||\n firstProd instanceof Repetition) {\n result = result.concat(getFirstNoneTerminal(firstProd.definition));\n }\n else if (firstProd instanceof Alternation) {\n // each sub definition in alternation is a FLAT\n result = utils.flatten(utils.map(firstProd.definition, function (currSubDef) {\n return getFirstNoneTerminal(currSubDef.definition);\n }));\n }\n else if (firstProd instanceof Terminal) {\n // nothing to see, move along\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n var isFirstOptional = isOptionalProd(firstProd);\n var hasMore = definition.length > 1;\n if (isFirstOptional && hasMore) {\n var rest = utils.drop(definition);\n return result.concat(getFirstNoneTerminal(rest));\n }\n else {\n return result;\n }\n}\nvar OrCollector = /** @class */ (function (_super) {\n __extends(OrCollector, _super);\n function OrCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.alternations = [];\n return _this;\n }\n OrCollector.prototype.visitAlternation = function (node) {\n this.alternations.push(node);\n };\n return OrCollector;\n}(GAstVisitor));\nexport function validateEmptyOrAlternative(topLevelRule, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n var errors = utils.reduce(ors, function (errors, currOr) {\n var exceptLast = utils.dropRight(currOr.definition);\n var currErrors = utils.map(exceptLast, function (currAlternative, currAltIdx) {\n var possibleFirstInAlt = nextPossibleTokensAfter([currAlternative], [], null, 1);\n if (utils.isEmpty(possibleFirstInAlt)) {\n return {\n message: errMsgProvider.buildEmptyAlternationError({\n topLevelRule: topLevelRule,\n alternation: currOr,\n emptyChoiceIdx: currAltIdx\n }),\n type: ParserDefinitionErrorType.NONE_LAST_EMPTY_ALT,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx,\n alternative: currAltIdx + 1\n };\n }\n else {\n return null;\n }\n });\n return errors.concat(utils.compact(currErrors));\n }, []);\n return errors;\n}\nexport function validateAmbiguousAlternationAlternatives(topLevelRule, globalMaxLookahead, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n // New Handling of ignoring ambiguities\n // - https://github.com/chevrotain/chevrotain/issues/869\n ors = reject(ors, function (currOr) { return currOr.ignoreAmbiguities === true; });\n var errors = utils.reduce(ors, function (result, currOr) {\n var currOccurrence = currOr.idx;\n var actualMaxLookahead = currOr.maxLookahead || globalMaxLookahead;\n var alternatives = getLookaheadPathsForOr(currOccurrence, topLevelRule, actualMaxLookahead, currOr);\n var altsAmbiguityErrors = checkAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n var altsPrefixAmbiguityErrors = checkPrefixAlternativesAmbiguities(alternatives, currOr, topLevelRule, errMsgProvider);\n return result.concat(altsAmbiguityErrors, altsPrefixAmbiguityErrors);\n }, []);\n return errors;\n}\nvar RepetionCollector = /** @class */ (function (_super) {\n __extends(RepetionCollector, _super);\n function RepetionCollector() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.allProductions = [];\n return _this;\n }\n RepetionCollector.prototype.visitRepetitionWithSeparator = function (manySep) {\n this.allProductions.push(manySep);\n };\n RepetionCollector.prototype.visitRepetitionMandatory = function (atLeastOne) {\n this.allProductions.push(atLeastOne);\n };\n RepetionCollector.prototype.visitRepetitionMandatoryWithSeparator = function (atLeastOneSep) {\n this.allProductions.push(atLeastOneSep);\n };\n RepetionCollector.prototype.visitRepetition = function (many) {\n this.allProductions.push(many);\n };\n return RepetionCollector;\n}(GAstVisitor));\nexport { RepetionCollector };\nexport function validateTooManyAlts(topLevelRule, errMsgProvider) {\n var orCollector = new OrCollector();\n topLevelRule.accept(orCollector);\n var ors = orCollector.alternations;\n var errors = utils.reduce(ors, function (errors, currOr) {\n if (currOr.definition.length > 255) {\n errors.push({\n message: errMsgProvider.buildTooManyAlternativesError({\n topLevelRule: topLevelRule,\n alternation: currOr\n }),\n type: ParserDefinitionErrorType.TOO_MANY_ALTS,\n ruleName: topLevelRule.name,\n occurrence: currOr.idx\n });\n }\n return errors;\n }, []);\n return errors;\n}\nexport function validateSomeNonEmptyLookaheadPath(topLevelRules, maxLookahead, errMsgProvider) {\n var errors = [];\n forEach(topLevelRules, function (currTopRule) {\n var collectorVisitor = new RepetionCollector();\n currTopRule.accept(collectorVisitor);\n var allRuleProductions = collectorVisitor.allProductions;\n forEach(allRuleProductions, function (currProd) {\n var prodType = getProdType(currProd);\n var actualMaxLookahead = currProd.maxLookahead || maxLookahead;\n var currOccurrence = currProd.idx;\n var paths = getLookaheadPathsForOptionalProd(currOccurrence, currTopRule, prodType, actualMaxLookahead);\n var pathsInsideProduction = paths[0];\n if (isEmpty(flatten(pathsInsideProduction))) {\n var errMsg = errMsgProvider.buildEmptyRepetitionError({\n topLevelRule: currTopRule,\n repetition: currProd\n });\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.NO_NON_EMPTY_LOOKAHEAD,\n ruleName: currTopRule.name\n });\n }\n });\n });\n return errors;\n}\nfunction checkAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) {\n var foundAmbiguousPaths = [];\n var identicalAmbiguities = reduce(alternatives, function (result, currAlt, currAltIdx) {\n // ignore (skip) ambiguities with this alternative\n if (alternation.definition[currAltIdx].ignoreAmbiguities === true) {\n return result;\n }\n forEach(currAlt, function (currPath) {\n var altsCurrPathAppearsIn = [currAltIdx];\n forEach(alternatives, function (currOtherAlt, currOtherAltIdx) {\n if (currAltIdx !== currOtherAltIdx &&\n containsPath(currOtherAlt, currPath) &&\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[currOtherAltIdx].ignoreAmbiguities !== true) {\n altsCurrPathAppearsIn.push(currOtherAltIdx);\n }\n });\n if (altsCurrPathAppearsIn.length > 1 &&\n !containsPath(foundAmbiguousPaths, currPath)) {\n foundAmbiguousPaths.push(currPath);\n result.push({\n alts: altsCurrPathAppearsIn,\n path: currPath\n });\n }\n });\n return result;\n }, []);\n var currErrors = utils.map(identicalAmbiguities, function (currAmbDescriptor) {\n var ambgIndices = map(currAmbDescriptor.alts, function (currAltIdx) { return currAltIdx + 1; });\n var currMessage = errMsgProvider.buildAlternationAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbDescriptor.path\n });\n return {\n message: currMessage,\n type: ParserDefinitionErrorType.AMBIGUOUS_ALTS,\n ruleName: rule.name,\n occurrence: alternation.idx,\n alternatives: [currAmbDescriptor.alts]\n };\n });\n return currErrors;\n}\nexport function checkPrefixAlternativesAmbiguities(alternatives, alternation, rule, errMsgProvider) {\n var errors = [];\n // flatten\n var pathsAndIndices = reduce(alternatives, function (result, currAlt, idx) {\n var currPathsAndIdx = map(currAlt, function (currPath) {\n return { idx: idx, path: currPath };\n });\n return result.concat(currPathsAndIdx);\n }, []);\n forEach(pathsAndIndices, function (currPathAndIdx) {\n var alternativeGast = alternation.definition[currPathAndIdx.idx];\n // ignore (skip) ambiguities with this alternative\n if (alternativeGast.ignoreAmbiguities === true) {\n return;\n }\n var targetIdx = currPathAndIdx.idx;\n var targetPath = currPathAndIdx.path;\n var prefixAmbiguitiesPathsAndIndices = findAll(pathsAndIndices, function (searchPathAndIdx) {\n // prefix ambiguity can only be created from lower idx (higher priority) path\n return (\n // ignore (skip) ambiguities with this \"other\" alternative\n alternation.definition[searchPathAndIdx.idx].ignoreAmbiguities !==\n true &&\n searchPathAndIdx.idx < targetIdx &&\n // checking for strict prefix because identical lookaheads\n // will be be detected using a different validation.\n isStrictPrefixOfPath(searchPathAndIdx.path, targetPath));\n });\n var currPathPrefixErrors = map(prefixAmbiguitiesPathsAndIndices, function (currAmbPathAndIdx) {\n var ambgIndices = [currAmbPathAndIdx.idx + 1, targetIdx + 1];\n var occurrence = alternation.idx === 0 ? \"\" : alternation.idx;\n var message = errMsgProvider.buildAlternationPrefixAmbiguityError({\n topLevelRule: rule,\n alternation: alternation,\n ambiguityIndices: ambgIndices,\n prefixPath: currAmbPathAndIdx.path\n });\n return {\n message: message,\n type: ParserDefinitionErrorType.AMBIGUOUS_PREFIX_ALTS,\n ruleName: rule.name,\n occurrence: occurrence,\n alternatives: ambgIndices\n };\n });\n errors = errors.concat(currPathPrefixErrors);\n });\n return errors;\n}\nfunction checkTerminalAndNoneTerminalsNameSpace(topLevels, tokenTypes, errMsgProvider) {\n var errors = [];\n var tokenNames = map(tokenTypes, function (currToken) { return currToken.name; });\n forEach(topLevels, function (currRule) {\n var currRuleName = currRule.name;\n if (contains(tokenNames, currRuleName)) {\n var errMsg = errMsgProvider.buildNamespaceConflictError(currRule);\n errors.push({\n message: errMsg,\n type: ParserDefinitionErrorType.CONFLICT_TOKENS_RULES_NAMESPACE,\n ruleName: currRuleName\n });\n }\n });\n return errors;\n}\n//# sourceMappingURL=checks.js.map","import { defaults, forEach } from \"../../../utils/utils\";\nimport { resolveGrammar as orgResolveGrammar } from \"../resolver\";\nimport { validateGrammar as orgValidateGrammar } from \"../checks\";\nimport { defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider } from \"../../errors_public\";\nimport { DslMethodsCollectorVisitor } from \"./gast\";\nexport function resolveGrammar(options) {\n options = defaults(options, {\n errMsgProvider: defaultGrammarResolverErrorProvider\n });\n var topRulesTable = {};\n forEach(options.rules, function (rule) {\n topRulesTable[rule.name] = rule;\n });\n return orgResolveGrammar(topRulesTable, options.errMsgProvider);\n}\nexport function validateGrammar(options) {\n options = defaults(options, {\n errMsgProvider: defaultGrammarValidatorErrorProvider\n });\n return orgValidateGrammar(options.rules, options.maxLookahead, options.tokenTypes, options.errMsgProvider, options.grammarName);\n}\nexport function assignOccurrenceIndices(options) {\n forEach(options.rules, function (currRule) {\n var methodsCollector = new DslMethodsCollectorVisitor();\n currRule.accept(methodsCollector);\n forEach(methodsCollector.dslMethods, function (methods) {\n forEach(methods, function (currMethod, arrIdx) {\n currMethod.idx = arrIdx + 1;\n });\n });\n });\n}\n//# sourceMappingURL=gast_resolver_public.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { contains } from \"../utils/utils\";\nvar MISMATCHED_TOKEN_EXCEPTION = \"MismatchedTokenException\";\nvar NO_VIABLE_ALT_EXCEPTION = \"NoViableAltException\";\nvar EARLY_EXIT_EXCEPTION = \"EarlyExitException\";\nvar NOT_ALL_INPUT_PARSED_EXCEPTION = \"NotAllInputParsedException\";\nvar RECOGNITION_EXCEPTION_NAMES = [\n MISMATCHED_TOKEN_EXCEPTION,\n NO_VIABLE_ALT_EXCEPTION,\n EARLY_EXIT_EXCEPTION,\n NOT_ALL_INPUT_PARSED_EXCEPTION\n];\nObject.freeze(RECOGNITION_EXCEPTION_NAMES);\n// hacks to bypass no support for custom Errors in javascript/typescript\nexport function isRecognitionException(error) {\n // can't do instanceof on hacked custom js exceptions\n return contains(RECOGNITION_EXCEPTION_NAMES, error.name);\n}\nvar RecognitionException = /** @class */ (function (_super) {\n __extends(RecognitionException, _super);\n function RecognitionException(message, token) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.token = token;\n _this.resyncedTokens = [];\n // fix prototype chain when typescript target is ES5\n Object.setPrototypeOf(_this, _newTarget.prototype);\n /* istanbul ignore next - V8 workaround to remove constructor from stacktrace when typescript target is ES5 */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, _this.constructor);\n }\n return _this;\n }\n return RecognitionException;\n}(Error));\nvar MismatchedTokenException = /** @class */ (function (_super) {\n __extends(MismatchedTokenException, _super);\n function MismatchedTokenException(message, token, previousToken) {\n var _this = _super.call(this, message, token) || this;\n _this.previousToken = previousToken;\n _this.name = MISMATCHED_TOKEN_EXCEPTION;\n return _this;\n }\n return MismatchedTokenException;\n}(RecognitionException));\nexport { MismatchedTokenException };\nvar NoViableAltException = /** @class */ (function (_super) {\n __extends(NoViableAltException, _super);\n function NoViableAltException(message, token, previousToken) {\n var _this = _super.call(this, message, token) || this;\n _this.previousToken = previousToken;\n _this.name = NO_VIABLE_ALT_EXCEPTION;\n return _this;\n }\n return NoViableAltException;\n}(RecognitionException));\nexport { NoViableAltException };\nvar NotAllInputParsedException = /** @class */ (function (_super) {\n __extends(NotAllInputParsedException, _super);\n function NotAllInputParsedException(message, token) {\n var _this = _super.call(this, message, token) || this;\n _this.name = NOT_ALL_INPUT_PARSED_EXCEPTION;\n return _this;\n }\n return NotAllInputParsedException;\n}(RecognitionException));\nexport { NotAllInputParsedException };\nvar EarlyExitException = /** @class */ (function (_super) {\n __extends(EarlyExitException, _super);\n function EarlyExitException(message, token, previousToken) {\n var _this = _super.call(this, message, token) || this;\n _this.previousToken = previousToken;\n _this.name = EARLY_EXIT_EXCEPTION;\n return _this;\n }\n return EarlyExitException;\n}(RecognitionException));\nexport { EarlyExitException };\n//# sourceMappingURL=exceptions_public.js.map","import { createTokenInstance, EOF } from \"../../../scan/tokens_public\";\nimport { cloneArr, contains, dropRight, find, flatten, has, isEmpty, map } from \"../../../utils/utils\";\nimport { MismatchedTokenException } from \"../../exceptions_public\";\nimport { IN } from \"../../constants\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\nexport var EOF_FOLLOW_KEY = {};\nexport var IN_RULE_RECOVERY_EXCEPTION = \"InRuleRecoveryException\";\nexport function InRuleRecoveryException(message) {\n this.name = IN_RULE_RECOVERY_EXCEPTION;\n this.message = message;\n}\nInRuleRecoveryException.prototype = Error.prototype;\n/**\n * This trait is responsible for the error recovery and fault tolerant logic\n */\nvar Recoverable = /** @class */ (function () {\n function Recoverable() {\n }\n Recoverable.prototype.initRecoverable = function (config) {\n this.firstAfterRepMap = {};\n this.resyncFollows = {};\n this.recoveryEnabled = has(config, \"recoveryEnabled\")\n ? config.recoveryEnabled\n : DEFAULT_PARSER_CONFIG.recoveryEnabled;\n // performance optimization, NOOP will be inlined which\n // effectively means that this optional feature does not exist\n // when not used.\n if (this.recoveryEnabled) {\n this.attemptInRepetitionRecovery = attemptInRepetitionRecovery;\n }\n };\n Recoverable.prototype.getTokenToInsert = function (tokType) {\n var tokToInsert = createTokenInstance(tokType, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\n tokToInsert.isInsertedInRecovery = true;\n return tokToInsert;\n };\n Recoverable.prototype.canTokenTypeBeInsertedInRecovery = function (tokType) {\n return true;\n };\n Recoverable.prototype.tryInRepetitionRecovery = function (grammarRule, grammarRuleArgs, lookAheadFunc, expectedTokType) {\n var _this = this;\n // TODO: can the resyncTokenType be cached?\n var reSyncTokType = this.findReSyncTokenType();\n var savedLexerState = this.exportLexerState();\n var resyncedTokens = [];\n var passedResyncPoint = false;\n var nextTokenWithoutResync = this.LA(1);\n var currToken = this.LA(1);\n var generateErrorMessage = function () {\n var previousToken = _this.LA(0);\n // we are preemptively re-syncing before an error has been detected, therefor we must reproduce\n // the error that would have been thrown\n var msg = _this.errorMessageProvider.buildMismatchTokenMessage({\n expected: expectedTokType,\n actual: nextTokenWithoutResync,\n previous: previousToken,\n ruleName: _this.getCurrRuleFullName()\n });\n var error = new MismatchedTokenException(msg, nextTokenWithoutResync, _this.LA(0));\n // the first token here will be the original cause of the error, this is not part of the resyncedTokens property.\n error.resyncedTokens = dropRight(resyncedTokens);\n _this.SAVE_ERROR(error);\n };\n while (!passedResyncPoint) {\n // re-synced to a point where we can safely exit the repetition/\n if (this.tokenMatcher(currToken, expectedTokType)) {\n generateErrorMessage();\n return; // must return here to avoid reverting the inputIdx\n }\n else if (lookAheadFunc.call(this)) {\n // we skipped enough tokens so we can resync right back into another iteration of the repetition grammar rule\n generateErrorMessage();\n // recursive invocation in other to support multiple re-syncs in the same top level repetition grammar rule\n grammarRule.apply(this, grammarRuleArgs);\n return; // must return here to avoid reverting the inputIdx\n }\n else if (this.tokenMatcher(currToken, reSyncTokType)) {\n passedResyncPoint = true;\n }\n else {\n currToken = this.SKIP_TOKEN();\n this.addToResyncTokens(currToken, resyncedTokens);\n }\n }\n // we were unable to find a CLOSER point to resync inside the Repetition, reset the state.\n // The parsing exception we were trying to prevent will happen in the NEXT parsing step. it may be handled by\n // \"between rules\" resync recovery later in the flow.\n this.importLexerState(savedLexerState);\n };\n Recoverable.prototype.shouldInRepetitionRecoveryBeTried = function (expectTokAfterLastMatch, nextTokIdx, notStuck) {\n // Edge case of arriving from a MANY repetition which is stuck\n // Attempting recovery in this case could cause an infinite loop\n if (notStuck === false) {\n return false;\n }\n // arguments to try and perform resync into the next iteration of the many are missing\n if (expectTokAfterLastMatch === undefined || nextTokIdx === undefined) {\n return false;\n }\n // no need to recover, next token is what we expect...\n if (this.tokenMatcher(this.LA(1), expectTokAfterLastMatch)) {\n return false;\n }\n // error recovery is disabled during backtracking as it can make the parser ignore a valid grammar path\n // and prefer some backtracking path that includes recovered errors.\n if (this.isBackTracking()) {\n return false;\n }\n // if we can perform inRule recovery (single token insertion or deletion) we always prefer that recovery algorithm\n // because if it works, it makes the least amount of changes to the input stream (greedy algorithm)\n //noinspection RedundantIfStatementJS\n if (this.canPerformInRuleRecovery(expectTokAfterLastMatch, this.getFollowsForInRuleRecovery(expectTokAfterLastMatch, nextTokIdx))) {\n return false;\n }\n return true;\n };\n // Error Recovery functionality\n Recoverable.prototype.getFollowsForInRuleRecovery = function (tokType, tokIdxInRule) {\n var grammarPath = this.getCurrentGrammarPath(tokType, tokIdxInRule);\n var follows = this.getNextPossibleTokenTypes(grammarPath);\n return follows;\n };\n Recoverable.prototype.tryInRuleRecovery = function (expectedTokType, follows) {\n if (this.canRecoverWithSingleTokenInsertion(expectedTokType, follows)) {\n var tokToInsert = this.getTokenToInsert(expectedTokType);\n return tokToInsert;\n }\n if (this.canRecoverWithSingleTokenDeletion(expectedTokType)) {\n var nextTok = this.SKIP_TOKEN();\n this.consumeToken();\n return nextTok;\n }\n throw new InRuleRecoveryException(\"sad sad panda\");\n };\n Recoverable.prototype.canPerformInRuleRecovery = function (expectedToken, follows) {\n return (this.canRecoverWithSingleTokenInsertion(expectedToken, follows) ||\n this.canRecoverWithSingleTokenDeletion(expectedToken));\n };\n Recoverable.prototype.canRecoverWithSingleTokenInsertion = function (expectedTokType, follows) {\n var _this = this;\n if (!this.canTokenTypeBeInsertedInRecovery(expectedTokType)) {\n return false;\n }\n // must know the possible following tokens to perform single token insertion\n if (isEmpty(follows)) {\n return false;\n }\n var mismatchedTok = this.LA(1);\n var isMisMatchedTokInFollows = find(follows, function (possibleFollowsTokType) {\n return _this.tokenMatcher(mismatchedTok, possibleFollowsTokType);\n }) !== undefined;\n return isMisMatchedTokInFollows;\n };\n Recoverable.prototype.canRecoverWithSingleTokenDeletion = function (expectedTokType) {\n var isNextTokenWhatIsExpected = this.tokenMatcher(this.LA(2), expectedTokType);\n return isNextTokenWhatIsExpected;\n };\n Recoverable.prototype.isInCurrentRuleReSyncSet = function (tokenTypeIdx) {\n var followKey = this.getCurrFollowKey();\n var currentRuleReSyncSet = this.getFollowSetFromFollowKey(followKey);\n return contains(currentRuleReSyncSet, tokenTypeIdx);\n };\n Recoverable.prototype.findReSyncTokenType = function () {\n var allPossibleReSyncTokTypes = this.flattenFollowSet();\n // this loop will always terminate as EOF is always in the follow stack and also always (virtually) in the input\n var nextToken = this.LA(1);\n var k = 2;\n while (true) {\n var nextTokenType = nextToken.tokenType;\n if (contains(allPossibleReSyncTokTypes, nextTokenType)) {\n return nextTokenType;\n }\n nextToken = this.LA(k);\n k++;\n }\n };\n Recoverable.prototype.getCurrFollowKey = function () {\n // the length is at least one as we always add the ruleName to the stack before invoking the rule.\n if (this.RULE_STACK.length === 1) {\n return EOF_FOLLOW_KEY;\n }\n var currRuleShortName = this.getLastExplicitRuleShortName();\n var currRuleIdx = this.getLastExplicitRuleOccurrenceIndex();\n var prevRuleShortName = this.getPreviousExplicitRuleShortName();\n return {\n ruleName: this.shortRuleNameToFullName(currRuleShortName),\n idxInCallingRule: currRuleIdx,\n inRule: this.shortRuleNameToFullName(prevRuleShortName)\n };\n };\n Recoverable.prototype.buildFullFollowKeyStack = function () {\n var _this = this;\n var explicitRuleStack = this.RULE_STACK;\n var explicitOccurrenceStack = this.RULE_OCCURRENCE_STACK;\n return map(explicitRuleStack, function (ruleName, idx) {\n if (idx === 0) {\n return EOF_FOLLOW_KEY;\n }\n return {\n ruleName: _this.shortRuleNameToFullName(ruleName),\n idxInCallingRule: explicitOccurrenceStack[idx],\n inRule: _this.shortRuleNameToFullName(explicitRuleStack[idx - 1])\n };\n });\n };\n Recoverable.prototype.flattenFollowSet = function () {\n var _this = this;\n var followStack = map(this.buildFullFollowKeyStack(), function (currKey) {\n return _this.getFollowSetFromFollowKey(currKey);\n });\n return flatten(followStack);\n };\n Recoverable.prototype.getFollowSetFromFollowKey = function (followKey) {\n if (followKey === EOF_FOLLOW_KEY) {\n return [EOF];\n }\n var followName = followKey.ruleName + followKey.idxInCallingRule + IN + followKey.inRule;\n return this.resyncFollows[followName];\n };\n // It does not make any sense to include a virtual EOF token in the list of resynced tokens\n // as EOF does not really exist and thus does not contain any useful information (line/column numbers)\n Recoverable.prototype.addToResyncTokens = function (token, resyncTokens) {\n if (!this.tokenMatcher(token, EOF)) {\n resyncTokens.push(token);\n }\n return resyncTokens;\n };\n Recoverable.prototype.reSyncTo = function (tokType) {\n var resyncedTokens = [];\n var nextTok = this.LA(1);\n while (this.tokenMatcher(nextTok, tokType) === false) {\n nextTok = this.SKIP_TOKEN();\n this.addToResyncTokens(nextTok, resyncedTokens);\n }\n // the last token is not part of the error.\n return dropRight(resyncedTokens);\n };\n Recoverable.prototype.attemptInRepetitionRecovery = function (prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n // by default this is a NO-OP\n // The actual implementation is with the function(not method) below\n };\n Recoverable.prototype.getCurrentGrammarPath = function (tokType, tokIdxInRule) {\n var pathRuleStack = this.getHumanReadableRuleStack();\n var pathOccurrenceStack = cloneArr(this.RULE_OCCURRENCE_STACK);\n var grammarPath = {\n ruleStack: pathRuleStack,\n occurrenceStack: pathOccurrenceStack,\n lastTok: tokType,\n lastTokOccurrence: tokIdxInRule\n };\n return grammarPath;\n };\n Recoverable.prototype.getHumanReadableRuleStack = function () {\n var _this = this;\n return map(this.RULE_STACK, function (currShortName) {\n return _this.shortRuleNameToFullName(currShortName);\n });\n };\n return Recoverable;\n}());\nexport { Recoverable };\nexport function attemptInRepetitionRecovery(prodFunc, args, lookaheadFunc, dslMethodIdx, prodOccurrence, nextToksWalker, notStuck) {\n var key = this.getKeyForAutomaticLookahead(dslMethodIdx, prodOccurrence);\n var firstAfterRepInfo = this.firstAfterRepMap[key];\n if (firstAfterRepInfo === undefined) {\n var currRuleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[currRuleName];\n var walker = new nextToksWalker(ruleGrammar, prodOccurrence);\n firstAfterRepInfo = walker.startWalking();\n this.firstAfterRepMap[key] = firstAfterRepInfo;\n }\n var expectTokAfterLastMatch = firstAfterRepInfo.token;\n var nextTokIdx = firstAfterRepInfo.occurrence;\n var isEndOfRule = firstAfterRepInfo.isEndOfRule;\n // special edge case of a TOP most repetition after which the input should END.\n // this will force an attempt for inRule recovery in that scenario.\n if (this.RULE_STACK.length === 1 &&\n isEndOfRule &&\n expectTokAfterLastMatch === undefined) {\n expectTokAfterLastMatch = EOF;\n nextTokIdx = 1;\n }\n if (this.shouldInRepetitionRecoveryBeTried(expectTokAfterLastMatch, nextTokIdx, notStuck)) {\n // TODO: performance optimization: instead of passing the original args here, we modify\n // the args param (or create a new one) and make sure the lookahead func is explicitly provided\n // to avoid searching the cache for it once more.\n this.tryInRepetitionRecovery(prodFunc, args, lookaheadFunc, expectTokAfterLastMatch);\n }\n}\n//# sourceMappingURL=recoverable.js.map","// Lookahead keys are 32Bit integers in the form\n// TTTTTTTT-ZZZZZZZZZZZZ-YYYY-XXXXXXXX\n// XXXX -> Occurrence Index bitmap.\n// YYYY -> DSL Method Type bitmap.\n// ZZZZZZZZZZZZZZZ -> Rule short Index bitmap.\n// TTTTTTTTT -> alternation alternative index bitmap\nexport var BITS_FOR_METHOD_TYPE = 4;\nexport var BITS_FOR_OCCURRENCE_IDX = 8;\nexport var BITS_FOR_RULE_IDX = 12;\n// TODO: validation, this means that there may at most 2^8 --> 256 alternatives for an alternation.\nexport var BITS_FOR_ALT_IDX = 8;\n// short string used as part of mapping keys.\n// being short improves the performance when composing KEYS for maps out of these\n// The 5 - 8 bits (16 possible values, are reserved for the DSL method indices)\n/* tslint:disable */\nexport var OR_IDX = 1 << BITS_FOR_OCCURRENCE_IDX;\nexport var OPTION_IDX = 2 << BITS_FOR_OCCURRENCE_IDX;\nexport var MANY_IDX = 3 << BITS_FOR_OCCURRENCE_IDX;\nexport var AT_LEAST_ONE_IDX = 4 << BITS_FOR_OCCURRENCE_IDX;\nexport var MANY_SEP_IDX = 5 << BITS_FOR_OCCURRENCE_IDX;\nexport var AT_LEAST_ONE_SEP_IDX = 6 << BITS_FOR_OCCURRENCE_IDX;\n/* tslint:enable */\n// this actually returns a number, but it is always used as a string (object prop key)\nexport function getKeyForAutomaticLookahead(ruleIdx, dslMethodIdx, occurrence) {\n /* tslint:disable */\n return occurrence | dslMethodIdx | ruleIdx;\n /* tslint:enable */\n}\nvar BITS_START_FOR_ALT_IDX = 32 - BITS_FOR_ALT_IDX;\n//# sourceMappingURL=keys.js.map","import { buildAlternativesLookAheadFunc, buildLookaheadFuncForOptionalProd, buildLookaheadFuncForOr, buildSingleAlternativeLookaheadFunction, PROD_TYPE } from \"../../grammar/lookahead\";\nimport { forEach, has, isES2015MapSupported } from \"../../../utils/utils\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\nimport { AT_LEAST_ONE_IDX, AT_LEAST_ONE_SEP_IDX, getKeyForAutomaticLookahead, MANY_IDX, MANY_SEP_IDX, OPTION_IDX, OR_IDX } from \"../../grammar/keys\";\nimport { collectMethods, getProductionDslName } from \"../../grammar/gast/gast\";\n/**\n * Trait responsible for the lookahead related utilities and optimizations.\n */\nvar LooksAhead = /** @class */ (function () {\n function LooksAhead() {\n }\n LooksAhead.prototype.initLooksAhead = function (config) {\n this.dynamicTokensEnabled = has(config, \"dynamicTokensEnabled\")\n ? config.dynamicTokensEnabled\n : DEFAULT_PARSER_CONFIG.dynamicTokensEnabled;\n this.maxLookahead = has(config, \"maxLookahead\")\n ? config.maxLookahead\n : DEFAULT_PARSER_CONFIG.maxLookahead;\n /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */\n this.lookAheadFuncsCache = isES2015MapSupported() ? new Map() : [];\n // Performance optimization on newer engines that support ES6 Map\n // For larger Maps this is slightly faster than using a plain object (array in our case).\n /* istanbul ignore else - The else branch will be tested on older node.js versions and IE11 */\n if (isES2015MapSupported()) {\n this.getLaFuncFromCache = this.getLaFuncFromMap;\n this.setLaFuncCache = this.setLaFuncCacheUsingMap;\n }\n else {\n this.getLaFuncFromCache = this.getLaFuncFromObj;\n this.setLaFuncCache = this.setLaFuncUsingObj;\n }\n };\n LooksAhead.prototype.preComputeLookaheadFunctions = function (rules) {\n var _this = this;\n forEach(rules, function (currRule) {\n _this.TRACE_INIT(currRule.name + \" Rule Lookahead\", function () {\n var _a = collectMethods(currRule), alternation = _a.alternation, repetition = _a.repetition, option = _a.option, repetitionMandatory = _a.repetitionMandatory, repetitionMandatoryWithSeparator = _a.repetitionMandatoryWithSeparator, repetitionWithSeparator = _a.repetitionWithSeparator;\n forEach(alternation, function (currProd) {\n var prodIdx = currProd.idx === 0 ? \"\" : currProd.idx;\n _this.TRACE_INIT(\"\" + getProductionDslName(currProd) + prodIdx, function () {\n var laFunc = buildLookaheadFuncForOr(currProd.idx, currRule, currProd.maxLookahead || _this.maxLookahead, currProd.hasPredicates, _this.dynamicTokensEnabled, _this.lookAheadBuilderForAlternatives);\n var key = getKeyForAutomaticLookahead(_this.fullRuleNameToShort[currRule.name], OR_IDX, currProd.idx);\n _this.setLaFuncCache(key, laFunc);\n });\n });\n forEach(repetition, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, MANY_IDX, PROD_TYPE.REPETITION, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(option, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, OPTION_IDX, PROD_TYPE.OPTION, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(repetitionMandatory, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_IDX, PROD_TYPE.REPETITION_MANDATORY, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(repetitionMandatoryWithSeparator, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, AT_LEAST_ONE_SEP_IDX, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, currProd.maxLookahead, getProductionDslName(currProd));\n });\n forEach(repetitionWithSeparator, function (currProd) {\n _this.computeLookaheadFunc(currRule, currProd.idx, MANY_SEP_IDX, PROD_TYPE.REPETITION_WITH_SEPARATOR, currProd.maxLookahead, getProductionDslName(currProd));\n });\n });\n });\n };\n LooksAhead.prototype.computeLookaheadFunc = function (rule, prodOccurrence, prodKey, prodType, prodMaxLookahead, dslMethodName) {\n var _this = this;\n this.TRACE_INIT(\"\" + dslMethodName + (prodOccurrence === 0 ? \"\" : prodOccurrence), function () {\n var laFunc = buildLookaheadFuncForOptionalProd(prodOccurrence, rule, prodMaxLookahead || _this.maxLookahead, _this.dynamicTokensEnabled, prodType, _this.lookAheadBuilderForOptional);\n var key = getKeyForAutomaticLookahead(_this.fullRuleNameToShort[rule.name], prodKey, prodOccurrence);\n _this.setLaFuncCache(key, laFunc);\n });\n };\n LooksAhead.prototype.lookAheadBuilderForOptional = function (alt, tokenMatcher, dynamicTokensEnabled) {\n return buildSingleAlternativeLookaheadFunction(alt, tokenMatcher, dynamicTokensEnabled);\n };\n LooksAhead.prototype.lookAheadBuilderForAlternatives = function (alts, hasPredicates, tokenMatcher, dynamicTokensEnabled) {\n return buildAlternativesLookAheadFunc(alts, hasPredicates, tokenMatcher, dynamicTokensEnabled);\n };\n // this actually returns a number, but it is always used as a string (object prop key)\n LooksAhead.prototype.getKeyForAutomaticLookahead = function (dslMethodIdx, occurrence) {\n var currRuleShortName = this.getLastExplicitRuleShortName();\n return getKeyForAutomaticLookahead(currRuleShortName, dslMethodIdx, occurrence);\n };\n /* istanbul ignore next */\n LooksAhead.prototype.getLaFuncFromCache = function (key) {\n return undefined;\n };\n LooksAhead.prototype.getLaFuncFromMap = function (key) {\n return this.lookAheadFuncsCache.get(key);\n };\n /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */\n LooksAhead.prototype.getLaFuncFromObj = function (key) {\n return this.lookAheadFuncsCache[key];\n };\n /* istanbul ignore next */\n LooksAhead.prototype.setLaFuncCache = function (key, value) { };\n LooksAhead.prototype.setLaFuncCacheUsingMap = function (key, value) {\n this.lookAheadFuncsCache.set(key, value);\n };\n /* istanbul ignore next - Using plain array as dictionary will be tested on older node.js versions and IE11 */\n LooksAhead.prototype.setLaFuncUsingObj = function (key, value) {\n this.lookAheadFuncsCache[key] = value;\n };\n return LooksAhead;\n}());\nexport { LooksAhead };\n//# sourceMappingURL=looksahead.js.map","/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nexport function setNodeLocationOnlyOffset(currNodeLocation, newLocationInfo) {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (both start/end offsets exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n // Once the startOffset has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n }\n}\n/**\n * This nodeLocation tracking is not efficient and should only be used\n * when error recovery is enabled or the Token Vector contains virtual Tokens\n * (e.g, Python Indent/Outdent)\n * As it executes the calculation for every single terminal/nonTerminal\n * and does not rely on the fact the token vector is **sorted**\n */\nexport function setNodeLocationFull(currNodeLocation, newLocationInfo) {\n // First (valid) update for this cst node\n if (isNaN(currNodeLocation.startOffset) === true) {\n // assumption1: Token location information is either NaN or a valid number\n // assumption2: Token location information is fully valid if it exist\n // (all start/end props exist and are numbers).\n currNodeLocation.startOffset = newLocationInfo.startOffset;\n currNodeLocation.startColumn = newLocationInfo.startColumn;\n currNodeLocation.startLine = newLocationInfo.startLine;\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n // Once the start props has been updated with a valid number it should never receive\n // any farther updates as the Token vector is sorted.\n // We still have to check this this condition for every new possible location info\n // because with error recovery enabled we may encounter invalid tokens (NaN location props)\n else if (currNodeLocation.endOffset < newLocationInfo.endOffset === true) {\n currNodeLocation.endOffset = newLocationInfo.endOffset;\n currNodeLocation.endColumn = newLocationInfo.endColumn;\n currNodeLocation.endLine = newLocationInfo.endLine;\n }\n}\nexport function addTerminalToCst(node, token, tokenTypeName) {\n if (node.children[tokenTypeName] === undefined) {\n node.children[tokenTypeName] = [token];\n }\n else {\n node.children[tokenTypeName].push(token);\n }\n}\nexport function addNoneTerminalToCst(node, ruleName, ruleResult) {\n if (node.children[ruleName] === undefined) {\n node.children[ruleName] = [ruleResult];\n }\n else {\n node.children[ruleName].push(ruleResult);\n }\n}\n//# sourceMappingURL=cst.js.map","import { isUndefined } from \"../utils/utils\";\nexport function classNameFromInstance(instance) {\n return functionName(instance.constructor);\n}\nvar NAME = \"name\";\n/**\n * Utility to obtain Function names.\n * Note that there should not be an assumptions on the result of this function.\n * E.g: When running from minified source code the result may be auto generated.\n */\nexport function functionName(func) {\n // Engines that support Function.prototype.name OR the nth (n>1) time after\n // the name has been computed in the following else block.\n var existingNameProp = func.name;\n /* istanbul ignore else - too many hacks for IE/old versions of node.js here*/\n if (existingNameProp) {\n return existingNameProp;\n }\n else {\n return \"anonymous\";\n }\n}\n/**\n * @returns {boolean} - has the property been successfully defined\n */\nexport function defineNameProp(obj, nameValue) {\n var namePropDescriptor = Object.getOwnPropertyDescriptor(obj, NAME);\n /* istanbul ignore else -> will only run in old versions of node.js */\n if (isUndefined(namePropDescriptor) || namePropDescriptor.configurable) {\n Object.defineProperty(obj, NAME, {\n enumerable: false,\n configurable: true,\n writable: false,\n value: nameValue\n });\n return true;\n }\n /* istanbul ignore next -> will only run in old versions of node.js */\n return false;\n}\n//# sourceMappingURL=lang_extensions.js.map","import { compact, contains, forEach, isArray, isEmpty, isFunction, isUndefined, keys, map } from \"../../utils/utils\";\nimport { defineNameProp, functionName } from \"../../lang/lang_extensions\";\nexport function defaultVisit(ctx, param) {\n var childrenNames = keys(ctx);\n var childrenNamesLength = childrenNames.length;\n for (var i = 0; i < childrenNamesLength; i++) {\n var currChildName = childrenNames[i];\n var currChildArray = ctx[currChildName];\n var currChildArrayLength = currChildArray.length;\n for (var j = 0; j < currChildArrayLength; j++) {\n var currChild = currChildArray[j];\n // distinction between Tokens Children and CstNode children\n if (currChild.tokenTypeIdx === undefined) {\n this[currChild.name](currChild.children, param);\n }\n }\n }\n // defaultVisit does not support generic out param\n return undefined;\n}\nexport function createBaseSemanticVisitorConstructor(grammarName, ruleNames) {\n var derivedConstructor = function () { };\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n defineNameProp(derivedConstructor, grammarName + \"BaseSemantics\");\n var semanticProto = {\n visit: function (cstNode, param) {\n // enables writing more concise visitor methods when CstNode has only a single child\n if (isArray(cstNode)) {\n // A CST Node's children dictionary can never have empty arrays as values\n // If a key is defined there will be at least one element in the corresponding value array.\n cstNode = cstNode[0];\n }\n // enables passing optional CstNodes concisely.\n if (isUndefined(cstNode)) {\n return undefined;\n }\n return this[cstNode.name](cstNode.children, param);\n },\n validateVisitor: function () {\n var semanticDefinitionErrors = validateVisitor(this, ruleNames);\n if (!isEmpty(semanticDefinitionErrors)) {\n var errorMessages = map(semanticDefinitionErrors, function (currDefError) { return currDefError.msg; });\n throw Error(\"Errors Detected in CST Visitor <\" + functionName(this.constructor) + \">:\\n\\t\" + (\"\" + errorMessages.join(\"\\n\\n\").replace(/\\n/g, \"\\n\\t\")));\n }\n }\n };\n derivedConstructor.prototype = semanticProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n derivedConstructor._RULE_NAMES = ruleNames;\n return derivedConstructor;\n}\nexport function createBaseVisitorConstructorWithDefaults(grammarName, ruleNames, baseConstructor) {\n var derivedConstructor = function () { };\n // can be overwritten according to:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/\n // name?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FFunction%2Fname\n defineNameProp(derivedConstructor, grammarName + \"BaseSemanticsWithDefaults\");\n var withDefaultsProto = Object.create(baseConstructor.prototype);\n forEach(ruleNames, function (ruleName) {\n withDefaultsProto[ruleName] = defaultVisit;\n });\n derivedConstructor.prototype = withDefaultsProto;\n derivedConstructor.prototype.constructor = derivedConstructor;\n return derivedConstructor;\n}\nexport var CstVisitorDefinitionError;\n(function (CstVisitorDefinitionError) {\n CstVisitorDefinitionError[CstVisitorDefinitionError[\"REDUNDANT_METHOD\"] = 0] = \"REDUNDANT_METHOD\";\n CstVisitorDefinitionError[CstVisitorDefinitionError[\"MISSING_METHOD\"] = 1] = \"MISSING_METHOD\";\n})(CstVisitorDefinitionError || (CstVisitorDefinitionError = {}));\nexport function validateVisitor(visitorInstance, ruleNames) {\n var missingErrors = validateMissingCstMethods(visitorInstance, ruleNames);\n var redundantErrors = validateRedundantMethods(visitorInstance, ruleNames);\n return missingErrors.concat(redundantErrors);\n}\nexport function validateMissingCstMethods(visitorInstance, ruleNames) {\n var errors = map(ruleNames, function (currRuleName) {\n if (!isFunction(visitorInstance[currRuleName])) {\n return {\n msg: \"Missing visitor method: <\" + currRuleName + \"> on \" + functionName(visitorInstance.constructor) + \" CST Visitor.\",\n type: CstVisitorDefinitionError.MISSING_METHOD,\n methodName: currRuleName\n };\n }\n });\n return compact(errors);\n}\nvar VALID_PROP_NAMES = [\"constructor\", \"visit\", \"validateVisitor\"];\nexport function validateRedundantMethods(visitorInstance, ruleNames) {\n var errors = [];\n for (var prop in visitorInstance) {\n if (isFunction(visitorInstance[prop]) &&\n !contains(VALID_PROP_NAMES, prop) &&\n !contains(ruleNames, prop)) {\n errors.push({\n msg: \"Redundant visitor method: <\" + prop + \"> on \" + functionName(visitorInstance.constructor) + \" CST Visitor\\n\" +\n \"There is no Grammar Rule corresponding to this method's name.\\n\",\n type: CstVisitorDefinitionError.REDUNDANT_METHOD,\n methodName: prop\n });\n }\n }\n return errors;\n}\n//# sourceMappingURL=cst_visitor.js.map","import { addNoneTerminalToCst, addTerminalToCst, setNodeLocationFull, setNodeLocationOnlyOffset } from \"../../cst/cst\";\nimport { has, isUndefined, keys, NOOP } from \"../../../utils/utils\";\nimport { createBaseSemanticVisitorConstructor, createBaseVisitorConstructorWithDefaults } from \"../../cst/cst_visitor\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\n/**\n * This trait is responsible for the CST building logic.\n */\nvar TreeBuilder = /** @class */ (function () {\n function TreeBuilder() {\n }\n TreeBuilder.prototype.initTreeBuilder = function (config) {\n this.CST_STACK = [];\n // outputCst is no longer exposed/defined in the pubic API\n this.outputCst = config.outputCst;\n this.nodeLocationTracking = has(config, \"nodeLocationTracking\")\n ? config.nodeLocationTracking\n : DEFAULT_PARSER_CONFIG.nodeLocationTracking;\n if (!this.outputCst) {\n this.cstInvocationStateUpdate = NOOP;\n this.cstFinallyStateUpdate = NOOP;\n this.cstPostTerminal = NOOP;\n this.cstPostNonTerminal = NOOP;\n this.cstPostRule = NOOP;\n }\n else {\n if (/full/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationFull;\n this.setNodeLocationFromNode = setNodeLocationFull;\n this.cstPostRule = NOOP;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRecovery;\n }\n else {\n this.setNodeLocationFromToken = NOOP;\n this.setNodeLocationFromNode = NOOP;\n this.cstPostRule = this.cstPostRuleFull;\n this.setInitialNodeLocation = this.setInitialNodeLocationFullRegular;\n }\n }\n else if (/onlyOffset/i.test(this.nodeLocationTracking)) {\n if (this.recoveryEnabled) {\n this.setNodeLocationFromToken = setNodeLocationOnlyOffset;\n this.setNodeLocationFromNode = setNodeLocationOnlyOffset;\n this.cstPostRule = NOOP;\n this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRecovery;\n }\n else {\n this.setNodeLocationFromToken = NOOP;\n this.setNodeLocationFromNode = NOOP;\n this.cstPostRule = this.cstPostRuleOnlyOffset;\n this.setInitialNodeLocation = this.setInitialNodeLocationOnlyOffsetRegular;\n }\n }\n else if (/none/i.test(this.nodeLocationTracking)) {\n this.setNodeLocationFromToken = NOOP;\n this.setNodeLocationFromNode = NOOP;\n this.cstPostRule = NOOP;\n this.setInitialNodeLocation = NOOP;\n }\n else {\n throw Error(\"Invalid config option: \\\"\" + config.nodeLocationTracking + \"\\\"\");\n }\n }\n };\n TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRecovery = function (cstNode) {\n cstNode.location = {\n startOffset: NaN,\n endOffset: NaN\n };\n };\n TreeBuilder.prototype.setInitialNodeLocationOnlyOffsetRegular = function (cstNode) {\n cstNode.location = {\n // without error recovery the starting Location of a new CstNode is guaranteed\n // To be the next Token's startOffset (for valid inputs).\n // For invalid inputs there won't be any CSTOutput so this potential\n // inaccuracy does not matter\n startOffset: this.LA(1).startOffset,\n endOffset: NaN\n };\n };\n TreeBuilder.prototype.setInitialNodeLocationFullRecovery = function (cstNode) {\n cstNode.location = {\n startOffset: NaN,\n startLine: NaN,\n startColumn: NaN,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n };\n /**\n * @see setInitialNodeLocationOnlyOffsetRegular for explanation why this work\n \n * @param cstNode\n */\n TreeBuilder.prototype.setInitialNodeLocationFullRegular = function (cstNode) {\n var nextToken = this.LA(1);\n cstNode.location = {\n startOffset: nextToken.startOffset,\n startLine: nextToken.startLine,\n startColumn: nextToken.startColumn,\n endOffset: NaN,\n endLine: NaN,\n endColumn: NaN\n };\n };\n TreeBuilder.prototype.cstInvocationStateUpdate = function (fullRuleName, shortName) {\n var cstNode = {\n name: fullRuleName,\n children: {}\n };\n this.setInitialNodeLocation(cstNode);\n this.CST_STACK.push(cstNode);\n };\n TreeBuilder.prototype.cstFinallyStateUpdate = function () {\n this.CST_STACK.pop();\n };\n TreeBuilder.prototype.cstPostRuleFull = function (ruleCstNode) {\n var prevToken = this.LA(0);\n var loc = ruleCstNode.location;\n // If this condition is true it means we consumed at least one Token\n // In this CstNode.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n loc.endLine = prevToken.endLine;\n loc.endColumn = prevToken.endColumn;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n loc.startLine = NaN;\n loc.startColumn = NaN;\n }\n };\n TreeBuilder.prototype.cstPostRuleOnlyOffset = function (ruleCstNode) {\n var prevToken = this.LA(0);\n var loc = ruleCstNode.location;\n // If this condition is true it means we consumed at least one Token\n // In this CstNode.\n if (loc.startOffset <= prevToken.startOffset === true) {\n loc.endOffset = prevToken.endOffset;\n }\n // \"empty\" CstNode edge case\n else {\n loc.startOffset = NaN;\n }\n };\n TreeBuilder.prototype.cstPostTerminal = function (key, consumedToken) {\n var rootCst = this.CST_STACK[this.CST_STACK.length - 1];\n addTerminalToCst(rootCst, consumedToken, key);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromToken(rootCst.location, consumedToken);\n };\n TreeBuilder.prototype.cstPostNonTerminal = function (ruleCstResult, ruleName) {\n var preCstNode = this.CST_STACK[this.CST_STACK.length - 1];\n addNoneTerminalToCst(preCstNode, ruleName, ruleCstResult);\n // This is only used when **both** error recovery and CST Output are enabled.\n this.setNodeLocationFromNode(preCstNode.location, ruleCstResult.location);\n };\n TreeBuilder.prototype.getBaseCstVisitorConstructor = function () {\n if (isUndefined(this.baseCstVisitorConstructor)) {\n var newBaseCstVisitorConstructor = createBaseSemanticVisitorConstructor(this.className, keys(this.gastProductionsCache));\n this.baseCstVisitorConstructor = newBaseCstVisitorConstructor;\n return newBaseCstVisitorConstructor;\n }\n return this.baseCstVisitorConstructor;\n };\n TreeBuilder.prototype.getBaseCstVisitorConstructorWithDefaults = function () {\n if (isUndefined(this.baseCstVisitorWithDefaultsConstructor)) {\n var newConstructor = createBaseVisitorConstructorWithDefaults(this.className, keys(this.gastProductionsCache), this.getBaseCstVisitorConstructor());\n this.baseCstVisitorWithDefaultsConstructor = newConstructor;\n return newConstructor;\n }\n return this.baseCstVisitorWithDefaultsConstructor;\n };\n TreeBuilder.prototype.getLastExplicitRuleShortName = function () {\n var ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 1];\n };\n TreeBuilder.prototype.getPreviousExplicitRuleShortName = function () {\n var ruleStack = this.RULE_STACK;\n return ruleStack[ruleStack.length - 2];\n };\n TreeBuilder.prototype.getLastExplicitRuleOccurrenceIndex = function () {\n var occurrenceStack = this.RULE_OCCURRENCE_STACK;\n return occurrenceStack[occurrenceStack.length - 1];\n };\n return TreeBuilder;\n}());\nexport { TreeBuilder };\n//# sourceMappingURL=tree_builder.js.map","import { END_OF_FILE } from \"../parser\";\n/**\n * Trait responsible abstracting over the interaction with Lexer output (Token vector).\n *\n * This could be generalized to support other kinds of lexers, e.g.\n * - Just in Time Lexing / Lexer-Less parsing.\n * - Streaming Lexer.\n */\nvar LexerAdapter = /** @class */ (function () {\n function LexerAdapter() {\n }\n LexerAdapter.prototype.initLexerAdapter = function () {\n this.tokVector = [];\n this.tokVectorLength = 0;\n this.currIdx = -1;\n };\n Object.defineProperty(LexerAdapter.prototype, \"input\", {\n get: function () {\n return this.tokVector;\n },\n set: function (newInput) {\n // @ts-ignore - `this parameter` not supported in setters/getters\n // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters\n if (this.selfAnalysisDone !== true) {\n throw Error(\"Missing invocation at the end of the Parser's constructor.\");\n }\n // @ts-ignore - `this parameter` not supported in setters/getters\n // - https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters\n this.reset();\n this.tokVector = newInput;\n this.tokVectorLength = newInput.length;\n },\n enumerable: false,\n configurable: true\n });\n // skips a token and returns the next token\n LexerAdapter.prototype.SKIP_TOKEN = function () {\n if (this.currIdx <= this.tokVector.length - 2) {\n this.consumeToken();\n return this.LA(1);\n }\n else {\n return END_OF_FILE;\n }\n };\n // Lexer (accessing Token vector) related methods which can be overridden to implement lazy lexers\n // or lexers dependent on parser context.\n LexerAdapter.prototype.LA = function (howMuch) {\n var soughtIdx = this.currIdx + howMuch;\n if (soughtIdx < 0 || this.tokVectorLength <= soughtIdx) {\n return END_OF_FILE;\n }\n else {\n return this.tokVector[soughtIdx];\n }\n };\n LexerAdapter.prototype.consumeToken = function () {\n this.currIdx++;\n };\n LexerAdapter.prototype.exportLexerState = function () {\n return this.currIdx;\n };\n LexerAdapter.prototype.importLexerState = function (newState) {\n this.currIdx = newState;\n };\n LexerAdapter.prototype.resetLexerState = function () {\n this.currIdx = -1;\n };\n LexerAdapter.prototype.moveToTerminatedState = function () {\n this.currIdx = this.tokVector.length - 1;\n };\n LexerAdapter.prototype.getLexerPosition = function () {\n return this.exportLexerState();\n };\n return LexerAdapter;\n}());\nexport { LexerAdapter };\n//# sourceMappingURL=lexer_adapter.js.map","import { contains, values } from \"../../../utils/utils\";\nimport { isRecognitionException } from \"../../exceptions_public\";\nimport { DEFAULT_RULE_CONFIG, ParserDefinitionErrorType } from \"../parser\";\nimport { defaultGrammarValidatorErrorProvider } from \"../../errors_public\";\nimport { validateRuleIsOverridden } from \"../../grammar/checks\";\nimport { serializeGrammar } from \"../../grammar/gast/gast_public\";\n/**\n * This trait is responsible for implementing the public API\n * for defining Chevrotain parsers, i.e:\n * - CONSUME\n * - RULE\n * - OPTION\n * - ...\n */\nvar RecognizerApi = /** @class */ (function () {\n function RecognizerApi() {\n }\n RecognizerApi.prototype.ACTION = function (impl) {\n return impl.call(this);\n };\n RecognizerApi.prototype.consume = function (idx, tokType, options) {\n return this.consumeInternal(tokType, idx, options);\n };\n RecognizerApi.prototype.subrule = function (idx, ruleToCall, options) {\n return this.subruleInternal(ruleToCall, idx, options);\n };\n RecognizerApi.prototype.option = function (idx, actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, idx);\n };\n RecognizerApi.prototype.or = function (idx, altsOrOpts) {\n return this.orInternal(altsOrOpts, idx);\n };\n RecognizerApi.prototype.many = function (idx, actionORMethodDef) {\n return this.manyInternal(idx, actionORMethodDef);\n };\n RecognizerApi.prototype.atLeastOne = function (idx, actionORMethodDef) {\n return this.atLeastOneInternal(idx, actionORMethodDef);\n };\n RecognizerApi.prototype.CONSUME = function (tokType, options) {\n return this.consumeInternal(tokType, 0, options);\n };\n RecognizerApi.prototype.CONSUME1 = function (tokType, options) {\n return this.consumeInternal(tokType, 1, options);\n };\n RecognizerApi.prototype.CONSUME2 = function (tokType, options) {\n return this.consumeInternal(tokType, 2, options);\n };\n RecognizerApi.prototype.CONSUME3 = function (tokType, options) {\n return this.consumeInternal(tokType, 3, options);\n };\n RecognizerApi.prototype.CONSUME4 = function (tokType, options) {\n return this.consumeInternal(tokType, 4, options);\n };\n RecognizerApi.prototype.CONSUME5 = function (tokType, options) {\n return this.consumeInternal(tokType, 5, options);\n };\n RecognizerApi.prototype.CONSUME6 = function (tokType, options) {\n return this.consumeInternal(tokType, 6, options);\n };\n RecognizerApi.prototype.CONSUME7 = function (tokType, options) {\n return this.consumeInternal(tokType, 7, options);\n };\n RecognizerApi.prototype.CONSUME8 = function (tokType, options) {\n return this.consumeInternal(tokType, 8, options);\n };\n RecognizerApi.prototype.CONSUME9 = function (tokType, options) {\n return this.consumeInternal(tokType, 9, options);\n };\n RecognizerApi.prototype.SUBRULE = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 0, options);\n };\n RecognizerApi.prototype.SUBRULE1 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 1, options);\n };\n RecognizerApi.prototype.SUBRULE2 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 2, options);\n };\n RecognizerApi.prototype.SUBRULE3 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 3, options);\n };\n RecognizerApi.prototype.SUBRULE4 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 4, options);\n };\n RecognizerApi.prototype.SUBRULE5 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 5, options);\n };\n RecognizerApi.prototype.SUBRULE6 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 6, options);\n };\n RecognizerApi.prototype.SUBRULE7 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 7, options);\n };\n RecognizerApi.prototype.SUBRULE8 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 8, options);\n };\n RecognizerApi.prototype.SUBRULE9 = function (ruleToCall, options) {\n return this.subruleInternal(ruleToCall, 9, options);\n };\n RecognizerApi.prototype.OPTION = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 0);\n };\n RecognizerApi.prototype.OPTION1 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 1);\n };\n RecognizerApi.prototype.OPTION2 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 2);\n };\n RecognizerApi.prototype.OPTION3 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 3);\n };\n RecognizerApi.prototype.OPTION4 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 4);\n };\n RecognizerApi.prototype.OPTION5 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 5);\n };\n RecognizerApi.prototype.OPTION6 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 6);\n };\n RecognizerApi.prototype.OPTION7 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 7);\n };\n RecognizerApi.prototype.OPTION8 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 8);\n };\n RecognizerApi.prototype.OPTION9 = function (actionORMethodDef) {\n return this.optionInternal(actionORMethodDef, 9);\n };\n RecognizerApi.prototype.OR = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 0);\n };\n RecognizerApi.prototype.OR1 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 1);\n };\n RecognizerApi.prototype.OR2 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 2);\n };\n RecognizerApi.prototype.OR3 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 3);\n };\n RecognizerApi.prototype.OR4 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 4);\n };\n RecognizerApi.prototype.OR5 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 5);\n };\n RecognizerApi.prototype.OR6 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 6);\n };\n RecognizerApi.prototype.OR7 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 7);\n };\n RecognizerApi.prototype.OR8 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 8);\n };\n RecognizerApi.prototype.OR9 = function (altsOrOpts) {\n return this.orInternal(altsOrOpts, 9);\n };\n RecognizerApi.prototype.MANY = function (actionORMethodDef) {\n this.manyInternal(0, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY1 = function (actionORMethodDef) {\n this.manyInternal(1, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY2 = function (actionORMethodDef) {\n this.manyInternal(2, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY3 = function (actionORMethodDef) {\n this.manyInternal(3, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY4 = function (actionORMethodDef) {\n this.manyInternal(4, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY5 = function (actionORMethodDef) {\n this.manyInternal(5, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY6 = function (actionORMethodDef) {\n this.manyInternal(6, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY7 = function (actionORMethodDef) {\n this.manyInternal(7, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY8 = function (actionORMethodDef) {\n this.manyInternal(8, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY9 = function (actionORMethodDef) {\n this.manyInternal(9, actionORMethodDef);\n };\n RecognizerApi.prototype.MANY_SEP = function (options) {\n this.manySepFirstInternal(0, options);\n };\n RecognizerApi.prototype.MANY_SEP1 = function (options) {\n this.manySepFirstInternal(1, options);\n };\n RecognizerApi.prototype.MANY_SEP2 = function (options) {\n this.manySepFirstInternal(2, options);\n };\n RecognizerApi.prototype.MANY_SEP3 = function (options) {\n this.manySepFirstInternal(3, options);\n };\n RecognizerApi.prototype.MANY_SEP4 = function (options) {\n this.manySepFirstInternal(4, options);\n };\n RecognizerApi.prototype.MANY_SEP5 = function (options) {\n this.manySepFirstInternal(5, options);\n };\n RecognizerApi.prototype.MANY_SEP6 = function (options) {\n this.manySepFirstInternal(6, options);\n };\n RecognizerApi.prototype.MANY_SEP7 = function (options) {\n this.manySepFirstInternal(7, options);\n };\n RecognizerApi.prototype.MANY_SEP8 = function (options) {\n this.manySepFirstInternal(8, options);\n };\n RecognizerApi.prototype.MANY_SEP9 = function (options) {\n this.manySepFirstInternal(9, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE = function (actionORMethodDef) {\n this.atLeastOneInternal(0, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE1 = function (actionORMethodDef) {\n return this.atLeastOneInternal(1, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE2 = function (actionORMethodDef) {\n this.atLeastOneInternal(2, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE3 = function (actionORMethodDef) {\n this.atLeastOneInternal(3, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE4 = function (actionORMethodDef) {\n this.atLeastOneInternal(4, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE5 = function (actionORMethodDef) {\n this.atLeastOneInternal(5, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE6 = function (actionORMethodDef) {\n this.atLeastOneInternal(6, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE7 = function (actionORMethodDef) {\n this.atLeastOneInternal(7, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE8 = function (actionORMethodDef) {\n this.atLeastOneInternal(8, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE9 = function (actionORMethodDef) {\n this.atLeastOneInternal(9, actionORMethodDef);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP = function (options) {\n this.atLeastOneSepFirstInternal(0, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP1 = function (options) {\n this.atLeastOneSepFirstInternal(1, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP2 = function (options) {\n this.atLeastOneSepFirstInternal(2, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP3 = function (options) {\n this.atLeastOneSepFirstInternal(3, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP4 = function (options) {\n this.atLeastOneSepFirstInternal(4, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP5 = function (options) {\n this.atLeastOneSepFirstInternal(5, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP6 = function (options) {\n this.atLeastOneSepFirstInternal(6, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP7 = function (options) {\n this.atLeastOneSepFirstInternal(7, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP8 = function (options) {\n this.atLeastOneSepFirstInternal(8, options);\n };\n RecognizerApi.prototype.AT_LEAST_ONE_SEP9 = function (options) {\n this.atLeastOneSepFirstInternal(9, options);\n };\n RecognizerApi.prototype.RULE = function (name, implementation, config) {\n if (config === void 0) { config = DEFAULT_RULE_CONFIG; }\n if (contains(this.definedRulesNames, name)) {\n var errMsg = defaultGrammarValidatorErrorProvider.buildDuplicateRuleNameError({\n topLevelRule: name,\n grammarName: this.className\n });\n var error = {\n message: errMsg,\n type: ParserDefinitionErrorType.DUPLICATE_RULE_NAME,\n ruleName: name\n };\n this.definitionErrors.push(error);\n }\n this.definedRulesNames.push(name);\n var ruleImplementation = this.defineRule(name, implementation, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n };\n RecognizerApi.prototype.OVERRIDE_RULE = function (name, impl, config) {\n if (config === void 0) { config = DEFAULT_RULE_CONFIG; }\n var ruleErrors = [];\n ruleErrors = ruleErrors.concat(validateRuleIsOverridden(name, this.definedRulesNames, this.className));\n this.definitionErrors.push.apply(this.definitionErrors, ruleErrors); // mutability for the win\n var ruleImplementation = this.defineRule(name, impl, config);\n this[name] = ruleImplementation;\n return ruleImplementation;\n };\n RecognizerApi.prototype.BACKTRACK = function (grammarRule, args) {\n return function () {\n // save org state\n this.isBackTrackingStack.push(1);\n var orgState = this.saveRecogState();\n try {\n grammarRule.apply(this, args);\n // if no exception was thrown we have succeed parsing the rule.\n return true;\n }\n catch (e) {\n if (isRecognitionException(e)) {\n return false;\n }\n else {\n throw e;\n }\n }\n finally {\n this.reloadRecogState(orgState);\n this.isBackTrackingStack.pop();\n }\n };\n };\n // GAST export APIs\n RecognizerApi.prototype.getGAstProductions = function () {\n return this.gastProductionsCache;\n };\n RecognizerApi.prototype.getSerializedGastProductions = function () {\n return serializeGrammar(values(this.gastProductionsCache));\n };\n return RecognizerApi;\n}());\nexport { RecognizerApi };\n//# sourceMappingURL=recognizer_api.js.map","import { cloneArr, cloneObj, every, flatten, has, isArray, isEmpty, isObject, reduce, uniq, values } from \"../../../utils/utils\";\nimport { AT_LEAST_ONE_IDX, AT_LEAST_ONE_SEP_IDX, BITS_FOR_METHOD_TYPE, BITS_FOR_OCCURRENCE_IDX, MANY_IDX, MANY_SEP_IDX, OPTION_IDX, OR_IDX } from \"../../grammar/keys\";\nimport { isRecognitionException, MismatchedTokenException, NotAllInputParsedException } from \"../../exceptions_public\";\nimport { PROD_TYPE } from \"../../grammar/lookahead\";\nimport { NextTerminalAfterAtLeastOneSepWalker, NextTerminalAfterAtLeastOneWalker, NextTerminalAfterManySepWalker, NextTerminalAfterManyWalker } from \"../../grammar/interpreter\";\nimport { DEFAULT_RULE_CONFIG } from \"../parser\";\nimport { IN_RULE_RECOVERY_EXCEPTION } from \"./recoverable\";\nimport { EOF } from \"../../../scan/tokens_public\";\nimport { augmentTokenTypes, isTokenType, tokenStructuredMatcher, tokenStructuredMatcherNoCategories } from \"../../../scan/tokens\";\nimport { classNameFromInstance } from \"../../../lang/lang_extensions\";\n/**\n * This trait is responsible for the runtime parsing engine\n * Used by the official API (recognizer_api.ts)\n */\nvar RecognizerEngine = /** @class */ (function () {\n function RecognizerEngine() {\n }\n RecognizerEngine.prototype.initRecognizerEngine = function (tokenVocabulary, config) {\n this.className = classNameFromInstance(this);\n // TODO: would using an ES6 Map or plain object be faster (CST building scenario)\n this.shortRuleNameToFull = {};\n this.fullRuleNameToShort = {};\n this.ruleShortNameIdx = 256;\n this.tokenMatcher = tokenStructuredMatcherNoCategories;\n this.definedRulesNames = [];\n this.tokensMap = {};\n this.isBackTrackingStack = [];\n this.RULE_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n this.gastProductionsCache = {};\n if (has(config, \"serializedGrammar\")) {\n throw Error(\"The Parser's configuration can no longer contain a property.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\\n\" +\n \"\\tFor Further details.\");\n }\n if (isArray(tokenVocabulary)) {\n // This only checks for Token vocabularies provided as arrays.\n // That is good enough because the main objective is to detect users of pre-V4.0 APIs\n // rather than all edge cases of empty Token vocabularies.\n if (isEmpty(tokenVocabulary)) {\n throw Error(\"A Token Vocabulary cannot be empty.\\n\" +\n \"\\tNote that the first argument for the parser constructor\\n\" +\n \"\\tis no longer a Token vector (since v4.0).\");\n }\n if (typeof tokenVocabulary[0].startOffset === \"number\") {\n throw Error(\"The Parser constructor no longer accepts a token vector as the first argument.\\n\" +\n \"\\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\\n\" +\n \"\\tFor Further details.\");\n }\n }\n if (isArray(tokenVocabulary)) {\n this.tokensMap = reduce(tokenVocabulary, function (acc, tokType) {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n }\n else if (has(tokenVocabulary, \"modes\") &&\n every(flatten(values(tokenVocabulary.modes)), isTokenType)) {\n var allTokenTypes = flatten(values(tokenVocabulary.modes));\n var uniqueTokens = uniq(allTokenTypes);\n this.tokensMap = reduce(uniqueTokens, function (acc, tokType) {\n acc[tokType.name] = tokType;\n return acc;\n }, {});\n }\n else if (isObject(tokenVocabulary)) {\n this.tokensMap = cloneObj(tokenVocabulary);\n }\n else {\n throw new Error(\" argument must be An Array of Token constructors,\" +\n \" A dictionary of Token constructors or an IMultiModeLexerDefinition\");\n }\n // always add EOF to the tokenNames -> constructors map. it is useful to assure all the input has been\n // parsed with a clear error message (\"expecting EOF but found ...\")\n /* tslint:disable */\n this.tokensMap[\"EOF\"] = EOF;\n // TODO: This check may not be accurate for multi mode lexers\n var noTokenCategoriesUsed = every(values(tokenVocabulary), function (tokenConstructor) { return isEmpty(tokenConstructor.categoryMatches); });\n this.tokenMatcher = noTokenCategoriesUsed\n ? tokenStructuredMatcherNoCategories\n : tokenStructuredMatcher;\n // Because ES2015+ syntax should be supported for creating Token classes\n // We cannot assume that the Token classes were created using the \"extendToken\" utilities\n // Therefore we must augment the Token classes both on Lexer initialization and on Parser initialization\n augmentTokenTypes(values(this.tokensMap));\n };\n RecognizerEngine.prototype.defineRule = function (ruleName, impl, config) {\n if (this.selfAnalysisDone) {\n throw Error(\"Grammar rule <\" + ruleName + \"> may not be defined after the 'performSelfAnalysis' method has been called'\\n\" +\n \"Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.\");\n }\n var resyncEnabled = has(config, \"resyncEnabled\")\n ? config.resyncEnabled\n : DEFAULT_RULE_CONFIG.resyncEnabled;\n var recoveryValueFunc = has(config, \"recoveryValueFunc\")\n ? config.recoveryValueFunc\n : DEFAULT_RULE_CONFIG.recoveryValueFunc;\n // performance optimization: Use small integers as keys for the longer human readable \"full\" rule names.\n // this greatly improves Map access time (as much as 8% for some performance benchmarks).\n /* tslint:disable */\n var shortName = this.ruleShortNameIdx << (BITS_FOR_METHOD_TYPE + BITS_FOR_OCCURRENCE_IDX);\n /* tslint:enable */\n this.ruleShortNameIdx++;\n this.shortRuleNameToFull[shortName] = ruleName;\n this.fullRuleNameToShort[ruleName] = shortName;\n function invokeRuleWithTry(args) {\n try {\n if (this.outputCst === true) {\n impl.apply(this, args);\n var cst = this.CST_STACK[this.CST_STACK.length - 1];\n this.cstPostRule(cst);\n return cst;\n }\n else {\n return impl.apply(this, args);\n }\n }\n catch (e) {\n return this.invokeRuleCatch(e, resyncEnabled, recoveryValueFunc);\n }\n finally {\n this.ruleFinallyStateUpdate();\n }\n }\n var wrappedGrammarRule;\n wrappedGrammarRule = function (idxInCallingRule, args) {\n if (idxInCallingRule === void 0) { idxInCallingRule = 0; }\n this.ruleInvocationStateUpdate(shortName, ruleName, idxInCallingRule);\n return invokeRuleWithTry.call(this, args);\n };\n var ruleNamePropName = \"ruleName\";\n wrappedGrammarRule[ruleNamePropName] = ruleName;\n wrappedGrammarRule[\"originalGrammarAction\"] = impl;\n return wrappedGrammarRule;\n };\n RecognizerEngine.prototype.invokeRuleCatch = function (e, resyncEnabledConfig, recoveryValueFunc) {\n var isFirstInvokedRule = this.RULE_STACK.length === 1;\n // note the reSync is always enabled for the first rule invocation, because we must always be able to\n // reSync with EOF and just output some INVALID ParseTree\n // during backtracking reSync recovery is disabled, otherwise we can't be certain the backtracking\n // path is really the most valid one\n var reSyncEnabled = resyncEnabledConfig && !this.isBackTracking() && this.recoveryEnabled;\n if (isRecognitionException(e)) {\n var recogError = e;\n if (reSyncEnabled) {\n var reSyncTokType = this.findReSyncTokenType();\n if (this.isInCurrentRuleReSyncSet(reSyncTokType)) {\n recogError.resyncedTokens = this.reSyncTo(reSyncTokType);\n if (this.outputCst) {\n var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n return partialCstResult;\n }\n else {\n return recoveryValueFunc();\n }\n }\n else {\n if (this.outputCst) {\n var partialCstResult = this.CST_STACK[this.CST_STACK.length - 1];\n partialCstResult.recoveredNode = true;\n recogError.partialCstResult = partialCstResult;\n }\n // to be handled Further up the call stack\n throw recogError;\n }\n }\n else if (isFirstInvokedRule) {\n // otherwise a Redundant input error will be created as well and we cannot guarantee that this is indeed the case\n this.moveToTerminatedState();\n // the parser should never throw one of its own errors outside its flow.\n // even if error recovery is disabled\n return recoveryValueFunc();\n }\n else {\n // to be recovered Further up the call stack\n throw recogError;\n }\n }\n else {\n // some other Error type which we don't know how to handle (for example a built in JavaScript Error)\n throw e;\n }\n };\n // Implementation of parsing DSL\n RecognizerEngine.prototype.optionInternal = function (actionORMethodDef, occurrence) {\n var key = this.getKeyForAutomaticLookahead(OPTION_IDX, occurrence);\n return this.optionInternalLogic(actionORMethodDef, occurrence, key);\n };\n RecognizerEngine.prototype.optionInternalLogic = function (actionORMethodDef, occurrence, key) {\n var _this = this;\n var lookAheadFunc = this.getLaFuncFromCache(key);\n var action;\n var predicate;\n if (actionORMethodDef.DEF !== undefined) {\n action = actionORMethodDef.DEF;\n predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n var orgLookaheadFunction_1 = lookAheadFunc;\n lookAheadFunc = function () {\n return predicate.call(_this) && orgLookaheadFunction_1.call(_this);\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n return action.call(this);\n }\n return undefined;\n };\n RecognizerEngine.prototype.atLeastOneInternal = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_IDX, prodOccurrence);\n return this.atLeastOneInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n };\n RecognizerEngine.prototype.atLeastOneInternalLogic = function (prodOccurrence, actionORMethodDef, key) {\n var _this = this;\n var lookAheadFunc = this.getLaFuncFromCache(key);\n var action;\n var predicate;\n if (actionORMethodDef.DEF !== undefined) {\n action = actionORMethodDef.DEF;\n predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n var orgLookaheadFunction_2 = lookAheadFunc;\n lookAheadFunc = function () {\n return predicate.call(_this) && orgLookaheadFunction_2.call(_this);\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n if (lookAheadFunc.call(this) === true) {\n var notStuck = this.doSingleRepetition(action);\n while (lookAheadFunc.call(this) === true &&\n notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n }\n else {\n throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY, actionORMethodDef.ERR_MSG);\n }\n // note that while it may seem that this can cause an error because by using a recursive call to\n // AT_LEAST_ONE we change the grammar to AT_LEAST_TWO, AT_LEAST_THREE ... , the possible recursive call\n // from the tryInRepetitionRecovery(...) will only happen IFF there really are TWO/THREE/.... items.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.atLeastOneInternal, [prodOccurrence, actionORMethodDef], lookAheadFunc, AT_LEAST_ONE_IDX, prodOccurrence, NextTerminalAfterAtLeastOneWalker);\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternal = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(AT_LEAST_ONE_SEP_IDX, prodOccurrence);\n this.atLeastOneSepFirstInternalLogic(prodOccurrence, options, laKey);\n };\n RecognizerEngine.prototype.atLeastOneSepFirstInternalLogic = function (prodOccurrence, options, key) {\n var _this = this;\n var action = options.DEF;\n var separator = options.SEP;\n var firstIterationLookaheadFunc = this.getLaFuncFromCache(key);\n // 1st iteration\n if (firstIterationLookaheadFunc.call(this) === true) {\n ;\n action.call(this);\n // TODO: Optimization can move this function construction into \"attemptInRepetitionRecovery\"\n // because it is only needed in error recovery scenarios.\n var separatorLookAheadFunc = function () {\n return _this.tokenMatcher(_this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterAtLeastOneSepWalker\n ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, NextTerminalAfterAtLeastOneSepWalker);\n }\n else {\n throw this.raiseEarlyExitException(prodOccurrence, PROD_TYPE.REPETITION_MANDATORY_WITH_SEPARATOR, options.ERR_MSG);\n }\n };\n RecognizerEngine.prototype.manyInternal = function (prodOccurrence, actionORMethodDef) {\n var laKey = this.getKeyForAutomaticLookahead(MANY_IDX, prodOccurrence);\n return this.manyInternalLogic(prodOccurrence, actionORMethodDef, laKey);\n };\n RecognizerEngine.prototype.manyInternalLogic = function (prodOccurrence, actionORMethodDef, key) {\n var _this = this;\n var lookaheadFunction = this.getLaFuncFromCache(key);\n var action;\n var predicate;\n if (actionORMethodDef.DEF !== undefined) {\n action = actionORMethodDef.DEF;\n predicate = actionORMethodDef.GATE;\n // predicate present\n if (predicate !== undefined) {\n var orgLookaheadFunction_3 = lookaheadFunction;\n lookaheadFunction = function () {\n return predicate.call(_this) && orgLookaheadFunction_3.call(_this);\n };\n }\n }\n else {\n action = actionORMethodDef;\n }\n var notStuck = true;\n while (lookaheadFunction.call(this) === true && notStuck === true) {\n notStuck = this.doSingleRepetition(action);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.manyInternal, [prodOccurrence, actionORMethodDef], lookaheadFunction, MANY_IDX, prodOccurrence, NextTerminalAfterManyWalker, \n // The notStuck parameter is only relevant when \"attemptInRepetitionRecovery\"\n // is invoked from manyInternal, in the MANY_SEP case and AT_LEAST_ONE[_SEP]\n // An infinite loop cannot occur as:\n // - Either the lookahead is guaranteed to consume something (Single Token Separator)\n // - AT_LEAST_ONE by definition is guaranteed to consume something (or error out).\n notStuck);\n };\n RecognizerEngine.prototype.manySepFirstInternal = function (prodOccurrence, options) {\n var laKey = this.getKeyForAutomaticLookahead(MANY_SEP_IDX, prodOccurrence);\n this.manySepFirstInternalLogic(prodOccurrence, options, laKey);\n };\n RecognizerEngine.prototype.manySepFirstInternalLogic = function (prodOccurrence, options, key) {\n var _this = this;\n var action = options.DEF;\n var separator = options.SEP;\n var firstIterationLaFunc = this.getLaFuncFromCache(key);\n // 1st iteration\n if (firstIterationLaFunc.call(this) === true) {\n action.call(this);\n var separatorLookAheadFunc = function () {\n return _this.tokenMatcher(_this.LA(1), separator);\n };\n // 2nd..nth iterations\n while (this.tokenMatcher(this.LA(1), separator) === true) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n // No need for checking infinite loop here due to consuming the separator.\n action.call(this);\n }\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n NextTerminalAfterManySepWalker\n ], separatorLookAheadFunc, MANY_SEP_IDX, prodOccurrence, NextTerminalAfterManySepWalker);\n }\n };\n RecognizerEngine.prototype.repetitionSepSecondInternal = function (prodOccurrence, separator, separatorLookAheadFunc, action, nextTerminalAfterWalker) {\n while (separatorLookAheadFunc()) {\n // note that this CONSUME will never enter recovery because\n // the separatorLookAheadFunc checks that the separator really does exist.\n this.CONSUME(separator);\n action.call(this);\n }\n // we can only arrive to this function after an error\n // has occurred (hence the name 'second') so the following\n // IF will always be entered, its possible to remove it...\n // however it is kept to avoid confusion and be consistent.\n // Performance optimization: \"attemptInRepetitionRecovery\" will be defined as NOOP unless recovery is enabled\n /* istanbul ignore else */\n this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal, [\n prodOccurrence,\n separator,\n separatorLookAheadFunc,\n action,\n nextTerminalAfterWalker\n ], separatorLookAheadFunc, AT_LEAST_ONE_SEP_IDX, prodOccurrence, nextTerminalAfterWalker);\n };\n RecognizerEngine.prototype.doSingleRepetition = function (action) {\n var beforeIteration = this.getLexerPosition();\n action.call(this);\n var afterIteration = this.getLexerPosition();\n // This boolean will indicate if this repetition progressed\n // or if we are \"stuck\" (potential infinite loop in the repetition).\n return afterIteration > beforeIteration;\n };\n RecognizerEngine.prototype.orInternal = function (altsOrOpts, occurrence) {\n var laKey = this.getKeyForAutomaticLookahead(OR_IDX, occurrence);\n var alts = isArray(altsOrOpts)\n ? altsOrOpts\n : altsOrOpts.DEF;\n var laFunc = this.getLaFuncFromCache(laKey);\n var altIdxToTake = laFunc.call(this, alts);\n if (altIdxToTake !== undefined) {\n var chosenAlternative = alts[altIdxToTake];\n return chosenAlternative.ALT.call(this);\n }\n this.raiseNoAltException(occurrence, altsOrOpts.ERR_MSG);\n };\n RecognizerEngine.prototype.ruleFinallyStateUpdate = function () {\n this.RULE_STACK.pop();\n this.RULE_OCCURRENCE_STACK.pop();\n // NOOP when cst is disabled\n this.cstFinallyStateUpdate();\n if (this.RULE_STACK.length === 0 && this.isAtEndOfInput() === false) {\n var firstRedundantTok = this.LA(1);\n var errMsg = this.errorMessageProvider.buildNotAllInputParsedMessage({\n firstRedundant: firstRedundantTok,\n ruleName: this.getCurrRuleFullName()\n });\n this.SAVE_ERROR(new NotAllInputParsedException(errMsg, firstRedundantTok));\n }\n };\n RecognizerEngine.prototype.subruleInternal = function (ruleToCall, idx, options) {\n var ruleResult;\n try {\n var args = options !== undefined ? options.ARGS : undefined;\n ruleResult = ruleToCall.call(this, idx, args);\n this.cstPostNonTerminal(ruleResult, options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleToCall.ruleName);\n return ruleResult;\n }\n catch (e) {\n this.subruleInternalError(e, options, ruleToCall.ruleName);\n }\n };\n RecognizerEngine.prototype.subruleInternalError = function (e, options, ruleName) {\n if (isRecognitionException(e) && e.partialCstResult !== undefined) {\n this.cstPostNonTerminal(e.partialCstResult, options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : ruleName);\n delete e.partialCstResult;\n }\n throw e;\n };\n RecognizerEngine.prototype.consumeInternal = function (tokType, idx, options) {\n var consumedToken;\n try {\n var nextToken = this.LA(1);\n if (this.tokenMatcher(nextToken, tokType) === true) {\n this.consumeToken();\n consumedToken = nextToken;\n }\n else {\n this.consumeInternalError(tokType, nextToken, options);\n }\n }\n catch (eFromConsumption) {\n consumedToken = this.consumeInternalRecovery(tokType, idx, eFromConsumption);\n }\n this.cstPostTerminal(options !== undefined && options.LABEL !== undefined\n ? options.LABEL\n : tokType.name, consumedToken);\n return consumedToken;\n };\n RecognizerEngine.prototype.consumeInternalError = function (tokType, nextToken, options) {\n var msg;\n var previousToken = this.LA(0);\n if (options !== undefined && options.ERR_MSG) {\n msg = options.ERR_MSG;\n }\n else {\n msg = this.errorMessageProvider.buildMismatchTokenMessage({\n expected: tokType,\n actual: nextToken,\n previous: previousToken,\n ruleName: this.getCurrRuleFullName()\n });\n }\n throw this.SAVE_ERROR(new MismatchedTokenException(msg, nextToken, previousToken));\n };\n RecognizerEngine.prototype.consumeInternalRecovery = function (tokType, idx, eFromConsumption) {\n // no recovery allowed during backtracking, otherwise backtracking may recover invalid syntax and accept it\n // but the original syntax could have been parsed successfully without any backtracking + recovery\n if (this.recoveryEnabled &&\n // TODO: more robust checking of the exception type. Perhaps Typescript extending expressions?\n eFromConsumption.name === \"MismatchedTokenException\" &&\n !this.isBackTracking()) {\n var follows = this.getFollowsForInRuleRecovery(tokType, idx);\n try {\n return this.tryInRuleRecovery(tokType, follows);\n }\n catch (eFromInRuleRecovery) {\n if (eFromInRuleRecovery.name === IN_RULE_RECOVERY_EXCEPTION) {\n // failed in RuleRecovery.\n // throw the original error in order to trigger reSync error recovery\n throw eFromConsumption;\n }\n else {\n throw eFromInRuleRecovery;\n }\n }\n }\n else {\n throw eFromConsumption;\n }\n };\n RecognizerEngine.prototype.saveRecogState = function () {\n // errors is a getter which will clone the errors array\n var savedErrors = this.errors;\n var savedRuleStack = cloneArr(this.RULE_STACK);\n return {\n errors: savedErrors,\n lexerState: this.exportLexerState(),\n RULE_STACK: savedRuleStack,\n CST_STACK: this.CST_STACK\n };\n };\n RecognizerEngine.prototype.reloadRecogState = function (newState) {\n this.errors = newState.errors;\n this.importLexerState(newState.lexerState);\n this.RULE_STACK = newState.RULE_STACK;\n };\n RecognizerEngine.prototype.ruleInvocationStateUpdate = function (shortName, fullName, idxInCallingRule) {\n this.RULE_OCCURRENCE_STACK.push(idxInCallingRule);\n this.RULE_STACK.push(shortName);\n // NOOP when cst is disabled\n this.cstInvocationStateUpdate(fullName, shortName);\n };\n RecognizerEngine.prototype.isBackTracking = function () {\n return this.isBackTrackingStack.length !== 0;\n };\n RecognizerEngine.prototype.getCurrRuleFullName = function () {\n var shortName = this.getLastExplicitRuleShortName();\n return this.shortRuleNameToFull[shortName];\n };\n RecognizerEngine.prototype.shortRuleNameToFullName = function (shortName) {\n return this.shortRuleNameToFull[shortName];\n };\n RecognizerEngine.prototype.isAtEndOfInput = function () {\n return this.tokenMatcher(this.LA(1), EOF);\n };\n RecognizerEngine.prototype.reset = function () {\n this.resetLexerState();\n this.isBackTrackingStack = [];\n this.errors = [];\n this.RULE_STACK = [];\n // TODO: extract a specific reset for TreeBuilder trait\n this.CST_STACK = [];\n this.RULE_OCCURRENCE_STACK = [];\n };\n return RecognizerEngine;\n}());\nexport { RecognizerEngine };\n//# sourceMappingURL=recognizer_engine.js.map","import { EarlyExitException, isRecognitionException, NoViableAltException } from \"../../exceptions_public\";\nimport { cloneArr, has } from \"../../../utils/utils\";\nimport { getLookaheadPathsForOptionalProd, getLookaheadPathsForOr } from \"../../grammar/lookahead\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\n/**\n * Trait responsible for runtime parsing errors.\n */\nvar ErrorHandler = /** @class */ (function () {\n function ErrorHandler() {\n }\n ErrorHandler.prototype.initErrorHandler = function (config) {\n this._errors = [];\n this.errorMessageProvider = has(config, \"errorMessageProvider\")\n ? config.errorMessageProvider\n : DEFAULT_PARSER_CONFIG.errorMessageProvider;\n };\n ErrorHandler.prototype.SAVE_ERROR = function (error) {\n if (isRecognitionException(error)) {\n error.context = {\n ruleStack: this.getHumanReadableRuleStack(),\n ruleOccurrenceStack: cloneArr(this.RULE_OCCURRENCE_STACK)\n };\n this._errors.push(error);\n return error;\n }\n else {\n throw Error(\"Trying to save an Error which is not a RecognitionException\");\n }\n };\n Object.defineProperty(ErrorHandler.prototype, \"errors\", {\n get: function () {\n return cloneArr(this._errors);\n },\n set: function (newErrors) {\n this._errors = newErrors;\n },\n enumerable: false,\n configurable: true\n });\n // TODO: consider caching the error message computed information\n ErrorHandler.prototype.raiseEarlyExitException = function (occurrence, prodType, userDefinedErrMsg) {\n var ruleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[ruleName];\n var lookAheadPathsPerAlternative = getLookaheadPathsForOptionalProd(occurrence, ruleGrammar, prodType, this.maxLookahead);\n var insideProdPaths = lookAheadPathsPerAlternative[0];\n var actualTokens = [];\n for (var i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n var msg = this.errorMessageProvider.buildEarlyExitMessage({\n expectedIterationPaths: insideProdPaths,\n actual: actualTokens,\n previous: this.LA(0),\n customUserDescription: userDefinedErrMsg,\n ruleName: ruleName\n });\n throw this.SAVE_ERROR(new EarlyExitException(msg, this.LA(1), this.LA(0)));\n };\n // TODO: consider caching the error message computed information\n ErrorHandler.prototype.raiseNoAltException = function (occurrence, errMsgTypes) {\n var ruleName = this.getCurrRuleFullName();\n var ruleGrammar = this.getGAstProductions()[ruleName];\n // TODO: getLookaheadPathsForOr can be slow for large enough maxLookahead and certain grammars, consider caching ?\n var lookAheadPathsPerAlternative = getLookaheadPathsForOr(occurrence, ruleGrammar, this.maxLookahead);\n var actualTokens = [];\n for (var i = 1; i <= this.maxLookahead; i++) {\n actualTokens.push(this.LA(i));\n }\n var previousToken = this.LA(0);\n var errMsg = this.errorMessageProvider.buildNoViableAltMessage({\n expectedPathsPerAlt: lookAheadPathsPerAlternative,\n actual: actualTokens,\n previous: previousToken,\n customUserDescription: errMsgTypes,\n ruleName: this.getCurrRuleFullName()\n });\n throw this.SAVE_ERROR(new NoViableAltException(errMsg, this.LA(1), previousToken));\n };\n return ErrorHandler;\n}());\nexport { ErrorHandler };\n//# sourceMappingURL=error_handler.js.map","import { NextAfterTokenWalker, nextPossibleTokensAfter } from \"../../grammar/interpreter\";\nimport { first, isUndefined } from \"../../../utils/utils\";\nvar ContentAssist = /** @class */ (function () {\n function ContentAssist() {\n }\n ContentAssist.prototype.initContentAssist = function () { };\n ContentAssist.prototype.computeContentAssist = function (startRuleName, precedingInput) {\n var startRuleGast = this.gastProductionsCache[startRuleName];\n if (isUndefined(startRuleGast)) {\n throw Error(\"Rule ->\" + startRuleName + \"<- does not exist in this grammar.\");\n }\n return nextPossibleTokensAfter([startRuleGast], precedingInput, this.tokenMatcher, this.maxLookahead);\n };\n // TODO: should this be a member method or a utility? it does not have any state or usage of 'this'...\n // TODO: should this be more explicitly part of the public API?\n ContentAssist.prototype.getNextPossibleTokenTypes = function (grammarPath) {\n var topRuleName = first(grammarPath.ruleStack);\n var gastProductions = this.getGAstProductions();\n var topProduction = gastProductions[topRuleName];\n var nextPossibleTokenTypes = new NextAfterTokenWalker(topProduction, grammarPath).startWalking();\n return nextPossibleTokenTypes;\n };\n return ContentAssist;\n}());\nexport { ContentAssist };\n//# sourceMappingURL=context_assist.js.map","import { forEach, has, isArray, isFunction, peek, some } from \"../../../utils/utils\";\nimport { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"../../grammar/gast/gast_public\";\nimport { Lexer } from \"../../../scan/lexer_public\";\nimport { augmentTokenTypes, hasShortKeyProperty } from \"../../../scan/tokens\";\nimport { createToken, createTokenInstance } from \"../../../scan/tokens_public\";\nimport { END_OF_FILE } from \"../parser\";\nimport { BITS_FOR_OCCURRENCE_IDX } from \"../../grammar/keys\";\nvar RECORDING_NULL_OBJECT = {\n description: \"This Object indicates the Parser is during Recording Phase\"\n};\nObject.freeze(RECORDING_NULL_OBJECT);\nvar HANDLE_SEPARATOR = true;\nvar MAX_METHOD_IDX = Math.pow(2, BITS_FOR_OCCURRENCE_IDX) - 1;\nvar RFT = createToken({ name: \"RECORDING_PHASE_TOKEN\", pattern: Lexer.NA });\naugmentTokenTypes([RFT]);\nvar RECORDING_PHASE_TOKEN = createTokenInstance(RFT, \"This IToken indicates the Parser is in Recording Phase\\n\\t\" +\n \"\" +\n \"See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\", \n// Using \"-1\" instead of NaN (as in EOF) because an actual number is less likely to\n// cause errors if the output of LA or CONSUME would be (incorrectly) used during the recording phase.\n-1, -1, -1, -1, -1, -1);\nObject.freeze(RECORDING_PHASE_TOKEN);\nvar RECORDING_PHASE_CSTNODE = {\n name: \"This CSTNode indicates the Parser is in Recording Phase\\n\\t\" +\n \"See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details\",\n children: {}\n};\n/**\n * This trait handles the creation of the GAST structure for Chevrotain Grammars\n */\nvar GastRecorder = /** @class */ (function () {\n function GastRecorder() {\n }\n GastRecorder.prototype.initGastRecorder = function (config) {\n this.recordingProdStack = [];\n this.RECORDING_PHASE = false;\n };\n GastRecorder.prototype.enableRecording = function () {\n var _this = this;\n this.RECORDING_PHASE = true;\n this.TRACE_INIT(\"Enable Recording\", function () {\n var _loop_1 = function (i) {\n var idx = i > 0 ? i : \"\";\n _this[\"CONSUME\" + idx] = function (arg1, arg2) {\n return this.consumeInternalRecord(arg1, i, arg2);\n };\n _this[\"SUBRULE\" + idx] = function (arg1, arg2) {\n return this.subruleInternalRecord(arg1, i, arg2);\n };\n _this[\"OPTION\" + idx] = function (arg1) {\n return this.optionInternalRecord(arg1, i);\n };\n _this[\"OR\" + idx] = function (arg1) {\n return this.orInternalRecord(arg1, i);\n };\n _this[\"MANY\" + idx] = function (arg1) {\n this.manyInternalRecord(i, arg1);\n };\n _this[\"MANY_SEP\" + idx] = function (arg1) {\n this.manySepFirstInternalRecord(i, arg1);\n };\n _this[\"AT_LEAST_ONE\" + idx] = function (arg1) {\n this.atLeastOneInternalRecord(i, arg1);\n };\n _this[\"AT_LEAST_ONE_SEP\" + idx] = function (arg1) {\n this.atLeastOneSepFirstInternalRecord(i, arg1);\n };\n };\n /**\n * Warning Dark Voodoo Magic upcoming!\n * We are \"replacing\" the public parsing DSL methods API\n * With **new** alternative implementations on the Parser **instance**\n *\n * So far this is the only way I've found to avoid performance regressions during parsing time.\n * - Approx 30% performance regression was measured on Chrome 75 Canary when attempting to replace the \"internal\"\n * implementations directly instead.\n */\n for (var i = 0; i < 10; i++) {\n _loop_1(i);\n }\n // DSL methods with the idx(suffix) as an argument\n _this[\"consume\"] = function (idx, arg1, arg2) {\n return this.consumeInternalRecord(arg1, idx, arg2);\n };\n _this[\"subrule\"] = function (idx, arg1, arg2) {\n return this.subruleInternalRecord(arg1, idx, arg2);\n };\n _this[\"option\"] = function (idx, arg1) {\n return this.optionInternalRecord(arg1, idx);\n };\n _this[\"or\"] = function (idx, arg1) {\n return this.orInternalRecord(arg1, idx);\n };\n _this[\"many\"] = function (idx, arg1) {\n this.manyInternalRecord(idx, arg1);\n };\n _this[\"atLeastOne\"] = function (idx, arg1) {\n this.atLeastOneInternalRecord(idx, arg1);\n };\n _this.ACTION = _this.ACTION_RECORD;\n _this.BACKTRACK = _this.BACKTRACK_RECORD;\n _this.LA = _this.LA_RECORD;\n });\n };\n GastRecorder.prototype.disableRecording = function () {\n var _this = this;\n this.RECORDING_PHASE = false;\n // By deleting these **instance** properties, any future invocation\n // will be deferred to the original methods on the **prototype** object\n // This seems to get rid of any incorrect optimizations that V8 may\n // do during the recording phase.\n this.TRACE_INIT(\"Deleting Recording methods\", function () {\n for (var i = 0; i < 10; i++) {\n var idx = i > 0 ? i : \"\";\n delete _this[\"CONSUME\" + idx];\n delete _this[\"SUBRULE\" + idx];\n delete _this[\"OPTION\" + idx];\n delete _this[\"OR\" + idx];\n delete _this[\"MANY\" + idx];\n delete _this[\"MANY_SEP\" + idx];\n delete _this[\"AT_LEAST_ONE\" + idx];\n delete _this[\"AT_LEAST_ONE_SEP\" + idx];\n }\n delete _this[\"consume\"];\n delete _this[\"subrule\"];\n delete _this[\"option\"];\n delete _this[\"or\"];\n delete _this[\"many\"];\n delete _this[\"atLeastOne\"];\n delete _this.ACTION;\n delete _this.BACKTRACK;\n delete _this.LA;\n });\n };\n // TODO: is there any way to use this method to check no\n // Parser methods are called inside an ACTION?\n // Maybe try/catch/finally on ACTIONS while disabling the recorders state changes?\n GastRecorder.prototype.ACTION_RECORD = function (impl) {\n // NO-OP during recording\n return;\n };\n // Executing backtracking logic will break our recording logic assumptions\n GastRecorder.prototype.BACKTRACK_RECORD = function (grammarRule, args) {\n return function () { return true; };\n };\n // LA is part of the official API and may be used for custom lookahead logic\n // by end users who may forget to wrap it in ACTION or inside a GATE\n GastRecorder.prototype.LA_RECORD = function (howMuch) {\n // We cannot use the RECORD_PHASE_TOKEN here because someone may depend\n // On LA return EOF at the end of the input so an infinite loop may occur.\n return END_OF_FILE;\n };\n GastRecorder.prototype.topLevelRuleRecord = function (name, def) {\n try {\n var newTopLevelRule = new Rule({ definition: [], name: name });\n newTopLevelRule.name = name;\n this.recordingProdStack.push(newTopLevelRule);\n def.call(this);\n this.recordingProdStack.pop();\n return newTopLevelRule;\n }\n catch (originalError) {\n if (originalError.KNOWN_RECORDER_ERROR !== true) {\n try {\n originalError.message =\n originalError.message +\n '\\n\\t This error was thrown during the \"grammar recording phase\" For more info see:\\n\\t' +\n \"https://chevrotain.io/docs/guide/internals.html#grammar-recording\";\n }\n catch (mutabilityError) {\n // We may not be able to modify the original error object\n throw originalError;\n }\n }\n throw originalError;\n }\n };\n // Implementation of parsing DSL\n GastRecorder.prototype.optionInternalRecord = function (actionORMethodDef, occurrence) {\n return recordProd.call(this, Option, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.atLeastOneInternalRecord = function (occurrence, actionORMethodDef) {\n recordProd.call(this, RepetitionMandatory, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.atLeastOneSepFirstInternalRecord = function (occurrence, options) {\n recordProd.call(this, RepetitionMandatoryWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n };\n GastRecorder.prototype.manyInternalRecord = function (occurrence, actionORMethodDef) {\n recordProd.call(this, Repetition, actionORMethodDef, occurrence);\n };\n GastRecorder.prototype.manySepFirstInternalRecord = function (occurrence, options) {\n recordProd.call(this, RepetitionWithSeparator, options, occurrence, HANDLE_SEPARATOR);\n };\n GastRecorder.prototype.orInternalRecord = function (altsOrOpts, occurrence) {\n return recordOrProd.call(this, altsOrOpts, occurrence);\n };\n GastRecorder.prototype.subruleInternalRecord = function (ruleToCall, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!ruleToCall || has(ruleToCall, \"ruleName\") === false) {\n var error = new Error(\" argument is invalid\" +\n (\" expecting a Parser method reference but got: <\" + JSON.stringify(ruleToCall) + \">\") +\n (\"\\n inside top level rule: <\" + this.recordingProdStack[0].name + \">\"));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n var prevProd = peek(this.recordingProdStack);\n var ruleName = ruleToCall[\"ruleName\"];\n var newNoneTerminal = new NonTerminal({\n idx: occurrence,\n nonTerminalName: ruleName,\n // The resolving of the `referencedRule` property will be done once all the Rule's GASTs have been created\n referencedRule: undefined\n });\n prevProd.definition.push(newNoneTerminal);\n return this.outputCst ? RECORDING_PHASE_CSTNODE : RECORDING_NULL_OBJECT;\n };\n GastRecorder.prototype.consumeInternalRecord = function (tokType, occurrence, options) {\n assertMethodIdxIsValid(occurrence);\n if (!hasShortKeyProperty(tokType)) {\n var error = new Error(\" argument is invalid\" +\n (\" expecting a TokenType reference but got: <\" + JSON.stringify(tokType) + \">\") +\n (\"\\n inside top level rule: <\" + this.recordingProdStack[0].name + \">\"));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n var prevProd = peek(this.recordingProdStack);\n var newNoneTerminal = new Terminal({\n idx: occurrence,\n terminalType: tokType\n });\n prevProd.definition.push(newNoneTerminal);\n return RECORDING_PHASE_TOKEN;\n };\n return GastRecorder;\n}());\nexport { GastRecorder };\nfunction recordProd(prodConstructor, mainProdArg, occurrence, handleSep) {\n if (handleSep === void 0) { handleSep = false; }\n assertMethodIdxIsValid(occurrence);\n var prevProd = peek(this.recordingProdStack);\n var grammarAction = isFunction(mainProdArg) ? mainProdArg : mainProdArg.DEF;\n var newProd = new prodConstructor({ definition: [], idx: occurrence });\n if (handleSep) {\n newProd.separator = mainProdArg.SEP;\n }\n if (has(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n this.recordingProdStack.push(newProd);\n grammarAction.call(this);\n prevProd.definition.push(newProd);\n this.recordingProdStack.pop();\n return RECORDING_NULL_OBJECT;\n}\nfunction recordOrProd(mainProdArg, occurrence) {\n var _this = this;\n assertMethodIdxIsValid(occurrence);\n var prevProd = peek(this.recordingProdStack);\n // Only an array of alternatives\n var hasOptions = isArray(mainProdArg) === false;\n var alts = hasOptions === false ? mainProdArg : mainProdArg.DEF;\n var newOrProd = new Alternation({\n definition: [],\n idx: occurrence,\n ignoreAmbiguities: hasOptions && mainProdArg.IGNORE_AMBIGUITIES === true\n });\n if (has(mainProdArg, \"MAX_LOOKAHEAD\")) {\n newOrProd.maxLookahead = mainProdArg.MAX_LOOKAHEAD;\n }\n var hasPredicates = some(alts, function (currAlt) { return isFunction(currAlt.GATE); });\n newOrProd.hasPredicates = hasPredicates;\n prevProd.definition.push(newOrProd);\n forEach(alts, function (currAlt) {\n var currAltFlat = new Alternative({ definition: [] });\n newOrProd.definition.push(currAltFlat);\n if (has(currAlt, \"IGNORE_AMBIGUITIES\")) {\n currAltFlat.ignoreAmbiguities = currAlt.IGNORE_AMBIGUITIES;\n }\n // **implicit** ignoreAmbiguities due to usage of gate\n else if (has(currAlt, \"GATE\")) {\n currAltFlat.ignoreAmbiguities = true;\n }\n _this.recordingProdStack.push(currAltFlat);\n currAlt.ALT.call(_this);\n _this.recordingProdStack.pop();\n });\n return RECORDING_NULL_OBJECT;\n}\nfunction getIdxSuffix(idx) {\n return idx === 0 ? \"\" : \"\" + idx;\n}\nfunction assertMethodIdxIsValid(idx) {\n if (idx < 0 || idx > MAX_METHOD_IDX) {\n var error = new Error(\n // The stack trace will contain all the needed details\n \"Invalid DSL Method idx value: <\" + idx + \">\\n\\t\" +\n (\"Idx value must be a none negative value smaller than \" + (MAX_METHOD_IDX + 1)));\n error.KNOWN_RECORDER_ERROR = true;\n throw error;\n }\n}\n//# sourceMappingURL=gast_recorder.js.map","import { has, timer } from \"../../../utils/utils\";\nimport { DEFAULT_PARSER_CONFIG } from \"../parser\";\n/**\n * Trait responsible for runtime parsing errors.\n */\nvar PerformanceTracer = /** @class */ (function () {\n function PerformanceTracer() {\n }\n PerformanceTracer.prototype.initPerformanceTracer = function (config) {\n if (has(config, \"traceInitPerf\")) {\n var userTraceInitPerf = config.traceInitPerf;\n var traceIsNumber = typeof userTraceInitPerf === \"number\";\n this.traceInitMaxIdent = traceIsNumber\n ? userTraceInitPerf\n : Infinity;\n this.traceInitPerf = traceIsNumber\n ? userTraceInitPerf > 0\n : userTraceInitPerf;\n }\n else {\n this.traceInitMaxIdent = 0;\n this.traceInitPerf = DEFAULT_PARSER_CONFIG.traceInitPerf;\n }\n this.traceInitIndent = -1;\n };\n PerformanceTracer.prototype.TRACE_INIT = function (phaseDesc, phaseImpl) {\n // No need to optimize this using NOOP pattern because\n // It is not called in a hot spot...\n if (this.traceInitPerf === true) {\n this.traceInitIndent++;\n var indent = new Array(this.traceInitIndent + 1).join(\"\\t\");\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n console.log(indent + \"--> <\" + phaseDesc + \">\");\n }\n var _a = timer(phaseImpl), time = _a.time, value = _a.value;\n /* istanbul ignore next - Difficult to reproduce specific performance behavior (>10ms) in tests */\n var traceMethod = time > 10 ? console.warn : console.log;\n if (this.traceInitIndent < this.traceInitMaxIdent) {\n traceMethod(indent + \"<-- <\" + phaseDesc + \"> time: \" + time + \"ms\");\n }\n this.traceInitIndent--;\n return value;\n }\n else {\n return phaseImpl();\n }\n };\n return PerformanceTracer;\n}());\nexport { PerformanceTracer };\n//# sourceMappingURL=perf_tracer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { applyMixins, cloneObj, forEach, has, isEmpty, map, toFastProperties, values } from \"../../utils/utils\";\nimport { computeAllProdsFollows } from \"../grammar/follow\";\nimport { createTokenInstance, EOF } from \"../../scan/tokens_public\";\nimport { defaultGrammarValidatorErrorProvider, defaultParserErrorProvider } from \"../errors_public\";\nimport { resolveGrammar, validateGrammar } from \"../grammar/gast/gast_resolver_public\";\nimport { Recoverable } from \"./traits/recoverable\";\nimport { LooksAhead } from \"./traits/looksahead\";\nimport { TreeBuilder } from \"./traits/tree_builder\";\nimport { LexerAdapter } from \"./traits/lexer_adapter\";\nimport { RecognizerApi } from \"./traits/recognizer_api\";\nimport { RecognizerEngine } from \"./traits/recognizer_engine\";\nimport { ErrorHandler } from \"./traits/error_handler\";\nimport { ContentAssist } from \"./traits/context_assist\";\nimport { GastRecorder } from \"./traits/gast_recorder\";\nimport { PerformanceTracer } from \"./traits/perf_tracer\";\nexport var END_OF_FILE = createTokenInstance(EOF, \"\", NaN, NaN, NaN, NaN, NaN, NaN);\nObject.freeze(END_OF_FILE);\nexport var DEFAULT_PARSER_CONFIG = Object.freeze({\n recoveryEnabled: false,\n maxLookahead: 3,\n dynamicTokensEnabled: false,\n outputCst: true,\n errorMessageProvider: defaultParserErrorProvider,\n nodeLocationTracking: \"none\",\n traceInitPerf: false,\n skipValidations: false\n});\nexport var DEFAULT_RULE_CONFIG = Object.freeze({\n recoveryValueFunc: function () { return undefined; },\n resyncEnabled: true\n});\nexport var ParserDefinitionErrorType;\n(function (ParserDefinitionErrorType) {\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_RULE_NAME\"] = 0] = \"INVALID_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_RULE_NAME\"] = 1] = \"DUPLICATE_RULE_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_RULE_OVERRIDE\"] = 2] = \"INVALID_RULE_OVERRIDE\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"DUPLICATE_PRODUCTIONS\"] = 3] = \"DUPLICATE_PRODUCTIONS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"UNRESOLVED_SUBRULE_REF\"] = 4] = \"UNRESOLVED_SUBRULE_REF\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"LEFT_RECURSION\"] = 5] = \"LEFT_RECURSION\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"NONE_LAST_EMPTY_ALT\"] = 6] = \"NONE_LAST_EMPTY_ALT\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"AMBIGUOUS_ALTS\"] = 7] = \"AMBIGUOUS_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"CONFLICT_TOKENS_RULES_NAMESPACE\"] = 8] = \"CONFLICT_TOKENS_RULES_NAMESPACE\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"INVALID_TOKEN_NAME\"] = 9] = \"INVALID_TOKEN_NAME\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"NO_NON_EMPTY_LOOKAHEAD\"] = 10] = \"NO_NON_EMPTY_LOOKAHEAD\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"AMBIGUOUS_PREFIX_ALTS\"] = 11] = \"AMBIGUOUS_PREFIX_ALTS\";\n ParserDefinitionErrorType[ParserDefinitionErrorType[\"TOO_MANY_ALTS\"] = 12] = \"TOO_MANY_ALTS\";\n})(ParserDefinitionErrorType || (ParserDefinitionErrorType = {}));\nexport function EMPTY_ALT(value) {\n if (value === void 0) { value = undefined; }\n return function () {\n return value;\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(tokenVocabulary, config) {\n this.definitionErrors = [];\n this.selfAnalysisDone = false;\n var that = this;\n that.initErrorHandler(config);\n that.initLexerAdapter();\n that.initLooksAhead(config);\n that.initRecognizerEngine(tokenVocabulary, config);\n that.initRecoverable(config);\n that.initTreeBuilder(config);\n that.initContentAssist();\n that.initGastRecorder(config);\n that.initPerformanceTracer(config);\n if (has(config, \"ignoredIssues\")) {\n throw new Error(\"The IParserConfig property has been deprecated.\\n\\t\" +\n \"Please use the flag on the relevant DSL method instead.\\n\\t\" +\n \"See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\\n\\t\" +\n \"For further details.\");\n }\n this.skipValidations = has(config, \"skipValidations\")\n ? config.skipValidations\n : DEFAULT_PARSER_CONFIG.skipValidations;\n }\n /**\n * @deprecated use the **instance** method with the same name instead\n */\n Parser.performSelfAnalysis = function (parserInstance) {\n throw Error(\"The **static** `performSelfAnalysis` method has been deprecated.\" +\n \"\\t\\nUse the **instance** method with the same name instead.\");\n };\n Parser.prototype.performSelfAnalysis = function () {\n var _this = this;\n this.TRACE_INIT(\"performSelfAnalysis\", function () {\n var defErrorsMsgs;\n _this.selfAnalysisDone = true;\n var className = _this.className;\n _this.TRACE_INIT(\"toFastProps\", function () {\n // Without this voodoo magic the parser would be x3-x4 slower\n // It seems it is better to invoke `toFastProperties` **before**\n // Any manipulations of the `this` object done during the recording phase.\n toFastProperties(_this);\n });\n _this.TRACE_INIT(\"Grammar Recording\", function () {\n try {\n _this.enableRecording();\n // Building the GAST\n forEach(_this.definedRulesNames, function (currRuleName) {\n var wrappedRule = _this[currRuleName];\n var originalGrammarAction = wrappedRule[\"originalGrammarAction\"];\n var recordedRuleGast = undefined;\n _this.TRACE_INIT(currRuleName + \" Rule\", function () {\n recordedRuleGast = _this.topLevelRuleRecord(currRuleName, originalGrammarAction);\n });\n _this.gastProductionsCache[currRuleName] = recordedRuleGast;\n });\n }\n finally {\n _this.disableRecording();\n }\n });\n var resolverErrors = [];\n _this.TRACE_INIT(\"Grammar Resolving\", function () {\n resolverErrors = resolveGrammar({\n rules: values(_this.gastProductionsCache)\n });\n _this.definitionErrors.push.apply(_this.definitionErrors, resolverErrors); // mutability for the win?\n });\n _this.TRACE_INIT(\"Grammar Validations\", function () {\n // only perform additional grammar validations IFF no resolving errors have occurred.\n // as unresolved grammar may lead to unhandled runtime exceptions in the follow up validations.\n if (isEmpty(resolverErrors) && _this.skipValidations === false) {\n var validationErrors = validateGrammar({\n rules: values(_this.gastProductionsCache),\n maxLookahead: _this.maxLookahead,\n tokenTypes: values(_this.tokensMap),\n errMsgProvider: defaultGrammarValidatorErrorProvider,\n grammarName: className\n });\n _this.definitionErrors.push.apply(_this.definitionErrors, validationErrors); // mutability for the win?\n }\n });\n // this analysis may fail if the grammar is not perfectly valid\n if (isEmpty(_this.definitionErrors)) {\n // The results of these computations are not needed unless error recovery is enabled.\n if (_this.recoveryEnabled) {\n _this.TRACE_INIT(\"computeAllProdsFollows\", function () {\n var allFollows = computeAllProdsFollows(values(_this.gastProductionsCache));\n _this.resyncFollows = allFollows;\n });\n }\n _this.TRACE_INIT(\"ComputeLookaheadFunctions\", function () {\n _this.preComputeLookaheadFunctions(values(_this.gastProductionsCache));\n });\n }\n if (!Parser.DEFER_DEFINITION_ERRORS_HANDLING &&\n !isEmpty(_this.definitionErrors)) {\n defErrorsMsgs = map(_this.definitionErrors, function (defError) { return defError.message; });\n throw new Error(\"Parser Definition Errors detected:\\n \" + defErrorsMsgs.join(\"\\n-------------------------------\\n\"));\n }\n });\n };\n // Set this flag to true if you don't want the Parser to throw error when problems in it's definition are detected.\n // (normally during the parser's constructor).\n // This is a design time flag, it will not affect the runtime error handling of the parser, just design time errors,\n // for example: duplicate rule names, referencing an unresolved subrule, ect...\n // This flag should not be enabled during normal usage, it is used in special situations, for example when\n // needing to display the parser definition errors in some GUI(online playground).\n Parser.DEFER_DEFINITION_ERRORS_HANDLING = false;\n return Parser;\n}());\nexport { Parser };\napplyMixins(Parser, [\n Recoverable,\n LooksAhead,\n TreeBuilder,\n LexerAdapter,\n RecognizerEngine,\n RecognizerApi,\n ErrorHandler,\n ContentAssist,\n GastRecorder,\n PerformanceTracer\n]);\nvar CstParser = /** @class */ (function (_super) {\n __extends(CstParser, _super);\n function CstParser(tokenVocabulary, config) {\n if (config === void 0) { config = DEFAULT_PARSER_CONFIG; }\n var _this = this;\n var configClone = cloneObj(config);\n configClone.outputCst = true;\n _this = _super.call(this, tokenVocabulary, configClone) || this;\n return _this;\n }\n return CstParser;\n}(Parser));\nexport { CstParser };\nvar EmbeddedActionsParser = /** @class */ (function (_super) {\n __extends(EmbeddedActionsParser, _super);\n function EmbeddedActionsParser(tokenVocabulary, config) {\n if (config === void 0) { config = DEFAULT_PARSER_CONFIG; }\n var _this = this;\n var configClone = cloneObj(config);\n configClone.outputCst = false;\n _this = _super.call(this, tokenVocabulary, configClone) || this;\n return _this;\n }\n return EmbeddedActionsParser;\n}(Parser));\nexport { EmbeddedActionsParser };\n//# sourceMappingURL=parser.js.map","import { VERSION } from \"../version\";\nexport function createSyntaxDiagramsCode(grammar, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.resourceBase, resourceBase = _c === void 0 ? \"https://unpkg.com/chevrotain@\" + VERSION + \"/diagrams/\" : _c, _d = _b.css, css = _d === void 0 ? \"https://unpkg.com/chevrotain@\" + VERSION + \"/diagrams/diagrams.css\" : _d;\n var header = \"\\n\\n\\n\\n\\n\\n\";\n var cssHtml = \"\\n\\n\";\n var scripts = \"\\n\\n\\n\\n\\n\";\n var diagramsDiv = \"\\n
\\n\";\n var serializedGrammar = \"\\n\\n\";\n var initLogic = \"\\n\\n\";\n return (header + cssHtml + scripts + diagramsDiv + serializedGrammar + initLogic);\n}\n//# sourceMappingURL=render_public.js.map","import { forEach, map } from \"../utils/utils\";\nimport { RepetitionMandatory, Option, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Terminal, NonTerminal, Alternation, Alternative, Repetition } from \"../parse/grammar/gast/gast_public\";\n/**\n * Missing features\n * 1. Rule arguments\n * 2. Gates\n * 3. embedded actions\n */\nvar NL = \"\\n\";\nexport function genUmdModule(options) {\n return \"\\n(function (root, factory) {\\n if (typeof define === 'function' && define.amd) {\\n // AMD. Register as an anonymous module.\\n define(['chevrotain'], factory);\\n } else if (typeof module === 'object' && module.exports) {\\n // Node. Does not work with strict CommonJS, but\\n // only CommonJS-like environments that support module.exports,\\n // like Node.\\n module.exports = factory(require('chevrotain'));\\n } else {\\n // Browser globals (root is window)\\n root.returnExports = factory(root.b);\\n }\\n}(typeof self !== 'undefined' ? self : this, function (chevrotain) {\\n\\n\" + genClass(options) + \"\\n \\nreturn {\\n \" + options.name + \": \" + options.name + \" \\n}\\n}));\\n\";\n}\nexport function genWrapperFunction(options) {\n return \" \\n\" + genClass(options) + \"\\nreturn new \" + options.name + \"(tokenVocabulary, config) \\n\";\n}\nexport function genClass(options) {\n // TODO: how to pass the token vocabulary? Constructor? other?\n var result = \"\\nfunction \" + options.name + \"(tokenVocabulary, config) {\\n // invoke super constructor\\n // No support for embedded actions currently, so we can 'hardcode'\\n // The use of CstParser.\\n chevrotain.CstParser.call(this, tokenVocabulary, config)\\n\\n const $ = this\\n\\n \" + genAllRules(options.rules) + \"\\n\\n // very important to call this after all the rules have been defined.\\n // otherwise the parser may not work correctly as it will lack information\\n // derived during the self analysis phase.\\n this.performSelfAnalysis(this)\\n}\\n\\n// inheritance as implemented in javascript in the previous decade... :(\\n\" + options.name + \".prototype = Object.create(chevrotain.CstParser.prototype)\\n\" + options.name + \".prototype.constructor = \" + options.name + \" \\n \";\n return result;\n}\nexport function genAllRules(rules) {\n var rulesText = map(rules, function (currRule) {\n return genRule(currRule, 1);\n });\n return rulesText.join(\"\\n\");\n}\nexport function genRule(prod, n) {\n var result = indent(n, \"$.RULE(\\\"\" + prod.name + \"\\\", function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"})\") + NL;\n return result;\n}\nexport function genTerminal(prod, n) {\n var name = prod.terminalType.name;\n // TODO: potential performance optimization, avoid tokenMap Dictionary access\n return indent(n, \"$.CONSUME\" + prod.idx + \"(this.tokensMap.\" + name + \")\" + NL);\n}\nexport function genNonTerminal(prod, n) {\n return indent(n, \"$.SUBRULE\" + prod.idx + \"($.\" + prod.nonTerminalName + \")\" + NL);\n}\nexport function genAlternation(prod, n) {\n var result = indent(n, \"$.OR\" + prod.idx + \"([\") + NL;\n var alts = map(prod.definition, function (altDef) { return genSingleAlt(altDef, n + 1); });\n result += alts.join(\",\" + NL);\n result += NL + indent(n, \"])\" + NL);\n return result;\n}\nexport function genSingleAlt(prod, n) {\n var result = indent(n, \"{\") + NL;\n result += indent(n + 1, \"ALT: function() {\") + NL;\n result += genDefinition(prod.definition, n + 1);\n result += indent(n + 1, \"}\") + NL;\n result += indent(n, \"}\");\n return result;\n}\nfunction genProd(prod, n) {\n /* istanbul ignore else */\n if (prod instanceof NonTerminal) {\n return genNonTerminal(prod, n);\n }\n else if (prod instanceof Option) {\n return genDSLRule(\"OPTION\", prod, n);\n }\n else if (prod instanceof RepetitionMandatory) {\n return genDSLRule(\"AT_LEAST_ONE\", prod, n);\n }\n else if (prod instanceof RepetitionMandatoryWithSeparator) {\n return genDSLRule(\"AT_LEAST_ONE_SEP\", prod, n);\n }\n else if (prod instanceof RepetitionWithSeparator) {\n return genDSLRule(\"MANY_SEP\", prod, n);\n }\n else if (prod instanceof Repetition) {\n return genDSLRule(\"MANY\", prod, n);\n }\n else if (prod instanceof Alternation) {\n return genAlternation(prod, n);\n }\n else if (prod instanceof Terminal) {\n return genTerminal(prod, n);\n }\n else if (prod instanceof Alternative) {\n return genDefinition(prod.definition, n);\n }\n else {\n throw Error(\"non exhaustive match\");\n }\n}\nfunction genDSLRule(dslName, prod, n) {\n var result = indent(n, \"$.\" + (dslName + prod.idx) + \"(\");\n if (prod.separator) {\n result += \"{\" + NL;\n result +=\n indent(n + 1, \"SEP: this.tokensMap.\" + prod.separator.name) + \",\" + NL;\n result += \"DEF: \" + genDefFunction(prod.definition, n + 2) + NL;\n result += indent(n, \"}\") + NL;\n }\n else {\n result += genDefFunction(prod.definition, n + 1);\n }\n result += indent(n, \")\") + NL;\n return result;\n}\nfunction genDefFunction(definition, n) {\n var def = \"function() {\" + NL;\n def += genDefinition(definition, n);\n def += indent(n, \"}\") + NL;\n return def;\n}\nfunction genDefinition(def, n) {\n var result = \"\";\n forEach(def, function (prod) {\n result += genProd(prod, n + 1);\n });\n return result;\n}\nfunction indent(howMuch, text) {\n var spaces = Array(howMuch * 4 + 1).join(\" \");\n return spaces + text;\n}\n//# sourceMappingURL=generate.js.map","import { genUmdModule, genWrapperFunction } from \"./generate\";\nexport function generateParserFactory(options) {\n var wrapperText = genWrapperFunction({\n name: options.name,\n rules: options.rules\n });\n var constructorWrapper = new Function(\"tokenVocabulary\", \"config\", \"chevrotain\", wrapperText);\n return function (config) {\n return constructorWrapper(options.tokenVocabulary, config, \n // TODO: check how the require is transpiled/webpacked\n require(\"../api\"));\n };\n}\nexport function generateParserModule(options) {\n return genUmdModule({ name: options.name, rules: options.rules });\n}\n//# sourceMappingURL=generate_public.js.map","/* istanbul ignore file - tricky to import some things from this module during testing */\n// semantic version\nexport { VERSION } from \"./version\";\nexport { CstParser, EmbeddedActionsParser, ParserDefinitionErrorType, EMPTY_ALT } from \"./parse/parser/parser\";\nexport { Lexer, LexerDefinitionErrorType } from \"./scan/lexer_public\";\n// Tokens utilities\nexport { createToken, createTokenInstance, EOF, tokenLabel, tokenMatcher, tokenName } from \"./scan/tokens_public\";\n// Other Utilities\nexport { defaultGrammarResolverErrorProvider, defaultGrammarValidatorErrorProvider, defaultParserErrorProvider } from \"./parse/errors_public\";\nexport { EarlyExitException, isRecognitionException, MismatchedTokenException, NotAllInputParsedException, NoViableAltException } from \"./parse/exceptions_public\";\nexport { defaultLexerErrorProvider } from \"./scan/lexer_errors_public\";\n// grammar reflection API\nexport { Alternation, Alternative, NonTerminal, Option, Repetition, RepetitionMandatory, RepetitionMandatoryWithSeparator, RepetitionWithSeparator, Rule, Terminal } from \"./parse/grammar/gast/gast_public\";\n// GAST Utilities\nexport { serializeGrammar, serializeProduction } from \"./parse/grammar/gast/gast_public\";\nexport { GAstVisitor } from \"./parse/grammar/gast/gast_visitor_public\";\nexport { assignOccurrenceIndices, resolveGrammar, validateGrammar } from \"./parse/grammar/gast/gast_resolver_public\";\n/* istanbul ignore next */\nexport function clearCache() {\n console.warn(\"The clearCache function was 'soft' removed from the Chevrotain API.\" +\n \"\\n\\t It performs no action other than printing this message.\" +\n \"\\n\\t Please avoid using it as it will be completely removed in the future\");\n}\nexport { createSyntaxDiagramsCode } from \"./diagrams/render_public\";\nexport { generateParserFactory, generateParserModule } from \"./generate/generate_public\";\nvar Parser = /** @class */ (function () {\n function Parser() {\n throw new Error(\"The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.\\t\\n\" +\n \"See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0\");\n }\n return Parser;\n}());\nexport { Parser };\n//# sourceMappingURL=api.js.map","const {createToken, Lexer} = require('chevrotain');\r\nconst FormulaError = require('../formulas/error')\r\n\r\n// the vocabulary will be exported and used in the Parser definition.\r\nconst tokenVocabulary = {};\r\n\r\nconst WhiteSpace = createToken({\r\n name: 'WhiteSpace',\r\n pattern: /\\s+/,\r\n group: Lexer.SKIPPED,\r\n});\r\n\r\nconst String = createToken({\r\n name: 'String',\r\n pattern: /\"(\"\"|[^\"])*\"/\r\n});\r\n\r\nconst SingleQuotedString = createToken({\r\n name: 'SingleQuotedString',\r\n pattern: /'(''|[^'])*'/\r\n});\r\n\r\nconst SheetQuoted = createToken({\r\n name: 'SheetQuoted',\r\n pattern: /'((?![\\\\\\/\\[\\]*?:]).)+?'!/\r\n});\r\n\r\nconst Function = createToken({\r\n name: 'Function',\r\n pattern: /[A-Za-z_]+[A-Za-z_0-9.]*\\(/\r\n});\r\n\r\nconst FormulaErrorT = createToken({\r\n name: 'FormulaErrorT',\r\n pattern: /#NULL!|#DIV\\/0!|#VALUE!|#NAME\\?|#NUM!|#N\\/A/\r\n});\r\n\r\nconst RefError = createToken({\r\n name: 'RefError',\r\n pattern: /#REF!/\r\n});\r\n\r\nconst Name = createToken({\r\n name: 'Name',\r\n pattern: /[a-zA-Z_][a-zA-Z0-9_.?]*/,\r\n // longer_alt: RangeColumn // e.g. A:AA\r\n});\r\n\r\nconst Sheet = createToken({\r\n name: 'Sheet',\r\n pattern: /[A-Za-z_.\\d\\u007F-\\uFFFF]+!/\r\n});\r\n\r\nconst Cell = createToken({\r\n name: 'Cell',\r\n pattern: /[$]?[A-Za-z]{1,3}[$]?[1-9][0-9]*/,\r\n longer_alt: Name\r\n});\r\n\r\nconst Number = createToken({\r\n name: 'Number',\r\n pattern: /[0-9]+[.]?[0-9]*([eE][+\\-][0-9]+)?/\r\n});\r\n\r\nconst Boolean = createToken({\r\n name: 'Boolean',\r\n pattern: /TRUE|FALSE/i\r\n});\r\n\r\nconst Column = createToken({\r\n name: 'Column',\r\n pattern: /[$]?[A-Za-z]{1,3}/,\r\n longer_alt: Name\r\n});\r\n\r\n\r\n/**\r\n * Symbols and operators\r\n */\r\nconst At = createToken({\r\n name: 'At',\r\n pattern: /@/\r\n});\r\n\r\nconst Comma = createToken({\r\n name: 'Comma',\r\n pattern: /,/\r\n});\r\n\r\nconst Colon = createToken({\r\n name: 'Colon',\r\n pattern: /:/\r\n});\r\n\r\nconst Semicolon = createToken({\r\n name: 'Semicolon',\r\n pattern: /;/\r\n});\r\n\r\nconst OpenParen = createToken({\r\n name: 'OpenParen',\r\n pattern: /\\(/\r\n});\r\n\r\nconst CloseParen = createToken({\r\n name: 'CloseParen',\r\n pattern: /\\)/\r\n});\r\n\r\nconst OpenSquareParen = createToken({\r\n name: 'OpenSquareParen',\r\n pattern: /\\[/\r\n});\r\n\r\nconst CloseSquareParen = createToken({\r\n name: 'CloseSquareParen',\r\n pattern: /]/\r\n});\r\n\r\nconst ExclamationMark = createToken({\r\n name: 'exclamationMark',\r\n pattern: /!/\r\n});\r\n\r\nconst OpenCurlyParen = createToken({\r\n name: 'OpenCurlyParen',\r\n pattern: /{/\r\n});\r\n\r\nconst CloseCurlyParen = createToken({\r\n name: 'CloseCurlyParen',\r\n pattern: /}/\r\n});\r\n\r\nconst QuoteS = createToken({\r\n name: 'QuoteS',\r\n pattern: /'/\r\n});\r\n\r\n\r\nconst MulOp = createToken({\r\n name: 'MulOp',\r\n pattern: /\\*/\r\n});\r\n\r\nconst PlusOp = createToken({\r\n name: 'PlusOp',\r\n pattern: /\\+/\r\n});\r\n\r\nconst DivOp = createToken({\r\n name: 'DivOp',\r\n pattern: /\\//\r\n});\r\n\r\nconst MinOp = createToken({\r\n name: 'MinOp',\r\n pattern: /-/\r\n});\r\n\r\nconst ConcatOp = createToken({\r\n name: 'ConcatOp',\r\n pattern: /&/\r\n});\r\n\r\nconst ExOp = createToken({\r\n name: 'ExOp',\r\n pattern: /\\^/\r\n});\r\n\r\nconst PercentOp = createToken({\r\n name: 'PercentOp',\r\n pattern: /%/\r\n});\r\n\r\nconst GtOp = createToken({\r\n name: 'GtOp',\r\n pattern: />/\r\n});\r\n\r\nconst EqOp = createToken({\r\n name: 'EqOp',\r\n pattern: /=/\r\n});\r\n\r\nconst LtOp = createToken({\r\n name: 'LtOp',\r\n pattern: //\r\n});\r\n\r\nconst GteOp = createToken({\r\n name: 'GteOp',\r\n pattern: />=/\r\n});\r\n\r\nconst LteOp = createToken({\r\n name: 'LteOp',\r\n pattern: /<=/\r\n});\r\n\r\n// The order of tokens is important\r\nconst allTokens = [\r\n\r\n WhiteSpace,\r\n String,\r\n SheetQuoted,\r\n SingleQuotedString,\r\n Function,\r\n FormulaErrorT,\r\n RefError,\r\n Sheet,\r\n Cell,\r\n Boolean,\r\n Column,\r\n Name,\r\n Number,\r\n\r\n At,\r\n Comma,\r\n Colon,\r\n Semicolon,\r\n OpenParen,\r\n CloseParen,\r\n OpenSquareParen,\r\n CloseSquareParen,\r\n // ExclamationMark,\r\n OpenCurlyParen,\r\n CloseCurlyParen,\r\n QuoteS,\r\n MulOp,\r\n PlusOp,\r\n DivOp,\r\n MinOp,\r\n ConcatOp,\r\n ExOp,\r\n MulOp,\r\n PercentOp,\r\n NeqOp,\r\n GteOp,\r\n LteOp,\r\n GtOp,\r\n EqOp,\r\n LtOp,\r\n];\r\n\r\nconst SelectLexer = new Lexer(allTokens, {ensureOptimizations: true});\r\n\r\nallTokens.forEach(tokenType => {\r\n tokenVocabulary[tokenType.name] = tokenType\r\n});\r\n\r\nmodule.exports = {\r\n tokenVocabulary: tokenVocabulary,\r\n\r\n lex: function (inputText) {\r\n const lexingResult = SelectLexer.tokenize(inputText)\r\n\r\n if (lexingResult.errors.length > 0) {\r\n const error = lexingResult.errors[0];\r\n const line = error.line, column = error.column;\r\n let msg = '\\n' + inputText.split('\\n')[line - 1] + '\\n';\r\n msg += Array(column - 1).fill(' ').join('') + '^\\n';\r\n error.message = msg + `Error at position ${line}:${column}\\n` + error.message;\r\n error.errorLocation = {line, column};\r\n throw FormulaError.ERROR(error.message, error);\r\n }\r\n\r\n return lexingResult\r\n }\r\n};\r\n","const lexer = require('./lexing');\r\nconst {EmbeddedActionsParser} = require(\"chevrotain\");\r\nconst tokenVocabulary = lexer.tokenVocabulary;\r\nconst {\r\n String,\r\n SheetQuoted,\r\n ExcelRefFunction,\r\n ExcelConditionalRefFunction,\r\n Function,\r\n FormulaErrorT,\r\n RefError,\r\n Cell,\r\n Sheet,\r\n Name,\r\n Number,\r\n Boolean,\r\n Column,\r\n\r\n // At,\r\n Comma,\r\n Colon,\r\n Semicolon,\r\n OpenParen,\r\n CloseParen,\r\n // OpenSquareParen,\r\n // CloseSquareParen,\r\n // ExclamationMark,\r\n OpenCurlyParen,\r\n CloseCurlyParen,\r\n MulOp,\r\n PlusOp,\r\n DivOp,\r\n MinOp,\r\n ConcatOp,\r\n ExOp,\r\n PercentOp,\r\n NeqOp,\r\n GteOp,\r\n LteOp,\r\n GtOp,\r\n EqOp,\r\n LtOp\r\n} = lexer.tokenVocabulary;\r\n\r\nclass Parsing extends EmbeddedActionsParser {\r\n /**\r\n *\r\n * @param {FormulaParser|DepParser} context\r\n * @param {Utils} utils\r\n */\r\n constructor(context, utils) {\r\n super(tokenVocabulary, {\r\n outputCst: false,\r\n maxLookahead: 1,\r\n skipValidations: true,\r\n // traceInitPerf: true,\r\n });\r\n this.utils = utils;\r\n this.binaryOperatorsPrecedence = [\r\n ['^'],\r\n ['*', '/'],\r\n ['+', '-'],\r\n ['&'],\r\n ['<', '>', '=', '<>', '<=', '>='],\r\n ];\r\n const $ = this;\r\n\r\n // Adopted from https://github.com/spreadsheetlab/XLParser/blob/master/src/XLParser/ExcelFormulaGrammar.cs\r\n\r\n $.RULE('formulaWithBinaryOp', () => {\r\n const infixes = [];\r\n const values = [$.SUBRULE($.formulaWithPercentOp)];\r\n $.MANY(() => {\r\n // Caching Arrays of Alternatives\r\n // https://sap.github.io/chevrotain/docs/guide/performance.html#caching-arrays-of-alternatives\r\n infixes.push($.OR($.c1 ||\r\n (\r\n $.c1 = [\r\n {ALT: () => $.CONSUME(GtOp).image},\r\n {ALT: () => $.CONSUME(EqOp).image},\r\n {ALT: () => $.CONSUME(LtOp).image},\r\n {ALT: () => $.CONSUME(NeqOp).image},\r\n {ALT: () => $.CONSUME(GteOp).image},\r\n {ALT: () => $.CONSUME(LteOp).image},\r\n {ALT: () => $.CONSUME(ConcatOp).image},\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image},\r\n {ALT: () => $.CONSUME(MulOp).image},\r\n {ALT: () => $.CONSUME(DivOp).image},\r\n {ALT: () => $.CONSUME(ExOp).image}\r\n ]\r\n )));\r\n values.push($.SUBRULE2($.formulaWithPercentOp));\r\n });\r\n $.ACTION(() => {\r\n // evaluate\r\n for (const ops of this.binaryOperatorsPrecedence) {\r\n for (let index = 0, length = infixes.length; index < length; index++) {\r\n const infix = infixes[index];\r\n if (!ops.includes(infix)) continue;\r\n infixes.splice(index, 1);\r\n values.splice(index, 2, this.utils.applyInfix(values[index], infix, values[index + 1]));\r\n index--;\r\n length--;\r\n }\r\n }\r\n });\r\n\r\n return values[0];\r\n });\r\n\r\n $.RULE('plusMinusOp', () => $.OR([\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image}\r\n ]));\r\n\r\n $.RULE('formulaWithPercentOp', () => {\r\n let value = $.SUBRULE($.formulaWithUnaryOp);\r\n $.OPTION(() => {\r\n const postfix = $.CONSUME(PercentOp).image;\r\n value = $.ACTION(() => this.utils.applyPostfix(value, postfix));\r\n });\r\n return value;\r\n });\r\n\r\n $.RULE('formulaWithUnaryOp', () => {\r\n // support ++---3 => -3\r\n const prefixes = [];\r\n $.MANY(() => {\r\n const op = $.OR([\r\n {ALT: () => $.CONSUME(PlusOp).image},\r\n {ALT: () => $.CONSUME(MinOp).image}\r\n ]);\r\n prefixes.push(op);\r\n });\r\n const formula = $.SUBRULE($.formulaWithIntersect);\r\n if (prefixes.length > 0) return $.ACTION(() => this.utils.applyPrefix(prefixes, formula));\r\n return formula;\r\n });\r\n\r\n\r\n $.RULE('formulaWithIntersect', () => {\r\n // e.g. 'A1 A2 A3'\r\n let ref1 = $.SUBRULE($.formulaWithRange);\r\n const refs = [ref1];\r\n // console.log('check intersect')\r\n $.MANY({\r\n GATE: () => {\r\n // see https://github.com/SAP/chevrotain/blob/master/examples/grammars/css/css.js#L436-L441\r\n const prevToken = $.LA(0);\r\n const nextToken = $.LA(1);\r\n // This is the only place where the grammar is whitespace sensitive.\r\n return nextToken.startOffset > prevToken.endOffset + 1;\r\n },\r\n DEF: () => {\r\n refs.push($.SUBRULE3($.formulaWithRange));\r\n }\r\n });\r\n if (refs.length > 1) {\r\n return $.ACTION(() => $.ACTION(() => this.utils.applyIntersect(refs)))\r\n }\r\n return ref1;\r\n });\r\n\r\n $.RULE('formulaWithRange', () => {\r\n // e.g. 'A1:C3' or 'A1:A3:C4', can be any number of references, at lease 2\r\n const ref1 = $.SUBRULE($.formula);\r\n const refs = [ref1];\r\n $.MANY(() => {\r\n $.CONSUME(Colon);\r\n refs.push($.SUBRULE2($.formula));\r\n });\r\n if (refs.length > 1)\r\n return $.ACTION(() => $.ACTION(() => this.utils.applyRange(refs)));\r\n return ref1;\r\n });\r\n\r\n $.RULE('formula', () => $.OR9([\r\n {ALT: () => $.SUBRULE($.referenceWithoutInfix)},\r\n {ALT: () => $.SUBRULE($.paren)},\r\n {ALT: () => $.SUBRULE($.constant)},\r\n {ALT: () => $.SUBRULE($.functionCall)},\r\n {ALT: () => $.SUBRULE($.constantArray)},\r\n ]));\r\n\r\n $.RULE('paren', () => {\r\n // formula paren or union paren\r\n $.CONSUME(OpenParen);\r\n let result;\r\n const refs = [];\r\n refs.push($.SUBRULE($.formulaWithBinaryOp));\r\n $.MANY(() => {\r\n $.CONSUME(Comma);\r\n refs.push($.SUBRULE2($.formulaWithBinaryOp));\r\n });\r\n if (refs.length > 1)\r\n result = $.ACTION(() => this.utils.applyUnion(refs));\r\n else\r\n result = refs[0];\r\n\r\n $.CONSUME(CloseParen);\r\n return result;\r\n });\r\n\r\n $.RULE('constantArray', () => {\r\n // console.log('constantArray');\r\n const arr = [[]];\r\n let currentRow = 0;\r\n $.CONSUME(OpenCurlyParen);\r\n\r\n // array must contain at least one item\r\n arr[currentRow].push($.SUBRULE($.constantForArray));\r\n $.MANY(() => {\r\n const sep = $.OR([\r\n {ALT: () => $.CONSUME(Comma).image},\r\n {ALT: () => $.CONSUME(Semicolon).image}\r\n ]);\r\n const constant = $.SUBRULE2($.constantForArray);\r\n if (sep === ',') {\r\n arr[currentRow].push(constant)\r\n } else {\r\n currentRow++;\r\n arr[currentRow] = [];\r\n arr[currentRow].push(constant)\r\n }\r\n });\r\n\r\n $.CONSUME(CloseCurlyParen);\r\n\r\n return $.ACTION(() => this.utils.toArray(arr));\r\n });\r\n\r\n /**\r\n * Used in array\r\n */\r\n $.RULE('constantForArray', () => $.OR([\r\n {\r\n ALT: () => {\r\n const prefix = $.OPTION(() => $.SUBRULE($.plusMinusOp));\r\n const image = $.CONSUME(Number).image;\r\n const number = $.ACTION(() => this.utils.toNumber(image));\r\n if (prefix)\r\n return $.ACTION(() => this.utils.applyPrefix([prefix], number));\r\n return number;\r\n }\r\n }, {\r\n ALT: () => {\r\n const str = $.CONSUME(String).image;\r\n return $.ACTION(() => this.utils.toString(str));\r\n }\r\n }, {\r\n ALT: () => {\r\n const bool = $.CONSUME(Boolean).image;\r\n return $.ACTION(() => this.utils.toBoolean(bool));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(FormulaErrorT).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(RefError).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n },\r\n ]));\r\n\r\n $.RULE('constant', () => $.OR([\r\n {\r\n ALT: () => {\r\n const number = $.CONSUME(Number).image;\r\n return $.ACTION(() => this.utils.toNumber(number));\r\n }\r\n }, {\r\n ALT: () => {\r\n const str = $.CONSUME(String).image;\r\n return $.ACTION(() => this.utils.toString(str));\r\n }\r\n }, {\r\n ALT: () => {\r\n const bool = $.CONSUME(Boolean).image;\r\n return $.ACTION(() => this.utils.toBoolean(bool));\r\n }\r\n }, {\r\n ALT: () => {\r\n const err = $.CONSUME(FormulaErrorT).image;\r\n return $.ACTION(() => this.utils.toError(err));\r\n }\r\n },\r\n ]));\r\n\r\n $.RULE('functionCall', () => {\r\n const functionName = $.CONSUME(Function).image.slice(0, -1);\r\n // console.log('functionName', functionName);\r\n const args = $.SUBRULE($.arguments);\r\n $.CONSUME(CloseParen);\r\n // dependency parser won't call function.\r\n return $.ACTION(() => context.callFunction(functionName, args));\r\n\r\n });\r\n\r\n $.RULE('arguments', () => {\r\n // console.log('try arguments')\r\n\r\n // allows ',' in the front\r\n $.MANY2(() => {\r\n $.CONSUME2(Comma);\r\n });\r\n const args = [];\r\n // allows empty arguments\r\n $.OPTION(() => {\r\n args.push($.SUBRULE($.formulaWithBinaryOp));\r\n $.MANY(() => {\r\n $.CONSUME1(Comma);\r\n args.push(null); // e.g. ROUND(1.5,)\r\n $.OPTION3(() => {\r\n args.pop();\r\n args.push($.SUBRULE2($.formulaWithBinaryOp))\r\n });\r\n });\r\n });\r\n return args;\r\n });\r\n\r\n $.RULE('referenceWithoutInfix', () => $.OR([\r\n\r\n {ALT: () => $.SUBRULE($.referenceItem)},\r\n\r\n {\r\n // sheet name prefix\r\n ALT: () => {\r\n // console.log('try sheetName');\r\n const sheetName = $.SUBRULE($.prefixName);\r\n // console.log('sheetName', sheetName);\r\n const referenceItem = $.SUBRULE2($.formulaWithRange);\r\n\r\n $.ACTION(() => {\r\n if (this.utils.isFormulaError(referenceItem))\r\n return referenceItem;\r\n referenceItem.ref.sheet = sheetName\r\n });\r\n return referenceItem;\r\n }\r\n },\r\n\r\n // {ALT: () => $.SUBRULE('dynamicDataExchange')},\r\n ]));\r\n\r\n $.RULE('referenceItem', () => $.OR([\r\n {\r\n ALT: () => {\r\n const address = $.CONSUME(Cell).image;\r\n return $.ACTION(() => this.utils.parseCellAddress(address));\r\n }\r\n },\r\n {\r\n ALT: () => {\r\n const name = $.CONSUME(Name).image;\r\n return $.ACTION(() => context.getVariable(name))\r\n }\r\n },\r\n {\r\n ALT: () => {\r\n const column = $.CONSUME(Column).image;\r\n return $.ACTION(() => this.utils.parseCol(column))\r\n }\r\n },\r\n // A row check should be here, but the token is same with Number,\r\n // In other to resolve ambiguities, I leave this empty, and\r\n // parse the number to row number when needed.\r\n {\r\n ALT: () => {\r\n const err = $.CONSUME(RefError).image;\r\n return $.ACTION(() => this.utils.toError(err))\r\n }\r\n },\r\n // {ALT: () => $.SUBRULE($.udfFunctionCall)},\r\n // {ALT: () => $.SUBRULE($.structuredReference)},\r\n ]));\r\n\r\n $.RULE('prefixName', () => $.OR([\r\n {ALT: () => $.CONSUME(Sheet).image.slice(0, -1)},\r\n {ALT: () => $.CONSUME(SheetQuoted).image.slice(1, -2).replace(/''/g, \"'\")},\r\n ]));\r\n\r\n this.performSelfAnalysis();\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n Parser: Parsing,\r\n};\r\n","const FormulaError = require('../formulas/error');\r\nconst {Address} = require('../formulas/helpers');\r\nconst {Prefix, Postfix, Infix, Operators} = require('../formulas/operators');\r\nconst Collection = require('./type/collection');\r\nconst MAX_ROW = 1048576, MAX_COLUMN = 16384;\r\nconst {NotAllInputParsedException} = require('chevrotain');\r\n\r\nclass Utils {\r\n\r\n constructor(context) {\r\n this.context = context;\r\n }\r\n\r\n columnNameToNumber(columnName) {\r\n return Address.columnNameToNumber(columnName);\r\n }\r\n\r\n /**\r\n * Parse the cell address only.\r\n * @param {string} cellAddress\r\n * @return {{ref: {col: number, address: string, row: number}}}\r\n */\r\n parseCellAddress(cellAddress) {\r\n const res = cellAddress.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);\r\n // console.log('parseCellAddress', cellAddress);\r\n return {\r\n ref: {\r\n address: res[0],\r\n col: this.columnNameToNumber(res[2]),\r\n row: +res[4]\r\n },\r\n };\r\n }\r\n\r\n parseRow(row) {\r\n const rowNum = +row;\r\n if (!Number.isInteger(rowNum))\r\n throw Error('Row number must be integer.');\r\n return {\r\n ref: {\r\n col: undefined,\r\n row: +row\r\n },\r\n };\r\n }\r\n\r\n parseCol(col) {\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(col),\r\n row: undefined,\r\n },\r\n };\r\n }\r\n\r\n parseColRange(col1, col2) {\r\n // const res = colRange.match(/([$]?)([A-Za-z]{1,3}):([$]?)([A-Za-z]{1,4})/);\r\n col1 = this.columnNameToNumber(col1);\r\n col2 = this.columnNameToNumber(col2);\r\n return {\r\n ref: {\r\n from: {\r\n col: Math.min(col1, col2),\r\n row: null\r\n },\r\n to: {\r\n col: Math.max(col1, col2),\r\n row: null\r\n }\r\n }\r\n }\r\n }\r\n\r\n parseRowRange(row1, row2) {\r\n // const res = rowRange.match(/([$]?)([1-9][0-9]*):([$]?)([1-9][0-9]*)/);\r\n return {\r\n ref: {\r\n from: {\r\n col: null,\r\n row: Math.min(row1, row2),\r\n },\r\n to: {\r\n col: null,\r\n row: Math.max(row1, row2),\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n\r\n _applyPrefix(prefixes, val, isArray) {\r\n if (this.isFormulaError(val))\r\n return val;\r\n return Prefix.unaryOp(prefixes, val, isArray);\r\n }\r\n\r\n async applyPrefixAsync(prefixes, value) {\r\n const {val, isArray} = this.extractRefValue(await value);\r\n return this._applyPrefix(prefixes, val, isArray);\r\n }\r\n\r\n /**\r\n * Apply + or - unary prefix.\r\n * @param {Array.} prefixes\r\n * @param {*} value\r\n * @return {*}\r\n */\r\n applyPrefix(prefixes, value) {\r\n // console.log('applyPrefix', prefixes, value);\r\n if (this.context.async) {\r\n return this.applyPrefixAsync(prefixes, value);\r\n } else {\r\n const {val, isArray} = this.extractRefValue(value);\r\n return this._applyPrefix(prefixes, val, isArray);\r\n }\r\n }\r\n\r\n _applyPostfix(val, isArray, postfix) {\r\n if (this.isFormulaError(val))\r\n return val;\r\n return Postfix.percentOp(val, postfix, isArray);\r\n }\r\n\r\n async applyPostfixAsync(value, postfix) {\r\n const {val, isArray} = this.extractRefValue(await value);\r\n return this._applyPostfix(val, isArray, postfix);\r\n }\r\n\r\n applyPostfix(value, postfix) {\r\n // console.log('applyPostfix', value, postfix);\r\n if (this.context.async) {\r\n return this.applyPostfixAsync(value, postfix);\r\n } else {\r\n const {val, isArray} = this.extractRefValue(value);\r\n return this._applyPostfix(val, isArray, postfix)\r\n }\r\n }\r\n\r\n _applyInfix(res1, infix, res2) {\r\n const val1 = res1.val, isArray1 = res1.isArray;\r\n const val2 = res2.val, isArray2 = res2.isArray;\r\n if (this.isFormulaError(val1))\r\n return val1;\r\n if (this.isFormulaError(val2))\r\n return val2;\r\n if (Operators.compareOp.includes(infix))\r\n return Infix.compareOp(val1, infix, val2, isArray1, isArray2);\r\n else if (Operators.concatOp.includes(infix))\r\n return Infix.concatOp(val1, infix, val2, isArray1, isArray2);\r\n else if (Operators.mathOp.includes(infix))\r\n return Infix.mathOp(val1, infix, val2, isArray1, isArray2);\r\n else\r\n throw new Error(`Unrecognized infix: ${infix}`);\r\n }\r\n\r\n async applyInfixAsync(value1, infix, value2) {\r\n const res1 = this.extractRefValue(await value1);\r\n const res2 = this.extractRefValue(await value2);\r\n return this._applyInfix(res1, infix, res2)\r\n }\r\n\r\n applyInfix(value1, infix, value2) {\r\n if (this.context.async) {\r\n return this.applyInfixAsync(value1, infix, value2)\r\n } else {\r\n const res1 = this.extractRefValue(value1);\r\n const res2 = this.extractRefValue(value2);\r\n return this._applyInfix(res1, infix, res2)\r\n }\r\n }\r\n\r\n applyIntersect(refs) {\r\n // console.log('applyIntersect', refs);\r\n if (this.isFormulaError(refs[0]))\r\n return refs[0];\r\n if (!refs[0].ref)\r\n throw Error(`Expecting a reference, but got ${refs[0]}.`);\r\n // a intersection will keep track of references, value won't be retrieved here.\r\n let maxRow, maxCol, minRow, minCol, sheet, res; // index start from 1\r\n // first time setup\r\n const ref = refs.shift().ref;\r\n sheet = ref.sheet;\r\n if (!ref.from) {\r\n // check whole row/col reference\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n\r\n // cell ref\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n // update\r\n maxRow = Math.max(ref.from.row, ref.to.row);\r\n minRow = Math.min(ref.from.row, ref.to.row);\r\n maxCol = Math.max(ref.from.col, ref.to.col);\r\n minCol = Math.min(ref.from.col, ref.to.col);\r\n }\r\n\r\n let err;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n ref = ref.ref;\r\n if (!ref) throw Error(`Expecting a reference, but got ${ref}.`);\r\n if (!ref.from) {\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n // cell ref\r\n if (ref.row > maxRow || ref.row < minRow || ref.col > maxCol || ref.col < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n const refMaxRow = Math.max(ref.from.row, ref.to.row);\r\n const refMinRow = Math.min(ref.from.row, ref.to.row);\r\n const refMaxCol = Math.max(ref.from.col, ref.to.col);\r\n const refMinCol = Math.min(ref.from.col, ref.to.col);\r\n if (refMinRow > maxRow || refMaxRow < minRow || refMinCol > maxCol || refMaxCol < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n // update\r\n maxRow = Math.min(maxRow, refMaxRow);\r\n minRow = Math.max(minRow, refMinRow);\r\n maxCol = Math.min(maxCol, refMaxCol);\r\n minCol = Math.max(minCol, refMinCol);\r\n }\r\n });\r\n if (err) return err;\r\n // check if the ref can be reduced to cell reference\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n sheet,\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n sheet,\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n\r\n if (!res.ref.sheet)\r\n delete res.ref.sheet;\r\n return res;\r\n }\r\n\r\n applyUnion(refs) {\r\n const collection = new Collection();\r\n for (let i = 0; i < refs.length; i++) {\r\n if (this.isFormulaError(refs[i]))\r\n return refs[i];\r\n collection.add(this.extractRefValue(refs[i]).val, refs[i]);\r\n }\r\n\r\n // console.log('applyUnion', unions);\r\n return collection;\r\n }\r\n\r\n /**\r\n * Apply multiple references, e.g. A1:B3:C8:A:1:.....\r\n * @param refs\r\n // * @return {{ref: {from: {col: number, row: number}, to: {col: number, row: number}}}}\r\n */\r\n applyRange(refs) {\r\n let res, maxRow = -1, maxCol = -1, minRow = MAX_ROW + 1, minCol = MAX_COLUMN + 1;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n // row ref is saved as number, parse the number to row ref here\r\n if (typeof ref === 'number') {\r\n ref = this.parseRow(ref);\r\n }\r\n ref = ref.ref;\r\n // check whole row/col reference\r\n if (ref.row === undefined) {\r\n minRow = 1;\r\n maxRow = MAX_ROW\r\n }\r\n if (ref.col === undefined) {\r\n minCol = 1;\r\n maxCol = MAX_COLUMN;\r\n }\r\n\r\n if (ref.row > maxRow)\r\n maxRow = ref.row;\r\n if (ref.row < minRow)\r\n minRow = ref.row;\r\n if (ref.col > maxCol)\r\n maxCol = ref.col;\r\n if (ref.col < minCol)\r\n minCol = ref.col;\r\n });\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Throw away the refs, and retrieve the value.\r\n * @return {{val: *, isArray: boolean}}\r\n */\r\n extractRefValue(obj) {\r\n let res = obj, isArray = false;\r\n if (Array.isArray(res))\r\n isArray = true;\r\n if (obj.ref) {\r\n // can be number or array\r\n return {val: this.context.retrieveRef(obj), isArray};\r\n\r\n }\r\n return {val: res, isArray};\r\n }\r\n\r\n /**\r\n *\r\n * @param array\r\n * @return {Array}\r\n */\r\n toArray(array) {\r\n // TODO: check if array is valid\r\n // console.log('toArray', array);\r\n return array;\r\n }\r\n\r\n /**\r\n * @param {string} number\r\n * @return {number}\r\n */\r\n toNumber(number) {\r\n return Number(number);\r\n }\r\n\r\n /**\r\n * @param {string} string\r\n * @return {string}\r\n */\r\n toString(string) {\r\n return string.substring(1, string.length - 1) .replace(/\"\"/g, '\"');\r\n }\r\n\r\n /**\r\n * @param {string} bool\r\n * @return {boolean}\r\n */\r\n toBoolean(bool) {\r\n return bool === 'TRUE';\r\n }\r\n\r\n /**\r\n * Parse an error.\r\n * @param {string} error\r\n * @return {string}\r\n */\r\n toError(error) {\r\n return new FormulaError(error.toUpperCase());\r\n }\r\n\r\n isFormulaError(obj) {\r\n return obj instanceof FormulaError;\r\n }\r\n\r\n static formatChevrotainError(error, inputText) {\r\n let line, column, msg = '';\r\n // e.g. SUM(1))\r\n if (error instanceof NotAllInputParsedException) {\r\n line = error.token.startLine;\r\n column = error.token.startColumn;\r\n } else {\r\n line = error.previousToken.startLine;\r\n column = error.previousToken.startColumn + 1;\r\n }\r\n\r\n msg += '\\n' + inputText.split('\\n')[line - 1] + '\\n';\r\n msg += Array(column - 1).fill(' ').join('') + '^\\n';\r\n msg += `Error at position ${line}:${column}\\n` + error.message;\r\n error.errorLocation = {line, column};\r\n return FormulaError.ERROR(msg, error);\r\n }\r\n\r\n}\r\n\r\nmodule.exports = Utils;\r\n","const TextFunctions = require('../formulas/functions/text');\r\nconst MathFunctions = require('../formulas/functions/math');\r\nconst TrigFunctions = require('../formulas/functions/trigonometry');\r\nconst LogicalFunctions = require('../formulas/functions/logical');\r\nconst EngFunctions = require('../formulas/functions/engineering');\r\nconst ReferenceFunctions = require('../formulas/functions/reference');\r\nconst InformationFunctions = require('../formulas/functions/information');\r\nconst StatisticalFunctions = require('../formulas/functions/statistical');\r\nconst DateFunctions = require('../formulas/functions/date');\r\nconst WebFunctions = require('../formulas/functions/web');\r\nconst FormulaError = require('../formulas/error');\r\nconst {FormulaHelpers} = require('../formulas/helpers');\r\nconst {Parser, allTokens} = require('./parsing');\r\nconst lexer = require('./lexing');\r\nconst Utils = require('./utils');\r\n\r\n/**\r\n * A Excel Formula Parser & Evaluator\r\n */\r\nclass FormulaParser {\r\n\r\n /**\r\n * @param {{functions: {}, functionsNeedContext: {}, onVariable: function, onCell: function, onRange: function}} [config]\r\n * @param isTest - is in testing environment\r\n */\r\n constructor(config, isTest = false) {\r\n this.logs = [];\r\n this.isTest = isTest;\r\n this.utils = new Utils(this);\r\n config = Object.assign({\r\n functions: {},\r\n functionsNeedContext: {},\r\n onVariable: () => null,\r\n onCell: () => 0,\r\n onRange: () => [[0]],\r\n }, config);\r\n\r\n this.onVariable = config.onVariable;\r\n this.functions = Object.assign({}, DateFunctions, StatisticalFunctions, InformationFunctions, ReferenceFunctions,\r\n EngFunctions, LogicalFunctions, TextFunctions, MathFunctions, TrigFunctions, WebFunctions,\r\n config.functions, config.functionsNeedContext);\r\n this.onRange = config.onRange;\r\n this.onCell = config.onCell;\r\n\r\n // functions treat null as 0, other functions treats null as \"\"\r\n this.funsNullAs0 = Object.keys(MathFunctions)\r\n .concat(Object.keys(TrigFunctions))\r\n .concat(Object.keys(LogicalFunctions))\r\n .concat(Object.keys(EngFunctions))\r\n .concat(Object.keys(ReferenceFunctions))\r\n .concat(Object.keys(StatisticalFunctions))\r\n .concat(Object.keys(DateFunctions));\r\n\r\n // functions need context and don't need to retrieve references\r\n this.funsNeedContextAndNoDataRetrieve = ['ROW', 'ROWS', 'COLUMN', 'COLUMNS', 'SUMIF', 'INDEX', 'AVERAGEIF', 'IF'];\r\n\r\n // functions need parser context\r\n this.funsNeedContext = [...Object.keys(config.functionsNeedContext), ...this.funsNeedContextAndNoDataRetrieve,\r\n 'INDEX', 'OFFSET', 'INDIRECT', 'IF', 'CHOOSE', 'WEBSERVICE'];\r\n\r\n // functions preserve reference in arguments\r\n this.funsPreserveRef = Object.keys(InformationFunctions);\r\n\r\n this.parser = new Parser(this, this.utils);\r\n }\r\n\r\n /**\r\n * Get all lexing token names. Webpack needs this.\r\n * @return {Array.} - All token names that should not be minimized.\r\n */\r\n static get allTokens() {\r\n return allTokens;\r\n }\r\n\r\n /**\r\n * Get value from the cell reference\r\n * @param ref\r\n * @return {*}\r\n */\r\n getCell(ref) {\r\n // console.log('get cell', JSON.stringify(ref));\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n return this.onCell(ref);\r\n }\r\n\r\n /**\r\n * Get values from the range reference.\r\n * @param ref\r\n * @return {*}\r\n */\r\n getRange(ref) {\r\n // console.log('get range', JSON.stringify(ref));\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n return this.onRange(ref)\r\n }\r\n\r\n /**\r\n * TODO:\r\n * Get references or values from a user defined variable.\r\n * @param name\r\n * @return {*}\r\n */\r\n getVariable(name) {\r\n // console.log('get variable', name);\r\n const res = {ref: this.onVariable(name, this.position.sheet, this.position)};\r\n if (res.ref == null)\r\n return FormulaError.NAME;\r\n return res;\r\n }\r\n\r\n /**\r\n * Retrieve values from the given reference.\r\n * @param valueOrRef\r\n * @return {*}\r\n */\r\n retrieveRef(valueOrRef) {\r\n if (FormulaHelpers.isRangeRef(valueOrRef)) {\r\n return this.getRange(valueOrRef.ref);\r\n }\r\n if (FormulaHelpers.isCellRef(valueOrRef)) {\r\n return this.getCell(valueOrRef.ref)\r\n }\r\n return valueOrRef;\r\n }\r\n\r\n /**\r\n * Call an excel function.\r\n * @param name - Function name.\r\n * @param args - Arguments that pass to the function.\r\n * @return {*}\r\n */\r\n _callFunction(name, args) {\r\n if (name.indexOf('_xlfn.') === 0)\r\n name = name.slice(6);\r\n name = name.toUpperCase();\r\n // if one arg is null, it means 0 or \"\" depends on the function it calls\r\n const nullValue = this.funsNullAs0.includes(name) ? 0 : '';\r\n\r\n if (!this.funsNeedContextAndNoDataRetrieve.includes(name)) {\r\n // retrieve reference\r\n args = args.map(arg => {\r\n if (arg === null)\r\n return {value: nullValue, isArray: false, omitted: true};\r\n const res = this.utils.extractRefValue(arg);\r\n\r\n if (this.funsPreserveRef.includes(name)) {\r\n return {value: res.val, isArray: res.isArray, ref: arg.ref};\r\n }\r\n return {\r\n value: res.val,\r\n isArray: res.isArray,\r\n isRangeRef: !!FormulaHelpers.isRangeRef(arg),\r\n isCellRef: !!FormulaHelpers.isCellRef(arg)\r\n };\r\n });\r\n }\r\n // console.log('callFunction', name, args)\r\n\r\n if (this.functions[name]) {\r\n let res;\r\n try {\r\n if (!this.funsNeedContextAndNoDataRetrieve.includes(name) && !this.funsNeedContext.includes(name))\r\n res = (this.functions[name](...args));\r\n else\r\n res = (this.functions[name](this, ...args));\r\n } catch (e) {\r\n // allow functions throw FormulaError, this make functions easier to implement!\r\n if (e instanceof FormulaError) {\r\n return e;\r\n } else {\r\n throw e;\r\n }\r\n }\r\n if (res === undefined) {\r\n // console.log(`Function ${name} may be not implemented.`);\r\n if (this.isTest) {\r\n if (!this.logs.includes(name)) this.logs.push(name);\r\n return {value: 0, ref: {}};\r\n }\r\n throw FormulaError.NOT_IMPLEMENTED(name);\r\n }\r\n return res;\r\n } else {\r\n // console.log(`Function ${name} is not implemented`);\r\n if (this.isTest) {\r\n if (!this.logs.includes(name)) this.logs.push(name);\r\n return {value: 0, ref: {}};\r\n }\r\n throw FormulaError.NOT_IMPLEMENTED(name);\r\n }\r\n }\r\n\r\n async callFunctionAsync(name, args) {\r\n const awaitedArgs = [];\r\n for (const arg of args) {\r\n awaitedArgs.push(await arg);\r\n }\r\n const res = await this._callFunction(name, awaitedArgs);\r\n return FormulaHelpers.checkFunctionResult(res)\r\n }\r\n\r\n callFunction(name, args) {\r\n if (this.async) {\r\n return this.callFunctionAsync(name, args);\r\n } else {\r\n const res = this._callFunction(name, args);\r\n return FormulaHelpers.checkFunctionResult(res);\r\n }\r\n }\r\n\r\n /**\r\n * Return currently supported functions.\r\n * @return {this}\r\n */\r\n supportedFunctions() {\r\n const supported = [];\r\n const functions = Object.keys(this.functions);\r\n functions.forEach(fun => {\r\n try {\r\n const res = this.functions[fun](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\r\n if (res === undefined) return;\r\n supported.push(fun);\r\n } catch (e) {\r\n if (e instanceof Error)\r\n supported.push(fun);\r\n }\r\n });\r\n return supported.sort();\r\n }\r\n\r\n /**\r\n * Check and return the appropriate formula result.\r\n * @param result\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array\r\n * @return {*}\r\n */\r\n checkFormulaResult(result, allowReturnArray = false) {\r\n const type = typeof result;\r\n // number\r\n if (type === 'number') {\r\n if (isNaN(result)) {\r\n return FormulaError.VALUE;\r\n } else if (!isFinite(result)) {\r\n return FormulaError.NUM;\r\n }\r\n result += 0; // make -0 to 0\r\n } else if (type === 'object') {\r\n if (result instanceof FormulaError)\r\n return result;\r\n if (allowReturnArray) {\r\n if (result.ref) {\r\n result = this.retrieveRef(result);\r\n }\r\n // Disallow union, and other unknown data types.\r\n // e.g. `=(A1:C1, A2:E9)` -> #VALUE!\r\n if (typeof result === 'object' && !Array.isArray(result) && result != null) {\r\n return FormulaError.VALUE;\r\n }\r\n\r\n } else {\r\n if (result.ref && result.ref.row && !result.ref.from) {\r\n // single cell reference\r\n result = this.retrieveRef(result);\r\n } else if (result.ref && result.ref.from && result.ref.from.col === result.ref.to.col) {\r\n // single Column reference\r\n result = this.retrieveRef({\r\n ref: {\r\n row: result.ref.from.row, col: result.ref.from.col\r\n }\r\n });\r\n } else if (Array.isArray(result)) {\r\n result = result[0][0]\r\n } else {\r\n // array, range reference, union collections\r\n return FormulaError.VALUE;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse an excel formula.\r\n * @param {string} inputText\r\n * @param {{row: number, col: number}} [position] - The position of the parsed formula\r\n * e.g. {row: 1, col: 1}\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,\r\n * or data validation formulas.\r\n * @returns {*}\r\n */\r\n parse(inputText, position, allowReturnArray = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.position = position;\r\n this.async = false;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n let res;\r\n try {\r\n res = this.parser.formulaWithBinaryOp();\r\n res = this.checkFormulaResult(res, allowReturnArray);\r\n if (res instanceof FormulaError) {\r\n return res;\r\n }\r\n } catch (e) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n if (this.parser.errors.length > 0) {\r\n const error = this.parser.errors[0];\r\n throw Utils.formatChevrotainError(error, inputText);\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Parse an excel formula asynchronously.\r\n * Use when providing custom async functions.\r\n * @param {string} inputText\r\n * @param {{row: number, col: number}} [position] - The position of the parsed formula\r\n * e.g. {row: 1, col: 1}\r\n * @param {boolean} [allowReturnArray] - If the formula can return an array. Useful when parsing array formulas,\r\n * or data validation formulas.\r\n * @returns {*}\r\n */\r\n async parseAsync(inputText, position, allowReturnArray = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.position = position;\r\n this.async = true;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n let res;\r\n try {\r\n res = await this.parser.formulaWithBinaryOp();\r\n res = this.checkFormulaResult(res, allowReturnArray);\r\n if (res instanceof FormulaError) {\r\n return res;\r\n }\r\n } catch (e) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n if (this.parser.errors.length > 0) {\r\n const error = this.parser.errors[0];\r\n throw Utils.formatChevrotainError(error, inputText);\r\n }\r\n return res;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n FormulaParser,\r\n FormulaHelpers,\r\n};\r\n","const FormulaError = require('../../formulas/error');\r\nconst {FormulaHelpers, Types, Address} = require('../../formulas/helpers');\r\nconst {Prefix, Postfix, Infix, Operators} = require('../../formulas/operators');\r\nconst Collection = require('../type/collection');\r\nconst MAX_ROW = 1048576, MAX_COLUMN = 16384;\r\n\r\nclass Utils {\r\n\r\n constructor(context) {\r\n this.context = context;\r\n }\r\n\r\n columnNameToNumber(columnName) {\r\n return Address.columnNameToNumber(columnName);\r\n }\r\n\r\n /**\r\n * Parse the cell address only.\r\n * @param {string} cellAddress\r\n * @return {{ref: {col: number, address: string, row: number}}}\r\n */\r\n parseCellAddress(cellAddress) {\r\n const res = cellAddress.match(/([$]?)([A-Za-z]{1,3})([$]?)([1-9][0-9]*)/);\r\n // console.log('parseCellAddress', cellAddress);\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(res[2]),\r\n row: +res[4]\r\n },\r\n };\r\n }\r\n\r\n parseRow(row) {\r\n const rowNum = +row;\r\n if (!Number.isInteger(rowNum))\r\n throw Error('Row number must be integer.');\r\n return {\r\n ref: {\r\n col: undefined,\r\n row: +row\r\n },\r\n };\r\n }\r\n\r\n parseCol(col) {\r\n return {\r\n ref: {\r\n col: this.columnNameToNumber(col),\r\n row: undefined,\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * Apply + or - unary prefix.\r\n * @param {Array.} prefixes\r\n * @param {*} value\r\n * @return {*}\r\n */\r\n applyPrefix(prefixes, value) {\r\n this.extractRefValue(value);\r\n return 0;\r\n }\r\n\r\n applyPostfix(value, postfix) {\r\n this.extractRefValue(value);\r\n return 0\r\n }\r\n\r\n applyInfix(value1, infix, value2) {\r\n this.extractRefValue(value1);\r\n this.extractRefValue(value2);\r\n return 0;\r\n }\r\n\r\n applyIntersect(refs) {\r\n // console.log('applyIntersect', refs);\r\n if (this.isFormulaError(refs[0]))\r\n return refs[0];\r\n if (!refs[0].ref)\r\n throw Error(`Expecting a reference, but got ${refs[0]}.`);\r\n // a intersection will keep track of references, value won't be retrieved here.\r\n let maxRow, maxCol, minRow, minCol, sheet, res; // index start from 1\r\n // first time setup\r\n const ref = refs.shift().ref;\r\n sheet = ref.sheet;\r\n if (!ref.from) {\r\n // check whole row/col reference\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n\r\n // cell ref\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n // update\r\n maxRow = Math.max(ref.from.row, ref.to.row);\r\n minRow = Math.min(ref.from.row, ref.to.row);\r\n maxCol = Math.max(ref.from.col, ref.to.col);\r\n minCol = Math.min(ref.from.col, ref.to.col);\r\n }\r\n\r\n let err;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n ref = ref.ref;\r\n if (!ref) throw Error(`Expecting a reference, but got ${ref}.`);\r\n if (!ref.from) {\r\n if (ref.row === undefined || ref.col === undefined) {\r\n throw Error('Cannot intersect the whole row or column.')\r\n }\r\n // cell ref\r\n if (ref.row > maxRow || ref.row < minRow || ref.col > maxCol || ref.col < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n maxRow = minRow = ref.row;\r\n maxCol = minCol = ref.col;\r\n } else {\r\n // range ref\r\n const refMaxRow = Math.max(ref.from.row, ref.to.row);\r\n const refMinRow = Math.min(ref.from.row, ref.to.row);\r\n const refMaxCol = Math.max(ref.from.col, ref.to.col);\r\n const refMinCol = Math.min(ref.from.col, ref.to.col);\r\n if (refMinRow > maxRow || refMaxRow < minRow || refMinCol > maxCol || refMaxCol < minCol\r\n || sheet !== ref.sheet) {\r\n err = FormulaError.NULL;\r\n }\r\n // update\r\n maxRow = Math.min(maxRow, refMaxRow);\r\n minRow = Math.max(minRow, refMinRow);\r\n maxCol = Math.min(maxCol, refMaxCol);\r\n minCol = Math.max(minCol, refMinCol);\r\n }\r\n });\r\n if (err) return err;\r\n // check if the ref can be reduced to cell reference\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n sheet,\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n sheet,\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n\r\n if (!res.ref.sheet)\r\n delete res.ref.sheet;\r\n return res;\r\n }\r\n\r\n applyUnion(refs) {\r\n const collection = new Collection();\r\n for (let i = 0; i < refs.length; i++) {\r\n if (this.isFormulaError(refs[i]))\r\n return refs[i];\r\n collection.add(this.extractRefValue(refs[i]).val, refs[i]);\r\n }\r\n\r\n // console.log('applyUnion', unions);\r\n return collection;\r\n }\r\n\r\n /**\r\n * Apply multiple references, e.g. A1:B3:C8:A:1:.....\r\n * @param refs\r\n // * @return {{ref: {from: {col: number, row: number}, to: {col: number, row: number}}}}\r\n */\r\n applyRange(refs) {\r\n let res, maxRow = -1, maxCol = -1, minRow = MAX_ROW + 1, minCol = MAX_COLUMN + 1;\r\n refs.forEach(ref => {\r\n if (this.isFormulaError(ref))\r\n return ref;\r\n // row ref is saved as number, parse the number to row ref here\r\n if (typeof ref === 'number') {\r\n ref = this.parseRow(ref);\r\n }\r\n ref = ref.ref;\r\n // check whole row/col reference\r\n if (ref.row === undefined) {\r\n minRow = 1;\r\n maxRow = MAX_ROW\r\n }\r\n if (ref.col === undefined) {\r\n minCol = 1;\r\n maxCol = MAX_COLUMN;\r\n }\r\n\r\n if (ref.row > maxRow)\r\n maxRow = ref.row;\r\n if (ref.row < minRow)\r\n minRow = ref.row;\r\n if (ref.col > maxCol)\r\n maxCol = ref.col;\r\n if (ref.col < minCol)\r\n minCol = ref.col;\r\n });\r\n if (maxRow === minRow && maxCol === minCol) {\r\n res = {\r\n ref: {\r\n row: maxRow,\r\n col: maxCol\r\n }\r\n }\r\n } else {\r\n res = {\r\n ref: {\r\n from: {row: minRow, col: minCol},\r\n to: {row: maxRow, col: maxCol}\r\n }\r\n };\r\n }\r\n return res;\r\n }\r\n\r\n /**\r\n * Throw away the refs, and retrieve the value.\r\n * @return {{val: *, isArray: boolean}}\r\n */\r\n extractRefValue(obj) {\r\n const isArray = Array.isArray(obj);\r\n if (obj.ref) {\r\n // can be number or array\r\n return {val: this.context.retrieveRef(obj), isArray};\r\n\r\n }\r\n return {val: obj, isArray};\r\n }\r\n\r\n /**\r\n *\r\n * @param array\r\n * @return {Array}\r\n */\r\n toArray(array) {\r\n // TODO: check if array is valid\r\n // console.log('toArray', array);\r\n return array;\r\n }\r\n\r\n /**\r\n * @param {string} number\r\n * @return {number}\r\n */\r\n toNumber(number) {\r\n return Number(number);\r\n }\r\n\r\n /**\r\n * @param {string} string\r\n * @return {string}\r\n */\r\n toString(string) {\r\n return string.substring(1, string.length - 1) .replace(/\"\"/g, '\"');\r\n }\r\n\r\n /**\r\n * @param {string} bool\r\n * @return {boolean}\r\n */\r\n toBoolean(bool) {\r\n return bool === 'TRUE';\r\n }\r\n\r\n /**\r\n * Parse an error.\r\n * @param {string} error\r\n * @return {FormulaError}\r\n */\r\n toError(error) {\r\n return new FormulaError(error.toUpperCase());\r\n }\r\n\r\n isFormulaError(obj) {\r\n return obj instanceof FormulaError;\r\n }\r\n}\r\n\r\nmodule.exports = Utils;\r\n","const FormulaError = require('../../formulas/error');\r\nconst {FormulaHelpers} = require('../../formulas/helpers');\r\nconst {Parser} = require('../parsing');\r\nconst lexer = require('../lexing');\r\nconst Utils = require('./utils');\r\nconst {formatChevrotainError} = require('../utils');\r\n\r\nclass DepParser {\r\n\r\n /**\r\n *\r\n * @param {{onVariable: Function}} [config]\r\n */\r\n constructor(config) {\r\n this.data = [];\r\n this.utils = new Utils(this);\r\n config = Object.assign({\r\n onVariable: () => null,\r\n }, config);\r\n this.utils = new Utils(this);\r\n\r\n this.onVariable = config.onVariable;\r\n this.functions = {}\r\n\r\n this.parser = new Parser(this, this.utils);\r\n }\r\n\r\n /**\r\n * Get value from the cell reference\r\n * @param ref\r\n * @return {*}\r\n */\r\n getCell(ref) {\r\n // console.log('get cell', JSON.stringify(ref));\r\n if (ref.row != null) {\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n const idx = this.data.findIndex(element => {\r\n return (element.from && element.from.row <= ref.row && element.to.row >= ref.row\r\n && element.from.col <= ref.col && element.to.col >= ref.col)\r\n || (element.row === ref.row && element.col === ref.col && element.sheet === ref.sheet)\r\n });\r\n if (idx === -1)\r\n this.data.push(ref);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Get values from the range reference.\r\n * @param ref\r\n * @return {*}\r\n */\r\n getRange(ref) {\r\n // console.log('get range', JSON.stringify(ref));\r\n if (ref.from.row != null) {\r\n if (ref.sheet == null)\r\n ref.sheet = this.position ? this.position.sheet : undefined;\r\n\r\n const idx = this.data.findIndex(element => {\r\n return element.from && element.from.row === ref.from.row && element.from.col === ref.from.col\r\n && element.to.row === ref.to.row && element.to.col === ref.to.col;\r\n });\r\n if (idx === -1)\r\n this.data.push(ref);\r\n }\r\n return [[0]]\r\n }\r\n\r\n /**\r\n * TODO:\r\n * Get references or values from a user defined variable.\r\n * @param name\r\n * @return {*}\r\n */\r\n getVariable(name) {\r\n // console.log('get variable', name);\r\n const res = {ref: this.onVariable(name, this.position.sheet)};\r\n if (res.ref == null)\r\n return FormulaError.NAME;\r\n if (FormulaHelpers.isCellRef(res))\r\n this.getCell(res.ref);\r\n else {\r\n this.getRange(res.ref);\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Retrieve values from the given reference.\r\n * @param valueOrRef\r\n * @return {*}\r\n */\r\n retrieveRef(valueOrRef) {\r\n if (FormulaHelpers.isRangeRef(valueOrRef)) {\r\n return this.getRange(valueOrRef.ref);\r\n }\r\n if (FormulaHelpers.isCellRef(valueOrRef)) {\r\n return this.getCell(valueOrRef.ref)\r\n }\r\n return valueOrRef;\r\n }\r\n\r\n /**\r\n * Call an excel function.\r\n * @param name - Function name.\r\n * @param args - Arguments that pass to the function.\r\n * @return {*}\r\n */\r\n callFunction(name, args) {\r\n args.forEach(arg => {\r\n if (arg == null)\r\n return;\r\n this.retrieveRef(arg);\r\n });\r\n return {value: 0, ref: {}};\r\n }\r\n\r\n /**\r\n * Check and return the appropriate formula result.\r\n * @param result\r\n * @return {*}\r\n */\r\n checkFormulaResult(result) {\r\n this.retrieveRef(result);\r\n }\r\n\r\n /**\r\n * Parse an excel formula and return the dependencies\r\n * @param {string} inputText\r\n * @param {{row: number, col: number, sheet: string}} position\r\n * @param {boolean} [ignoreError=false] if true, throw FormulaError when error occurred.\r\n * if false, the parser will return partial dependencies.\r\n * @returns {Array.<{}>}\r\n */\r\n parse(inputText, position, ignoreError = false) {\r\n if (inputText.length === 0) throw Error('Input must not be empty.');\r\n this.data = [];\r\n this.position = position;\r\n const lexResult = lexer.lex(inputText);\r\n this.parser.input = lexResult.tokens;\r\n try {\r\n const res = this.parser.formulaWithBinaryOp();\r\n this.checkFormulaResult(res);\r\n } catch (e) {\r\n if (!ignoreError) {\r\n throw FormulaError.ERROR(e.message, e);\r\n }\r\n }\r\n if (this.parser.errors.length > 0 && !ignoreError) {\r\n const error = this.parser.errors[0];\r\n throw formatChevrotainError(error, inputText);\r\n }\r\n\r\n return this.data;\r\n }\r\n}\r\n\r\nmodule.exports = {\r\n DepParser,\r\n};\r\n","const {FormulaParser} = require('./grammar/hooks');\r\nconst {DepParser} = require('./grammar/dependency/hooks');\r\nconst SSF = require('./ssf/ssf');\r\nconst FormulaError = require('./formulas/error');\r\n\r\n// const funs = new FormulaParser().supportedFunctions();\r\n// console.log('Supported:', funs.join(', '),\r\n// `\\nTotal: ${funs.length}/477, ${funs.length/477*100}% implemented.`);\r\n\r\n\r\nObject.assign(FormulaParser, {\r\n MAX_ROW: 1048576,\r\n MAX_COLUMN: 16384,\r\n SSF,\r\n DepParser,\r\n FormulaError, ...require('./formulas/helpers')\r\n});\r\nmodule.exports = FormulaParser;\r\n","import Parser, { DepParser } from 'fast-formula-parser';\nexport class FormulaParser {\n parser;\n depParser;\n root;\n constructor(root) {\n this.root = root;\n this.parser = new Parser({\n onCell: ({ col, row }) => {\n const cell = this.root.data[row - 1][col - 1];\n const cellValue = cell.resultValue.length > 0 ? cell.resultValue : cell.value;\n if (cellValue && isNaN(Number(cellValue)) === false)\n return Number(cellValue);\n return this.root.data[row - 1][col - 1].resultValue ?? '';\n },\n });\n this.depParser = new DepParser({});\n this.depParser;\n }\n}\n","import { Editor } from \"./components/editor\";\nimport { Scroller } from \"./components/scroller\";\nimport { Sheet } from \"./components/sheet\";\nimport { Table } from \"./components/table\";\nimport { Toolbar } from \"./components/toolbar\";\nimport { Cell, } from \"./modules/cell\";\nimport { Config, } from \"./modules/config\";\nimport { Selection } from \"./modules/selection\";\nimport { Styles } from \"./modules/styles\";\nimport { Viewport } from \"./modules/viewport\";\nimport \"./scss/main.scss\";\nimport { createSampleData } from \"./utils/createData\";\nimport { Cache, CachedColumn, CachedRow } from \"./modules/cache\";\nimport { Row } from \"./modules/row\";\nimport { Column } from \"./modules/column\";\nimport { ColumnsBar } from \"./components/columnsBar\";\nimport { RowsBar } from \"./components/rowsBar\";\nimport { EventTypes, Events } from \"./modules/events\";\nimport { Clipboard } from \"./modules/clipboard\";\nimport { FormulaParser } from \"./modules/formulaParser\";\nexport const CSS_PREFIX = \"modern_sc_\";\nexport default class Spreadsheet {\n table;\n scroller;\n toolbar;\n rowsBar;\n columnsBar;\n sheet;\n editor;\n styles;\n config;\n data;\n viewport;\n selection;\n cache;\n events;\n clipboard;\n formulaParser;\n constructor(target, props) {\n const data = createSampleData(40, 40);\n const config = this.makeConfigFromData(data, props?.view ?? { height: 600, width: 800 });\n if (props?.view) {\n config.view = props.view;\n }\n this.config = new Config(config);\n this.config.onCellClick = props?.onCellClick ?? null;\n this.config.onSelectonChange = props?.onSelectionChange ?? null;\n this.config.onCellChange = props?.onCellChange ?? null;\n this.config.onCopy = props?.onCopy ?? null;\n this.rowsBar = new RowsBar(this);\n this.columnsBar = new ColumnsBar(this);\n this.sheet = new Sheet(this);\n this.table = new Table(this);\n this.scroller = new Scroller(this);\n this.toolbar = new Toolbar(this);\n this.editor = new Editor(this);\n this.cache = this.getInitialCache();\n this.viewport = new Viewport(this, this.scroller.getViewportBoundlingRect());\n this.selection = new Selection();\n this.events = new Events(this);\n this.clipboard = new Clipboard(this);\n this.formulaParser = new FormulaParser(this);\n this.data = data;\n this.styles = new Styles();\n this.buildComponent();\n this.setElementsPositions();\n this.appendTableToTarget(target);\n this.renderSheet();\n this.renderColumnsBar();\n this.renderRowsBar();\n }\n setRowsBarPosition() {\n const top = this.columnsBar.height + this.toolbar.height;\n const left = 0;\n this.rowsBar.setElementPosition(top, left);\n }\n setColumnsBarPosition() {\n const top = this.toolbar.height;\n const left = this.rowsBar.width;\n this.columnsBar.setElementPosition(top, left);\n }\n setElementsPositions() {\n this.setRowsBarPosition();\n this.setColumnsBarPosition();\n }\n getInitialCache() {\n const cachedCols = [];\n let currentWidth = 0;\n for (let i = 0; i <= this.config.columns.length - 1; i++) {\n const col = this.config.columns[i];\n currentWidth += col.width;\n const cacheCol = new CachedColumn({\n xPos: currentWidth,\n colIdx: i,\n });\n cachedCols.push(cacheCol);\n }\n const cachedRows = [];\n let currentHeight = 0;\n for (let i = 0; i <= this.config.rows.length - 1; i++) {\n const row = this.config.rows[i];\n currentHeight += row.height;\n const cacheRow = new CachedRow({\n yPos: currentHeight,\n rowIdx: i,\n });\n cachedRows.push(cacheRow);\n }\n const cache = new Cache({\n columns: cachedCols,\n rows: cachedRows,\n });\n return cache;\n }\n buildComponent() {\n const content = document.createElement(\"div\"); //* Abstract\n content.style.top = this.columnsBarHeight + \"px\";\n content.style.left = this.rowsBarWidth + \"px\";\n content.appendChild(this.sheet.element);\n content.classList.add(CSS_PREFIX + \"content\");\n this.table.element.appendChild(this.toolbar.element);\n this.table.element.appendChild(this.rowsBar.element);\n this.table.element.appendChild(this.columnsBar.element);\n this.table.element.appendChild(content);\n this.table.element.appendChild(this.scroller.element);\n this.table.element.append(this.editor.element);\n }\n /**Destroy spreadsheet DOM element.\n *\n * May be usefull when need to rerender component.\n */\n destroy() {\n this.table.element.remove();\n }\n appendTableToTarget(target) {\n if (typeof target === \"string\") {\n const element = document.querySelector(target);\n if (!element)\n throw new Error(`Element with selector ${target} is not finded in DOM.\\n Make sure it exists.`);\n element?.appendChild(this.table.element);\n }\n if (target instanceof HTMLElement) {\n target.append(this.table.element);\n }\n }\n /** Canvas rendering context 2D.\n *\n * Abble to draw on canvas with default CanvasAPI methods\n */\n get ctx() {\n return this.sheet.ctx;\n }\n get viewProps() {\n return this.config.view;\n }\n get columnsBarHeight() {\n return this.columnsBar.height;\n }\n get rowsBarWidth() {\n return this.rowsBar.width;\n }\n get toolbarHeight() {\n return this.toolbar.height;\n }\n /** Focusing on interactive part of spreadsheet */\n focusTable() {\n this.scroller.element.focus();\n }\n getCellByCoords(x, y) {\n return this.sheet.getCellByCoords(x, y);\n }\n getCell(position) {\n const { column, row } = position;\n return this.data[row][column];\n }\n changeCellValues(position, values, enableCallback = true) {\n const { column, row } = position;\n this.data[row][column].changeValues(values);\n this.events.dispatch({\n type: EventTypes.CELL_CHANGE,\n cell: this.data[row][column],\n enableCallback: enableCallback\n });\n this.renderCell(row, column);\n }\n changeCellStyles(position, styles) {\n const { column, row } = position;\n this.data[row][column].changeStyles(styles);\n this.renderCell(row, column);\n }\n applyActionToRange(range, callback) {\n const fromRow = Math.min(range.from.row, range.to.row);\n const toRow = Math.max(range.from.row, range.to.row);\n const fromCol = Math.min(range.from.column, range.to.column);\n const toCol = Math.max(range.from.column, range.to.column);\n for (let row = fromRow; row <= toRow; row++) {\n for (let col = fromCol; col <= toCol; col++) {\n const cell = this.data[row][col];\n callback(cell);\n }\n }\n }\n deleteSelectedCellsValues() {\n if (this.selection.selectedRange !== null) {\n this.applyActionToRange(this.selection.selectedRange, (cell) => {\n this.changeCellValues(cell.position, {\n displayValue: \"\",\n resultValue: \"\",\n value: \"\",\n });\n });\n }\n else {\n if (!this.selection.selectedCell)\n return;\n this.changeCellValues(this.selection.selectedCell, {\n displayValue: \"\",\n resultValue: \"\",\n value: \"\",\n });\n }\n }\n showEditor(position, initialString) {\n this.editor.show(position, initialString);\n }\n renderSheet() {\n this.sheet.renderSheet();\n }\n renderSelection() {\n this.sheet.renderSelection();\n }\n renderColumnsBar() {\n this.columnsBar.renderBar();\n }\n renderRowsBar() {\n this.rowsBar.renderBar();\n }\n renderCell(row, col) {\n this.data[row][col].render(this);\n }\n loadData(data) {\n const rowsLength = data.length;\n const colsLength = data[0] ? data[0].length : 0;\n this.data = [];\n const formattedData = [];\n // Transform serialized objects to Cells\n for (let row = 0; row < rowsLength; row++) {\n const innerRow = [];\n for (let col = 0; col < colsLength; col++) {\n const cell = data[row][col];\n innerRow.push(new Cell({\n displayValue: cell.displayValue,\n position: cell.position,\n resultValue: cell.resultValue,\n value: cell.value,\n style: cell.style,\n }));\n }\n formattedData.push(innerRow);\n }\n const config = this.makeConfigFromData(formattedData, this.config.view);\n config.onCellChange = this.config.onCellChange;\n config.onCellClick = this.config.onCellClick;\n config.onCopy = this.config.onCopy;\n config.onSelectonChange = this.config.onSelectonChange;\n this.data = formattedData;\n this.selection.selectedCell = null;\n this.selection.selectedRange = null;\n this.config = config;\n this.cache = this.getInitialCache();\n this.scroller.updateScrollerSize();\n this.viewport = new Viewport(this, this.scroller.getViewportBoundlingRect());\n this.renderSheet();\n return this;\n }\n makeConfigFromData(data, view) {\n const lastRowIdx = data.length - 1;\n const lastColIdx = data[0] ? data[0].length : 0;\n const rows = [];\n for (let row = 0; row < lastRowIdx; row++) {\n rows.push(new Row({\n height: 40,\n title: String(row),\n }));\n }\n const columns = [];\n for (let col = 0; col < lastColIdx; col++) {\n columns.push(new Column({\n width: 150,\n title: String(col),\n }));\n }\n const config = new Config({\n view,\n rows,\n columns,\n onCellClick: null,\n });\n return config;\n }\n serializeData() {\n const rowsLength = this.data.length;\n const colsLength = this.data[0] ? this.data[0].length : 0;\n const cellsArray = [];\n for (let row = 0; row < rowsLength; row++) {\n const innerRow = [];\n for (let col = 0; col < colsLength; col++) {\n innerRow.push(this.data[row][col].getSerializableCell());\n }\n cellsArray.push(innerRow);\n }\n return cellsArray;\n }\n}\nexport * from \"./modules/cache\";\nexport * from \"./modules/cell\";\nexport * from \"./modules/column\";\nexport * from \"./modules/config\";\nexport * from \"./modules/renderBox\";\nexport * from \"./modules/row\";\nexport * from \"./modules/selection\";\nexport * from \"./modules/styles\";\nexport * from \"./modules/viewport\";\nexport * from \"./utils/createData\";\n"],"names":["EventTypes","Events","root","__publicField","event","scroller","offsetX","offsetY","clickedCell","cell","selection","Selection","_b","_a","enableCallback","range","data","dataAsString","action","err","RenderBox","config","cellPosition","column","x","row","y","Editor","key","target","element","CSS_PREFIX","position","initialString","height","width","checkEqualCellSelections","selection1","selection2","Scroller","lastSelectedCell","isRangeChanged","newSelection","keysRegex","isPressedLetterKey","cells","from","to","rect","horizontalScroller","verticalScroller","mode","scrollTop","scrollLeft","bottom","right","groupScrollers","stack","acc","curr","totalHeight","totalWidth","CellStyles","props","Position","SerializableCell","Cell$2","styles","values","parser","renderBox","ctx","Sheet$2","canvas","col","selectedCell","selectedRange","startRow","startCol","lastRow","lastCol","startCellBox","box","firstRowIdx","lastColIdx","lastRowIdx","firstColIdx","Table","container","sizes","Toolbar","toolbarElement","Config","Styles","Viewport","Column$2","Row","createSampleData","rows","columns","fillCellsByCoords","innerRow","value","Cell","createSampleConfig","rowsArr","i","rowItem","colsArr","colItem","Column","makeSpreadsheetConfigAndData","CachedColumn","CachedRow","Cache","initial","rowIdx","colIdx","ColumnsBar","top","left","isColSelected","specialX","RowsBar","isRowSeleted","specialY","Clipboard","mapedData","item","arrayOfCells","cellProps","rowsLength","colsLength","j","savedCell","Collection$3","refs","obj","ref","collection","Collection","FormulaError","require$$0","require$$1","Types","Factorials","ReversedTypes","FormulaHelpers","result","arr1","val","isArray","allowBoolean","number","params","valueType","allowUnion","hook","defValue","minSize","param","isCellRef","isRangeRef","isUnion","isLiteral","info","type","flat","allowSingleValue","paramType","variable","context","range1","range2","Address","H","arg","res","WildCard","lookupText","flags","Criteria","criteria","upper","op","dividend","name","modulo","columnName","len","code","rowOffset","colOffset","helpers","error","msg","details","functionName","args","SSF$1","SSF","_strrev","o","fill","c","l","pad0","v","d","t","pad_","rpad_","pad0r1","pad0r2","p2_32","pad0r","isgeneral","s","days","months","init_table","table_fmt","frac","D","mixed","sgn","B","P_2","P_1","P","Q_2","Q_1","Q","A","q","parse_date_code","opts","b2","date","time","dow","dout","out","fix_hijri","basedate","dnthresh","base1904","datenum_local","date1904","epoch","general_fmt_int","general_fmt_num","gnr1","gnr2","gnr4","gnr5","gnr6","gfn2","w","gfn5","gfn3","gfn4","V","general_fmt","format","write_date","fmt","ss0","ss","tt","outl","commaify","write_num","pct1","write_num_pct","sfmt","mul","write_num_cm","idx","write_num_exp","period","ee","fakee","$$","$1","$2","$3","frac1","write_num_f1","r","aval","sign","den","rr","base","myn","myd","write_num_f2","dec1","closeparen","phone","hashq","str","cc","rnd","dd","dec","carry","flr","write_num_flt","ffmt","ri","ff","oa","lres","rres","write_num_cm2","write_num_pct2","write_num_exp2","write_num_int","split_fmt","in_str","abstime","fmt_is_date","eval_fmt","flen","lst","dt","hr","bt","ssm","nstr","jj","vv","myv","ostr","decpt","lasti","retval","cfregex","cfregex2","chkcond","thresh","choose_fmt","f","lat","m1","m2","load_entry","tbl","ssf","defaultResult","singleUnitStrs","placeNameStrs","num2Word","nums","maxLen","overflowIndex","overflowNums","remainingNumbs","digit","grammarFix","neungLen","combine","baht","satang","bahttext","num","bahtStr","satangStr","bahtArr","satangArr","module","require$$2","require$$3","charsets","toFull","set","toHalf","re","way","sets","toFullWidth","str0","toHalfWidth","TextFunctions","text","decimals","decimalString","text1","text2","findText","withinText","startNum","noCommas","comma","numChars","decimalSeparator","groupSeparator","leftParenOrMinus","rightParen","percent","letter","old_text","start_num","num_chars","new_text","arr","number_times","findTextRegex","formatText","e","Prefix","prefixes","prefix","Postfix","postfix","type2Number","Infix","value1","infix","value2","isArray1","isArray2","type1","type2","operators","fd","factorial","n","factorialDouble","MathFunctions","functionNum","options","ref1","radix","minLength","significance","absSignificance","times","offset","numberChosen","nFactorial","kFactorial","radians","a","b","array","numRow","numCol","det","diagLeft","diagRight","array1","array2","aNumRows","aNumCols","bNumRows","bNumCols","m","v1","v2","divisor","multiple","numbers","numerator","denominator","dimension","matrix","rowArr","temp","power","product","parsedNumber","degrees","form","digits","roman","multiplier","coefficients","coefficient","sumRange","ranges","isCriteriaArray","sum","rowNum","colNum","valueToAdd","arrays","arrayX","arrayY","math","MAX_NUMBER","TrigFunctions","trigonometry","getNumLogicalValue","numTrue","numFalse","LogicalFunctions","logicalTest","valueIfTrue","valueIfFalse","valueIfError","valueIfNa","logical","factory","exports","BESSEL","M","_horner","z","_bessel_iter","f0","f1","tdx","f2","_bessel_wrap","bessel0","bessel1","nonzero","b0","b1","besselj","W","b0_a1a","b0_a2a","b0_a1b","b0_a2b","a1","a2","xx","b1_a1a","b1_a2a","b1_a1b","b1_a2b","ret","jsum","bjp","bj","bjm","tox","bessely","besseli","b0_a","b0_b","b1_a","b1_b","bip","bi","bim","besselk","window","this","jStat","Math","undefined","concat","slice","toString","calcRdx","isFunction","isNumber","toVector","fn","index","submat","ind","nrow","objArr","cols","func","toAlter","ncol","retZero","retOne","retIdent","size","min","max","length","hival","step","current","cnt","start","end","rl","_slice","list","rcSlice","colSlice","rowSlice","nl","ml","diagArray","mat","jProto","funcs","passfunc","self","results","ascNum","clip","mean","tmp","prod","low","high","hash","_arr","logs","meanOfLogs","arrlen","diffs","arrLen","distinctNumbers","numberCounts","sortedDistinctNumbers","numberRanks","currentRank","count","first","last","rank","maxCount","numMaxCount","mode_arr","flag","sumsqerr","samples","dev","median","quantilesArray","alphap","betap","sortedArray","quantileVals","p","aleph","k","gamma","exclusive","realIndex","score","kind","counter","strict","binCnt","binWidth","bins","arr2","u","arr1Len","sq_dev","mu","sigma","skewSum","fullbool","tmpthis","callbackFunction","argsToPass","curriedFunction","vector","cof","ser","x0","x2","xp","gl","gl0","fact","xden","xnum","yi","aln","ap","del","h","ITMAX","an","fpmin","qab","qap","qam","aa","EPS","gln","pp","lna1","afac","isneg","ty","lna","lnb","al","shape","oalph","newthis","vals","fnfunc","alpha","beta","df1","df2","x1","local","scale","dof","rate","ncp","tol","min_iterations","flip","prob","lastvalue","std","dof2","betinc","eps","a0","m9","c9","betacdf","N","scaledPDF","samplesDone","scaledCDF","factor","sumarr","L","lam","U","slam","loglam","invalpha","vr","us","laplaceSign","tukeyWprob","nleg","ihalf","C1","C2","C3","bb","wlar","wincr1","wincr2","xleg","aleg","qsqz","pr_w","wincr","blb","binc","bub","einsum","cc1","wi","elsum","ac","qexpo","pplus","pminus","rinsum","tukeyQinv","p0","q0","p1","q1","p2","q2","p3","q3","p4","q4","c1","c2","c3","c4","c5","vmax","ps","nmeans","df","nlegq","ihalfq","eps1","eps2","dhaf","dquar","deigh","dlarg","ulen1","ulen2","ulen3","ulen4","xlegq","alegq","f2lf","f21","ff4","ulen","ans","otsum","twa1","t1","wprb","rotsum","maxiter","valx0","valx1","iter","xabs","push","isUsable","nrescols","rescols","nnorm","newarr","determinant","submatrix","maug","pivot","y2","maxrow","parts","matrix_mode","R","T","xv","xk","qr2","R_I","I","Aj","cAi","Ij","cIi","qr_solve","array_mode","QR","attrs","Q1","R1","RI","Q2","condition","ev","maxim","theta","t_j","u_j","order","k1","k2","u_j1","k3","k4","h1","g","X","pos","h_min","y1","F","dF","dl","temp1","temp2","Y","Bt","C","Vt","sides","zscore","tscore","expVar","sample","sampMean","sampSampMean","tmpargs","unexpVar","anovafscore","fscore","mean1","mean2","n1","n2","sd","qscore","means","change","pvalue","differenceOfProportions","pooled","se","sub_regress","exog","var_count","modelList","endog_index","exog_index","ols","endog","nobs","df_model","df_resid","coef","predict","resid","ybar","SSE","SSR","SST","R2","t_test","model","subModelList","sigmaHat","seBetaHat","mod","tStatistic","pValue","leftppf","interval95","F_test","F_statistic","fcdf","ols_wrap","ttest","ftest","adjust_R2","matrixRows","jMat","pass","jMatX","jMatY","innerinv","xtransp","next","compile","jMatYBar","yAverage","covar","sds","ts","inner","yBar","ssr","sse","sst","bessel","require$$4","MAX_OCT","MIN_OCT","MAX_BIN","MIN_BIN","numberRegex","IMWithoutRealRegex","IMRegex","parseIM","textOrNumber","real","im","unit","match","EngineeringFunctions","numberStr","places","number1","number2","shiftAmount","realNum","iNum","suffix","lowerLimit","upperLimit","ifNegative","toDecimal","toBinary","iNumber","realInput","imaginaryInput","imaginary","iNumber1","iNumber2","res1","unit1","res2","unit2","argument","realSum","imSum","prevUnit","isNegative","toHex","engineering","ReferenceFunctions","rowNumber","columnNumber","absNum","sheetText","indexNum","lookupValue","tableArray","rowIndexNum","rangeLookup","lookupType","prevValue","currValue","areaNum","colIndexNum","currRow","reference","error2Number","InfoFunctions","infoType","information","SQRT2PI","DistributionFunctions","cumulative","probability","numberS","trials","probabilityS","numberS2","degFreedom","actualRange","expectedRange","actual","expected","xsqr","filterArr1","filterArr2","lambda","d1","d2","x1Mean","x2Mean","s1","s2","e2y","knownYs","knownXs","filteredY","filteredX","xAllEqual","yMean","xMean","dataArray","binsArray","binsArrayFiltered","filterArr","knownY","knownX","newX","useConst","isKnownXOmitted","avg_x","avg_y","avg_xy","avg_xx","new_y","sample_s","number_sample","population_s","number_pop","pdf","cdf","standard_dev","number_f","number_s","probability_s","deg_freedom","distribution","StatisticalFunctions","avg","averageRange","statistical","MS_PER_DAY","d1900","WEEK_STARTS","WEEK_TYPES","WEEKEND_TYPES","timeRegex","dateRegex1","dateRegex2","dateRegex3","parseSimplifiedDate","fmt1","fmt2","fmt3","parseTime","minutes","seconds","ampm","now","toSerial","addOn","toDate","serial","parseDateWithExtra","serialOrString","isDateGiven","parseDate","compareDateIgnoreTime","date1","date2","isLeapYear","year","DateFunctions","month","day","startDate","endDate","yearDiff","monthDiff","dayDiff","dateText","method","dayNum","yearStart","holidays","holidaysArr","numWorkDays","found","weekend","weekendArr","skip","hour","minute","second","timeText","returnType","weekTypes","weekStart","basis","sm","sy","ed","em","ey","yLength","years","average","WebFunctions","url","web","VERSION","isEmpty","keys","mapValues","callback","objKeys","currKey","map","flatten","currItem","forEach","iteratorCallback","isObject","colKeys","isString","isUndefined","drop","howMuch","dropRight","filter","predicate","reject","pick","has","prop","contains","find","cloneArr","newArr","cloneObj","clonedObj","findAll","reduce","arrOrObj","iterator","isArr","accumulator","compact","uniq","identity","identities","currIdentity","isRegExp","every","difference","some","indexOf","assign","sources","_i","curSource","currSourceKeys","assignNoOverwrite","defaults","groupBy","groupKeyFunc","currGroupKey","currGroupArr","merge","obj1","obj2","keys2","NOOP","IDENTITY","packArray","holeyArr","orgValue","PRINT_ERROR","PRINT_WARNING","isES2015MapSupported","applyMixins","derivedCtor","baseCtors","baseCtor","baseProto","propName","basePropDescriptor","toFastProperties","toBecomeFast","FakeConstructor","fakeInstance","fakeAccess","peek","timer","total","RegExpParser","newState","input","addFlag","alts","begin","terms","ASSERT_EXISTS","disjunction","ASSERT_NEVER_REACH_HERE","isBacktracking","atLeast","atMost","atom","complement","digitsCharCodes","whitespaceCodes","wordCharCodes","escapeCode","letterCode","escapedChar","nextChar","isFromSingleChar","isToSingleChar","insertToSet","capturing","groupAst","decimalPatternNoZero","decimalPattern","prevState","howMany","hexString","hexChar","hexDigitPattern","charCode","char","subItem","flagObj","flagKey","BaseRegExpVisitor","node","child","subChild","regExpAstCache","regExpParser","getRegExpAst","regExp","regExpStr","regExpAst","clearRegExpParserCache","__extends","extendStatics","__","complementErrorMessage","failedOptimizationPrefixMsg","getOptimizedStartCodesIndices","ensureOptimizations","ast","firstChars","firstCharOptimizedIndices","msgSuffix","ignoreCase","term","addOptimizedIdxToResult","rangeCode","minOptimizationVal","minUnOptVal","maxUnOptVal","minOptIdx","charCodeToOptimizedIndex","maxOptIdx","currOptIdx","isOptionalQuantifier","isWholeOptional","optimizedCharIdx","handleIgnoreCase","upperChar","lowerChar","findCode","setNode","targetCharCodes","codeOrRange","range_1","targetCode","CharCodeFinder","_super","_this","canMatchCharCode","charCodes","pattern","charCodeFinder","PATTERN","DEFAULT_MODE","MODES","SUPPORT_STICKY","analyzeTokenTypes","tokenTypes","tracer","initCharCodeToOptimizedIndexMap","onlyRelevantTypes","currType","Lexer","hasCustom","allTransformedPatterns","currPattern","regExpSource","addStickyFlag","addStartOfInput","escapedRegExpString","wrappedRegExp","patternIdxToType","patternIdxToGroup","patternIdxToLongerAltIdx","patternIdxToPushMode","patternIdxToPopMode","clazz","groupName","longerAltType","longerAltIdx","patternIdxToCanLineTerminator","lineTerminatorCharCodes","getCharCodes","tokType","checkLineBreaksIssues","patternIdxToIsCustom","patternIdxToShort","emptyGroups","patternIdxToConfig","isCustomPattern","isShortPattern","canBeOptimized","charCodeToPatternIdxToConfig","currTokType","optimizedIdx","addToMapOfArrays","lastOptimizedIdx_1","charOrInt","currOptimizedIdx","optimizedCodes","validatePatterns","validModesNames","errors","missingResult","findMissingPatterns","invalidResult","findInvalidPatterns","validTokenTypes","validateRegExpPattern","findInvalidGroupType","findModesThatDoNotExist","findUnreachablePatterns","withRegExpPatterns","findEndOfInputAnchor","findStartOfInputAnchor","findUnsupportedFlags","findDuplicatePatterns","findEmptyMatchRegExps","tokenTypesWithMissingPattern","LexerDefinitionErrorType","valid","tokenTypesWithInvalidPattern","end_of_input","EndAnchorFinder","invalidRegex","regexpAst","endAnchorVisitor","matchesEmptyString","start_of_input","StartAnchorFinder","startAnchorVisitor","invalidFlags","identicalPatterns","outerType","innerType","duplicatePatterns","currIdenticalSet","setOfIdentical","tokenTypeNames","dupPatternSrc","invalidTypes","group","validModes","invalidModes","canBeTested","noMetaChar","testIdx","tokenType","testTokenType","regExpArray","metaChars","performRuntimeChecks","lexerDefinition","trackLines","lineTerminatorCharacters","currModeValue","currModeName","currIdx","performWarningRuntimeChecks","warnings","hasAnyLineBreak","allTokenTypes","tokTypes","concreteTokenTypes","terminatorCharCodes","currIssue","message","buildLineBreakIssueMessage","warningDescriptor","cloneEmptyGroups","clonedResult","groupKeys","currGroupValue","LineTerminatorOptimizedTester","charsOrCodes","numOrString","charCodeToOptimizedIdxMap","tokenStructuredMatcher","tokInstance","tokConstructor","instanceType","tokenStructuredMatcherNoCategories","token","tokenShortNameIdx","tokenIdxToClass","augmentTokenTypes","tokenTypesAndParents","expandCategories","assignTokenDefaultProps","assignCategoriesMapProp","assignCategoriesTokensProp","categories","searching","newCategories","hasShortKeyProperty","hasCategoriesProperty","hasExtendingTokensTypesProperty","hasExtendingTokensTypesMapProperty","singleAssignCategoriesToksMap","path","nextNode","pathNode","nextCategory","newPath","isTokenType","defaultLexerErrorProvider","fullText","startOffset","line","DEFAULT_LEXER_CONFIG","traceInitVal","actualDefinition","hasOnlySingleMode","allModeNames","currModDef","currModName","currAnalyzeResult_1","allErrMessages","allErrMessagesString","unOptimizedModes","cannotBeOptimized","modeName","initialMode","lexResult","matchAltImage","matchedImage","payload","altPayload","imageLength","newToken","errLength","orgText","orgLength","matchedTokensIndex","guessedNumberOfTokens","matchedTokens","groups","lineTerminatorPattern","currModePatternsLength","currCharCodeToPatternIdxToConfig","modeStack","emptyArray","getPossiblePatterns","getPossiblePatternsSlow","getPossiblePatternsOptimized","possiblePatterns","pop_mode","popToken","msg_1","newMode","modeCanBeOptimized","push_mode","currConfig","nextCharCode","chosenPatternIdxToConfig","chosenPatternsLength","singleCharCode","longerAltConfig","longerAltPattern","numOfLTsInMatch","foundTerminator","lastLTEndOffset","errorStartOffset","errorLine","errorColumn","foundResyncPoint","currConfig_1","pushMode","newLastIndex","lastLTIdx","lastCharIsLT","fixForEndingInLT","oldColumn","image","tokenTypeIdx","startLine","startColumn","tokenVector","tokenToAdd","phaseDesc","phaseImpl","indent","traceMethod","tokenLabel","hasTokenLabel","tokenName","PARENT","CATEGORIES","LABEL","GROUP","PUSH_MODE","POP_MODE","LONGER_ALT","LINE_BREAKS","START_CHARS_HINT","createToken","createTokenInternal","EOF","createTokenInstance","endOffset","endLine","endColumn","tokenMatcher","AbstractProduction","_definition","visitor","NonTerminal","definition","Rule","Alternative","Option","RepetitionMandatory","RepetitionMandatoryWithSeparator","Repetition","RepetitionWithSeparator","Alternation","Terminal","serializeGrammar","topRules","serializeProduction","convertDefinition","serializedTerminal","RestWalker","prevRest","subProd","currRest","terminal","refProd","flatProd","fullOrRest","optionProd","atLeastOneProd","fullAtLeastOneRest","atLeastOneSepProd","fullAtLeastOneSepRest","restForRepetitionWithSeparator","manyProd","fullManyRest","manySepProd","fullManySepRest","orProd","alt","prodWrapper","repSepProd","repSepRest","fullRepSepRest","GAstVisitor","nodeAny","isSequenceProd","isOptionalProd","alreadyVisited","isDirectlyOptional","isBranchingProd","getProductionDslName","DslMethodsCollectorVisitor","subrule","option","manySep","atLeastOne","atLeastOneSep","many","or","collectorVisitor","collectMethods","rule","dslMethods","firstForTerminal","firstForSequence","firstForBranching","firstSet","seq","nextSubProdIdx","hasInnerProdsRemaining","currSubProd","isLastInnerProdOptional","allAlternativesFirsts","innerProd","IN","ResyncFollowsWalker","topProd","followName","buildBetweenProdsFollowPrefix","fullRest","restProd","t_in_topProd_follows","computeAllProdsFollows","topProductions","reSyncFollows","currRefsFollow","occurenceInParent","defaultParserErrorProvider","hasLabel","expectedMsg","firstRedundant","expectedPathsPerAlt","customUserDescription","errPrefix","actualText","errSuffix","allLookAheadPaths","currAltPaths","nextValidTokenSequences","currPath","currTokenType","nextValidSequenceItems","itemMsg","calculatedDescription","expectedIterationPaths","defaultGrammarResolverErrorProvider","topLevelRule","undefinedRule","defaultGrammarValidatorErrorProvider","duplicateProds","getExtraProductionArgument","topLevelName","duplicateProd","dslName","extraArgument","hasExplicitIndex","errMsg","pathMsg","currTok","occurrence","currtok","currMessage","ruleName","pathNames","utils.map","currRule","leftRecursivePath","resolveGrammar","topLevels","errMsgProvider","refResolver","GastRefResolverVisitor","nameToTopRule","ParserDefinitionErrorType","AbstractNextPossibleTokensWalker","NextAfterTokenWalker","AbstractNextTerminalAfterProductionWalker","topRule","NextTerminalAfterManyWalker","firstAfterMany","_first","NextTerminalAfterManySepWalker","firstAfterManySep","NextTerminalAfterAtLeastOneWalker","firstAfterAtLeastOne","NextTerminalAfterAtLeastOneSepWalker","atleastOneSepProd","firstAfterfirstAfterAtLeastOneSep","possiblePathsFrom","targetDef","maxLength","remainingPathWith","nextDef","getAlternativesForProd","alternatives","newDef","currAlt","nextPossibleTokensAfter","initialDef","tokMatcher","maxLookAhead","EXIT_NON_TERMINAL","EXIT_NON_TERMINAL_ARR","EXIT_ALTERNATIVE","foundCompletePath","tokenVectorLength","minimalAlternativesIndex","possiblePaths","currDef","currRuleStack","currOccurrenceStack","nextPath","nextIdx","actualToken","newRuleStack","newOccurrenceStack","nextPathWithout","nextPathWith","secondIteration","separatorGast","nthRepetition","currAltPath","expandTopLevelRule","newCurrOccurrenceStack","PROD_TYPE","getProdType","buildLookaheadFuncForOr","ruleGrammar","maxLookahead","hasPredicates","dynamicTokensEnabled","laFuncBuilder","lookAheadPaths","getLookaheadPathsForOr","areTokenCategoriesNotUsed","buildLookaheadFuncForOptionalProd","prodType","lookaheadBuilder","getLookaheadPathsForOptionalProd","buildAlternativesLookAheadFunc","numOfAlts","areAllOneTokenLookahead","orAlts","predicates","currNumOfPaths","currPredicate","currPathLength","nextToken","singleTokenAlts","choiceToAlt_1","currExtendingType","buildSingleAlternativeLookaheadFunction","numOfPaths","singleTokensTypes","expectedTokenType","expectedTokenUniqueKey_1","choiceToAlt_2","RestDefinitionFinderWalker","targetOccurrence","targetProdType","expectedProdType","InsideDefinitionFinderVisitor","targetRef","expectedProdName","initializeArrayOfArrays","pathToHashKeys","longerKeys","currShorterKey","categoriesKeySuffix","isUniquePrefixHash","altKnownPathsKeys","searchPathKeys","currAltIdx","otherAltKnownPathsKeys","searchIdx","searchKey","lookAheadSequenceFromAlternatives","altsDefs","partialAlts","finalResult","altsHashes","dict","newData","pathLength","currDataset","_loop_1","altIdx","currAltPathsAndSuffixes","currPathIdx","currPathPrefix","suffixDef","prefixKeys","isUnique","currAltResult","containsPath","newPartialPathsAndSuffixes","insideDefVisitor","insideDef","afterDefWalker","afterDef","insideFlat","AlternativeGAST","afterFlat","alternative","searchPath","compareOtherPath","otherPath","searchTok","otherTok","matchingTokens","isStrictPrefixOfPath","other","otherTokType","singleAltPaths","singlePath","validateGrammar","globalMaxLookahead","grammarName","duplicateErrors","currTopLevel","validateDuplicateProductions","leftRecursionErrors","currTopRule","validateNoLeftRecursion","emptyAltErrors","ambiguousAltsErrors","emptyRepetitionErrors","validateEmptyOrAlternative","validateAmbiguousAlternationAlternatives","validateSomeNonEmptyLookaheadPath","termsNamespaceConflictErrors","checkTerminalAndNoneTerminalsNameSpace","tooManyAltsErrors","curRule","validateTooManyAlts","duplicateRulesError","validateRuleDoesNotAlreadyExist","utils.flatten","OccurrenceValidationCollector","allRuleProductions","productionGroups","utils.groupBy","identifyProductionForDuplicates","duplicates","utils.pick","currGroup","utils.values","currDuplicates","firstProd","utils.first","defError","allRules","className","occurrences","validateRuleIsOverridden","definedRulesNames","utils.contains","nextNonTerminals","getFirstNoneTerminal","utils.isEmpty","foundLeftRecursion","validNextSteps","utils.difference","errorsFromNextSteps","currRefRule","utils.cloneArr","currSubDef","isFirstOptional","hasMore","rest","utils.drop","OrCollector","orCollector","ors","utils.reduce","currOr","exceptLast","utils.dropRight","currErrors","currAlternative","possibleFirstInAlt","utils.compact","currOccurrence","actualMaxLookahead","altsAmbiguityErrors","checkAlternativesAmbiguities","altsPrefixAmbiguityErrors","checkPrefixAlternativesAmbiguities","RepetionCollector","topLevelRules","currProd","paths","pathsInsideProduction","alternation","foundAmbiguousPaths","identicalAmbiguities","altsCurrPathAppearsIn","currOtherAlt","currOtherAltIdx","currAmbDescriptor","ambgIndices","pathsAndIndices","currPathsAndIdx","currPathAndIdx","alternativeGast","targetIdx","targetPath","prefixAmbiguitiesPathsAndIndices","searchPathAndIdx","currPathPrefixErrors","currAmbPathAndIdx","tokenNames","currToken","currRuleName","topRulesTable","orgResolveGrammar","orgValidateGrammar","assignOccurrenceIndices","methodsCollector","methods","currMethod","arrIdx","MISMATCHED_TOKEN_EXCEPTION","NO_VIABLE_ALT_EXCEPTION","EARLY_EXIT_EXCEPTION","NOT_ALL_INPUT_PARSED_EXCEPTION","RECOGNITION_EXCEPTION_NAMES","isRecognitionException","RecognitionException","_newTarget","MismatchedTokenException","previousToken","NoViableAltException","NotAllInputParsedException","EarlyExitException","EOF_FOLLOW_KEY","IN_RULE_RECOVERY_EXCEPTION","InRuleRecoveryException","Recoverable","DEFAULT_PARSER_CONFIG","attemptInRepetitionRecovery","tokToInsert","grammarRule","grammarRuleArgs","lookAheadFunc","expectedTokType","reSyncTokType","savedLexerState","resyncedTokens","passedResyncPoint","nextTokenWithoutResync","generateErrorMessage","expectTokAfterLastMatch","nextTokIdx","notStuck","tokIdxInRule","grammarPath","follows","nextTok","expectedToken","mismatchedTok","isMisMatchedTokInFollows","possibleFollowsTokType","isNextTokenWhatIsExpected","followKey","currentRuleReSyncSet","allPossibleReSyncTokTypes","nextTokenType","currRuleShortName","currRuleIdx","prevRuleShortName","explicitRuleStack","explicitOccurrenceStack","followStack","resyncTokens","prodFunc","lookaheadFunc","dslMethodIdx","prodOccurrence","nextToksWalker","pathRuleStack","pathOccurrenceStack","currShortName","firstAfterRepInfo","walker","isEndOfRule","BITS_FOR_METHOD_TYPE","BITS_FOR_OCCURRENCE_IDX","OR_IDX","OPTION_IDX","MANY_IDX","AT_LEAST_ONE_IDX","MANY_SEP_IDX","AT_LEAST_ONE_SEP_IDX","getKeyForAutomaticLookahead","ruleIdx","LooksAhead","rules","repetition","repetitionMandatory","repetitionMandatoryWithSeparator","repetitionWithSeparator","prodIdx","laFunc","prodKey","prodMaxLookahead","dslMethodName","setNodeLocationOnlyOffset","currNodeLocation","newLocationInfo","setNodeLocationFull","addTerminalToCst","tokenTypeName","addNoneTerminalToCst","ruleResult","classNameFromInstance","instance","NAME","existingNameProp","defineNameProp","nameValue","namePropDescriptor","defaultVisit","childrenNames","childrenNamesLength","currChildName","currChildArray","currChildArrayLength","currChild","createBaseSemanticVisitorConstructor","ruleNames","derivedConstructor","semanticProto","cstNode","semanticDefinitionErrors","validateVisitor","errorMessages","currDefError","createBaseVisitorConstructorWithDefaults","baseConstructor","withDefaultsProto","CstVisitorDefinitionError","visitorInstance","missingErrors","validateMissingCstMethods","redundantErrors","validateRedundantMethods","VALID_PROP_NAMES","TreeBuilder","fullRuleName","shortName","ruleCstNode","prevToken","loc","consumedToken","rootCst","ruleCstResult","preCstNode","newBaseCstVisitorConstructor","newConstructor","ruleStack","occurrenceStack","LexerAdapter","newInput","END_OF_FILE","soughtIdx","RecognizerApi","impl","ruleToCall","actionORMethodDef","altsOrOpts","implementation","DEFAULT_RULE_CONFIG","ruleImplementation","ruleErrors","orgState","RecognizerEngine","tokenVocabulary","uniqueTokens","noTokenCategoriesUsed","tokenConstructor","resyncEnabled","recoveryValueFunc","invokeRuleWithTry","cst","wrappedGrammarRule","idxInCallingRule","ruleNamePropName","resyncEnabledConfig","isFirstInvokedRule","reSyncEnabled","recogError","partialCstResult","orgLookaheadFunction_1","laKey","orgLookaheadFunction_2","separator","firstIterationLookaheadFunc","separatorLookAheadFunc","lookaheadFunction","orgLookaheadFunction_3","firstIterationLaFunc","nextTerminalAfterWalker","beforeIteration","afterIteration","altIdxToTake","chosenAlternative","firstRedundantTok","eFromConsumption","eFromInRuleRecovery","savedErrors","savedRuleStack","fullName","ErrorHandler","newErrors","userDefinedErrMsg","lookAheadPathsPerAlternative","insideProdPaths","actualTokens","errMsgTypes","ContentAssist","startRuleName","precedingInput","startRuleGast","topRuleName","gastProductions","topProduction","nextPossibleTokenTypes","RECORDING_NULL_OBJECT","HANDLE_SEPARATOR","MAX_METHOD_IDX","RFT","RECORDING_PHASE_TOKEN","RECORDING_PHASE_CSTNODE","GastRecorder","arg1","arg2","def","newTopLevelRule","originalError","recordProd","recordOrProd","assertMethodIdxIsValid","getIdxSuffix","prevProd","newNoneTerminal","prodConstructor","mainProdArg","handleSep","grammarAction","newProd","hasOptions","newOrProd","currAltFlat","PerformanceTracer","userTraceInitPerf","traceIsNumber","EMPTY_ALT","Parser","that","parserInstance","defErrorsMsgs","wrappedRule","originalGrammarAction","recordedRuleGast","resolverErrors","validationErrors","allFollows","CstParser","configClone","EmbeddedActionsParser","createSyntaxDiagramsCode","grammar","_c","resourceBase","_d","css","header","cssHtml","scripts","diagramsDiv","serializedGrammar","initLogic","NL","genUmdModule","genClass","genWrapperFunction","genAllRules","rulesText","genRule","genDefinition","genTerminal","genNonTerminal","genAlternation","altDef","genSingleAlt","genProd","genDSLRule","genDefFunction","spaces","generateParserFactory","wrapperText","constructorWrapper","generateParserModule","clearCache","WhiteSpace","String","SingleQuotedString","SheetQuoted","Function","FormulaErrorT","RefError","Name","Sheet","Number","Boolean","At","Comma","Colon","Semicolon","OpenParen","CloseParen","OpenSquareParen","CloseSquareParen","OpenCurlyParen","CloseCurlyParen","QuoteS","MulOp","PlusOp","DivOp","MinOp","ConcatOp","ExOp","PercentOp","GtOp","EqOp","LtOp","NeqOp","GteOp","LteOp","allTokens","SelectLexer","lexing","inputText","lexingResult","lexer","ExcelRefFunction","ExcelConditionalRefFunction","Parsing","utils","$","infixes","ops","formula","currentRow","sep","constant","bool","sheetName","referenceItem","address","parsing","Operators","MAX_ROW","MAX_COLUMN","Utils$3","cellAddress","col1","col2","row1","row2","val1","val2","maxRow","maxCol","minRow","minCol","sheet","refMaxRow","refMinRow","refMaxCol","refMinCol","string","Utils","EngFunctions","require$$5","InformationFunctions","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","FormulaParser$2","isTest","valueOrRef","nullValue","awaitedArgs","supported","fun","allowReturnArray","hooks","FormulaParser","Utils$1","formatChevrotainError","DepParser$1","ignoreError","DepParser","fastFormulaParser","cellValue","Spreadsheet","cachedCols","currentWidth","cacheCol","cachedRows","currentHeight","cacheRow","content","fromRow","toRow","fromCol","toCol","formattedData","view","cellsArray"],"mappings":"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","x_google_ignoreList":[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88]} \ No newline at end of file diff --git a/manifest.json b/manifest.json index 59b301c..d2f72eb 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,14 @@ { + "index.html": { + "file": "demo.js", + "imports": [ + "src/main.ts" + ], + "isEntry": true, + "src": "index.html" + }, "src/main.ts": { - "file": "main.cjs", + "file": "main.js", "isEntry": true, "src": "src/main.ts" },