functionfixopts(opts){vardefaults=[["cellNF",false],["cellHTML",true],["cellFormula",true],["sheetStubs",false],["sheetRows",0,"n"],["bookDeps",false],["bookSheets",false],["bookProps",false],["bookFiles",false],["bookVBA",false],["WTF",false]];defaults.forEach(function(d){if(typeofopts[d[0]]==="undefined")opts[d[0]]=d[1];if(d[2]==="n")opts[d[0]]=Number(opts[d[0]])})}functionparseZip(zip,opts){opts=opts||{};fixopts(opts);reset_cp();varentries=Object.keys(zip.files);varkeys=entries.filter(function(x){returnx.substr(-1)!="/"}).sort();vardir=parseCT(getzipdata(zip,"[Content_Types].xml"),opts);varxlsb=false;varsheets,binname;if(dir.workbooks.length===0){binname="xl/workbook.xml";if(getzipdata(zip,binname,true))dir.workbooks.push(binname)}if(dir.workbooks.length===0){binname="xl/workbook.bin";if(!getzipfile(zip,binname,true))thrownewError("Could not find workbook");dir.workbooks.push(binname);xlsb=true}if(!opts.bookSheets&&!opts.bookProps){strs={};if(dir.sst)strs=parse_sst(getzipdata(zip,dir.sst.replace(/^\//,"")),dir.sst,opts);styles={};if(dir.style)styles=parse_sty(getzipdata(zip,dir.style.replace(/^\//,"")),dir.style,opts)}varwb=parse_wb(getzipdata(zip,dir.workbooks[0].replace(/^\//,"")),dir.workbooks[0],opts);varprops={},propdata="";try{propdata=dir.coreprops.length!==0?getzipdata(zip,dir.coreprops[0].replace(/^\//,"")):"";propdata+=dir.extprops.length!==0?getzipdata(zip,dir.extprops[0].replace(/^\//,"")):"";props=propdata!==""?parseProps(propdata):{}}catch(e){}varcustprops={};if(!opts.bookSheets||opts.bookProps){if(dir.custprops.length!==0){propdata=getzipdata(zip,dir.custprops[0].replace(/^\//,""),true);if(propdata)custprops=parseCustomProps(propdata)}}varout={};if(opts.bookSheets||opts.bookProps){if(props.Worksheets&&props.SheetNames.length>0)sheets=props.SheetNames;elseif(wb.Sheets)sheets=wb.Sheets.map(function(x){returnx.name});if(opts.bookProps){out.Props=props;out.Custprops=custprops}if(typeofsheets!=="undefined")out.SheetNames=sheets;if(opts.bookSheets?out.SheetNames:opts.bookProps)returnout}sheets={};vardeps={};if(opts.bookDeps&&dir.calcchain)deps=parse_cc(getzipdata(zip,dir.calcchain.replace(/^\//,"")),dir.calcchain,opts);vari=0;varsheetRels={};varpath,relsPath;if(!props.Worksheets){varwbsheets=wb.Sheets;props.Worksheets=wbsheets.length;props.SheetNames=[];for(varj=0;j!=wbsheets.length;++j){props.SheetNames[j]=wbsheets[j].name}}varnmode=getzipdata(zip,"xl/worksheets/sheet.xml",true)?1:0;for(i=0;i!=props.Worksheets;++i){try{path="xl/worksheets/sheet"+(i+1-nmode)+(xlsb?".bin":".xml");path=path.replace(/sheet0\./,"sheet.");relsPath=path.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels");sheetRels[props.SheetNames[i]]=parseRels(getzipdata(zip,relsPath,true),path);sheets[props.SheetNames[i]]=parse_ws(getzipdata(zip,path),path,opts,sheetRels[props.SheetNames[i]])}catch(e){if(opts.WTF)throwe}}if(dir.comments)parse_comments(zip,dir.comments,sheets,sheetRels,opts);out={Directory:dir,Workbook:wb,Props:props,Custprops:custprops,Deps:deps,Sheets:sheets,SheetNames:props.SheetNames,Strings:strs,Styles:styles};if(opts.bookFiles){out.keys=keys;out.files=zip.files}if(opts.bookVBA){if(dir.vba.length>0)out.vbaraw=getzipdata(zip,dir.vba[0],true);elseif(dir.defaults.bin==="application/vnd.ms-office.vbaProject")out.vbaraw=getzipdata(zip,"xl/vbaProject.bin",true)}returnout}functionreadSync(data,options){varzip,d=data;varo=options||{};switch(o.type||"base64"){case"file":if(typeofBuffer!=="undefined"){zip=newjszip(d=_fs.readFileSync(data));break}d=_fs.readFileSync(data).toString("base64");case"base64":zip=newjszip(d,{base64:true});break;case"binary":zip=newjszip(d,{base64:false});break}returnparseZip(zip,o)}functionreadFileSync(data,options){varo=options||{};o.type="file";returnreadSync(data,o)}functiondecode_row(rowstr){returnNumber(unfix_row(rowstr))-1}functionencode_row(row){return""+(row+1)}functionfix_row(cstr){returncstr.replace(/([A-Z]|^)([0-9]+)$/,"$1$$$2")}functionunfix_row(cstr){returncstr.replace(/\$([0-9]+)$/,"$1")}functiondecode_col(colstr){varc=unfix_col(colstr),d=0,i=0;for(