com.phloxui
Version:
PhloxUI Ng2+ Framework
222 lines (221 loc) • 19.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, ViewChild } from '@angular/core';
import { MaterialIconLoader } from './MaterialIconLoader.component';
import { BackgroundProcessManager } from '../../../service/BackgroundProcessManager.service';
import { ObservableManager } from '../../../service/ObservableManager.service';
import { Option } from '../../../decorator/decorators';
import { AbstractHasOptions } from '../../../share/AbstractHasOptions';
const /** @type {?} */ TYPE_NAME = "material-data-icon-loader";
export class MaterialDataIconLoader extends AbstractHasOptions {
/**
* @param {?} bgProcessMgr
* @param {?} obsvMgr
*/
constructor(bgProcessMgr, obsvMgr) {
super();
this.bgProcessMgr = bgProcessMgr;
this.obsvMgr = obsvMgr;
this.obsvMgr.subscribe(BackgroundProcessManager.PROCESS_START_TOPIC_NAME, (startBGProcess) => {
if (startBGProcess.type === 'connection.data' && startBGProcess.userAction === true) {
this.runPageLoader();
}
});
this.obsvMgr.subscribe(BackgroundProcessManager.PROCESS_END_TOPIC_NAME, (endBGProcess) => {
if (endBGProcess.type === 'connection.data' && endBGProcess.userAction === true) {
if (this.bgProcessMgr.getRunningProcessesCount('connection.data', null, { "userAction": true }) <= 0) {
this.stopPageLoader();
}
}
});
this.obsvMgr.subscribe(BackgroundProcessManager.PROCESS_ERROR_TOPIC_NAME, (errorBGProcess) => {
if (errorBGProcess.type === 'connection.data' && errorBGProcess.userAction === true) {
if (this.bgProcessMgr.getRunningProcessesCount('connection.data', null, { "userAction": true }) <= 0) {
this.stopPageLoader();
}
}
});
}
/**
* @return {?}
*/
ngOnInit() {
}
/**
* @return {?}
*/
_getIconName() {
if (this.iconName !== null && typeof this.iconName !== 'undefined') {
return this.iconName;
}
return MaterialIconLoader.BALL_CLIP_ROTATE_PULSE;
}
/**
* @return {?}
*/
runPageLoader() {
if (this.dataLoader === null || typeof this.dataLoader === 'undefined') {
return;
}
if (!this.dataLoader.isRunning()) {
this.dataLoader.start();
}
}
/**
* @return {?}
*/
stopPageLoader() {
if (this.dataLoader === null || typeof this.dataLoader === 'undefined') {
return;
}
if (this.dataLoader.isRunning()) {
this.dataLoader.stop();
}
}
/**
* @return {?}
*/
getState() {
return this.dataLoader.getState();
}
/**
* @return {?}
*/
isRunning() {
return this.dataLoader.isRunning();
}
/**
* @return {?}
*/
getSize() {
return this.size;
}
/**
* @param {?} size
* @return {?}
*/
setSize(size) {
this.size = size;
}
/**
* @return {?}
*/
getLoaderClass() {
return this.loaderClass;
}
/**
* @param {?} loaderClass
* @return {?}
*/
setLoaderClass(loaderClass) {
this.loaderClass = loaderClass;
}
}
MaterialDataIconLoader.TYPE_NAME = TYPE_NAME;
MaterialDataIconLoader.BALL_PULSE = MaterialIconLoader.BALL_PULSE;
MaterialDataIconLoader.BALL_GRID_PULSE = MaterialIconLoader.BALL_GRID_PULSE;
MaterialDataIconLoader.BALL_CLIP_ROTATE_MULTIPLE = MaterialIconLoader.BALL_CLIP_ROTATE_MULTIPLE;
MaterialDataIconLoader.BALL_PULSE_RISE = MaterialIconLoader.BALL_PULSE_RISE;
MaterialDataIconLoader.BALL_CLIP_ROTATE_PULSE = MaterialIconLoader.BALL_CLIP_ROTATE_PULSE;
MaterialDataIconLoader.BALL_CLIP_ROTATE = MaterialIconLoader.BALL_CLIP_ROTATE;
MaterialDataIconLoader.BALL_SCALE_RIPPLE_MULTIPLE = MaterialIconLoader.BALL_SCALE_RIPPLE_MULTIPLE;
MaterialDataIconLoader.BALL_SCALE_MULTIPLE = MaterialIconLoader.BALL_SCALE_MULTIPLE;
MaterialDataIconLoader.BALL_PULSE_SYNC = MaterialIconLoader.BALL_PULSE_SYNC;
MaterialDataIconLoader.LINE_SPIN_FADE_LOADER = MaterialIconLoader.LINE_SPIN_FADE_LOADER;
MaterialDataIconLoader.LINE_SCALE = MaterialIconLoader.LINE_SCALE;
MaterialDataIconLoader.LINE_SCALE_PARTY = MaterialIconLoader.LINE_SCALE_PARTY;
MaterialDataIconLoader.LINE_SCALE_PULSE_OUT = MaterialIconLoader.LINE_SCALE_PULSE_OUT;
MaterialDataIconLoader.LINE_SCALE_PULSE_OUT_RAPID = MaterialIconLoader.LINE_SCALE_PULSE_OUT_RAPID;
MaterialDataIconLoader.SQUARE_SPIN = MaterialIconLoader.SQUARE_SPIN;
MaterialDataIconLoader.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="material-data-icon-loader">
<material-icon-loader #loader [iconName]="_getIconName()" [size]="getSize()" [loaderClass]="getLoaderClass()"></material-icon-loader>
</div>
`
},] },
];
/** @nocollapse */
MaterialDataIconLoader.ctorParameters = () => [
{ type: BackgroundProcessManager, },
{ type: ObservableManager, },
];
MaterialDataIconLoader.propDecorators = {
"iconName": [{ type: Input },],
"size": [{ type: Input },],
"loaderClass": [{ type: Input },],
"dataLoader": [{ type: ViewChild, args: ["loader",] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDataIconLoader.prototype, "iconName", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDataIconLoader.prototype, "size", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialDataIconLoader.prototype, "loaderClass", void 0);
function MaterialDataIconLoader_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialDataIconLoader.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialDataIconLoader.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialDataIconLoader.propDecorators;
/** @type {?} */
MaterialDataIconLoader.TYPE_NAME;
/** @type {?} */
MaterialDataIconLoader.BALL_PULSE;
/** @type {?} */
MaterialDataIconLoader.BALL_GRID_PULSE;
/** @type {?} */
MaterialDataIconLoader.BALL_CLIP_ROTATE_MULTIPLE;
/** @type {?} */
MaterialDataIconLoader.BALL_PULSE_RISE;
/** @type {?} */
MaterialDataIconLoader.BALL_CLIP_ROTATE_PULSE;
/** @type {?} */
MaterialDataIconLoader.BALL_CLIP_ROTATE;
/** @type {?} */
MaterialDataIconLoader.BALL_SCALE_RIPPLE_MULTIPLE;
/** @type {?} */
MaterialDataIconLoader.BALL_SCALE_MULTIPLE;
/** @type {?} */
MaterialDataIconLoader.BALL_PULSE_SYNC;
/** @type {?} */
MaterialDataIconLoader.LINE_SPIN_FADE_LOADER;
/** @type {?} */
MaterialDataIconLoader.LINE_SCALE;
/** @type {?} */
MaterialDataIconLoader.LINE_SCALE_PARTY;
/** @type {?} */
MaterialDataIconLoader.LINE_SCALE_PULSE_OUT;
/** @type {?} */
MaterialDataIconLoader.LINE_SCALE_PULSE_OUT_RAPID;
/** @type {?} */
MaterialDataIconLoader.SQUARE_SPIN;
/** @type {?} */
MaterialDataIconLoader.prototype.iconName;
/** @type {?} */
MaterialDataIconLoader.prototype.size;
/** @type {?} */
MaterialDataIconLoader.prototype.loaderClass;
/** @type {?} */
MaterialDataIconLoader.prototype.dataLoader;
/** @type {?} */
MaterialDataIconLoader.prototype.bgProcessMgr;
/** @type {?} */
MaterialDataIconLoader.prototype.obsvMgr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxEYXRhSWNvbkxvYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi90aGVtZS9tYXRlcmlhbC9jb21wb25lbnQvTWF0ZXJpYWxEYXRhSWNvbkxvYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDN0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDL0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBSXZFLHVCQUFNLFNBQVMsR0FBVywyQkFBMkIsQ0FBQztBQVV0RCxNQUFNLDZCQUE4QixTQUFRLGtCQUFrQjs7Ozs7SUFvQzVELFlBQVksWUFBc0MsRUFBRSxPQUEwQjtRQUM1RSxLQUFLLEVBQUUsQ0FBQztRQUVSLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixFQUFFLENBQUMsY0FBbUIsRUFBRSxFQUFFO1lBQ2hHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEtBQUssaUJBQWlCLElBQUksY0FBYyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNwRixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDdEI7U0FDRixDQUFDLENBQUM7UUFD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QWtCLENBQUMsVUFBVTt5Q0FDeEIsa0JBQWtCLENBQUMsZUFBZTttREFDeEIsa0JBQWtCLENBQUMseUJBQXlCO3lDQUN0RCxrQkFBa0IsQ0FBQyxlQUFlO2dEQUMzQixrQkFBa0IsQ0FBQyxzQkFBc0I7MENBQy9DLGtCQUFrQixDQUFDLGdCQUFnQjtvREFDekIsa0JBQWtCLENBQUMsMEJBQTBCOzZDQUNwRCxrQkFBa0IsQ0FBQyxtQkFBbUI7eUNBQzFDLGtCQUFrQixDQUFDLGVBQWU7K0NBQzVCLGtCQUFrQixDQUFDLHFCQUFxQjtvQ0FDbkQsa0JBQWtCLENBQUMsVUFBVTswQ0FDdkIsa0JBQWtCLENBQUMsZ0JBQWdCOzhDQUMvQixrQkFBa0IsQ0FBQyxvQkFBb0I7b0RBQ2pDLGtCQUFrQixDQUFDLDBCQUEwQjtxQ0FDNUQsa0JBQWtCLENBQUMsV0FBVzs7WUExQjVFLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ25CLFFBQVEsRUFBRSxTQUFTO2dCQUNuQixRQUFRLEVBQUU7OztDQUdYO2FBQ0E7Ozs7WUFoQlEsd0JBQXdCO1lBQ3hCLGlCQUFpQjs7O3lCQW9DdkIsS0FBSztxQkFHTCxLQUFLOzRCQUdMLEtBQUs7MkJBSUwsU0FBUyxTQUFDLFFBQVE7OztJQVRsQixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGVyU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50L0xvYWRlclN0YXR1cyc7XG5pbXBvcnQgeyBNYXRlcmlhbEljb25Mb2FkZXIgfSBmcm9tICcuL01hdGVyaWFsSWNvbkxvYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFja2dyb3VuZFByb2Nlc3NNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9CYWNrZ3JvdW5kUHJvY2Vzc01hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvT2JzZXJ2YWJsZU1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3IvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhc09wdGlvbnMgfSBmcm9tICcuLi8uLi8uLi9zaGFyZS9BYnN0cmFjdEhhc09wdGlvbnMnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJtYXRlcmlhbC1kYXRhLWljb24tbG9hZGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYDxkaXYgY2xhc3M9XCJtYXRlcmlhbC1kYXRhLWljb24tbG9hZGVyXCI+XG4gIDxtYXRlcmlhbC1pY29uLWxvYWRlciAjbG9hZGVyIFtpY29uTmFtZV09XCJfZ2V0SWNvbk5hbWUoKVwiIFtzaXplXT1cImdldFNpemUoKVwiIFtsb2FkZXJDbGFzc109XCJnZXRMb2FkZXJDbGFzcygpXCI+PC9tYXRlcmlhbC1pY29uLWxvYWRlcj5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbERhdGFJY29uTG9hZGVyIGV4dGVuZHMgQWJzdHJhY3RIYXNPcHRpb25zIGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQkFMTF9QVUxTRTogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkJBTExfUFVMU0U7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQkFMTF9HUklEX1BVTFNFOiBzdHJpbmcgPSBNYXRlcmlhbEljb25Mb2FkZXIuQkFMTF9HUklEX1BVTFNFO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJBTExfQ0xJUF9ST1RBVEVfTVVMVElQTEU6IHN0cmluZyA9IE1hdGVyaWFsSWNvbkxvYWRlci5CQUxMX0NMSVBfUk9UQVRFX01VTFRJUExFO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJBTExfUFVMU0VfUklTRTogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkJBTExfUFVMU0VfUklTRTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCQUxMX0NMSVBfUk9UQVRFX1BVTFNFOiBzdHJpbmcgPSBNYXRlcmlhbEljb25Mb2FkZXIuQkFMTF9DTElQX1JPVEFURV9QVUxTRTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCQUxMX0NMSVBfUk9UQVRFOiBzdHJpbmcgPSBNYXRlcmlhbEljb25Mb2FkZXIuQkFMTF9DTElQX1JPVEFURTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCQUxMX1NDQUxFX1JJUFBMRV9NVUxUSVBMRTogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkJBTExfU0NBTEVfUklQUExFX01VTFRJUExFO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJBTExfU0NBTEVfTVVMVElQTEU6IHN0cmluZyA9IE1hdGVyaWFsSWNvbkxvYWRlci5CQUxMX1NDQUxFX01VTFRJUExFO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJBTExfUFVMU0VfU1lOQzogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkJBTExfUFVMU0VfU1lOQztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSU5FX1NQSU5fRkFERV9MT0FERVI6IHN0cmluZyA9IE1hdGVyaWFsSWNvbkxvYWRlci5MSU5FX1NQSU5fRkFERV9MT0FERVI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElORV9TQ0FMRTogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkxJTkVfU0NBTEU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElORV9TQ0FMRV9QQVJUWTogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkxJTkVfU0NBTEVfUEFSVFk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTElORV9TQ0FMRV9QVUxTRV9PVVQ6IHN0cmluZyA9IE1hdGVyaWFsSWNvbkxvYWRlci5MSU5FX1NDQUxFX1BVTFNFX09VVDtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSU5FX1NDQUxFX1BVTFNFX09VVF9SQVBJRDogc3RyaW5nID0gTWF0ZXJpYWxJY29uTG9hZGVyLkxJTkVfU0NBTEVfUFVMU0VfT1VUX1JBUElEO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNRVUFSRV9TUElOOiBzdHJpbmcgPSBNYXRlcmlhbEljb25Mb2FkZXIuU1FVQVJFX1NQSU47XG5cbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgaWNvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByaXZhdGUgc2l6ZTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJpdmF0ZSBsb2FkZXJDbGFzczogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoXCJsb2FkZXJcIilcbiAgcHJpdmF0ZSBkYXRhTG9hZGVyOiBNYXRlcmlhbEljb25Mb2FkZXI7XG5cbiAgcHJpdmF0ZSBiZ1Byb2Nlc3NNZ3I6IEJhY2tncm91bmRQcm9jZXNzTWFuYWdlcjtcbiAgcHJpdmF0ZSBvYnN2TWdyOiBPYnNlcnZhYmxlTWFuYWdlcjtcblxuICBjb25zdHJ1Y3RvcihiZ1Byb2Nlc3NNZ3I6IEJhY2tncm91bmRQcm9jZXNzTWFuYWdlciwgb2Jzdk1ncjogT2JzZXJ2YWJsZU1hbmFnZXIpIHtcbiAgICBzdXBlcigpO1xuIFxuICAgIHRoaXMuYmdQcm9jZXNzTWdyID0gYmdQcm9jZXNzTWdyO1xuICAgIHRoaXMub2Jzdk1nciA9IG9ic3ZNZ3I7XG5cbiAgICB0aGlzLm9ic3ZNZ3Iuc3Vic2NyaWJlKEJhY2tncm91bmRQcm9jZXNzTWFuYWdlci5QUk9DRVNTX1NUQVJUX1RPUElDX05BTUUsIChzdGFydEJHUHJvY2VzczogYW55KSA9PiB7XG4gICAgICBpZiAoc3RhcnRCR1Byb2Nlc3MudHlwZSA9PT0gJ2Nvbm5lY3Rpb24uZGF0YScgJiYgc3RhcnRCR1Byb2Nlc3MudXNlckFjdGlvbiA9PT0gdHJ1ZSkge1xuICAgICAgICB0aGlzLnJ1blBhZ2VMb2FkZXIoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm9ic3ZNZ3Iuc3Vic2NyaWJlKEJhY2tncm91bmRQcm9jZXNzTWFuYWdlci5QUk9DRVNTX0VORF9UT1BJQ19OQU1FLCAoZW5kQkdQcm9jZXNzOiBhbnkpID0+IHtcbiAgICAgIGlmIChlbmRCR1Byb2Nlc3MudHlwZSA9PT0gJ2Nvbm5lY3Rpb24uZGF0YScgJiYgZW5kQkdQcm9jZXNzLnVzZXJBY3Rpb24gPT09IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuYmdQcm9jZXNzTWdyLmdldFJ1bm5pbmdQcm9jZXNzZXNDb3VudCgnY29ubmVjdGlvbi5kYXRhJywgbnVsbCwge1widXNlckFjdGlvblwiOiB0cnVlfSkgPD0gMCkge1xuICAgICAgICAgIHRoaXMuc3RvcFBhZ2VMb2FkZXIoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub2Jzdk1nci5zdWJzY3JpYmUoQmFja2dyb3VuZFByb2Nlc3NNYW5hZ2VyLlBST0NFU1NfRVJST1JfVE9QSUNfTkFNRSwgKGVycm9yQkdQcm9jZXNzOiBhbnkpID0+IHtcbiAgICAgIGlmIChlcnJvckJHUHJvY2Vzcy50eXBlID09PSAnY29ubmVjdGlvbi5kYXRhJyAmJiBlcnJvckJHUHJvY2Vzcy51c2VyQWN0aW9uID09PSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLmJnUHJvY2Vzc01nci5nZXRSdW5uaW5nUHJvY2Vzc2VzQ291bnQoJ2Nvbm5lY3Rpb24uZGF0YScsIG51bGwsIHtcInVzZXJBY3Rpb25cIjogdHJ1ZX0pIDw9IDApIHtcbiAgICAgICAgICB0aGlzLnN0b3BQYWdlTG9hZGVyKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIHB1YmxpYyBfZ2V0SWNvbk5hbWUoKTogc3RyaW5nIHtcbiAgICBpZih0aGlzLmljb25OYW1lICE9PSBudWxsICYmIHR5cGVvZiB0aGlzLmljb25OYW1lICE9PSAndW5kZWZpbmVkJyl7XG4gICAgICByZXR1cm4gdGhpcy5pY29uTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0ZXJpYWxJY29uTG9hZGVyLkJBTExfQ0xJUF9ST1RBVEVfUFVMU0U7XG4gIH1cblxuICBwcml2YXRlIHJ1blBhZ2VMb2FkZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YUxvYWRlciA9PT0gbnVsbCB8fCB0eXBlb2YgdGhpcy5kYXRhTG9hZGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kYXRhTG9hZGVyLmlzUnVubmluZygpKSB7XG4gICAgICB0aGlzLmRhdGFMb2FkZXIuc3RhcnQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BQYWdlTG9hZGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFMb2FkZXIgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMuZGF0YUxvYWRlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhTG9hZGVyLmlzUnVubmluZygpKSB7XG4gICAgICB0aGlzLmRhdGFMb2FkZXIuc3RvcCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGF0ZSgpOiBMb2FkZXJTdGF0dXMge1xuICAgIHJldHVybiB0aGlzLmRhdGFMb2FkZXIuZ2V0U3RhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1J1bm5pbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YUxvYWRlci5pc1J1bm5pbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTaXplKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2l6ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTaXplKHNpemU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9hZGVyQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXJDbGFzcztcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2FkZXJDbGFzcyhsb2FkZXJDbGFzczogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkZXJDbGFzcyA9IGxvYWRlckNsYXNzO1xuICB9XG59XG4iXX0=