UNPKG

ngx-amap

Version:

[![npm](https://img.shields.io/npm/v/ngx-amap.svg)][npm-badge-url] [![npm](https://img.shields.io/npm/dm/ngx-amap.svg)][npm-badge-url] [![Build Status](https://travis-ci.org/xieziyu/ngx-amap.svg?branch=master)][ci-url]

388 lines 26.3 kB
/** * @fileoverview added by tsickle * Generated from: components/amap-info-window/amap-info-window.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, Input, Output, EventEmitter, ElementRef, NgZone, } from '@angular/core'; import { zip } from 'rxjs'; import { LoggerService } from '../../shared/logger/logger.service'; import { EventBinderService } from '../../shared/event-binder.service'; import { getOptions, ChangeFilter } from '../../utils'; import { AmapInfoWindowService } from './amap-info-window.service'; import { PixelService } from '../../shared/pixel.service'; import { SizeService } from '../../shared/size.service'; import { AMapService } from '../../shared/amap.service'; /** @type {?} */ var TAG = 'amap-info-window'; /** @type {?} */ var ALL_OPTIONS = [ 'isCustom', 'autoMove', 'closeWhenClickMap', 'content', 'size', 'anchor', 'offset', 'position', 'showShadow', ]; var AmapInfoWindowComponent = /** @class */ (function () { function AmapInfoWindowComponent(os, binder, amaps, el, logger, pixels, sizes, ngZone) { this.os = os; this.binder = binder; this.amaps = amaps; this.el = el; this.logger = logger; this.pixels = pixels; this.sizes = sizes; this.ngZone = ngZone; /** * 额外:是否开启 */ this.isOpen = false; // ---- Events ---- this.naReady = new EventEmitter(); this.isOpenChange = new EventEmitter(); this.inited = false; /** @type {?} */ var w = this.os.get(); this.naOpen = this.binder.bindEvent(w, 'open'); this.naClose = this.binder.bindEvent(w, 'close'); this.naChange = this.binder.bindEvent(w, 'change'); } /** * @param {?} changes * @return {?} */ AmapInfoWindowComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var _this = this; /** @type {?} */ var filter = ChangeFilter.of(changes); /** @type {?} */ var iw = this.get(); if (!this.inited) { this.amaps.get().subscribe((/** * @return {?} */ function () { _this.logger.d(TAG, 'initializing ...'); // bind isOpenChange events: _this.subscriptions = _this.binder.bindEvent(iw, 'open').subscribe((/** * @return {?} */ function () { if (!_this.isOpen) { _this.isOpen = true; _this.isOpenChange.emit(true); } })); _this.subscriptions.add(_this.binder.bindEvent(iw, 'close').subscribe((/** * @return {?} */ function () { if (_this.isOpen) { _this.isOpen = false; _this.isOpenChange.emit(false); } }))); _this.content = _this.content ? _this.content : _this.el.nativeElement.querySelector('.amap-info-window-content'); /** @type {?} */ var options = getOptions(_this, ALL_OPTIONS); if (_this.offset) { options.offset = _this.pixels.create(_this.offset); } if (_this.size) { options.size = _this.sizes.create(_this.size); } _this.logger.d(TAG, 'options:', options); _this.os.create(options).subscribe((/** * @param {?} m * @return {?} */ function (m) { _this.ngZone.run((/** * @return {?} */ function () { _this.toggleOpen(); _this.naReady.emit(m); })); _this.logger.d(TAG, 'InfoWindow is ready.'); })); _this.inited = true; })); } else { filter.has('isOpen').subscribe((/** * @return {?} */ function () { return _this.toggleOpen(); })); zip(filter.has('content'), iw).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1]; return w.setContent(v); })); zip(filter.notEmpty('position'), iw).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1]; return w.setPosition(v); })); zip(filter.notEmpty('size'), iw).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1]; return w.setSize(_this.sizes.create(v)); })); zip(filter.notEmpty('anchor'), iw).subscribe((/** * @param {?} __0 * @return {?} */ function (_a) { var _b = tslib_1.__read(_a, 2), v = _b[0], w = _b[1]; return w.setAnchor(v); })); } }; /** * @return {?} */ AmapInfoWindowComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { if (this.subscriptions) { this.subscriptions.unsubscribe(); } this.os.destroy(); }; /** * 获取已创建的 AMap.InfoWindow 对象 */ /** * 获取已创建的 AMap.InfoWindow 对象 * @return {?} */ AmapInfoWindowComponent.prototype.get = /** * 获取已创建的 AMap.InfoWindow 对象 * @return {?} */ function () { return this.os.get(); }; /** * 开关窗体 */ /** * 开关窗体 * @return {?} */ AmapInfoWindowComponent.prototype.toggleOpen = /** * 开关窗体 * @return {?} */ function () { this.logger.d(TAG, 'toggle open'); this.isOpen ? this.open() : this.close(); }; /** * 打开窗体 */ /** * 打开窗体 * @return {?} */ AmapInfoWindowComponent.prototype.open = /** * 打开窗体 * @return {?} */ function () { if (this.hostMarker) { this.os.openOnMark(this.hostMarker); } else { this.os.open(); } }; /** * 关闭窗体 */ /** * 关闭窗体 * @return {?} */ AmapInfoWindowComponent.prototype.close = /** * 关闭窗体 * @return {?} */ function () { this.os.close(); }; AmapInfoWindowComponent.decorators = [ { type: Component, args: [{ selector: 'amap-info-window', template: "<div class='amap-info-window-inner'></div>\n<div class='amap-info-window-content'>\n <ng-content></ng-content>\n</div>", providers: [AmapInfoWindowService], styles: [""] }] } ]; /** @nocollapse */ AmapInfoWindowComponent.ctorParameters = function () { return [ { type: AmapInfoWindowService }, { type: EventBinderService }, { type: AMapService }, { type: ElementRef }, { type: LoggerService }, { type: PixelService }, { type: SizeService }, { type: NgZone } ]; }; AmapInfoWindowComponent.propDecorators = { isCustom: [{ type: Input }], autoMove: [{ type: Input }], closeWhenClickMap: [{ type: Input }], content: [{ type: Input }], size: [{ type: Input }], anchor: [{ type: Input }], offset: [{ type: Input }], position: [{ type: Input }], showShadow: [{ type: Input }], isOpen: [{ type: Input }], naReady: [{ type: Output }], naOpen: [{ type: Output }], naClose: [{ type: Output }], naChange: [{ type: Output }], isOpenChange: [{ type: Output }] }; return AmapInfoWindowComponent; }()); export { AmapInfoWindowComponent }; if (false) { /** * 是否自定义窗体 * @type {?} */ AmapInfoWindowComponent.prototype.isCustom; /** * 是否自动调整窗体到视野内 * @type {?} */ AmapInfoWindowComponent.prototype.autoMove; /** * 控制是否在鼠标点击地图后关闭信息窗体 * @type {?} */ AmapInfoWindowComponent.prototype.closeWhenClickMap; /** * 显示内容 * @type {?} */ AmapInfoWindowComponent.prototype.content; /** * 信息窗体尺寸 * @type {?} */ AmapInfoWindowComponent.prototype.size; /** * 信息窗体锚点 * @type {?} */ AmapInfoWindowComponent.prototype.anchor; /** * 信息窗体显示位置偏移量 * @type {?} */ AmapInfoWindowComponent.prototype.offset; /** * 信息窗体显示基点位置 * @type {?} */ AmapInfoWindowComponent.prototype.position; /** * 是否显示信息窗体阴影 * @type {?} */ AmapInfoWindowComponent.prototype.showShadow; /** * 额外:是否开启 * @type {?} */ AmapInfoWindowComponent.prototype.isOpen; /** @type {?} */ AmapInfoWindowComponent.prototype.naReady; /** @type {?} */ AmapInfoWindowComponent.prototype.naOpen; /** @type {?} */ AmapInfoWindowComponent.prototype.naClose; /** @type {?} */ AmapInfoWindowComponent.prototype.naChange; /** @type {?} */ AmapInfoWindowComponent.prototype.isOpenChange; /** @type {?} */ AmapInfoWindowComponent.prototype.hostMarker; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.inited; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.subscriptions; /** * @type {?} * @protected */ AmapInfoWindowComponent.prototype.os; /** * @type {?} * @protected */ AmapInfoWindowComponent.prototype.binder; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.amaps; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.el; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.logger; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.pixels; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.sizes; /** * @type {?} * @private */ AmapInfoWindowComponent.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1hcC1pbmZvLXdpbmRvdy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtYW1hcC8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvYW1hcC1pbmZvLXdpbmRvdy9hbWFwLWluZm8td2luZG93LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUdaLFVBQVUsRUFDVixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLEdBQUcsRUFBNEIsTUFBTSxNQUFNLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQUVsRCxHQUFHLEdBQUcsa0JBQWtCOztJQUN4QixXQUFXLEdBQUc7SUFDbEIsVUFBVTtJQUNWLFVBQVU7SUFDVixtQkFBbUI7SUFDbkIsU0FBUztJQUNULE1BQU07SUFDTixRQUFRO0lBQ1IsUUFBUTtJQUNSLFVBQVU7SUFDVixZQUFZO0NBQ2I7QUFFRDtJQTJERSxpQ0FDWSxFQUF5QixFQUN6QixNQUEwQixFQUM1QixLQUFrQixFQUNsQixFQUFjLEVBQ2QsTUFBcUIsRUFDckIsTUFBb0IsRUFDcEIsS0FBa0IsRUFDbEIsTUFBYztRQVBaLE9BQUUsR0FBRixFQUFFLENBQXVCO1FBQ3pCLFdBQU0sR0FBTixNQUFNLENBQW9CO1FBQzVCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUNkLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixVQUFLLEdBQUwsS0FBSyxDQUFhO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVE7Ozs7UUFwQmYsV0FBTSxHQUFHLEtBQUssQ0FBQzs7UUFFZCxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUk3QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFHN0MsV0FBTSxHQUFHLEtBQUssQ0FBQzs7WUFhZixDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUU7UUFDdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7Ozs7SUFFRCw2Q0FBVzs7OztJQUFYLFVBQVksT0FBc0I7UUFBbEMsaUJBc0RDOztZQXJETyxNQUFNLEdBQUcsWUFBWSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7O1lBQ2pDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUzs7O1lBQUM7Z0JBQ3pCLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUN2Qyw0QkFBNEI7Z0JBQzVCLEtBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVM7OztnQkFBQztvQkFDL0QsSUFBSSxDQUFDLEtBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ2hCLEtBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO3dCQUNuQixLQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDOUI7Z0JBQ0gsQ0FBQyxFQUFDLENBQUM7Z0JBQ0gsS0FBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQ3BCLEtBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTOzs7Z0JBQUM7b0JBQzNDLElBQUksS0FBSSxDQUFDLE1BQU0sRUFBRTt3QkFDZixLQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3QkFDcEIsS0FBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQy9CO2dCQUNILENBQUMsRUFBQyxDQUNILENBQUM7Z0JBQ0YsS0FBSSxDQUFDLE9BQU8sR0FBRyxLQUFJLENBQUMsT0FBTztvQkFDekIsQ0FBQyxDQUFDLEtBQUksQ0FBQyxPQUFPO29CQUNkLENBQUMsQ0FBQyxLQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsQ0FBQzs7b0JBQy9ELE9BQU8sR0FBRyxVQUFVLENBQTBCLEtBQUksRUFBRSxXQUFXLENBQUM7Z0JBQ3RFLElBQUksS0FBSSxDQUFDLE1BQU0sRUFBRTtvQkFDZixPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDbEQ7Z0JBQ0QsSUFBSSxLQUFJLENBQUMsSUFBSSxFQUFFO29CQUNiLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUM3QztnQkFDRCxLQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxLQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTOzs7O2dCQUFDLFVBQUEsQ0FBQztvQkFDakMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHOzs7b0JBQUM7d0JBQ2QsS0FBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUNsQixLQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDdkIsQ0FBQyxFQUFDLENBQUM7b0JBQ0gsS0FBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDLENBQUM7Z0JBQzdDLENBQUMsRUFBQyxDQUFDO2dCQUNILEtBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLENBQUMsRUFBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sQ0FBQyxHQUFHLENBQVUsUUFBUSxDQUFDLENBQUMsU0FBUzs7O1lBQUMsY0FBTSxPQUFBLEtBQUksQ0FBQyxVQUFVLEVBQUUsRUFBakIsQ0FBaUIsRUFBQyxDQUFDO1lBQ2pFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFNLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEVBQU07b0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFBTSxPQUFBLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQWYsQ0FBZSxFQUFDLENBQUM7WUFDM0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQXFCLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEVBQU07b0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFDdkUsT0FBQSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUFoQixDQUFnQixFQUNqQixDQUFDO1lBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQXlCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVM7Ozs7WUFBQyxVQUFDLEVBQU07b0JBQU4sMEJBQU0sRUFBTCxTQUFDLEVBQUUsU0FBQztnQkFDdkUsT0FBQSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQS9CLENBQStCLEVBQ2hDLENBQUM7WUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBeUIsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUzs7OztZQUFDLFVBQUMsRUFBTTtvQkFBTiwwQkFBTSxFQUFMLFNBQUMsRUFBRSxTQUFDO2dCQUN6RSxPQUFBLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQWQsQ0FBYyxFQUNmLENBQUM7U0FDSDtJQUNILENBQUM7Ozs7SUFFRCw2Q0FBVzs7O0lBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILHFDQUFHOzs7O0lBQUg7UUFDRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILDRDQUFVOzs7O0lBQVY7UUFDRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILHNDQUFJOzs7O0lBQUo7UUFDRSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JDO2FBQU07WUFDTCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILHVDQUFLOzs7O0lBQUw7UUFDRSxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xCLENBQUM7O2dCQXpLRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsbUlBQWdEO29CQUVoRCxTQUFTLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQzs7aUJBQ25DOzs7O2dCQXhCUSxxQkFBcUI7Z0JBRnJCLGtCQUFrQjtnQkFNbEIsV0FBVztnQkFYbEIsVUFBVTtnQkFJSCxhQUFhO2dCQUtiLFlBQVk7Z0JBQ1osV0FBVztnQkFUbEIsTUFBTTs7OzJCQW9DTCxLQUFLOzJCQUlMLEtBQUs7b0NBSUwsS0FBSzswQkFJTCxLQUFLO3VCQUlMLEtBQUs7eUJBSUwsS0FBSzt5QkFJTCxLQUFLOzJCQUlMLEtBQUs7NkJBSUwsS0FBSzt5QkFJTCxLQUFLOzBCQUVMLE1BQU07eUJBQ04sTUFBTTswQkFDTixNQUFNOzJCQUNOLE1BQU07K0JBQ04sTUFBTTs7SUFxSFQsOEJBQUM7Q0FBQSxBQTFLRCxJQTBLQztTQXBLWSx1QkFBdUI7Ozs7OztJQUtsQywyQ0FBMkI7Ozs7O0lBSTNCLDJDQUEyQjs7Ozs7SUFJM0Isb0RBQW9DOzs7OztJQUlwQywwQ0FBdUM7Ozs7O0lBSXZDLHVDQUFzQzs7Ozs7SUFJdEMseUNBQXdDOzs7OztJQUl4Qyx5Q0FBcUM7Ozs7O0lBSXJDLDJDQUFzQzs7Ozs7SUFJdEMsNkNBQTZCOzs7OztJQUk3Qix5Q0FBd0I7O0lBRXhCLDBDQUF1Qzs7SUFDdkMseUNBQW9DOztJQUNwQywwQ0FBcUM7O0lBQ3JDLDJDQUFzQzs7SUFDdEMsK0NBQXFEOztJQUVyRCw2Q0FBZ0Q7Ozs7O0lBQ2hELHlDQUF1Qjs7Ozs7SUFDdkIsZ0RBQW9DOzs7OztJQUdsQyxxQ0FBbUM7Ozs7O0lBQ25DLHlDQUFvQzs7Ozs7SUFDcEMsd0NBQTBCOzs7OztJQUMxQixxQ0FBc0I7Ozs7O0lBQ3RCLHlDQUE2Qjs7Ozs7SUFDN0IseUNBQTRCOzs7OztJQUM1Qix3Q0FBMEI7Ozs7O0lBQzFCLHlDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHppcCwgU3Vic2NyaXB0aW9uLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudEJpbmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvZXZlbnQtYmluZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0T3B0aW9ucywgQ2hhbmdlRmlsdGVyIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgQW1hcEluZm9XaW5kb3dTZXJ2aWNlIH0gZnJvbSAnLi9hbWFwLWluZm8td2luZG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgSVBpeGVsLCBJU2l6ZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGl4ZWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL3BpeGVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2l6ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvc2l6ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEFNYXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2FtYXAuc2VydmljZSc7XG5cbmNvbnN0IFRBRyA9ICdhbWFwLWluZm8td2luZG93JztcbmNvbnN0IEFMTF9PUFRJT05TID0gW1xuICAnaXNDdXN0b20nLFxuICAnYXV0b01vdmUnLFxuICAnY2xvc2VXaGVuQ2xpY2tNYXAnLFxuICAnY29udGVudCcsXG4gICdzaXplJyxcbiAgJ2FuY2hvcicsXG4gICdvZmZzZXQnLFxuICAncG9zaXRpb24nLFxuICAnc2hvd1NoYWRvdycsXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbWFwLWluZm8td2luZG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FtYXAtaW5mby13aW5kb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hbWFwLWluZm8td2luZG93LmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW0FtYXBJbmZvV2luZG93U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFtYXBJbmZvV2luZG93Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAvLyAtLS0tIE9wdGlvbnMgLS0tLVxuICAvKipcbiAgICog5piv5ZCm6Ieq5a6a5LmJ56qX5L2TXG4gICAqL1xuICBASW5wdXQoKSBpc0N1c3RvbTogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOaYr+WQpuiHquWKqOiwg+aVtOeql+S9k+WIsOinhumHjuWGhVxuICAgKi9cbiAgQElucHV0KCkgYXV0b01vdmU6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmjqfliLbmmK/lkKblnKjpvKDmoIfngrnlh7vlnLDlm77lkI7lhbPpl63kv6Hmga/nqpfkvZNcbiAgICovXG4gIEBJbnB1dCgpIGNsb3NlV2hlbkNsaWNrTWFwOiBib29sZWFuO1xuICAvKipcbiAgICog5pi+56S65YaF5a65XG4gICAqL1xuICBASW5wdXQoKSBjb250ZW50OiBzdHJpbmcgfCBIVE1MRWxlbWVudDtcbiAgLyoqXG4gICAqIOS/oeaBr+eql+S9k+WwuuWvuFxuICAgKi9cbiAgQElucHV0KCkgc2l6ZTogQU1hcC5TaXplVmFsdWUgfCBJU2l6ZTtcbiAgLyoqXG4gICAqIOS/oeaBr+eql+S9k+mUmueCuVxuICAgKi9cbiAgQElucHV0KCkgYW5jaG9yOiBBTWFwLkluZm9XaW5kb3cuQW5jaG9yO1xuICAvKipcbiAgICog5L+h5oGv56qX5L2T5pi+56S65L2N572u5YGP56e76YePXG4gICAqL1xuICBASW5wdXQoKSBvZmZzZXQ6IEFNYXAuUGl4ZWwgfCBJUGl4ZWw7XG4gIC8qKlxuICAgKiDkv6Hmga/nqpfkvZPmmL7npLrln7rngrnkvY3nva5cbiAgICovXG4gIEBJbnB1dCgpIHBvc2l0aW9uOiBBTWFwLkxvY2F0aW9uVmFsdWU7XG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrkv6Hmga/nqpfkvZPpmLTlvbFcbiAgICovXG4gIEBJbnB1dCgpIHNob3dTaGFkb3c6IGJvb2xlYW47XG4gIC8qKlxuICAgKiDpop3lpJbvvJrmmK/lkKblvIDlkK9cbiAgICovXG4gIEBJbnB1dCgpIGlzT3BlbiA9IGZhbHNlO1xuICAvLyAtLS0tIEV2ZW50cyAtLS0tXG4gIEBPdXRwdXQoKSBuYVJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgbmFPcGVuOiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE91dHB1dCgpIG5hQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgbmFDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBAT3V0cHV0KCkgaXNPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGhvc3RNYXJrZXI6IE9ic2VydmFibGU8QU1hcC5NYXJrZXIgfCBBTWFwLlRleHQ+O1xuICBwcml2YXRlIGluaXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3M6IEFtYXBJbmZvV2luZG93U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYmluZGVyOiBFdmVudEJpbmRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbWFwczogQU1hcFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHBpeGVsczogUGl4ZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2l6ZXM6IFNpemVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIGNvbnN0IHcgPSB0aGlzLm9zLmdldCgpO1xuICAgIHRoaXMubmFPcGVuID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHcsICdvcGVuJyk7XG4gICAgdGhpcy5uYUNsb3NlID0gdGhpcy5iaW5kZXIuYmluZEV2ZW50KHcsICdjbG9zZScpO1xuICAgIHRoaXMubmFDaGFuZ2UgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQodywgJ2NoYW5nZScpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGNvbnN0IGZpbHRlciA9IENoYW5nZUZpbHRlci5vZihjaGFuZ2VzKTtcbiAgICBjb25zdCBpdyA9IHRoaXMuZ2V0KCk7XG4gICAgaWYgKCF0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5hbWFwcy5nZXQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci5kKFRBRywgJ2luaXRpYWxpemluZyAuLi4nKTtcbiAgICAgICAgLy8gYmluZCBpc09wZW5DaGFuZ2UgZXZlbnRzOlxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSB0aGlzLmJpbmRlci5iaW5kRXZlbnQoaXcsICdvcGVuJykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgdGhpcy5iaW5kZXIuYmluZEV2ZW50KGl3LCAnY2xvc2UnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgIHRoaXMuaXNPcGVuQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRlbnQgPSB0aGlzLmNvbnRlbnRcbiAgICAgICAgICA/IHRoaXMuY29udGVudFxuICAgICAgICAgIDogdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hbWFwLWluZm8td2luZG93LWNvbnRlbnQnKTtcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGdldE9wdGlvbnM8QU1hcC5JbmZvV2luZG93Lk9wdGlvbnM+KHRoaXMsIEFMTF9PUFRJT05TKTtcbiAgICAgICAgaWYgKHRoaXMub2Zmc2V0KSB7XG4gICAgICAgICAgb3B0aW9ucy5vZmZzZXQgPSB0aGlzLnBpeGVscy5jcmVhdGUodGhpcy5vZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNpemUpIHtcbiAgICAgICAgICBvcHRpb25zLnNpemUgPSB0aGlzLnNpemVzLmNyZWF0ZSh0aGlzLnNpemUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnb3B0aW9uczonLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5vcy5jcmVhdGUob3B0aW9ucykuc3Vic2NyaWJlKG0gPT4ge1xuICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZU9wZW4oKTtcbiAgICAgICAgICAgIHRoaXMubmFSZWFkeS5lbWl0KG0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAnSW5mb1dpbmRvdyBpcyByZWFkeS4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWx0ZXIuaGFzPGJvb2xlYW4+KCdpc09wZW4nKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy50b2dnbGVPcGVuKCkpO1xuICAgICAgemlwKGZpbHRlci5oYXM8YW55PignY29udGVudCcpLCBpdykuc3Vic2NyaWJlKChbdiwgd10pID0+IHcuc2V0Q29udGVudCh2KSk7XG4gICAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PEFNYXAuTG9jYXRpb25WYWx1ZT4oJ3Bvc2l0aW9uJyksIGl3KS5zdWJzY3JpYmUoKFt2LCB3XSkgPT5cbiAgICAgICAgdy5zZXRQb3NpdGlvbih2KSxcbiAgICAgICk7XG4gICAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PEFNYXAuU2l6ZVZhbHVlIHwgSVNpemU+KCdzaXplJyksIGl3KS5zdWJzY3JpYmUoKFt2LCB3XSkgPT5cbiAgICAgICAgdy5zZXRTaXplKHRoaXMuc2l6ZXMuY3JlYXRlKHYpKSxcbiAgICAgICk7XG4gICAgICB6aXAoZmlsdGVyLm5vdEVtcHR5PEFNYXAuSW5mb1dpbmRvdy5BbmNob3I+KCdhbmNob3InKSwgaXcpLnN1YnNjcmliZSgoW3YsIHddKSA9PlxuICAgICAgICB3LnNldEFuY2hvcih2KSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9ucykge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMub3MuZGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOiOt+WPluW3suWIm+W7uueahCBBTWFwLkluZm9XaW5kb3cg5a+56LGhXG4gICAqL1xuICBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMub3MuZ2V0KCk7XG4gIH1cblxuICAvKipcbiAgICog5byA5YWz56qX5L2TXG4gICAqL1xuICB0b2dnbGVPcGVuKCkge1xuICAgIHRoaXMubG9nZ2VyLmQoVEFHLCAndG9nZ2xlIG9wZW4nKTtcbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMub3BlbigpIDogdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOaJk+W8gOeql+S9k1xuICAgKi9cbiAgb3BlbigpIHtcbiAgICBpZiAodGhpcy5ob3N0TWFya2VyKSB7XG4gICAgICB0aGlzLm9zLm9wZW5Pbk1hcmsodGhpcy5ob3N0TWFya2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcy5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIOWFs+mXreeql+S9k1xuICAgKi9cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5vcy5jbG9zZSgpO1xuICB9XG59XG4iXX0=