ng-flexmonster
Version:
Angular 5-15 wrapper for Flexmonster Pivot Table and Charts
235 lines (229 loc) • 31.4 kB
JavaScript
import { Component, ElementRef, Input, Output, EventEmitter, NgModule } from '@angular/core';
import * as Flexmonster from 'flexmonster';
import { CommonModule } from '@angular/common';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
var FlexmonsterPivot = /** @class */ (function () {
function FlexmonsterPivot(el) {
// events
this.cellclick = new EventEmitter();
this.celldoubleclick = new EventEmitter();
this.chartclick = new EventEmitter();
this.dataerror = new EventEmitter();
this.datafilecancelled = new EventEmitter();
this.dataloaded = new EventEmitter();
this.datachanged = new EventEmitter();
this.fieldslistclose = new EventEmitter();
this.fieldslistopen = new EventEmitter();
this.filterclose = new EventEmitter();
this.filteropen = new EventEmitter();
this.drillthroughopen = new EventEmitter();
this.exportcomplete = new EventEmitter();
this.exportstart = new EventEmitter();
this.drillthroughclose = new EventEmitter();
this.fullscreen = new EventEmitter();
this.loadingdata = new EventEmitter();
this.loadinglocalization = new EventEmitter();
this.loadingolapstructure = new EventEmitter();
this.loadingreportfile = new EventEmitter();
this.localizationerror = new EventEmitter();
this.localizationloaded = new EventEmitter();
this.olapstructureerror = new EventEmitter();
this.olapstructureloaded = new EventEmitter();
this.openingreportfile = new EventEmitter();
this.printcomplete = new EventEmitter();
this.printstart = new EventEmitter();
this.querycomplete = new EventEmitter();
this.queryerror = new EventEmitter();
this.ready = new EventEmitter();
this.reportchange = new EventEmitter();
this.reportcomplete = new EventEmitter();
this.reportfilecancelled = new EventEmitter();
this.reportfileerror = new EventEmitter();
this.runningquery = new EventEmitter();
this.unauthorizederror = new EventEmitter();
this.update = new EventEmitter();
this.beforetoolbarcreated = new EventEmitter();
this.beforegriddraw = new EventEmitter();
this.aftergriddraw = new EventEmitter();
this.afterchartdraw = new EventEmitter();
this.root = (/** @type {?} */ (el.nativeElement));
}
/**
* @return {?}
*/
FlexmonsterPivot.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.flexmonster = new Flexmonster({
container: this.root.getElementsByClassName('fm-ng-wrapper')[0],
componentFolder: this.componentFolder,
width: this.width,
height: this.height,
toolbar: this.toolbar,
licenseKey: this.licenseKey,
licenseFilePath: this.licenseFilePath,
report: this.report,
global: this.global,
accessibility: this.accessibility,
shareReportConnection: this.shareReportConnection,
customizeAPIRequest: this.customizeAPIRequest,
customizeCell: this.customizeCell,
customizeChartElement: this.customizeChartElement,
customizeContextMenu: this.customizeContextMenu,
sortFieldsList: this.sortFieldsList,
cellclick: function (cell) { return _this.cellclick.next(cell); },
celldoubleclick: function (cell) { return _this.celldoubleclick.next(cell); },
chartclick: function (event) { return _this.chartclick.next(event); },
datachanged: function (event) { return _this.datachanged.next(event); },
dataerror: function (event) { return _this.dataerror.next(event); },
datafilecancelled: function () { return _this.datafilecancelled.next(); },
dataloaded: function () { return _this.dataloaded.next(); },
fieldslistclose: function () { return _this.fieldslistclose.next(); },
fieldslistopen: function () { return _this.fieldslistopen.next(); },
filterclose: function () { return _this.filterclose.next(); },
filteropen: function (event) { return _this.filteropen.next(event); },
drillthroughopen: function (cell) { return _this.drillthroughopen.next(cell); },
exportcomplete: function () { return _this.exportcomplete.next(); },
exportstart: function () { return _this.exportstart.next(); },
drillthroughclose: function () { return _this.drillthroughclose.next(); },
loadingdata: function () { return _this.loadingdata.next(); },
loadinglocalization: function () { return _this.loadinglocalization.next(); },
loadingolapstructure: function () { return _this.loadingolapstructure.next(); },
loadingreportfile: function () { return _this.loadingreportfile.next(); },
localizationerror: function () { return _this.localizationerror.next(); },
localizationloaded: function () { return _this.localizationloaded.next(); },
olapstructureerror: function (event) { return _this.olapstructureerror.next(event); },
olapstructureloaded: function () { return _this.olapstructureloaded.next(); },
openingreportfile: function () { return _this.openingreportfile.next(); },
printcomplete: function () { return _this.printcomplete.next(); },
printstart: function () { return _this.printstart.next(); },
querycomplete: function () { return _this.querycomplete.next(); },
queryerror: function (event) { return _this.queryerror.next(event); },
ready: function () { return _this.ready.next(_this.flexmonster); },
reportchange: function () { return _this.reportchange.next(); },
reportcomplete: function () { return _this.reportcomplete.next(); },
reportfilecancelled: function () { return _this.reportfilecancelled.next(); },
reportfileerror: function () { return _this.reportfileerror.next(); },
runningquery: function () { return _this.runningquery.next(); },
unauthorizederror: function (done) { return _this.unauthorizederror.next(done); },
update: function () { return _this.update.next(); },
beforetoolbarcreated: function (toolbar) { return _this.beforetoolbarcreated.next(toolbar); },
beforegriddraw: function (event) { return _this.beforegriddraw.next(event); },
aftergriddraw: function (event) { return _this.aftergriddraw.next(event); },
afterchartdraw: function () { return _this.afterchartdraw.next(); }
});
};
/**
* @return {?}
*/
FlexmonsterPivot.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
if (this.flexmonster) {
this.flexmonster.dispose();
this.flexmonster = null;
}
};
FlexmonsterPivot.decorators = [
{ type: Component, args: [{
selector: 'fm-pivot',
template: '<div style="width:100%;height:100%;"><div class="fm-ng-wrapper"></div></div>'
},] },
];
FlexmonsterPivot.ctorParameters = function () { return [
{ type: ElementRef }
]; };
FlexmonsterPivot.propDecorators = {
toolbar: [{ type: Input }],
licenseKey: [{ type: Input }],
licenseFilePath: [{ type: Input }],
width: [{ type: Input }],
height: [{ type: Input }],
componentFolder: [{ type: Input }],
report: [{ type: Input }],
shareReportConnection: [{ type: Input }],
global: [{ type: Input }],
accessibility: [{ type: Input }],
customizeAPIRequest: [{ type: Input }],
customizeCell: [{ type: Input }],
customizeChartElement: [{ type: Input }],
customizeContextMenu: [{ type: Input }],
sortFieldsList: [{ type: Input }],
cellclick: [{ type: Output }],
celldoubleclick: [{ type: Output }],
chartclick: [{ type: Output }],
dataerror: [{ type: Output }],
datafilecancelled: [{ type: Output }],
dataloaded: [{ type: Output }],
datachanged: [{ type: Output }],
fieldslistclose: [{ type: Output }],
fieldslistopen: [{ type: Output }],
filterclose: [{ type: Output }],
filteropen: [{ type: Output }],
drillthroughopen: [{ type: Output }],
exportcomplete: [{ type: Output }],
exportstart: [{ type: Output }],
drillthroughclose: [{ type: Output }],
fullscreen: [{ type: Output }],
loadingdata: [{ type: Output }],
loadinglocalization: [{ type: Output }],
loadingolapstructure: [{ type: Output }],
loadingreportfile: [{ type: Output }],
localizationerror: [{ type: Output }],
localizationloaded: [{ type: Output }],
olapstructureerror: [{ type: Output }],
olapstructureloaded: [{ type: Output }],
openingreportfile: [{ type: Output }],
printcomplete: [{ type: Output }],
printstart: [{ type: Output }],
querycomplete: [{ type: Output }],
queryerror: [{ type: Output }],
ready: [{ type: Output }],
reportchange: [{ type: Output }],
reportcomplete: [{ type: Output }],
reportfilecancelled: [{ type: Output }],
reportfileerror: [{ type: Output }],
runningquery: [{ type: Output }],
unauthorizederror: [{ type: Output }],
update: [{ type: Output }],
beforetoolbarcreated: [{ type: Output }],
beforegriddraw: [{ type: Output }],
aftergriddraw: [{ type: Output }],
afterchartdraw: [{ type: Output }]
};
return FlexmonsterPivot;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
var FlexmonsterPivotModule = /** @class */ (function () {
function FlexmonsterPivotModule() {
}
FlexmonsterPivotModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule
],
declarations: [FlexmonsterPivot],
exports: [FlexmonsterPivot]
},] },
];
return FlexmonsterPivotModule;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
export { FlexmonsterPivotModule, FlexmonsterPivot };
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZmxleG1vbnN0ZXIuanMubWFwIiwic291cmNlcyI6WyJuZzovL25nLWZsZXhtb25zdGVyL2ZsZXhtb25zdGVyLmNvbXBvbmVudC50cyIsIm5nOi8vbmctZmxleG1vbnN0ZXIvZmxleG1vbnN0ZXIubW9kdWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0ICogYXMgRmxleG1vbnN0ZXIgZnJvbSAnZmxleG1vbnN0ZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdmbS1waXZvdCcsXHJcbiAgdGVtcGxhdGU6ICc8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtcIj48ZGl2IGNsYXNzPVwiZm0tbmctd3JhcHBlclwiPjwvZGl2PjwvZGl2PidcclxufSlcclxuZXhwb3J0IGNsYXNzIEZsZXhtb25zdGVyUGl2b3QgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIC8vIHBhcmFtc1xyXG4gIEBJbnB1dCgpIHRvb2xiYXI6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgbGljZW5zZUtleTogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgQElucHV0KCkgbGljZW5zZUZpbGVQYXRoOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBASW5wdXQoKSBjb21wb25lbnRGb2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSByZXBvcnQ6IEZsZXhtb25zdGVyLlJlcG9ydCB8IHN0cmluZztcclxuICBASW5wdXQoKSBzaGFyZVJlcG9ydENvbm5lY3Rpb246IEZsZXhtb25zdGVyLkFQSUNsaWVudE9wdGlvbnM7XHJcbiAgQElucHV0KCkgZ2xvYmFsOiBGbGV4bW9uc3Rlci5SZXBvcnQ7XHJcbiAgQElucHV0KCkgYWNjZXNzaWJpbGl0eTogRmxleG1vbnN0ZXIuQWNjZXNzaWJpbGl0eU9wdGlvbnM7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQVBJUmVxdWVzdDogKHJlcXVlc3Q6IE9iamVjdCkgPT4gT2JqZWN0O1xyXG4gIEBJbnB1dCgpIGN1c3RvbWl6ZUNlbGw6IChjZWxsOiBGbGV4bW9uc3Rlci5DZWxsQnVpbGRlciwgZGF0YTogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHZvaWQ7XHJcbiAgQElucHV0KCkgY3VzdG9taXplQ2hhcnRFbGVtZW50OiAoZWxlbWVudDogRWxlbWVudCwgZGF0YTogRmxleG1vbnN0ZXIuQ2hhcnREYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnRMZWdlbmRJdGVtRGF0YSkgPT4gdm9pZDtcclxuICBASW5wdXQoKSBjdXN0b21pemVDb250ZXh0TWVudTogKGNlbGw6IEZsZXhtb25zdGVyLkNvbnRleHRNZW51SXRlbVtdLCBkYXRhOiBGbGV4bW9uc3Rlci5DZWxsRGF0YSB8IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSwgdmlld1R5cGU6IHN0cmluZykgPT4gRmxleG1vbnN0ZXIuQ29udGV4dE1lbnVJdGVtW107XHJcbiAgQElucHV0KCkgc29ydEZpZWxkc0xpc3Q6IChmaXJzdDogRmxleG1vbnN0ZXIuRmllbGRzTGlzdFNvcnRpbmdJdGVtLCBzZWNvbmQ6IEZsZXhtb25zdGVyLkZpZWxkc0xpc3RTb3J0aW5nSXRlbSwgZmllbGRzTGlzdFR5cGU6IHN0cmluZykgPT4gbnVtYmVyO1xyXG5cclxuICAvLyBldmVudHNcclxuICBAT3V0cHV0KCkgY2VsbGNsaWNrOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuQ2VsbERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBjZWxsZG91YmxlY2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DZWxsRGF0YT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGNoYXJ0Y2xpY2s6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5DaGFydERhdGE+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWZpbGVjYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGF0YWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYXRhY2hhbmdlZDogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpZWxkc2xpc3RjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWVsZHNsaXN0b3BlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJvcGVuOiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdob3BlbjogRXZlbnRFbWl0dGVyPEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZXhwb3J0c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJpbGx0aHJvdWdoY2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZnVsbHNjcmVlbjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nZGF0YTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBsb2FkaW5nbG9jYWxpemF0aW9uOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdvbGFwc3RydWN0dXJlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvYWRpbmdyZXBvcnRmaWxlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmVycm9yOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGxvY2FsaXphdGlvbmxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbGFwc3RydWN0dXJlZXJyb3I6IEV2ZW50RW1pdHRlcjxGbGV4bW9uc3Rlci5FcnJvckV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb2xhcHN0cnVjdHVyZWxvYWRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuaW5ncmVwb3J0ZmlsZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwcmludGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHByaW50c3RhcnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcXVlcnljb21wbGV0ZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBxdWVyeWVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuRXJyb3JFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlYWR5OiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuUGl2b3Q+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRjaGFuZ2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0Y29tcGxldGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcmVwb3J0ZmlsZWNhbmNlbGxlZDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZXBvcnRmaWxlZXJyb3I6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcnVubmluZ3F1ZXJ5OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHVuYXV0aG9yaXplZGVycm9yOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdXBkYXRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZXRvb2xiYXJjcmVhdGVkOiBFdmVudEVtaXR0ZXI8RmxleG1vbnN0ZXIuVG9vbGJhcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGJlZm9yZWdyaWRkcmF3OiBFdmVudEVtaXR0ZXI8T2JqZWN0PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgYWZ0ZXJncmlkZHJhdzogRXZlbnRFbWl0dGVyPE9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGFmdGVyY2hhcnRkcmF3OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgLy8gYXBpXHJcbiAgcHVibGljIGZsZXhtb25zdGVyOiBGbGV4bW9uc3Rlci5QaXZvdDtcclxuICAvLyBwcml2YXRlXHJcbiAgcHJpdmF0ZSByb290OiBIVE1MRWxlbWVudDtcclxuXHJcbiAgY29uc3RydWN0b3IoZWw6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMucm9vdCA9IDxIVE1MRWxlbWVudD5lbC5uYXRpdmVFbGVtZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmZsZXhtb25zdGVyID0gbmV3IEZsZXhtb25zdGVyKHtcclxuICAgICAgY29udGFpbmVyOiB0aGlzLnJvb3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnZm0tbmctd3JhcHBlcicpWzBdLFxyXG4gICAgICBjb21wb25lbnRGb2xkZXI6IHRoaXMuY29tcG9uZW50Rm9sZGVyLFxyXG4gICAgICB3aWR0aDogdGhpcy53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcclxuICAgICAgdG9vbGJhcjogdGhpcy50b29sYmFyLFxyXG4gICAgICBsaWNlbnNlS2V5OiB0aGlzLmxpY2Vuc2VLZXksXHJcbiAgICAgIGxpY2Vuc2VGaWxlUGF0aDogdGhpcy5saWNlbnNlRmlsZVBhdGgsXHJcbiAgICAgIHJlcG9ydDogdGhpcy5yZXBvcnQsXHJcbiAgICAgIGdsb2JhbDogdGhpcy5nbG9iYWwsXHJcbiAgICAgIGFjY2Vzc2liaWxpdHk6IHRoaXMuYWNjZXNzaWJpbGl0eSxcclxuICAgICAgc2hhcmVSZXBvcnRDb25uZWN0aW9uOiB0aGlzLnNoYXJlUmVwb3J0Q29ubmVjdGlvbixcclxuICAgICAgY3VzdG9taXplQVBJUmVxdWVzdDogdGhpcy5jdXN0b21pemVBUElSZXF1ZXN0LFxyXG4gICAgICBjdXN0b21pemVDZWxsOiB0aGlzLmN1c3RvbWl6ZUNlbGwsXHJcbiAgICAgIGN1c3RvbWl6ZUNoYXJ0RWxlbWVudDogdGhpcy5jdXN0b21pemVDaGFydEVsZW1lbnQsXHJcbiAgICAgIGN1c3RvbWl6ZUNvbnRleHRNZW51OiB0aGlzLmN1c3RvbWl6ZUNvbnRleHRNZW51LFxyXG4gICAgICBzb3J0RmllbGRzTGlzdDogdGhpcy5zb3J0RmllbGRzTGlzdCxcclxuICAgICAgY2VsbGNsaWNrOiAoY2VsbDogRmxleG1vbnN0ZXIuQ2VsbERhdGEpID0+IHRoaXMuY2VsbGNsaWNrLm5leHQoY2VsbCksXHJcbiAgICAgIGNlbGxkb3VibGVjbGljazogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhKSA9PiB0aGlzLmNlbGxkb3VibGVjbGljay5uZXh0KGNlbGwpLFxyXG4gICAgICBjaGFydGNsaWNrOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkNoYXJ0RGF0YSkgPT4gdGhpcy5jaGFydGNsaWNrLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhY2hhbmdlZDogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZGF0YWNoYW5nZWQubmV4dChldmVudCksXHJcbiAgICAgIGRhdGFlcnJvcjogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZGF0YWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICBkYXRhZmlsZWNhbmNlbGxlZDogKCkgPT4gdGhpcy5kYXRhZmlsZWNhbmNlbGxlZC5uZXh0KCksXHJcbiAgICAgIGRhdGFsb2FkZWQ6ICgpID0+IHRoaXMuZGF0YWxvYWRlZC5uZXh0KCksXHJcbiAgICAgIGZpZWxkc2xpc3RjbG9zZTogKCkgPT4gdGhpcy5maWVsZHNsaXN0Y2xvc2UubmV4dCgpLFxyXG4gICAgICBmaWVsZHNsaXN0b3BlbjogKCkgPT4gdGhpcy5maWVsZHNsaXN0b3Blbi5uZXh0KCksXHJcbiAgICAgIGZpbHRlcmNsb3NlOiAoKSA9PiB0aGlzLmZpbHRlcmNsb3NlLm5leHQoKSxcclxuICAgICAgZmlsdGVyb3BlbjogKGV2ZW50OiBPYmplY3QpID0+IHRoaXMuZmlsdGVyb3Blbi5uZXh0KGV2ZW50KSxcclxuICAgICAgZHJpbGx0aHJvdWdob3BlbjogKGNlbGw6IEZsZXhtb25zdGVyLkNlbGxEYXRhIHwgRmxleG1vbnN0ZXIuQ2hhcnREYXRhKSA9PiB0aGlzLmRyaWxsdGhyb3VnaG9wZW4ubmV4dChjZWxsKSxcclxuICAgICAgZXhwb3J0Y29tcGxldGU6ICgpID0+IHRoaXMuZXhwb3J0Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICBleHBvcnRzdGFydDogKCkgPT4gdGhpcy5leHBvcnRzdGFydC5uZXh0KCksXHJcbiAgICAgIGRyaWxsdGhyb3VnaGNsb3NlOiAoKSA9PiB0aGlzLmRyaWxsdGhyb3VnaGNsb3NlLm5leHQoKSxcclxuICAgICAgbG9hZGluZ2RhdGE6ICgpID0+IHRoaXMubG9hZGluZ2RhdGEubmV4dCgpLFxyXG4gICAgICBsb2FkaW5nbG9jYWxpemF0aW9uOiAoKSA9PiB0aGlzLmxvYWRpbmdsb2NhbGl6YXRpb24ubmV4dCgpLFxyXG4gICAgICBsb2FkaW5nb2xhcHN0cnVjdHVyZTogKCkgPT4gdGhpcy5sb2FkaW5nb2xhcHN0cnVjdHVyZS5uZXh0KCksXHJcbiAgICAgIGxvYWRpbmdyZXBvcnRmaWxlOiAoKSA9PiB0aGlzLmxvYWRpbmdyZXBvcnRmaWxlLm5leHQoKSxcclxuICAgICAgbG9jYWxpemF0aW9uZXJyb3I6ICgpID0+IHRoaXMubG9jYWxpemF0aW9uZXJyb3IubmV4dCgpLFxyXG4gICAgICBsb2NhbGl6YXRpb25sb2FkZWQ6ICgpID0+IHRoaXMubG9jYWxpemF0aW9ubG9hZGVkLm5leHQoKSxcclxuICAgICAgb2xhcHN0cnVjdHVyZWVycm9yOiAoZXZlbnQ6IEZsZXhtb25zdGVyLkVycm9yRXZlbnQpID0+IHRoaXMub2xhcHN0cnVjdHVyZWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICBvbGFwc3RydWN0dXJlbG9hZGVkOiAoKSA9PiB0aGlzLm9sYXBzdHJ1Y3R1cmVsb2FkZWQubmV4dCgpLFxyXG4gICAgICBvcGVuaW5ncmVwb3J0ZmlsZTogKCkgPT4gdGhpcy5vcGVuaW5ncmVwb3J0ZmlsZS5uZXh0KCksXHJcbiAgICAgIHByaW50Y29tcGxldGU6ICgpID0+IHRoaXMucHJpbnRjb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHByaW50c3RhcnQ6ICgpID0+IHRoaXMucHJpbnRzdGFydC5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5Y29tcGxldGU6ICgpID0+IHRoaXMucXVlcnljb21wbGV0ZS5uZXh0KCksXHJcbiAgICAgIHF1ZXJ5ZXJyb3I6IChldmVudDogRmxleG1vbnN0ZXIuRXJyb3JFdmVudCkgPT4gdGhpcy5xdWVyeWVycm9yLm5leHQoZXZlbnQpLFxyXG4gICAgICByZWFkeTogKCkgPT4gdGhpcy5yZWFkeS5uZXh0KHRoaXMuZmxleG1vbnN0ZXIpLFxyXG4gICAgICByZXBvcnRjaGFuZ2U6ICgpID0+IHRoaXMucmVwb3J0Y2hhbmdlLm5leHQoKSxcclxuICAgICAgcmVwb3J0Y29tcGxldGU6ICgpID0+IHRoaXMucmVwb3J0Y29tcGxldGUubmV4dCgpLFxyXG4gICAgICByZXBvcnRmaWxlY2FuY2VsbGVkOiAoKSA9PiB0aGlzLnJlcG9ydGZpbGVjYW5jZWxsZWQubmV4dCgpLFxyXG4gICAgICByZXBvcnRmaWxlZXJyb3I6ICgpID0+IHRoaXMucmVwb3J0ZmlsZWVycm9yLm5leHQoKSxcclxuICAgICAgcnVubmluZ3F1ZXJ5OiAoKSA9PiB0aGlzLnJ1bm5pbmdxdWVyeS5uZXh0KCksXHJcbiAgICAgIHVuYXV0aG9yaXplZGVycm9yOiAoZG9uZTogRmxleG1vbnN0ZXIuVW5hdXRob3JpemVkRXJyb3JIYW5kbGVyKSA9PiB0aGlzLnVuYXV0aG9yaXplZGVycm9yLm5leHQoZG9uZSksXHJcbiAgICAgIHVwZGF0ZTogKCkgPT4gdGhpcy51cGRhdGUubmV4dCgpLFxyXG4gICAgICBiZWZvcmV0b29sYmFyY3JlYXRlZDogKHRvb2xiYXI6IEZsZXhtb25zdGVyLlRvb2xiYXIpID0+IHRoaXMuYmVmb3JldG9vbGJhcmNyZWF0ZWQubmV4dCh0b29sYmFyKSxcclxuICAgICAgYmVmb3JlZ3JpZGRyYXc6IChldmVudDogT2JqZWN0KSA9PiB0aGlzLmJlZm9yZWdyaWRkcmF3Lm5leHQoZXZlbnQpLFxyXG4gICAgICBhZnRlcmdyaWRkcmF3OiAoZXZlbnQ6IE9iamVjdCkgPT4gdGhpcy5hZnRlcmdyaWRkcmF3Lm5leHQoZXZlbnQpLFxyXG4gICAgICBhZnRlcmNoYXJ0ZHJhdzogKCkgPT4gdGhpcy5hZnRlcmNoYXJ0ZHJhdy5uZXh0KClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgIGlmICh0aGlzLmZsZXhtb25zdGVyKSB7XHJcbiAgICAgICAgICB0aGlzLmZsZXhtb25zdGVyLmRpc3Bvc2UoKTtcclxuICAgICAgICAgIHRoaXMuZmxleG1vbnN0ZXIgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZsZXhtb25zdGVyUGl2b3QgfSBmcm9tICcuL2ZsZXhtb25zdGVyLmNvbXBvbmVudCc7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZVxyXG4gIF0sXHJcbiAgZGVjbGFyYXRpb25zOiBbRmxleG1vbnN0ZXJQaXZvdF0sXHJcbiAgZXhwb3J0czogW0ZsZXhtb25zdGVyUGl2b3RdXHJcbn0pXHJc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