UNPKG

angular-admin-lte-teliqo

Version:
252 lines (251 loc) 21 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Directive, Input, Output, ElementRef, EventEmitter, Renderer2, NgZone } from '@angular/core'; var CollapseAnimationDirective = /** @class */ (function () { /** * @method constructor * @param elementRef [description] * @param ngZone [description] * @param renderer2 [description] */ function CollapseAnimationDirective(elementRef, ngZone, renderer2) { this.elementRef = elementRef; this.ngZone = ngZone; this.renderer2 = renderer2; this.firstStart = true; this.collapseAnimationDuration = 350; this.startEventEmitter = new EventEmitter(); this.doneEventEmitter = new EventEmitter(); } Object.defineProperty(CollapseAnimationDirective.prototype, "_isCollapsed", { set: /** * @param {?} value * @return {?} */ function (value) { this.lastIsCollapsed = this.isCollapsed; this.isCollapsed = value; if (!this.firstStart) { this.emit('start'); if (value) { this.collapse(); } else if (value === false) { this.unCollapse(); } } }, enumerable: true, configurable: true }); /** * @method ngOnInit */ /** * \@method ngOnInit * @return {?} */ CollapseAnimationDirective.prototype.ngOnInit = /** * \@method ngOnInit * @return {?} */ function () { if (this.collapseAnimationDuration && this.collapseAnimationDuration !== 350) { this.renderer2.setStyle(this.elementRef.nativeElement, 'transition-duration', this.collapseAnimationDuration + "ms"); } if (this.collapseAnimationTiming) { this.renderer2.setStyle(this.elementRef.nativeElement, 'transition-timing-function', this.collapseAnimationTiming); } }; /** * @method ngAfterContentInit */ /** * \@method ngAfterContentInit * @return {?} */ CollapseAnimationDirective.prototype.ngAfterContentInit = /** * \@method ngAfterContentInit * @return {?} */ function () { this.emit('start'); if (this.isCollapsed) { this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'none'); this.renderer2.addClass(this.elementRef.nativeElement, 'collapsing'); } this.emit('done'); this.firstStart = false; this.subscriptions(); }; /** * [ngOnDestroy description] * @method ngOnDestroy * @return [description] */ /** * [ngOnDestroy description] * \@method ngOnDestroy * @return {?} [description] */ CollapseAnimationDirective.prototype.ngOnDestroy = /** * [ngOnDestroy description] * \@method ngOnDestroy * @return {?} [description] */ function () { if (this.listener) { this.listener(); } }; /** * [subscriptions description] * \@method subscriptions * @return {?} */ CollapseAnimationDirective.prototype.subscriptions = /** * [subscriptions description] * \@method subscriptions * @return {?} */ function () { var _this = this; this.ngZone.runOutsideAngular(function () { _this.listener = _this.renderer2.listen(_this.elementRef.nativeElement, 'transitionend', function () { if (!_this.isCollapsed) { _this.renderer2.removeClass(_this.elementRef.nativeElement, 'un-collapse'); _this.renderer2.removeClass(_this.elementRef.nativeElement, 'collapsing'); } else { _this.renderer2.setStyle(_this.elementRef.nativeElement, 'display', 'none'); } requestAnimationFrame(function () { _this.renderer2.removeStyle(_this.elementRef.nativeElement, 'height'); _this.emit('done'); _this.transitioning = false; }); }); }); }; /** * [unCollapse description] * \@method unCollapse * @return {?} */ CollapseAnimationDirective.prototype.unCollapse = /** * [unCollapse description] * \@method unCollapse * @return {?} */ function () { this.transitioning = true; this.renderer2.addClass(this.elementRef.nativeElement, 'un-collapse'); this.renderer2.removeStyle(this.elementRef.nativeElement, 'display'); this.renderer2.setStyle(this.elementRef.nativeElement, 'height', this.elementRef.nativeElement.scrollHeight + "px"); }; /** * [collapse description] * \@method collapse * @return {?} */ CollapseAnimationDirective.prototype.collapse = /** * [collapse description] * \@method collapse * @return {?} */ function () { var _this = this; requestAnimationFrame(function () { if (!_this.transitioning) { _this.renderer2.setStyle(_this.elementRef.nativeElement, 'height', _this.elementRef.nativeElement.offsetHeight + "px"); _this.renderer2.addClass(_this.elementRef.nativeElement, 'collapsing'); } _this.transitioning = true; requestAnimationFrame(function () { _this.renderer2.setStyle(_this.elementRef.nativeElement, 'height', "0px"); }); }); }; /** * @param {?} phaseName * @return {?} */ CollapseAnimationDirective.prototype.emit = /** * @param {?} phaseName * @return {?} */ function (phaseName) { var /** @type {?} */ event = { element: this.elementRef.nativeElement, fromState: this.lastIsCollapsed === undefined ? 'void' : this.lastIsCollapsed ? '1' : '0', phaseName: phaseName, toState: this.isCollapsed === undefined ? 'void' : this.isCollapsed ? '1' : '0', totalTime: this.collapseAnimationDuration, triggerName: 'collapseAnimation' }; if (phaseName === 'done') { this.doneEventEmitter.emit(event); } else if (phaseName === 'start') { this.startEventEmitter.emit(event); } }; CollapseAnimationDirective.decorators = [ { type: Directive, args: [{ selector: '[collapseAnimation]' },] }, ]; /** @nocollapse */ CollapseAnimationDirective.ctorParameters = function () { return [ { type: ElementRef, }, { type: NgZone, }, { type: Renderer2, }, ]; }; CollapseAnimationDirective.propDecorators = { "collapseAnimationDuration": [{ type: Input },], "collapseAnimationTiming": [{ type: Input },], "_isCollapsed": [{ type: Input, args: ['collapseAnimation',] },], "startEventEmitter": [{ type: Output, args: ['collapseAnimation.start',] },], "doneEventEmitter": [{ type: Output, args: ['collapseAnimation.done',] },], }; return CollapseAnimationDirective; }()); export { CollapseAnimationDirective }; function CollapseAnimationDirective_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ CollapseAnimationDirective.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ CollapseAnimationDirective.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ CollapseAnimationDirective.propDecorators; /** @type {?} */ CollapseAnimationDirective.prototype.firstStart; /** @type {?} */ CollapseAnimationDirective.prototype.isCollapsed; /** @type {?} */ CollapseAnimationDirective.prototype.lastIsCollapsed; /** @type {?} */ CollapseAnimationDirective.prototype.transitioning; /** @type {?} */ CollapseAnimationDirective.prototype.listener; /** @type {?} */ CollapseAnimationDirective.prototype.collapseAnimationDuration; /** @type {?} */ CollapseAnimationDirective.prototype.collapseAnimationTiming; /** @type {?} */ CollapseAnimationDirective.prototype.startEventEmitter; /** @type {?} */ CollapseAnimationDirective.prototype.doneEventEmitter; /** @type {?} */ CollapseAnimationDirective.prototype.elementRef; /** @type {?} */ CollapseAnimationDirective.prototype.ngZone; /** @type {?} */ CollapseAnimationDirective.prototype.renderer2; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9ucy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9hbmd1bGFyLWFkbWluLWx0ZS10ZWxpcW8vIiwic291cmNlcyI6WyJsaWIvYW5pbWF0aW9ucy9hbmltYXRpb25zLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBdUMsTUFBTSxlQUFlLENBQUM7O0lBa0N6STs7Ozs7T0FLRztJQUNILG9DQUNVLFlBQ0EsUUFDQTtRQUZBLGVBQVUsR0FBVixVQUFVO1FBQ1YsV0FBTSxHQUFOLE1BQU07UUFDTixjQUFTLEdBQVQsU0FBUzswQkFsQ0UsSUFBSTt5Q0FNbUIsR0FBRztpQ0FlZSxJQUFJLFlBQVksRUFBRTtnQ0FDcEIsSUFBSSxZQUFZLEVBQUU7S0FhMUU7MEJBM0JtQyxvREFBWTs7Ozs7a0JBQUMsS0FBYztZQUNoRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDVixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQ2pCO2dCQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUNuQjthQUNGOzs7OztJQW1CSDs7T0FFRzs7Ozs7SUFDSCw2Q0FBUTs7OztJQUFSO1FBQ0UsRUFBRSxDQUFDLENBQUMsSUFB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UztZQUNwQixPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHO1lBQy9FLFNBQVMsRUFBRSxJQUFJLENBQUMseUJBQXlCO1lBQ3pDLFdBQVcsRUFBRSxtQkFBbUI7U0FDakMsQ0FBQztRQUVGLEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQzs7O2dCQWhKSixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtpQkFDaEM7Ozs7Z0JBUGtDLFVBQVU7Z0JBQTJCLE1BQU07Z0JBQWpCLFNBQVM7Ozs4Q0FlbkUsS0FBSzs0Q0FDTCxLQUFLO2lDQUNMLEtBQUssU0FBQyxtQkFBbUI7c0NBYXpCLE1BQU0sU0FBQyx5QkFBeUI7cUNBQ2hDLE1BQU0sU0FBQyx3QkFBd0I7O3FDQS9CbEM7O1NBUWEsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT3V0cHV0LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIFJlbmRlcmVyMiwgTmdab25lLCBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0aW9uRXZlbnQgfSBmcm9tICcuL2FuaW1hdGlvbnMuaW50ZXJmYWNlJztcbi8qXG4gKlxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbY29sbGFwc2VBbmltYXRpb25dJ1xufSlcbmV4cG9ydCBjbGFzcyBDb2xsYXBzZUFuaW1hdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBmaXJzdFN0YXJ0ID0gdHJ1ZTtcbiAgcHJpdmF0ZSBpc0NvbGxhcHNlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsYXN0SXNDb2xsYXBzZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgdHJhbnNpdGlvbmluZzogYm9vbGVhbjtcbiAgcHJpdmF0ZSBsaXN0ZW5lcjogRnVuY3Rpb247XG5cbiAgQElucHV0KCkgcHVibGljIGNvbGxhcHNlQW5pbWF0aW9uRHVyYXRpb24gPSAzNTA7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb2xsYXBzZUFuaW1hdGlvblRpbWluZzogc3RyaW5nO1xuICBASW5wdXQoJ2NvbGxhcHNlQW5pbWF0aW9uJykgcHVibGljIHNldCBfaXNDb2xsYXBzZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmxhc3RJc0NvbGxhcHNlZCA9IHRoaXMuaXNDb2xsYXBzZWQ7XG4gICAgdGhpcy5pc0NvbGxhcHNlZCA9IHZhbHVlO1xuICAgIGlmICghdGhpcy5maXJzdFN0YXJ0KSB7XG4gICAgICB0aGlzLmVtaXQoJ3N0YXJ0Jyk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5jb2xsYXBzZSgpO1xuICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy51bkNvbGxhcHNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQE91dHB1dCgnY29sbGFwc2VBbmltYXRpb24uc3RhcnQnKSBwdWJsaWMgc3RhcnRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoJ2NvbGxhcHNlQW5pbWF0aW9uLmRvbmUnKSBwdWJsaWMgZG9uZUV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtIG5nWm9uZSAgICAgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcGFyYW0gcmVuZGVyZXIyICBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyXG4gICkge31cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ09uSW5pdFxuICAgKi9cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29sbGFwc2VBbmltYXRpb25EdXJhdGlvbiAmJiB0aGlzLmNvbGxhcHNlQW5pbWF0aW9uRHVyYXRpb24gIT09IDM1MCkge1xuICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYCR7dGhpcy5jb2xsYXBzZUFuaW1hdGlvbkR1cmF0aW9ufW1zYCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbGxhcHNlQW5pbWF0aW9uVGltaW5nKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJywgdGhpcy5jb2xsYXBzZUFuaW1hdGlvblRpbWluZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgbmdBZnRlckNvbnRlbnRJbml0XG4gICAqL1xuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5lbWl0KCdzdGFydCcpO1xuICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyMi5zZXRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgICAgdGhpcy5yZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xsYXBzaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuZW1pdCgnZG9uZScpO1xuICAgIHRoaXMuZmlyc3RTdGFydCA9IGZhbHNlO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICAvKipcbiAgICogW25nT25EZXN0cm95IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgaWYgKHRoaXMubGlzdGVuZXIpIHtcbiAgICAgIHRoaXMubGlzdGVuZXIoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogW3N1YnNjcmlwdGlvbnMgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc3Vic2NyaXB0aW9uc1xuICAgKi9cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMubGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyMi5saXN0ZW4odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uZW5kJywgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyMi5yZW1vdmVDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3VuLWNvbGxhcHNlJyk7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdjb2xsYXBzaW5nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVuZGVyZXIyLnJlbW92ZVN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0Jyk7XG4gICAgICAgICAgdGhpcy5lbWl0KCdkb25lJyk7XG4gICAgICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBbdW5Db2xsYXBzZSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCB1bkNvbGxhcHNlXG4gICAqL1xuICBwcml2YXRlIHVuQ29sbGFwc2UoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnJlbmRlcmVyMi5hZGRDbGFzcyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3VuLWNvbGxhcHNlJyk7XG4gICAgdGhpcy5yZW5kZXJlcjIucmVtb3ZlU3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5Jyk7XG4gICAgdGhpcy5yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdoZWlnaHQnLCBgJHt0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHR9cHhgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbY29sbGFwc2UgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2QgY29sbGFwc2VcbiAgICovXG4gIHByaXZhdGUgY29sbGFwc2UoKTogdm9pZCB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIGlmICghdGhpcy50cmFuc2l0aW9uaW5nKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYCR7dGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0fXB4YCk7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnY29sbGFwc2luZycpO1xuICAgICAgfVxuICAgICAgdGhpcy50cmFuc2l0aW9uaW5nID0gdHJ1ZTtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnaGVpZ2h0JywgYDBweGApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVtaXQocGhhc2VOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudDogQW5pbWF0aW9uRXZlbnQgPSB7XG4gICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIGZyb21TdGF0ZTogdGhpcy5sYXN0SXNDb2xsYXBzZWQgPT09IHVuZGVmaW5lZCA/ICd2b2lkJyA6IHRoaXMubGFzdElzQ29sbGFwc2VkID8gJzEnIDogJzAnLFxuICAgICAgcGhhc2VOYW1lOiBwaGFzZU5hbWUsXG4gICAgICB0b1N0YXRlOiB0aGlzLmlzQ29sbGFwc2VkID09PSB1bmRlZmluZWQgPyAndm9pZCcgOiB0aGlzLmlzQ29sbGFwc2VkID8gJzEnIDogJzAnLFxuICAgICAgdG90YWxUaW1lOiB0aGlzLmNvbGxhcHNlQW5pbWF0aW9uRHVyYXRpb24sXG4gICAgICB0cmlnZ2VyTmFtZTogJ2NvbGxhcHNlQW5pbWF0aW9uJ1xuICAgIH07XG5cbiAgICBpZiAocGhhc2VOYW1lID09PSAnZG9uZScpIHtcbiAgICAgIHRoaXMuZG9uZUV2ZW50RW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgICB9IGVsc2UgaWYgKHBoYXNlTmFtZSA9PT0gJ3N0YXJ0Jykge1xuICAgICAgdGhpcy5zdGFydEV2ZW50RW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==