@adins/ucsearch 2.9.19 → 2.9.21
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 +7 -0
- package/esm2020/lib/model/adins-constant.mjs +31 -1
- package/esm2020/lib/services/export-file.service.mjs +61 -0
- package/esm2020/lib/ucsearch.component.mjs +79 -49
- package/fesm2015/adins-ucsearch.mjs +163 -73
- package/fesm2015/adins-ucsearch.mjs.map +1 -1
- package/fesm2020/adins-ucsearch.mjs +163 -73
- package/fesm2020/adins-ucsearch.mjs.map +1 -1
- package/lib/model/adins-constant.d.ts +21 -0
- package/lib/services/export-file.service.d.ts +12 -0
- package/lib/ucsearch.component.d.ts +11 -6
- package/package.json +1 -1
- package/esm2020/lib/services/excel-service/excel-service.mjs +0 -29
- package/lib/services/excel-service/excel-service.d.ts +0 -8
package/README.md
CHANGED
|
@@ -3,6 +3,13 @@
|
|
|
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.21 (angular 13) & 2.13.4 (angular 7)
|
|
7
|
+
1. add option autofill for auto input based on source
|
|
8
|
+
|
|
9
|
+
Version 2.9.20 (angular 13)
|
|
10
|
+
1. add option export file as csv and json
|
|
11
|
+
2. Fix bug ketika export excel untuk type action - selain button / icon
|
|
12
|
+
|
|
6
13
|
Version 2.9.19 (angular 13)
|
|
7
14
|
1. Fix header in export excel - nama header dalam file excel akan sesuai dengan nama header pada gridview
|
|
8
15
|
|
|
@@ -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
|
-
|
|
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
|