UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

482 lines (481 loc) 32.4 kB
/** * @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 { AbstractSimpleDropdown } from './AbstractSimpleDropdown'; import { NeedFocusService } from '../../../service/NeedFocusService.service'; import { I18N } from '../../../decorator/I18N.decorator'; import { Option } from '../../../decorator/Option.decorator'; import { PhloxAppInfoService } from '../../../service/PhloxAppInfoService.service'; var /** @type {?} */ TYPE_NAME = "phx-link-dropdown"; var LinkSimpleDropdownList = /** @class */ (function (_super) { tslib_1.__extends(LinkSimpleDropdownList, _super); function LinkSimpleDropdownList(needFocusService, elementRef, phloxAppInfoService) { return _super.call(this, needFocusService, elementRef, phloxAppInfoService) || this; } /** * @return {?} */ LinkSimpleDropdownList.prototype.ngOnInit = /** * @return {?} */ function () { _super.prototype.ngOnInit.call(this); }; /** * @param {?} changes * @return {?} */ LinkSimpleDropdownList.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { _super.prototype.ngOnChanges.call(this, changes); }; /** * @param {?} inputValue * @param {?} results * @return {?} */ LinkSimpleDropdownList.prototype.onValidationEnd = /** * @param {?} inputValue * @param {?} results * @return {?} */ function (inputValue, results) { //! do sthing }; /** * @param {?} oldValue * @param {?} inputVal * @param {?=} data * @return {?} */ LinkSimpleDropdownList.prototype.onDataChangePrevented = /** * @param {?} oldValue * @param {?} inputVal * @param {?=} data * @return {?} */ function (oldValue, inputVal, data) { this._setData(oldValue, true, null, false); }; /** * @param {?} data * @param {?} inputVal * @return {?} */ LinkSimpleDropdownList.prototype.onDataChange = /** * @param {?} data * @param {?} inputVal * @return {?} */ function (data, inputVal) { }; /** * @param {?} $event * @return {?} */ LinkSimpleDropdownList.prototype.doFocus = /** * @param {?} $event * @return {?} */ function ($event) { $(this.elementRef.nativeElement).find(".dropdown > button").focus(); }; // Override /** * @param {?} $event * @return {?} */ LinkSimpleDropdownList.prototype.doBlur = /** * @param {?} $event * @return {?} */ function ($event) { $(this.elementRef.nativeElement).find(".dropdown > button").blur(); }; // Override /** * @return {?} */ LinkSimpleDropdownList.prototype.getDropdownPopupSelector = /** * @return {?} */ function () { return '.menu'; }; /** * @return {?} */ LinkSimpleDropdownList.prototype.isSelfDataDirty = /** * @return {?} */ function () { return false; }; /** * @param {?} data * @return {?} */ LinkSimpleDropdownList.prototype.selfSaveData = /** * @param {?} data * @return {?} */ function (data) { }; /** * @return {?} */ LinkSimpleDropdownList.prototype.selfResetData = /** * @return {?} */ function () { }; /** * @return {?} */ LinkSimpleDropdownList.prototype.getLabel = /** * @return {?} */ function () { return this.label; }; /** * @return {?} */ LinkSimpleDropdownList.prototype.getItems = /** * @return {?} */ function () { return this.items; }; LinkSimpleDropdownList.TYPE_NAME = TYPE_NAME; LinkSimpleDropdownList.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: "<div class=\"phx-link-dropdown\" [style.width]=\"getWidth()\" [style.height]=\"getHeight()\">\n\t<div class=\"dropdown-container fluid\">\n\t\t<div class=\"dropdown\">\n\t\t\t<button type=\"button\" class=\"label\" (click)=\"click($event)\" (focusin)=\"onFocusing($event)\" (blur)=\"onLostFocusing($event)\">\n\t\t\t\t<div class=\"label-side\">\n\t\t\t\t\t<a [style.text-align]=\"getAlign()\">{{getLabel()}}</a>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"arrow-side\">\n\t\t\t\t\t<div class=\"flex-center\">\n\t\t\t\t\t\t<div class=\"down-triangle\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</button>\n\t\t</div>\n\t\t<ul class=\"menu\" [class.show]=\"isShow()\" [style.width]=\"getDropdownWidth()\" [style.max-height]=\"getDropdownHeight()\">\n\t\t\t<li *ngFor=\"let item of getItems(); let i = index;\" (click)=\"onSelectItemClicked($event, i)\" [style.text-align]=\"getAlign()\">\n\t\t\t\t{{item.label}}\n\t\t\t</li>\n\t\t</ul>\n\t</div>\n</div>\n" },] }, ]; /** @nocollapse */ LinkSimpleDropdownList.ctorParameters = function () { return [ { type: NeedFocusService, }, { type: ElementRef, }, { type: PhloxAppInfoService, }, ]; }; LinkSimpleDropdownList.propDecorators = { "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 },], "field": [{ type: Input },], "name": [{ type: Input },], "typeOfData": [{ type: Input },], "readOnly": [{ type: Input },], "help": [{ type: Input },], "dataComparator": [{ type: Input, args: ['comparator',] },], "items": [{ type: Input },], "align": [{ type: Input },], "width": [{ type: Input },], "height": [{ type: Input },], "dropdownWidth": [{ type: Input },], "dropdownHeight": [{ type: Input },], "label": [{ type: Input },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "startValidateEvent": [{ type: Output, args: ['phxStartValidate',] },], "endValidateEvent": [{ type: Output, args: ['phxEndValidate',] },], "beforeFocusEvent": [{ type: Output, args: ['phxBeforeFocus',] },], "focusEvent": [{ type: Output, args: ['phxFocus',] },], "beforeLostFocusEvent": [{ type: Output, args: ['phxBeforeLostFocus',] },], "lostFocusEvent": [{ type: Output, args: ['phxLostFocus',] },], "beforeChangeEvent": [{ type: Output, args: ['phxBeforeChange',] },], "changeEvent": [{ type: Output, args: ['phxChange',] },], "beforeSelectEvent": [{ type: Output, args: ['phxBeforeSelect',] },], "selectEvent": [{ type: Output, args: ['phxSelect',] },], "beforeClickEvent": [{ type: Output, args: ['phxClick',] },], "clickEvent": [{ type: Output, args: ['phxClick',] },], "beforeShowEvent": [{ type: Output, args: ['phxBeforeShow',] },], "showEvent": [{ type: Output, args: ['phxShow',] },], "beforeHideEvent": [{ type: Output, args: ['phxBeforeHide',] },], "hideEvent": [{ type: Output, args: ['phxHide',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], LinkSimpleDropdownList.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], LinkSimpleDropdownList.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], LinkSimpleDropdownList.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], LinkSimpleDropdownList.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "field", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "name", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "typeOfData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], LinkSimpleDropdownList.prototype, "readOnly", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Object) ], LinkSimpleDropdownList.prototype, "help", void 0); tslib_1.__decorate([ Option('comparator'), tslib_1.__metadata("design:type", Object) ], LinkSimpleDropdownList.prototype, "dataComparator", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Array) ], LinkSimpleDropdownList.prototype, "items", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "align", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "width", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "height", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "dropdownWidth", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "dropdownHeight", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", String) ], LinkSimpleDropdownList.prototype, "label", void 0); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('startValidate'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "startValidateEvent", void 0); tslib_1.__decorate([ Option('endValidate'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "endValidateEvent", void 0); tslib_1.__decorate([ Option('beforeFocus'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeFocusEvent", void 0); tslib_1.__decorate([ Option('focus'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "focusEvent", void 0); tslib_1.__decorate([ Option('beforeLostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeLostFocusEvent", void 0); tslib_1.__decorate([ Option('lostFocus'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "lostFocusEvent", void 0); tslib_1.__decorate([ Option('beforeChange'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeChangeEvent", void 0); tslib_1.__decorate([ Option('change'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "changeEvent", void 0); tslib_1.__decorate([ Option('beforeSelect'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeSelectEvent", void 0); tslib_1.__decorate([ Option('select'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "selectEvent", void 0); tslib_1.__decorate([ Option('beforeClick'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeClickEvent", void 0); tslib_1.__decorate([ Option('click'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "clickEvent", void 0); tslib_1.__decorate([ Option('beforeShow'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeShowEvent", void 0); tslib_1.__decorate([ Option('show'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "showEvent", void 0); tslib_1.__decorate([ Option('beforeHide'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "beforeHideEvent", void 0); tslib_1.__decorate([ Option('hide'), tslib_1.__metadata("design:type", EventEmitter) ], LinkSimpleDropdownList.prototype, "hideEvent", void 0); return LinkSimpleDropdownList; }(AbstractSimpleDropdown)); export { LinkSimpleDropdownList }; function LinkSimpleDropdownList_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ LinkSimpleDropdownList.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ LinkSimpleDropdownList.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ LinkSimpleDropdownList.propDecorators; /** @type {?} */ LinkSimpleDropdownList.TYPE_NAME; /** @type {?} */ LinkSimpleDropdownList.prototype.dataParent; /** @type {?} */ LinkSimpleDropdownList.prototype.ignoreParentData; /** @type {?} */ LinkSimpleDropdownList.prototype.data; /** @type {?} */ LinkSimpleDropdownList.prototype.ignoreParentDisabled; /** @type {?} */ LinkSimpleDropdownList.prototype.delegateHistory; /** @type {?} */ LinkSimpleDropdownList.prototype.onDisabled; /** @type {?} */ LinkSimpleDropdownList.prototype.onEnabled; /** @type {?} */ LinkSimpleDropdownList.prototype.loadingEnabled; /** @type {?} */ LinkSimpleDropdownList.prototype.i18nKey; /** @type {?} */ LinkSimpleDropdownList.prototype.bypass; /** @type {?} */ LinkSimpleDropdownList.prototype.options; /** @type {?} */ LinkSimpleDropdownList.prototype.disabled; /** @type {?} */ LinkSimpleDropdownList.prototype.field; /** @type {?} */ LinkSimpleDropdownList.prototype.name; /** @type {?} */ LinkSimpleDropdownList.prototype.typeOfData; /** @type {?} */ LinkSimpleDropdownList.prototype.readOnly; /** @type {?} */ LinkSimpleDropdownList.prototype.help; /** @type {?} */ LinkSimpleDropdownList.prototype.dataComparator; /** @type {?} */ LinkSimpleDropdownList.prototype.items; /** @type {?} */ LinkSimpleDropdownList.prototype.align; /** @type {?} */ LinkSimpleDropdownList.prototype.width; /** @type {?} */ LinkSimpleDropdownList.prototype.height; /** @type {?} */ LinkSimpleDropdownList.prototype.dropdownWidth; /** @type {?} */ LinkSimpleDropdownList.prototype.dropdownHeight; /** @type {?} */ LinkSimpleDropdownList.prototype.label; /** @type {?} */ LinkSimpleDropdownList.prototype.loadEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.startValidateEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.endValidateEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeFocusEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.focusEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeLostFocusEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.lostFocusEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeChangeEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.changeEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeSelectEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.selectEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeClickEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.clickEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeShowEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.showEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.beforeHideEvent; /** @type {?} */ LinkSimpleDropdownList.prototype.hideEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGlua1NpbXBsZURyb3Bkb3duTGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZGF0YXZpZXcvaW5wdXQvTGlua1NpbXBsZURyb3Bkb3duTGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUc3RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBSW5GLHFCQUFNLFNBQVMsR0FBVyxtQkFBbUIsQ0FBQzs7SUE0QkYsa0RBQXNCO0lBcUpoRSxnQ0FBWSxnQkFBa0MsRUFBRSxVQUFzQixFQUFFLG1CQUF3QztlQUM5RyxrQkFBTSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsbUJBQW1CLENBQUM7S0FDekQ7Ozs7SUFFTSx5Q0FBUTs7OztRQUNiLGlCQUFNLFFBQVEsV0FBRSxDQUFDOzs7Ozs7SUFHWiw0Q0FBVzs7OztjQUFDLE9BQVk7UUFDN0IsaUJBQU0sV0FBVyxZQUFDLE9BQU8sQ0FBQyxDQUFDOzs7Ozs7O0lBR25CLGdEQUFlOzs7OztJQUF6QixVQUEwQixVQUFlLEVBQUUsT0FBMkI7O0tBRXJFOzs7Ozs7O0lBRVMsc0RBQXFCOzs7Ozs7SUFBL0IsVUFBZ0MsUUFBYSxFQUFFLFFBQWEsRUFBRSxJQUFVO1FBQ3RFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxF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QUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RTaW1wbGVEcm9wZG93biB9IGZyb20gJy4vQWJzdHJhY3RTaW1wbGVEcm9wZG93bic7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uLy4uL0lIYXNEYXRhJztcbmltcG9ydCB7IElEYXRhQ29tcGFyYXRvciB9IGZyb20gJy4uLy4uL0lEYXRhQ29tcGFyYXRvcic7XG5pbXBvcnQgeyBOZWVkRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9OZWVkRm9jdXNTZXJ2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVmYXVsdFNlbGVjdEl0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVsL0RlZmF1bHRTZWxlY3RJdGVtTW9kZWwnO1xuaW1wb3J0IHsgVmFsaWRhdGlvblJlc3VsdCB9IGZyb20gJy4uLy4uL21vZGVsL1ZhbGlkYXRpb25SZXN1bHQnO1xuaW1wb3J0IHsgSTE4TiB9IGZyb20gJy4uLy4uLy4uL2RlY29yYXRvci9JMThOLmRlY29yYXRvcic7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3IvT3B0aW9uLmRlY29yYXRvcic7XG5pbXBvcnQgeyBQaGxveEFwcEluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9QaGxveEFwcEluZm9TZXJ2aWNlLnNlcnZpY2UnO1xuXG5kZWNsYXJlIHZhciAkOiBhbnk7XG5cbmNvbnN0IFRZUEVfTkFNRTogc3RyaW5nID0gXCJwaHgtbGluay1kcm9wZG93blwiO1xuXG5AQ29tcG9uZW50KHtcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcbiAgc2VsZWN0b3I6IFRZUEVfTkFNRSxcbiAgdGVtcGxhdGU6IGA8ZGl2IGNsYXNzPVwicGh4LWxpbmstZHJvcGRvd25cIiBbc3R5bGUud2lkdGhdPVwiZ2V0V2lkdGgoKVwiIFtzdHlsZS5oZWlnaHRdPVwiZ2V0SGVpZ2h0KClcIj5cblx0PGRpdiBjbGFzcz1cImRyb3Bkb3duLWNvbnRhaW5lciBmbHVpZFwiPlxuXHRcdDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJsYWJlbFwiIChjbGljayk9XCJjbGljaygkZXZlbnQpXCIgKGZvY3VzaW4pPVwib25Gb2N1c2luZygkZXZlbnQpXCIgKGJsdXIpPVwib25Mb3N0Rm9jdXNpbmcoJGV2ZW50KVwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibGFiZWwtc2lkZVwiPlxuXHRcdFx0XHRcdDxhIFtzdHlsZS50ZXh0LWFsaWduXT1cImdldEFsaWduKClcIj57e2dldExhYmVsKCl9fTwvYT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJhcnJvdy1zaWRlXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZsZXgtY2VudGVyXCI+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZG93bi10cmlhbmdsZVwiPjwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvYnV0dG9uPlxuXHRcdDwvZGl2PlxuXHRcdDx1bCBjbGFzcz1cIm1lbnVcIiBbY2xhc3Muc2hvd109XCJpc1Nob3coKVwiIFtzdHlsZS53aWR0aF09XCJnZXREcm9wZG93bldpZHRoKClcIiBbc3R5bGUubWF4LWhlaWdodF09XCJnZXREcm9wZG93bkhlaWdodCgpXCI+XG5cdFx0XHQ8bGkgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgbGV0IGkgPSBpbmRleDtcIiAoY2xpY2spPVwib25TZWxlY3RJdGVtQ2xpY2tlZCgkZXZlbnQsIGkpXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwiZ2V0QWxpZ24oKVwiPlxuXHRcdFx0XHR7e2l0ZW0ubGFiZWx9fVxuXHRcdFx0PC9saT5cblx0XHQ8L3VsPlxuXHQ8L2Rpdj5cbjwvZGl2PlxuYFxufSlcbmV4cG9ydCBjbGFzcyBMaW5rU2ltcGxlRHJvcGRvd25MaXN0IGV4dGVuZHMgQWJzdHJhY3RTaW1wbGVEcm9wZG93biBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcbiAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0RGF0YVZpZXdcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBmaWVsZDogc3RyaW5nO1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdElucHV0RGF0YVZpZXdcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBuYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgdHlwZU9mRGF0YTogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHJlYWRPbmx5OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBASTE4TigpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaGVscDogYW55O1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdFNlbGVjdEl0ZW1zXG4gIEBJbnB1dCgnY29tcGFyYXRvcicpXG4gIEBPcHRpb24oJ2NvbXBhcmF0b3InKVxuICBwcm90ZWN0ZWQgZGF0YUNvbXBhcmF0b3I6IElEYXRhQ29tcGFyYXRvcjxhbnk+O1xuICBASW5wdXQoKVxuICBASTE4TigpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaXRlbXM6IERlZmF1bHRTZWxlY3RJdGVtTW9kZWxbXTtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RTZWxlY3RPbmVJdGVtXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0U2ltcGxlRHJvcGRvd25cbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBhbGlnbjogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIHdpZHRoOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgaGVpZ2h0OiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZHJvcGRvd25XaWR0aDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRyb3Bkb3duSGVpZ2h0OiBzdHJpbmc7XG4gIC8vIC0tLSBTZWxmXG4gIEBJMThOKClcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBsYWJlbDogc3RyaW5nO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBAT3V0cHV0LlxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdEhhc0RhdGFcbiAgQE91dHB1dCgncGh4TG9hZCcpXG4gIEBPcHRpb24oJ2xvYWQnKVxuICBwcm90ZWN0ZWQgbG9hZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3REYXRhVmlld1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdElucHV0RGF0YVZpZXdcbiAgQE91dHB1dCgncGh4U3RhcnRWYWxpZGF0ZScpXG4gIEBPcHRpb24oJ3N0YXJ0VmFsaWRhdGUnKVxuICBwcm90ZWN0ZWQgc3RhcnRWYWxpZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4RW5kVmFsaWRhdGUnKVxuICBAT3B0aW9uKCdlbmRWYWxpZGF0ZScpXG4gIHByb3RlY3RlZCBlbmRWYWxpZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlRm9jdXMnKVxuICBAT3B0aW9uKCdiZWZvcmVGb2N1cycpXG4gIHByb3RlY3RlZCBiZWZvcmVGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4Rm9jdXMnKVxuICBAT3B0aW9uKCdmb2N1cycpXG4gIHByb3RlY3RlZCBmb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlTG9zdEZvY3VzJylcbiAgQE9wdGlvbignYmVmb3JlTG9zdEZvY3VzJylcbiAgcHJvdGVjdGVkIGJlZm9yZUxvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4TG9zdEZvY3VzJylcbiAgQE9wdGlvbignbG9zdEZvY3VzJylcbiAgcHJvdGVjdGVkIGxvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4QmVmb3JlQ2hhbmdlJylcbiAgQE9wdGlvbignYmVmb3JlQ2hhbmdlJylcbiAgcHJvdGVjdGVkIGJlZm9yZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgncGh4Q2hhbmdlJylcbiAgQE9wdGlvbignY2hhbmdlJylcbiAgcHJvdGVjdGVkIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RTZWxlY3RJdGVtc1xuICBAT3V0cHV0KCdwaHhCZWZvcmVTZWxlY3QnKVxuICBAT3B0aW9uKCdiZWZvcmVTZWxlY3QnKVxuICBwcm90ZWN0ZWQgYmVmb3JlU2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhTZWxlY3QnKVxuICBAT3B0aW9uKCdzZWxlY3QnKVxuICBwcm90ZWN0ZWQgc2VsZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICAvLyAtLS0gZnJvbSBBYnN0cmFjdFNlbGVjdE9uZUl0ZW1cbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RTaW1wbGVEcm9wZG93blxuICBAT3V0cHV0KCdwaHhDbGljaycpXG4gIEBPcHRpb24oJ2JlZm9yZUNsaWNrJylcbiAgcHJvdGVjdGVkIGJlZm9yZUNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhDbGljaycpXG4gIEBPcHRpb24oJ2NsaWNrJylcbiAgcHJvdGVjdGVkIGNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhCZWZvcmVTaG93JylcbiAgQE9wdGlvbignYmVmb3JlU2hvdycpXG4gIHByb3RlY3RlZCBiZWZvcmVTaG93RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhTaG93JylcbiAgQE9wdGlvbignc2hvdycpXG4gIHByb3RlY3RlZCBzaG93RXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhCZWZvcmVIaWRlJylcbiAgQE9wdGlvbignYmVmb3JlSGlkZScpXG4gIHByb3RlY3RlZCBiZWZvcmVIaWRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCdwaHhIaWRlJylcbiAgQE9wdGlvbignaGlkZScpXG4gIHByb3RlY3RlZCBoaWRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKG5lZWRGb2N1c1NlcnZpY2U6IE5lZWRGb2N1c1NlcnZpY2UsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHBobG94QXBwSW5mb1NlcnZpY2U6IFBobG94QXBwSW5mb1NlcnZpY2UpIHtcbiAgICBzdXBlcihuZWVkRm9jdXNTZXJ2aWNlLCBlbGVtZW50UmVmLCBwaGxveEFwcEluZm9TZXJ2aWNlKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uVmFsaWRhdGlvbkVuZChpbnB1dFZhbHVlOiBhbnksIHJlc3VsdHM6IFZhbGlkYXRpb25SZXN1bHRbXSk6IHZvaWQge1xuICAgIC8vISBkbyBzdGhpbmdcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRhdGFDaGFuZ2VQcmV2ZW50ZWQob2xkVmFsdWU6IGFueSwgaW5wdXRWYWw6IGFueSwgZGF0YT86IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3NldERhdGEob2xkVmFsdWUsIHRydWUsIG51bGwsIGZhbHNlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkRhdGFDaGFuZ2UoZGF0YTogYW55LCBpbnB1dFZhbDogYW55KTogdm9pZCB7XG4gIH1cblxuICBwcm90ZWN0ZWQgZG9Gb2N1cygkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZmluZChcIi5kcm9wZG93biA+IGJ1dHRvblwiKS5mb2N1cygpO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGVcbiAgcHJvdGVjdGVkIGRvQmx1cigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgJCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkuZmluZChcIi5kcm9wZG93biA+IGJ1dHRvblwiKS5ibHVyKCk7XG4gIH1cblxuICAvLyBPdmVycmlkZVxuICBwcm90ZWN0ZWQgZ2V0RHJvcGRvd25Qb3B1cFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcubWVudSc7XG4gIH1cblxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxmU2F2ZURhdGEoZGF0YTogYW55KTogdm9pZCB7XG5cbiAgfVxuXG4gIHB1YmxpYyBzZWxmUmVzZXREYXRhKCk6IHZvaWQge1xuXG4gIH1cblxuICBwdWJsaWMgZ2V0TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5sYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRJdGVtcygpOiBEZWZhdWx0U2VsZWN0SXRlbU1vZGVsW10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zO1xuICB9XG59XG4iXX0=