UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

736 lines (735 loc) 74.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, ElementRef, Output, EventEmitter } from '@angular/core'; import { AbstractAccordion } from './AbstractAccordion'; import { I18N } from '../../decorator/I18N.decorator'; import { Option } from '../../decorator/Option.decorator'; const /** @type {?} */ TYPE_NAME = "phx-component-accordion"; export class ComponentAccordion extends AbstractAccordion { /** * @param {?} elementRef */ constructor(elementRef) { super(elementRef); this.ACCORDIAN_CONTAINER_SELECTOR = ".accordion-container"; this.inited = false; this.autoInit = true; // fix to auto init this.itemComponents = []; this.activeItems = []; // imple for component handler this.pageComponentHandler = (data) => { if (this != null && typeof this !== 'undefined') { if (data.setting !== null && typeof data.setting !== 'undefined') { let /** @type {?} */ index = data.setting.index; if (index > -1) { if (index < this.itemComponents.length) { this.itemComponents[index] = data.instance; } else { let /** @type {?} */ count = this.itemComponents.length; while (count <= index) { if (count === index) { this.itemComponents.push(data.instance); } else { this.itemComponents.push(null); } count++; } } } if (this.items !== null && typeof this.items !== 'undefined') { if (index < this.items.length) { let /** @type {?} */ item = this.items[index]; if (typeof data.instance.setModel === 'function') { data.instance.setModel(item.componentModel); } if (typeof data.instance.setData === 'function') { data.instance.setData(item.componentData); } // by pass child if (this.dataParent !== null && typeof this.dataParent !== 'undefined') { if (typeof this.dataParent.addDataChild === 'function') { let /** @type {?} */ hasDataCompo = /** @type {?} */ (data.instance); if (typeof hasDataCompo !== 'undefined') { this.dataParent.addDataChild(hasDataCompo); } } } // delegate handler if (item.componentHandler !== null && typeof item.componentHandler !== 'undefined') { item.componentHandler.call(null, data); } } } } } }; } /** * @return {?} */ ngOnInit() { super.ngOnInit(); this.setDataParent(this.dataParent); } /** * @param {?} id * @return {?} */ moveUpAccordionBelowId(id) { if (id === null || typeof id === 'undefined') { return; } if (this.elementRef !== null && typeof this.elementRef !== 'undefined') { let /** @type {?} */ accordionSelector = ".accordion-item"; let /** @type {?} */ selector = "#" + id + accordionSelector; let /** @type {?} */ selectorElement = $(this.elementRef.nativeElement).find(selector); let /** @type {?} */ height = 0; if (typeof selectorElement !== 'undefined') { if (typeof $(selectorElement).height() !== 'undefined') { height = $(selectorElement).height(); } let /** @type {?} */ bodySelector = $(selectorElement).find(".body"); if (typeof bodySelector !== 'undefined') { height = $(bodySelector).height(); } let /** @type {?} */ nextElement = $(selectorElement).next(); if (typeof nextElement !== 'undefined') { $(nextElement).css('margin-top', -height); } } let /** @type {?} */ accContainerSelector = this.ACCORDIAN_CONTAINER_SELECTOR; let /** @type {?} */ accContainerElement = $(this.elementRef.nativeElement).find(accContainerSelector); let /** @type {?} */ containerHeight = 0; if (typeof accContainerElement !== 'undefined') { containerHeight = 0; if (typeof $(accContainerElement).height() !== 'undefined') { containerHeight = $(accContainerElement).height(); } } let /** @type {?} */ fakeAccordionSelector = ".fake"; let /** @type {?} */ fakeAccElement = $(this.elementRef.nativeElement).find(fakeAccordionSelector); let /** @type {?} */ fakeHeight = 0; let /** @type {?} */ oldFakeHeight = 0; if (typeof fakeAccElement !== 'undefined') { let /** @type {?} */ beforeFakeElement = $(fakeAccElement).prev(); if (beforeFakeElement !== undefined) { if ($(beforeFakeElement).hasClass("hideborder")) { if (typeof $(fakeAccElement).height() !== 'undefined') { fakeHeight = $(fakeAccElement).height(); oldFakeHeight = $(fakeAccElement).height(); } fakeHeight = fakeHeight - height; if (!this.isFixedHeight()) { fakeHeight = 0; } else { // if hide last index if (id === ((this.items.length - 1) + "")) { fakeHeight = height; } } $(fakeAccElement).css('height', fakeHeight); } } } } } /** * @param {?} id * @return {?} */ moveDownAccordionBelowId(id) { if (id === null || typeof id === 'undefined') { return; } if (this.elementRef !== null && typeof this.elementRef !== 'undefined') { let /** @type {?} */ accordionSelector = ".accordion-item"; let /** @type {?} */ selector = "#" + id + accordionSelector; let /** @type {?} */ selectorElement = $(this.elementRef.nativeElement).find(selector); let /** @type {?} */ height = 0; if (typeof selectorElement !== 'undefined') { if (typeof $(selectorElement).height() !== 'undefined') { height = $(selectorElement).height(); } let /** @type {?} */ bodySelector = $(selectorElement).find(".body"); if (typeof bodySelector !== 'undefined') { height = $(bodySelector).height(); } let /** @type {?} */ nextElement = $(selectorElement).next(); if (typeof nextElement !== 'undefined') { $(nextElement).css('margin-top', ''); } } let /** @type {?} */ oldFakeHeight = 0; let /** @type {?} */ fakeHeight = 0; let /** @type {?} */ fakeAccordionSelector = ".fake"; let /** @type {?} */ fakeAccElement = $(this.elementRef.nativeElement).find(fakeAccordionSelector); if (typeof fakeAccElement !== 'undefined') { let /** @type {?} */ beforeFakeElement = $(fakeAccElement).prev(); if (beforeFakeElement !== undefined) { if ($(beforeFakeElement).hasClass("hideborder")) { // hiding last is up to fix height if (typeof $(fakeAccordionSelector).height() !== 'undefined') { fakeHeight = $(fakeAccordionSelector).height(); oldFakeHeight = $(fakeAccordionSelector).height(); } // fakeHeight = fakeHeight + height; fakeHeight = height; if (!this.isFixedHeight()) { fakeHeight = 0; } // *** $(fakeAccordionSelector).css('height', fakeHeight); } } } } } /** * @return {?} */ refreshContainerHeight() { if (!this.multipleExpand) { return; } if (this.elementRef !== null && typeof this.elementRef !== 'undefined') { let /** @type {?} */ accContainerSelector = this.ACCORDIAN_CONTAINER_SELECTOR; let /** @type {?} */ accContainerElement = $(this.elementRef.nativeElement).find(accContainerSelector); // reset height $(accContainerElement).css('height', ''); let /** @type {?} */ newContentHeight = 0; let /** @type {?} */ missingHeight = 0; let /** @type {?} */ accordionSelector = ".accordion-item"; $(this.elementRef.nativeElement).find(accordionSelector).each((index, element) => { let /** @type {?} */ headerHeight = $(element).find('.header').outerHeight(); let /** @type {?} */ bodyHeight = $(element).find('.body').outerHeight(); let /** @type {?} */ eleHeight = $(element).height(); if (!$(element).hasClass("fake")) { let /** @type {?} */ checkItem = null; if (this.items !== null && typeof this.items !== 'undefined') { checkItem = this.items[index]; } if (this.activeItems !== null && typeof this.activeItems !== 'undefined') { let /** @type {?} */ isActive = this.activeItems.indexOf(checkItem) >= 0; if (isActive) { newContentHeight += eleHeight; } else { newContentHeight += headerHeight; missingHeight += bodyHeight; } } } else { // is fake } }); $(accContainerElement).css('height', newContentHeight); } } /** * @param {?} index * @return {?} */ _getItemHeight(index) { if (index !== null && typeof index !== 'undefined' && index > -1) { if (this.items !== null && typeof this.items !== 'undefined' && index < this.items.length) { let /** @type {?} */ height = this.items[index].height; if (height !== null && typeof height !== 'undefined') { return this.items[index].height; } } } return ''; } /** * @return {?} */ _getPageComponentHandler() { return this.pageComponentHandler; } /** * @param {?} $event * @param {?} index * @return {?} */ onShowBodyBtnClick($event, index) { let /** @type {?} */ isActive = this.isActive(index); let /** @type {?} */ isEnable = this.isEnable(index); if (!isEnable) { if (isActive) { this.deactivate(index); } return; } if (isActive) { this.deactivate(index); } else { this.activate(index); } } /** * @param {?} index * @return {?} */ isShow(index) { let /** @type {?} */ active = this.isActive(index); let /** @type {?} */ enable = this.isEnable(index); return enable && active; } /** * @return {?} */ init() { if (this.inited) { return; } this.activeItems = []; if (this.multipleExpand) { // all is active by default if (this.items !== null && typeof this.items !== 'undefined') { for (let /** @type {?} */ item of this.items) { if (item.enable) { item.active = true; this.activeItems.push(item); } } } } else { // only one is active if (this.items !== null && typeof this.items !== 'undefined') { let /** @type {?} */ markFirst = false; for (let /** @type {?} */ item of this.items) { if (item.enable && !markFirst) { item.active = true; this.activeItems.push(item); markFirst = true; } else { item.active = false; } } } } if (this.delayTimer !== null && typeof this.delayTimer !== 'undefined') { clearTimeout(this.delayTimer); this.delayTimer = null; } this.delayTimer = setTimeout(() => { for (let /** @type {?} */ i = 0; i < this.items.length; i++) { let /** @type {?} */ idKey = i + ""; let /** @type {?} */ item = this.items[i]; if (!item.enable) { this.moveUpAccordionBelowId(idKey); } else { if (!item.active) { this.moveUpAccordionBelowId(idKey); } } } }, 1); this.inited = true; } /** * @return {?} */ reload() { if (this.itemComponents !== null && typeof this.itemComponents.length) { for (let /** @type {?} */ i = 0; i < this.itemComponents.length; i++) { let /** @type {?} */ component = this.itemComponents[i]; if (component === null || typeof component === 'undefined') { continue; } let /** @type {?} */ item = (i < this.items.length) ? this.items[i] : null; if (item === null || typeof item === 'undefined') { continue; } if (typeof component.setModel === 'function') { component.setModel(item.componentModel); } if (typeof component.setData === 'function') { component.setData(item.componentData); } } } } /** * @return {?} */ reRender() { this.refreshContainerHeight(); } /** * @param {?} index * @return {?} */ getAccordianComponent(index) { if (index > -1 && index < this.itemComponents.length) { return this.itemComponents[index]; } return null; } /** * @param {?} index * @param {?} item * @return {?} */ onAccordionActived(index, item) { setTimeout(() => { let /** @type {?} */ idKey = index + ""; this.moveDownAccordionBelowId(idKey); if (this.activeItems.indexOf(item) < 0) { this.activeItems.push(item); } }, 5); } /** * @param {?} index * @param {?} item * @return {?} */ onAccordionDeactived(index, item) { setTimeout(() => { let /** @type {?} */ idKey = index + ""; this.moveUpAccordionBelowId(idKey); if (this.activeItems.indexOf(item) >= 0) { let /** @type {?} */ index = this.activeItems.indexOf(item); this.activeItems.splice(index, 1); } }, 5); } /** * @param {?} index * @param {?} item * @return {?} */ onAccordionEnabled(index, item) { } /** * @param {?} index * @param {?} item * @return {?} */ onAccordionDisabled(index, item) { } /** * @param {?} dataParent * @return {?} */ setDataParent(dataParent) { // by pass to children component that was IHasData if (this.dataParent !== null && typeof this.dataParent !== 'undefined') { if (typeof this.dataParent.removeDataChild === 'function') { if (this.itemComponents !== null && typeof this.itemComponents !== 'undefined') { for (let /** @type {?} */ compo of this.itemComponents) { let /** @type {?} */ hasDataCompo = /** @type {?} */ (compo); if (typeof hasDataCompo !== 'undefined') { this.dataParent.removeDataChild(hasDataCompo); } } } } } this.dataParent = dataParent; if (this.dataParent !== null && typeof this.dataParent !== 'undefined') { if (typeof this.dataParent.addDataChild === 'function') { for (let /** @type {?} */ compo of this.itemComponents) { let /** @type {?} */ hasDataCompo = /** @type {?} */ (compo); if (typeof hasDataCompo !== 'undefined') { this.dataParent.addDataChild(hasDataCompo); } } } } } /** * @return {?} */ getDataParent() { return this.dataParent; } /** * @return {?} */ getItems() { return this.items; } /** * @return {?} */ isSelfDataDirty() { return false; } /** * @param {?} data * @return {?} */ selfSaveData(data) { } /** * @return {?} */ selfResetData() { } } ComponentAccordion.TYPE_NAME = TYPE_NAME; ComponentAccordion.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<div class="phx-component-accordion"> <div class="accordion-container" [style.height]="getFixedHeight()"> <ng-template ngFor let-item [ngForOf]="getItems()" let-i="index"> <div class="accordion-item" id="{{i+''}}" [class.hideborder]="!isShow(i)"> <div class="header" (click)="onShowBodyBtnClick($event, i)"> <div class="header-wrapper" [class.disable]="!isEnable(i)"> <div class="left"><h4>{{item.label}}</h4></div> <div class="right"> <div class="down-triangle" [class.left-triangle-accordion]="!isShow(i)"></div> </div> </div> </div> <div class="body" [style.height]="_getItemHeight(i)"> <!-- <div class="body-wrapper" [class.show]="isShow(i)" [class.disable]="!isEnable(i)"> --> <div class="body-wrapper" [style.display]="!isShow(i) ? 'none' : undefined" [class.show]="isShow(i)" [class.disable]="!isEnable(i)"> <phx-component-wrapper [type]="item.componentType" [data]="item.componentData" [handler]="_getPageComponentHandler()" [setting]="{index: i}" [model]="item.componentModel" [dataParent]="this"></phx-component-wrapper> </div> </div> </div> </ng-template> <div class="accordion-item fake"><!-- fake for height --></div> </div> </div> ` },] }, ]; /** @nocollapse */ ComponentAccordion.ctorParameters = () => [ { type: ElementRef, }, ]; ComponentAccordion.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 },], "loadEvent": [{ type: Output, args: ['phxLoad',] },], "beforeActivateEvent": [{ type: Output, args: ['phxBeforeActivate',] },], "activateEvent": [{ type: Output, args: ['phxActivate',] },], "beforeDeactivateEvent": [{ type: Output, args: ['phxBeforeDeactivate',] },], "deactivateEvent": [{ type: Output, args: ['phxDeactivate',] },], "beforeEnableEvent": [{ type: Output, args: ['phxBeforeEnable',] },], "enableEvent": [{ type: Output, args: ['phxEnable',] },], "beforeDisableEvent": [{ type: Output, args: ['phxBeforeDisable',] },], "disableEvent": [{ type: Output, args: ['phxDisable',] },], "items": [{ type: Input },], "fixedHeight": [{ type: Input },], "name": [{ type: Input },], "multipleExpand": [{ type: Input },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], ComponentAccordion.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], ComponentAccordion.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], ComponentAccordion.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], ComponentAccordion.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], ComponentAccordion.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), I18N(), tslib_1.__metadata("design:type", Object) ], ComponentAccordion.prototype, "help", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], ComponentAccordion.prototype, "field", void 0); tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "loadEvent", void 0); tslib_1.__decorate([ Option('beforeActivate'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "beforeActivateEvent", void 0); tslib_1.__decorate([ Option('activate'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "activateEvent", void 0); tslib_1.__decorate([ Option('beforeDeactivate'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "beforeDeactivateEvent", void 0); tslib_1.__decorate([ Option('deactivate'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "deactivateEvent", void 0); tslib_1.__decorate([ Option('beforeEnable'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "beforeEnableEvent", void 0); tslib_1.__decorate([ Option('enable'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "enableEvent", void 0); tslib_1.__decorate([ Option('beforeDisable'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "beforeDisableEvent", void 0); tslib_1.__decorate([ Option('disable'), tslib_1.__metadata("design:type", EventEmitter) ], ComponentAccordion.prototype, "disableEvent", void 0); tslib_1.__decorate([ I18N(), Option(), tslib_1.__metadata("design:type", Array) ], ComponentAccordion.prototype, "items", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], ComponentAccordion.prototype, "fixedHeight", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], ComponentAccordion.prototype, "name", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], ComponentAccordion.prototype, "multipleExpand", void 0); tslib_1.__decorate([ I18N('components'), tslib_1.__metadata("design:type", Array) ], ComponentAccordion.prototype, "itemComponents", void 0); function ComponentAccordion_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ComponentAccordion.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ComponentAccordion.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ComponentAccordion.propDecorators; /** @type {?} */ ComponentAccordion.TYPE_NAME; /** @type {?} */ ComponentAccordion.prototype.ACCORDIAN_CONTAINER_SELECTOR; /** @type {?} */ ComponentAccordion.prototype.dataParent; /** @type {?} */ ComponentAccordion.prototype.ignoreParentData; /** @type {?} */ ComponentAccordion.prototype.data; /** @type {?} */ ComponentAccordion.prototype.ignoreParentDisabled; /** @type {?} */ ComponentAccordion.prototype.delegateHistory; /** @type {?} */ ComponentAccordion.prototype.onDisabled; /** @type {?} */ ComponentAccordion.prototype.onEnabled; /** @type {?} */ ComponentAccordion.prototype.loadingEnabled; /** @type {?} */ ComponentAccordion.prototype.i18nKey; /** @type {?} */ ComponentAccordion.prototype.bypass; /** @type {?} */ ComponentAccordion.prototype.options; /** @type {?} */ ComponentAccordion.prototype.disabled; /** @type {?} */ ComponentAccordion.prototype.help; /** @type {?} */ ComponentAccordion.prototype.field; /** @type {?} */ ComponentAccordion.prototype.loadEvent; /** @type {?} */ ComponentAccordion.prototype.beforeActivateEvent; /** @type {?} */ ComponentAccordion.prototype.activateEvent; /** @type {?} */ ComponentAccordion.prototype.beforeDeactivateEvent; /** @type {?} */ ComponentAccordion.prototype.deactivateEvent; /** @type {?} */ ComponentAccordion.prototype.beforeEnableEvent; /** @type {?} */ ComponentAccordion.prototype.enableEvent; /** @type {?} */ ComponentAccordion.prototype.beforeDisableEvent; /** @type {?} */ ComponentAccordion.prototype.disableEvent; /** @type {?} */ ComponentAccordion.prototype.items; /** @type {?} */ ComponentAccordion.prototype.fixedHeight; /** @type {?} */ ComponentAccordion.prototype.name; /** @type {?} */ ComponentAccordion.prototype.multipleExpand; /** @type {?} */ ComponentAccordion.prototype.itemComponents; /** @type {?} */ ComponentAccordion.prototype.delayTimer; /** @type {?} */ ComponentAccordion.prototype.inited; /** @type {?} */ ComponentAccordion.prototype.activeItems; /** @type {?} */ ComponentAccordion.prototype.pageComponentHandler; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tcG9uZW50QWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudC9kYXRhdmlldy9Db21wb25lbnRBY2NvcmRpb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0YsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUkxRCx1QkFBTSxTQUFTLEdBQVcseUJBQXlCLENBQUM7QUE4QnBELE1BQU0seUJBQTBCLFNBQVEsaUJBQThDOzs7O0lBMEdwRixZQUFZLFVBQXNCO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQzs0Q0F2RzJCLHNCQUFzQjtRQXlHbkUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7O1FBRXRCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ3hDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDaEQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2pF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QUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7c0NBQ2EsUUFBUTs7O0lBRTdCLE1BQU0sRUFBRTtzQ0FDWSxRQUFROzs7SUFFNUIsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxDQUFDLFlBQVksQ0FBQzs7OztJQUtwQixNQUFNLEVBQUU7Ozs7SUFHUixNQUFNLEVBQUU7SUFDUixJQUFJLEVBQUU7Ozs7SUFJTixNQUFNLEVBQUU7Ozs7SUFNUixNQUFNLENBQUMsTUFBTSxDQUFDO3NDQUNNLFlBQVk7OztJQUloQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7c0NBQ00sWUFBWTs7O0lBRTFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7c0NBQ00sWUFBWTs7O0lBRXBDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFNUMsTUFBTSxDQUFDLFlBQVksQ0FBQztzQ0FDTSxZQUFZOzs7SUFFdEMsTUFBTSxDQUFDLGNBQWMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFeEMsTUFBTSxDQUFDLFFBQVEsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFbEMsTUFBTSxDQUFDLGVBQWUsQ0FBQztzQ0FDTSxZQUFZOzs7SUFFekMsTUFBTSxDQUFDLFNBQVMsQ0FBQztzQ0FDTSxZQUFZOzs7SUFJbkMsSUFBSSxFQUFFO0lBQ04sTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsSUFBSSxDQUFDLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRWxlbWVudFJlZiwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBvbmVudEFjY29yZGlvbkl0ZW1Nb2RlbCB9IGZyb20gJy4uL21vZGVsL0Nv