com.phloxui
Version:
PhloxUI Ng2+ Framework
200 lines (199 loc) • 19.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core';
import { WizardModel } from '../model/WizardModel';
import { PhloxAppService } from '../../service/PhloxAppService.service';
import { AbstractWizardPane } from './AbstractWizardPane';
import { Option } from '../../decorator/Option.decorator';
import { I18N } from '../../decorator/I18N.decorator';
var /** @type {?} */ TYPE_NAME = "phx-pagination-wizard-pane";
var PaginationWizardPane = /** @class */ (function (_super) {
tslib_1.__extends(PaginationWizardPane, _super);
function PaginationWizardPane(appSvc, elementRef) {
return _super.call(this, appSvc, elementRef) || this;
}
/**
* @return {?}
*/
PaginationWizardPane.prototype.ngOnInit = /**
* @return {?}
*/
function () {
_super.prototype.ngOnInit.call(this);
};
/**
* @param {?} index
* @return {?}
*/
PaginationWizardPane.prototype.showStepContent = /**
* @param {?} index
* @return {?}
*/
function (index) { };
/**
* @param {?} index
* @return {?}
*/
PaginationWizardPane.prototype.getStepInstance = /**
* @param {?} index
* @return {?}
*/
function (index) { };
PaginationWizardPane.TYPE_NAME = TYPE_NAME;
PaginationWizardPane.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: "<div class=\"phx-pagination-wizard-pane\">\n\t<div class=\"left\" [style.padding-top]=\"getHeaderHeight() + 'pt'\" [style.padding-bottom]=\"getFooterHeight() + 'pt'\">\n\t\t<div class=\"header\" [style.height]=\"getHeaderHeight() + 'pt'\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().header !== null\">\n\t\t\t\t<ng-template [ngIf]=\"getModel().header.type === null\">\n\t\t\t\t\t<div *ngIf=\"getModel().header.imageURL !== null && getModel().header.imageURL !== ''\" class=\"header-image\">\n\t\t\t\t\t\t<img src=\"{{getModel().header.imageURL}}\">\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"header-label\">{{getModel().header.label}}</div>\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template [ngIf]=\"getModel().header.type !== null\">\n\t\t\t\t\t<phx-component-wrapper [type]=\"getModel().header.type\" [data]=\"getModel().header.model\"></phx-component-wrapper>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div class=\"body\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().steps !== null\">\n\t\t\t\t<div *ngFor=\"let item of getModel().steps; let i = index;\" class=\"step\" [class.active]=\"isStepSelected(i)\" >\n\t\t\t\t\t<ng-template [ngIf]=\"item.type === null\">\n\t\t\t\t\t\t<div (click)=\"stepSelected(i)\"> {{item.label}} </div>\n\t\t\t\t\t</ng-template>\n\t\t\t\t\t<ng-template [ngIf]=\"item.type !== null\">\n\t\t\t\t\t\t<phx-component-wrapper [type]=\"item.type\" [data]=\"item.model\" (click)=\"stepSelected(i)\"></phx-component-wrapper>\n\t\t\t\t\t</ng-template>\n\t\t\t\t</div>\n\t\t\t</ng-template>\n\t\t</div>\n\t\t<div class=\"footer\" [style.height]=\"getFooterHeight() + 'pt'\">\n\t\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().footer !== null\">\n\t\t\t\t<ng-template [ngIf]=\"getModel().footer.type === null\">\n\t\t\t\t\t{{getModel().footer.label}}\n\t\t\t\t</ng-template>\n\t\t\t\t<ng-template [ngIf]=\"getModel().footer.type !== null\">\n\t\t\t\t\t<phx-component-wrapper [type]=\"getModel().footer.type\" [data]=\"getModel().footer.model\"></phx-component-wrapper>\n\t\t\t\t</ng-template>\n\t\t\t</ng-template>\n\t\t</div>\n\t</div>\n\t<div class=\"right\">\n\t\t<ng-template [ngIf]=\"getModel() !== null && getModel().steps !== null\">\n\t\t\t<!-- <phx-component-wrapper *ngFor=\"let item of model.steps; let i = index;\" [class.active]=\"isStepSelected(i)\" [type]=\"item.componentType\"\n\t\t\t\t[data]=\"data\" [model]=\"item.componentModel\" [dataParent]=\"this\" [handler]=\"stepsComponentHandler\"></phx-component-wrapper> -->\n\t\t\t\t<phx-component-wrapper *ngFor=\"let item of getModel().steps; let i = index;\" [class.active]=\"isStepSelected(i)\" [type]=\"item.componentType\"\n\t\t\t\t\t[data]=\"getData()\" [model]=\"item.componentModel\" [options]=\"item.componentOptions\" [dataParent]=\"this\"></phx-component-wrapper>\n\t\t</ng-template>\n\t</div>\n</div>\n"
},] },
];
/** @nocollapse */
PaginationWizardPane.ctorParameters = function () { return [
{ type: PhloxAppService, },
{ type: ElementRef, },
]; };
PaginationWizardPane.propDecorators = {
"help": [{ type: Input },],
"dataParent": [{ type: Input },],
"ignoreParentData": [{ type: Input },],
"data": [{ type: Input },],
"ignoreParentDisabled": [{ type: Input },],
"delegateHistory": [{ type: Input },],
"onDisabled": [{ type: Input },],
"onEnabled": [{ type: Input },],
"loadingEnabled": [{ type: Input },],
"i18nKey": [{ type: Input },],
"bypass": [{ type: Input, args: ['i18nBypass',] },],
"options": [{ type: Input },],
"disabled": [{ type: Input },],
"model": [{ type: Input },],
"field": [{ type: Input },],
"loadEvent": [{ type: Output, args: ['phxLoad',] },],
"changeEvent": [{ type: Output, args: ['phxChange',] },],
"beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },],
};
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], PaginationWizardPane.prototype, "help", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], PaginationWizardPane.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], PaginationWizardPane.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], PaginationWizardPane.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], PaginationWizardPane.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], PaginationWizardPane.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], PaginationWizardPane.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], PaginationWizardPane.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], PaginationWizardPane.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], PaginationWizardPane.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], PaginationWizardPane.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], PaginationWizardPane.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", WizardModel)
], PaginationWizardPane.prototype, "model", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], PaginationWizardPane.prototype, "field", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], PaginationWizardPane.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], PaginationWizardPane.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], PaginationWizardPane.prototype, "beforeChangeEvent", void 0);
return PaginationWizardPane;
}(AbstractWizardPane));
export { PaginationWizardPane };
function PaginationWizardPane_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
PaginationWizardPane.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
PaginationWizardPane.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
PaginationWizardPane.propDecorators;
/** @type {?} */
PaginationWizardPane.TYPE_NAME;
/** @type {?} */
PaginationWizardPane.prototype.help;
/** @type {?} */
PaginationWizardPane.prototype.dataParent;
/** @type {?} */
PaginationWizardPane.prototype.ignoreParentData;
/** @type {?} */
PaginationWizardPane.prototype.data;
/** @type {?} */
PaginationWizardPane.prototype.ignoreParentDisabled;
/** @type {?} */
PaginationWizardPane.prototype.delegateHistory;
/** @type {?} */
PaginationWizardPane.prototype.onDisabled;
/** @type {?} */
PaginationWizardPane.prototype.onEnabled;
/** @type {?} */
PaginationWizardPane.prototype.loadingEnabled;
/** @type {?} */
PaginationWizardPane.prototype.i18nKey;
/** @type {?} */
PaginationWizardPane.prototype.bypass;
/** @type {?} */
PaginationWizardPane.prototype.options;
/** @type {?} */
PaginationWizardPane.prototype.disabled;
/** @type {?} */
PaginationWizardPane.prototype.model;
/** @type {?} */
PaginationWizardPane.prototype.field;
/** @type {?} */
PaginationWizardPane.prototype.loadEvent;
/** @type {?} */
PaginationWizardPane.prototype.changeEvent;
/** @type {?} */
PaginationWizardPane.prototype.beforeChangeEvent;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdGlvbldpemFyZFBhbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L2RhdGF2aWV3L1BhZ2luYXRpb25XaXphcmRQYW5lLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFJeEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUl0RCxxQkFBTSxTQUFTLEdBQVcsNEJBQTRCLENBQUM7O0lBc0RiLGdEQUFrQjtJQW9FMUQsOEJBQVksTUFBdUIsRUFBRSxVQUFzQjtlQUN6RCxrQkFBTSxNQUFNLEVBQUUsVUFBVSxDQUFDO0tBQzFCOzs7O0lBRU0sdUNBQVE7Ozs7UUFDYixpQkFBTSxRQUFRLFdBQUUsQ0FBQzs7Ozs7O0lBR1osOENBQWU7Ozs7Y0FBQyxLQUFhOzs7OztJQUU3Qiw4Q0FBZTs7OztjQUFDLEtBQWE7cUNBNUVPLFNBQVM7O2dCQXREckQsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtvQkFDbkIsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFFBQVEsRUFBRSxxekZBK0NYO2lCQUNBOzs7O2dCQWhFUSxlQUFlO2dCQUZJLFVBQVU7Ozt5QkF5RW5DLEtBQUs7K0JBS0wsS0FBSztxQ0FHTCxLQUFLO3lCQUdMLEtBQUs7eUNBR0wsS0FBSztvQ0FHTCxLQUFLOytCQUdMLEtBQUs7OEJBR0wsS0FBSzttQ0FHTCxLQUFLOzRCQUdMLEtBQUs7MkJBR0wsS0FBSyxTQUFDLFlBQVk7NEJBR2xCLEtBQUs7NkJBRUwsS0FBSzswQkFJTCxLQUFLOzBCQUlMLEtBQUs7OEJBTUwsTUFBTSxTQUFDLFNBQVM7Z0NBSWhCLE1BQU0sU0FBQyxXQUFXO3NDQUdsQixNQUFNLFNBQUMsaUJBQWlCOzs7UUF6RHhCLElBQUksRUFBRTtRQUNOLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTs7OztRQUdSLE1BQU0sRUFBRTswQ0FDYSxRQUFROzs7UUFFN0IsTUFBTSxFQUFFOzBDQUNZLFFBQVE7OztRQUU1QixNQUFNLEVBQUU7Ozs7UUFHUixNQUFNLEVBQUU7Ozs7UUFHUixNQUFNLENBQUMsWUFBWSxDQUFDOzs7O1FBS3BCLE1BQU0sRUFBRTs7OztRQUlSLE1BQU0sRUFBRTswQ0FDUSxXQUFXOzs7UUFHM0IsTUFBTSxFQUFFOzs7O1FBTVIsTUFBTSxDQUFDLE1BQU0sQ0FBQzswQ0FDTSxZQUFZOzs7UUFHaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQzswQ0FDTSxZQUFZOzs7UUFFbEMsTUFBTSxDQUFDLGNBQWMsQ0FBQzswQ0FDTSxZQUFZOzsrQkFySTNDO0VBbUUwQyxrQkFBa0I7U0FBL0Msb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBXaXphcmRNb2RlbCB9IGZyb20gJy4uL21vZGVsL1dpemFyZE1vZGVsJztcbmltcG9ydCB7IFBobG94QXBwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvUGhsb3hBcHBTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUhhc01vZGVsIH0gZnJvbSAnLi4vSUhhc01vZGVsJztcbmltcG9ydCB7IElIYXNEYXRhIH0gZnJvbSAnLi4vSUhhc0RhdGEnO1xuaW1wb3J0IHsgUGhsb3hBcHAgfSBmcm9tICcuLi9QaGxveEFwcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RXaXphcmRQYW5lIH0gZnJvbSAnLi9BYnN0cmFjdFdpemFyZFBhbmUnO1xuaW1wb3J0IHsgSUNoYW5nZWFibGUgfSBmcm9tICcuLi9JQ2hhbmdlYWJsZSc7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBJMThOIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL0kxOE4uZGVjb3JhdG9yJztcblxuZGVjbGFyZSB2YXIgJDogYW55O1xuXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwicGh4LXBhZ2luYXRpb24td2l6YXJkLXBhbmVcIjtcblxuQENvbXBvbmVudCh7XG4gIG1vZHVsZUlkOiBtb2R1bGUuaWQsXG4gIHNlbGVjdG9yOiBUWVBFX05BTUUsXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBoeC1wYWdpbmF0aW9uLXdpemFyZC1wYW5lXCI+XG5cdDxkaXYgY2xhc3M9XCJsZWZ0XCIgW3N0eWxlLnBhZGRpbmctdG9wXT1cImdldEhlYWRlckhlaWdodCgpICsgJ3B0J1wiIFtzdHlsZS5wYWRkaW5nLWJvdHRvbV09XCJnZXRGb290ZXJIZWlnaHQoKSArICdwdCdcIj5cblx0XHQ8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgW3N0eWxlLmhlaWdodF09XCJnZXRIZWFkZXJIZWlnaHQoKSArICdwdCdcIj5cblx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpICE9PSBudWxsICYmIGdldE1vZGVsKCkuaGVhZGVyICE9PSBudWxsXCI+XG5cdFx0XHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpLmhlYWRlci50eXBlID09PSBudWxsXCI+XG5cdFx0XHRcdFx0PGRpdiAqbmdJZj1cImdldE1vZGVsKCkuaGVhZGVyLmltYWdlVVJMICE9PSBudWxsICYmIGdldE1vZGVsKCkuaGVhZGVyLmltYWdlVVJMICE9PSAnJ1wiIGNsYXNzPVwiaGVhZGVyLWltYWdlXCI+XG5cdFx0XHRcdFx0XHQ8aW1nIHNyYz1cInt7Z2V0TW9kZWwoKS5oZWFkZXIuaW1hZ2VVUkx9fVwiPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJoZWFkZXItbGFiZWxcIj57e2dldE1vZGVsKCkuaGVhZGVyLmxhYmVsfX08L2Rpdj5cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuaGVhZGVyLnR5cGUgIT09IG51bGxcIj5cblx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldE1vZGVsKCkuaGVhZGVyLnR5cGVcIiBbZGF0YV09XCJnZXRNb2RlbCgpLmhlYWRlci5tb2RlbFwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiYm9keVwiPlxuXHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkgIT09IG51bGwgJiYgZ2V0TW9kZWwoKS5zdGVwcyAhPT0gbnVsbFwiPlxuXHRcdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldE1vZGVsKCkuc3RlcHM7IGxldCBpID0gaW5kZXg7XCIgY2xhc3M9XCJzdGVwXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N0ZXBTZWxlY3RlZChpKVwiID5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbS50eXBlID09PSBudWxsXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IChjbGljayk9XCJzdGVwU2VsZWN0ZWQoaSlcIj4ge3tpdGVtLmxhYmVsfX0gPC9kaXY+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0XHQ8bmctdGVtcGxhdGUgW25nSWZdPVwiaXRlbS50eXBlICE9PSBudWxsXCI+XG5cdFx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cIml0ZW0udHlwZVwiIFtkYXRhXT1cIml0ZW0ubW9kZWxcIiAoY2xpY2spPVwic3RlcFNlbGVjdGVkKGkpXCI+PC9waHgtY29tcG9uZW50LXdyYXBwZXI+XG5cdFx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJmb290ZXJcIiBbc3R5bGUuaGVpZ2h0XT1cImdldEZvb3RlckhlaWdodCgpICsgJ3B0J1wiPlxuXHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkgIT09IG51bGwgJiYgZ2V0TW9kZWwoKS5mb290ZXIgIT09IG51bGxcIj5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGUgPT09IG51bGxcIj5cblx0XHRcdFx0XHR7e2dldE1vZGVsKCkuZm9vdGVyLmxhYmVsfX1cblx0XHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdFx0PG5nLXRlbXBsYXRlIFtuZ0lmXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGUgIT09IG51bGxcIj5cblx0XHRcdFx0XHQ8cGh4LWNvbXBvbmVudC13cmFwcGVyIFt0eXBlXT1cImdldE1vZGVsKCkuZm9vdGVyLnR5cGVcIiBbZGF0YV09XCJnZXRNb2RlbCgpLmZvb3Rlci5tb2RlbFwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJyaWdodFwiPlxuXHRcdDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRNb2RlbCgpICE9PSBudWxsICYmIGdldE1vZGVsKCkuc3RlcHMgIT09IG51bGxcIj5cblx0XHRcdDwhLS0gPHBoeC1jb21wb25lbnQtd3JhcHBlciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtb2RlbC5zdGVwczsgbGV0IGkgPSBpbmRleDtcIiBbY2xhc3MuYWN0aXZlXT1cImlzU3RlcFNlbGVjdGVkKGkpXCIgW3R5cGVdPVwiaXRlbS5jb21wb25lbnRUeXBlXCJcblx0XHRcdFx0W2RhdGFdPVwiZGF0YVwiIFttb2RlbF09XCJpdGVtLmNvbXBvbmVudE1vZGVsXCIgW2RhdGFQYXJlbnRdPVwidGhpc1wiIFtoYW5kbGVyXT1cInN0ZXBzQ29tcG9uZW50SGFuZGxlclwiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPiAtLT5cblx0XHRcdFx0PHBoeC1jb21wb25lbnQtd3JhcHBlciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRNb2RlbCgpLnN0ZXBzOyBsZXQgaSA9IGluZGV4O1wiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdGVwU2VsZWN0ZWQoaSlcIiBbdHlwZV09XCJpdGVtLmNvbXBvbmVudFR5cGVcIlxuXHRcdFx0XHRcdFtkYXRhXT1cImdldERhdGEoKVwiIFttb2RlbF09XCJpdGVtLmNvbXBvbmVudE1vZGVsXCIgW29wdGlvbnNdPVwiaXRlbS5jb21wb25lbnRPcHRpb25zXCIgW2RhdGFQYXJlbnRdPVwidGhpc1wiPjwvcGh4LWNvbXBvbmVudC13cmFwcGVyPlxuXHRcdDwvbmctdGVtcGxhdGU+XG5cdDwvZGl2PlxuPC9kaXY+XG5gXG59KVxuZXhwb3J0IGNsYXNzIFBhZ2luYXRpb25XaXphcmRQYW5lIGV4dGVuZHMgQWJzdHJhY3RXaXphcmRQYW5lIGltcGxlbWVudHMgT25Jbml0LCBJSGFzTW9kZWwsIElDaGFuZ2VhYmxlIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YUhlbHBcbiAgQElucHV0KClcbiAgQEkxOE4oKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGhlbHA6IGFueTtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YVBhcmVudDogSUhhc0RhdGE7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGF0YTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkYXRhOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaWdub3JlUGFyZW50RGlzYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGVsZWdhdGVIaXN0b3J5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIG9uRGlzYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIG9uRW5hYmxlZDogRnVuY3Rpb247XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbG9hZGluZ0VuYWJsZWQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaTE4bktleTogc3RyaW5nO1xuICBASW5wdXQoJ2kxOG5CeXBhc3MnKVxuICBAT3B0aW9uKCdpMThuQnlwYXNzJylcbiAgcHJvdGVjdGVkIGJ5cGFzczogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IGFueTtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBkaXNhYmxlZDogYm9vbGVhbjtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RXaXphcmRQYW5lXG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgbW9kZWw6IFdpemFyZE1vZGVsO1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdERhdGFWaWV3XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZmllbGQ6IHN0cmluZztcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQE91dHB1dC5cbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RIYXNEYXRhXG4gIEBPdXRwdXQoJ3BoeExvYWQnKVxuICBAT3B0aW9uKCdsb2FkJylcbiAgcHJvdGVjdGVkIGxvYWRFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0V2l6YXJkUGFuZVxuICBAT3V0cHV0KCdwaHhDaGFuZ2UnKVxuICBAT3B0aW9uKCdjaGFuZ2UnKVxuICBwcm90ZWN0ZWQgY2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhCZWZvcmVDaGFuZ2UnKVxuICBAT3B0aW9uKCdiZWZvcmVDaGFuZ2UnKVxuICBwcm90ZWN0ZWQgYmVmb3JlQ2hhbmdlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKGFwcFN2YzogUGhsb3hBcHBTZXJ2aWNlLCBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoYXBwU3ZjLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIHNob3dTdGVwQ29udGVudChpbmRleDogbnVtYmVyKTogdm9pZCB7IH1cblxuICBwdWJsaWMgZ2V0U3RlcEluc3RhbmNlKGluZGV4OiBudW1iZXIpOiBhbnkgeyB9XG59XG4iXX0=