UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

756 lines (755 loc) 70.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ContentChildren, HostBinding, Input, Output, HostListener, QueryList, EventEmitter, ElementRef, ViewEncapsulation } from '@angular/core'; import { CarouselSlideComponent } from './carousel-slide/carousel-slide.component'; import * as touchEvent from '../core/util/touch-event'; var CarouselComponent = /** @class */ (function () { function CarouselComponent(_ele) { this._ele = _ele; this.style = { height: 'auto', width: '100%', transform: 'translate3d(0px, 0px, 0px)', margin: '' }; this._nodeArr = []; this._lastIndex = 0; this._isMouseDown = false; this._rationWidth = 0; this._currentSlideWidth = 0; this._currentSlideHeight = 0; this._transition = ''; this._spaceWidth = 0; this.speed = 500; this.selectedIndex = 0; this.dots = true; this.vertical = false; this.autoplay = false; this.autoplayInterval = 3000; this.infinite = false; this.dotStyle = {}; this.dotActiveStyle = {}; this.frameOverflow = 'hidden'; this.cellSpacing = 0; this.slideWidth = 1; this.swipeSpeed = 12; this.dragging = true; this.afterChange = new EventEmitter(); this.beforeChange = new EventEmitter(); this.carouselWrapper = true; this.carouselwrap = true; } /** * @param {?} event * @return {?} */ CarouselComponent.prototype.panstart = /** * @param {?} event * @return {?} */ function (event) { event.stopPropagation(); if (!this.dragging) { return; } this.stopTimer(); this._isMouseDown = true; this.touchObject = { startX: touchEvent.getEventTarget(event).pageX, startY: touchEvent.getEventTarget(event).pageY, direction: this.touchObject.direction }; }; /** * @param {?} event * @return {?} */ CarouselComponent.prototype.panmove = /** * @param {?} event * @return {?} */ function (event) { event.stopPropagation(); if (!this.dragging && !this._isMouseDown) { return; } var direction = this.swipeDirection(this.touchObject.startX, touchEvent.getEventTarget(event).pageX, this.touchObject.startY, touchEvent.getEventTarget(event).pageY).direction; if (direction !== 0) { event.preventDefault(); } /** @type {?} */ var length = this.vertical ? Math.abs(touchEvent.getEventTarget(event).pageY - this.touchObject.startY) : Math.abs(touchEvent.getEventTarget(event).pageX - this.touchObject.startX); /** @type {?} */ var offset = -this.touchObject.direction * length - this.selectedIndex * this._rationWidth; this.touchObject = { startX: this.touchObject.startX, startY: this.touchObject.startY, endX: touchEvent.getEventTarget(event).pageX, endY: touchEvent.getEventTarget(event).pageY, length: length, direction: direction, offset: offset }; if (direction !== 0) { this.setSlideStyles(this.selectedIndex, this.touchObject.direction); } this.getListStyles(offset); }; /** * @param {?} event * @return {?} */ CarouselComponent.prototype.panend = /** * @param {?} event * @return {?} */ function (event) { var _this = this; event.stopPropagation(); if (!this.dragging && !this._isMouseDown) { return; } this._isMouseDown = false; if (this.touchObject.length > this.swipeSpeed) { this.carousel(this.touchObject.direction); } else { this.getListStyles(this.touchObject.direction * this.touchObject.length + this.touchObject.offset); this.style['transition'] = this._transition; } setTimeout(function () { _this.startTimer(); }, this.speed); }; /** * @return {?} */ CarouselComponent.prototype.cancel = /** * @return {?} */ function () { var _this = this; setTimeout(function () { _this.startTimer(); }, this.speed); }; /** * @return {?} */ CarouselComponent.prototype.initCarouselSize = /** * @return {?} */ function () { /** @type {?} */ var nativeElement = this._ele.nativeElement; this.slideHeight = nativeElement.querySelector('carouselslide').clientHeight; this._currentSlideHeight = this.slideHeight * this.slideWidth; this._currentSlideWidth = nativeElement.clientWidth; this._rationWidth = this.vertical ? this._currentSlideWidth : this._currentSlideWidth * this.slideWidth; this._spaceWidth = ((this.vertical ? this.slideHeight : this._currentSlideWidth) - this._rationWidth) / 2; }; /** * @param {?} items * @return {?} */ CarouselComponent.prototype.carouselInit = /** * @param {?} items * @return {?} */ function (items) { var _this = this; this.infinite = this.infinite || true; this._nodeArr = items['_results']; this.dragging = this.dragging ? this.dragging : false; if (this._nodeArr.length > 1) { this._lastIndex = this._nodeArr.length - 1; setTimeout(function () { _this._nodeArr.forEach(function (v, index) { v.width = _this.vertical ? 'auto' : _this._rationWidth - _this.cellSpacing; v.left = _this.vertical ? 0 : index === _this._lastIndex ? -_this._rationWidth : index * _this._rationWidth; v.top = _this.vertical ? (index === _this._lastIndex ? -_this._rationWidth : index * _this._rationWidth) : 0; v.margin = _this.vertical ? _this.cellSpacing / 2 + "px auto" : "auto " + _this.cellSpacing / 2 + "px"; }); _this.startTimer(); }, 0); } else if (this._nodeArr.length === 1) { setTimeout(function () { _this._nodeArr.forEach(function (v) { v.width = _this._rationWidth - _this.cellSpacing; v.left = 0; v.top = 0; v.margin = "auto " + _this.cellSpacing / 2 + "px"; }); }, 0); } }; /** * @return {?} */ CarouselComponent.prototype.startTimer = /** * @return {?} */ function () { var _this = this; if (!this.autoplay) { return; } this.stopTimer(); this._timer = this.autoplayInterval ? setInterval(function () { _this.carousel(1); }, this.autoplayInterval) : 0; }; /** * @return {?} */ CarouselComponent.prototype.stopTimer = /** * @return {?} */ function () { clearInterval(this._timer); }; /** * @param {?} moveDirection * @return {?} */ CarouselComponent.prototype.carousel = /** * @param {?} moveDirection * @return {?} */ function (moveDirection) { if (this.vertical) { if (moveDirection === 1) { this.moveUp(); } else if (moveDirection === -1) { this.moveDown(); } } else { if (moveDirection === 1) { this.moveLeft(); } else if (moveDirection === -1) { this.moveRight(); } } this.style['transition'] = this._transition; }; /** * @return {?} */ CarouselComponent.prototype.moveUp = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(false)); }; /** * @return {?} */ CarouselComponent.prototype.moveDown = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(true)); }; /** * @return {?} */ CarouselComponent.prototype.moveLeft = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(false)); }; /** * @return {?} */ CarouselComponent.prototype.moveRight = /** * @return {?} */ function () { this.gotoCarousel(this.getAfterNode(true)); }; /** * @param {?} pre * @return {?} */ CarouselComponent.prototype.getAfterNode = /** * @param {?} pre * @return {?} */ function (pre) { var _this = this; /** @type {?} */ var nextIndex; if (pre) { if (this.selectedIndex <= 0) { this.getListStyles(this._rationWidth); setTimeout(function () { _this._nodeArr.forEach(function (v, tempIndex) { if (tempIndex === 0) { v.left = _this.vertical ? 0 : _this._nodeArr.length * _this._rationWidth; v.top = _this.vertical ? _this._nodeArr.length * _this._rationWidth : 0; } else { v.left = _this.vertical ? 0 : tempIndex * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } }); _this.getListStyles(-_this._rationWidth * (_this.items.length - 1)); }, this.speed); nextIndex = !this.infinite ? null : this._lastIndex; this.beforeChange.emit({ from: this.selectedIndex, to: nextIndex }); return nextIndex; } nextIndex = this.selectedIndex - 1; this.getListStyles(nextIndex * this._rationWidth * this.touchObject.direction); this._nodeArr.forEach(function (v, tempIndex) { if (0 === tempIndex && nextIndex === _this._nodeArr.length - 2) { v.left = 0; v.top = 0; } }); this.beforeChange.emit({ from: this.selectedIndex, to: nextIndex }); return nextIndex; } else { if (this.selectedIndex >= this._lastIndex) { this.setSlideStyles(this.selectedIndex, 1); this.getListStyles(-(this._lastIndex + 1) * this._rationWidth); nextIndex = !this.infinite ? null : 0; this.beforeChange.emit({ from: this.selectedIndex, to: nextIndex }); return nextIndex; } nextIndex = this.selectedIndex + 1; this.setSlideStyles(this.selectedIndex, 1); this.getListStyles(-nextIndex * this._rationWidth); this.beforeChange.emit({ from: this.selectedIndex, to: nextIndex }); return nextIndex; } }; /** * @return {?} */ CarouselComponent.prototype.caculateDirectionLeftCurrentIndex = /** * @return {?} */ function () { /** @type {?} */ var previousIndex = this.selectedIndex; this.selectedIndex = (previousIndex + 1) % this.items.length; }; /** * @return {?} */ CarouselComponent.prototype.caculateDirectionRightCurrentIndex = /** * @return {?} */ function () { if (this.selectedIndex === 0) { this.selectedIndex = this.items.length; } /** @type {?} */ var previousIndex = this.selectedIndex; this.selectedIndex = (previousIndex - 1) % this.items.length; }; /** * @param {?} afterIndex * @return {?} */ CarouselComponent.prototype.gotoCarousel = /** * @param {?} afterIndex * @return {?} */ function (afterIndex) { var _this = this; if (afterIndex === null) { return; } this.getCurrentIndex(); if (afterIndex === 0) { setTimeout(function () { _this._nodeArr.forEach(function (v, index) { if (index === _this._nodeArr.length - 1) { v.left = _this.vertical ? 0 : -_this._rationWidth; v.top = _this.vertical ? -_this._rationWidth : 0; } else { v.left = _this.vertical ? 0 : index * _this._rationWidth; v.top = _this.vertical ? index * _this._rationWidth : 0; } }); _this.startTimer(); _this.getListStyles(0); }, this.speed); } this.selectedIndex = afterIndex; this.afterChange.emit(this.selectedIndex); }; /** * @return {?} */ CarouselComponent.prototype.getCurrentIndex = /** * @return {?} */ function () { if (this.touchObject.direction === 1) { this.caculateDirectionLeftCurrentIndex(); } else { this.caculateDirectionRightCurrentIndex(); } }; /** * @param {?} index * @param {?} direction * @param {?=} xDist * @return {?} */ CarouselComponent.prototype.setSlideStyles = /** * @param {?} index * @param {?} direction * @param {?=} xDist * @return {?} */ function (index, direction, xDist) { var _this = this; if (xDist === void 0) { xDist = 0; } if (direction === 1) { this._nodeArr.forEach(function (v, tempIndex) { if (index < _this._nodeArr.length && index - 1 === tempIndex) { if (xDist === 0 || xDist > _this._spaceWidth) { v.left = _this.vertical ? 0 : (_this._nodeArr.length + tempIndex) * _this._rationWidth; v.top = _this.vertical ? (_this._nodeArr.length + tempIndex) * _this._rationWidth : 0; } } else if (_this._nodeArr.length - 1 === tempIndex && index !== 2) { if (xDist === 0 || xDist > _this._spaceWidth) { v.left = _this.vertical ? 0 : (_this._nodeArr.length - 1) * _this._rationWidth; v.top = _this.vertical ? (_this._nodeArr.length - 1) * _this._rationWidth : 0; } } else if (index === _this._nodeArr.length - 1 && tempIndex === 1 && _this.autoplay) { v.left = _this.vertical ? 0 : (_this._nodeArr.length + tempIndex) * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } else if (index === _this._nodeArr.length - 1 && tempIndex === 0 && !_this.autoplay) { v.left = _this.vertical ? 0 : (_this._nodeArr.length + tempIndex) * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } }); } else if (direction === -1) { this._nodeArr.forEach(function (v, tempIndex) { if (index === 0 && _this._nodeArr.length - 1 === tempIndex) { v.left = _this.vertical ? 0 : direction * _this._rationWidth; v.top = _this.vertical ? direction * _this._rationWidth : 0; } else if (index === _this._nodeArr.length - 2 && index + 1 === tempIndex) { v.left = _this.vertical ? 0 : direction * _this._rationWidth; v.top = _this.vertical ? direction * _this._rationWidth : 0; } else if (index === 1 && 0 === tempIndex) { v.left = _this.vertical ? 0 : direction * _this._rationWidth * tempIndex; v.top = _this.vertical ? direction * _this._rationWidth : 0; } else if (index > 1) { v.left = _this.vertical ? 0 : tempIndex * _this._rationWidth; v.top = _this.vertical ? tempIndex * _this._rationWidth : 0; } }); } }; /** * @param {?=} offset * @return {?} */ CarouselComponent.prototype.getListStyles = /** * @param {?=} offset * @return {?} */ function (offset) { if (offset === void 0) { offset = 0; } /** @type {?} */ var positionOffset = offset + (this.vertical ? (this.slideHeight - this._currentSlideHeight) / 2 : (this._currentSlideWidth - this._rationWidth) / 2) - this.cellSpacing; this.style = { height: this._currentSlideHeight + 'px', width: this.items.length * this._rationWidth + 'px', transform: this.vertical ? "translate3d(0px, " + positionOffset + "px, 0px)" : "translate3d(" + positionOffset + "px, 0px, 0px)", margin: this.vertical ? (this.cellSpacing / 2) * -1 + "px 0px" : "0px " + (this.cellSpacing / 2) * -1 + "px" }; }; /** * @param {?} x1 * @param {?} x2 * @param {?} y1 * @param {?} y2 * @return {?} */ CarouselComponent.prototype.swipeDirection = /** * @param {?} x1 * @param {?} x2 * @param {?} y1 * @param {?} y2 * @return {?} */ function (x1, x2, y1, y2) { /** @type {?} */ var xDist = x1 - x2; /** @type {?} */ var yDist = y1 - y2; /** @type {?} */ var r = Math.atan2(yDist, xDist); /** @type {?} */ var swipeAngle = Math.round((r * 180) / Math.PI); if (swipeAngle < 0) { swipeAngle = 360 - Math.abs(swipeAngle); } if (swipeAngle <= 45 && swipeAngle >= 0) { return { direction: 1, xDist: xDist }; } if (swipeAngle <= 360 && swipeAngle >= 315) { return { direction: 1, xDist: xDist }; } if (swipeAngle >= 135 && swipeAngle <= 225) { return { direction: -1, xDist: xDist }; } if (this.vertical === true) { if (swipeAngle >= 35 + 33 && swipeAngle <= 135) { return { direction: 1, xDist: xDist }; } else { return { direction: -1, xDist: xDist }; } } return { direction: 0, xDist: xDist }; }; Object.defineProperty(CarouselComponent.prototype, "page", { get: /** * @return {?} */ function () { return this.dots ? this.selectedIndex : 0; }, enumerable: true, configurable: true }); Object.defineProperty(CarouselComponent.prototype, "pageCount", { get: /** * @return {?} */ function () { return this.dots ? this.items.length : 0; }, enumerable: true, configurable: true }); Object.defineProperty(CarouselComponent.prototype, "dotindicatorStatus", { get: /** * @return {?} */ function () { return this.dots ? (this.items.length > 1) : this.dots; }, enumerable: true, configurable: true }); /** * @return {?} */ CarouselComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; this.touchObject = { direction: 1 }; this._transition = "transform " + this.speed / 1000 + "s"; this.items.changes.subscribe(function (items) { _this.carouselInit(items); }); this.initCarouselSize(); this.getListStyles(); this.carouselInit(this.items); /** @type {?} */ var nativeElement = this._ele.nativeElement; /** @type {?} */ var targetNode = nativeElement.querySelector('carouselslide'); /** @type {?} */ var config = { attributes: true, childList: true, subtree: true }; /** @type {?} */ var callback = function (mutationsList) { var e_1, _a; try { for (var mutationsList_1 = tslib_1.__values(mutationsList), mutationsList_1_1 = mutationsList_1.next(); !mutationsList_1_1.done; mutationsList_1_1 = mutationsList_1.next()) { var mutation = mutationsList_1_1.value; if (mutation.type == 'attributes') { if (_this.slideHeight !== nativeElement.querySelector('carouselslide').clientHeight) { _this.initCarouselSize(); _this.getListStyles(); } } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (mutationsList_1_1 && !mutationsList_1_1.done && (_a = mutationsList_1.return)) _a.call(mutationsList_1); } finally { if (e_1) throw e_1.error; } } }; this.observer = new MutationObserver(callback); this.observer.observe(targetNode, config); }; /** * @return {?} */ CarouselComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.observer.disconnect(); this.observer = null; this.stopTimer(); }; CarouselComponent.decorators = [ { type: Component, args: [{ selector: 'Carousel, nzm-carousel', encapsulation: ViewEncapsulation.None, template: "<div class=\"slider-frame\" [ngStyle]=\"{overflow: frameOverflow}\">\n <ul class=\"slider-list\" [ngStyle]=\"style\">\n <ng-content></ng-content>\n </ul>\n</div>\n<DotIndicator *ngIf=\"dotindicatorStatus\"\n class=\"am-carousel-wrap-dot\"\n [page]=\"page\"\n [dotStyle]=\"dotStyle\"\n [pageCount]=\"pageCount\"\n [dotActiveStyle]=\"dotActiveStyle\"\n></DotIndicator>\n" }] } ]; /** @nocollapse */ CarouselComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; CarouselComponent.propDecorators = { items: [{ type: ContentChildren, args: [CarouselSlideComponent,] }], speed: [{ type: Input }], selectedIndex: [{ type: Input }], dots: [{ type: Input }], vertical: [{ type: Input }], autoplay: [{ type: Input }], autoplayInterval: [{ type: Input }], infinite: [{ type: Input }], dotStyle: [{ type: Input }], dotActiveStyle: [{ type: Input }], frameOverflow: [{ type: Input }], cellSpacing: [{ type: Input }], slideWidth: [{ type: Input }], swipeSpeed: [{ type: Input }], dragging: [{ type: Input }], afterChange: [{ type: Output }], beforeChange: [{ type: Output }], carouselWrapper: [{ type: HostBinding, args: ['class.am-carousel',] }], carouselwrap: [{ type: HostBinding, args: ['class.carousel',] }], panstart: [{ type: HostListener, args: ['mousedown', ['$event'],] }, { type: HostListener, args: ['touchstart', ['$event'],] }], panmove: [{ type: HostListener, args: ['mousemove', ['$event'],] }, { type: HostListener, args: ['touchmove', ['$event'],] }], panend: [{ type: HostListener, args: ['mouseleave', ['$event'],] }, { type: HostListener, args: ['mouseup', ['$event'],] }, { type: HostListener, args: ['touchend', ['$event'],] }], cancel: [{ type: HostListener, args: ['touchcancel', ['$event'],] }] }; return CarouselComponent; }()); export { CarouselComponent }; if (false) { /** @type {?} */ CarouselComponent.prototype.slideHeight; /** @type {?} */ CarouselComponent.prototype.touchObject; /** @type {?} */ CarouselComponent.prototype.style; /** @type {?} */ CarouselComponent.prototype._timer; /** @type {?} */ CarouselComponent.prototype._nodeArr; /** @type {?} */ CarouselComponent.prototype._lastIndex; /** @type {?} */ CarouselComponent.prototype._isMouseDown; /** @type {?} */ CarouselComponent.prototype._rationWidth; /** @type {?} */ CarouselComponent.prototype._currentSlideWidth; /** @type {?} */ CarouselComponent.prototype._currentSlideHeight; /** @type {?} */ CarouselComponent.prototype._transition; /** @type {?} */ CarouselComponent.prototype._spaceWidth; /** @type {?} */ CarouselComponent.prototype.observer; /** @type {?} */ CarouselComponent.prototype.items; /** @type {?} */ CarouselComponent.prototype.speed; /** @type {?} */ CarouselComponent.prototype.selectedIndex; /** @type {?} */ CarouselComponent.prototype.dots; /** @type {?} */ CarouselComponent.prototype.vertical; /** @type {?} */ CarouselComponent.prototype.autoplay; /** @type {?} */ CarouselComponent.prototype.autoplayInterval; /** @type {?} */ CarouselComponent.prototype.infinite; /** @type {?} */ CarouselComponent.prototype.dotStyle; /** @type {?} */ CarouselComponent.prototype.dotActiveStyle; /** @type {?} */ CarouselComponent.prototype.frameOverflow; /** @type {?} */ CarouselComponent.prototype.cellSpacing; /** @type {?} */ CarouselComponent.prototype.slideWidth; /** @type {?} */ CarouselComponent.prototype.swipeSpeed; /** @type {?} */ CarouselComponent.prototype.dragging; /** @type {?} */ CarouselComponent.prototype.afterChange; /** @type {?} */ CarouselComponent.prototype.beforeChange; /** @type {?} */ CarouselComponent.prototype.carouselWrapper; /** @type {?} */ CarouselComponent.prototype.carouselwrap; /** @type {?} */ CarouselComponent.prototype._ele; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC1tb2JpbGUvIiwic291cmNlcyI6WyJjYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGVBQWUsRUFDZixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNULFlBQVksRUFFWixVQUFVLEVBRVYsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9BQU8sS0FBSyxVQUFVLE1BQU0sMEJBQTBCLENBQUM7O0lBc0pyRCwyQkFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtxQkE1STVCO1lBQ04sTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsTUFBTTtZQUNiLFNBQVMsRUFBRSw0QkFBNEI7WUFDdkMsTUFBTSxFQUFFLEVBQUU7U0FDWDt3QkFHOEIsRUFBRTswQkFDSixDQUFDOzRCQUNFLEtBQUs7NEJBQ04sQ0FBQztrQ0FDSyxDQUFDO21DQUNBLENBQUM7MkJBQ1QsRUFBRTsyQkFDRixDQUFDO3FCQU9mLEdBQUc7NkJBRUssQ0FBQztvQkFFVCxJQUFJO3dCQUVBLEtBQUs7d0JBRUwsS0FBSztnQ0FFRCxJQUFJO3dCQUVSLEtBQUs7d0JBRU4sRUFBRTs4QkFFSSxFQUFFOzZCQUVILFFBQVE7MkJBRVYsQ0FBQzswQkFFRixDQUFDOzBCQUVELEVBQUU7d0JBRUgsSUFBSTsyQkFFUyxJQUFJLFlBQVksRUFBRTs0QkFFakIsSUFBSSxZQUFZLEVBQUU7K0JBR3pCLElBQUk7NEJBRVAsSUFBSTtLQW1GWTs7Ozs7SUEvRXhDLG9DQUFROzs7O0lBRlIsVUFFUyxLQUFLO1FBQ1osS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FB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QVEsSUFBSSxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0MsVUFBVSxDQUFDO2dCQUNULEtBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQyxFQUFFLEtBQUs7b0JBQzdCLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ3hFLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDeEcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBSSxLQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsWUFBUyxDQUFDLENBQUMsQ0FBQyxVQUFRLEtBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxPQUFJLENBQUM7aUJBQ2hHLENBQUMsQ0FBQztnQkFDSCxLQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkIsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNQO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckMsVUFBVSxDQUFDO2dCQUNULEtBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO29CQUNYLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO29CQUNWLENBQUMsQ0FBQyxNQUFNLEdBQUcsVUFBUSxLQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsT0FBSSxDQUFDO2lCQUM3QyxDQUFDLENBQUM7YUFDSixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ1A7S0FDRjs7OztJQUVELHNDQUFVOzs7SUFBVjtRQUFBLGlCQVVDO1FBVEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUNqQyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUNaLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEIsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNQOzs7O0lBRUQscUNBQVM7OztJQUFUO1FBQ0UsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUM1Qjs7Ozs7SUFFRCxvQ0FBUTs7OztJQUFSLFVBQVMsYUFBYTtRQUNwQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxhQUFhLEtBQUssQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7YUFDZjtpQkFBTSxJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDL0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO1NBQ0Y7YUFBTTtZQUNMLElBQUksYUFBYSxLQUFLLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ2pCO2lCQUFNLElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUMvQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDbEI7U0FDRjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztLQUM3Qzs7OztJQUVELGtDQUFNOzs7SUFBTjtRQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQzdDOzs7O0lBRUQsb0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7S0FDNUM7Ozs7SUFFRCxvQ0FBUTs7O0lBQVI7UUFDRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUM3Qzs7OztJQUVELHFDQUFTOzs7SUFBVDtRQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQzVDOzs7OztJQUVELHdDQUFZOzs7O0lBQVosVUFBYSxHQUFHO1FBQWhCLGlCQTZDQzs7UUE1Q0MsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN0QyxVQUFVLENBQUM7b0JBQ1QsS0FBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxDQUFDLEVBQUUsU0FBUzt3QkFDakMsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFOzRCQUNuQixDQUFDLENBQUMsSUFBSSxHQUFHLEtBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQzs0QkFDdEUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7eUJBQ3RFOzZCQUFNOzRCQUNMLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQzs0QkFDM0QsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUMzRDtxQkFDRixDQUFDLENBQUM7b0JBQ0gsS0FBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxLQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNsRSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDZixTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxTQUFTO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDN0QsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7b0JBQ1gsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7aUJBQ1g7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO2FBQU07WUFDTCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDL0QsU0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBQ0QsU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1lBQ3BFLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0tBQ0Y7Ozs7SUFFRCw2REFBaUM7OztJQUFqQzs7UUFDRSxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7S0FDOUQ7Ozs7SUFFRCw4REFBa0M7OztJQUFsQztRQUNFLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztTQUN4Qzs7UUFDRCxJQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7S0FDOUQ7Ozs7O0lBRUQsd0NBQVk7Ozs7SUFBWixVQUFhLFVBQVU7UUFBdkIsaUJBdUJDO1FBdEJDLElBQUksVUFBVSxLQUFLLElBQUksRUFBRTtZQUN2QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFdkIsSUFBSSxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQ3BCLFVBQVUsQ0FBQztnQkFDVCxLQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFDLENBQUMsRUFBRSxLQUFLO29CQUM3QixJQUFJLEtBQUssS0FBSyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7d0JBQ3RDLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUM7d0JBQ2hELENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ2hEO3lCQUFNO3dCQUNMLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQzt3QkFDdkQsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN2RDtpQkFDRixDQUFDLENBQUM7Z0JBQ0gsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixLQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2hCO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0tBQzNDOzs7O0lBRUQsMkNBQWU7OztJQUFmO1FBQ0UsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7U0FDMUM7YUFBTTtZQUNMLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxDQUFDO1NBQzNDO0tBQ0Y7Ozs7Ozs7SUFFRCwwQ0FBYzs7Ozs7O0lBQWQsVUFBZSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQWlCO1FBQWxELGlCQXNDQztRQXRDZ0Msc0JBQUEsRUFBQSxTQUFpQjtRQUNoRCxJQUFJLFNBQVMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQyxDQUFDLEVBQUUsU0FBUztnQkFDakMsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksS0FBSyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUU7b0JBQzNELElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFdBQVcsRUFBRTt3QkFDM0MsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQzt3QkFDcEYsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDcEY7aUJBQ0Y7cUJBQU0sSUFBSSxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUU7b0JBQ2hFLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFdBQVcsRUFBRTt3QkFDM0MsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQzt3QkFDNUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDNUU7aUJBQ0Y7cUJBQU0sSUFBSSxLQUFLLEtBQUssS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksS0FBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakYsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDcEYsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzRDtxQkFBTSxJQUFJLEtBQUssS0FBSyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2xGLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENB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ZSxDQUFDLENBQUMsWUFBWSxFQUFFOzRCQUNsRixLQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs0QkFDeEIsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3lCQUN0QjtxQkFDRjtpQkFDRjs7Ozs7Ozs7O1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDM0M7Ozs7SUFFRCx1Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUNsQjs7Z0JBMWRGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsa2NBQXdDO2lCQUN6Qzs7OztnQkFYQyxVQUFVOzs7d0JBaUNULGVBQWUsU0FBQyxzQkFBc0I7d0JBR3RDLEtBQUs7Z0NBRUwsS0FBSzt1QkFFTCxLQUFLOzJCQUVMLEtBQUs7MkJBRUwsS0FBSzttQ0FFTCxLQUFLOzJCQUVMLEtBQUs7MkJBRUwsS0FBSztpQ0FFTCxLQUFLO2dDQUVMLEtBQUs7OEJBRUwsS0FBSzs2QkFFTCxLQUFLOzZCQUVMLEtBQUs7MkJBRUwsS0FBSzs4QkFFTCxNQUFNOytCQUVOLE1BQU07a0NBR04sV0FBVyxTQUFDLG1CQUFtQjsrQkFFL0IsV0FBVyxTQUFDLGdCQUFnQjsyQkFHNUIsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUNwQyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOzBCQWVyQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3BDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7eUJBcUNwQyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3JDLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDbEMsWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFrQm5DLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7OzRCQTlKekM7O1NBc0JhLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxuICBRdWVyeUxpc3QsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltc