com.phloxui
Version:
PhloxUI Ng2+ Framework
718 lines (717 loc) • 61.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, ViewChild, EventEmitter } from '@angular/core';
import { I18N } from '../../../../../decorator/I18N.decorator';
import { Option } from '../../../../../decorator/Option.decorator';
import { AbstractSelectItems } from '../../../../../component/dataview/input/AbstractSelectItems';
import { NeedFocusService } from '../../../../../service/NeedFocusService.service';
import { EventUtils } from '../../../../../share/utils/EventUtils';
import { CLICK_EVENT, BEFORE_CLICK_EVENT } from '../../../../../share/CustomEventType';
import { FormControl } from '@angular/forms';
import { MatButtonToggle } from '@angular/material';
const /** @type {?} */ TYPE_NAME = "material-toggle-select-items";
export class MaterialToggleSelectItems extends AbstractSelectItems {
/**
* @param {?} elementRef
* @param {?} needFocusService
*/
constructor(elementRef, needFocusService) {
super(elementRef, needFocusService);
this.beforeClickEvent = new EventEmitter();
this.clickEvent = new EventEmitter();
this.beforeFocusEvent = new EventEmitter();
this.focusEvent = new EventEmitter();
this.beforeLostFocusEvent = new EventEmitter();
this.lostFocusEvent = new EventEmitter();
this.selectEvent = new EventEmitter();
this.beforeSelectEvent = new EventEmitter();
this.formControl = new FormControl();
this.formControl2 = new FormControl();
this.multiple = false;
this._uniqueId = this.randomName();
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
setTimeout(() => {
this.initEventHandlers();
}, 20);
}
/**
* @param {?} $event
* @param {?} index
* @return {?}
*/
setSelectedItem($event, index) {
let /** @type {?} */ oldIndexes = this.getSelectedIndexes();
let /** @type {?} */ item = this.getItemAtIndex(index[0]);
let /** @type {?} */ oldDatas = [];
let /** @type {?} */ newDatas = [];
if (oldIndexes !== null && oldIndexes !== undefined && this.multiple) {
for (let /** @type {?} */ oldIndex of oldIndexes) {
oldDatas.push(this.getItemAtIndex(oldIndex));
newDatas.push(this.getItemAtIndex(oldIndex));
}
}
if (oldDatas.indexOf(item) === -1) {
newDatas.push(item);
}
else {
newDatas.splice(oldDatas.indexOf(item), 1);
}
this.setSelectedItems(newDatas);
}
/**
* @param {?} selectedItems
* @param {?=} $event
* @param {?=} fireEvent
* @param {?=} fireChangeEvent
* @return {?}
*/
setSelectedItems(selectedItems, $event, fireEvent, fireChangeEvent) {
if (selectedItems === null || selectedItems === undefined || !Array.isArray(selectedItems)) {
selectedItems = [];
}
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
let /** @type {?} */ sItems = [];
let /** @type {?} */ newIndices = [];
for (let /** @type {?} */ item of selectedItems) {
let /** @type {?} */ idx = this.getItemIndex(item);
if (idx >= 0) {
newIndices.push(idx);
sItems.push(item);
}
}
// Only allow "item" which actually exists.
selectedItems = sItems;
let /** @type {?} */ oldIndex = this.getSelectedIndexes();
EventUtils.handleBrowserEvent(this, 'beforeSelectEvent', $event, fireEvent, ($event) => {
// doEvent
this._setSelectedItemsSaveData(selectedItems, true, $event, fireChangeEvent);
}, ($event) => {
// emitBeforeEvent
if (this.multiple === false) {
$(this.elementRef.nativeElement).find('mat-button-toggle-group.mat-button-toggle-group.' + this._uniqueId + ' > mat-button-toggle').removeClass('mat-button-toggle-checked');
}
this.emitBeforeSelectEvent(oldIndex, newIndices, $event);
}, ($event, result) => {
// emitAfterEvent
if (this.multiple === false) {
$(this.elementRef.nativeElement).find('mat-button-toggle-group.mat-button-toggle-group.' + this._uniqueId + '> mat-button-toggle.item-' + +newIndices[0]).addClass('mat-button-toggle-checked');
}
this.emitSelectEvent(oldIndex, newIndices, $event);
}, ($event) => {
// doPrevented
if (this.multiple === false) {
$(this.elementRef.nativeElement).find('mat-button-toggle-group.mat-button-toggle-group.' + this._uniqueId + '> mat-button-toggle.item-' + oldIndex[0]).addClass('mat-button-toggle-checked');
}
this.formControl.setValue(this.getSelectedData());
});
}
/**
* @return {?}
*/
getItems() {
return this.items;
}
/**
* @return {?}
*/
isDisableRipple() {
return this.disableRipple;
}
/**
* @param {?} disableRipple
* @return {?}
*/
setDisableRipple(disableRipple) {
this.disableRipple = disableRipple;
}
/**
* @return {?}
*/
getDescription() {
return this.description;
}
/**
* @param {?} description
* @return {?}
*/
setDescription(description) {
this.description = description;
}
/**
* @return {?}
*/
hasDescription() {
if (this.description !== null && typeof this.description === 'string' && this.description !== '') {
return true;
}
return false;
}
/**
* @return {?}
*/
randomName() {
let /** @type {?} */ text = "";
let /** @type {?} */ possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var /** @type {?} */ i = 0; i < 8; i++) {
text += possible.charAt(Math.floor(Math.random() * possible.length));
}
this._uniqueId = text + '-single';
return this._uniqueId;
}
/**
* @return {?}
*/
isMultiple() {
return this.multiple;
}
/**
* @param {?} multiple
* @return {?}
*/
setMultiple(multiple) {
this.multiple = multiple;
}
/**
* @return {?}
*/
toggle() {
this.multiple = !this.multiple;
}
/**
* @return {?}
*/
isDisabledRipple() {
return this.disableRipple;
}
/**
* @param {?} disableRipple
* @return {?}
*/
setDisabledRipple(disableRipple) {
this.disableRipple = disableRipple;
}
/**
* @return {?}
*/
isVertical() {
return this.vertical;
}
/**
* @param {?} vertical
* @return {?}
*/
setVertical(vertical) {
this.vertical = vertical;
}
/**
* @return {?}
*/
isChecked() {
return this.checked;
}
/**
* @param {?} checked
* @return {?}
*/
setChecked(checked) {
this.checked = checked;
}
/**
* @param {?} $event
* @return {?}
*/
onFocusing($event) {
this.needFocusService.setFocusingComponent(this, $event);
}
/**
* @param {?} $event
* @return {?}
*/
onLostFocusing($event) {
this.needFocusService.resetFocusingComponent($event);
}
/**
* @return {?}
*/
initEventHandlers() {
$(this.elementRef.nativeElement).find('button.mat-button-toggle-button').focus(($event) => {
this.onFocusing($event);
});
$(this.elementRef.nativeElement).find('button.mat-button-toggle-button').blur(($event) => {
this.onLostFocusing($event);
});
}
/**
* @param {?} index
* @param {?=} $event
* @return {?}
*/
emitBeforeClickEvent(index, $event) {
let /** @type {?} */ eventData = {
item: this.getItemAtIndex(index),
index: index
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(BEFORE_CLICK_EVENT, this, data, $event);
if (this.beforeClickEvent !== null && this.beforeClickEvent !== undefined) {
this.beforeClickEvent.emit(ev);
}
}
/**
* @param {?} index
* @param {?=} $event
* @return {?}
*/
emitClickEvent(index, $event) {
let /** @type {?} */ eventData = {
item: this.getItemAtIndex(index),
index: index
};
// emit event
let /** @type {?} */ data = eventData;
let /** @type {?} */ ev = EventUtils.newCustomEvent(CLICK_EVENT, this, data, $event);
if (this.clickEvent !== null && this.clickEvent !== undefined) {
this.clickEvent.emit(ev);
}
}
/**
* @param {?} $event
* @param {?} index
* @param {?=} fireEvent
* @return {?}
*/
onClick($event, index, fireEvent) {
if (fireEvent === null || fireEvent === undefined) {
fireEvent = true;
}
$event.preventDefault();
EventUtils.handleBrowserEvent(this, 'beforeClickEvent', $event, fireEvent, ($event) => {
// doEvent
this.setSelectedItem($event, [index]);
}, ($event) => {
// emitBeforeEvent
this.emitBeforeClickEvent(index, $event);
}, ($event, result) => {
// emitAfterEvent
this.emitClickEvent(index, $event);
}, ($event) => {
// doPrevented
});
}
/**
* @param {?} $event
* @return {?}
*/
doFocus($event) {
if ($(this.elementRef.nativeElement).find('button.mat-button-toggle-button:focus').length <= 0) {
$(this.elementRef.nativeElement).find('button.mat-button-toggle-button').focus();
}
}
/**
* @param {?} $event
* @return {?}
*/
doLostFocus($event) {
if ($(this.elementRef.nativeElement).find('button.mat-button-toggle-button:focus').length > 0) {
$(this.elementRef.nativeElement).find('button.mat-button-toggle-button').blur();
}
}
/**
* @param {?} inputValue
* @param {?} results
* @return {?}
*/
onValidationEnd(inputValue, results) {
}
/**
* @param {?} data
* @param {?} inputVal
* @return {?}
*/
onDataChange(data, inputVal) {
}
/**
* @return {?}
*/
getBeforeClickEvent() {
return this.beforeClickEvent;
}
/**
* @param {?} event
* @return {?}
*/
setBeforeClickEvent(event) {
this.beforeClickEvent = event;
}
/**
* @return {?}
*/
getClickEvent() {
return this.clickEvent;
}
/**
* @param {?} event
* @return {?}
*/
setClickEvent(event) {
this.clickEvent = event;
}
}
MaterialToggleSelectItems.TYPE_NAME = TYPE_NAME;
MaterialToggleSelectItems.decorators = [
{ type: Component, args: [{
moduleId: module.id,
selector: TYPE_NAME,
template: `<div class="material-input material-toggle-select-items">
<mat-button-toggle-group [formControl]="formControl" #group="matButtonToggleGroup" multiple *ngIf="isMultiple() === true && !isDisabled()" [vertical]="isVertical()">
<mat-button-toggle [value]="item.value" *ngFor="let item of getItems(); let i = index" [disabled]="isDisabled()" [disableRipple]="isDisabledRipple()" [checked]="isChecked()" (click)="onClick($event, i)">
<mat-icon>{{ item.label | phx_text }}</mat-icon>
</mat-button-toggle>
</mat-button-toggle-group>
<mat-button-toggle-group #group="matButtonToggleGroup" *ngIf="isMultiple() === false && !isDisabled()" [vertical]="isVertical()" [ngClass]="_uniqueId">
<mat-button-toggle [value]="item.value" [ngClass]="'item-' +i" *ngFor="let item of getItems(); let i = index" [disabled]="isDisabled()" [disableRipple]="isDisabledRipple()" [checked]="isChecked()" (click)="onClick($event, i)">
<mat-icon>{{ item.label | phx_text }}</mat-icon>
</mat-button-toggle>
</mat-button-toggle-group>
<!-- [class.mat-button-toggle-checked]="getOldVal() === item.value" -->
<div class="validation" [style.display]="getValidationResultMessage() ? undefined : 'none'" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()">
<ng-template [ngIf]="getValidationResultMessage()" [ngIfElse]="validation_else">
{{getValidationResultMessage() | phx_text}}
</ng-template>
<ng-template #validation_else>
<!-- We've to put whitespace if there is no validation msg to prevent empty dom -->
<!-- since if validate msg's <div> dom is empty, the component positioning -->
<!-- will be misplaced. -->
{{ ' ' }}
</ng-template>
</div>
<div class="description" [style.display]="getValidationResultMessage() ? 'none' : undefined" [class.normal]="isNormal() && !isDisabled()" [class.success]="isSuccess() && !isDisabled()" [class.warning]="isWarning() && !isDisabled()" [class.error]="isError() && !isDisabled()">
<ng-template [ngIf]="getDescription()" [ngIfElse]="description_else">
{{ getDescription() | phx_text }}
</ng-template>
<ng-template #description_else>
<!-- We've to put whitespace if there is no description to prevent empty dom -->
<!-- since if description's <div> dom is empty, the component positioning -->
<!-- will be misplaced. -->
{{ ' ' }}
</ng-template>
</div>
<div class="help">
{{getHelp() | phx_text}}
</div>
</div>
`,
},] },
];
/** @nocollapse */
MaterialToggleSelectItems.ctorParameters = () => [
{ type: ElementRef, },
{ type: NeedFocusService, },
];
MaterialToggleSelectItems.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 },],
"description": [{ type: Input },],
"value": [{ type: Input },],
"multiple": [{ type: Input },],
"vertical": [{ type: Input },],
"disableRipple": [{ type: Input },],
"checked": [{ type: Input },],
"ran": [{ 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: ['phxBeforeClick',] },],
"clickEvent": [{ type: Output, args: ['phxClick',] },],
"group": [{ type: ViewChild, args: ['group',] },],
};
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSelectItems.prototype, "dataParent", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "ignoreParentData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSelectItems.prototype, "data", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "ignoreParentDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "delegateHistory", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialToggleSelectItems.prototype, "onDisabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Function)
], MaterialToggleSelectItems.prototype, "onEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "loadingEnabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSelectItems.prototype, "i18nKey", void 0);
tslib_1.__decorate([
Option('i18nBypass'),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "bypass", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "disabled", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSelectItems.prototype, "field", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSelectItems.prototype, "name", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSelectItems.prototype, "typeOfData", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "readOnly", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSelectItems.prototype, "help", void 0);
tslib_1.__decorate([
Option('comparator'),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSelectItems.prototype, "dataComparator", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Array)
], MaterialToggleSelectItems.prototype, "items", void 0);
tslib_1.__decorate([
I18N(),
Option(),
tslib_1.__metadata("design:type", String)
], MaterialToggleSelectItems.prototype, "description", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSelectItems.prototype, "value", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "multiple", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "vertical", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "disableRipple", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Boolean)
], MaterialToggleSelectItems.prototype, "checked", void 0);
tslib_1.__decorate([
Option(),
tslib_1.__metadata("design:type", Object)
], MaterialToggleSelectItems.prototype, "ran", void 0);
tslib_1.__decorate([
Option('load'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "loadEvent", void 0);
tslib_1.__decorate([
Option('startValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "startValidateEvent", void 0);
tslib_1.__decorate([
Option('endValidate'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "endValidateEvent", void 0);
tslib_1.__decorate([
Option('beforeFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "beforeFocusEvent", void 0);
tslib_1.__decorate([
Option('focus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "focusEvent", void 0);
tslib_1.__decorate([
Option('beforeLostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "beforeLostFocusEvent", void 0);
tslib_1.__decorate([
Option('lostFocus'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "lostFocusEvent", void 0);
tslib_1.__decorate([
Option('beforeChange'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "beforeChangeEvent", void 0);
tslib_1.__decorate([
Option('change'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "changeEvent", void 0);
tslib_1.__decorate([
Option('beforeSelect'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "beforeSelectEvent", void 0);
tslib_1.__decorate([
Option('select'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "selectEvent", void 0);
tslib_1.__decorate([
Option('beforeClick'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "beforeClickEvent", void 0);
tslib_1.__decorate([
Option('click'),
tslib_1.__metadata("design:type", EventEmitter)
], MaterialToggleSelectItems.prototype, "clickEvent", void 0);
function MaterialToggleSelectItems_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
MaterialToggleSelectItems.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
MaterialToggleSelectItems.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
MaterialToggleSelectItems.propDecorators;
/** @type {?} */
MaterialToggleSelectItems.TYPE_NAME;
/** @type {?} */
MaterialToggleSelectItems.prototype.dataParent;
/** @type {?} */
MaterialToggleSelectItems.prototype.ignoreParentData;
/** @type {?} */
MaterialToggleSelectItems.prototype.data;
/** @type {?} */
MaterialToggleSelectItems.prototype.ignoreParentDisabled;
/** @type {?} */
MaterialToggleSelectItems.prototype.delegateHistory;
/** @type {?} */
MaterialToggleSelectItems.prototype.onDisabled;
/** @type {?} */
MaterialToggleSelectItems.prototype.onEnabled;
/** @type {?} */
MaterialToggleSelectItems.prototype.loadingEnabled;
/** @type {?} */
MaterialToggleSelectItems.prototype.i18nKey;
/** @type {?} */
MaterialToggleSelectItems.prototype.bypass;
/** @type {?} */
MaterialToggleSelectItems.prototype.options;
/** @type {?} */
MaterialToggleSelectItems.prototype.disabled;
/** @type {?} */
MaterialToggleSelectItems.prototype.field;
/** @type {?} */
MaterialToggleSelectItems.prototype.name;
/** @type {?} */
MaterialToggleSelectItems.prototype.typeOfData;
/** @type {?} */
MaterialToggleSelectItems.prototype.readOnly;
/** @type {?} */
MaterialToggleSelectItems.prototype.help;
/** @type {?} */
MaterialToggleSelectItems.prototype.dataComparator;
/** @type {?} */
MaterialToggleSelectItems.prototype.items;
/** @type {?} */
MaterialToggleSelectItems.prototype.description;
/** @type {?} */
MaterialToggleSelectItems.prototype.value;
/** @type {?} */
MaterialToggleSelectItems.prototype.multiple;
/** @type {?} */
MaterialToggleSelectItems.prototype.vertical;
/** @type {?} */
MaterialToggleSelectItems.prototype.disableRipple;
/** @type {?} */
MaterialToggleSelectItems.prototype.checked;
/** @type {?} */
MaterialToggleSelectItems.prototype.ran;
/** @type {?} */
MaterialToggleSelectItems.prototype.formControl;
/** @type {?} */
MaterialToggleSelectItems.prototype.formControl2;
/** @type {?} */
MaterialToggleSelectItems.prototype.loadEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.startValidateEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.endValidateEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.beforeFocusEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.focusEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.beforeLostFocusEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.lostFocusEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.beforeChangeEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.changeEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.beforeSelectEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.selectEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.beforeClickEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.clickEvent;
/** @type {?} */
MaterialToggleSelectItems.prototype.group;
/** @type {?} */
MaterialToggleSelectItems.prototype._uniqueId;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0ZXJpYWxUb2dnbGVTZWxlY3RJdGVtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi90aGVtZS9tYXRlcmlhbC9jb21wb25lbnQvZGF0YXZpZXcvaW5wdXQvTWF0ZXJpYWxUb2dnbGVTZWxlY3RJdGVtcy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBaUIsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUvRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDbEcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBSW5FLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXBELHVCQUFNLFNBQVMsR0FBVyw4QkFBOEIsQ0FBQztBQTZDekQsTUFBTSxnQ0FBaUMsU0FBUSxtQkFBbUI7Ozs7O0lBa0poRSxZQUFZLFVBQXNCLEVBQUUsZ0JBQWtDO1FBQ3BFLEtBQUssQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFF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TSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFJbEMsTUFBTSxDQUFDLGFBQWEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFdkMsTUFBTSxDQUFDLE9BQU8sQ0FBQztzQ0FDTSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCwgU2ltcGxlQ2hhbmdlcywgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEkxOE4gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kZWNvcmF0b3IvSTE4Ti5kZWNvcmF0b3InO1xyXG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9JSGFzRGF0YSc7XHJcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2RlY29yYXRvci9PcHRpb24uZGVjb3JhdG9yJztcclxuaW1wb3J0IHsgQWJzdHJhY3RTZWxlY3RJdGVtcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudC9kYXRhdmlldy9pbnB1dC9BYnN0cmFjdFNlbGVjdEl0ZW1zJztcclxuaW1wb3J0IHsgTmVlZEZvY3VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvTmVlZEZvY3VzU2VydmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXZlbnRVdGlscyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlL3V0aWxzL0V2ZW50VXRpbHMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L21vZGVsL1ZhbGlkYXRpb25SZXN1bHQnO1xyXG5pbXBvcnQgeyBEZWZhdWx0U2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L21vZGVsL0RlZmF1bHRTZWxlY3RJdGVtTW9kZWwnO1xyXG5pbXBvcnQgeyBJRGF0YUNvbXBhcmF0b3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9jb21wb25lbnQvSURhdGFDb21wYXJhdG9yJztcclxuaW1wb3J0IHsgQ0xJQ0tfRVZFTlQsIEJFRk9SRV9DTElDS19FVkVOVCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlL0N1c3RvbUV2ZW50VHlwZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJU2VsZWN0SXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50L2NvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbCc7XHJcblxyXG5jb25zdCBUWVBFX05BTUU6IHN0cmluZyA9IFwibWF0ZXJpYWwtdG9nZ2xlLXNlbGVjdC1pdGVtc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgbW9kdWxlSWQ6IG1vZHVsZS5pZCxcclxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cIm1hdGVyaWFsLWlucHV0IG1hdGVyaWFsLXRvZ2dsZS1zZWxlY3QtaXRlbXNcIj5cclxuICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgI2dyb3VwPVwibWF0QnV0dG9uVG9nZ2xlR3JvdXBcIiBtdWx0aXBsZSAqbmdJZj1cImlzTXVsdGlwbGUoKSA9PT0gdHJ1ZSAmJiAhaXNEaXNhYmxlZCgpXCIgW3ZlcnRpY2FsXT1cImlzVmVydGljYWwoKVwiPlxyXG4gICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJpdGVtLnZhbHVlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbZGlzYWJsZVJpcHBsZV09XCJpc0Rpc2FibGVkUmlwcGxlKClcIiBbY2hlY2tlZF09XCJpc0NoZWNrZWQoKVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgaSlcIj5cclxuICAgICAgPG1hdC1pY29uPnt7IGl0ZW0ubGFiZWwgfCBwaHhfdGV4dCB9fTwvbWF0LWljb24+XHJcbiAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgPG1hdC1idXR0b24tdG9nZ2xlLWdyb3VwICNncm91cD1cIm1hdEJ1dHRvblRvZ2dsZUdyb3VwXCIgKm5nSWY9XCJpc011bHRpcGxlKCkgPT09IGZhbHNlICYmICFpc0Rpc2FibGVkKClcIiBbdmVydGljYWxdPVwiaXNWZXJ0aWNhbCgpXCIgW25nQ2xhc3NdPVwiX3VuaXF1ZUlkXCI+XHJcbiAgICA8bWF0LWJ1dHRvbi10b2dnbGUgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIiBbbmdDbGFzc109XCInaXRlbS0nICtpXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0SXRlbXMoKTsgbGV0IGkgPSBpbmRleFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKClcIiBbZGlzYWJsZVJpcHBsZV09XCJpc0Rpc2FibGVkUmlwcGxlKClcIiBbY2hlY2tlZF09XCJpc0NoZWNrZWQoKVwiIChjbGljayk9XCJvbkNsaWNrKCRldmVudCwgaSlcIj5cclxuICAgICAgPG1hdC1pY29uPnt7IGl0ZW0ubGFiZWwgfCBwaHhfdGV4dCB9fTwvbWF0LWljb24+XHJcbiAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxyXG4gIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XHJcbiAgPCEtLSBbY2xhc3MubWF0LWJ1dHRvbi10b2dnbGUtY2hlY2tlZF09XCJnZXRPbGRWYWwoKSA9PT0gaXRlbS52YWx1ZVwiIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ2YWxpZGF0aW9uXCIgW3N0eWxlLmRpc3BsYXldPVwiZ2V0VmFsaWRhdGlvblJlc3VsdE1lc3NhZ2UoKSA/IHVuZGVmaW5lZCA6ICdub25lJ1wiIFtjbGFzcy5ub3JtYWxdPVwiaXNOb3JtYWwoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLnN1Y2Nlc3NdPVwiaXNTdWNjZXNzKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy53YXJuaW5nXT1cImlzV2FybmluZygpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3MuZXJyb3JdPVwiaXNFcnJvcigpICYmICFpc0Rpc2FibGVkKClcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXRWYWxpZGF0aW9uUmVzdWx0TWVzc2FnZSgpXCIgW25nSWZFbHNlXT1cInZhbGlkYXRpb25fZWxzZVwiPlxyXG4gICAgICAgIHt7Z2V0VmFsaWRhdGlvblJlc3VsdE1lc3NhZ2UoKSB8IHBoeF90ZXh0fX1cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3ZhbGlkYXRpb25fZWxzZT5cclxuICAgICAgICA8IS0tIFdlJ3ZlIHRvIHB1dCB3aGl0ZXNwYWNlIGlmIHRoZXJlIGlzIG5vIHZhbGlkYXRpb24gbXNnIHRvIHByZXZlbnQgZW1wdHkgZG9tIC0tPlxyXG4gICAgICAgIDwhLS0gc2luY2UgaWYgdmFsaWRhdGUgbXNnJ3MgPGRpdj4gZG9tIGlzIGVtcHR5LCB0aGUgY29tcG9uZW50IHBvc2l0aW9uaW5nIC0tPlxyXG4gICAgICAgIDwhLS0gd2lsbCBiZSBtaXNwbGFjZWQuIC0tPlxyXG4gICAgICAgIHt7ICcmbmJzcDsnIH19XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiIFtzdHlsZS5kaXNwbGF5XT1cImdldFZhbGlkYXRpb25SZXN1bHRNZXNzYWdlKCkgPyAnbm9uZScgOiB1bmRlZmluZWRcIiBbY2xhc3Mubm9ybWFsXT1cImlzTm9ybWFsKCkgJiYgIWlzRGlzYWJsZWQoKVwiIFtjbGFzcy5zdWNjZXNzXT1cImlzU3VjY2VzcygpICYmICFpc0Rpc2FibGVkKClcIiBbY2xhc3Mud2FybmluZ109XCJpc1dhcm5pbmcoKSAmJiAhaXNEaXNhYmxlZCgpXCIgW2NsYXNzLmVycm9yXT1cImlzRXJyb3IoKSAmJiAhaXNEaXNhYmxlZCgpXCI+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCJnZXREZXNjcmlwdGlvbigpXCIgW25nSWZFbHNlXT1cImRlc2NyaXB0aW9uX2Vsc2VcIj5cclxuICAgICAgICAgIHt7IGdldERlc2NyaXB0aW9uKCkgfCBwaHhfdGV4dCB9fVxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI2Rlc2NyaXB0aW9uX2Vsc2U+XHJcbiAgICAgICAgICA8IS0tIFdlJ3ZlIHRvIHB1dCB3aGl0ZXNwYWNlIGlmIHRoZXJlIGlzIG5vIGRlc2NyaXB0aW9uIHRvIHByZXZlbnQgZW1wdHkgZG9tIC0tPlxyXG4gICAgICAgICAgPCEtLSBzaW5jZSBpZiBkZXNjcmlwdGlvbidzIDxkaXY+IGRvbSBpcyBlbXB0eSwgdGhlIGNvbXBvbmVudCBwb3NpdGlvbmluZyAtLT5cclxuICAgICAgICAgIDwhLS0gd2lsbCBiZSBtaXNwbGFjZWQuIC0tPlxyXG4gICAgICAgICAge3sgJyZuYnNwOycgfX1cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiaGVscFwiPlxyXG4gICAgICB7e2dldEhlbHAoKSB8IHBoeF90ZXh0fX1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbmAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbFRvZ2dsZVNlbGVjdEl0ZW1zIGV4dGVuZHMgQWJzdHJhY3RTZWxlY3RJdGVtcyBpbXBsZW1lbnRzIE9uSW5pdCwgSUhhc0RhdGEge1xyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xyXG5cclxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQElucHV0LlxyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcclxuICBASW5wdXQoJ2kxOG5CeXBhc3MnKVxyXG4gIEBPcHRpb24oJ2kxOG5CeXBhc3MnKVxyXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBwcm90ZWN0ZWQgb3B0aW9uczogYW55O1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGRpc2FibGVkOiBib29sZWFuO1xyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0RGF0YVZpZXdcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBmaWVsZDogc3RyaW5nO1xyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SW5wdXREYXRhVmlld1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIG5hbWU6IHN0cmluZztcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCB0eXBlT2ZEYXRhOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgcmVhZE9ubHk6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBASTE4TigpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGhlbHA6IGFueTtcclxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdFNlbGVjdEl0ZW1zXHJcbiAgQElucHV0KCdjb21wYXJhdG9yJylcclxuICBAT3B0aW9uKCdjb21wYXJhdG9yJylcclxuICBwcm90ZWN0ZWQgZGF0YUNvbXBhcmF0b3I6IElEYXRhQ29tcGFyYXRvcjxhbnk+O1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGl0ZW1zOiBEZWZhdWx0U2VsZWN0SXRlbU1vZGVsW107XHJcblxyXG4gIC8vIC0tLSBmcm9tIHNlbGZcclxuICBASTE4TigpXHJcbiAgQE9wdGlvbigpXHJcbiAgQElucHV0KClcclxuICBwcml2YXRlIGRlc2NyaXB0aW9uOiBzdHJpbmc7XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgdmFsdWU6IGFueTtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBtdWx0aXBsZTogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCB2ZXJ0aWNhbDogYm9vbGVhbjtcclxuICBASW5wdXQoKVxyXG4gIEBPcHRpb24oKVxyXG4gIHByb3RlY3RlZCBkaXNhYmxlUmlwcGxlOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpXHJcbiAgQE9wdGlvbigpXHJcbiAgcHJvdGVjdGVkIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgQElucHV0KClcclxuICBAT3B0aW9uKClcclxuICBwcm90ZWN0ZWQgcmFuOiBhbnk7XHJcblxyXG4gIHB1YmxpYyBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2w7XHJcbiAgcHVibGljIGZvcm1Db250cm9sMjogRm9ybUNvbnRyb2w7XHJcblxyXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBAT3V0cHV0LlxyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxyXG4gIEBPdXRwdXQoJ3BoeExvYWQnKVxyXG4gIEBPcHRpb24oJ2xvYWQnKVxyXG4gIHByb3RlY3RlZCBsb2FkRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0RGF0YVZpZXdcclxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdElucHV0RGF0YVZpZXdcclxuICBAT3V0cHV0KCdwaHhTdGFydFZhbGlkYXRlJylcclxuICBAT3B0aW9uKCdzdGFydFZhbGlkYXRlJylcclxuICBwcm90ZWN0ZWQgc3RhcnRWYWxpZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhFbmRWYWxpZGF0ZScpXHJcbiAgQE9wdGlvbignZW5kVmFsaWRhdGUnKVxyXG4gIHByb3RlY3RlZCBlbmRWYWxpZGF0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVGb2N1cycpXHJcbiAgQE9wdGlvbignYmVmb3JlRm9jdXMnKVxyXG4gIHByb3RlY3RlZCBiZWZvcmVGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhGb2N1cycpXHJcbiAgQE9wdGlvbignZm9jdXMnKVxyXG4gIHByb3RlY3RlZCBmb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVMb3N0Rm9jdXMnKVxyXG4gIEBPcHRpb24oJ2JlZm9yZUxvc3RGb2N1cycpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUxvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhMb3N0Rm9jdXMnKVxyXG4gIEBPcHRpb24oJ2xvc3RGb2N1cycpXHJcbiAgcHJvdGVjdGVkIGxvc3RGb2N1c0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVDaGFuZ2UnKVxyXG4gIEBPcHRpb24oJ2JlZm9yZUNoYW5nZScpXHJcbiAgcHJvdGVjdGVkIGJlZm9yZUNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhDaGFuZ2UnKVxyXG4gIEBPcHRpb24oJ2NoYW5nZScpXHJcbiAgcHJvdGVjdGVkIGNoYW5nZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICAvLyAtLS0gZnJvbSBBYnN0cmFjdFNlbGVjdEl0ZW1zXHJcbiAgLy8gLS0tIGZyb20gQWJzdHJhY3RTZWxlY3RPbmVJdGVtXHJcbiAgQE91dHB1dCgncGh4QmVmb3JlU2VsZWN0JylcclxuICBAT3B0aW9uKCdiZWZvcmVTZWxlY3QnKVxyXG4gIHByb3RlY3RlZCBiZWZvcmVTZWxlY3RFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcbiAgQE91dHB1dCgncGh4U2VsZWN0JylcclxuICBAT3B0aW9uKCdzZWxlY3QnKVxyXG4gIHByb3RlY3RlZCBzZWxlY3RFdmVudDogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIC8vIC0tLSBmcm9tIHNlbGZcclxuICBAT3V0cHV0KCdwaHhCZWZvcmVDbGljaycpXHJcbiAgQE9wdGlvbignYmVmb3JlQ2xpY2snKVxyXG4gIHByb3RlY3RlZCBiZWZvcmVDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuICBAT3V0cHV0KCdwaHhDbGljaycpXHJcbiAgQE9wdGlvbignY2xpY2snKVxyXG4gIHByb3RlY3RlZCBjbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZ3JvdXAnKVxyXG4gIHByaXZhdGUgZ3JvdXA6IE1hdEJ1dHRvblRvZ2dsZTtcclxuICBwdWJsaWMgX3VuaXF1ZUlkOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIG5lZWRG