theme-lib
Version:
This is a simple example Angular Library published to npm.
278 lines • 21.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output, } from '@angular/core';
import { NbDateService } from '../calendar-kit';
/**
* @template D
*/
export class NbCalendarRangeDayCellComponent {
/**
* @param {?} dateService
*/
constructor(dateService) {
this.dateService = dateService;
this.select = new EventEmitter(true);
}
/**
* @return {?}
*/
get inRange() {
return this.date && this.selectedValue
&& (this.selectedValue.start && this.dateService.compareDates(this.date, this.selectedValue.start) >= 0)
&& (this.selectedValue.end && this.dateService.compareDates(this.date, this.selectedValue.end) <= 0);
}
/**
* @return {?}
*/
get start() {
return this.date && this.selectedValue && this.selectedValue.end
&& (this.selectedValue.start && this.dateService.isSameDay(this.date, this.selectedValue.start));
}
/**
* @return {?}
*/
get end() {
return this.date && this.selectedValue &&
(this.selectedValue.end && this.dateService.isSameDay(this.date, this.selectedValue.end));
}
/**
* @return {?}
*/
get today() {
return this.date && this.dateService.isSameDay(this.date, this.dateService.today());
}
/**
* @return {?}
*/
get boundingMonth() {
return !this.dateService.isSameMonthSafe(this.date, this.visibleDate);
}
/**
* @return {?}
*/
get selected() {
return this.date && this.selectedValue
&& (this.selectedValue.start && this.dateService.isSameDay(this.date, this.selectedValue.start)) || this.end;
}
/**
* @return {?}
*/
get empty() {
return !this.date;
}
/**
* @return {?}
*/
get disabled() {
return this.smallerThanMin() || this.greaterThanMax() || this.dontFitFilter();
}
/**
* @return {?}
*/
get day() {
return this.date && this.dateService.getDate(this.date);
}
/**
* @return {?}
*/
onClick() {
if (this.disabled || this.empty) {
return;
}
this.select.emit(this.date);
}
/**
* @private
* @return {?}
*/
smallerThanMin() {
return this.date && this.min && this.dateService.compareDates(this.date, this.min) < 0;
}
/**
* @private
* @return {?}
*/
greaterThanMax() {
return this.date && this.max && this.dateService.compareDates(this.date, this.max) > 0;
}
/**
* @private
* @return {?}
*/
dontFitFilter() {
return this.date && this.filter && !this.filter(this.date);
}
}
NbCalendarRangeDayCellComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-calendar-range-day-cell',
template: `
<div
class="day-cell"
[class.today]="today"
[class.selected]="selected"
[class.bounding-month]="boundingMonth"
[class.start]="start"
[class.end]="end"
[class.in-range]="inRange"
[class.disabled]="disabled">
{{ day }}
</div>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
host: { '(click)': 'onClick()', 'class': 'range-cell' }
}] }
];
/** @nocollapse */
NbCalendarRangeDayCellComponent.ctorParameters = () => [
{ type: NbDateService }
];
NbCalendarRangeDayCellComponent.propDecorators = {
date: [{ type: Input }],
selectedValue: [{ type: Input }],
visibleDate: [{ type: Input }],
min: [{ type: Input }],
max: [{ type: Input }],
filter: [{ type: Input }],
select: [{ type: Output }],
inRange: [{ type: HostBinding, args: ['class.in-range',] }],
start: [{ type: HostBinding, args: ['class.start',] }],
end: [{ type: HostBinding, args: ['class.end',] }]
};
if (false) {
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.date;
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.selectedValue;
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.visibleDate;
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.min;
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.max;
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.filter;
/** @type {?} */
NbCalendarRangeDayCellComponent.prototype.select;
/**
* @type {?}
* @protected
*/
NbCalendarRangeDayCellComponent.prototype.dateService;
}
/**
* @template D
*/
export class NbCalendarRangeYearCellComponent {
/**
* @param {?} dateService
*/
constructor(dateService) {
this.dateService = dateService;
this.select = new EventEmitter(true);
}
/**
* @return {?}
*/
get selected() {
return this.selectedValue && this.dateService.isSameYear(this.date, this.selectedValue.start);
}
/**
* @return {?}
*/
get today() {
return this.date && this.dateService.isSameYear(this.date, this.dateService.today());
}
/**
* @return {?}
*/
get disabled() {
return this.smallerThanMin() || this.greaterThanMax();
}
/**
* @return {?}
*/
get year() {
return this.dateService.getYear(this.date);
}
/**
* @return {?}
*/
onClick() {
if (this.disabled) {
return;
}
this.select.emit(this.date);
}
/**
* @private
* @return {?}
*/
smallerThanMin() {
return this.date && this.min && this.dateService.compareDates(this.yearEnd(), this.min) < 0;
}
/**
* @private
* @return {?}
*/
greaterThanMax() {
return this.date && this.max && this.dateService.compareDates(this.yearStart(), this.max) > 0;
}
/**
* @private
* @return {?}
*/
yearStart() {
return this.dateService.getYearStart(this.date);
}
/**
* @private
* @return {?}
*/
yearEnd() {
return this.dateService.getYearEnd(this.date);
}
}
NbCalendarRangeYearCellComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-calendar-range-year-cell',
template: `{{ year }}`,
changeDetection: ChangeDetectionStrategy.OnPush,
host: { 'class': 'year-cell' }
}] }
];
/** @nocollapse */
NbCalendarRangeYearCellComponent.ctorParameters = () => [
{ type: NbDateService }
];
NbCalendarRangeYearCellComponent.propDecorators = {
date: [{ type: Input }],
min: [{ type: Input }],
max: [{ type: Input }],
selectedValue: [{ type: Input }],
select: [{ type: Output }],
selected: [{ type: HostBinding, args: ['class.selected',] }],
today: [{ type: HostBinding, args: ['class.today',] }],
disabled: [{ type: HostBinding, args: ['class.disabled',] }],
onClick: [{ type: HostListener, args: ['click',] }]
};
if (false) {
/** @type {?} */
NbCalendarRangeYearCellComponent.prototype.date;
/** @type {?} */
NbCalendarRangeYearCellComponent.prototype.min;
/** @type {?} */
NbCalendarRangeYearCellComponent.prototype.max;
/** @type {?} */
NbCalendarRangeYearCellComponent.prototype.selectedValue;
/** @type {?} */
NbCalendarRangeYearCellComponent.prototype.select;
/**
* @type {?}
* @protected
*/
NbCalendarRangeYearCellComponent.prototype.dateService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItcmFuZ2UtY2VsbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly90aGVtZS1saWIvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci1yYW5nZS1jZWxscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQWtCLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBc0JoRSxNQUFNLE9BQU8sK0JBQStCOzs7O0lBZTFDLFlBQXNCLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUZ6QyxXQUFNLEdBQW9CLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRzNELENBQUM7Ozs7SUFFRCxJQUFtQyxPQUFPO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsYUFBYTtlQUNqQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7ZUFDckcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekcsQ0FBQzs7OztJQUVELElBQWdDLEtBQUs7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHO2VBQzNE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YTs7O21CQTZHbkMsS0FBSztrQkFFTCxLQUFLO2tCQUVMLEtBQUs7NEJBRUwsS0FBSztxQkFFTCxNQUFNO3VCQUtOLFdBQVcsU0FBQyxnQkFBZ0I7b0JBSTVCLFdBQVcsU0FBQyxhQUFhO3VCQUl6QixXQUFXLFNBQUMsZ0JBQWdCO3NCQVE1QixZQUFZLFNBQUMsT0FBTzs7OztJQTdCckIsZ0RBQWlCOztJQUVqQiwrQ0FBZ0I7O0lBRWhCLCtDQUFnQjs7SUFFaEIseURBQTJDOztJQUUzQyxrREFBMkQ7Ozs7O0lBRS9DLHVEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0QmluZGluZyxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgTmJDYWxlbmRhckNlbGwsIE5iRGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jYWxlbmRhci1raXQnO1xyXG5pbXBvcnQgeyBOYkNhbGVuZGFyUmFuZ2UgfSBmcm9tICcuL2NhbGVuZGFyLXJhbmdlLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduYi1jYWxlbmRhci1yYW5nZS1kYXktY2VsbCcsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJkYXktY2VsbFwiXHJcbiAgICAgIFtjbGFzcy50b2RheV09XCJ0b2RheVwiXHJcbiAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJzZWxlY3RlZFwiXHJcbiAgICAgIFtjbGFzcy5ib3VuZGluZy1tb250aF09XCJib3VuZGluZ01vbnRoXCJcclxuICAgICAgW2NsYXNzLnN0YXJ0XT1cInN0YXJ0XCJcclxuICAgICAgW2NsYXNzLmVuZF09XCJlbmRcIlxyXG4gICAgICBbY2xhc3MuaW4tcmFuZ2VdPVwiaW5SYW5nZVwiXHJcbiAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICB7eyBkYXkgfX1cclxuICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgaG9zdDogeyAnKGNsaWNrKSc6ICdvbkNsaWNrKCknLCAnY2xhc3MnOiAncmFuZ2UtY2VsbCcgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5iQ2FsZW5kYXJSYW5nZURheUNlbGxDb21wb25lbnQ8RD4gaW1wbGVtZW50cyBOYkNhbGVuZGFyQ2VsbDxELCBOYkNhbGVuZGFyUmFuZ2U8RD4+IHtcclxuICBASW5wdXQoKSBkYXRlOiBEO1xyXG5cclxuICBASW5wdXQoKSBzZWxlY3RlZFZhbHVlOiBOYkNhbGVuZGFyUmFuZ2U8RD47XHJcblxyXG4gIEBJbnB1dCgpIHZpc2libGVEYXRlOiBEO1xyXG5cclxuICBASW5wdXQoKSBtaW46IEQ7XHJcblxyXG4gIEBJbnB1dCgpIG1heDogRDtcclxuXHJcbiAgQElucHV0KCkgZmlsdGVyOiAoRCkgPT4gYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRhdGVTZXJ2aWNlOiBOYkRhdGVTZXJ2aWNlPEQ+KSB7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmluLXJhbmdlJykgZ2V0IGluUmFuZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZVxyXG4gICAgICAmJiAodGhpcy5zZWxlY3RlZFZhbHVlLnN0YXJ0ICYmIHRoaXMuZGF0ZVNlcnZpY2UuY29tcGFyZURhdGVzKHRoaXMuZGF0ZSwgdGhpcy5zZWxlY3RlZFZhbHVlLnN0YXJ0KSA+PSAwKVxyXG4gICAgICAmJiAodGhpcy5zZWxlY3RlZFZhbHVlLmVuZCAmJiB0aGlzLmRhdGVTZXJ2aWNlLmNvbXBhcmVEYXRlcyh0aGlzLmRhdGUsIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbmQpIDw9IDApO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5zdGFydCcpIGdldCBzdGFydCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGUgJiYgdGhpcy5zZWxlY3RlZFZhbHVlICYmIHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbmRcclxuICAgICAgJiYgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5zdGFydCAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURheSh0aGlzLmRhdGUsIHRoaXMuc2VsZWN0ZWRWYWx1ZS5zdGFydCkpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5lbmQnKSBnZXQgZW5kKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWUgJiZcclxuICAgICAgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5lbmQgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVEYXkodGhpcy5kYXRlLCB0aGlzLnNlbGVjdGVkVmFsdWUuZW5kKSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdG9kYXkoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlICYmIHRoaXMuZGF0ZVNlcnZpY2UuaXNTYW1lRGF5KHRoaXMuZGF0ZSwgdGhpcy5kYXRlU2VydmljZS50b2RheSgpKTtcclxuICB9XHJcblxyXG4gIGdldCBib3VuZGluZ01vbnRoKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZU1vbnRoU2FmZSh0aGlzLmRhdGUsIHRoaXMudmlzaWJsZURhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZSAmJiB0aGlzLnNlbGVjdGVkVmFsdWVcclxuICAgICAgJiYgKHRoaXMuc2VsZWN0ZWRWYWx1ZS5zdGFydCAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZURheSh0aGlzLmRhdGUsIHRoaXMuc2VsZWN0ZWRWYWx1ZS5zdGFydCkpIHx8IHRoaXMuZW5kO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmRhdGU7XHJcbiAgfVxyXG5cclxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFsbGVyVGhhbk1pbigpIHx8IHRoaXMuZ3JlYXRlclRoYW5NYXgoKSB8fCB0aGlzLmRvbnRGaXRGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXkoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGUgJiYgdGhpcy5kYXRlU2VydmljZS5nZXREYXRlKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5lbXB0eSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZWxlY3QuZW1pdCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzbWFsbGVyVGhhbk1pbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGUgJiYgdGhpcy5taW4gJiYgdGhpcy5kYXRlU2VydmljZS5jb21wYXJlRGF0ZXModGhpcy5kYXRlLCB0aGlzLm1pbikgPCAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBncmVhdGVyVGhhbk1heCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGUgJiYgdGhpcy5tYXggJiYgdGhpcy5kYXRlU2VydmljZS5jb21wYXJlRGF0ZXModGhpcy5kYXRlLCB0aGlzLm1heCkgPiAwO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkb250Rml0RmlsdGVyKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZSAmJiB0aGlzLmZpbHRlciAmJiAhdGhpcy5maWx0ZXIodGhpcy5kYXRlKTtcclxuICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmItY2FsZW5kYXItcmFuZ2UteWVhci1jZWxsJyxcclxuICB0ZW1wbGF0ZTogYHt7IHllYXIgfX1gLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGhvc3Q6IHsgJ2NsYXNzJzogJ3llYXItY2VsbCcgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5iQ2FsZW5kYXJSYW5nZVllYXJDZWxsQ29tcG9uZW50PEQ+IGltcGxlbWVudHMgTmJDYWxlbmRhckNlbGw8RCwgTmJDYWxlbmRhclJhbmdlPEQ+PiB7XHJcbiAgQElucHV0KCkgZGF0ZTogRDtcclxuXHJcbiAgQElucHV0KCkgbWluOiBEO1xyXG5cclxuICBASW5wdXQoKSBtYXg6IEQ7XHJcblxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkVmFsdWU6IE5iQ2FsZW5kYXJSYW5nZTxEPjtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdDogRXZlbnRFbWl0dGVyPEQ+ID0gbmV3IEV2ZW50RW1pdHRlcih0cnVlKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIGRhdGVTZXJ2aWNlOiBOYkRhdGVTZXJ2aWNlPEQ+KSB7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJykgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRWYWx1ZSAmJiB0aGlzLmRhdGVTZXJ2aWNlLmlzU2FtZVllYXIodGhpcy5kYXRlLCB0aGlzLnNlbGVjdGVkVmFsdWUuc3RhcnQpO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50b2RheScpIGdldCB0b2RheSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGUgJiYgdGhpcy5kYXRlU2VydmljZS5pc1NhbWVZZWFyKHRoaXMuZGF0ZSwgdGhpcy5kYXRlU2VydmljZS50b2RheSgpKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGlzYWJsZWQnKSBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zbWFsbGVyVGhhbk1pbigpIHx8IHRoaXMuZ3JlYXRlclRoYW5NYXgoKTtcclxuICB9XHJcblxyXG4gIGdldCB5ZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlU2VydmljZS5nZXRZZWFyKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXHJcbiAgb25DbGljaygpIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlbGVjdC5lbWl0KHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNtYWxsZXJUaGFuTWluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZSAmJiB0aGlzLm1pbiAmJiB0aGlzLmRhdGVTZXJ2aWNlLmNvbXBhcmVEYXRlcyh0aGlzLnllYXJFbmQoKSwgdGhpcy5taW4pIDwgMDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ3JlYXRlclRoYW5NYXgoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRlICYmIHRoaXMubWF4ICYmIHRoaXMuZGF0ZVNlcnZpY2UuY29tcGFyZURhdGVzKHRoaXMueWVhclN0YXJ0KCksIHRoaXMubWF4KSA+IDA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHllYXJTdGFydCgpOiBEIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGVTZXJ2aWNlLmdldFllYXJTdGFydCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB5ZWFyRW5kKCk6IEQge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVNlcnZpY2UuZ2V0WWVhckVuZCh0aGlzLmRhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=