@adins/ucsearch 2.9.19 → 2.9.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,6 +3,10 @@
3
3
  This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.
4
4
 
5
5
  ## Version
6
+ Version 2.9.20 (angular 13)
7
+ 1. add option export file as csv and json
8
+ 2. Fix bug ketika export excel untuk type action - selain button / icon
9
+
6
10
  Version 2.9.19 (angular 13)
7
11
  1. Fix header in export excel - nama header dalam file excel akan sesuai dengan nama header pada gridview
8
12
 
@@ -19,4 +19,34 @@ AdInsConstant.RestrictionLTE = "LTE";
19
19
  AdInsConstant.showData = "10,50,100";
20
20
  AdInsConstant.JoinTypeInner = "INNER";
21
21
  AdInsConstant.JoinTypeLeft = "LEFT";
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRpbnMtY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3NlYXJjaC9zcmMvbGliL21vZGVsL2FkaW5zLWNvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxhQUFhOztBQUNSLGdDQUFrQixHQUFHLFNBQVMsQ0FBQTtBQUM5Qiw2QkFBZSxHQUFHLE1BQU0sQ0FBQztBQUN6QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw0QkFBYyxHQUFHLEtBQUssQ0FBQztBQUN2QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw0QkFBYyxHQUFHLEtBQUssQ0FBQztBQUN2QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw0QkFBYyxHQUFHLEtBQUssQ0FBQztBQUN2QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw4QkFBZ0IsR0FBRyxPQUFPLENBQUM7QUFDM0IsMkJBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxvQ0FBb0M7QUFDMUQsOEJBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsb0NBQW9DO0FBQ2hFLCtCQUFpQixHQUFHLFFBQVEsQ0FBQztBQUM3QixrQ0FBb0IsR0FBRyxXQUFXLENBQUM7QUFDbkMsNEJBQWMsR0FBRyxLQUFLLENBQUM7QUFDdkIsNEJBQWMsR0FBRyxLQUFLLENBQUM7QUFDdkIsc0JBQVEsR0FBRyxXQUFXLENBQUM7QUFDdkIsMkJBQWEsR0FBRyxPQUFPLENBQUM7QUFDeEIsMEJBQVksR0FBRyxNQUFNLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFkSW5zQ29uc3RhbnQge1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkJldHdlZW4gPSBcIkJldHdlZW5cIlxyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkxpa2UgPSBcIkxpa2VcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25FcSA9IFwiRXFcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25OZXEgPSBcIk5FUVwiO1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkd0ID0gXCJHVFwiO1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkd0ZSA9IFwiR1RFXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uTHQgPSBcIkxUXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uTHRlID0gXCJMVEVcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25JbiA9IFwiSU5cIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25Ob3RJbiA9IFwiTm90SW5cIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25PciA9IFwiT3JcIjsgLy9wYXN0aWthbiBhZGEgMSBjcml0ZXJpYSBzZWJlbHVtbnlhXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uT3JOZXEgPSBcIk9yTmVxXCI7IC8vcGFzdGlrYW4gYWRhIDEgY3JpdGVyaWEgc2ViZWx1bW55YVxyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbklzTnVsbCA9IFwiSVNOVUxMXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uSXNOb3ROdWxsID0gXCJJU05PVE5VTExcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25HVEUgPSBcIkdURVwiO1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkxURSA9IFwiTFRFXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIHNob3dEYXRhID0gXCIxMCw1MCwxMDBcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgSm9pblR5cGVJbm5lciA9IFwiSU5ORVJcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgSm9pblR5cGVMZWZ0ID0gXCJMRUZUXCI7XHJcbn1cclxuIl19
22
+ export const MIME_TYPES = {
23
+ csv: 'text/csv;charset=UTF-8',
24
+ excel: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8',
25
+ json: 'text/json;charset=UTF-8',
26
+ };
27
+ export const EXPORT_DATA_TYPES = {
28
+ csv: 'csv',
29
+ excel: 'excel',
30
+ json: 'json',
31
+ };
32
+ export const EXTENSION_TYPE = {
33
+ csv: '.csv',
34
+ excel: '.xlsx',
35
+ json: '.json',
36
+ };
37
+ export const ALLOWED_MIME_TYPES = [
38
+ MIME_TYPES.csv,
39
+ MIME_TYPES.excel,
40
+ MIME_TYPES.json,
41
+ ];
42
+ export const ALLOWED_EXPORT_DATA_TYPES = [
43
+ EXPORT_DATA_TYPES.csv,
44
+ EXPORT_DATA_TYPES.excel,
45
+ EXPORT_DATA_TYPES.json,
46
+ ];
47
+ export const ALLOWED_EXTENSION_TYPE = [
48
+ EXTENSION_TYPE.csv,
49
+ EXTENSION_TYPE.excel,
50
+ EXTENSION_TYPE.json,
51
+ ];
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRpbnMtY29uc3RhbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91Y3NlYXJjaC9zcmMvbGliL21vZGVsL2FkaW5zLWNvbnN0YW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxhQUFhOztBQUNSLGdDQUFrQixHQUFHLFNBQVMsQ0FBQTtBQUM5Qiw2QkFBZSxHQUFHLE1BQU0sQ0FBQztBQUN6QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw0QkFBYyxHQUFHLEtBQUssQ0FBQztBQUN2QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw0QkFBYyxHQUFHLEtBQUssQ0FBQztBQUN2QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw0QkFBYyxHQUFHLEtBQUssQ0FBQztBQUN2QiwyQkFBYSxHQUFHLElBQUksQ0FBQztBQUNyQiw4QkFBZ0IsR0FBRyxPQUFPLENBQUM7QUFDM0IsMkJBQWEsR0FBRyxJQUFJLENBQUMsQ0FBQyxvQ0FBb0M7QUFDMUQsOEJBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsb0NBQW9DO0FBQ2hFLCtCQUFpQixHQUFHLFFBQVEsQ0FBQztBQUM3QixrQ0FBb0IsR0FBRyxXQUFXLENBQUM7QUFDbkMsNEJBQWMsR0FBRyxLQUFLLENBQUM7QUFDdkIsNEJBQWMsR0FBRyxLQUFLLENBQUM7QUFDdkIsc0JBQVEsR0FBRyxXQUFXLENBQUM7QUFDdkIsMkJBQWEsR0FBRyxPQUFPLENBQUM7QUFDeEIsMEJBQVksR0FBRyxNQUFNLENBQUM7QUFHeEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3RCLEdBQUcsRUFBRSx3QkFBd0I7SUFDN0IsS0FBSyxFQUFFLGlGQUFpRjtJQUN4RixJQUFJLEVBQUUseUJBQXlCO0NBQ3pCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRztJQUM3QixHQUFHLEVBQUUsS0FBSztJQUNWLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07Q0FDTixDQUFDO0FBRVgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHO0lBQzFCLEdBQUcsRUFBRSxNQUFNO0lBQ1gsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsT0FBTztDQUNQLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRztJQUM5QixVQUFVLENBQUMsR0FBRztJQUNkLFVBQVUsQ0FBQyxLQUFLO0lBQ2hCLFVBQVUsQ0FBQyxJQUFJO0NBQ1QsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHO0lBQ3JDLGlCQUFpQixDQUFDLEdBQUc7SUFDckIsaUJBQWlCLENBQUMsS0FBSztJQUN2QixpQkFBaUIsQ0FBQyxJQUFJO0NBQ2hCLENBQUM7QUFFWCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRztJQUNsQyxjQUFjLENBQUMsR0FBRztJQUNsQixjQUFjLENBQUMsS0FBSztJQUNwQixjQUFjLENBQUMsSUFBSTtDQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXREYXRlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFkSW5zQ29uc3RhbnQge1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkJldHdlZW4gPSBcIkJldHdlZW5cIlxyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkxpa2UgPSBcIkxpa2VcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25FcSA9IFwiRXFcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25OZXEgPSBcIk5FUVwiO1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkd0ID0gXCJHVFwiO1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkd0ZSA9IFwiR1RFXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uTHQgPSBcIkxUXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uTHRlID0gXCJMVEVcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25JbiA9IFwiSU5cIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25Ob3RJbiA9IFwiTm90SW5cIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25PciA9IFwiT3JcIjsgLy9wYXN0aWthbiBhZGEgMSBjcml0ZXJpYSBzZWJlbHVtbnlhXHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uT3JOZXEgPSBcIk9yTmVxXCI7IC8vcGFzdGlrYW4gYWRhIDEgY3JpdGVyaWEgc2ViZWx1bW55YVxyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbklzTnVsbCA9IFwiSVNOVUxMXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIFJlc3RyaWN0aW9uSXNOb3ROdWxsID0gXCJJU05PVE5VTExcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgUmVzdHJpY3Rpb25HVEUgPSBcIkdURVwiO1xyXG4gICAgcHVibGljIHN0YXRpYyBSZXN0cmljdGlvbkxURSA9IFwiTFRFXCI7XHJcbiAgICBwdWJsaWMgc3RhdGljIHNob3dEYXRhID0gXCIxMCw1MCwxMDBcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgSm9pblR5cGVJbm5lciA9IFwiSU5ORVJcIjtcclxuICAgIHB1YmxpYyBzdGF0aWMgSm9pblR5cGVMZWZ0ID0gXCJMRUZUXCI7XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBNSU1FX1RZUEVTID0ge1xyXG4gICAgY3N2OiAndGV4dC9jc3Y7Y2hhcnNldD1VVEYtOCcsXHJcbiAgICBleGNlbDogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0O2NoYXJzZXQ9VVRGLTgnLFxyXG4gICAganNvbjogJ3RleHQvanNvbjtjaGFyc2V0PVVURi04JyxcclxufSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjb25zdCBFWFBPUlRfREFUQV9UWVBFUyA9IHtcclxuICAgIGNzdjogJ2NzdicsXHJcbiAgICBleGNlbDogJ2V4Y2VsJyxcclxuICAgIGpzb246ICdqc29uJyxcclxufSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjb25zdCBFWFRFTlNJT05fVFlQRSA9IHtcclxuICAgIGNzdjogJy5jc3YnLFxyXG4gICAgZXhjZWw6ICcueGxzeCcsXHJcbiAgICBqc29uOiAnLmpzb24nLFxyXG59IGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFMTE9XRURfTUlNRV9UWVBFUyA9IFtcclxuICAgIE1JTUVfVFlQRVMuY3N2LFxyXG4gICAgTUlNRV9UWVBFUy5leGNlbCxcclxuICAgIE1JTUVfVFlQRVMuanNvbixcclxuXSBhcyBjb25zdDtcclxuXHJcbmV4cG9ydCBjb25zdCBBTExPV0VEX0VYUE9SVF9EQVRBX1RZUEVTID0gW1xyXG4gICAgRVhQT1JUX0RBVEFfVFlQRVMuY3N2LFxyXG4gICAgRVhQT1JUX0RBVEFfVFlQRVMuZXhjZWwsXHJcbiAgICBFWFBPUlRfREFUQV9UWVBFUy5qc29uLFxyXG5dIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IGNvbnN0IEFMTE9XRURfRVhURU5TSU9OX1RZUEUgPSBbXHJcbiAgICBFWFRFTlNJT05fVFlQRS5jc3YsIFxyXG4gICAgRVhURU5TSU9OX1RZUEUuZXhjZWwsXHJcbiAgICBFWFRFTlNJT05fVFlQRS5qc29uLFxyXG5dIGFzIGNvbnN0O1xyXG5cclxuZXhwb3J0IHR5cGUgRmlsZU1pbWVUeXBlID0gdHlwZW9mIEFMTE9XRURfTUlNRV9UWVBFU1tudW1iZXJdO1xyXG5leHBvcnQgdHlwZSBGaWxlRXhwb3J0RGF0YVR5cGUgPSB0eXBlb2YgQUxMT1dFRF9FWFBPUlRfREFUQV9UWVBFU1tudW1iZXJdO1xyXG5leHBvcnQgdHlwZSBGaWxlRXh0ZW5zaW9uVHlwZSA9IHR5cGVvZiBBTExPV0VEX0VYVEVOU0lPTl9UWVBFW251bWJlcl07Il19
@@ -0,0 +1,61 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { EXTENSION_TYPE, MIME_TYPES } from "../model/adins-constant";
3
+ import * as FileSaver from 'file-saver';
4
+ import * as XLSX from 'xlsx';
5
+ import * as i0 from "@angular/core";
6
+ export class ExportFileService {
7
+ exportFileAsExcel(json, fileName) {
8
+ const buffer = this.genExcelBuffer(json);
9
+ const mimeType = MIME_TYPES.excel;
10
+ const extType = EXTENSION_TYPE.excel;
11
+ this.saveAsFile(buffer, fileName, mimeType, extType);
12
+ }
13
+ exportFileAsJson(json, fileName) {
14
+ const buffer = this.genJsonBuffer(json);
15
+ const mimeType = MIME_TYPES.json;
16
+ const extType = EXTENSION_TYPE.json;
17
+ this.saveAsFile(buffer, fileName, mimeType, extType);
18
+ }
19
+ exportFileAsCsv(json, fileName) {
20
+ const buffer = this.genCsvBuffer(json);
21
+ const mimeType = MIME_TYPES.csv;
22
+ const extType = EXTENSION_TYPE.csv;
23
+ this.saveAsFile(buffer, fileName, mimeType, extType);
24
+ }
25
+ genExcelBuffer(json) {
26
+ const worksheet = XLSX.utils.json_to_sheet(json);
27
+ const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
28
+ const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
29
+ return excelBuffer;
30
+ }
31
+ genJsonBuffer(json) {
32
+ return JSON.stringify(json, null, 2);
33
+ }
34
+ genCsvBuffer(json) {
35
+ const titleKeys = Object.keys(json[0]);
36
+ const refinedData = [];
37
+ refinedData.push(titleKeys);
38
+ json.forEach(item => {
39
+ refinedData.push(Object.values(item));
40
+ });
41
+ let csvContent = '';
42
+ refinedData.forEach(row => {
43
+ csvContent += row.join(',') + '\n';
44
+ });
45
+ return csvContent;
46
+ }
47
+ saveAsFile(buffer, fileName, mimeType, extType) {
48
+ const data = new Blob([buffer], {
49
+ type: mimeType
50
+ });
51
+ const _id = new Date().getTime();
52
+ const _filename = `${fileName}_export_${_id}${extType}`;
53
+ FileSaver.saveAs(data, _filename);
54
+ }
55
+ }
56
+ /** @nocollapse */ /** @nocollapse */ ExportFileService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ExportFileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
57
+ /** @nocollapse */ /** @nocollapse */ ExportFileService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ExportFileService });
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.2", ngImport: i0, type: ExportFileService, decorators: [{
59
+ type: Injectable
60
+ }] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LWZpbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Vjc2VhcmNoL3NyYy9saWIvc2VydmljZXMvZXhwb3J0LWZpbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQW1DLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RHLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQUc3QixNQUFNLE9BQU8saUJBQWlCO0lBQ3JCLGlCQUFpQixDQUFDLElBQVcsRUFBRSxRQUFnQjtRQUNwRCxNQUFNLE1BQU0sR0FBUSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE1BQU0sUUFBUSxHQUFpQixVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFzQixjQUFjLENBQUMsS0FBSyxDQUFDO1FBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVcsRUFBRSxRQUFnQjtRQUNuRCxNQUFNLE1BQU0sR0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFpQixVQUFVLENBQUMsSUFBSSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFzQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVNLGVBQWUsQ0FBQyxJQUFXLEVBQUUsUUFBZ0I7UUFDbEQsTUFBTSxNQUFNLEdBQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxNQUFNLFFBQVEsR0FBaUIsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUM5QyxNQUFNLE9BQU8sR0FBc0IsY0FBYyxDQUFDLEdBQUcsQ0FBQztRQUN0RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxjQUFjLENBQUMsSUFBVztRQUNoQyxNQUFNLFNBQVMsR0FBbUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakUsTUFBTSxRQUFRLEdBQWtCLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEYsTUFBTSxXQUFXLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBVztRQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVc7UUFDOUIsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN0QyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUE7UUFDdEIsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ25CLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEIsVUFBVSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQ3BDLENBQUMsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxNQUFXLEVBQUUsUUFBZ0IsRUFBRSxRQUFzQixFQUFFLE9BQTBCO1FBQ2xHLE1BQU0sSUFBSSxHQUFTLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxFQUFFLFFBQVE7U0FDZixDQUFDLENBQUM7UUFDSCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pDLE1BQU0sU0FBUyxHQUFXLEdBQUcsUUFBUSxXQUFXLEdBQUcsR0FBRyxPQUFPLEVBQUUsQ0FBQztRQUNoRSxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDOztvSkF0RFUsaUJBQWlCO3dKQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBFWFRFTlNJT05fVFlQRSwgRmlsZUV4dGVuc2lvblR5cGUsIEZpbGVNaW1lVHlwZSwgTUlNRV9UWVBFUyB9IGZyb20gXCIuLi9tb2RlbC9hZGlucy1jb25zdGFudFwiO1xyXG5pbXBvcnQgKiBhcyBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcic7XHJcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFeHBvcnRGaWxlU2VydmljZSB7XHJcbiAgcHVibGljIGV4cG9ydEZpbGVBc0V4Y2VsKGpzb246IGFueVtdLCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBidWZmZXI6IGFueSA9IHRoaXMuZ2VuRXhjZWxCdWZmZXIoanNvbik7XHJcbiAgICBjb25zdCBtaW1lVHlwZTogRmlsZU1pbWVUeXBlID0gTUlNRV9UWVBFUy5leGNlbDtcclxuICAgIGNvbnN0IGV4dFR5cGU6IEZpbGVFeHRlbnNpb25UeXBlID0gRVhURU5TSU9OX1RZUEUuZXhjZWw7XHJcbiAgICB0aGlzLnNhdmVBc0ZpbGUoYnVmZmVyLCBmaWxlTmFtZSwgbWltZVR5cGUsIGV4dFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGV4cG9ydEZpbGVBc0pzb24oanNvbjogYW55W10sIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ1ZmZlcjogYW55ID0gdGhpcy5nZW5Kc29uQnVmZmVyKGpzb24pO1xyXG4gICAgY29uc3QgbWltZVR5cGU6IEZpbGVNaW1lVHlwZSA9IE1JTUVfVFlQRVMuanNvbjtcclxuICAgIGNvbnN0IGV4dFR5cGU6IEZpbGVFeHRlbnNpb25UeXBlID0gRVhURU5TSU9OX1RZUEUuanNvbjtcclxuICAgIHRoaXMuc2F2ZUFzRmlsZShidWZmZXIsIGZpbGVOYW1lLCBtaW1lVHlwZSwgZXh0VHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZXhwb3J0RmlsZUFzQ3N2KGpzb246IGFueVtdLCBmaWxlTmFtZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBidWZmZXI6IGFueSA9IHRoaXMuZ2VuQ3N2QnVmZmVyKGpzb24pO1xyXG4gICAgY29uc3QgbWltZVR5cGU6IEZpbGVNaW1lVHlwZSA9IE1JTUVfVFlQRVMuY3N2O1xyXG4gICAgY29uc3QgZXh0VHlwZTogRmlsZUV4dGVuc2lvblR5cGUgPSBFWFRFTlNJT05fVFlQRS5jc3Y7XHJcbiAgICB0aGlzLnNhdmVBc0ZpbGUoYnVmZmVyLCBmaWxlTmFtZSwgbWltZVR5cGUsIGV4dFR5cGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5FeGNlbEJ1ZmZlcihqc29uOiBhbnlbXSkge1xyXG4gICAgY29uc3Qgd29ya3NoZWV0OiBYTFNYLldvcmtTaGVldCA9IFhMU1gudXRpbHMuanNvbl90b19zaGVldChqc29uKTtcclxuICAgIGNvbnN0IHdvcmtib29rOiBYTFNYLldvcmtCb29rID0geyBTaGVldHM6IHsgJ2RhdGEnOiB3b3Jrc2hlZXQgfSwgU2hlZXROYW1lczogWydkYXRhJ10gfTtcclxuICAgIGNvbnN0IGV4Y2VsQnVmZmVyOiBhbnkgPSBYTFNYLndyaXRlKHdvcmtib29rLCB7IGJvb2tUeXBlOiAneGxzeCcsIHR5cGU6ICdhcnJheScgfSk7XHJcbiAgICByZXR1cm4gZXhjZWxCdWZmZXI7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbkpzb25CdWZmZXIoanNvbjogYW55W10pIHtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShqc29uLCBudWxsLCAyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuQ3N2QnVmZmVyKGpzb246IGFueVtdKSB7XHJcbiAgICBjb25zdCB0aXRsZUtleXMgPSBPYmplY3Qua2V5cyhqc29uWzBdKVxyXG4gICAgY29uc3QgcmVmaW5lZERhdGEgPSBbXVxyXG4gICAgcmVmaW5lZERhdGEucHVzaCh0aXRsZUtleXMpXHJcbiAgICBqc29uLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgIHJlZmluZWREYXRhLnB1c2goT2JqZWN0LnZhbHVlcyhpdGVtKSlcclxuICAgIH0pXHJcbiAgICBsZXQgY3N2Q29udGVudCA9ICcnXHJcbiAgICByZWZpbmVkRGF0YS5mb3JFYWNoKHJvdyA9PiB7XHJcbiAgICAgIGNzdkNvbnRlbnQgKz0gcm93LmpvaW4oJywnKSArICdcXG4nXHJcbiAgICB9KVxyXG4gICAgcmV0dXJuIGNzdkNvbnRlbnQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhdmVBc0ZpbGUoYnVmZmVyOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcsIG1pbWVUeXBlOiBGaWxlTWltZVR5cGUsIGV4dFR5cGU6IEZpbGVFeHRlbnNpb25UeXBlKTogdm9pZCB7XHJcbiAgICBjb25zdCBkYXRhOiBCbG9iID0gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogbWltZVR5cGVcclxuICAgIH0pO1xyXG4gICAgY29uc3QgX2lkID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCBfZmlsZW5hbWU6IHN0cmluZyA9IGAke2ZpbGVOYW1lfV9leHBvcnRfJHtfaWR9JHtleHRUeXBlfWA7XHJcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKGRhdGEsIF9maWxlbmFtZSk7XHJcbiAgfVxyXG59Il19