UNPKG

ftable

Version:
1 lines 58.1 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("rxjs/operators"),require("@angular/common"),require("@angular/forms"),require("thenby"),require("rxjs"),require("@angular/core"),require("@angular/common/http")):"function"==typeof define&&define.amd?define("ftable",["exports","rxjs/operators","@angular/common","@angular/forms","thenby","rxjs","@angular/core","@angular/common/http"],e):e(t.ftable={},t.rxjs.operators,t.ng.common,t.ng.forms,t.thenby,t.rxjs,t.ng.core,t.ng.common.http)}(this,function(t,a,e,n,u,m,r,o){"use strict";var i=function(){function t(){this.filter=new r.EventEmitter}return t.prototype.reset=function(){},t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),s=function(){function t(){this.filter=new r.EventEmitter,this.values=[]}return t.prototype.ngOnInit=function(){this.initData()},t.prototype.initData=function(){this.values=this.otherData.map(function(t){var e={};return e.value=t,e.checked=!0,e})},t.prototype.checkBoxClicked=function(t,e,n){if("frontend"===this.source){this.filter.emit({columnName:this.columnName,apply:(o=this.columnName,a=this.values,function(t){return 0<a.length?t.filter(function(t){var e=a.map(function(t){return t.value}).indexOf(String(t[o]));return-1!==e&&!0===a[e].checked}):t})})}else{this.values[t].checked=!this.values[t].checked;var r={values:this.values.filter(function(t){return!0===t.checked}).map(function(t){return t.value})};this.filter.emit({columnName:this.columnName,type:"checkbox",apply:r})}var o,a},t.prototype.reset=function(){this.initData(),this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:"\n\n <table class='ft-ffilter-table'>\n \n <tr class='ft-ffilter-column' *ngFor=\"let value of otherData;let index = index\">\n <td class='ft-ffilter-row'>\n <span><input class=\"ft-c\" type=\"checkbox\"[name]=\"columnName\" (click)='checkBoxClicked(index, value ,$event)' value=\"value\" [(ngModel)]='values[index].checked'> {{ value }}</span>\n </td>\n </tr>\n</table>\n \x3c!--\n <div class='ft-ffilter ft-c-filter' *ngFor=\"let value of otherData;let index = index\">\n <input class='ft-c' type=\"checkbox\" [name]=\"columnName\" (click)='checkBoxClicked(index, value ,$event)' value=\"value\" [(ngModel)]='values[index].checked'> {{ value }}<br>\n </div> --\x3e\n "}]}],t.ctorParameters=function(){return[]},t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),l=function(){function t(){this.filter=new r.EventEmitter,this.minDay="",this.minMonth="",this.minYear="",this.maxDay="",this.maxMonth="",this.maxYear=""}return t.prototype.onKeyUp=function(t,e,n){if(8!==n.keyCode&&46!==n.keyCode&&(this[t]=this[t].match(/[0-9]*/).join("").substring(0,e),"minDay"!==t||2!==this[t].length&&39!==n.keyCode?"minMonth"!==t||2!==this[t].length&&39!==n.keyCode?"minYear"!==t||4!==this[t].length&&39!==n.keyCode?"maxDay"!==t||2!==this[t].length&&39!==n.keyCode?"maxMonth"!==t||2!==this[t].length&&39!==n.keyCode?"maxYear"!==t||4!==this[t].length&&39!==n.keyCode||this._elMinDayRef.nativeElement.focus():this._elMaxYearRef.nativeElement.focus():this._elMaxMonthRef.nativeElement.focus():this._elMaxDayRef.nativeElement.focus():this._elMinYearRef.nativeElement.focus():this._elMinMonthRef.nativeElement.focus()),"frontend"===this.source){this.filter.emit({columnName:this.columnName,type:"date",apply:(o=this.columnName,a=this.minDay,i=this.minMonth,s=this.minYear,l=this.maxDay,f=this.maxMonth,c=this.maxYear,function(t){return t.filter(function(t){console.log(o,a,i,s,l,f,c);var e=new Date(t[o]);return!(0<a.length&&!(Number(a)<=e.getDate())||0<i.length&&!(Number(i)<=e.getMonth()+1)||0<s.length&&!(Number(s)<=e.getFullYear())||0<l.length&&!(Number(l)>=e.getDate())||0<f.length&&!(Number(f)>=e.getMonth()+1)||0<c.length&&!(Number(c)>=e.getFullYear()))})})})}else{var r={minDay:this.minDay,minMonth:this.minMonth,minYear:this.minYear,maxDay:this.maxDay,maxMonth:this.maxMonth,maxYear:this.maxYear};this.filter.emit({columnName:this.columnName,type:"date",apply:r})}var o,a,i,s,l,f,c},t.prototype.reset=function(){this.minDay="",this.minMonth="",this.minYear="",this.maxDay="",this.maxMonth="",this.maxYear="",this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:"\n\n <table class='ft-ffilter-table ft-ffilter-date-table'>\n <tr class='ft-ffilter-column'>\n <td class='ft-ffilter-row ft-ffilter-dd-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-day\" type='text' placeholder='dd' [(ngModel)]='minDay' (keyup)='onKeyUp(\"minDay\", 2, $event)' #minDayRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-mm-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-month\" type='text' placeholder='mm' [(ngModel)]='minMonth' (keyup)='onKeyUp(\"minMonth\", 2, $event)' #minMonthRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-yyyy-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-year\" type='text' placeholder='yyyy' [(ngModel)]='minYear' (keyup)='onKeyUp(\"minYear\", 4, $event)' #minYearRef />\n </td>\n </tr>\n <tr class='ft-ffilter-column'>\n <td class='ft-ffilter-row ft-ffilter-dd-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-day\" type='text' placeholder='dd' [(ngModel)]='maxDay' (keyup)='onKeyUp(\"maxDay\" , 2, $event)' #maxDayRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-mm-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-month\" type='text' placeholder='mm' [(ngModel)]='maxMonth' (keyup)='onKeyUp(\"maxMonth\", 2, $event)' #maxMonthRef />\n </td>\n <td class='ft-ffilter-row ft-ffilter-yyyy-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-year\" type='text' placeholder='yyyy' [(ngModel)]='maxYear' (keyup)='onKeyUp(\"maxYear\", 4, $event)' #maxYearRef />\n </td>\n </tr>\n</table>\n \x3c!--\n <div class='ft-ffilter'>\n <div class=\"ft-filter-date ft-div1-ffilter\">\n <input class=\"ft-i ft-i-filter ft-i-filter-day\" type='text' placeholder='dd' [(ngModel)]='minDay' (keyup)='onKeyUp(\"minDay\", 2, $event)' #minDayRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-month\" type='text' placeholder='mm' [(ngModel)]='minMonth' (keyup)='onKeyUp(\"minMonth\", 2, $event)' #minMonthRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-year\" type='text' placeholder='yyyy' [(ngModel)]='minYear' (keyup)='onKeyUp(\"minYear\", 4, $event)' #minYearRef />\n </div>\n <div class=\"ft-filter-date ft-div2-ffilter\">\n <input class=\"ft-i ft-i-filter ft-i-filter-day\" type='text' placeholder='dd' [(ngModel)]='maxDay' (keyup)='onKeyUp(\"maxDay\" , 2, $event)' #maxDayRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-month\" type='text' placeholder='mm' [(ngModel)]='maxMonth' (keyup)='onKeyUp(\"maxMonth\", 2, $event)' #maxMonthRef />\n <input class=\"ft-i ft-i-filter ft-i-filter-year\" type='text' placeholder='yyyy' [(ngModel)]='maxYear' (keyup)='onKeyUp(\"maxYear\", 4, $event)' #maxYearRef />\n </div>\n </div>\n\n --\x3e\n ",styles:["\n :host { flex:1;\n }"]}]}],t.propDecorators={_elMinDayRef:[{type:r.ViewChild,args:["minDayRef"]}],_elMinMonthRef:[{type:r.ViewChild,args:["minMonthRef"]}],_elMinYearRef:[{type:r.ViewChild,args:["minYearRef"]}],_elMaxDayRef:[{type:r.ViewChild,args:["maxDayRef"]}],_elMaxMonthRef:[{type:r.ViewChild,args:["maxMonthRef"]}],_elMaxYearRef:[{type:r.ViewChild,args:["maxYearRef"]}],source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),f=function(){function t(){this.filter=new r.EventEmitter}return t.prototype.reset=function(){},t.decorators=[{type:r.Component,args:[{template:"\n\n "}]}],t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),c=function(){function t(){this.filter=new r.EventEmitter,this.min=null,this.max=null}return t.prototype.numberKeyUp=function(t,e){if(8!==e.keyCode&&46!==e.keyCode&&(this[t]=e.target.value,"min"===t&&39===e.keyCode?this._elMaxRef.nativeElement.focus():"max"===t&&39===e.keyCode&&this._elMinRef.nativeElement.focus()),"frontend"===this.source){this.filter.emit({columnName:this.columnName,apply:(r=this.columnName,o=this.min,a=this.max,function(t){return t.filter(function(t){return(!o||o<=Number(t[r]))&&(!a||a>=Number(t[r]))})})})}else{var n={min:this.min,max:this.max};this.filter.emit({columnName:this.columnName,type:"number",apply:n})}var r,o,a},t.prototype.reset=function(){this.min=null,this.max=null,this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:'\n <table class=\'ft-ffilter-table\'>\n <tr class=\'ft-ffilter-column\'>\n <td class=\'ft-ffilter-row\'>\n <input class="ft-i ft-i-ffilter ft-i-min" type="number" placeholder=\'>=\' [(ngModel)]=\'min\' (keyup)=\'numberKeyUp("min",$event)\' #minRef >\n </td>\n </tr>\n <tr class=\'ft-ffilter-column\'>\n <td class=\'ft-ffilter-row\'>\n <input class="ft-i ft-i-ffilter ft-i-max" type="number" placeholder=\'<=\' [(ngModel)]=\'max\' (keyup)=\'numberKeyUp("max",$event)\' #maxRef >\n </td>\n </tr>\n</table>\n\n \x3c!--\n <div class="ft-ffilter">\n <div class="ft-div1-ffilter">\n <div class="ft-ffilter-prepend">\n <span class="ft-ffilter-text">&gt;=</span>\n </div>\n <input class="ft-i ft-i-ffilter ft-i-min" type="number" [(ngModel)]=\'min\' (keyup)=\'numberKeyUp("min",$event)\' #minRef >\n <div class="ft-ffilter-append">\n <span class="ft-ffilter-text">&lt;=</span>\n </div>\n </div>\n\n <div class="ft-div2-ffilter">\n <div class="ft-ffilter-prepend">\n <span class="ft-filter-text">&lt;=</span>\n </div>\n <input class="ft-i ft-i-filter ft-i-max" type="number" [(ngModel)]=\'max\' (keyup)=\'numberKeyUp("max",$event)\' #maxRef >\n <div class="ft-ffilter-append">\n <span class="ft-filter-text">&gt;=</span>\n </div>\n </div>\n </div>\n --\x3e\n ',styles:["\n :host { flex:1;\n }"]}]}],t.propDecorators={_elMinRef:[{type:r.ViewChild,args:["minRef"]}],_elMaxRef:[{type:r.ViewChild,args:["maxRef"]}],source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),p=function(){function t(){this.filter=new r.EventEmitter,this.value=""}return t.prototype.onKeyUp=function(t){if("frontend"===this.source){this.filter.emit({columnName:this.columnName,apply:(n=this.columnName,r=t.target.value,function(t){return t.filter(function(t){return-1!==String(t[n]).toLowerCase().indexOf(String(r).toLowerCase())})})})}else{var e={value:t.target.value};this.filter.emit({columnName:this.columnName,type:"string",apply:e})}var n,r},t.prototype.reset=function(){this.value="",this.filter.emit({columnName:this.columnName,apply:null})},t.decorators=[{type:r.Component,args:[{template:"\n <table class='ft-ffilter-table'>\n <tr class='ft-ffilter-column'>\n <td class='ft-ffilter-row'>\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-text\" type='text' [(ngModel)]='value' (keyup)='onKeyUp($event)'/>\n </td>\n </tr>\n</table>\n \x3c!--\n <div class=\"ft-ffilter\">\n <div class=\"ft-div1-ffilter\">\n <input class=\"ft-i ft-i-ffilter ft-i-ffilter-text\" type='text' [(ngModel)]='value' (keyup)='onKeyUp($event)'/>\n </div>\n </div>\n --\x3e\n ",styles:["\n :host { flex:1;\n }"]}]}],t.propDecorators={source:[{type:r.Input}],otherData:[{type:r.Input}],columnName:[{type:r.Input}],filter:[{type:r.Output}]},t}(),d=function(){function t(t){this.viewContainerRef=t}return t.decorators=[{type:r.Directive,args:[{selector:"[ffilter-host]"}]}],t.ctorParameters=function(){return[{type:r.ViewContainerRef}]},t}(),h=function(){function t(t){this.componentFactoryResolver=t,this.debounce=500,this.filter=new r.EventEmitter}return t.prototype.ngOnInit=function(){this.loadComponent()},t.prototype.ngOnDestroy=function(){},t.prototype.loadComponent=function(){var t,e=this;t="string"===this.filterType?p:"number"===this.filterType?c:"checkbox"===this.filterType?s:"date"===this.filterType?l:"string"!=typeof this.filterType?this.filterType:f;var n=this.componentFactoryResolver.resolveComponentFactory(t),r=this.ffilterHost.viewContainerRef;r.clear();var o=r.createComponent(n);o.instance.columnName=this.columnName,o.instance.source=this.source,o.instance.otherData=this.otherData,o.instance.filter.pipe(a.debounceTime(this.debounce)).subscribe(function(t){e.filter.emit(t)}),this.filterr=o.instance},t.prototype.reset=function(){this.filterr.reset()},t.totalfilters=0,t.decorators=[{type:r.Component,args:[{selector:"ft-ffilter",template:"\n\n <ng-template ffilter-host></ng-template>\n "}]}],t.ctorParameters=function(){return[{type:r.ComponentFactoryResolver}]},t.propDecorators={ffilterHost:[{type:r.ViewChild,args:[d]}],source:[{type:r.Input}],columnName:[{type:r.Input}],debounce:[{type:r.Input}],filterType:[{type:r.Input}],otherData:[{type:r.Input}],filter:[{type:r.Output}]},t}(),g=function(){function t(){}return t.prototype.generateFileName=function(){var t=new Date;return t.getFullYear()+t.getMonth()+t.getDate()+"_"+(t.getHours()+1)+t.getMinutes()+t.getSeconds()},t.prototype.CSV=function(){var t=this.generateFileName()+".csv",n=[],r="";this.data.forEach(function(t){for(var e in t)t.hasOwnProperty(e)&&(n.indexOf(e)<=-1&&n.push(e),r+=t[e]+",");r=r.slice(0,-1)+"\r\n"}),r=n.map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}).join()+"\r\n"+r;var e=new Blob([r],{type:"text/csv"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(e,t);else{var o=window.document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t,document.body.appendChild(o),o.click(),document.body.removeChild(o)}},t.prototype.COPY=function(){var t=document.createElement("textarea"),r=[],o="";this.data.forEach(function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&(r.indexOf(n)<=-1&&r.push(n),e.push(t[n]));o+=r.map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}).join()+"\r\n"+e.join(",")+"\r\n"});try{t.value=o,t.setAttribute("id","t1"),document.body.appendChild(t);var e=document.getElementById("t1");e.focus(),e.select(),document.execCommand("copy",!1,null)}catch(n){console.log("Oops, unable to copy")}document.body.removeChild(t)},t.prototype.PRINT=function(){var o=[],t=document.implementation.createDocument("http://www.w3.org/1999/xhtml","html",null),e=document.createElementNS("http://www.w3.org/1999/xhtml","body");t.documentElement.appendChild(e);var n=document.createElement("table");e.appendChild(n);var a=document.createElement("tbody");n.appendChild(a),this.data.forEach(function(t){var e=document.createElement("tr");for(var n in t)if(t.hasOwnProperty(n)){var r=document.createElement("td");o.indexOf(n)<=-1?(o.push(n),r.textContent=n.substr(0,1).toUpperCase()+n.substr(1)):r.textContent=t[n],e.appendChild(r)}a.appendChild(e)});var r=window.open("about:blank","_new");r.document.open(),r.document.write((new XMLSerializer).serializeToString(t)),r.print(),r.close()},t.prototype.JSON=function(){var t=this.generateFileName()+".json",e=new Blob([JSON.stringify(this.data)],{type:"text/json"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(e,t);else{var n=window.document.createElement("a");n.href=window.URL.createObjectURL(e),n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n)}},t.prototype.make_crc_table=function(){var t,e,n,r=[];for(e=0;e<256;e++){for(t=e,n=0;n<8;n++)t=0<(1&t)?(3988292384^t>>>1)>>>0:t>>>1>>>0;r[e]=t}return r},t.prototype.crc32=function(t){var e,n=this.make_crc_table(),r=-1;for(e=0;e<t.length;e++)r=n[255&(r^t[e].charCodeAt(0))]^r>>>8;return(4294967295^r)>>>0},t.prototype.numberToExcelLetters=function(t){var e=Math.floor(t/26),n=t%26,r="";return 0<e&&(r+=this.numberToExcelLetters(e)),0<n&&(r+=String.fromCharCode(64+n)),r},t.prototype.generateSharedStringsLFH=function(t){var e="",n=0;for(n=0;n<t.length;n++)e+="<si><t>"+t[n]+"</t></si>";var r='<?xml version="1.0" encoding="UTF-8"?><sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="100" uniqueCount="100">'+e+"</sst>",o=this.crc32(r).toString(16).match(/.{2}/g).reverse().map(function(t){return console.log(t),String.fromCharCode(parseInt(t,16))}).join(""),a=("00000000"+r.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return console.log("Size:"+t),String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:o,compressedSize:a,uncompressedSize:a,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+o+a+a+"\0\0\0xl/sharedStrings.xml"+r}},t.prototype.generateStylesLFH=function(){var t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"><fonts count="2" x14ac:knownFonts="1"><font><sz val="11"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font><font><sz val="11"/><color theme="0"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts><fills count="3"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor theme="4" tint="-0.249977111117893"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="13"><border><left/><right/><top/><bottom/><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top/><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="thin"><color auto="1"/></bottom><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top style="thin"><color auto="1"/></top><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="medium"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="thin"><color auto="1"/></right><top/><bottom style="medium"><color auto="1"/></bottom><diagonal/></border><border><left style="thin"><color auto="1"/></left><right style="medium"><color auto="1"/></right><top/><bottom style="medium"><color auto="1"/></bottom><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="13"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/><xf numFmtId="0" fontId="0" fillId="0" borderId="1" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="2" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="3" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="4" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="5" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="6" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="7" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="8" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="0" fillId="0" borderId="9" xfId="0" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="10" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="11" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="12" xfId="0" applyFont="1" applyFill="1" applyBorder="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles><dxfs count="0"/><tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/><extLst><ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"><x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/></ext><ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/></ext></extLst></styleSheet>',e=("00000000"+this.crc32(t).toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return console.log(t),String.fromCharCode(parseInt(t,16))}).join(""),n=("00000000"+t.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return console.log("Size:"+t),String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:e,compressedSize:n,uncompressedSize:n,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+e+n+n+"\r\0\0\0xl/styles.xml"+t}},t.prototype.generateWorkbookLFH=function(){var t='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r\n<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><fileVersion appName="xl" lastEdited="6" lowestEdited="6" rupBuild="14420"/><workbookPr filterPrivacy="1" defaultThemeVersion="164011"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="22260" windowHeight="12645"/></bookViews><sheets><sheet name="Sheet1" sheetId="1" r:id="rId1"/></sheets><definedNames>';t+='<definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">Sheet1!$A$1:$'+this.numberToExcelLetters(Object.keys(this.data[0]).length)+"$"+this.data.length+"</definedName>",t+='</definedNames><calcPr calcId="162913"/><extLst><ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:workbookPr chartTrackingRefBase="1"/></ext></extLst></workbook>';var e=("00000000"+this.crc32(t).toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),n=("00000000"+t.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:e,compressedSize:n,uncompressedSize:n,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+e+n+n+"\0\0\0xl/workbook.xml"+t}},t.prototype.generateSheet1LFH=function(t){var e='<?xml version="1.0" encoding="UTF-8"?><worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" mc:Ignorable="x14ac"><dimension ref="A1:';e+=this.numberToExcelLetters(Object.keys(this.data[0]).length)+this.data.length,e+='" /><sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="A1" sqref="A1" /></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25" /><sheetData>\r\n';var n=t.shift(),r=t.shift(),o=t.pop();e+='<row r="1" spans="1:5" ht="15.75" thickBot="1" x14ac:dyDescent="0.3">';for(var a="",i=0;i<n.length;i++)a=0==i?"10":i==n.length-1?"12":"11",e+='<c r="'+this.numberToExcelLetters(i+1)+'1" s="'+a+'" t="s"><v>'+n[i]+"</v></c>";e+="</row>",e+='<row r="2" spans="1:5" x14ac:dyDescent="0.25">';for(i=0;i<r.length;i++)a=0==i?"1":i==r.length-1?"3":"2",e+='<c r="'+this.numberToExcelLetters(i+1)+'2" s="'+a+'" t="s"><v>'+r[i]+"</v></c>";e+="</row>";for(var s=0;s<t.length;s++){e+='<row r="'+(s+3).toString()+'" spans="1:5" x14ac:dyDescent="0.25">';for(i=0;i<t[s].length;i++)a=0==i?"4":i==t[s].length-1?"6":"5",e+='<c r="'+this.numberToExcelLetters(i+1)+(s+3).toString()+'" s="'+a+'" t="s"><v>'+t[s][i].toString()+"</v></c>";e+="</row>"}e+='<row r="'+(t.length+3).toString()+'" spans="1:5" ht="15.75" thickBot="1" x14ac:dyDescent="0.3">';for(a="8",i=0;i<o.length;i++)0==i&&(a="7"),i==o.length-1&&(a="9"),e+='<c r="'+this.numberToExcelLetters(i+1)+(t.length+3).toString()+'" s="'+a+'" t="s"><v>'+o[i]+"</v></c>";e+="</row>",e+='</sheetData><autoFilter ref="A1:',e+=this.numberToExcelLetters(Object.keys(this.data[0]).length)+(this.data.length+1).toString(),e+='" /><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3" /><pageSetup paperSize="9" orientation="portrait" r:id="rId1" /></worksheet>';var l=("00000000"+this.crc32(e).toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),f=("00000000"+e.length.toString(16).toUpperCase()).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join("");return{compression:"\0\0",crc32:l,compressedSize:f,uncompressedSize:f,localFileHeader:"PK\0\0\0\0\0\0\0!\0"+l+f+f+"\0\0\0xl/worksheets/sheet1.xml"+e}},t.prototype.generateSharedStringsCD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=t.uncompressedSize;return"PK?\0\0\0\0"+r+"\0\0!\0"+o+t.compressedSize+a+"\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/sharedStrings.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨ƹ/:¨ºÒƹ/:¨ºÒ"},t.prototype.generateStylesCD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=t.uncompressedSize;return"PK?\0\0\0\0"+r+"\0\0!\0"+o+t.compressedSize+a+"\r\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/styles.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨mŠ3:¨ºÒmŠ3:¨ºÒ"},t.prototype.generateWorkbookCD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=t.uncompressedSize;return"PK?\0\0\0\0"+r+"\0\0!\0"+o+t.compressedSize+a+"\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/workbook.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨F6:¨ºÒF6:¨ºÒ"},t.prototype.generateSheet1CD=function(t,e){var n=("00000000"+e.toString(16)).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""),r=t.compression,o=t.crc32,a=(t.uncompressedSize,t.compressedSize);return"PK?\0\0\0\0"+r+"\0\0!\0"+o+a+a+"\0$\0\0\0\0\0\0\0 \0\0\0"+n+"xl/worksheets/sheet1.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨÷‡::¨ºÒ÷‡::¨ºÒ"},t.prototype.XLSX=function(){var t,e,n=this.generateFileName()+".xlsx",r=Object.keys(this.data[0]).map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}),o=[];for(o[0]=[],t=0;t<r.length;t++)o[0][t]=t;for(e=0;e<this.data.length;e++)for(var a in this.data[e]){var i=r.indexOf(this.data[e][a]);-1==i&&(i=r.push(this.data[e][a])-1),o[e+1]===undefined&&(o[e+1]=[]),o[e+1].push(i)}var s='PK\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0docProps/PK\0\0\0\b\0\0\0!\0aI\t{\0\0\0\0\0\0\0docProps/app.xml’AOã0…ï+íˆ|§NØZU®ÑªìŠÃ®¨ÔgãL\x0BǶ<CÔòë™ڔ‰Û̼§—/3V—›Î=dt1ÌD5)EÁÆÚ…õLÜ®þžý’\tµñ1ÀLlÅ¥þþM-rLÉp&Z¢4•m\x0BÁ\tˁ•&æÎ·y-cÓ8\x0BWÑ>uHž—å…„\rA¨¡>K‡@ñš8íé«¡u´Þ­¶‰ó´ú’wÖÿ¥þïlŽ*þl,x%EÅAK°OÙÑV—J·ji‡9ëÆx%ǁº3,ma\\F­zšö`)æÝ3¯í\\q¸éMv&ØÙޚ]íRÖ÷1?b\x0B@¨äa8”£÷¤v?uņ¡81Ê\b×ïWŽ<àM³0™>!®Ž‰w\fâˆq9ðU#ßɗN²ç±K&lY8Tÿ\\xÄÛ´ŠW†`¿Î÷CµlM†š/°×ǁºf®ìÿ¼5a\rõÞóAØÿîõ…ëêbRþ(ù®ãŒ©Æ·¬_\0PK\0\0\0\b\0\0\0!\x007 |3\0\0Q\0\0\0\0\0docProps/core.xml…’]KÃ0†ïÿCÉ}›ds_¥í@eW+Šw!9ۊÍI´Û¿7í¶nbÁ˓÷=ÏyÏ!Ùr/ë謫´ÊM\bŠ@q-*µÍÑk¹Šç(rž)Áj­ GphYÜÞdܤ\\[x¶Ú€õ¸(”K¹ÉÑÎ{“bìø$sIp¨ n´•̇Òn±aü“m\b™b\tž\tæn±é‰è„¼Gš/[w\0Á1Ô Ay‡iBñÅëÁJ7ØÐ)WNYùƒAëYìÝ{WõƦi’fÜZÛü¿¯Ÿ^ºUãJµ·â€ŠLð”[`^Û"ÃWE{¸š9¿7ÞT îAx;-rì…\0é1îYy?<–+TŒ\bÄd“IIç)¥#òFþî¿\0e7ä?â,&w1]”¤#N=ñ\b¹ÿ|‚âPK\0\0\0\0\0û‚•J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/PK\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/printerSettings/PK\0\0\0\b\0\0\0!\0]Ö\tD\0\0\0Ü\0\0\0\'\0\0\0xl/printerSettings/printerSettings1.bin­¡À ïÿ3™d"RJ\f\rDe¢1@UÔF/pVÜ®;L"›í™¶‡érGdÝ\bª®q_8¬C:ks!ß\nPK\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0xl/theme/PK\0\0\0\b\0\0\0!\0u>™iÙ\0\0Œ\0\0\0\0\0xl/theme/theme1.xmlíY[\x0BÓ0~ü¥ï³÷v§lÝæý‚W|Œ]¶FÓf$™:D}òET||óADAAñÅ#(^~„§í\\Û5󆊨lÉÉwN¾œ“œ$íŽ]ªÇ\\–vuk›©k8Ø˜¤Ó®~âø¨ÕÖ5!Q:F”¥¸«/°ÐwíܺeÚ.cœ`\rôS±uõXÊÙvÈ‘ØÆf8…¶\tã\t’PåScÌѰ›PÃ6MßHIu-E\t˜=<™\bkÇ3“úÎÏÆ‡~R)2ADù±(V5\nìøœ•ý‰…\b)×Î#ÚÕ¡Ÿ1»p_”ºF‘ÐÐÕÍü£;w+%*7èVôFù\'×[*dêv®Ç§gVŠ®ë¹~oeß.ì7qÃ`èý· (‚‘Z\r¬×ïô^-AË¢Êö 8V_µï4ð=/ûÖðN‰wøÑ(\\ù°}.z\nŸvèÖð^‰÷øÀì\rÜà3¾Ŕ¤çhÓóp9Ú2atÞñÜQ`/á%ʨ̮B?•›æZ‚Î2>@\\$IªÉÅ\fOP¸Qr†í\0™Æ0ñf(eĦmŽL~³¯›—À#™Œ*څ(5Ñg>šˆ8™É®¾¬êț/^_}öúêó××®½¾úxÙwSoJ§U½n~¼wE{ÿôþ‡[·ÕxQÅ¿}týíËW_2/k´î<yûìɛ»7Þ=¼¥€÷8:S…\'\tÚ!|A;Ê”ª:Àgø÷i©i \nàPÆ5à¡¢*\\×]x’C¦PwÏÏÖ¸‹ù\\pœÔ€£}ƕÃÙ}Ն3O§êÎù¼Š;ŠÐyUßáZ€‡óLy‚TÐ×h¡m4Å)–ZÖÆÎa¬P;M\b©ŽDœ\t6‘Úi¢õQºä89#ÕJ{HqY u¨QMé¤ÖgTe~€Ïב\b¼HU&1­¹q7šK”(£„V‘ŒU$-xTs¸zǔiÃ1B¥s˜/jt÷C†Q‡ý ]$u$—ä\\™ñc¬Š°saŒ’™’3Iã*v¯8SiG˜T’`ÕRÔ!(Ýî“Ëï[Ö\' ©\'HÖ2çª%Y}=.èáܸ±–Ò’~5¿¯evï÷dö_–Ó~6ïq‚è7äð÷wdîš§GpÿOÜÿ÷?™¸óµü[Òu™¡B±rrO6Ü\'„ÒcrAñ‘çvÏ@˜Wr¥Õ=aC1ïn\r7å(/kœÉSDÆÇb4ƒn,=o`º(h3&`wÐ7ÚÎw—yr\x0B©eWÓ\\ÉRnz+9ìE²úÁêVš‡ZÖu•@¦û=$–5I8\nóm$,óg±è(X´­/±0*Qõ§Áª¯¸#˜oˆâqW/ôóèþšH«œÙ¶­^Çý6\'C¤k$,s‰Ê4ŒÑ¯ÄßFã{cÝé¨Cm+ií_k£™hZ¯i`Í9˜‰Ð¬«Oà\\\bÅdöD–7ÂóHrý‡3ˌ\x0B9@".`yS1þ„HÌ5J˜ëe2V%7ËÌ?—\\Çüó<g¬O&8’$eÚ2#µÖŸÎ*l¤Åã\x0BÚ:çG8Ê\x0B¬Ìc"dîÍ¢ÂW“»êŵteêÍGfåEt£å޲Jæ+xV.édµ’isT†Ê…g¦£Ÿ±ë~]i-inØ@Uûś|…•£få)s]§½i—ø¶Lü\rB…Z[MÍQSÛ´wüÄA¥;ßÙ´Gü¢Ý`}Ö•seVk¾›`gÎÂÌÀquN¥(îÿáŽ.Ÿ*gv>K¡¸,isNºú%Ó빡í…-³í\r[®ãš­¶×sZ=Ïs¬¡g™ƒ¾}œ"ãÄòоGpŸ¡‹å«—\\Þxý’|>fo‹Xb°üläÊùëËÞüúE#c åÛ£ŽÓéû­ŽÓµÜA¿Ýê„~¿5ðÃ`0„^»3º¬kçs°ÛsB×¶[¾†-×7>\0ZkÛ=7赇nïrîë|äŸÿ—î-µóPK\0\0\0\0\0ý‚•J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/worksheets/PK\0\0\0\0\0…”J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0xl/worksheets/_rels/PK\0\0\0\b\0\0\0!\0;m2K»\0\0\0B\0\0#\0\0\0xl/worksheets/_rels/sheet1.xml.relsÏ=ŽÂ0à~¥½ƒ5ýÚÉ«ŠCƒhù9€q&‰E2¶<‚ÛãåÓÓ|£×,¯ó¤.˜9D²Pë\n’] ÁÂa¿þùÅâ¨sS$´pC†eûýÕlqrRŽx\f‰UQˆ-Œ"ia\fûgÇ:&¤Òô1ÏNJ̃IΟ܀淪þL~4 }2Õ¦³7]\rjKø‰û>x\\Ež‘äÍ\x0B“r Á¼C‘2\x0Bíò€bAë×î5×ú\bLۘ§åíPK\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0xl/_rels/PK\0\0\0\b\0\0\0!\0>”—ê\0\0\0º\0\0\0\0\0xl/_rels/workbook.xml.rels­’ÍjÃ0„ï…¾ƒØ{-;-¥”ȹ”B®mú\0BZ[&¶$´Û¿}EB~\f!äà“˜;óÁîrõ7ôâuÁ+¨Šzlç[_›÷‡ÄÚ[ݏ\nF$XÕ÷wËì5ç!r]$‘S<)pÌñUJ2MEˆèóOÒ 9ËÔʨÍV·(eù,ÓyԓL±¶\nÒÚ>‚ØŒoÉMÓ|\x0Bæ{@Ï*$ñØ#åDZd{]䐗ësÖsžÅSûNîÍêC5\'ÃoH[rˆ|â8Z$wÏU˜§9aÈé„ö“S>·³µL쌜\\\\ýPK\0\0\0\b\0\0\0!\0A7‚Ïc\0\0\0\0\0\0\0[Content_Types].xml­”MnÂ0…÷•z‡Èۊº¨ªŠÀ¢?Ë\tz\0Oˆ…c[žÂí;$´j%`+™yï{“ØŽ7•MÖÑx—‰AÚ\t¸Ükã™xŸ½ôîE‚¤œVÖ;ÈÄPŒG×WÃÙ6\0&¬v˜‰’(<H‰y\t•ÂÔp\\)|¬ñm\\È ò¥Z€¼í÷ïdí<Ähø…ZYJž7ü¸I27N$M£˜¬B°&WÄe¹vú\0ÒóEarÐ>_U,I1DPK\0ªl¢a§8"\f…<ʌ`±t?UÊʺKð†þ på`¯{ãύ†d¢"½ªŠ»äÆÊ—sï—)·uKyòÕÔkZ)ãnÚùu3Êz\\8È·Kâ=Íõü\bµM\x0BikÏFýž¶1m#—*‚žRäM{ñ\0?¼Oæ`ý$ú€|j#tñuDvê^ˆ\\dàD¶î<˜v§Oƒ>–õ?lô\tPK\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_rels/PK\0\0\0\b\0\0\0!\0µU0#ë\0\0\0L\0\0\x0B\0\0\0_rels/.rels’ÍJ1\f€ï‚ïPrßÉì\n"²½ˆ°7‘õb›ùafšÒV}{‹ :°?sl“|ù²ÝMã >9ÄNœ†uQ‚bgÄv®Ñðvx^=€Š‰œ¥Ak8r„]u{³}åR.Šmç£Ê5´)ùGÄhZ)âÙåH-a¤”Ÿ¡AO¦§†qS–÷þ3 š1ÕÞj\b{{êpô¼„-uÝ~ó1²K\'Z O‰e»ò!ׇÔqÌx\n\r\'\rVÌKþŽHÞ\rxÚh³Üèü´8r"K‰ÐHà‹>?—„Ö˅®¯hžñg3\rø%¡é]pvÕ7',l=s.length,f=this.generateSharedStringsLFH(r),c=(s+=f.localFileHeader).length,p=this.generateStylesLFH(),u=(s+=p.localFileHeader).length,m=this.generateWorkbookLFH(),d=(s+=m.localFileHeader).length,h=this.generateSheet1LFH(o);s+=h.localFileHeader;var g="PK?\0\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\t\0$\0\0\0\0\0\0\0\0\0\0\0\0\0\0docProps/\n\0 \0\0\0\0\0\0\0†µ“ä¹Ò†µ“ä¹Ò˜ä®“ä¹ÒPK?\0\0\0\0\b\0\0\0!\0aI\t{\0\0\0\0\0$\0\0\0\0\0\0\0 \0\0\0'\0\0\0docProps/app.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨ž§±“ä¹Òž§±“ä¹ÒPK?\0\0\0\0\b\0\0\0!\x007 |3\0\0Q\0\0\0$\0\0\0\0\0\0\0 \0\0\0Ð\0\0docProps/core.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨†µ“ä¹Ò†µ“ä¹ÒPK?\0\0\0\0\0\0û‚•J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\x002\0\0xl/\n\0 \0\0\0\0\0\0\0´¾æªºÒ´¾æªºÒ„ñ·“ä¹ÒPK?\0\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0S\0\0xl/printerSettings/\n\0 \0\0\0\0\0\0\0&FǓä¹Ò&FǓä¹Ò+ÍÓä¹ÒPK?\0\0\0\0\b\0\0\0!\0]Ö\tD\0\0\0Ü\0\0\0'\0$\0\0\0\0\0\0\0 \0\0\0„\0\0xl/printerSettings/printerSettings1.bin\n\0 \0\0\0\0\0\0\0\0°Lç¨&FǓä¹Ò&FǓä¹ÒPK?\0\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\t\0$\0\0\0\0\0\0\0\0\0\0\r\0\0xl/theme/\n\0 \0\0\0\0\0\0\0KÃ˓ä¹ÒKÃ˓ä¹Ò_yɓä¹ÒPK?\0\0\0\0\b\0\0\0!\0u>™iÙ\0\0Œ\0\0\0$\0\0\0\0\0\0\0 \0\0\x004\0\0xl/theme/theme1.xml\n\0 \0\0\0\0\0\0\0\0°Lç¨KÃ˓ä¹ÒKÃ˓ä¹ÒPK?\0\0\0\0\0\0ý‚•J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0>\n\0\0xl/worksheets/\n\0 \0\0\0\0\0\0\0.héªºÒ.héªºÒŸΓä¹ÒPK?\0\0\0\0\0\0…”J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0j\n\0\0xl/worksheets/_rels/\n\0 \0\0\0\0\0\0\0T«D®ä¹ÒT«D®ä¹Òù™Ó“ä¹ÒPK?\0\0\0\0\b\0\0\0!\0;m2K»\0\0\0B\0\0#\0$\0\0\0\0\0\0\0 \0\0\0œ\n\0\0xl/worksheets/_rels/sheet1.xml.rels\n\0 \0\0\0\0\0\0\0\0°Lç¨Ý\n֓ä¹ÒÝ\n֓ä¹ÒPK?\0\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\t\0$\0\0\0\0\0\0\0\0\0\0˜\x0B\0\0xl/_rels/\n\0 \0\0\0\0\0\0\0%çۓä¹Ò%çۓä¹Òï¢Ø“ä¹ÒPK?\0\0\0\0\b\0\0\0!\0>”—ê\0\0\0º\0\0\0$\0\0\0\0\0\0\0 \0\0\0¿\x0B\0\0xl/_rels/workbook.xml.rels\n\0 \0\0\0\0\0\0\0\0°Lç¨%çۓä¹Ò%çۓä¹ÒPK?\0\0\0\0\b\0\0\0!\0A7‚Ïc\0\0\0\0\0$\0\0\0\0\0\0\0 \0\0\0á\f\0\0[Content_Types].xml\n\0 \0\0\0\0\0\0\0\0°Lç¨ÇL¬“ä¹ÒÇL¬“ä¹ÒPK?\0\0\0\0\0\0‡…”J\0\0\0\0\0\0\0\0\0\0\0\0\0$\0\0\0\0\0\0\0\0\0\0u\0\0_rels/\n\0 \0\0\0\0\0\0\0\r{à“ä¹Ò\r{à“ä¹Ò1ޓä¹ÒPK?\0\0\0\0\b\0\0\0!\0µU0#ë\0\0\0L\0\0\x0B\0$\0\0\0\0\0\0\0 \0\0\0™\0\0_rels/.rels\n\0 \0\0\0\0\0\0\0\0°Lç¨\r{à“ä¹Ò\r{à“ä¹Ò";g+=this.generateSharedStringsCD(f,l)+this.generateStylesCD(p,c)+this.generateWorkbookCD(m,u)+this.generateSheet1CD(h,d);for(var y=s.length.toString(16),b=g.length.toString(16),x=s+g+("PK\0\0\0\0\0\0"+(b=("00000000"+b).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""))+(y=("00000000"+y).slice(-8).match(/.{2}/g).reverse().map(function(t){return String.fromCharCode(parseInt(t,16))}).join(""))+"\0\0"),v=x.length,P=new Uint8Array(v),C=0;C<v;++C)P[C]=x.charCodeAt(C);var I=new Blob([P],{type:"application/octet-stream"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(I,n);else{var S=window.document.createElement("a");S.href=window.URL.createObjectURL(I),S.download=n,document.body.appendChild(S),S.click(),document.body.removeChild(S)}},t.prototype.PDF=function(){var t,e=this.generateFileName()+".pdf",n=[],r="%PDF-1.4\r\n1 0 obj <</Type /Catalog /Pages 2 0 R>>\r\nendobj\r\n2 0 obj <</Type /Pages /Kids [3 0 R] /Count 1>>\r\nendobj\r\n3 0 obj<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 500 ";for(r+=(20+15*(this.data.length+1)).toString(),r+="] /Contents 6 0 R>>\r\nendobj\r\n4 0 obj<</Font <</F1 5 0 R>>>>\r\nendobj\r\n5 0 obj<</Type /Font /Subtype /Type1 /BaseFont /Helvetica>>\r\nendobj\r\n6 0 obj\r\n<</Length 44>>\r\nstream\r\n",t=0;t<this.data.length;t++){for(var o in r+="BT /F1 12 Tf 10 "+(15*(this.data.length-t)).toString()+" Td (",r+=t.toString()+": ",this.data[t])n.indexOf(o)<=-1&&n.push(o),r+=this.data[t][o]+" ";r+=")Tj ET\r\n"}r+="BT /F1 12 Tf 10 "+(15*(this.data.length+1)).toString()+" Td ("+n.map(function(t){return t.substr(0,1).toUpperCase()+t.substr(1)}).join(" ")+")Tj ET\r\n";for(var a=(r+="endstream\r\nendobj\r\nxref\r\n0 7\r\n0000000000 65535 f\r\n0000000009 00000 n\r\n0000000056 00000 n\r\n0000000111 00000 n\r\n0000000212 00000 n\r\n0000000250 00000 n\r\n0000000317 00000 n\r\ntrailer <</Size 7/Root 1 0 R>>\r\nstartxref\r\n406\r\n%%EOF").length,i=new Uint8Array(a),s=0;s<a;++s)i[s]=r.charCodeAt(s);var l=new Blob([i],{type:"application/octet-stream"});if(window.navigator.msSaveOrOpenBlob)window.navigator.msSaveBlob(l,e);else{var f=window.document.createElement("a");f.href=window.URL.createObjectURL(l),f.download=e,document.body.appendChild(f),f.click(),document.body.removeChild(f)}},t.decorators=[{type:r.Component,args:[{selector:"ft-fexporter",template:'<div class="ft-fexporter">\r\n <button id=\'ft-b-fexporter_copy\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("Copy")\' (click)="COPY()" title="Copy"><i></i></button>\r\n <button id=\'ft-b-fexporter_csv\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("CSV")\' (click)="CSV()" title="Export CSV"><i></i></button>\r\n <button id=\'ft-b-fexporter_json\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("JSON")\' (click)="JSON()" title="Export JSON"><i></i></button>\r\n <button id=\'ft-b-fexporter_print\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("Print")\' (click)="PRINT()" title="Export Print"><i></i></button>\r\n <button id=\'ft-b-fexporter_xlsx\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("XLSX")\' (click)="XLSX()" title="Export XLSX"><i></i></button>\r\n <button id=\'ft-b-fexporter_pdf\' class="ft-b ft-b-fexporter" *ngIf=\'formats.includes("PDF")\' (click)="PDF()" title="Export PDF"><i></i></button>\r\n</div>',providers:[],styles:[""]}]}],t.propDecorators={formats:[{type:r.Input}],data:[{type:r.Input}]},t}(),y=function(){function t(){this.Math=Math}return t.prototype.ngOnInit=function(){this.totalPages=Math.ceil(this.totalItems/this.itemsPerPage)},t.decorators=[{type:r.Component,args:[{selector:"ft-finfo",template:"<div class=\"ft-finfo\"><span class='ft-finfo-1'>Showing {{ 1+((currentPage*itemsPerPage)-itemsPerPage) }} to {{ this.Math.min(currentPage*itemsPerPage,totalItemsAfterFilters) }} of {{ totalItemsAfterFilters }} entries</span><ng-container *ngIf='totalItems>totalItemsAfterFilters'><span class='ft-finfo-2'>(filtered from {{ totalItems }} total entries)</span></ ng-container></div>",styles:[""]}]}],t.ctorParameters=function(){return[]},t.propDecorators={totalItemsAfterFilters:[{type:r.Input}],itemsPerPage:[{type:r.Input}],totalItems:[{type:r.Input}],currentPage:[{type:r.Input}]},t}(),b=function(){function t(){this.onPageOptionChange=new r.EventEmitter}return t.prototype.onChange=function(t){this.selectedPageIndex=this.pageOptions.indexOf(Number(t.target.value)),this.onPageOptionChange.emit(this.pageOptions.indexOf(Number(t.target.value)))},t.decorators=[{type:r.Component,args:[{selector:"ft-fpager",template:'\r\n<div class="ft-fpager">\r\n <div class="ft-fpager-prepend">\r\n <label class="ft-pager-text" for="inputGroupSelect01">Show</label>\r\n </div>\r\n <select (change)="onChange($event)" [value]=\'pageOptions[selectedPageIndex]\' class="ft-i ft-fpager-select" id="inputGroupSelect01">\r\n <option *ngFor="let option of pageOptions" [value]=\'option\'>{{option}}</option>\r\n </select>\r\n <div class="ft-fpager-append">\r\n <label class="ft-pager-text">entries</label>\r\n </div>\r\n </div>',styles:[""]}]}],t.propDecorators={selectedPageIndex:[{type:r.Input}],pageOptions:[{type:r.Input}],onPageOptionChange:[{type:r.Output}]},t}(),x=function(){function t(){this.PagingChange=new r.EventEmitter}return Object.defineProperty(t.prototype,"totalItemsAfterFilters",{set:function(t){this._totalItemsAfterFilters=t,this.totalPages=Math.ceil(this._totalItemsAfterFilters/this.itemsPerPage),this._currentPage=1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"currentPage",{set:function(t){this._currentPage=t},enumerable:!0,configurable:!0}),t.prototype.ngOnInit=function(){this.totalPages=Math.ceil(this._totalItemsAfterFilters/this.itemsPerPage),this.setCurrentPage(this._currentPage)},t.prototype.ngOnChanges=function(){this.totalPages=Math.ceil(this._totalItemsAfterFilters/this.itemsPerPage)},t.prototype.setCurrentPage=function(t){this._currentPage=t,this.PagingChange.emit(t)},t.prototype.firstPage=function(){this.setCurrentPage(1)},t.prototype.previousPage=function(){this.setCurrentPage(this._currentPage-1)},t.prototype.nextPage=function(){this.setCurrentPage(this._currentPage+1)},t.prototype.lastPage=function(){this.setCurrentPage(this.totalPages)},t.prototype.isFirstDisabled=function(){return 1===this._currentPage},t.prototype.isPreviousDisabled=function(){return 1===this._currentPage},t.prototype.isNextDisabled=function(){return this._currentPage===this.totalPages},t.prototype.isLastDisabled=function(){return this._currentPage===this.totalPages},t.decorators=[{type:r.Component,args:[{selector:"ft-fpaginate",template:'<div id="ft-fpaginate" class="ft-fpaginate">\r\n \r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_first\' [disabled]="isFirstDisabled()" (click)="firstPage()"><i></i></button>\r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_previous\' [disabled]="isPreviousDisabled()" (click)="previousPage()"><i></i></button>\r\n\r\n \x3c!-- <span> --\x3e\r\n <ng-container *ngIf="totalPages < 8">\r\n <ng-container *ngIf="totalPages > 0">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 1, \'ft-b-fpaginate_current\': _currentPage == 1}" (click)="setCurrentPage(1)">1</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 1">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 2, \'ft-b-fpaginate_current\': _currentPage == 2}" (click)="setCurrentPage(2)">2</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 2">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 3, \'ft-b-fpaginate_current\': _currentPage == 3}" (click)="setCurrentPage(3)">3</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 3">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 4, \'ft-b-fpaginate_current\': _currentPage == 4}" (click)="setCurrentPage(4)">4</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 4">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 5, \'ft-b-fpaginate_current\': _currentPage == 5}" (click)="setCurrentPage(5)">5</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 5">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 6, \'ft-b-fpaginate_current\': _currentPage == 6}" (click)="setCurrentPage(6)">6</button>\r\n </ng-container>\r\n <ng-container *ngIf="totalPages > 6">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 7, \'ft-b-fpaginate_current\': _currentPage == 7}" (click)="setCurrentPage(7)">7</button>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="totalPages > 7">\r\n\r\n <ng-container *ngIf="_currentPage < 5">\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 1, \'ft-b-fpaginate_current\': _currentPage == 1}" (click)="setCurrentPage(1)">1</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 2, \'ft-b-fpaginate_current\': _currentPage == 2}" (click)="setCurrentPage(2)">2</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 3, \'ft-b-fpaginate_current\': _currentPage == 3}" (click)="setCurrentPage(3)">3</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != 4, \'ft-b-fpaginate_current\': _currentPage == 4}" (click)="setCurrentPage(4)">4</button>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(5)">5</button>\r\n <span class=\'ft-paginate_ellipsis\'>&#8230;</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(totalPages)">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="_currentPage >= totalPages-3">\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(1)">1</button>\r\n <span class=\'ft-paginate_ellipsis\'>&#8230;</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(totalPages-4)">{{totalPages-4}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages-3), \'ft-b-fpaginate_current\': _currentPage == (totalPages-3)}" (click)="setCurrentPage(totalPages-3)">{{totalPages-3}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages-2), \'ft-b-fpaginate_current\': _currentPage == (totalPages-2)}" (click)="setCurrentPage(totalPages-2)">{{totalPages-2}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages-1), \'ft-b-fpaginate_current\': _currentPage == (totalPages-1)}" (click)="setCurrentPage(totalPages-1)">{{totalPages-1}}</button>\r\n <button class=\'ft-b\' [ngClass]="{\'ft-b-fpaginate\': _currentPage != (totalPages), \'ft-b-fpaginate_current\': _currentPage == (totalPages)}" (click)="setCurrentPage(totalPages)">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n <ng-container *ngIf="(_currentPage < (totalPages-3)) && (_currentPage >= 5)">\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(1)">1</button>\r\n <span class=\'ft-paginate_ellipsis\'>&#8230;</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(_currentPage-1)">{{_currentPage-1}}</button>\r\n <button class="ft-b ft-b-fpaginate_current" (click)="setCurrentPage(_currentPage)">{{_currentPage}}</button>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(_currentPage+1)">{{_currentPage+1}}</button>\r\n <span class=\'ft-paginate_ellipsis\'>&#8230;</span>\r\n <button class="ft-b ft-b-fpaginate" (click)="setCurrentPage(totalPages)">{{totalPages}}</button>\r\n </ng-container>\r\n\r\n </ng-container>\r\n \x3c!-- </span> --\x3e\r\n\r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_next\' [disabled]="isNextDisabled()" (click)="nextPage()"><i></i></button>\r\n <button class="ft-b ft-b-fpaginate" id=\'ft-b-fpaginate_last\' [disabled]="isLastDisabled()" (click)="lastPage()"><i></i></button>\r\n\r\n</div>',styles:[""]}]}],t.propDecorators={itemsPerPage:[{type:r.Input}],totalItems:[{type:r.Input}],totalItemsAfterFilters:[{type:r.Input}],currentPage:[{type:r.Input}],PagingChange:[{type:r.Output}]},t}(),v=function(){function t(){this.search=new r.EventEmitter,this.searchUpdated=new m.Subject}return t.prototype.onKeyUp=function(t){console.log(t.target.value),this.search.emit({searchString:t.target.value})},t.decorators=[{type:r.Component,args:[{selector:"ft-fsearch",template:'<div class="ft-fsearch">\r\n <div class="ft-fsearch-prepend">\r\n <span><i aria-hidden="true"></i></span>\r\n </div>\r\n <input type="search" class="ft-i ft-i-fsearch" (keyup)=\'onKeyUp($event)\'>\r\n <div class="ft-fsearch-append">\r\n <span><i aria-hidden="true"></i></span>\r\n </div>\r\n</div>\r\n',styles:[""]}]}],t.propDecorators={search:[{type:r.Output}]},t}(),P=function(){function t(){this.order=new r.EventEmitter,this.nextState=0,this.currentIcon=0,this.states=["","Asc","Desc"]}return t.prototype.next=function(){this.nextState=(this.nextState+1)%3,this.currentIcon=this.nextState,this.order.emit({state:this.states[this.nextState]})},t.decorators=[{type:r.Component,args:[{selector:"ft-fsorter",template:'<button class="ft-b ft-b-fsorter" (click)="next()" title="{{states[nextState]}}"><span [ngClass]="{\'ft-sort-neutral\': currentIcon == 0, \'ft-sort-asc\': currentIcon == 1, \'ft-sort-desc\': currentIcon == 2}"></span></button>',styles:[""]}]}],t.ctorParameters=function(){return[]},t.propDecorators={order:[{type:r.Output}]},t}(),C=function K(){this.dataModifier=new I},I=function L(){this.filters=[],this.currentPage=0},S=functio