UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

693 lines (692 loc) 86.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Directive, ElementRef, Input, ViewContainerRef, ComponentFactoryResolver } from '@angular/core'; import { Option } from '../decorator/Option.decorator'; import { I18N } from '../decorator/I18N.decorator'; import { AbstractI18NApplicable } from '../share/AbstractI18NApplicable'; import { MaterialIconLoader } from '../theme/material/component/MaterialIconLoader.component'; import { DEFAULT_SCROLL_LOAD_OFF_SET, DEFAULT_SCROLL_LOAD_COUNT, DEFAULT_SCROLL_LOAD_LABEL, DEFAULT_SCROLL_LOAD_DELAY, DEFAULT_SCROLL_LOAD_RELOAD_LABEL, DEFAULT_SCROLL_LOAD_COMPLETE_LABEL, DEFAULT_SCROLL_LOAD_AUTO, DEFAULT_SCROLL_LOAD_RELOAD_AUTO, DEFAULT_SCROLL_LOAD_RELOAD_DISABLED, DEFAULT_SCROLL_LOAD_APPEND_CLASS_WRAPPER_ICON_RELOAD } from '../share/Constants'; const /** @type {?} */ NAME = 'scroll-load'; const /** @type {?} */ SETTIMEOUT_HIDE_LOAD_MORE = 10; const /** @type {?} */ SETTIMEOUT_CHECK_NONE_SCROLL_LOAD = 20; const /** @type {?} */ SETTIMEOUT_LOAD_NEXT_RELOAD_AND_SHOW_HIDE_LOADMORE = 100; const /** @type {?} */ SETTIMEOUT_FADEOUT_REMOVE_CLASS_SHOW_WRAPPER_ICON_RELOAD = 200; const /** @type {?} */ SETTIMEOUT_ON_SHOW_RELOADER = SETTIMEOUT_FADEOUT_REMOVE_CLASS_SHOW_WRAPPER_ICON_RELOAD; const /** @type {?} */ SETTIMEOUT_FADEOUT_SHOW_LOAD_MORE = SETTIMEOUT_FADEOUT_REMOVE_CLASS_SHOW_WRAPPER_ICON_RELOAD; const /** @type {?} */ SETTIMEOUT_MOUSE_OUT_HOVER_HIDE_RELOAD_ICON = 1000; const /** @type {?} */ SETTIMEOUT_SHOW_ICON_RELOADING_AND_HIDE_RELOAD_ICON = 1000; const /** @type {?} */ SETTIMEOUT_MOUSE_MOVE_HIDE_RELOAD_ICON = 3000; export class ScrollLoad extends AbstractI18NApplicable { /** * @param {?} containerRef * @param {?} componentFactoryResolver * @param {?} elementRef */ constructor(containerRef, componentFactoryResolver, elementRef) { super(); this.containerRef = containerRef; this.componentFactoryResolver = componentFactoryResolver; this.onShowReloader = false; this.elementRef = elementRef; } /** * @return {?} */ ngOnInit() { if (this.options !== null) { if (typeof this.options === 'object') { this.setOptions(this.options); } else if (typeof this.options === 'function' && !this.scrollLoadFunc) { this.scrollLoadFunc = this.options; } } if (this.scrollLoadOffset === undefined || this.scrollLoadOffset === null || typeof this.scrollLoadOffset !== 'number') { this.scrollLoadOffset = DEFAULT_SCROLL_LOAD_OFF_SET; } if (this.scrollLoadCount === undefined || this.scrollLoadCount === null || typeof this.scrollLoadCount !== 'number') { this.scrollLoadCount = DEFAULT_SCROLL_LOAD_COUNT; } if (this.scrollLoadInitCount === undefined || this.scrollLoadInitCount === null || typeof this.scrollLoadInitCount !== 'number') { this.scrollLoadInitCount = this.scrollLoadCount; } if (this.scrollLoadIcon === undefined || this.scrollLoadIcon === null || typeof this.scrollLoadIcon !== 'string') { this.scrollLoadIcon = MaterialIconLoader.BALL_PULSE_SYNC; } if (this.scrollLoadReloadIcon === undefined || this.scrollLoadReloadIcon === null || typeof this.scrollLoadReloadIcon !== 'string') { this.scrollLoadReloadIcon = MaterialIconLoader.BALL_SCALE_RIPPLE_MULTIPLE; } if (this.scrollLoadLabel === undefined || this.scrollLoadLabel === null || typeof this.scrollLoadLabel !== 'string') { this.scrollLoadLabel = DEFAULT_SCROLL_LOAD_LABEL; } if (this.scrollLoadReloadLabel === undefined || this.scrollLoadReloadLabel === null || typeof this.scrollLoadReloadLabel !== 'string') { this.scrollLoadReloadLabel = DEFAULT_SCROLL_LOAD_RELOAD_LABEL; } if (this.scrollLoadCompleteLabel === undefined || this.scrollLoadCompleteLabel === null || typeof this.scrollLoadCompleteLabel !== 'string') { this.scrollLoadCompleteLabel = DEFAULT_SCROLL_LOAD_COMPLETE_LABEL; } if (this.scrollLoadAuto === undefined || this.scrollLoadAuto === null || typeof this.scrollLoadAuto !== 'boolean') { this.scrollLoadAuto = DEFAULT_SCROLL_LOAD_AUTO; } if (this.scrollLoadReloadAuto === undefined || this.scrollLoadReloadAuto === null || typeof this.scrollLoadReloadAuto !== 'boolean') { this.scrollLoadReloadAuto = DEFAULT_SCROLL_LOAD_RELOAD_AUTO; } if (this.scrollLoadReloadDisabled === undefined || this.scrollLoadReloadDisabled === null || typeof this.scrollLoadReloadDisabled !== 'boolean') { this.scrollLoadReloadDisabled = DEFAULT_SCROLL_LOAD_RELOAD_DISABLED; } if (this.scrollLoadDelay === undefined || this.scrollLoadDelay === null || typeof this.scrollLoadDelay !== 'number') { this.scrollLoadDelay = DEFAULT_SCROLL_LOAD_DELAY; } $(this.elementRef.nativeElement).addClass('phx-scroll-load'); $(this.elementRef.nativeElement).append(DEFAULT_SCROLL_LOAD_APPEND_CLASS_WRAPPER_ICON_RELOAD); if (!this.scrollLoadReloadAuto && !this.scrollLoadReloadDisabled) { this.counter = 0; this.initManualReloadEvents(); } this.reset(); this.renderIconLoader(); this.renderReloadIconLoader(); this.hideLoadIcon(); $(this.elementRef.nativeElement).find(".icon-reloading").hide(); this.refreshIconLoaders(); this.initScrollEvents(); this.loadNext().then(() => { this.checkNoneScrollLoad(); }); } /** * @return {?} */ ngOnChanges() { if (this.iconLoader !== undefined && this.reloadIconLoader !== undefined) { this.refreshIconLoaders(); if (!this.scrollLoadReloadAuto && !this.scrollLoadReloadDisabled) { if ($(this.elementRef.nativeElement).find(".reloader-manual").length === 0) { this.initManualReloadEvents(); } } else if (this.scrollLoadReloadAuto && !this.scrollLoadReloadDisabled) { if ($(this.elementRef.nativeElement).find(".reloader-manual").length > 0) { $(this.elementRef.nativeElement).find(".reloader-manual").removeClass("show-reloader-manual"); } } $(this.elementRef.nativeElement).scrollTop(1); this.reload(); } } /** * @return {?} */ refreshIconLoaders() { this.iconLoader['iconName'] = this.scrollLoadIcon; this.reloadIconLoader['iconName'] = this.scrollLoadReloadIcon; } /** * @return {?} */ renderIconLoader() { let /** @type {?} */ factory = this.componentFactoryResolver.resolveComponentFactory(MaterialIconLoader); let /** @type {?} */ componentRef = this.containerRef.createComponent(factory); let /** @type {?} */ componentEl = componentRef.location; $(componentEl.nativeElement).detach().appendTo(this.elementRef.nativeElement); $(componentEl.nativeElement).addClass('icon-loading-next'); this.iconLoader = componentRef.instance; this.iconLoader.setLoaderClass('color-icon-load-next'); this.iconLoader.start(); } /** * @return {?} */ renderReloadIconLoader() { let /** @type {?} */ factory = this.componentFactoryResolver.resolveComponentFactory(MaterialIconLoader); let /** @type {?} */ componentRef = this.containerRef.createComponent(factory); let /** @type {?} */ componentEl = componentRef.location; $(componentEl.nativeElement).detach().appendTo($(this.elementRef.nativeElement).find(".wrapper-icon-reload")); $(componentEl.nativeElement).addClass('icon-reloading'); this.reloadIconLoader = componentRef.instance; this.reloadIconLoader.setLoaderClass('color-icon-reload'); this.reloadIconLoader.start(); } /** * @return {?} */ initManualReloadEvents() { let /** @type {?} */ manualReload = document.createElement("div"); manualReload.setAttribute("class", 'reloader-manual show-reloader-manual'); $(this.elementRef.nativeElement).append(manualReload); $(manualReload) .mouseout(() => { this.counter = 0; this.hideReloadIconTimeout = setTimeout(() => { this.counter = 0; this.hideReloadIcon(); }, SETTIMEOUT_MOUSE_MOVE_HIDE_RELOAD_ICON); }) .mousemove(() => { if (this.onLoading && this.onReload) { this.counter++; if (this.counter === 10) { this.showReloadIcon(); this.onShowReloader = true; setTimeout(() => { this.onShowReloader = false; }, SETTIMEOUT_ON_SHOW_RELOADER); } } }); let /** @type {?} */ iconReload = $(this.elementRef.nativeElement).find(".icon-reloader"); let /** @type {?} */ wrapperIconReload = $(this.elementRef.nativeElement).find(".wrapper-icon-reload"); iconReload.hover(() => { if (!this.onShowReloader) { clearTimeout(this.hideReloadIconTimeout); wrapperIconReload.append("<span class='below-reload'>" + this.scrollLoadReloadLabel + "</span>"); } }, () => { wrapperIconReload.find(".below-reload").remove(); this.hideReloadIconTimeout = setTimeout(() => { this.counter = 0; this.hideReloadIcon(); }, SETTIMEOUT_MOUSE_OUT_HOVER_HIDE_RELOAD_ICON); }); $(this.elementRef.nativeElement).scroll(() => { this.hideReloadIcon(); }); } /** * @return {?} */ initScrollEvents() { $(this.elementRef.nativeElement).scroll(() => { let /** @type {?} */ ele = this.elementRef.nativeElement; let /** @type {?} */ scrollHeight = ele.scrollHeight; let /** @type {?} */ clientHeight = ele.clientHeight; let /** @type {?} */ scrollTop = clientHeight + ele.scrollTop; if (scrollHeight !== clientHeight && this.scrollLoadAuto) { if (((scrollHeight - (scrollTop)) < 15) && this.onLoading && this.onReload && this.onLoadAuto) { this.showLoadIcon(); this.onLoading = false; setTimeout(() => { this.loadNext().then(() => { this.checkNoneScrollLoad(); }); }, SETTIMEOUT_LOAD_NEXT_RELOAD_AND_SHOW_HIDE_LOADMORE); } } if (!this.scrollLoadReloadDisabled && this.scrollLoadReloadAuto) { if (ele.scrollTop === 0 && this.onLoading && this.onReload && this.cursor !== 0) { this.callDelayEvents(); ele.setAttribute('style', 'padding-top: 50px;'); $(this.elementRef.nativeElement).scrollTop(50); this.onReload = false; $(this.elementRef.nativeElement).scrollTop(0); setTimeout(() => { this.reload().then(() => { this.checkNoneScrollLoad(true); }); this.showReloadIcon(); ele.setAttribute('style', 'padding-top: unset;'); }, SETTIMEOUT_LOAD_NEXT_RELOAD_AND_SHOW_HIDE_LOADMORE); } } else if (!this.scrollLoadReloadDisabled && !this.scrollLoadReloadAuto) { if (ele.scrollTop <= 10) { $(this.elementRef.nativeElement).find(".reloader-manual").addClass('show-reloader-manual'); } else { $(this.elementRef.nativeElement).find(".reloader-manual").removeClass("show-reloader-manual"); } } }); } /** * @return {?} */ showReloadIcon() { $(this.elementRef.nativeElement).find(".wrapper-icon-reload").show(); $(this.elementRef.nativeElement).find(".wrapper-icon-reload").addClass('show-wrapper-icon-reload'); let /** @type {?} */ loade2 = $(this.elementRef.nativeElement).find(".icon-reloader"); loade2.click(() => { this.callDelayEvents(); if (!this.scrollLoadReloadAuto && this.onLoading && this.onReload) { this.onReload = false; this.reload().then(() => { this.checkNoneScrollLoad(true); }); } }); } /** * @return {?} */ hideReloadIcon() { return new Promise((resolve, reject) => { try { $(this.elementRef.nativeElement).find(".wrapper-icon-reload").fadeOut(SETTIMEOUT_FADEOUT_REMOVE_CLASS_SHOW_WRAPPER_ICON_RELOAD, function () { $(this).removeClass("show-wrapper-icon-reload"); resolve(); }); } catch (/** @type {?} */ err) { reject(err); } }); } /** * @return {?} */ showLoadIcon() { $(this.elementRef.nativeElement).find(".icon-loading-next").show(); } /** * @return {?} */ hideLoadIcon() { $(this.elementRef.nativeElement).find(".icon-loading-next").fadeOut(SETTIMEOUT_FADEOUT_REMOVE_CLASS_SHOW_WRAPPER_ICON_RELOAD); } /** * @return {?} */ showLoadMore() { let /** @type {?} */ loadMore = document.createElement("div"); loadMore.innerHTML = this.scrollLoadLabel; loadMore.setAttribute("class", 'loadMore'); if (this.completeInformation) { loadMore.innerHTML = this.scrollLoadCompleteLabel; } else { loadMore.innerHTML = this.scrollLoadLabel; } $(this.elementRef.nativeElement).append(loadMore); $(loadMore).click(() => { this.callDelayEvents(); if (this.onLoading && this.onReload) { this.onLoading = false; this.hideLoadMore(); this.showLoadIcon(); setTimeout(() => { this.loadNext().then(() => { this.checkNoneScrollLoad(); }); }, SETTIMEOUT_LOAD_NEXT_RELOAD_AND_SHOW_HIDE_LOADMORE); } }); } /** * @return {?} */ hideLoadMore() { $(this.elementRef.nativeElement).find(".loadMore").fadeOut(SETTIMEOUT_HIDE_LOAD_MORE, function () { $(this).remove(); }); } /** * @return {?} */ callDelayEvents() { let /** @type {?} */ curTime = Date.now(); if (curTime - this.lastScrollTime <= /*delay*/ /*delay*/ this.scrollLoadDelay) { // Do nothing within delay. return; } this.lastScrollTime = curTime; } /** * @return {?} */ doScrollTopReLoad() { if (this.scrollLoadFunc === null || typeof this.scrollLoadFunc !== 'function') { return Promise.resolve(0); } let /** @type {?} */ resultProm = null; try { this.reset(true); let /** @type {?} */ result = this.scrollLoadFunc(this.cursor, this.scrollLoadInitCount); if (result !== null && result instanceof Promise) { resultProm = result; } else { resultProm = Promise.resolve(result); } } catch (/** @type {?} */ e) { return Promise.reject(e); } return resultProm; } /** * @return {?} */ doScrollLoad() { if (this.scrollLoadFunc === null || typeof this.scrollLoadFunc !== 'function') { return Promise.resolve(0); } let /** @type {?} */ resultProm = null; try { let /** @type {?} */ result; if (this.cursor === 0) { result = this.scrollLoadFunc(this.cursor, this.scrollLoadInitCount + this.cursor); } else { result = this.scrollLoadFunc(this.cursor, this.scrollLoadCount + this.cursor); } if (result !== null && result instanceof Promise) { resultProm = result; } else { resultProm = Promise.resolve(result); } } catch (/** @type {?} */ e) { return Promise.reject(e); } return resultProm; } /** * @param {?=} reload * @return {?} */ reset(reload) { return new Promise((resolve, reject) => { try { this.onLoading = true; this.onLoadAuto = true; this.completeInformation = false; this.onReload = true; this.cursor = 0; if (reload) { this.onReload = false; this.lastScrollTime = 0; } else { $(this.elementRef.nativeElement).scrollTop(1); } let /** @type {?} */ ele = $(this.elementRef.nativeElement); if (ele.children.length !== 0) { let /** @type {?} */ loadMore = ele.find(".loadMore"); if (loadMore.length > 0) { this.hideLoadMore(); } } if (!this.scrollLoadAuto) { this.showLoadMore(); } resolve(); } catch (/** @type {?} */ err) { reject(err); } }); } /** * @return {?} */ reload() { $(this.elementRef.nativeElement).find(".icon-reloader").hide(); $(this.elementRef.nativeElement).find(".icon-reloading").show(); return this.doScrollTopReLoad().then((result) => { let /** @type {?} */ rowCount = 0; if (result === null || result === undefined) { rowCount = 0; } else if (typeof result === 'number') { rowCount = result; } else if (Array.isArray(result)) { rowCount = result.length; } else { rowCount = 1; } this.onReload = true; setTimeout(() => { $(this.elementRef.nativeElement).find(".icon-reloading").hide(); this.hideReloadIcon().then(() => { $(this.elementRef.nativeElement).find(".icon-reloader").show(); }); }, SETTIMEOUT_SHOW_ICON_RELOADING_AND_HIDE_RELOAD_ICON); this.cursor += rowCount; return result; }); } /** * @return {?} */ loadNext() { if (this.scrollLoadAuto) { if (this.completeInformation) { this.hideLoadMore(); } } else { this.hideLoadMore(); } return this.doScrollLoad().then((result) => { let /** @type {?} */ rowCount = 0; if (result === null || result === undefined) { rowCount = 0; } else if (typeof result === 'number') { rowCount = result; } else if (Array.isArray(result)) { rowCount = result.length; } else { rowCount = 1; } if (rowCount < this.scrollLoadCount) { if (this.scrollLoadAuto) { $(this.elementRef.nativeElement)[0].setAttribute('style', "padding-bottom: 0px;"); } this.hideLoadIcon(); this.completeInformation = true; setTimeout(() => { this.hideLoadMore(); this.showLoadMore(); }, SETTIMEOUT_FADEOUT_SHOW_LOAD_MORE); this.onLoadAuto = false; } else { this.hideLoadIcon(); this.completeInformation = false; this.onLoadAuto = true; if (this.scrollLoadAuto) { $(this.elementRef.nativeElement)[0].setAttribute('style', "padding-bottom: " + this.scrollLoadOffset + "px;"); } } this.onLoading = true; if (!this.scrollLoadAuto && this.onLoading && !this.completeInformation) { setTimeout(() => { this.showLoadMore(); }, SETTIMEOUT_FADEOUT_SHOW_LOAD_MORE); } this.cursor += rowCount; return result; }); } /** * @param {?=} reload * @return {?} */ checkNoneScrollLoad(reload) { setTimeout(() => { if (this.scrollLoadAuto && !this.completeInformation) { this.completeInformation = true; this.showLoadMore(); let /** @type {?} */ ele = this.elementRef.nativeElement; let /** @type {?} */ scrollHeight = ele.scrollHeight; let /** @type {?} */ clientHeight = ele.clientHeight; let /** @type {?} */ loadMore = $(this.elementRef.nativeElement).find(".loadMore"); if (reload && this.cursor < this.scrollLoadInitCount) { for (let /** @type {?} */ index = 0; index < loadMore.length; index++) { loadMore[index].innerHTML = this.scrollLoadCompleteLabel; } } else { for (let /** @type {?} */ index = 0; index < loadMore.length; index++) { loadMore[index].innerHTML = this.scrollLoadLabel; } } if ((scrollHeight - clientHeight) > (this.scrollLoadOffset / 2)) { this.hideLoadMore(); } } }, SETTIMEOUT_CHECK_NONE_SCROLL_LOAD); } } ScrollLoad.NAME = NAME; ScrollLoad.decorators = [ { type: Directive, args: [{ selector: '[phxScrollLoad]' },] }, ]; /** @nocollapse */ ScrollLoad.ctorParameters = () => [ { type: ViewContainerRef, }, { type: ComponentFactoryResolver, }, { type: ElementRef, }, ]; ScrollLoad.propDecorators = { "options": [{ type: Input, args: ['phxScrollLoad',] },], "scrollLoadFunc": [{ type: Input, args: ['scrollLoadHandler',] },], "scrollLoadOffset": [{ type: Input, args: ['scrollLoadOffset',] },], "scrollLoadCount": [{ type: Input, args: ['scrollLoadCount',] },], "scrollLoadInitCount": [{ type: Input, args: ['scrollLoadInitCount',] },], "scrollLoadIcon": [{ type: Input, args: ['scrollLoadIcon',] },], "scrollLoadReloadIcon": [{ type: Input, args: ['scrollLoadReloadIcon',] },], "scrollLoadLabel": [{ type: Input, args: ['scrollLoadLabel',] },], "scrollLoadReloadLabel": [{ type: Input, args: ['scrollLoadReloadLabel',] },], "scrollLoadCompleteLabel": [{ type: Input, args: ['scrollLoadCompleteLabel',] },], "scrollLoadAuto": [{ type: Input, args: ['scrollLoadAuto',] },], "scrollLoadReloadAuto": [{ type: Input, args: ['scrollLoadReloadAuto',] },], "scrollLoadReloadDisabled": [{ type: Input, args: ['scrollLoadReloadDisabled',] },], "scrollLoadDelay": [{ type: Input, args: ['scrollLoadDelay',] },], }; tslib_1.__decorate([ Option('load'), tslib_1.__metadata("design:type", Function) ], ScrollLoad.prototype, "scrollLoadFunc", void 0); tslib_1.__decorate([ Option('offset'), tslib_1.__metadata("design:type", Number) ], ScrollLoad.prototype, "scrollLoadOffset", void 0); tslib_1.__decorate([ Option('count'), tslib_1.__metadata("design:type", Number) ], ScrollLoad.prototype, "scrollLoadCount", void 0); tslib_1.__decorate([ Option('initCount'), tslib_1.__metadata("design:type", Number) ], ScrollLoad.prototype, "scrollLoadInitCount", void 0); tslib_1.__decorate([ Option('loadIcon'), tslib_1.__metadata("design:type", String) ], ScrollLoad.prototype, "scrollLoadIcon", void 0); tslib_1.__decorate([ Option('loadReloadIcon'), tslib_1.__metadata("design:type", String) ], ScrollLoad.prototype, "scrollLoadReloadIcon", void 0); tslib_1.__decorate([ I18N('load'), Option('loadLabel'), tslib_1.__metadata("design:type", String) ], ScrollLoad.prototype, "scrollLoadLabel", void 0); tslib_1.__decorate([ I18N('reload'), Option('reloadLabel'), tslib_1.__metadata("design:type", String) ], ScrollLoad.prototype, "scrollLoadReloadLabel", void 0); tslib_1.__decorate([ I18N('complete'), Option('completeLabel'), tslib_1.__metadata("design:type", String) ], ScrollLoad.prototype, "scrollLoadCompleteLabel", void 0); tslib_1.__decorate([ Option('loadAuto'), tslib_1.__metadata("design:type", Boolean) ], ScrollLoad.prototype, "scrollLoadAuto", void 0); tslib_1.__decorate([ Option('reloadAuto'), tslib_1.__metadata("design:type", Boolean) ], ScrollLoad.prototype, "scrollLoadReloadAuto", void 0); tslib_1.__decorate([ Option('reloadDisabled'), tslib_1.__metadata("design:type", Boolean) ], ScrollLoad.prototype, "scrollLoadReloadDisabled", void 0); tslib_1.__decorate([ Option('delay'), tslib_1.__metadata("design:type", Number) ], ScrollLoad.prototype, "scrollLoadDelay", void 0); function ScrollLoad_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ ScrollLoad.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ ScrollLoad.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ ScrollLoad.propDecorators; /** @type {?} */ ScrollLoad.NAME; /** @type {?} */ ScrollLoad.prototype.options; /** @type {?} */ ScrollLoad.prototype.scrollLoadFunc; /** @type {?} */ ScrollLoad.prototype.scrollLoadOffset; /** @type {?} */ ScrollLoad.prototype.scrollLoadCount; /** @type {?} */ ScrollLoad.prototype.scrollLoadInitCount; /** @type {?} */ ScrollLoad.prototype.scrollLoadIcon; /** @type {?} */ ScrollLoad.prototype.scrollLoadReloadIcon; /** @type {?} */ ScrollLoad.prototype.scrollLoadLabel; /** @type {?} */ ScrollLoad.prototype.scrollLoadReloadLabel; /** @type {?} */ ScrollLoad.prototype.scrollLoadCompleteLabel; /** @type {?} */ ScrollLoad.prototype.scrollLoadAuto; /** @type {?} */ ScrollLoad.prototype.scrollLoadReloadAuto; /** @type {?} */ ScrollLoad.prototype.scrollLoadReloadDisabled; /** @type {?} */ ScrollLoad.prototype.scrollLoadDelay; /** @type {?} */ ScrollLoad.prototype.elementRef; /** @type {?} */ ScrollLoad.prototype.onReload; /** @type {?} */ ScrollLoad.prototype.onLoading; /** @type {?} */ ScrollLoad.prototype.onLoadAuto; /** @type {?} */ ScrollLoad.prototype.completeInformation; /** @type {?} */ ScrollLoad.prototype.cursor; /** @type {?} */ ScrollLoad.prototype.counter; /** @type {?} */ ScrollLoad.prototype.hideReloadIconTimeout; /** @type {?} */ ScrollLoad.prototype.lastScrollTime; /** @type {?} */ ScrollLoad.prototype.onShowReloader; /** @type {?} */ ScrollLoad.prototype.componentFactoryResolver; /** @type {?} */ ScrollLoad.prototype.containerRef; /** @type {?} */ ScrollLoad.prototype.iconLoader; /** @type {?} */ ScrollLoad.prototype.reloadIconLoader; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nyb2xsTG9hZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9kaXJlY3RpdmUvU2Nyb2xsTG9hZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQXFCLGdCQUFnQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLGdDQUFnQyxFQUFFLGtDQUFrQyxFQUFFLHdCQUF3QixFQUFFLCtCQUErQixFQUFFLG1DQUFtQyxFQUFFLG9EQUFvRCxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOVcsdUJBQU0sSUFBSSxHQUFXLGFBQWEsQ0FBQztBQUNuQyx1QkFBTSx5QkFBeUIsR0FBVyxFQUFFLENBQUM7QUFDN0MsdUJBQU0saUNBQWlDLEdBQVcsRUFBRSxDQUFDO0FBQ3JELHVCQUFNLGtEQUFrRCxHQUFXLEdBQUcsQ0FBQztBQUN2RSx1QkFBTSx3REFBd0QsR0FBVyxHQUFHLENBQUM7QUFDN0UsdUJBQU0sMkJBQTJCLEdBQVcsd0RBQXdELENBQUM7QUFDckcsdUJBQU0saUNBQWlDLEdBQVcsd0RBQXdELENBQUM7QUFDM0csdUJBQU0sMkNBQTJDLEdBQVcsSUFBSSxDQUFDO0FBQ2pFLHVCQUFNLG1EQUFtRCxHQUFXLElBQUksQ0FBQztBQUN6RSx1QkFBTSxzQ0FBc0MsR0FBVyxJQUFJLENBQUM7QUFLNUQsTUFBTSxpQkFBa0IsU0FBUSxzQkFBc0I7Ozs7OztJQWlFbEQsWUFBWSxZQUE4QixFQUFFLHdCQUFrRCxFQUFFLFVBQXNCO1FBQ2xILEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3pELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQ2hDOzs7O0lBRU0sUUFBUTtRQUNYLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN4QixFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDakM7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDdEM7U0FDSjtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3JILElBQUksQ0FBQyxnQkFBZ0IsR0FBRywyQkFBMkIsQ0FBQztTQUN2RDtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLGVBQWUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ2xILElBQUksQ0FBQyxlQUFlLEdBQUcseUJBQXlCLENBQUM7U0FDcEQ7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUM5SCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUNuRDtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQy9HLElBQUksQ0FBQyxjQUFjLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDO1NBQzVEO1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDakksSUFBSSxDQUFDLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDLDBCQUEwQixDQUFBO1NBQzVFO1FBRUQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsZUFBZSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEgsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQztTQUNwRDtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3BJLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxnQ0FBZ0MsQ0FBQztTQUNqRTtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLHVCQUF1QixLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzFJLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxrQ0FBa0MsQ0FBQztTQUNyRTtRQUVELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2hILElBQUksQ0FBQyxjQUFjLEdBQUcsd0JBQXdCLENBQUM7U0FDbEQ7UUFHRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsb0JBQW9CLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNsSSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsK0JBQStCLENBQUM7U0FDL0Q7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUM5SSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsbUNBQW1DLENBQUM7U0FDdkU7UUFFRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsSCxJQUFJLENBQUMsZUFBZSxHQUFHLHlCQUF5QixDQUFDO1NBQ3BEO1FBRUQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFFOUYsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzlCLENBQUMsQ0FBQzs7Ozs7SUFHQSxXQUFXO1FBQ2QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO2dCQUMvRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7aUJBQ2pDO2FBQ0o7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztnQkFDckUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3ZFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2lCQUNqRzthQUNKO1lBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNqQjs7Ozs7SUFHRyxrQkFBa0I7UUFDdEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7Ozs7O0lBRzFELGdCQUFnQjtRQUNwQixxQkFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEYscUJBQUksWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELHFCQUFJLFdBQVcsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBRXhDLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDOzs7OztJQUdwQixzQkFBc0I7UUFDMUIscUJBQUksT0FBTyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hGLHFCQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RCxxQkFBSSxXQUFXLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUV4QyxDQUFDLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO1FBQzlHLENBQUMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs7Ozs7SUFHMUIsc0JBQXNCO1FBQzFCLHFCQUFJLFlBQVksR0FBZ0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5RCxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQ1YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNYLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3pCLEVBQUUsc0NBQXNDLENBQUMsQ0FBQztTQUM5QyxDQUFDO2FBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7b0JBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ1osSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7cUJBQy9CLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztpQkFDbkM7YUFDSjtTQUNKLENBQUMsQ0FBQztRQUNQLHFCQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RSxxQkFBSSxpQkFBaUIsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN0RixVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNsQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQ3pDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDLENBQUM7YUFDcEc7U0FDSixFQUFFLEdBQUcsRUFBRTtZQUNKLGlCQUFpQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDekMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQzthQUN6QixFQUFFLDJDQUEyQyxDQUFDLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBRUgsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDOzs7OztJQUdDLGdCQUFnQjtRQUNwQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBRXpDLHFCQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxxQkFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztZQUNwQyxxQkFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztZQUNwQyxxQkFBSSxTQUFTLEdBQUcsWUFBWSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFFN0MsRUFBRSxDQUFDLENBQUMsWUFBWSxLQUFLLFlBQVksSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUM1RixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUN2QixVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNaLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFOzRCQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzt5QkFDOUIsQ0FBQyxDQUFDO3FCQUNOLEVBQUUsa0RBQWtELENBQUMsQ0FBQztpQkFDMUQ7YUFDSjtZQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBRTlELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzlFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztvQkFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUM5QyxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNaLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFOzRCQUNwQixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2xDLENBQUMsQ0FBQzt3QkFDSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ3RCLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLHFCQUFxQixDQUFDLENBQUM7cUJBQ3BELEVBQUUsa0RBQWtELENBQUMsQ0FBQztpQkFDMUQ7YUFDSjtZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQzlGO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNKLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2lCQUNqRzthQUNKO1NBQ0osQ0FBQyxDQUFDOzs7OztJQUdDLGNBQWM7UUFDbEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDbkcscUJBQUksTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXZCLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNsQyxDQUFDLENBQUM7YUFDTjtTQUNKLENBQUMsQ0FBQzs7Ozs7SUFHQyxjQUFjO1FBQ2xCLE1BQU0sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUM7Z0JBQ0QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUMsT0FBTyxDQUFDLHdEQUF3RCxFQUFFO29CQUM1SCxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUM7b0JBRWhELE9BQU8sRUFBRSxDQUFDO2lCQUNiLENBQUMsQ0FBQzthQUNOO1lBQUMsS0FBSyxDQUFDLENBQUMsaUJBQUEsR0FBRyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2Y7U0FDSixDQUFDLENBQUM7Ozs7O0lBR0MsWUFBWTtRQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzs7Ozs7SUFHL0QsWUFBWTtRQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsd0RBQXdELENBQUMsQ0FBQzs7Ozs7SUFHMUgsWUFBWTtRQUNoQixxQkFBSSxRQUFRLEdBQWdCLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDM0IsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7U0FDckQ7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztTQUM3QztRQUNELENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUNwQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNaLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO3dCQUN0QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztxQkFDOUIsQ0FBQyxDQUFDO2lCQUNOLEVBQUUsa0RBQWtELENBQUMsQ0FBQzthQUMxRDtTQUNKLENBQUMsQ0FBQzs7Ozs7SUFHQyxZQUFZO1FBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMseUJBQXlCLEVBQUU7WUFDbEYsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BCLENBQUMsQ0FBQzs7Ozs7SUFHQyxlQUFlO1FBQ25CLHFCQUFJLE9BQU8sR0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFakMsRUFBRSxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLElBQUksU0FBUyxXQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDOztZQUVsRSxNQUFNLENBQUM7U0FDVjtRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDOzs7OztJQUcxQixpQkFBaUI7UUFDckIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7UUFFRCxxQkFBSSxVQUFVLEdBQWlCLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pCLHFCQUFJLE1BQU0sR0FBUSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFFN0UsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLFlBQVksT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsVUFBVSxHQUFHLE1BQU0sQ0FBQzthQUN2QjtZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNKLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3hDO1NBQ0o7UUFBQyxLQUFLLENBQUMsQ0FBQyxpQkFBQSxDQUFDLEVBQUUsQ0FBQztZQUNULE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQzs7Ozs7SUFJZCxZQUFZO1FBQ2hCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLGNBQWMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQzVFLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBRUQscUJBQUksVUFBVSxHQUFpQixJQUFJLENBQUM7UUFFcEMsSUFBSSxDQUFDO1lBQ0QscUJBQUksTUFBVyxDQUFDO1lBQ2hCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3JGO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ0osTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUNqRjtZQUVELEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQy9DLFVBQVUsR0FBRyxNQUFNLENBQUM7YUFDdkI7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN4QztTQUNKO1FBQUMsS0FBSyxDQUFDLENBQUMsaUJBQUEsQ0FBQyxFQUFFLENBQUM7WUFDVCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUVELE1BQU0sQ0FBQyxVQUFVLENBQUM7Ozs7OztJQUdmLEtBQUssQ0FBQyxNQUFnQjtRQUN6QixNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDO2dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdkIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztnQkFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztpQkFDM0I7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ0osQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNqRDtnQkFDRCxxQkFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzNDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzVCLHFCQUFJLFFBQVEsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNyQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztxQkFDdkI7aUJBQ0o7Z0JBQ0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2lCQUN2QjtnQkFDRCxPQUFPLEVBQUUsQ0FBQzthQUNiO1lBQUMsS0FBSyxDQUFDLENBQUMsaUJBQUEsR0FBRyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2Y7U0FDSixDQUFDLENBQUM7Ozs7O0lBR0EsTUFBTTtRQUVULENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWhFLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtZQUNqRCxxQkFBSSxRQUFRLEdBQVcsQ0FBQyxDQUFDO1lBRXpCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFDLFFBQVEsR0FBRyxDQUFDLENBQUM7YUFDaEI7WUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsUUFBUSxHQUFHLE1BQU0sQ0FBQzthQUNyQjtZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7YUFDNUI7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDSixRQUFRLEdBQUcsQ0FBQyxDQUFDO2FBQ2hCO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFFckIsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDWixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUNsRSxDQUFDLENBQUM7YUFDTixFQUFFLG1EQUFtRCxDQUFDLENBQUM7WUFFeEQsSUFBSSxDQUFDLE1BQU0sSUFBSSxRQUFRLENBQUM7WUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQztTQUNqQixDQUFDLENBQUM7Ozs7O0lBR0EsUUFBUTtRQUNYLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN2QjtTQUNKO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkI7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQzVDLHFCQUFJLFFBQVEsR0FBVyxDQUFDLENBQUM7WUFFekIsRUFBRSxDQUFDLENBQUMsTUFBTSxLQUFLLElBQUksSU