ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
756 lines (755 loc) • 70.7 kB
JavaScript
/**
* @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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QVEsSUFBSSxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7WUFDM0MsVUFBVSxDQUFDO2dCQUNULEtBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQUMsQ0FBQyxFQUFFLEtBQUs7b0JBQzdCLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsWUFBWSxHQUFHLEtBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ3hFLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDeEcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FB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QUFDLEVBQUU7b0JBQ2hFLElBQUksS0FBSyxLQUFLLENBQUMsSUFBSSxLQUFLLEdBQUcsS0FBSSxDQUFDLFdBQVcsRUFBRTt3QkFDM0MsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQzt3QkFDNUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDNUU7aUJBQ0Y7cUJBQU0sSUFBSSxLQUFLLEtBQUssS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFNBQVMsS0FBSyxDQUFDLElBQUksS0FBSSxDQUFDLFFBQVEsRUFBRTtvQkFDakYsQ0FBQyxDQUFDLElBQUksR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQztvQkFDcEYsQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzRDtxQkFBTSxJQUFJLEtBQUssS0FBSyxLQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2xGLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENB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ZSxDQUFDLENBQUMsWUFBWSxFQUFFOzRCQUNsRixLQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzs0QkFDeEIsS0FBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO3lCQUN0QjtxQkFDRjtpQkFDRjs7Ozs7Ozs7O1NBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7S0FDM0M7Ozs7SUFFRCx1Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztLQUNsQjs7Z0JBMWRGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsa2NBQXdDO2lCQUN6Qzs7OztnQkFYQyxVQUFVOzs7d0JBaUNULGVBQWUsU0FBQyxzQkFBc0I7d0JBR3RDLEtBQUs7Z0NBRUwsS0FBSzt1QkFFTCxLQUFLOzJCQUVMLEtBQUs7MkJBRUwsS0FBSzttQ0FFTCxLQUFLOzJCQUVMLEtBQUs7MkJBRUwsS0FBSztpQ0FFTCxLQUFLO2dDQUVMLEtBQUs7OEJBRUwsS0FBSzs2QkFFTCxLQUFLOzZCQUVMLEtBQUs7MkJBRUwsS0FBSzs4QkFFTCxNQUFNOytCQUVOLE1BQU07a0NBR04sV0FBVyxTQUFDLG1CQUFtQjsrQkFFL0IsV0FBVyxTQUFDLGdCQUFnQjsyQkFHNUIsWUFBWSxTQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxjQUNwQyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDOzBCQWVyQyxZQUFZLFNBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3BDLFlBQVksU0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7eUJBcUNwQyxZQUFZLFNBQUMsWUFBWSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQ3JDLFlBQVksU0FBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FDbEMsWUFBWSxTQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQzt5QkFrQm5DLFlBQVksU0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7OzRCQTlKekM7O1NBc0JhLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgSG9zdExpc3RlbmVyLFxuICBRdWVyeUxpc3QsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltc